관리 메뉴

코딩하는 락커

[Week3] CNN 예시 본문

[2020] 📚 DSC 겨울방학 스터디

[Week3] CNN 예시

락꿈사 2020. 2. 1. 10:03

https://youtu.be/bXJx7y51cl0

 

지금까지 합성곱 신경망을 구성하는 대부분의 구성요소를 배웠으니 이제 예시를 한번 봐보자!

 


 

32 x 32 x 3(R,G,B) 이미지가 있고, 0부터 9까지의 숫자를 알아보는 신경망을 LeNet-5라는 클래식한 신경망과 유사하게 구성한다고 해보자.

 

첫 번째 층이 f=5, s=1에 p=0인 필터를 사용한다고 할 때, 출력은 28 x 28 x 6이다. (Conv1)

 

Max Pooling을 사용한 두 번째 층이 f=2, s=2, p=0인 필터를 사용할 때, 저번 포스팅에서 했던 내용처럼 높이와 너비의 값이 절반으로 줄어들게 되므로 출력은 14 x 14 x 6이 된다. (Pool1)

 

이 때 합성곱 신경망 분야의 관습에 따라 Covn1층과 Pool1층을 한 레이어로 부를 수도 있고, 아니면 두 층을 개별된 레이어로 볼 수도 있다. 하지만 일반적으로 신경망 층의 개수를 말할 때 가중치와 변수를 갖는 층을 말한다. (Pooling층은 가중치와 변수가 없기 때문에 전자를 말한다). 여기서는 전자를 따라 이것을 Layer1이라고 하겠다.

 

세 번째로 Layer1에 f=5인 필터를 적용하여 10 x 10 x 16의 출력을 한다. (Conv2)

 

그 뒤로 f=2, s=2인 필터를 적용하여 5 x 5 x 16의 출력을 한다. (Pool2)

 

5 x 5 x 16 = 400이므로 Pool2를 펼쳐 400x1의 벡터로 만든 뒤 이 400개의 유닛으로 120개의 유닛을 가진 레이어를 만든다. 이것은 이 신경망의 첫 번째 완전연결층인 FC3가 된다. 400개의 유닛이 120개의 유닛과 완전히 연결되어 있기 때문이다.

 

이것은 마치 단일 신경망 층과 유사하며 w[3]이라는 가중치 행렬이 있는데 (120, 400) 크기를 가진다. 이 때 bias=120인데 120개의 출력이 있기 때문이다.

 

그 뒤로 84개의 유닛이 있는 FC4를 만들면 이제 softmax 유닛에 적용할 수 있는 84개의 열번호를 갖게 된다. 후하후하.

 

그리고 우리는 0~9까지의 손글씨를 알아볼것이기 때문에 10개의 출력을 가진 소프트맥스가 된다.

 

우리는 여기서 한 가지 특성을 볼 수 있는데 신경망이 깊어질수록 이미지의 크기는 점점 작아지고, 채널은 늘어닌다는 것이다.

 

그리고 Conv->Pool->Conv->Pool->FC->FC->FC->softmax의 구조를 갖는다는 것도 알 수 있다. 이것은 매우 일반적인 구조이다.

 


 

이 신경망은 위 이미지와 같은 값들을 갖고 있다.

 

유의할 점은 Pooling층에는 변수가 없고 합성곱층이 상대적으로 적은 변수를 갖고, 대부분의 변수는 완전 연결 층에 있다는 것이다.

 

그리고 Activation Size는 점점 감소한다는 것도 유의해야 한다..!

 

Comments