Broccoli's House

#6-(2) 합성곱 신경망(CNN) : 합성곱 계층 본문

공부/딥러닝

#6-(2) 합성곱 신경망(CNN) : 합성곱 계층

김콜리 2018. 3. 18. 00:48

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




합성곱 신경망(CNN) : 합성곱 계층



  • 완전 연결 계층
 - 완전 연결 신경망이란, 인접하는 계층의 모든 뉴런과 결합되어 있는 신경망을 말한다. 입력 데이터와 가중치가 1대 1로 대응하는 것을 완전 연결(Fully-Connected)이라고 하며, 행렬의 내적(Affine)으로 표현된다. 이 완전 계층의 문제점은 바로 데이터의 형상이 무시된다는 것이다. 입력 데이터가 다차원의 형상일 때, 완전 연결 계층에 입력해주기 위해서는 이 다차원 데이터를 1차원으로 평탄화해준 후에 입력하여야만 한다.

 - 가장 흔한 다차원 데이터인 이미지를 생각해보면, 이미지 하나는 2차원의 픽셀 배열에 RGB의 채널이 합쳐져 3차원을 이루고 있다. 이 RGB의 각 채널은 서로 밀접하게 관련되어 있고, 픽셀 간의 거리에 따라 또한 관련되어 있는 등 3차원 속에서 의미를 갖는 패턴이 숨어 있다. 그러나 완전 연결 계층은 형상을 무시하고 모든 입력 데이터를 동일 차원으로 취급하기에 형상에 담긴 정보를 살릴 수 없다.



  • 합성곱 계층
 - 완전 연결 신경망과는 다르게, 합성곱 신경망(CNN) 계층은 형상을 유지한다. 즉, 이미지와 같은 3차원 데이터를 입력 받으면 다음 계층에도 3차원 데이터로 전달한다. 따라서 합성곱 신경망에서는 이미지처럼 형상을 가진 데이터를 제대로 이해할 수 있는 것이다.

 - 합성곱 신경망(CNN)에서 합성곱 계층(Convolutional Layer)의 입출력 데이터는 다차원이기에 이것을 특징 맵(Feature Map)이라고 한다. 입력 데이터를 입력 특징 맵(Input Feature Map), 출력 데이터를 출력 특징 맵(Output Feature Map)이라고 한다. 




  • 합성곱 연산


 - 합성곱 계층에서는 합성곱 연산을 수행한다. 이 연산은 이미지 처리에서 말하는 필터(마스크) 연산에 해당한다. 위의 그림과 같이 2차원의 입력 데이터가 들어오면, 필터(커널)의 윈도우를 일정 간격으로 이동해가며 입력 데이터에 적용한다. 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구하면 그 결과가 출력이 된다. 이 과정을 모든 장소에서 수행하면 합성곱 연산의 출력이 완성된다. 



 - 완전연결 신경망에는 가중치 매개변수와 편향이 존재한다. 합성곱 신경망에서는 이와 유사하게, 필터의 매개변수가 완전연결 신경망의 가중치(Weight)에 해당한다. 즉, 합성곱 신경망을 통해 학습이 거듭되면서 필터의 원소 값이 매번 갱신되는 것이다. 편향 또한 동일하게 존재하나 편향은 필터를 적용한 후의 데이터에 더해지고, 항상 하나만 존재한다.



  • 패딩
 - 패딩(Padding) : 합성곱 연산을 수행하기 전에 입력 데이터 주변은 특정 값(0, 1 등)으로 채우기도 하는데, 이를 패딩이라 하며 합성곱 연산에서 자주 이용되는 기법이다. 폭 1짜리 패딩이면 데이터 사방 1픽셀을 특정 값으로 채우는 것을 말한다.




 - 패딩을 적용하는 이유는 출력의 크기를 조절하기 위함이다. 패딩 없이 입력 데이터에 필터를 씌워 합성곱 연산을 수행하면 출력 데이터는 입력 데이터에 비해 무조건 작아지게 되어있다. 합성곱 연산을 반복하면 어느 시점에서는 출력 크기가 1이 되고, 더이상 합성곱 연산을 수행할 수 없게 된다. 이러한 사태를 방지하기 위해 패딩을 사용하는 것이다. 패딩을 사용하면 출력 데이터의 크기를 입력 데이터의 크기와 동일하게 설정할 수 있다. 즉, 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있는 것이다.




  • 스트라이드


 - 스트라이드(Stride) : 필터를 적용하는 위치의 간격을 스트라이드라 한다. 스트라이드가 커지면 필터의 윈도우가 적용되는 간격이 넓어져 출력 데이터의 크기가 줄어든다. 즉, 스트라이드는 출력 데이터의 크기를 키우는 패딩과는 다르게 출력 데이터의 크기를 줄일 수 있다. 

 - 필터의 각 원소 값은 학습을 통해 딥러닝 모델이 알아서 갱신해주는 값이지만, 필터의 크기나 패딩 및 스트라이드의 크기는 모델을 구성할 때 사람이 직접 지정해주어야 하는 초매개변수(hyper-parameter)이다. 이에 대한 완벽한 정답은 없으며, 이미지의 복잡도나 크기 등 다양한 변수에 따라 달라진다.



  • 3차원 데이터의 합성곱 연산


- 채널까지 고려한 3차원 데이터도 2차원의 데이터와 동일한 방식으로 작동된다. 다만 주의할 점은, 3차원의 합성곱 연산에서 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 것이다. 또한 필터의 크기는 임의로 설정할 수 있으나, 모든 채널의 필터가 같은 크기여야 한다. 


Comments