3. 최적화와 안정화¶
이 장의 질문¶
깊은 신경망의 학습은 왜 불안정해지며, 문제에 따라 어떤 방법을 써야 할까?
2장에서는 역전파로 기울기를 구했다. 기울기를 계산할 수 있다고 해서 학습이 저절로 잘되지는 않는다. 갱신 폭이 너무 크거나 작을 수 있고, 층이 깊어지면서 신호가 사라지거나 폭발할 수 있다. 훈련 데이터에는 잘 맞지만 새 데이터에서 성능이 떨어지기도 한다. 해결 방법은 다음 세 부류로 나눠 볼 수 있다.
- 갱신 규칙: 계산한 기울기를 매개변수의 변화량으로 바꾸는 방법
- 신호 안정성: 활성값과 기울기가 여러 층을 지나도 적절한 크기를 유지하게 하는 방법
- 일반화: 학습에 쓰지 않은 데이터에서도 쓸 수 있는 규칙을 찾게 하는 방법
각 방법이 어떤 문제를 해결하는지 구분해야 알맞은 처방을 고를 수 있다.
읽기 수준과 선수지식 확인
읽기 전에 확인할 내용¶
핵심 개념¶
- 경사하강법, 미니배치 SGD, 모멘텀(momentum)
- 학습률과 학습률 스케줄러
- Adam과 AdamW
- 기울기 소실·폭발, 초기화, 정규화
- 잔차 연결과 기울기 클리핑
- 과소적합·과대적합, 가중치 감쇠, 드롭아웃, 조기 종료
- 훈련·검증 곡선을 이용한 진단
이름과 위치를 알아둘 개념¶
- RMSProp과 적응형 옵티마이저
- 하이퍼파라미터 민감도
- 손실 지형
모든 옵티마이저 식을 암기하는 것이 목표는 아니다. 어떤 방법이 갱신의 방향과 크기를 바꾸는지, 어떤 방법이 모형 구조의 신호 경로를 바꾸는지, 어떤 방법이 일반화를 겨냥하는지 분류할 수 있으면 된다.
이해에 필요한 항목¶
- 기울기의 부호와 크기, 학습률의 역할
- 평균과 이동평균의 직관
- 훈련 손실과 검증 손실의 차이
- 2장의 순전파, 역전파, 미니배치
1. 기울기로 매개변수 갱신하기¶
경사하강법과 미니배치 SGD¶
전체 훈련 데이터 손실을 \(L(\theta)\)라고 하면 가장 기본적인 갱신은 다음과 같다.
학습률 \(\eta\)가 너무 크면 낮은 손실 영역을 지나치거나 학습이 발산할 수 있고, 너무 작으면 진행이 느리거나 평평한 영역을 벗어나지 못할 수 있다. 실제 딥러닝에서는 전체 데이터를 매 단계마다 계산하기보다 미니배치 \(B_t\)로 기울기를 추정하는 확률적 경사하강법(SGD)을 사용한다.
미니배치마다 \(g_t\)가 조금씩 달라지므로 갱신에는 변동성이 생긴다. 이는 단순한 계산 오차가 아니라 배치 크기, 데이터 순서, 학습률과 함께 최적화 경로를 결정하는 요소다.
모멘텀¶
SGD는 좁고 굽은 손실 표면에서 좌우로 흔들리거나, 여러 단계에서 일관된 방향으로도 천천히 움직일 수 있다. 모멘텀은 이전 기울기의 이동평균과 비슷한 상태를 유지해 지속적인 방향은 강화하고 반복적인 진동은 줄이려 한다.
\(\beta\)는 과거 방향을 얼마나 유지할지 조절한다. 모멘텀은 물리적 운동량과 완전히 같은 것은 아니지만, 관성이라는 직관이 갱신 누적을 이해하는 데 유용하다.
적응형 옵티마이저와 Adam¶
특성과 매개변수마다 기울기 크기가 크게 다를 수 있다. RMSProp 계열은 제곱 기울기의 이동평균을 이용해 매개변수별 갱신 크기를 조정한다. Adam은 기울기의 이동평균과 제곱 기울기의 이동평균을 함께 사용한다. 초기에 비교적 안정적으로 학습되는 경우가 많아 널리 쓰이지만, 모든 문제에서 항상 최상의 일반화나 속도를 보장하지는 않는다.
AdamW는 가중치 감쇠를 Adam의 기울기 기반 갱신과 분리해 적용한다. 이름이 비슷해도 "Adam에 L2 항을 단순히 더한 것"과 같은 동작이 아닐 수 있다는 점이 핵심이다.
학습률 일정¶
학습 초반에는 넓게 이동하고 후반에는 세밀하게 조정하도록 학습률을 시간에 따라 바꿀 수 있다. 단계별 감쇠, 코사인 일정, 워밍업 같은 방식을 쓴다. 워밍업은 특히 큰 배치나 트랜스포머 학습에서 초반 갱신을 점진적으로 키우는 데 쓰인다.
스케줄러를 쓰면 무조건 좋아지는 것이 아니다. 총 단계 수, 옵티마이저, 배치 크기와 함께 하나의 학습 설정으로 검증해야 한다. 서로 다른 일정을 비교하면서 한쪽에 더 많은 학습 단계를 주면 공정한 비교가 아닐 수 있다.
2. 깊이에 따른 신호 안정성¶
기울기 소실과 기울기 폭발¶
깊은 신경망의 기울기는 여러 층의 국소 미분계수가 곱해진 결과다. 이 곱이 반복해서 1보다 훨씬 작아지면 앞쪽 층의 기울기가 거의 사라지는 기울기 소실이 생긴다. 반대로 반복해서 커지면 기울기 폭발이 생긴다.
기울기만의 문제가 아니다. 순전파의 활성화도 층을 지날 때 크기가 지나치게 줄거나 커질 수 있다. 신호 전파를 생각할 때 순전파 활성화와 역전파 기울기를 함께 봐야 한다.
초기화는 출발점의 신호 크기를 정하고, 정규화는 학습 중 활성화의 통계를 조절한다. 잔차 연결은 정보와 기울기의 경로를 만들며, 기울기 클리핑은 갑작스러운 폭발을 제한한다. 네 방법은 작동 지점이 서로 다르다.
신호 안정화 방법 자세히 보기
초기화¶
모든 가중치를 같은 값으로 초기화하면 같은 층의 뉴런들이 대칭적으로 같은 기울기를 받아 서로 다른 특성을 배우기 어렵다. 무작위 초기화가 필요하지만 크기도 중요하다.
- Xavier 또는 Glorot 초기화는 입력과 출력 차원을 고려해 활성화와 기울기의 분산을 유지하려 한다. 시그모이드나 하이퍼볼릭 탄젠트 계열과 연결해 소개되는 경우가 많다.
- He 초기화는 ReLU처럼 일부 활성화를 0으로 만드는 함수의 특성을 고려한 크기를 사용한다.
이 방법들은 학습 성공을 보장하는 공식이 아니라 초기 신호 크기를 합리적으로 정하는 출발점이다. 활성화, 정규화, 잔차 구조가 바뀌면 적절한 초기화도 달라질 수 있다.
정규화¶
정규화 층은 중간 활성화의 크기와 분포를 조절해 최적화를 안정화하는 데 도움을 준다.
- 배치 정규화는 미니배치 통계를 사용해 활성화를 정규화하고 학습 가능한 크기와 이동을 적용한다. MLP에서는 보통 특성별로 정규화하고, 일반적인 CNN에서는 배치와 공간 위치에 걸쳐 통계를 모아 채널별로 정규화한다. 훈련과 추론에서 사용하는 통계가 다를 수 있다.
- 층 정규화는 한 샘플 내부의 특성 축 통계를 사용한다. 배치 크기에 직접 의존하지 않아 트랜스포머에서 널리 사용된다.
둘을 단순히 교체 가능한 기법으로 보면 안 된다. 어느 축에 대해 통계를 계산하는지, 시퀀스 또는 공간 차원을 어떻게 취급하는지, 훈련과 추론의 동작이 같은지 확인해야 한다.
잔차 학습과 건너뛰기 연결¶
잔차 블록은 입력 \(x\)를 변환 \(F(x)\)에 직접 더한다.
이 건너뛰기 경로는 정보와 기울기가 여러 비선형 층을 모두 통과하지 않고도 이동할 수 있게 한다. 잔차 연결은 옵티마이저가 아니다. 모형 구조를 바꾸어 깊은 신경망의 최적화를 돕는 요소다. 5장에서 ResNet의 실제 구성으로 다시 본다.
기울기 클리핑¶
기울기 노름이 지나치게 커질 때 정해진 범위로 줄이는 기울기 클리핑을 사용할 수 있다. 순환 신경망이나 불안정한 학습에서 급격한 갱신을 막는 안전장치가 될 수 있다. 그러나 지속적인 기울기 폭발의 원인이 잘못된 학습률, 데이터 크기, 손실 구현에 있다면 클리핑만으로 원인이 해결되지는 않는다.
핵심 흐름 펼쳐보기: 일반화와 학습 진단
3. 일반화¶
과소적합과 과대적합¶
- 과소적합은 훈련 데이터의 중요한 패턴조차 충분히 학습하지 못한 상태다. 모델 용량 부족, 부적절한 특성, 너무 강한 규제, 부족한 최적화 등이 원인일 수 있다.
- 과대적합은 훈련 데이터에는 매우 잘 맞지만 검증 또는 실제 사용 데이터에는 성능이 떨어지는 상태다. 단순히 모델이 크다는 사실보다 데이터 양과 다양성, 레이블 노이즈, 분할, 학습 시간과의 관계가 중요하다.
훈련 오차와 검증 오차의 차이를 일반화 격차라고 부르기도 한다. 이 차이가 크다고 곧바로 특정 규제 기법 하나를 적용하기보다 데이터 누출, 훈련과 검증 분포 차이, 평가 지표 구현을 먼저 확인해야 한다.
가중치 감쇠¶
가중치 감쇠는 갱신 과정에서 가중치의 크기가 계속 커지는 것을 억제한다. 단순 SGD에서는 손실에 L2 벌점항을 더하는 관점과 밀접하게 연결되지만 적응형 옵티마이저에서는 구현에 따라 동작이 달라진다. AdamW의 "W"가 이 분리를 강조한다.
가중치가 작으면 항상 좋은 모델이라는 뜻은 아니다. 매개변수 크기가 함수의 복잡성과 직접 대응하지 않는 모형 구조도 있으며 정규화와 함께 사용할 때 해석이 달라질 수 있다.
드롭아웃¶
드롭아웃은 훈련 중 일부 활성화를 무작위로 0으로 만들어 특정 단위 조합에 지나치게 의존하지 않도록 한다. 추론에서는 모든 단위를 사용하되 훈련과 출력 크기가 일치하도록 처리한다. 드롭아웃 비율이 크면 규제가 강해지지만 정보까지 과도하게 제거해 과소적합을 일으킬 수 있다.
조기 종료¶
검증 평가 지표가 더 이상 개선되지 않을 때 학습을 멈추고 가장 좋은 체크포인트를 선택하는 방법이다. 검증 데이터를 반복해서 모델 선택에 사용하므로, 최종 테스트 데이터는 이 선택 과정과 분리해야 한다. 검증 곡선의 작은 변동마다 즉시 멈추지 않도록 대기 횟수를 둘 수 있다.
데이터 증강¶
입력의 의미를 유지하는 변환으로 새로운 훈련 샘플을 만드는 방법이다. 이미지를 조금 이동하거나 뒤집는 변환이 대표적이지만, 어떤 변환이 의미를 보존하는지는 영역에 따라 다르다. 글자를 뒤집거나 손대칭성 분자를 반사하는 것처럼 목표값을 바꿀 수 있는 데이터 증강은 무조건 적용하면 안 된다.
학습 곡선으로 문제를 분류하기¶
곡선은 원인을 확정하는 도구가 아니라 가설을 좁히는 증거다.
- 훈련과 검증 손실이 모두 높고 거의 줄지 않는다: 모형 용량, 특성, 학습률, 기울기 흐름, 구현 오류를 점검한다.
- 훈련 손실은 줄지만 검증 손실이 다시 증가한다: 과대적합, 분할 차이, 레이블 노이즈 가능성을 본다.
- 손실이 큰 폭으로 진동하거나 NaN이 된다: 학습률, 기울기 폭발, 수치 안정성, 입력 크기를 확인한다.
- 손실은 내려가지만 평가 지표가 개선되지 않는다: 손실과 평가 지표의 불일치, 범주 불균형, 임곗값 선택을 확인한다.
- 훈련 재현성이 지나치게 낮다: 난수 초깃값만 고정하기 전에 데이터 차수, 비결정적 연산, 배치 통계와 하이퍼파라미터 민감도를 본다.
하나의 증상에 하나의 처방만 대응하지 않는다. 예를 들어 검증 성능이 나쁠 때 드롭아웃부터 추가하기보다 훈련 성능, 분할, 데이터 품질을 먼저 확인하는 순서가 중요하다.
손실 함수의 지형이라는 관점¶
매개변수 공간의 각 위치에 손실 값을 놓은 모습을 손실 지형이라고 부른다. 실제 신경망은 차원이 매우 높아 전체를 그릴 수 없지만, 왜 최적화 경로와 초기화가 중요하며 서로 다른 매개변수화가 같은 기능을 나타낼 수 있는지 생각하는 데 도움을 준다.
"국소 최솟값에 갇힌다"만으로 모든 학습 실패를 설명하기는 어렵다. 안장점, 평평한 방향, 기울기 크기 차이, 확률적 노이즈, 일반화가 함께 작용한다. 손실 표면 그림은 선택한 2차원 단면일 뿐 전체 기하 구조를 그대로 보여 주지 않는다.
반드시 구분할 것¶
- Adam, SGD는 매개변수 갱신 규칙이다.
- 잔차 연결은 정보와 기울기의 경로를 바꾸는 모형 구조 요소다.
- 배치 정규화, 층 정규화는 활성화를 정규화하는 층이다.
- 가중치 감쇠, 드롭아웃, 조기 종료는 일반화를 개선하려는 규제 전략이지만 작동 지점이 다르다.
- 좋은 최적화는 훈련 목적 함수를 잘 낮추는 것이고, 좋은 일반화는 새로운 데이터에서도 목적을 달성하는 것이다. 둘은 관련되지만 같은 개념은 아니다.
앞뒤 장과의 연결¶
2장에서 계산한 기울기가 이 장의 옵티마이저에 입력된다. 5장의 ResNet에서는 잔차 연결이 깊은 CNN을 학습하는 구조로 나타난다. 7장의 트랜스포머에서는 층 정규화와 잔차 연결이 반복되고, 12장의 심층 강화 학습도 불안정한 훈련 신호 위에서 같은 옵티마이저를 사용한다. 이후 모든 모델을 볼 때 "구조의 아이디어"와 "학습을 가능하게 한 안정화 방법"을 분리해 읽는다.
스스로 확인하기¶
- Adam, 잔차 연결, 드롭아웃은 각각 갱신, 신호 경로, 일반화 중 어디에 주로 작용할까?
- 훈련 손실과 검증 손실이 함께 높을 때와 둘의 차이가 계속 커질 때 점검할 가설은 어떻게 다를까?
- 기울기 클리핑이 기울기 폭발의 근본 원인을 항상 해결하지는 않는 이유는 무엇일까?
더 읽을 자료¶
- Goodfellow, Bengio, Courville, Deep Learning, 2016, 8장. 심층 모형 최적화를 다룬 공개 교재: https://www.deeplearningbook.org/contents/optimization.html
- Kingma and Ba, Adam: A Method for Stochastic Optimization, 2015: https://arxiv.org/abs/1412.6980
- Loshchilov and Hutter, Decoupled Weight Decay Regularization, 2019. AdamW의 원 논문: https://arxiv.org/abs/1711.05101
- Glorot and Bengio, Understanding the difficulty of training deep feedforward neural networks, 2010: https://proceedings.mlr.press/v9/glorot10a.html
- He et al., Deep Residual Learning for Image Recognition, 2016: https://arxiv.org/abs/1512.03385
- Ioffe and Szegedy, Batch Normalization, 2015: https://arxiv.org/abs/1502.03167
- Ba, Kiros, Hinton, Layer Normalization, 2016: https://arxiv.org/abs/1607.06450