[CNN] Convolution 연산을 도대체 왜 사용하는건데 ?!

반응형

Convolution는 왜 Fully Connected Layer 보다 좋을까요?

이미지를 FC Layer에 넣는다고 생각해보면 모든 픽셀 단위를 너무 세세하게 보게됩니다. 

한 픽셀씩 너무 자세하게 보고 위치 정보를 무시하기 때문에 픽셀들의 위치를 서로 막 바꿔서 학습하는 것과 다르지 않습니다. ( 퍼즐을 섞는 것과 같습니다. 즉, 위치 정보를 고려하지 않습니다. 예를 들어 귀나 눈이 이미지의 오른쪽 구석에 있다던지...)

 

그렇다면 CNN의 동작 방식은 어떨까요? 

CNN은 주변(일부 영역)만 연결합니다. 신경망을 잘 끊어서 위치 정보를 잃지 않도록 하는 것이죠. 

Convolution은 이미지의 위치별 특징을 찾을 수 있습니다. 선택과 집중을 통해 이미지를 가까이 있는 것들만 연결합니다. 이렇게 하면 위치 정보를 잃지 않고 담당 노드라는 "의미"가 생기죠. 

 

또한 Weight(가중치)를 재사용합니다. 여기서 같은 weight set을 사용해서 이미지를 쭉 긁습니다. 이런 weight set을 커널 혹은 필터라고 부릅니다. 쭉 긁으면서 이미지를 스캔하기 때문에 눈이 바닥에 있어도 인식할 수 있습니다. 

여러 종류의 필터로 여러 종류의 특징을 추출할 수 있습니다. (필터의 개수)

그리고 CNN에서 가장 중요하다고 할 수 있는 각 필터가 어떤 특징을 추출할지를 AI가 학습합니다.

  

 

그래서 이 필터는 하나만 사용하는 것이 아니라 다양한 필터(가로 특징, 세로 특징 등) 결과를 위치 정보 유지한 채로 사용합니다. 

각각의 컨볼루션 결과를 깊이 축(=채널 축)으로 쌓습니다. (feature map이다.)
여기서 커널 속의 값(weight), bias 값은 학습 파라미터입니다. 
그리고 당연히 weight, bias는 인공 신경망의 학습 과정에서 backpropagation을  통해 개수나 값이 업데이트 됩니다. 

 

 

CNN에서 반드시 기억해야 하는 부분


컨볼루션을 왜 사용하는지 ? 
-> 아주 적은 수의 weight로 위치별 특징 추출 ! 
-> 이미지 입력에는 반드시 특정 패턴(or 특징)이 있고 (픽셀 값을 마구 섞으면 인식 불가)
-> 컨볼루션은 위치별 패턴(or 특징)을 찾는 연산이다. (신경망을 잘 끊어서 선택과 집중 가능)
-> CNN을 통과하면서 그 패턴들이 곱하고 합해진다. (low -> high level features)

여러번 conv layer를 통과하는 이유는 뭘까? 
-> 3x3은 너무 좁은 영역만 확인한다. 여러번 통과하면 receptive field가 넓어진다 
-> 3x3 두 번 vs  5x5 한 번 : 파라미터 수 , 비선형성, 집중도 측면에서 분석 

 

VGG net의 포인트

 

컨볼루션, 풀링 쭉 통과한 다음 마지막엔 MLP를 통과하는 이유는 뭘까 ?
-> 컨볼루션의 동작 방식을 보면 먼 것과 연결을 끊고 주변을 바라본다. 하지만 나중에는 각 영역별 특징을 싹 다 보고 결정하기 때문이다. (정제된 특징을 봄)
- ex1. 물 배경에 고양이처럼 생긴 동물? 고양이가 아닐 가능성이 크다.
- ex2. 테두리 쪽에 중요한 특징이 담긴 사진이면? 구석구석 봐야함.

7x7 각각이 가지는 receptive field를 보면 전체는 못 보고 일부만 보고 있을 것이다. 

max pooling 을 너무 많이 한다면? 공간적인 정보를 너무 잃을 것.
"해당 특징이 어디에 얼마나 있나"에서 '어디에'가 너무 뭉뚱그러짐.
( max pooling 하게되면 버리는 정보가 너무 많기 때문)

VGG net에서는 max pooling을 다섯번 사용하는 반면 월등히 성능이 좋은 InceptionNet, ResNet은 (1,1)이 되도록 GAP(Global Average Pooling) 해버린다.
- 7x7로 줄인 다음 conv 몇번 더 거침 -> 픽셀 하나가 거의 이미지 전체 정보를 담게 된다.
- 모델 자체가 훨씬 깊다. 
- 따라서 GAP 하더라도 굉장히 유의미한 특징들을 담을 수 있다. 그래서 GAP 이후 fc 한 층만 통과해도 충분하다 ! (MLP에 의존하지 않고 CNN의 효과를 최대로 볼 수 있다.)

결국 CNN은 connection을 어떻게 할지 고민한 것이다. (사전 정보를 신경망에 심는 방법 중 하나, 추후에 inductive bias라는 개념이 나옴)
- 처음부터 모든 픽셀 값을 다 들여다보려고한 것이 FC의 문제 
- 그렇다면 위치적으로 가까운 노드 먼저 조합하고 그 다음 layer에서는 조합된 정보를 조합하면 ? 
- 멀리 있는 정보는 정제해서 조합하게 됨
- 멀리 있는 것도 보긴 볼건데 정제해서 보자는 것.

반응형