관리 메뉴

TEAM EDA

Chapter 01 도구와 기술 본문

책 내용 정리/딥러닝 쿡북

Chapter 01 도구와 기술

김현우 2019. 2. 23. 10:15

Note : 이 포스터는 (주)느린생각의 지원을 받아 딥러닝 쿡북이라는 교재로 스터디를 하고 작성하는 포스터입니다.  동일한 교재로 공부하는 사람들에게 도움이 되었으면 좋겠습니다. 포스터 자체는 처음하는 사람들을 위한게 아니라 사전지식을 알고 있다는 전제하에서 코드구현과 하면서 생긴 의문점 등을 위주로 정리하도록 하겠습니다. 


요약 : Chapter 01의 대략적인 내용은 신경망을 학습하면서 배우게 될 용어와 데이터를 구하는 사이트들 기본적인 테크닉들에 대해서 설명하고 있습니다. 하지만 중급자들을 위한 책답게 자세한 설명은 나와 있지 않고 간단한 용어정리 위주로 되어 있습니다. 개인적으로 이 부분은 뻈어도 크게 무방하지 않았나 싶은 마음은 있습니다. 그래도 책에 나왔으니 가볍게 정리하고 넘어가도록 하겠습니다. 


1.1 신경망의 종류


네트워크 : 다양한 레이어가 서로 어떻게 연결되어 있는지를 보여주는 설계

모델 : 네트워크의 설계와 더불어 런타임에 수행하게 될 내용을 결정하는 변수들까지 포함. 


1.1.1 완전 연결 네트워크



tanh에 대한 이미지 검색결과


tanh의 문제점은 0으로부터 멀리 떨어진 지점에서는 함수가 매우 수평적이라는 점입니다. 이는 기울기를 작게 만들고 네트워크가 행동을 바꾸기까지 많은 시간이 필요로 하게 되어집니다. (Gradient Vanishing)


relu에 대한 이미지 검색결과


relu는 이러한 문제점을 해결하기 위해 나온 함수로 위의 문제도 해결하고 모델도 간단해서 아래의 나올 sigmoid보다 학습속도도 빠르다는 장점이 있습니다. 하지만 음수의 값을 모두 0으로 가지기 때문에 한번 0으로 빠지면 다시 학습되지 않는다는 단점이 있습니다. 


sigmoid는 많이 사용되는 활성화 함수로 0과 1사이의 출력값을 갖기 때문에 일종의 확률로 많이 취급됩니다. 


1.1.2 컨볼루션 네트워크 

딥러닝 연구의 초기에는 매우 다양한 종류의 문제에 완전 연결네트워크를 사용하려 하였지만 입력이 이미지인 경우, 데이터가 너무 크기때매 결과가 좋지 않았습니다. 이를 해결하려고 나온 방법이 컨볼루션 뉴럴 네트워크(CNN)입니다. 기존의 방법보다 적은 파라미터를 사용하면서 뛰어난 수준의 이미지 분류기를 학습할 수 있게 합니다. 


CNN의 근본적인 연산은 컨볼루션입니다. 자세한 내용은 아래의 링크에 https://eda-ai-lab.tistory.com/2?category=684396 에 정리해놨으니 다음의 포스트를 보고 여기선 가볍게 정리하도록 하겠습니다. 


CNN은 위 사진 그 자체로 생각하셔도 무방합니다. 1. Convolutions이라는 일종의 filter가 이미지 전체를 돌아다니면서 feature maps를 만들어 내고 2. Overfitting을 방지하기 위해, 레이어가 전체 이미지를 인식하도록 Subsampling 작업을 거칩니다. 3. 그 이후 Convolutions, Subsampling작업을 반복하고 4. 마지막으로 Fully Connection 과정을 거쳐서 Output을 출력합니다. 


1.1.3 리커런트 네트워크(RNN)

RNN은 문서나 음성 데이터, 시계열 데이터처럼 일정한 순서를 가진 입력의 경우에 흔히 사용됩니다. 마찬가지로 RNN이후에 이어지는 LSTM도 순서를 가진 입력에 주로 활용되어지고 기본적인 컨셉은 과거의 정보를 기억하여 현재의 학습 및 결과를 결정하는데 활용하는 것 입니다. 


(이미지 출처 : https://wikidocs.net/22886 ) 


1.1.4 감소하는 그레디언트, 그리고 LSTM

단순한 RNN는 긴 입력 시퀀스에 대해서 매우 좋지 않은 성능을 보입니다. 이는 RNN이 Vanishing gradient를 경험하기 쉬운 구조로 되어 있기 때문입니다. 이러한 상황을 극복하기 위해, 모델을 좀 복잡하게 구성해서 이전의 학습이 계속해서 기억될 수 있도록 합니다. 


lstm 모델에 대한 이미지 검색결과


(이미지 출처 : https://t2.daumcdn.net/thumb/R720x0/?fname=http://t1.daumcdn.net/brunch/service/user/IgT/image/I0UJ8f2U5ePsX3LU-kJS--yIarU.png)


1.1.5 적대 네트워크와 Autoencoder 

적대 네트워크(adversarial network)와 Autoencoder는 새로운 구조적 요소를 소개하지는 않는다. 대신 문제에 가장 적합한 구조를 사용한다. 이 부분에 대한 개념은 저도 처음 공부해보는 내용이여서 13,14장의 실습하기 전 부분에 다시 내용 정리하고 시작하도록 하겠습니다.