관리 메뉴

코딩하는 락커

[Week3] 풀링 본문

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

[Week3] 풀링

락꿈사 2020. 2. 1. 09:39

https://youtu.be/8oOgPUO-TBY

풀링은 합성곱 연산을 할 때 표현 크기를 줄임으로써 계산속도를 높이고 특성을 더 잘 검출해내는 방법이다.

 

Max Pooling은 이미지의 구역을 뒤, 그 구역에서의 최대값을 출력값으로 지정하여 결과행렬을 도출해내는 것이다.

 

이것은 마치 2 x 2 사이즈에 stride=2 짜리 필터를 사용하는 것과 같다. 

 

그렇다면 Max Pooling은 왜 사용하냐? 

 

음...그것은 최대값이 원본 이미지의 어떤 특성을 나타낼 수 있기 때문이다. 마치 고양이의 눈처럼 말이다. 

 

Max Pooling을 사용하는 것은 대부분 구역의 최대값을 통해 구역별 이미지의 특성을 직관적으로 볼 수 있기 때문이라는 것과, 성능이 좋다는 데에 이유가 있다. 

 

Max Pooling의 또 한가지 특성은 f나 s가 고정되어 있어 경사하강법과 같은 방법으로 학습할 수 있는 변수가 아니라는 것 또한 들 수있다.

 


 

Max Pooling의 다른 예를 알아보자.

 

5 x 5 이미지에 f=3, s=1인 Max Pooling 필터를 적용한다고 하자. 이때 출력의 크기는 3 x 3 이다. 이전 포스팅에서 쭉 했던 합성곱 연산에서의 출력이미지 크기 공식을 적용할 수 있다.

 

그리고 연산을 하면 위 이미지 오른쪽과 같은 결과 이미지를 도출할 수 있다. 5 x 5 x 2의 이미지의 경우 결과 이미지가 3 x 3 x 2 라는 사실도 간단하게 알 수 있다. 계산 과정은 똑같이 각 채널에 개별적으로 적용하면 된다.

 


 

 

이제 Average Pooling에 대해 알아보자. Average Pooling은그냥 말 그대로 그 구역에서의 최대값이 아닌 평균값을 도출하는 것이다.

 

그러면 위 이미지의 오른쪽과 같은 결과가 나온다. 

 

요즘은 Average Pooling을 더 많이 사용한다고 한다.

 


Pooling을 할 때 일반적으로 하이퍼파라미터를 f=2, s=2로가장 흔하게 둔다고 한다. 높이와 너비를 절반 정도 줄어들게 해준다. f=3, s=2도 많이 사용한다고 한다.

 

그리고 Max Pooling에서는 패딩을 거의 사용하지 않는다고 한다.

 

또 아까도 말했듯 Pooling에서는 학습하는 변수가 없기 때문에 역전파를 적용하는 의미가 없다고 한다. 끝!

Comments