본문 바로가기

【2】CNN_합성곱 신경망/Convolutional Neural Networks의 이해

곱셈과 덧셈만 알면 정말 쉬운 ‘합성곱'

 

합성곱 연산은 CNN의 핵심원리라고 할 만큼 중요하다. 그런데, 합성곱은 곱셈과 덧셈만 이용하면 되는 매우 단순한 작업이다. 그림과 함께 보면 합성곱 연산을 쉽게 이해 할 수 있을 것이다. 아래의 그림을 보자.

 

 

 

 

먼저 합성곱 연산을 위해서는 재료가 되는 입력 데이터와 필터가 필요하다. 사이즈는 (높이, 너비)로 표현하며 필터는 주로 (3,3) 또는 (5,5) 와 같은 정방행렬을 사용한다. 미리 언급했듯이 CNN의 학습 대상은 필터의 값(weight)이므로 적절한 초기 값을 설정할 필요가 있다. 이때 우리가 1장에서 다루었던 초기화 방법들이 CNN의 필터 값을 초기화 할때에도 사용이 된다. 

 

 

 

그럼 그림과 같은 예시가 주어졌을때 어떤 계산 방식으로 피처맵이 구해졌는지 아래의 그림을 보며 살펴보자.

 

 

 

그림에서 보다시피 합성곱 연산의 계산 순서는 왼쪽 위부터 시작한다. 필터의 크기만큼 입력데이터의 범위를 선택하고 같은 위치에 있는 원소끼리 곱(성분 곱, element-wise product)한 후 그 값들을 모두 합(sum)한다. 이렇게 얻은 값을 해당되는 위치에 정렬하면 피처맵이 도출된다. 

 

 

CNN에서 학습시키는 대상은 필터라고 했었다. 여기서 필터의 값은 가중치(weight)라고 생각하면 되는데 우리가 기존에 다룬 편향(bias) 또한 학습에 포함이 된다. CNN의 편향은 (1,1) 사이즈의 단일 값이며 합성곱 결과의 모든 원소에 더해진다. 그러나 앞으로 진행되는 설명에서는 이해를 돕고자 편향은 생략하도록 하겠다.

 

엄밀히 말하면 위 그림은 입력으로 채널이 하나인 흑백 사진의 피처맵 도출 과정이다. 이 과정을 세개의 채널(RGB)에 적용한 컬러 이미지의 경우 (높이, 너비, 채널)의 크기를 가지며 피처맵이 도출되는 과정은 아래의 그림과 같다.

 

 

합성곱 연산을 세개의 채널에 각각 적용한 뒤에 얻은 결과 값을 같은 위치의 원소끼리 더하기만 하면(element-wise sum) 3차원의 컬러 이미지에 대한 피처맵을 얻을 수 있다. 이 과정을 입체적으로 보면 다음과 같다.

 

 

위 그림을 보면 원본 이미지에 필터를 한번만 적용해도 원래의 이미지 보다 절반이나 작아진 것을 볼 수 있다. 앞에서 합성곱 연산은  원본 이미지의 특징을 찾기 위해 필터를 씌우는 과정이라고 했다. 그러나 피처맵의 계속 작아져 (1,1) 사이즈가 된다면 더이상 합성곱 연산을 적용하지 못하게 된다. 이런 출력 크기 문제를 보완하기 위해 등장한 기법이 바로 패딩(padding)이다. 이제 패딩의 개념과 종류들을 다뤄볼 차례이다.

 

 

 

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 ondslee0808@gmail.com