엄범


딥러닝, 심층 신경망

딥러닝은 사실상 층을 깊게 쌓은 심층 신경망(DNN)을 가리키는 말이다.

여태까지는 오버피팅, 높은 시간 복잡도 때문에 층을 깊게 쌓는게 불가능했었지만

오버피팅은 Dropout으로, 높은 시간 복잡도는 GPU의 병렬처리를 이용해 해결하여 층을 깊게 쌓는 것이 가능해져 주목받게 되었다.


여러 머신러닝 알고리즘 중에 신경망이, 그 중에 층을 깊게 쌓은 심층 CNN이 이미지 인식이나 자연어 처리 등에서 압도적인 성능을 보인다. 


심층 신경망의 이점

1. 신경망의 매개변수 수가 줄어든다.

층을 깊게 했을 경우 더 적은 매개변수로 같거나 높은 수준의 표현력을 가질 수 있다.


가령 입력 데이터의 일부인 5x5 영역이 Conv 연산에 참여하려면, 층이 1개인 신경망에서 Conv layer의 필터의 크기는 5x5여야 한다.

그러나 층이 2개일 경우 필터의 크기가 3x3인 Conv layer를 두 번 거치면 결과적으로 입력 데이터의 5x5 영역이 모두 연산에 참여하게 된다.

1-layer일 경우 5x5 = 25개의 매개변수가 필요하고,

2-layer일 경우 3x3+3x3 = 18개의 매개변수가 필요하다.


이처럼 층을 깊게 해 작은 필터를 여러번 거치도록 하는 경우 매개변수의 수를 줄도 넓은 수용 영역(receptive field)를 가지도록 할 수 있다는게 장점이다. 수용 영역은 출력 뉴런에 영향을 주는 공간 영역을 말한다.

또한 Conv 계층 사이의 활성화 함수 계층도 통과하게 되므로 데이터가 비선형적 힘을 받아 더 복잡한 것도 표현할 수 있게된다.


2. 저수준의 단순한 특성에서 복잡한 특성으로 나아가 전체 사물을 인식하기 때문에 학습이 더 효율적이다.

복잡한 문제를 단순한 부분부터 차례차례 해결해 나가는 것이라고 생각하면 된다.

CNN의 각 합성곱 계층에서 추출하는 정보는 이런식이다.

1번째 Conv layer에서는 Edge와 Blob을 잡아내고,

3번째 Conv layer에서는 texture를,

5번째 Conv layer에서는 Object Parts를, 

8번째 FC layer에서는 Object Classes를 잡아낸다.


이런식으로 학습해야 할 문제를 저수준에서 고수준으로 잡아내 결과적으로 복잡하고 추상적인 데이터를 이해하게 된다.


만약 층이 깊지 않은 신경망으로 같은 작업을 하려면, Object Classes를 한번에 잡아내야 하는데 이는 대상 이미지의 특징이나 의미(feature and semantic)를 한번에 이해해야 한다는 것이다. 이렇게 되면 다양한 데이터에 대응이 어려워진다.

가령 개 이미지가 주어졌다고 가정하면 견종에 따라, 어떤 각도에서 촬영했느냐에 따라 서로 다른 이미지로 보일 수 있기 때문에 학습하는데 데이터도 많이 필요하고 오래걸린다.