English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

평범한 SGD는 ANDREA를 훈련시킬 수 없다

확률적 경사 하강법, 시작점

역전파는 모든 매개변수에 대해 그래디언트 g를 계산합니다. 평범한 확률적 경사 하강법(SGD)은 각 매개변수를 p -= lr * g로 업데이트합니다. 하나의 학습률, 단계당 하나의 방향, 과거 그래디언트에 대한 기억 없음.


평범한 SGD는 규모에서 두 가지 이유로 망가집니다:


1. 그래디언트의 크기가 매개변수에 따라 매우 다름. 드문 토큰의 임베딩은 대부분의 단계에서 아주 작은 그래디언트를 받지만, 레이어정규화 스케일은 큰 그래디언트를 받습니다. 하나의 학습률로는 둘 다 적합할 수 없습니다.

2. 그래디언트가 진동함. 16개 소스 코퍼스에서 나온 노이즈가 많은 미니배치가 매개변수를 왼쪽으로, 오른쪽으로, 다시 왼쪽으로 밀어냅니다. 일반 SGD는 스스로 싸우는 데 단계를 낭비합니다.


Adam (Kingma & Ba, 2015)은 매개변수당 두 개의 이동 평균으로 둘 다 해결합니다.

첫 번째 모멘트 & 두 번째 모멘트

m: 평활화된 방향

첫 번째 모멘트 m은 최근 그래디언트를 지수적으로 평균화합니다:


m = beta1 m + (1 - beta1) g


beta1 = 0.9로 설정합니다. 여러 단계 후에 m은 평활화된 방향을 담게 됩니다; 하나의 나쁜 배치가 이를 거의 움직이지 않습니다.


v: 평활화된 크기

두 번째 모멘트 v는 최근 제곱 그래디언트의 평균을 계산합니다:


v = beta2 v + (1 - beta2) g^2


beta2 = 0.999로 설정합니다. v는 각 매개변수의 기울기가 일반적으로 얼마나 큰지를 추적합니다. 기울기가 큰 매개변수는 큰 v를, 기울기가 작은 매개변수는 작은 v를 갖습니다.


매개변수별 적응 학습률

평활화된 방향을 평활화된 크기의 제곱근으로 나누면 모든 매개변수를 비교 가능한 기준으로 재조정합니다:


adam_step = m / sqrt(v + eps)


작은 기울기 임베딩은 확대되고; 큰 기울기 레이어정규화는 축소됩니다. 이제 하나의 전역 lr이 모든 매개변수에 적합합니다.

모멘트 읽기

이 단계에서 두 매개변수가 동일한 기울기 `g = 0.1`을 받았습니다. 매개변수 A는 여러 단계 동안 `v = 0.0001`을 누적했습니다; 매개변수 B는 `v = 1.0`입니다. `adam_step = g / sqrt(v + eps)`를 사용해 이번 단계에서 어떤 매개변수가 더 큰 업데이트를 받으며, Adam이 왜 그렇게 하려는지?

초기 단계에서 바이어스 보정이 필요한 이유

콜드-스타트 바이어스

m & v는 0에서 시작합니다. 1단계 후, m = 0.1 g_1 & v = 0.001 g_1^2. 두 추정치 모두 장기 평균을 극적으로 과소평가합니다. 보정 없이 최적화기는 소심하게 시작해 천천히 증가하며, 표현이 형성되는 소중한 초기 단계를 낭비합니다.


보정 방법

Adam은 각 추정치를 1 / (1 - beta^t)로 스케일링합니다. 여기서 t는 단계 번호입니다:


m_hat = m / (1 - beta1^t)


v_hat = v / (1 - beta2^t)


1단계에서 beta1 = 0.9일 때, 나누는 값 (1 - 0.9) = 0.1이므로 m_hat = m / 0.1 = 10 * m입니다. 편향 보정된 추정치는 장기 평균이 예측하는 것과 일치합니다. t가 증가함에 따라 beta^t는 0에 가까워지고, 보정값은 1에 가까워지며, 보정된 값과 보정되지 않은 값이 수렴합니다.

분리된 가중치 감소 (AdamW 혁신)

L2 정규화 vs 가중치 감소

전통적인 L2 정규화는 손실에 페널티를 추가합니다: L_total = L_data + (lambda / 2) sum(p^2). 역전파는 이 페널티를 기울기의 일부로 봅니다: g_total = g_data + lambda p. L2 항은 Adam의 mv 업데이트를 통해 흐르며, 매개변수별 크기에 따라 평활화되고 재조정됩니다.


Loshchilov & Hutter (2019)는 Adam을 통해 정규화기를 부드럽게 하면 둘 다 손상된다는 것을 증명했습니다. Adam의 적응적 스케일링은 큰 기울기 매개변수(여기서 decay가 과적합과 가장 강하게 싸워야 하는 곳)에서 weight decay를 줄이고, 작은 기울기 매개변수에서 이를 증폭시킵니다.


AdamW: Decay를 직접 적용하기

AdamW는 weight decay를 기울기에서 분리합니다. Decay는 매개변수 업데이트 중 각 매개변수에 직접 적용되며, m이나 v에는 절대 영향을 주지 않습니다:


p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)


이제 두 항이 각 단계를 이끕니다:


1. Adam 항: m_hat / (sqrt(v_hat) + eps)는 각 매개변수별 크기 기록에 따라 그래디언트 방향을 재조정합니다.

2. 감쇠 항: weight_decay * p는 Adam의 스무딩을 거치지 않고 모든 매개변수를 균일하게 0으로 축소합니다.


ANDREA-120M v2는 weight_decay = 0.01로 설정합니다. 매 단계마다 모든 매개변수가 Adam 항이 하는 것에 추가로 1%씩 0으로 축소됩니다.


AdamW Optimizer Step

왜 Decoupled가 중요한가

ANDREA-120M v1은 vanilla Adam(가중치 감쇠 없음)을 사용했으며 110K 스텝에서 반복 루프에 붕괴했습니다. v2는 AdamW를 `weight_decay = 0.01`로 사용해 일관된 다단락 텍스트를 생성했습니다. 설명하세요: (a) vanilla Adam에 없고 AdamW에 추가되는 구체적인 항은 무엇이며, (b) 그 항을 **gradient 내부**(고전 L2)에 넣는 것이 AdamW의 **gradient 외부(decoupled)** 배치보다 왜 더 나쁜지.

실증적 증거

v1 붕괴 (가중치 감쇠 없음)

ANDREA-120M v1은 vanilla Adam으로 165K 스텝 동안 훈련되었습니다. 샘플 출력:


- Step 80K: region region region region region region region

- Step 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

- Step 140K: games, games, games, games, games, games, games

- Step 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy


손실 수치가 합리적인 수준을 유지했습니다 (110K 스텝에서 EMA 최소 3.23, 무작위 확률 9.04 대비). 손실만으로는 반복 붕괴가 숨겨집니다: 한 토큰을 영원히 외우는 모델은 그 토큰이 나타나는 모든 스텝에서 낮은 교차 엔트로피를 달성합니다.


v2 안정성 (weight_decay = 0.01)

v2는 AdamW (그라디언트 클리핑, LR 워밍업, 샘플 모니터링 추가)를 도입했습니다. ~112K 스텝에서 생성된 샘플:


- Carolina parakeet was declared extinct in 1939 (사실적으로 정확함)

- The Fourier transform decomposes signals into frequency components (교과서 정의)

- Rain's rhythmic refrain, Rivulets on the window, Respite from life's pain (하이쿠 제약 충족)


외부 평가에서 v2 샘플을 9.5/10으로 평가하며 "이 규모에서 인상적인 일관성과 지식 유지"라고 칭했습니다.


AdamW 없이 12M이 생존한 이유는?

ANDREA-12M은 vanilla Adam으로 훈련되었으나 붕괴하지 않았습니다. 12M 파라미터에서 가중치 행렬은 Adam의 적응적 스케일링이 개별 가중치를 반복을 유발하는 폭주 크기로 밀어붙이지 않을 만큼 충분히 작게 유지됩니다. 120M 규모에서는 가중치 크기가 단계당 더 멀리 표류하고 누적됩니다. 균일한 감쇠는 0으로 향하는 일정한 복원력을 적용합니다. 모델이 확장될수록 decoupled weight decay가 더 중요해집니다.

weight_decay = 0.01 선택

왜 `weight_decay = 0.01`이 120M 파라미터 모델에서는 작동하지만 100배 큰 값(`weight_decay = 1.0`)은 훈련을 파괴할까요? 업데이트 규칙 `p -= lr * (adam_term + weight_decay * p)`에 대해 추론하세요. 대표적인 `p`를 선택하고, 단일 단계에 대해 `weight_decay = 1.0`을 대입한 후 몇 단계 후 `p`에 무슨 일이 일어나는지 설명하세요.

인접 활동

AdamW는 이 코스에서 세 가지 형제 활동과 연결됩니다:


- 활동 11: LR 워밍업 + 코사인 감쇠. AdamW만으로는 새로 초기화된 가중치에서 즉각적인 피크 학습률로부터 모델을 구할 수 없습니다. 워밍업은 2000단계 동안 lr을 점진적으로 증가시켜 AdamW의 편향 보정 및 가중치 감쇠가 표현을 안정화할 시간을 갖게 합니다.

- 활동 12: 그래디언트 클리핑. AdamW는 그래디언트가 제한된 크기를 가진다고 가정합니다. ANDREA의 bandit에서 소스 전환은 7에서 42단계마다 발생하며 가끔 그래디언트 스파이크를 생성합니다; 클리핑은 AdamW가 m, v, 또는 p를 건드리기 전에 L2 노름 1.0으로 이를 제한합니다.

- 활동 13: FP32 / FP16 / FP8 정밀도. AdamW는 매개변수당 m & v를 저장하여 가중치만의 메모리 사용량을 두 배로 만듭니다. FP16은 그 사용량을 반으로 줄이고; FP8은 다시 줄입니다. 정밀도 선택은 옵티마이저 안정성과 상호작용합니다.


AdamW, warmup, clipping, & precision은 네 잎 클로버를 형성합니다. 한 잎을 떨어뜨리면 ANDREA가 무너지는 것을 지켜보세요.

옵티마이저 반성

하나의 ANDREA-120M v1 샘플 (예: `region region region region`)을 선택하고 AdamW의 `weight_decay * p` 항이 step 0부터 매 스텝마다 적용되었다면 그 특정 실패 모드를 어떻게 방지했을지 설명하세요. 한 단락.