본문 바로가기

【2】CNN_합성곱 신경망/Convolutional Neural Networks의 이해

선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩

패딩(padding)의 사용은 앞에서 언급했듯이 출력 크기를 보정하기 위해 사용하며 ‘충전재’라는 의미처럼 입력 데이터의 사방을 특정 값으로 채우는 것을 말한다. 일반적으로 특정 값은 그냥 0을 사용하기에 제로패딩(zero padding)이라고도 한다. 아래의 사진은 (4,4)인 입력데이터에 폭이 1 pixel인 패딩을 적용하여 (6,6) 크기가 된 그림이다.

 

 

 

 

밸리드 패딩 (valid padding)

우리가 지금까지 다루었던 즉 패딩을 추가 하지 않은 형태는 엄밀히 말하면 밸리드 패딩(valid padding)을 적용했다고 한다. 이렇게 밸리드 패딩을 적용하고 필터를 통과시키면 그 결과는 항상 입력 사이즈보다 작게 된다.

 

 

  

 

밸리드 패딩은 합성곱 연산시 입력데이터의 모든 원소가 같은 비율로 사용되지 않는 문제가 있다. 다음의 그림을 보자. 아래의 그림은 위 그림의 입력데이터에서 합성곱 연산에 적용되는 원소별 횟수를 표시한 것이다.

 

 

위 그림을 보면 양 끝 모서리에 위치한 원소의 연산 참여도가 가운데 위치한 원소에 비해 낮다는 것을 알 수 있다. 이는 가장자리의 정보가 다른 곳에 비해 과소평가 되었다는 것을 의미한다. 이 차이는 신경망이 깊어져 합성곱 연산이 반복된다면 더 커지게 될 것이다. 그렇다면 원본 데이터의 모든 원소가 같은 비율로 연산에 참여하게 하려면 어떻게 해야할까? 

 

원소별 연산 참여 횟수를 결정하는 것은 ‘패딩’과 ‘스트라이드’이다. 스트라이드는 잠시 뒤에 설명하고 먼저 패딩의 종류를 몇가지 소개 하겠다.

 

 

 

 

풀 패딩 (full padding)

 

먼저  밸리드 패딩은 실질적으로 입력데이터 주위를 0으로 채우지 않아 언급한 문제들이 발생하기에 잘 사용하지 않는다. 입력데이터의 모든 원소가 합성곱 연산에 같은 비율로 참여하도록 하는 패딩 방식을 풀 패딩(full padding)이라고 한다. 위에서 등장한 (4,4)의 입력데이터와 (3,3)의 필터가 주어진 경우 풀패딩을 적용한 입력 데이터의 모습은 아래와 같다.

 

 

풀패딩에서 패딩의 폭이 2 pixel로 도출된 과정을 설명해 보자면 입력데이터 (Hi,Wi) 와 필터 (F, F)가 있을때 풀 패딩의 폭 P는 F-1이 된다. 그러므로 풀패딩을 적용한 입력데이터의 크기는 (Hi+2*P, Wi+2*P)가 되는 것이다. 예시를 통해 실제 값을 계산해보자.

 

 

 

 

 

세임 패딩 (same padding)

 

다음으로 소개할 패딩은 세임 패딩(same padding)이다. 세임 패딩은 출력 크기를 입력 크기와 동일하게 유지한다. 입력데이터 (Hi,Wi) 와 (F, F) 사이즈의 필터가 있을때 세임 패딩의 폭 P는 (F-1)/2가 된다. 그러므로 세임 패딩을 적용한 입력 데이터의 크기는 (Hi+2*P, Wi+2*P)가 된다. 이처럼 세임 패딩은 풀패딩의 절반 개념이므로 절반 패딩(half padding) 라고도 부른다. 마찬가지로 위의 예시를 이용해 값을 계산해보면 아래와 같다.

 

 

 

지금까지 합성곱 연산시 입력 데이터의 원소들이 골고루 고려되게 하는 패딩 기법들을 알아보았다. 앞서 말했듯이 원소별 연산 참여 횟수를 결정하는 것은 패딩 뿐만 아니라 ‘스트라이드’라는 개념도 존재한다. 다음 글에선 스트라이드가 무엇인지 알아보도록 하자.

 

 

 

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 ondslee0808@gmail.com