고려대학교 딥러닝(오승상교수님) - 21. CNN Convolution 2

govlKH·2023년 8월 18일
0

고려대학교 딥러닝

목록 보기
22/45

기존의 MLP방식은 여러 문제가 있었다.
1) dim이 너무 크기에 노드 수도 많아지기에 파라미터가 너무 많다.(locally connect를 해도 파라미터가 너무 많다) -> Conv layer로 filter를 사용하여 weight sharing으로 파라미터 수를 줄였다. 또한 이제는 input data 에 의존하는 것이 아니라 kernel size와 filter수에 의존하게 된다.

따라서 MLP에 비해 훨씬 효율적이다!

kernel의 사이즈는 어느정도로 설정할까?
kernel size가 클 수록 더 넓은 면적을 바라보게 되는데 이를 receptive field라고 한다.

3x3필터라면 9개의 픽셀이 하나로 종합하여 들어온다. 즉, 거치면 거칠 수록 더 넓은 주변부의 정보들까지 받게 된다.

그렇다면 3x3필터 3개와 7x7 conv layer 1개를 사용하는 것과 무엇이 다른가?
-> 여기서는 파라미터의 개수, activation ft으로 비선형함수의 사용량 등을 고려하여 결정해야 한다.

input이 높이x너비x채널수 HxWxF 라고 할 때,
F개 filter, stride=1, zero-padding사용 하는 feature map HxWxF를 사용해보겠다.

7x7 kernel 하나의 conv사용
필터 하나에 사용되는 weight의 개수 = 7x7xF
이것이 채널수 F개 있으므로 (7x7xF)xF = 49F^2
++ 훑을 때 모두 weigth sum하기에 weight 하나당 곱셈과 덧셈이 하나씩 추가된다.
따라서 #of multiple-adds는 (7x7xF)x(HxWxF) = 49HWFF (제로패딩이기에 HxW!!)

이번에는 3x3 kernel을 갖는 Conv layer 3개를 사용해보자
#of weights = (3x3xF)xFx3 = 27FF
#of multiple-adds = (3x3xF)x(HxWxF)x3 = 27HWFF

이 둘을 비교하면 두 번째 방법이 파라미터 숫자도 훨씬 적고 계산량 또한 적다!
이에 더하여 non linearity사용량도 앞은 1개 사용하고 뒤는 3개를 사용하게 된다!

따라서 보편적으로 작은 kernel size를 사용하는 것이다.

필터 안의 값들을 filter matrix라고 하는데 각기 다른 값들을 가지는 filter들이 있다면, 당연히 feature map또한 다르게 나온다. 이랬을 때, 과연 같은 이미지가 어떻게 바뀌는지 확인해보자

낙타 그림에 3x3 kernel size를 갖는 filter로 의해 출력되는 값들을 보자.
identity로 동일한 값을 나오게 할 수도 있고, 2~4번째 필터로는 값들이 거의 0으로 가기 때문에 그림이 거의 검정색으로 다르게 나온다. 나머지 아래 세 가지 필터는 weight sum을 진행하면 이 또한 이전과 비슷한 값들이 나오기에 input image와 비슷한 출력값을 보낸다. 이를 통해 더욱 shaply하게(경계선의 값을 더 벌려 명확한 구분을 하게 해준다(그래서 가운데 5라는 값이 있다)), 혹은 흐리게(경계에서 대부분 비슷한 값으로 바꾸기) 바꿀 수 있는 것이다!

이와 같이 filter의 weight 값들에 따라 이미지가 변경되기에 이 weight 값들을 좋은 feature를 만들기 위해 학습을 진행하며 업데이트 해주는 것이다!

추가적으로 필터의 개수가 많을 수록 더 많은 종류의 feature가 추출될 것이고, 학습이 끝나고 나면 test용 data에서도 여러가지 패턴들을 인식하기 좋을 것이다.

Conv layer에서 사용되는 하이퍼파마리터를 알아보자

Conv2D(filters=64, kernel_size=(3,3), strides=1, padding="기본은 valid, 제로패딩은 same", ...)

Conv layer도 당연히 activation ft (주로 Relu)를 사용한다.
모든 convolutional operation을 진행한 후에 nonlinearity로 Relu를 사용한다!
이 활성화 함수를 사용함으로 negative값들은 모두 0으로 바꿔주게 된다.

고려대학교 오승상 교수님 딥러닝 강의 : https://www.youtube.com/watch?v=6uBPtiet3Kk&list=PLvbUC2Zh5oJvByu9KL82bswYT2IKf0K1M&index=21

profile
수학과 대학원생. 한 걸음씩 꾸준히

0개의 댓글