Day 24: 8-2, 8-3 CNN filter에 대한 추가 설명

2023. 3. 15. 23:47딥러닝 이론

 

이오늘 공부한 내용은 Ch.1-21, 정보 이론 기초입니다:

- Ch. 8-2: CNN은 어떻게 특징을 추출할까 (Filter의 역할에 대하여)

- Ch. 8-3: 3D 입력에 대한 Convolution (개-채-행-렬?)

 

저번 수업에는 CNN에 대한 소개를 하였고 convolution computation에 대해 간단한 설명을 했습니다. 이제 CNN을 왜 쓰는지는 알지만 아직 이해가 잘 안되서 조금 더 파고들어 가요!

 

1. Filter의 역할에 대하여

저번 시간에 필터들은 사실 한 층의 이미지(행렬)에 대한 weights라고 배웠죠? 이런 필터에 대한 직관을 가져봅시다.

CNN을 배우게 되면 세로필터 가로필터 대각선필터를 많이 보게 됩니다. 

 

-1 0 1
-1 0 1
-1 0 1

위의 필터는 세로필터라고 부릅니다. 3x3보다 큰 12x12 인풋 이미지가 있다고 가정해봐요. 필터는 필터랑 비슷한 패턴을 찾게 됩니다. 이렇게 세로필터 같은 경우는 왼쪽이 음수고 오른쪽이 양수니 흑에서 백으로 가는 edge로 볼 수 있겠습니다. 직관은 대충 이렇다고 볼 수 있습니다.

사실 edge filter는 직관적인 이해를 위해 집어 넣은 부분이고 이 weight들는 당연히 AI가 training하는 부분이니다. 그래서 AI가 알아서 찾아내니 우리가 직접 filter를 만들어낼 필요도 없다는 것입니다.

 

그래서 결론은:

- 필터는 필터와 같은 패턴을 찾는다

- 숫자가 높을수록 해당 패턴이 많은거로 볼 수 있다 입니다.

- filter안에 들어가는 값 또는 weight들은 자동으로 update을 한다 (패턴을 AI가 알아낸다!!)

 

그리고 대부분 경우에는 필터를 하나만 쓰지 않고 여러개 씁니다. 그래서 여러 패턴의 정보를 저장하기 위해선 stacking을 하여 RGB channel처럼 필터도 channel stacking을 합니다. 3 by 5 by 5는 3 채널 3*3 size의 행렬입니다. 여기서 stacking을 한걸 feature map이라 부릅니다.

 

수고하셨습니다~