관리 메뉴

코딩하는 락커

[Week3] 왜 합성곱을 사용할까요? 본문

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

[Week3] 왜 합성곱을 사용할까요?

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

https://youtu.be/ay3zYUeuyhU

 

뭔가 순서가 바뀌었다고 생각할 수도 있지만 이제 우리는 왜 신경망에서 합성곱을 사용하는 것이 유용한지에 대해 알아보자.

 

Fully Connected Layer 대신 합성곱 층을 사용할 때 두 가지 이점이 있다. 변수 공유와 희소 연결이다.

 

예를 들어 일반적인 신경망에서 32 x 32 x 3 이미지를 5 x 5 x 6 사이즈 필터로 28 x 28 x 6의 출력 이미지로 합성곱 연산을 했을 경우 32 x 32 x 3 = 3072의 유닛과 28 x 28 x 6 = 4704의 유닛을 연결하여 3072 x 4704 + 4704 = ...약 1400만개의 변수가 필요하다.

 

하지만 합성곱 신경망에서는 5 x 5의 필터이므로 25개의 변수를 가지고 여기에 Bias를 더하면 26개의 변수를 갖게 되고,  여기에 6개의 필터가 있으므로 필요한 변수는 5 x 5 x 3 x 6 + 6 = 456정도로 작은 수준이다. 

 


합성곱 신경망이 이렇게 적은 변수를 가지는데에는 또 두 가지 이유가 있다.

 

첫 번째는 변수 공유이다. 세로 윤곽선 검출기 같은 속성 검출기 관찰을 통해 발견되었다. 동일한 필터를 갖고 입력 이미지의 여러 곳에서 동일하게 사용할 수 있는 것과 같다.

 

두 번째는 희소 연결이다. 출력값이 이미지의 일부에만 영향을 받고 나머지 픽셀은 영향을 받지 않는다는 의미이다.

 

위 이미지 오른쪽 4 x 4 결과 이미지의 초록색 부분은 위 이미지 왼쪽 입력 이미지의 초록색 부분에서는 영향을 받는다는 것이다. 이 때문에 합성곱 신경망은 과적합 또한 방지할 수 있다.

 

합성곱 신경망은 이동 불변성을 알아내는 데도 효과적이라고 한다.

 


이제 하나의 신경망을 훈련시켜 보자. 고양이 이미지를 학습하는 신경망이다.

 

x는 이미지이고 y는 이진 레이블, 혹은 k개의 클래스 중 하나이고 합성곱 신경망 구조를 사용하여 이미지->합성곱->풀링층->완전 연결층->소프트맥스->소프트맥스의 출력값인 예측값 y의 구조를 따른다.

 

완전 연결층과 소프트맥스 함수는 w와 b를 갖고 변수를 설정하여 비용함수를 찾을 수 있다.

 

이 때 비용함수는 신경망의 훈련 세트에 대한 예측의 손실의 합을 m으로 나눈 값이다.

 

이 신경망을 훈련시키기 위해 경사 하강법, 모멘텀 경사 하강법, RMSprop등의 알고리증을 사용하여 비용함수 J를 줄이는 변수를 최적화 할 수 있다. 끝!

Comments