CS 231. CNN (part 2)

포도·2021년 9월 3일
0

CNN part 1에서는 neural network가 무엇인지 CNN이 어떻게 동작하는지에 대해서 알아봤다. 여기서는 CNN에 숨겨진 비밀과 CNN에 layer를 많이 쌓으면 발생하는 문제점에 대해서 알아볼 것이다. (김승일 모두연 소장님의 강의를 듣고 정리한 내용이다.)

1. CNN에 숨겨진 비밀

CNN기법을 사용할때 같은 크기의 filter를 반복적으로 써서 layer를 쌓는것을 볼 수 있다. 예를들어, 모델이 아래와 같이 다람쥐 이미지를 받았을때 다람쥐라는 것을 분류하기 위해서는 다람쥐의 작은 손, 손가락을 읽을수 있는 작은 filter 뿐만 아니라 얼굴 전체의 윤곽을 파악할 수 있는 큰 filter도 필요하다. 어떻게 해야 될까?

  1. 이미지의 사이즈를 점점 작게 만든다.
  2. filter의 크기를 점점 크게 만든다.

위의 두가지가 만족되면 우리는 귀여운 다람쥐 이미지를 다람쥐라고 분류할 수 있을것 같다.

그럼 저 두가지가 어떻게 CNN에서 실현될까?

첫번째, padding을 입히지 않으면 CNN(part1) 글에서 살펴봤듯이 layer를 거듭할수록 activation map의 크기는 작아진다. (map의 크기는 줄어들지만 각 map에는 이미지 전체가 반영되어있다.) filter이 크기는 같고 filter 가 적용되는 이미지의 크기는 줄어들었다.

두번째, activation map의 크기가 작아지면 같은 크기의 filter를 통과시켜도 더 넓은 원본 이미지의 정보를 얻을 수 있다. 예를 들어, 아래와 같이 3x3 filter, 2 layer가 있다가 가정해보자.

  • 첫번째 layer: 원본 이미지의 왼쪽 위에서부터 계산된다. 필터가 닿는 첫번째 부분은 원본이미지의 가로, 세로 1-3픽셀을 하나의 값으로 convolution해서 activation map에 기록한다. 필터가 오른쪽으로 옮겨가면서 2-4픽셀, 3-5픽셀을 커버하면서 하나의 activation map을 완성한다.

  • 두번째 layer: 첫번째 layer에서 나온 activation map의 왼쪽 위에서부터 계산된다. 필터가 닿는 첫번째 부분은 원본 이미지의 1-5픽셀을 커버한다.

  • 만약 세번째 layer가 있다고 하면 필터가 닿는 첫번째 부분은 원본 이미지의 1-7픽셀을 커버할 것이다. layer가 쌓이면서 filter 크기는 그대로지만 filter가 커버하는 원본 이미지의 크기는 점점 증가하므로, 필터가 커지는 효과를 볼 수 있다.

  • 여기서 ResNet의 원리도 살짝 엿볼수 있다. ResNet에서는 한개의 7x7필터를 쓰는 대신에 3x3필터의 layer를 3개 쌓아서 썼다. 이렇게 하면 세번째 layer에서는 한꺼번에 원본 이미지 7픽셀까지 읽어내기 때문에 7x7필터를 쓰는 효과를 볼 수 있고, 동시에 parameter의 수를 현저히 줄일수 있다. 이미지의 수가 몇만개, 컬러 이미지이면 아래의 차이는 확연해 진다.

파라미터의 수
3 layer, 3x3 filter 3*3*3 = 27
1 layer, 7x7 filter 7*7*1 = 49

나중에 CNN architecture글을 쓸 때 자세히 다뤄보겠다.

2. layer를 많이 쌓으면 나타나는 문제점

2.1 overfitting

아래의 그림에서 점선이 모델의 예측값이고 점이 실제값이다. 어떤 모델이 가장 예측을 잘 한걸까? 중간에 있는 모델이다. 맨 오른쪽에 있는 모델은 어떤가?

학습 데이터는 한치의 오차도 없이 잘 예측할지 모르지만, 우리가 모델을 만드는 이유는 새로운 데이터를 넣어서 정확한 예측값을 얻어내려고 하는것이다. 하지만 오른쪽 모델은 새로운 데이터를 넣었을때 예측 능력이 떨어질 것이다.

overfitting은 왜 발생할까??

  • 풀어야 하는 문제는 비교적 간단한 알고리즘으로 예측이 가능한데, 모델이 너무 복잡한 경우. 위의 오른쪽 그림과 같은 경우이다.
  • 주어진 데이터가 적어서 데이터 사이의 패턴을 읽어내기 어려울 경우도 적은 데이터에서 복잡한 모델을 생성할 수 있다. 예를 들어, 만개의 데이터를 살펴보면 선형회귀의 모델인데, 100개만 살펴보면 그 패턴이 보이지 않아서 오른쪽 사진과 같이 구불구불한 모양이 될 수 있을 것이다.

2.2 vanishing gradient

층을 너무 깊게 쌓으면 parameter들의 gradient학습이 잘 되지 않을 수 있다. 요새 deep learning은 예전보다는 layer를 깊게 쌓는데, vanishing gradient를 해결하기 위해서 identity mapping, auxiliary classification output등을 추가로 넣어주기도 한다. 나중에 CNN architecture를 다룰때 자세히 살펴보기로 한다.

profile
문과로 한평생 살다가 현재 펜실베니아 주립대 (University of Pennsylvania) 에서 Computer and Information Technology 공부하고 있습니다.

0개의 댓글