POST

딥러닝을 성립시키는 부품들: 층, 활성, 풀링, 손실, 정규화

하나의 계약, 여러 개의 부품

이 블로그에서 리뷰한 논문들을 관통하는 계약은 한 문장이다: 모든 부품이 미분 가능하면, 시스템 전체를 하나의 손실로 학습할 수 있다. Backpropagation(1986)이 그 계약서이고, LeNet(1998)이 “파이프라인 전체를 미분 가능한 모듈의 합성으로”라는 확장 조항을 썼다. 이 글은 그 계약 위에서 딥러닝을 실제로 성립시키는 부품들을 역할별로 해부한다.

1. 층 — 선형과 비선형의 교대

층 하나는 선형변환 Wx+bWx + b와 비선형 활성 f(⋅)f(\cdot)의 합성이다. 둘 다 필요한 이유는 대칭적이다: 비선형이 없으면 몇 층을 쌓아도 하나의 선형변환으로 접히고(깊이가 무의미), 선형이 없으면 표현을 섞고 회전시킬 방법이 없다. 층의 변형들 — conv(국소성+가중치 공유), 순환(LSTM), self-attention(Transformer) — 은 전부 “선형변환을 어떤 구조적 제약 아래 둘 것인가”의 선택이다.

활성 함수의 역사는 그래디언트의 역사다. 시그모이드/tanh는 확률 해석과 유계성이 매력이었지만 포화 영역에서 그래디언트를 죽였고(LSTM의 오차 소멸 분석이 정확히 이 문제다), AlexNet의 ReLU(max⁡(0,x)\max(0, x))가 “양수 구간에서 그래디언트 1”로 판을 바꿨다(6배 빠른 수렴). 이후 GELU/Swish 같은 매끄러운 변형들이 Transformer 시대의 기본값이 됐지만, 개선 폭은 시그모이드→ReLU만큼 극적이지 않다 — 큰 문제는 이미 풀렸다는 뜻이다.

2. 역전파 — 왜 이것이 전부인가

Backpropagation의 내용은 연쇄법칙의 재귀적 적용이지만, 중요한 것은 계산 복잡도다: 파라미터가 NN개일 때 수치 미분은 O(N)O(N)번의 순전파가 필요하지만, 역전파는 순전파 1번 + 역전파 1번으로 모든 편미분을 얻는다. 이 효율이 없으면 수백만~수천억 파라미터의 학습 자체가 불가능하다. 현대 프레임워크의 자동 미분(reverse-mode AD)은 이것의 일반화이고, “미분 가능하게만 설계하라”는 설계 원칙이 여기서 나온다 — CTC의 동적 계획법도, RNN-T의 격자도, Gumbel softmax(wav2vec 2.0)도 전부 “미분 가능하게 만들기 위한” 장치들이다.

같이 계약된 최적화 루프도 부품이다: SGD의 미니배치 노이즈는 넓은 최솟값을 선호하는 정규화로 작동하고(LeNet이 이미 관찰했다), momentum(원전이 backprop 논문이다)과 Adam 계열, 그리고 warmup-decay 스케줄(Transformer)이 실전의 기본 묶음이다.

3. 풀링 — 무엇을 버릴 것인가

풀링의 본질은 다운샘플링이 아니라 의도된 정보 폐기다. LeNet의 문장이 지금도 최고의 설명이다 — “특징이 검출되면 그 정확한 위치는 오히려 해롭다. 인스턴스마다 흔들리기 때문이다.” 종류별로 버리는 것이 다르다:

  • Max pooling: 창 안에서 가장 강한 활성만 남긴다 — “있느냐 없느냐”를 남기고 “정확히 어디인가”와 “얼마나 널리 퍼졌는가”를 버린다. 국소 이동 불변성의 표준 장치.
  • Average pooling: 창의 평균 — 분포적 정보를 남기고 최댓값의 위치를 버린다. CAM의 분석이 둘의 차이를 선명하게 보여준다: 전역 평균(GAP)은 물체의 전체 범위를 활성화하도록 학습을 유도하고, 전역 최대(GMP)는 가장 판별적인 한 점만 찾게 만든다.
  • Global Average Pooling (GAP): feature map 하나를 스칼라 하나로 — FC층의 파라미터 폭발을 없애고(VGG의 138M이 반면교사), 공간 정보를 마지막까지 보존해 CAM 같은 해석을 공짜로 준다. ResNet 이후 분류기의 표준 마무리.
  • Strided conv: “고정된 규칙으로 버리지 말고 버리는 법도 배우자” — 풀링의 학습형 대체물로, 현대 CNN은 대부분 이쪽이다. 반대로 Swin의 patch merging은 풀링의 Transformer 번역이다.
  • 어텐션/통계 풀링: 시퀀스를 고정 차원으로 접는 문제(화자 임베딩)에서는 평균+표준편차(x-vector)나 학습된 중요도 가중(ECAPA-TDNN)으로 — “무엇을 버릴지 자체를 입력에 따라 정하는” 풀링의 종착점이다.

풀링과 짝인 개념이 등변성/불변성 구분이다: conv는 등변(입력이 밀리면 출력도 밀림), 풀링의 누적이 불변(밀려도 결과 불변)을 만든다. 분류는 불변이 목표지만 검출·분할은 등변이 필요하다 — 태스크에 따라 풀링의 양이 달라지는 이유다.

4. 손실 — 태스크의 형식을 인코딩하다

손실 함수는 “무엇이 좋은 출력인가”의 수학적 정의이고, 이 블로그의 리뷰들이 사실상 손실의 계보를 이룬다:

  • MSE → 교차엔트로피: 회귀의 MSE를 분류에 쓰면 시그모이드/softmax의 포화 구간에서 그래디언트가 죽는다. softmax + 교차엔트로피 조합은 그래디언트가 (예측 − 정답)으로 깔끔하게 떨어지는, 분류의 기본 계약이다. label smoothing(Transformer)은 그 위의 보정.
  • 마진 손실: 분류가 아니라 open-set 검증이 목표면 “구분”만으로 부족하고 클래스 간 간격이 필요하다 — ArcFace의 각도 마진이 얼굴에서 화자(ECAPA-TDNN)까지 표준이 된 이유다.
  • 대조 손실 (InfoNCE): 라벨이 없으면 “같은 것끼리 가깝게, 다른 것끼리 멀게”가 감독 신호가 된다 — SimCLR에서 CLIP(이미지-텍스트), wav2vec 2.0(시간축 마스킹)까지, 같은 수식이 도메인만 바꿔 재등장한다. SigLIP은 그 softmax 결합을 쌍별 sigmoid로 풀어낸 변형.
  • 시퀀스 손실: 출력이 시퀀스이고 정렬을 모르면, 가능한 모든 정렬에 대해 합산한다 — CTC와 RNN-T의 동적 계획법. 자기회귀 분해(다음 토큰 예측, GPT 계열)는 정렬 문제를 순서 자체로 치환한 특수해로 볼 수 있다.
  • 예측(재구성) 손실: 입력의 일부로 나머지를 맞히는 BERT/MAE/HuBERT 계열 — 자기지도학습 세 갈래에서 정리했듯, 붕괴 걱정 없는 가장 우직한 자기지도 손실이다.

관통하는 교훈 하나 — 손실이 최적화하는 것과 우리가 원하는 표현은 다를 수 있다. SimCLR의 projection head(손실 공간과 표현 공간의 분리), HuBERT의 마스킹 영역 한정 손실, DINOv3의 Gram anchoring이 전부 이 간극을 다루는 장치들이다.

5. 깊이를 견디게 하는 것들

층·활성·손실이 갖춰져도 깊게 쌓으면 무너진다. 이를 견디게 하는 부품들이 마지막 조각이다: 정규화 층(BatchNorm은 배치 통계로, LayerNorm은 특징 차원 통계로 활성 분포를 고정 — RNN/Transformer에서는 배치 의존이 없는 LN이 표준), residual connection(ResNet — 그래디언트가 스케일 없이 흐르는 덧셈 경로, LSTM의 CEC와 같은 원리), 그리고 정규화 기법들(dropout, weight decay, 데이터 증강 — DeiT가 보여주듯 inductive bias가 없는 모델일수록 이쪽이 무거워진다). 정규화의 위치조차 스케일이 커지면 문제가 된다는 것(Swin V2의 res-post-norm)까지가 현재 지점이다.

부품 목록을 다시 보면 딥러닝의 역사가 그대로 읽힌다 — 1986년의 계약(backprop) 위에, 1998년의 구조(conv+pooling), 2012년의 재료(ReLU, dropout, GPU), 2015년의 골격(residual+BN), 2017년의 배선(attention+LN), 그리고 2020년대의 손실 설계(마진·대조·마스킹). 부품은 바뀌어도 계약은 그대로다: 미분 가능하게 설계하라, 그러면 배운다.