[딥러닝] CNN - Convolution State
서론
CNN은 딥러닝의 문을 함께 연 중요한 모델이라고 생각한다. 나로서도 딥러닝에 대해 처음 배울 때 가장 먼저 접했던 모델이기도 하고, 동물의 시각에서 영감을 얻어 만든 모델인 만큼, 인공지능이 인간의 두뇌를 구현하는 것과 똑같다는 생각을 나에게 하게 만든 이유이다.
DMLP와 CNN의 비교
- DMLP : 완전연결 구조로 높은 복잡도를 가진다. 또한, 학습이 매우 느리고 과잉적합의 가능성이 있다.
- CNN : 컨볼루션 연산을 이용한 부분연결 구조로 복잡도를 크게 낮췄으며, 좋은 특징 추출이 가능하다.
-> 또한, 격자 구조를 갖는 영상, 음성등의 데이터에 적합하며, 수용장 ( receptive field) 는 인간의 시각과 유사하다.
가변 크기의 입력을 처리가 가능한 특징이 있다. CNN은 크게 convolution 층과 pooling 층으로 나누어진다.
Convolution 층
컨볼루션은 해당하는 요소끼리 곱하고, 결과를 모두 더하는 선형 연산이다. u는 커널, z는 입력, s 는 출력이라고 할때,
이는 각각 1차원 과 2차원의 입력의 경우이다.
컨볼루션 층은 padding 이라고 하는 가장자리에서 입력이 줄어드는 효과를 방지하는 덧대기를 실시한다. 연산은 바이어스라고 하는 상수항을 추가해서 계산한다.
또한 컨볼루션 층은 가중치 공유를 적용한다.
가중치 공유란, 모든 노드가 동일한 커널을 사용, 즉 가중치를 공유하므로 매개변수는 3개에 불과하다.
-> 이는 모델의 복잡도를 크게 낮출 수 있다.
컨볼루션 층은 다중특징 맵을 추출할 수 있는데, 하나의 커널만 사용한다면 너무 빈약한 특징이 추출됨으로 수십 ~ 수백개의 커널을 사용한다. 그림은 3개의 커널을 사용하여 3개의 특징 맵을 추출하는 그림이다.
특징 학습은 커널을 사람이 설계하지 않고, 직접 학습으로 알아내는 것이다.
예를 들어 2차원 영상이 7*7 커널을 64개 사용한다면, 학습은 (7*7+1)*64 = 3200개의 매개변수를 찾아내야 하는 것이다.
DMLP와 마찬가지로 오류 역전파로 커널을 학습한다.
Convolution 연산에 따른 CNN의 특성
- 이동에 동변이다. ( 신호가 이동하면 이동 정보가 그대로 특징 맵에 반영된다)-> 영상 인식에서 물체 이동이나 음성 인식에서 발음 지연에 효과적으로 대처할 수 있다.
- 병렬 분산 구조이다.-> 각 노드는 독립적으로 계산이 가능한 병렬 구조이다. 또한 노드는 깊은 층을 거치면서 전체에 영향을 미치므로 분산 구조이다.
- 큰 보폭에 의한 다운샘플링
-> 지금까지는 모든 화소에 커널을 적용하였다 == 보폭을 1로 설정한 셈이다.
아래 그림은 보폭을 2 로 설정한 상황이다. 일반적으로 보폭이 k 이라면, k 마다 하나씩 샘플링하여 커널을 적용한다.
-> 2차원 영상의 경우 특징 맵이 1/k^2 으로 작아진다.
이를 텐서 (tensor)에도 적용 가능하다.
3차원 이상의 구조에도 적용 가능한데, 아래 그림의 RGB 컬러 영상은 3*m*n 의 3차원 텐서이다. 이를 0 padding을 적용한 컨볼루션 연산을 그림으로 표현한다면 이렇다. 특징 맵에서 회색 노드의 계산 예시 또한 추가하였다.
이를 3차원 구조의 데이터에 적용해보자.
-> 채널이 k 개인 3차원 격자 구조의 그림이다. 위의 RGB 그림을 블록 형태로 다시 그린다면 다음과 같다.
4차원 텐서로 데이터를 표현할 수도 있다.
-> 예를 들어 컬러 동영상과 MRI 뇌영상의 예시를 보면
k*h*h*h 커널을 s*m*n 공간을 이동하면서 적용한다.