가중치 감쇠

편집 역사 토론
수치해석 통계 소프트웨어 마지막 수정: 2026-08-23 04:51:33

1. 개요[편집]

가중치 감쇠(weight decay)는 학습의 매 갱신 단계마다 파라미터를 일정 비율만큼 원점 쪽으로 직접 끌어당기는 정규화 기법으로, 갱신식에 항 하나를 더하는 것이 전부다.

θt+1=(1ηλ)θtηL(θt)\theta_{t+1} = (1-\eta\lambda)\,\theta_t - \eta\,\nabla L(\theta_t)

손실 LL 이 시키는 대로 움직이되, 매번 가중치를 (1ηλ)(1-\eta\lambda) 배로 줄인다. 아무 학습 신호가 없으면 가중치는 지수적으로 0으로 붕괴하고, 학습 신호가 그 붕괴를 이겨낼 만큼 강한 방향에만 크기가 남는다. “쓸모를 증명하지 못한 파라미터는 조용히 사라진다” 는 것이 이 기법의 철학이다.1

이름은 딥러닝에서 붙었지만 실체는 훨씬 오래됐다. 선형 모형에 얹으면 능형회귀이고, 연산자 방정식에 얹으면 티호노프 정규화이며, 베이즈로 읽으면 가우스 사전분포 아래의 MAP 추정이다. 즉 심위키 관점에서 가중치 감쇠는 새 개념이 아니라 역문제 정규화가 학습률이라는 옷을 갈아입고 나타난 것이다. 그런데 그 옷 때문에 미묘한 사고가 하나 생겼고, 그것이 이 문서의 절반을 차지한다.

2. L2 정규화와 같은가 — SGD에서는 그렇다[편집]

교과서는 보통 손실에 벌점을 더하는 쪽으로 가르친다.

L~(θ)=L(θ)+λ2θ22\tilde{L}(\theta) = L(\theta) + \frac{\lambda'}{2}\lVert\theta\rVert_2^2

이것이 L2 정규화다. 기울기를 취하면 L~=L+λθ\nabla\tilde L = \nabla L + \lambda'\theta 이고, 순수 확률적 경사하강법 갱신에 넣으면

θt+1=θtη(L+λθt)=(1ηλ)θtηL\theta_{t+1} = \theta_t - \eta(\nabla L + \lambda'\theta_t) = (1-\eta\lambda')\,\theta_t - \eta\nabla L

가 되어 개요의 식과 정확히 일치한다(λ=λ\lambda = \lambda'). 그래서 오랫동안 두 이름은 같은 것의 두 표기로 통했다. 다만 이 등가에는 조건이 붙어 있다는 점을 기억해야 한다.

  • 스텝 크기에 묶여 있다. 실제 감쇠량은 ηλ\eta\lambda' 이라, 학습률 스케줄η\eta 를 10배 줄이면 정규화 세기도 10배 줄어든다. 두 하이퍼파라미터가 곱으로만 등장하므로 격자 탐색에서 서로 얽힌다.
  • 모멘텀이 끼면 어긋난다. L2 항 λθ\lambda'\theta 는 모멘텀 버퍼를 통과하며 지연·평활되지만 직접 감쇠는 즉시 적용된다. 실무적 차이는 작지만 원리적으로 같은 식이 아니다.
  • 적응형 옵티마이저에서는 완전히 다른 물건이 된다. 이게 진짜 문제다.

3. Adam에서 깨지는 이유와 AdamW[편집]

Adam은 좌표별로 기울기 2차 모멘트 v^\hat v 의 제곱근으로 나눠 스텝을 정규화한다. L2 정규화를 쓰면 감쇠항 λθ\lambda'\theta 도 그 나눗셈을 함께 통과한다.

θt+1=θtηm^tv^t+ϵ,mtEMA(L+λθt)\theta_{t+1} = \theta_t - \eta\,\frac{\widehat{m}_t}{\sqrt{\widehat v_t}+\epsilon}, \qquad m_t \leftarrow \text{EMA}\bigl(\nabla L + \lambda'\theta_t\bigr)

여기서 각 좌표의 실효 감쇠율이 λ/v^i\lambda'/\sqrt{\hat v_i} 로 좌표마다 달라진다. 방향을 뒤집어 읽으면 이렇다 — 기울기가 크게 요동쳐 온 파라미터일수록 덜 감쇠되고, 조용했던 파라미터일수록 세게 깎인다. 정규화의 의도가 “크게 자란 가중치를 억제한다”였다면 이건 정반대에 가깝다. 게다가 v^\hat v 는 학습 중에 계속 변하므로 정규화 세기가 스스로 표류한다.

로슈칠로프와 후터(Loshchilov & Hutter)가 2017년 초고(정식 발표는 ICLR 2019)에서 내놓은 처방이 AdamW이며, 발상은 “감쇠를 손실에서 떼어내 갱신식에 직접 쓴다”는 것 하나뿐이다.

θt+1=θtη(m^tv^t+ϵ+λθt)\theta_{t+1} = \theta_t - \eta\left(\frac{\widehat m_t}{\sqrt{\widehat v_t}+\epsilon} + \lambda\theta_t\right)

이것을 분리형 가중치 감쇠(decoupled weight decay)라 부른다. 감쇠가 v^\sqrt{\hat v} 를 안 거치므로 모든 좌표에 같은 비율로 적용되고, λ\lambdaη\eta 의 최적값이 거의 독립이 되어 격자 탐색이 두 축으로 깔끔히 분리된다. 논문에서 실제로 보고한 성과도 “성능이 올랐다”보다 “하이퍼파라미터 지형이 축에 정렬된 타원이 되어 튜닝이 쉬워졌다” 쪽에 가깝다. 지금은 트랜스포머 계열 사전학습의 사실상 기본 옵티마이저다.

실무에서 반드시 새길 점 하나. weight_decay 라는 같은 이름의 인자가 프레임워크·옵티마이저마다 다른 식을 가리킨다. SGD 쪽 구현은 대개 L2 결합형(기울기에 λθ\lambda\theta 를 더함)이고 AdamW는 분리형이다. 결합형에서 튜닝한 λ\lambda' 를 분리형에 그대로 옮기면 실효 세기가 η\eta 배만큼 어긋난다. 논문 재현이 안 될 때 의외로 자주 나오는 범인이다.2

4. 베이즈로 읽기 — 가우스 사전분포와 MAP[편집]

가중치 감쇠가 왜 하필 θ22\lVert\theta\rVert_2^2 인지는 확률로 보면 즉답이 나온다. 사후분포를 최대화하는 MAP 추정

θ^=argmaxθ logp(Dθ)+logp(θ)\hat\theta = \arg\max_\theta\ \log p(\mathcal{D}\mid\theta) + \log p(\theta)

인데, 사전분포를 θN(0,τ2I)\theta\sim\mathcal N(0,\tau^2 I) 로 두면 logp(θ)=θ2/(2τ2)+const\log p(\theta) = -\lVert\theta\rVert^2/(2\tau^2) + \text{const} 다. 관측 잡음이 N(0,σ2)\mathcal N(0,\sigma^2) 인 가우스 우도와 합치면 정확히 L2 정규화된 최소자승이 되고, 정규화 계수는

λ=σ2τ2\lambda' = \frac{\sigma^2}{\tau^2}

잡음 분산 대 사전 분산의 비다. “데이터가 시끄러울수록, 파라미터가 클 리 없다고 믿을수록 세게 정규화한다”는 상식이 식으로 확인된다. 라플라스 사전분포로 바꾸면 1\ell_1 벌점, 즉 라쏘가 된다.

선형 모형에서는 여기서 닫힌 해까지 나온다. θ^=(XX+λI)1Xy\hat\theta = (X^{\top}X+\lambda' I)^{-1}X^{\top}y 이고, 특이값 분해로 보면 각 성분이 필터인자 σi2/(σi2+λ)\sigma_i^2/(\sigma_i^2+\lambda') 로 눌린다 — 큰 특이값 방향은 살고 작은 특이값 방향(잡음이 증폭되는 방향)은 죽는다. 이 필터 그림과 λ\lambda 선택법(L-곡선, 불일치 원리, 교차검증)은 티호노프 정규화능형회귀 문서가 상세히 다루므로 여기서 반복하지 않는다.

CAE 쪽으로 옮기면 이 등가가 왜 중요한지가 분명해진다. 실험 데이터로 재료 물성이나 경계조건을 역추정하는 문제, 칼만 필터류의 상태 추정, 대리모델 회귀 — 전부 조건수가 큰 악조건 문제이고, 거기서 해를 안정화하는 장치가 정확히 이 항이다. 딥러닝이 새로 발명한 것이 아니라 역문제 동네에서 반세기 쓰던 도구를 가져다 쓴 것이다.

5. 정규화층이 있으면 이야기가 달라진다[편집]

여기가 현대 신경망에서 가장 오해가 많은 지점이다. 배치 정규화층 정규화 바로 앞에 있는 가중치 ww스케일 불변이다. wwcc 배 해도 정규화 출력이 그대로이므로

L(cw)=L(w)L(cw)=1cL(w),L(w),w=0L(cw) = L(w) \quad\Longrightarrow\quad \nabla L(cw) = \tfrac1c\nabla L(w), \qquad \langle \nabla L(w),\,w\rangle = 0

가 성립한다(뒤의 것은 오일러 정리). 손실이 ww방향에만 의존하므로, 가중치 노름을 줄이는 것은 복잡도를 억제하는 일이 전혀 아니다. 그럼 무엇을 하는가?

기울기가 ww 와 직교하므로 노름의 갱신은 피타고라스로 정리된다.

wt+12=(1ηλ)2wt2+η2gt2\lVert w_{t+1}\rVert^2 = (1-\eta\lambda)^2\lVert w_t\rVert^2 + \eta^2\lVert g_t\rVert^2

감쇠는 노름을 줄이고 기울기는 노름을 키우니 평형점이 존재한다. g=G/w\lVert g\rVert = G/\lVert w\rVert 임을 넣고 정상상태를 풀면

w(ηλ)1/4,ηeff    ηgw    ηλ\lVert w\rVert_{*} \propto \left(\frac{\eta}{\lambda}\right)^{1/4}, \qquad \eta_{\text{eff}} \;\sim\; \frac{\eta\lVert g\rVert}{\lVert w\rVert} \;\propto\; \sqrt{\eta\lambda}

가 나온다. 결론이 강렬하다. 정규화층 앞 가중치에서 가중치 감쇠는 정규화 장치가 아니라 학습률 조절 장치다. 그리고 방향 공간에서 실제로 움직이는 보폭 ηeff\eta_{\text{eff}}η\etaλ\lambda 에 따로 의존하지 않고 ηλ\eta\lambda 에만 의존한다. 학습률을 반으로 줄이고 감쇠를 두 배로 올리면 학습 궤적이 거의 그대로인 현상이 여기서 나오며, 이 곱을 “내재 학습률”이라 부르며 분석하는 계열의 연구가 2017년 이후 쌓였다.

실무 규칙 몇 개가 이 그림에서 자연스럽게 따라온다.

  • 편향과 정규화층 파라미터(γ,β\gamma,\beta)에는 감쇠를 걸지 않는다. 스케일 불변성 논리가 적용되지 않는 데다, γ\gamma 를 0으로 끌면 그 층을 통째로 죽이는 짓이다. 대부분의 레시피가 이들을 감쇠 대상에서 제외한다.
  • 감쇠를 껐는데 발산했다면 정규화가 아니라 유효 학습률을 잃은 것일 수 있다. 노름이 서서히 자라 ηeff\eta_{\text{eff}} 가 0으로 수렴하면 학습이 조용히 멈춘다.
  • 스케일 불변이 아닌 층(마지막 분류기, 임베딩)에는 고전적 의미의 정규화가 그대로 작동한다. 즉 한 모형 안에서 같은 λ\lambda 가 층마다 전혀 다른 일을 한다.

6. 무엇이 아닌가[편집]

  • 가중치 감쇠는 노름 제약이 아니다. θC\lVert\theta\rVert\le C 를 강제하는 것이 아니라 벌점을 얹을 뿐이라, 데이터가 세게 밀면 노름은 얼마든지 커진다. 라그랑주 쌍대 관점에서 대응하는 CC 가 있지만 그 값은 사전에 모른다.
  • 감쇠가 곧 일반화 향상은 아니다. 파라미터 수가 데이터 수를 압도하는 영역에서는 명시적 정규화 없이도 잘 일반화되는 현상(암묵적 정규화, 이중 하강)이 관측된다. 이 논쟁은 과적합·심층 학습 문서에 정리돼 있다.
  • 희소성을 만들지 않는다. 2\ell_2 벌점의 해는 계수를 0 근처로 밀 뿐 정확히 0으로 만들지 않는다. 가중치를 실제로 잘라내려면 라쏘신경망 가지치기가 필요하다.
  • 다른 정규화 수단과 역할이 겹치되 같지는 않다. 드롭아웃은 적응적 2\ell_2 로 해석되는 면이 있고, 조기 종료는 최소자승 문제에서 능형회귀와 근사적으로 대응하는 것이 알려져 있다. 셋 다 켜 놓고 하나씩 끄면서 어느 것이 일하고 있는지 확인하는 것이 실무의 정석이다.

전형적인 값 감각만 적어 두면, 영상 분류의 SGD+모멘텀 레시피에서 결합형 λ104\lambda'\approx10^{-4}, 트랜스포머 사전학습의 AdamW에서 분리형 λ0.010.1\lambda\approx0.01\sim0.1 이 흔한 출발점이다. 물론 이 숫자들은 배치 크기·스케줄·모델 폭과 얽혀 있어서, 남의 설정을 그대로 베낄 때는 무엇이 함께 따라와야 하는지까지 베껴야 한다. 물리 정보 신경망처럼 손실 자체가 물리 잔차인 경우에는 특히 조심해야 한다 — 거기서 가중치 감쇠를 세게 걸면 “데이터에 과적합하지 않게” 하는 게 아니라 지배 방정식을 덜 만족하게 만드는 수가 있다.3

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 신경망 맥락의 원조는 핸슨과 프랫(1988), 그리고 “단순한 가중치 감쇠가 일반화를 개선할 수 있다”는 제목을 그대로 결론으로 쓴 크로그와 헤르츠(1992)로 거슬러 올라간다. 30년 뒤에 같은 항이 이름만 바꿔 달고 거대 언어모형 설정 파일에 그대로 들어앉아 있는 것을 보면, 좋은 정규화는 늙지 않는다는 생각이 든다.

  2. 더 사악한 변형도 있다. 대부분의 분리형 구현은 감쇠항에도 스케줄 배수를 곱하기 때문에, 코사인 스케줄로 η\eta 가 0에 가까워지면 감쇠도 함께 꺼진다. “학습 막판에 노름이 갑자기 늘어나는데요?”의 답이 여기 있다. 이걸 원치 않으면 스케줄과 무관한 상수 감쇠를 따로 구현해야 하고, 그러면 또 재현이 안 된다. 정규화 하나 걸었을 뿐인데 인생이 복잡해진다.

  3. 같은 이유로 정규화층이 없는 소형 완전연결망(전형적인 PINN 구조)에서는 앞 절의 스케일 불변성 논리도 성립하지 않는다. 즉 PINN의 가중치 감쇠는 고전적 의미의 정규화로 작동하며, 잔차 손실과 경계조건 손실 사이의 가중치 문제와 뒤엉킨다. 하이퍼파라미터가 세 개인데 셋 다 서로를 잡아먹는 상황이라, 이 바닥의 튜닝 로그가 유독 처참한 데는 이유가 있다.