머신러닝, 딥러닝 ML, DL/이론

[Deep Learning] 10. CNN, 풀링 계층 (Pooling Layer)

킹남지 2021. 8. 12. 18:30
반응형

이 전에 합성곱 계층(Convolution Layer)에 대해 알아봤습니다.

 

https://kingnamji.tistory.com/24

 

[Deep Learning] 9. CNN, 합성곱 계층, 패딩, 스트라이드

앞 포스팅에서 CNN에 합성곱 계층(Convolution Layer)과 풀링 계층(Pooling Layer)이 사용되는 것을 확인했습니다. 이번에는 합성곱 계층의 연산과 패딩(Padding), 스트라이드(Stride)에 대해 알아보겠습니다.

kingnamji.tistory.com

 

풀링

풀링 계층(Pooling Layer)에서는 풀링 연산이 이뤄집니다.

합성곱 계층의 출력 데이터를 입력으로 받아서 출력 데이터의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용됩니다.

 

풀링 연산은 쉽게, 가로, 세로 방향의 공간을 줄이는 연산입니다.

그냥 줄이는 것이 아니라, 정사각 행렬의 특정 영역 안의 값의 최댓값을 뽑거나 특정 영역의 평균을 구하는 등의 연산을 진행합니다.

 

연산 방식에 따라 최대 풀링(Max Pooling)평균 풀링(Average Pooning) 등으로 나눌 수 있습니다.

일반적으로 언급이 없다면, 최대 풀링으로 생각하면 됩니다.

 

최대 풀링의 예시를 보겠습니다.

최대 풀링의 예시

그림 같은 경우 2*2의 max pooling을 stride = 2로 처리하고 있습니다.

 

일반적으로, 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정합니다. ( 만약 윈도우 크기가 3*3 이면 스트라이드의 값은 3으로 )

같은 크기로 설정해 모든 원소가 한 번씩 처리 되도록 설정하는 것입니다.

 

풀링 계층의 특징

풀링 계층의 특징을 알아보겠습니다.

 

1. 학습해야할 매개변수가 없습니다.

위의 예시처럼 풀링 연산은 대상 영역에서 최댓값을 뽑거나, 평균을 구하는 등의 처리만 진행됩니다.

따라서 학습할 매개변수가 없습니다.

 

2. 채널 수가 변하지 않습니다. (채널마다 독립적으로 연산을 실시합니다.)

 

3. 입력의 변화에 영향을 적게 받습니다.

(상황마다 다르지만) 풀링 연산은 입력의 변화에 영향을 적게 받습니다.

예시를 보면 입력 데이터의 원소 값들이 오른쪽으로 1씩 이동해도 결과는 같음을 볼 수 있습니다.

 

 

풀링에 대해 정리해봤습니다.

읽어주셔서 감사합니다 ^^

 

CNN 관련 구현은 아래 제 깃허브 링크를 참고해주시기 바랍니다.

https://github.com/Kingnamji/BigAI/blob/main/%EB%B0%91%EC%8B%9C%EB%94%A51_re/07_CNN.ipynb

 

[참고자료]

[1] 밑바닥부터 시작하는 딥러닝1 (사이토 고키)

반응형