티스토리 뷰

AI/밑바닥부터 시작하는 딥러닝

폴링 계층

취뽀가자!! 2018. 12. 24. 18:40

풀링 계층

최대 풀링

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

위 그림은 스트라이드 2로 최대폴링하는 것입니다. 쵀대폴링은 최댓값을 구하는 연산을 말합니다. 즉, 2x2 최대 풀링은 그림과 같이 2x2 크기의 영역에서 가장 큰 원소를 하나 꺼냅니다. 참고로, 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통입니다.


풀링 계층의 특징

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

풀링 계층은 합성곱 계층과 달리 학습해야 할 매개변수가 없습니다. 풀링은 대상 영역에서 최댓값이나 평균을 취하는 명확한 처리이기 때문입니다.

채널 수가 변하지 않는다

풀링 연산은 입력 데이터의 채널 수 그대로 출력 데이터를 내보냅니다. 채널마다 독립적으로 계산하기 때문입니다.



입력의 변화에 영향을 적게 받는다(강건하다)

입력 데이터가 조금 변해도 풀링의 결과는 잘 변하지 않습니다. 입력 데이터의 차이를 풀링이 흡수해 사라지게 하기 때문입니다.



im2col로 데이터 전개

im2col은 입력 데이터를 필터링(가중치 계산)하기 좋게 전개(펼치는)하는 함수입니다. 3차원 입력 데이터에 im2col을 적용하면 2차원 행렬로 바뀝니다.(정확히는 배치 안의 데이터 수까지 포함한 4차원 데이터를 2차원으로 변환합니다.)

im2col은 필터링하기 좋게 입력 데이터를 전개합니다. 구체적으로는 입력 데이터에서 필터를 적용하는 영역(3차원 블록)을 한 줄로 늘어놓습니다. 이 전개를 필터를 적용하는 모든 영역에서 수행하는게 im2col입니다.


위 그림은 스트라이드를 크게 잡아 필터의 적용 영역이 겹치지 않도록 했지만, 실제로는 겹치는 경우가 대부분입니다. 필터 적용 영역이 겹치게 되면 im2col로 전개한 후의 원소 수가 원래 블록의 원소 수보다 많아집니다. 그래서 메모리를 많이 소비하는 단점이 있습니다. 하지만 컴퓨터는 큰 행렬로 묶어 계산하는데 탁월하기에 문제를 행렬 계산으로 만들면 선형 대수 라이브러리를 활용해 효율을 높일 수 있습니다.


im2col로 입력 데이터를 전개한 다음에는 합성곱 계층의 필터(가중치)를 1열로 전개하고, 두 행렬의 내적을 계산하면 됩니다. 


 

im2col방식으로 출력한 결과는 2차원 행렬입니다. CNN은 데이터를 4차원 배열로 저장하므로 2차원인 출력 데이터를 4차원으로 변형합니다. 


이상이 합성곱 계층의 구현 흐름입니다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함