98. 패딩 (Padding) - 딥러닝 공간 정보 유실 방지 테크닉

⚠️ 이 문서는 이미지 인식 딥러닝(CNN) 과정에서 돋보기(필터/커널)를 사진 위에 올려두고 스캔을 거듭할 때마다 원본 사진의 크기가 점점 깎여나가 소멸해 버리는 치명적 붕괴 현상과, 사진 모서리 구석에 있는 불쌍한 픽셀 데이터들이 철저히 소외되는 억울함을 동시에 해결하기 위해, **원본 이미지 겉 테두리에 쓸모없는 투명한 가짜 픽셀(0)들을 빙 둘러 액자처럼 감싸주어 데이터의 원형 크기를 보존해 주는 '제로 패딩(Zero Padding)'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: $10 \times 10$ 크기의 사진에 $3 \times 3$ 필터를 찍고 지나가면 사진의 겉 테두리가 잘려나가 결과물 지도가 $8 \times 8$로 쪼그라든다. 이를 막기 위해 애초에 원본 사진 겉에 1줄짜리 '가짜 여백(0)'을 덧대어 $12 \times 12$로 뻥튀기시켜 둔 뒤 필터를 찍는 수학적 꼼수다.
  2. 가치: 패딩을 쓰면 필터를 수백 번 통과시켜도(층이 수백 개 깊어져도) 이미지의 해상도(가로세로 크기)가 유지되므로 거대한 VGGNet, ResNet 같은 초거대 딥러닝 아키텍처를 안정적으로 무한히 쌓아 올릴 수 있다.
  3. 기술 체계: 아무것도 안 대서 크기가 줄어드는 것을 놔두는 Valid Padding과, 모서리에 0을 덧대어 필터를 거치고 나온 결과물 크기를 원본과 똑같이 $10 \times 10$으로 맞춰주는 Same Padding이 딥러닝 파라미터의 영원한 양대 산맥이다.

Ⅰ. 필터 스캐닝의 2가지 끔찍한 부작용

가장자리 픽셀의 비애와 점점 줄어드는 캔버스.

  1. 차원 축소 (Shrinking Dimension)의 저주:
    • $5 \times 5$ 크기의 귀여운 고양이 사진에 $3 \times 3$ 크기의 돋보기 필터(커널)를 올려놓고 스캔(합성곱 연산)한다.
    • 돋보기가 사진 바깥 허공으로 삐져나가면 연산을 못 하므로, 돋보기는 철저히 사진 '안쪽'에서만 돌아다닌다.
    • 결과적으로 뽑혀 나온 요약본 특징 맵(Feature Map)의 크기는 $3 \times 3$으로 확 쪼그라든다.
    • 이 짓을 한 번 더 해서 $3 \times 3$ 결과물에 또 $3 \times 3$ 필터를 들이대면? 결과는 $1 \times 1$ 점 하나로 소멸해 버린다. 층을 깊게 쌓고 싶어도 사진이 물리적으로 증발해 버려 망한다.
  2. 모서리 데이터 유실 (Edge Information Loss):
    • 더 억울한 건 픽셀 간의 차별이다.
    • 사진 '정가운데'에 있는 픽셀은 돋보기가 지나갈 때 무려 9번이나 겹쳐서 연산에 참가한다(과대 대표).
    • 하지만 '맨 왼쪽 위 구석탱이'에 있는 모서리 픽셀은, 돋보기가 처음 출발할 때 딱 1번만 끄트머리에 스치고 다시는 연산에 참가하지 못한다.
    • 만약 고양이 귀가 사진 구석에 있었다면? 구석 픽셀이 무시당해 이 AI는 고양이를 영영 판별하지 못하는 바보가 된다.

📢 섹션 요약 비유: 피자 도우(이미지)를 동그란 쿠키 커터(필터)로 찍어냅니다. 커터가 피자 밖으로 나가면 안 되니까 도우 안쪽만 꽉꽉 찍어대면, 뽑혀 나온 쿠키 모음(특성 맵)의 전체 넓이는 원본 피자보다 무조건 작아집니다. 게다가 도우 정중앙은 커터가 여러 번 겹쳐 찍히지만, 도우 맨 끄트머리 빵 테두리는 딱 한 번 스치거나 아예 버려져서, 피자 가장자리의 맛있는 치즈 크러스트(모서리 데이터) 정보가 몽땅 쓰레기통으로 날아가는 심각한 자원 낭비가 발생합니다.


Ⅱ. 구원자 '제로 패딩(Zero Padding)': 액자를 덧대다

진짜를 보호하기 위해 가짜 방패막이를 둘러친다.

  1. 제로 패딩의 기발한 처방:
    • 딥러닝 학자들은 사진 크기가 깎여나가는 것을 막기 위해 수학적 꼼수를 냈다.
    • $5 \times 5$ 픽셀의 강아지 사진 테두리에, 상하좌우 빙 둘러싸며 숫자가 '0'으로 채워진 **투명한 가짜 픽셀 블록(Padding)**을 1줄 두껍게 덧대버린다.
    • 그럼 원본 $5 \times 5$ 사진이 순간적으로 거대한 $7 \times 7$ 사진으로 뻥튀기된다.
  2. 모서리 픽셀의 구출 작전:
    • 이렇게 가짜 테두리를 덧댄 상태에서 원래 쓰던 $3 \times 3$ 필터를 맨 구석에 올려본다.
    • 놀랍게도 원래 맨 구석 끄트머리에 처박혀 1번밖에 취급 못 받던 '진짜 사진의 모서리 픽셀'이, 가짜 패딩 픽셀들이 바깥으로 밀어내 준 덕분에 돋보기의 중앙 쪽으로 스윽 들어오게 된다!
    • 결국 모서리 픽셀들도 가운데 픽셀들과 공평하게 여러 번 연산에 참여할 기회를 얻어, 사진 테두리에 숨어있는 중요한 특징(고양이 귀, 꼬리)이 보존율 100%로 완벽하게 살아남아 다음 층으로 전달된다.

📢 섹션 요약 비유: 피자(사진) 테두리가 버려지는 것을 막기 위해, 피자 바깥에 절대 먹을 수 없는 싸구려 종이 도화지(0 픽셀)를 한 바퀴 넓게 덧대어 붙여놓습니다(패딩). 쿠키 커터(필터)를 종이 도화지부터 겹쳐서 찍어대면, 버려지는 건 쓸모없는 종이 쪼가리뿐이고, 원래 피자의 맨 테두리에 있던 치즈 크러스트(가장자리 데이터)는 커터 정중앙에 예쁘게 온전히 담겨서 다음 요리 단계로 무사히 전달되는 위대한 꼼수입니다.


Ⅲ. Padding의 두 가지 국룰 파라미터 (Valid vs Same)

크기를 줄일 것인가, 유지할 것인가 코드로 선언하라.

  1. Valid Padding (무(無) 패딩, 자르기 허용):
    • 프레임워크(Keras 등)에 padding='valid'라고 옵션을 주면 발생한다.
    • 이름이 유효(Valid)라고 해서 좋을 것 같지만 훼이크다. 사실상 **"패딩을 하나도 덧대지 말아라!"**라는 뜻이다.
    • 돋보기가 사진 안쪽의 '유효한(Valid)' 원본 픽셀만 훑고 지나가므로, 연산이 끝난 특성 맵의 크기는 무자비하게 팍 쪼그라든다. 모델을 강제로 작게 압축하고 싶을 때 쓴다.
  2. Same Padding (크기 강제 보존) $\star$:
    • 프레임워크에 padding='same'이라고 옵션을 준다. 딥러닝 세상의 절대적인 표준 룰이다.
    • $10 \times 10$ 원본 사진을 집어넣었다면, 돋보기가 지나간 후 뽑혀 나온 결과물 지도의 크기도 무조건 똑같이(Same) $10 \times 10$이 되도록 컴퓨터가 알아서 가장자리에 0 픽셀(패딩)을 필요한 만큼(1줄 또는 2줄) 두껍게 덧대주는 마법의 자동 옵션이다.
    • 이 'Same' 마법 덕분에 설계자는 층(Layer)을 100개, 200개 무한정 깊게 쌓아도 사진이 증발할 걱정 없이 마음 편히 딥러닝 아키텍처를 레고 블록 조립하듯 쌓아 올릴 수 있게 되었다.

📢 섹션 요약 비유: Valid 옵션은 세무서에서 원천징수를 떼가는 것과 같습니다. 월급 300만 원(원본 크기)을 필터에 넣으면 이것저것 깎여서 내 통장(결과물)에는 250만 원만 쪼그라들어 들어옵니다. Same 옵션은 연봉 보전 계약입니다. 세금(필터 연산)을 떼더라도 회사에서 모자란 세금을 보너스(패딩)로 덧대어 채워주어서, 내 통장에 정확히 300만 원 똑같은(Same) 크기의 금액이 찍히도록 보장해 주는 꿈의 옵션입니다.