학습: 경사하강과 역전파
2장의 신경망은 가중치만 잘 정해 주면 거의 어떤 함수든 흉내 낼 수 있다. 문제는 그 "잘 정한 가중치"를 사람이 손으로 찾을 수 없다는 것이다. Llama 3 8B에는 숫자가 약 80억 개 있다. 이 장은 그 숫자들을 데이터로부터 자동으로 맞춰 가는 방법, 즉 학습을 다룬다. 오차를 하나의 숫자(손실)로 재고, 그 숫자를 줄이는 방향(기울기)을 연쇄법칙으로 계산하고, 조금씩 내려간다. 이 단순한 절차 하나가 손글씨 인식부터 GPT까지 모든 현대 신경망을 학습시킨다.
- MSE와 교차 엔트로피를 정의하고, 분류에서 교차 엔트로피가 확신에 찬 오답을 더 강하게 벌하는 이유를 기울기로 설명할 수 있다.
- 경사하강의 갱신식과 학습률의 역할, 너무 큰 학습률이 발산하는 조건(\(\eta > 2/\lambda_{\max}\))을 안다.
- 계산 그래프에서 순전파·역전파를 손으로 따라가며 연쇄법칙으로 기울기를 구하고, 수치 미분으로 검증할 수 있다.
- 미니배치 SGD, 에폭, 배치 크기와 기울기 노이즈의 관계를 이해한다.
- Momentum·RMSProp·Adam의 갱신식을 비교하고, warmup + cosine 학습률 스케줄을 설계할 수 있다.
- 초기화가 깊은 망의 활성값·기울기 크기를 어떻게 좌우하는지, 과적합과 정규화가 무엇인지, LLM 학습이 실제로 어떤 규모인지 안다.
학습이란 무엇인가: 손실을 줄이는 탐색
신경망은 입력 \(x\)를 받아 예측 \(\hat y = f_\theta(x)\)를 내놓는 함수다. 여기서 \(\theta\)는 모든 가중치와 편향을 한 줄로 늘어놓은 거대한 벡터다. 학습(training)은 정답이 붙은 데이터 \(\{(x_i, y_i)\}\)를 보고 "예측이 정답과 얼마나 다른가"를 재는 함수, 곧 손실 함수(loss function) \(\mathcal L(\theta)\)를 가장 작게 만드는 \(\theta\)를 찾는 일이다.
파라미터가 2개라면 \(\mathcal L(\theta_1,\theta_2)\)를 지도 위의 고도처럼 그릴 수 있다. 이것을 손실 지형(loss landscape)이라 부른다. 파라미터가 80억 개면 80억 차원 지형이 되어 그림으로 그릴 수 없지만, 원리는 같다. 어디가 가장 낮은지 전체를 볼 수는 없으니, 현재 위치에서 발밑의 기울기만 보고 내리막으로 한 걸음씩 걷는다. 이것이 경사하강이다.
이 장의 순서는 이 루프를 그대로 따른다. 먼저 손실을 어떻게 정의할지(2절), 기울기 방향으로 얼마나 움직일지(3절), 기울기를 어떻게 효율적으로 구할지(4절)를 본 뒤, 데이터를 쪼개 쓰는 미니배치(5절), 더 똑똑한 옵티마이저(6절), 학습률 일정(7절), 그리고 깊은 망과 일반화에서 생기는 문제(8·9절)를 다룬다. 마지막으로 LLM 학습이 실제로 어떤 규모인지 숫자로 확인한다.
손실 함수: MSE와 교차 엔트로피
손실 함수는 "얼마나 틀렸는가"를 하나의 0 이상 숫자로 바꾸는 규칙이다. 어떤 규칙을 고르느냐에 따라 모델이 무엇을 중요하게 배울지가 달라진다. 가장 많이 쓰는 두 가지를 보자.
평균 제곱 오차 (회귀)
집값, 온도처럼 연속값을 맞추는 회귀(regression)에서는 차이의 제곱을 평균 낸 MSE(Mean Squared Error)를 쓴다.
교차 엔트로피 (분류)
분류에서는 모델이 클래스마다 점수(로짓(logit)) \(z_k\)를 내고, 소프트맥스로 확률 \(p_k = e^{z_k}/\sum_j e^{z_j}\)를 만든다. 정답 클래스가 \(c\)라면 손실은 정답에 준 확률의 음의 로그다. 이것이 교차 엔트로피(cross-entropy)이며, 7장에서 볼 LLM의 사전학습 손실도 정확히 이것이다(정답 = 실제 다음 토큰).
분류인데 MSE를 쓰면 안 될까? 쓸 수는 있지만 학습이 나빠진다. 시그모이드/소프트맥스 출력은 확률이 0이나 1 근처로 포화되면 기울기 \(p(1-p)\)가 0에 가까워진다. MSE는 이 포화 기울기를 그대로 곱하므로, 모델이 "정답일 확률 0.001"이라고 확신에 차서 틀린 상황에서 오히려 기울기가 거의 0이 되어 고쳐지지 않는다. 교차 엔트로피는 −log의 기울기 \(-1/p\)가 포화 항을 정확히 상쇄해서, 크게 틀릴수록 기울기가 −1에 가까운 최대값을 유지한다. 아래에서 직접 확인해 보자.
손실 함수 비교: MSE vs 교차 엔트로피
참 분포 \(q\)와 모델 분포 \(p\) 사이의 교차 엔트로피 \(H(q,p) = -\sum_k q_k \log p_k\)는 "\(p\)를 기준으로 만든 부호로 \(q\)에서 나온 사건을 적을 때 필요한 평균 비트(나트) 수"다. 정답이 원-핫이면 \(-\log p_c\)만 남는다. \(H(q,p) = H(q) + D_{\text{KL}}(q\,\|\,p)\)이므로 교차 엔트로피 최소화는 모델 분포를 데이터 분포에 KL 발산 의미로 가깝게 만드는 일이다. 언어 모델의 퍼플렉시티 \(e^{\mathcal L_{\text{CE}}}\)는 이 값을 "평균 몇 개 후보 중에서 헷갈리는가"로 바꾼 것이다(7장).
경사하강법과 학습률
다변수 함수 \(\mathcal L(\theta)\)의 기울기(gradient) \(\nabla_\theta \mathcal L = (\partial\mathcal L/\partial\theta_1, \dots, \partial\mathcal L/\partial\theta_n)\)는 현재 위치에서 함수가 가장 가파르게 증가하는 방향을 가리키는 벡터다(크기는 그 방향의 경사도). 그러니 반대 방향으로 조금 움직이면 손실이 줄어든다. 이것이 경사하강법(gradient descent)이다.
문제는 "충분히 작은"이 얼마냐다. 너무 작으면 영원히 걸리고, 너무 크면 골짜기를 건너뛰어 반대편 벽으로 튕겨 나간다. 가장 단순한 1차원 이차 함수 \(\mathcal L = \tfrac{\lambda}{2}\theta^2\)으로 정확히 계산할 수 있다. 기울기가 \(\lambda\theta\)이므로 갱신은 \(\theta_{t+1} = (1-\eta\lambda)\theta_t\)다. 곱해지는 인자 \(|1-\eta\lambda|\)가 1보다 작아야 수렴하므로
아래 시뮬레이터에서 네 가지 손실 지형 위에 공을 놓고 굴려 보자. 등고선이 촘촘한 곳이 가파른 곳이다. 협곡 지형은 한 방향 곡률이 다른 방향의 10배인 타원형 골짜기로, 실제 신경망 손실 지형에서 흔한 "조건수가 나쁜" 상황이다. 로젠브록은 휘어진 바나나 모양 골짜기, 다중 극소는 출발점에 따라 다른 웅덩이에 빠지는 지형이다.
손실 지형 위의 경사하강
2차원 그림 때문에 "나쁜 극소에 갇히는 것"이 가장 큰 위험처럼 보이지만, 수백만 차원에서는 사정이 다르다. 기울기가 0인 임계점에서 헤시안 고윳값이 모두 양수일 확률은 차원이 커질수록 급격히 작아져, 대부분의 임계점은 어떤 방향으로는 오르막, 다른 방향으로는 내리막인 안장점(saddle point)이다. 큰 신경망에서 찾아지는 극소들은 손실 값이 서로 비슷하다는 경험적·이론적 결과가 많다(Dauphin et al., 2014; Choromanska et al., 2015). 실제로 더 골치 아픈 것은 평평한 고원과 나쁜 조건수다.
역전파: 연쇄법칙으로 기울기 나르기
경사하강에는 모든 파라미터에 대한 \(\partial\mathcal L/\partial\theta_j\)가 필요하다. 파라미터마다 \(\theta_j\)를 살짝 바꿔 손실을 다시 재는 수치 미분은 파라미터가 \(n\)개면 순전파를 \(n\)번(중심 차분이면 \(2n\)번) 해야 한다. 80억 번은 불가능하다. 역전파(backpropagation)는 순전파 한 번 + 역전파 한 번, 대략 순전파 비용의 3배로 모든 기울기를 정확히 구한다(Rumelhart, Hinton & Williams, 1986). 비결은 미적분의 연쇄법칙과 중간값 재사용이다.
각 연산 노드는 자기 국소 기울기만 알면 된다. 곱셈 \(m = w\cdot x\)는 \(\partial m/\partial w = x\), \(\partial m/\partial x = w\) — 상대편 입력을 그대로 넘긴다. 덧셈은 기울기를 1배로 복사해 나눠 준다. 시그모이드는 \(\sigma'(z) = \sigma(z)(1-\sigma(z))\)로, 순전파에서 계산한 \(a\)를 재사용한다. 그래서 역전파는 순전파 때의 중간값을 메모리에 저장해야 하고, 이것이 학습이 추론보다 메모리를 훨씬 많이 쓰는 이유 중 하나다(10절의 활성값 메모리).
계산 그래프에서 순전파·역전파 따라가기
PyTorch·JAX의 loss.backward()는 순전파 때 실행된 연산을 테이프(그래프)에 기록해 두고, 이 시뮬레이터와 똑같이 거꾸로 훑는다. 이것을 역방향 모드 자동 미분(reverse-mode autodiff)이라 한다. 출력이 스칼라(손실) 하나이고 입력(파라미터)이 수십억 개일 때 역방향 모드가 압도적으로 유리하다. 행렬 연산으로 보면 \(Y = XW\)의 역전파는 \(\partial L/\partial X = (\partial L/\partial Y)\,W^\top\), \(\partial L/\partial W = X^\top(\partial L/\partial Y)\)로, 순전파 행렬곱 1번에 역전파 행렬곱 2번이 필요하다. 학습 FLOPs가 "파라미터당 토큰당 6"(순전파 2 + 역전파 4)인 이유다(7장의 \(C \approx 6ND\)).
미니배치 SGD: 에폭, 배치, 노이즈
지금까지는 손실 \(\mathcal L(\theta)\)를 정확히 안다고 가정했다. 하지만 \(\mathcal L\)은 데이터 전체에 대한 평균이고, 데이터가 수조 토큰이면 기울기 한 번 구하는 데 전체를 다 볼 수는 없다. 그래서 무작위로 뽑은 작은 묶음, 미니배치(mini-batch) \(\mathcal B\)의 평균 기울기로 전체 기울기를 추정한다. 이것이 확률적 경사하강법(SGD, Stochastic Gradient Descent)이다.
노이즈는 단점만 있는 것이 아니다. 계산이 싸서 같은 시간에 훨씬 많은 스텝을 밟을 수 있고, 약간의 흔들림이 날카로운 극소에서 빠져나와 평평한(일반화가 잘 되는) 극소로 가게 돕는다는 관찰도 있다. 반면 배치가 작으면 바닥 근처에서 계속 떨려 정확히 수렴하지 못하므로, 학습률을 점점 줄여야 한다(7절). 아래는 점 데이터에 직선 \(\hat y = wx + b\)를 MSE로 피팅하는 가장 단순한 경우다. 파라미터가 \((w, b)\) 두 개뿐이라 오른쪽에 손실 지형 전체를 그릴 수 있다.
선형회귀를 미니배치 SGD로 학습
GPU는 행렬곱을 크게 묶을수록 효율이 좋아서, 실제로는 하드웨어가 허락하는 한 배치를 키운다. 배치를 \(k\)배 키우면 기울기 노이즈가 줄어드는 만큼 학습률도 키울 수 있다(SGD는 대략 선형, Adam은 대략 \(\sqrt k\)배 규칙이 경험적으로 알려져 있다). 다만 어느 임계 배치 크기(critical batch size)를 넘으면 배치를 늘려도 필요한 스텝 수가 더 줄지 않아 계산만 낭비된다(McCandlish et al., 2018). LLM 사전학습의 배치가 "수백만 토큰"인 것은 이 경계 근처를 노린 것이다.
옵티마이저: Momentum, RMSProp, Adam
3절의 협곡 지형에서 본 문제, 즉 가파른 방향 때문에 학습률을 낮춰야 하고 그 때문에 완만한 방향으로는 기어가는 문제를 고치는 두 가지 아이디어가 있다. 하나는 관성(지그재그 성분은 상쇄되고 일관된 방향 성분은 누적된다), 다른 하나는 좌표별 보폭 조절(기울기가 늘 큰 좌표는 보폭을 줄이고 작은 좌표는 키운다)이다.
| 옵티마이저 | 갱신식 (\(g_t = \nabla\mathcal L(\theta_t)\)) | 아이디어 |
|---|---|---|
| SGD | \(\theta \leftarrow \theta - \eta g_t\) | 기울기 방향으로 그대로 |
| Momentum | \(v \leftarrow \mu v + g_t,\;\; \theta \leftarrow \theta - \eta v\) | 속도를 누적(지수 이동 합). \(\mu = 0.9\)면 실효 보폭 약 10배 |
| RMSProp | \(s \leftarrow \rho s + (1-\rho) g_t^2,\;\; \theta \leftarrow \theta - \eta\, g_t / (\sqrt{s}+\epsilon)\) | 좌표별로 최근 기울기 크기(RMS)로 나눔 |
| Adam | \(m \leftarrow \beta_1 m + (1-\beta_1) g_t,\;\; v \leftarrow \beta_2 v + (1-\beta_2) g_t^2\) \(\hat m = m/(1-\beta_1^t),\; \hat v = v/(1-\beta_2^t),\;\; \theta \leftarrow \theta - \eta\, \hat m/(\sqrt{\hat v}+\epsilon)\) | Momentum + RMSProp + 초기 편향 보정 |
Adam(Adaptive Moment Estimation; Kingma & Ba, 2015)은 기울기의 1차 모멘트(평균, \(m\))와 2차 모멘트(제곱 평균, \(v\))를 지수 이동 평균으로 추적한다. \(\hat m/\sqrt{\hat v}\)는 기울기 부호가 일관되면 ±1 근처, 들쭉날쭉하면 0 근처가 되는 "신호 대 잡음비" 같은 양이라, 한 스텝의 크기가 대략 \(\eta\)로 제한된다. 기울기의 절대 크기에 둔감하다는 이 성질 덕분에, 층마다 기울기 스케일이 수십 배씩 다른 Transformer에서도 학습률 하나로 잘 돌아간다. 편향 보정은 \(m, v\)를 0으로 시작해 초반에 값이 작게 나오는 것을 \(1/(1-\beta^t)\)로 키워 주는 장치다. 기본값은 \(\beta_1 = 0.9\), \(\beta_2 = 0.999\)(LLM은 흔히 0.95), \(\epsilon = 10^{-8}\)이다.
옵티마이저 레이스
L2 정규화(9절)를 손실에 \(\tfrac{\lambda}{2}\|\theta\|^2\)로 더하면 그 기울기 \(\lambda\theta\)도 Adam의 \(\sqrt{\hat v}\)로 나뉘어, 기울기가 큰 파라미터일수록 정규화가 약해지는 이상한 효과가 생긴다. AdamW(Loshchilov & Hutter, 2019)는 감쇠를 갱신에서 따로 \(\theta \leftarrow \theta - \eta\big(\hat m/(\sqrt{\hat v}+\epsilon) + \lambda\theta\big)\)로 적용한다. GPT-3, Llama 계열 등 대부분의 LLM이 AdamW(\(\beta_2 = 0.95\), 가중치 감쇠 0.1 내외)로 학습된다.
학습률 스케줄: warmup과 cosine decay
학습 내내 같은 학습률을 쓰는 경우는 드물다. 대형 모델 학습의 표준은 두 단계다. 처음 수백~수천 스텝 동안 0에서 최대값까지 선형으로 올리는 warmup, 그 뒤 코사인 곡선을 따라 최소값까지 내리는 cosine decay다.
학습률 스케줄 설계
초기화와 기울기 소실·폭주
역전파는 층마다 국소 기울기를 곱한다. 층이 \(L\)개면 입력 쪽 기울기는 \(L\)개 인자의 곱이다. 각 인자가 평균적으로 0.9면 50층 뒤 \(0.9^{50} \approx 0.005\), 1.1이면 \(1.1^{50} \approx 117\)이다. 곱셈의 사슬은 1에서 조금만 벗어나도 지수적으로 사라지거나(기울기 소실(vanishing gradient)) 터진다(기울기 폭주(exploding gradient)). 순전파의 활성값도 똑같다.
폭 \(n\)인 층 \(h' = \phi(Wh)\)에서 \(W\)의 원소가 분산 \(\sigma_w^2\)인 독립 난수라면, 선형 부분 \(u = Wh\)의 분산은 \(\operatorname{Var}[u] = n\,\sigma_w^2\,\mathbb E[h^2]\)다. 층을 지나도 크기가 유지되려면 \(n\sigma_w^2\)가 활성화 함수에 맞는 값이어야 한다.
아래 시뮬레이터는 폭 100인 완전연결층을 최대 50개 쌓고, 표준정규 입력 64개를 실제로 통과시킨 뒤(순전파), 출력 쪽에 무작위 기울기를 넣고 거꾸로 전파한다(역전파). 막대는 층별 활성값과 기울기의 표준편차를 로그 축에 그린 것이다.
깊은 망의 활성값·기울기 분포
초기화를 잘해도 학습 중 가끔 기울기가 튀는 일(loss spike)이 생긴다. 그래서 LLM 학습은 거의 항상 전체 기울기 벡터의 노름이 임계값(보통 1.0)을 넘으면 그 길이로 잘라 내는 기울기 클리핑(gradient clipping) \(g \leftarrow g\cdot\min(1, c/\|g\|)\)를 쓴다. 방향은 유지하고 보폭만 제한한다.
과적합과 일반화
학습 데이터의 손실을 줄이는 것은 수단일 뿐, 진짜 목표는 처음 보는 데이터에서 잘 맞히는 것, 곧 일반화(generalization)다. 모델이 너무 단순하면 데이터의 패턴을 못 잡고(과소적합(underfitting)), 너무 유연하면 패턴뿐 아니라 우연한 노이즈까지 외워 버린다(과적합(overfitting)). 그래서 데이터를 학습용과 검증용(validation)으로 나누고, 검증 손실을 보며 모델과 하이퍼파라미터를 고른다.
과적합을 막는 장치를 통틀어 정규화(regularization)라 한다.
- L2 정규화 / weight decay: 손실에 \(\lambda\|\theta\|^2\)를 더해 큰 가중치를 벌한다. 매끈한 함수를 선호하게 된다. 다항식에서는 출렁임이 바로 큰 계수에서 나오므로 효과가 극적이다.
- 드롭아웃(dropout; Srivastava et al., 2014): 학습 중 매 스텝 무작위로 뉴런의 일부(예: 10%)를 0으로 끈다. 특정 뉴런에 의존하지 못하게 해 여러 하위 망의 앙상블 같은 효과를 낸다. 추론 때는 끈다.
- 조기 종료(early stopping): 학습 손실은 계속 내려가도 검증 손실이 다시 오르기 시작하면 그때 멈추고 가장 좋았던 체크포인트를 쓴다.
- 데이터 늘리기: 가장 확실한 방법. 아래 시뮬레이터에서 점을 추가해 보면 같은 고차 다항식도 덜 출렁인다.
다항식 피팅: 차수, 정규화, 학습/검증 오차
고전적 통계는 "파라미터 수 > 데이터 수면 과적합"이라고 말하지만, 현대 신경망은 데이터보다 파라미터가 훨씬 많아도 잘 일반화한다. 파라미터가 데이터 수를 넘어서는 지점 이후 검증 오차가 다시 내려가는 이중 하강(double descent) 현상(Belkin et al., 2019)과 SGD의 암묵적 정규화가 부분적인 설명이다. 한편 LLM 사전학습은 데이터가 워낙 많아 대부분의 토큰을 한 번(1 에폭 이하)만 본다. 이 영역에서는 과적합보다 과소적합이 문제여서, 사전학습 LLM은 드롭아웃을 거의 쓰지 않는다. 학습 손실과 검증 손실이 거의 같이 내려간다.
실제 규모: LLM은 어떻게 학습하는가
지금까지의 모든 요소가 LLM 사전학습에 그대로 들어간다. 손실은 다음 토큰 교차 엔트로피, 옵티마이저는 AdamW, 스케줄은 warmup + cosine(또는 WSD), 기울기 클리핑 1.0, 초기화는 작은 정규분포 + 잔차 경로 스케일링. 달라지는 것은 숫자의 크기다. Llama 3 405B 논문(Meta, 2024)이 공개한 값을 보자.
| 항목 | Llama 3 405B (2024) | 비고 |
|---|---|---|
| 학습 토큰 | 약 15.6T | 대부분 1 에폭 이하 |
| 옵티마이저 | AdamW | \(\beta_2 = 0.95\) 계열이 흔함 |
| 최대 / 최소 학습률 | 8×10⁻⁵ / 8×10⁻⁷ | cosine, 약 120만 스텝 |
| warmup | 8,000 스텝 | 전체의 1% 미만 |
| 배치 크기 | 4M → 8M → 16M 토큰 | 학습 중 단계적으로 키움 |
| 계산량 | 약 3.8×10²⁵ FLOPs | H100 최대 약 16,000개 |
배치 크기가 "토큰 수"로 적혀 있는 것에 주목하자. 길이 8,192 토큰 시퀀스 2,048개면 약 1,600만 토큰이다. 한 스텝의 기울기는 이 1,600만 개 다음-토큰 예측의 손실 평균에서 나온다. 이렇게 큰 배치를 GPU 수천 개에 나눠 계산하고(데이터 병렬), 기울기를 모아 평균을 낸 뒤 모두가 같은 갱신을 한다.
혼합 정밀도와 옵티마이저 상태 메모리
현대 학습은 혼합 정밀도(mixed precision)를 쓴다. 행렬곱은 BF16(16비트, 9장)으로 빠르게 하고, 작은 갱신이 반올림으로 사라지지 않도록 가중치의 마스터 사본과 Adam 상태는 FP32로 유지한다. 학습률 10⁻⁵ 수준의 갱신은 BF16 가중치(유효 숫자 약 3자리)에 더하면 그대로 묻혀 버리기 때문이다.
| 모델 | 파라미터 | BF16 가중치 (추론) | 학습 상태 16 B/param | H100 80 GB 최소 개수 (상태만) |
|---|---|---|---|---|
| GPT-2 small | 124M | 0.25 GB | 2.0 GB | 1 |
| Llama 3 8B | 8.03B | 16 GB | 128 GB | 2 |
| Llama 3 70B | 70.6B | 141 GB | 1.13 TB | 15 |
| Llama 3 405B | 405B | 810 GB | 6.5 TB | 81 |
8B 모델조차 학습 상태가 GPU 한 장(80 GB)에 들어가지 않는다. 그래서 가중치·기울기·옵티마이저 상태를 GPU들에 나눠 저장하는 ZeRO / FSDP(Rajbhandari et al., 2020), 층을 나누는 파이프라인 병렬, 행렬 하나를 쪼개는 텐서 병렬을 조합한다. 활성값 메모리는 역전파 때 일부 중간값을 다시 계산하는 활성값 재계산(activation checkpointing)으로 줄인다. 계산량과 토큰 수의 관계, 그리고 모델 크기와 데이터 양을 어떻게 나눌지에 대한 스케일링 법칙은 7장에서 이어진다.
핵심 정리
- 학습은 손실 \(\mathcal L(\theta)\)를 최소화하는 최적화다. 회귀는 MSE, 분류와 언어 모델은 교차 엔트로피 \(-\log p_c\)를 쓰며, 소프트맥스+CE의 로짓 기울기는 \(p - y\)로 확신에 찬 오답에서도 사라지지 않는다.
- 경사하강 \(\theta \leftarrow \theta - \eta\nabla\mathcal L\)은 \(\eta < 2/\lambda_{\max}\)일 때 수렴한다. 조건수 \(\lambda_{\max}/\lambda_{\min}\)가 크면 지그재그와 느린 수렴이 생긴다.
- 역전파는 계산 그래프를 거꾸로 훑으며 국소 기울기를 곱하는 연쇄법칙의 효율적 구현이다. 순전파 중간값을 저장해야 하며, 비용은 순전파의 약 2배(합쳐서 3배)다.
- 미니배치 SGD는 전체 기울기의 불편 추정을 쓰며 노이즈 분산은 배치 크기에 반비례한다. 1 에폭 = 데이터 한 바퀴.
- Momentum은 관성으로 진동을 상쇄하고, RMSProp은 좌표별로 보폭을 정규화하며, Adam(W)은 둘을 결합한다. LLM 학습은 AdamW + warmup + cosine decay + 기울기 클리핑이 표준이다.
- 깊은 망은 초기화 분산이 \(1/n\)(Xavier, tanh) 또는 \(2/n\)(He, ReLU)에서 벗어나면 활성값·기울기가 층마다 지수적으로 사라지거나 폭주한다. 잔차 연결과 정규화가 근본적인 해결책이다.
- 과적합은 검증 손실로 감지하고 L2/weight decay, 드롭아웃, 조기 종료, 데이터 확대로 막는다. LLM 사전학습은 1 에폭 이하라 과소적합 쪽에 가깝다.
- 혼합 정밀도 AdamW 학습은 파라미터당 약 16바이트가 필요해, 8B 모델도 GPU 여러 장에 상태를 나눠야 한다.
확인 퀴즈
1. 이진 분류에서 정답이 y = 1인데 모델이 p = σ(z) = 0.001을 냈다. 로짓 z에 대한 기울기 크기를 비교하면?
2. 손실의 헤시안 고윳값이 0.5 ~ 40 사이에 있다. 일반 경사하강이 발산하지 않는 학습률의 상한은?
3. 계산 그래프에서 덧셈 노드 z = m + b와 곱셈 노드 m = w·x가 역전파 때 하는 일로 옳은 것은?
4. 미니배치 크기를 16에서 64로 키웠다. 미니배치 기울기 노이즈의 표준편차는 대략 어떻게 변하는가?
5. 50층 ReLU 망을 Xavier(σ² = 1/n)로 초기화했다. 순전파 활성값 크기는 층을 지날수록 어떻게 되는가?
6. 70B 파라미터 모델을 혼합 정밀도 AdamW로 학습할 때, 활성값을 제외한 가중치·기울기·옵티마이저 상태 메모리는 대략?