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

un

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

모델이 얼마나 놀라야 할까?

Loss Pipeline: Logits To Cross-Entropy


Logits에서 확률로

12개의 트랜스포머 블록 후, ANDREA-120M은 각 토큰 위치당 vocab_size 개의 숫자 벡터를 생성합니다: logits입니다. ANDREA-120M의 경우 vocab_size = 8449이므로, 모든 위치에서 8449개의 logits를 출력합니다. Logits는 정규화되지 않은 점수로, 일부는 양수, 일부는 음수이며 1로 합산되도록 제한되지 않습니다.


Softmax는 로짓을 확률 분포로 변환합니다:


p_i = exp(logit_i) / sum_j exp(logit_j)

Softmax 적용 후, 모든 8449개의 숫자가 0과 1 사이에 위치하며 합이 1이 됩니다. 모델은 가능한 모든 다음 토큰에 확률을 할당합니다.


교차 엔트로피 손실

훈련에는 손실 함수가 필요합니다: 모델의 예측이 주어진 정답에 대해 얼마나 잘못되었는지를 측정하는 숫자입니다. 교차 엔트로피는 언어 모델링에 적합합니다:


loss_t = -log(p_correct_token_t)

모델이 실제 다음 토큰(훈련 데이터에 있는 토큰)에 대해 예측한 확률을 가져옵니다. 그 확률의 음의 로그를 취합니다. 이것이 한 위치에 대한 손실입니다.


왜 음의 로그인가요

세 가지 특성이 -log(p)를 자연스러운 손실 함수로 만듭니다:


- -log(1) = 0: 모델이 올바른 토큰을 100% 확신으로 예측할 때, 손실은 0입니다.

- -log(0) = ∞: 모델이 올바른 토큰에 0 확률을 부여할 때, 손실은 무한대입니다. (실제로는 소프트맥스가 정확히 0을 출력하지 않으므로 손실은 유한하지만 크기가 큽니다.)

- 단조성: 올바른 토큰에 대한 예측 확률이 증가함에 따라 손실이 부드럽게 감소합니다.


올바른 답변에 대한 신뢰도가 높을수록 손실이 낮아집니다. 훈련 목표는 간단합니다: 실제 다음 토큰에 대한 예측 확률을 최대화하세요.


시퀀스별 손실

ANDREA는 길이 1024(컨텍스트 창)의 시퀀스에서 훈련합니다. 각 시퀀스는 1024개의 다음 토큰 예측을 생성합니다. 시퀀스 손실은 모든 위치에 대해 평균화됩니다:


sequence_loss = mean(-log(p_correct_t)) for t in 0..1023

그 다음 시퀀스 손실은 배치 전체에서 평균화됩니다 (ANDREA-120M은 batch_size = 8을 사용합니다). 훈련 스텝당 하나의 스칼라 숫자입니다. 이 숫자가 손실 곡선에 플롯되는 값입니다.

한 위치에 대한 손실 계산

한 훈련 위치에서 ANDREA-120M은 실제 다음 토큰에 대해 소프트맥스 확률 0.4를 출력합니다 (다른 토큰들이 나머지 0.6을 받았습니다). 이 단일 위치에 대한 교차 엔트로피 손실을 계산하세요. 공식과 산술을 보여주세요. 그런 다음 한 문장으로 이것이 확신 있는 예측인지 불확실한 예측인지 설명하세요.

Perplexity = exp(loss)

더 친근한 척도

2.0이나 3.43 같은 손실 값은 모델이 무엇을 할 수 있는지 즉시 전달하지 않습니다. Perplexity는 손실을 더 직관적인 척도로 변환합니다:


perplexity = exp(loss)

Perplexity는 명확한 질문에 답합니다: 모델이 효과적으로 선택하는 동등하게 가능성 있는 토큰 수는 몇 개인가? Perplexity가 7이라면 모델은 각 위치에서 7개의 그럴듯한 다음 토큰 중에서 선택하는 것처럼 행동합니다. Perplexity가 1이라면 완벽한 예측입니다.


일반적인 Loss-Perplexity 쌍


LossPerplexity느낌상으로는
0.01.0완벽한 예측
1.02.7~3개의 그럴듯한 토큰 중 선택하기
2.07.4ANDREA-12M 최종 SMMA 영역
3.020.1합리적인 텍스트지만 불확실
3.4330.9ANDREA-120M v1 최소값 (다듬기 전)
5.0148초기 훈련, 어휘 분포 학습
9.048449ANDREA-120M의 어휘에 대한 무작위 추측 기준

Perplexity는 손실 값을 맥락에 맞게 해석합니다: 손실 2.0은 모델이 8449개가 아닌 ~7개의 토큰 중에서 효과적으로 선택한다는 의미입니다.


무작위 추측 기준선

아무것도 모르는 모델이 균등하게 추측하면 모든 토큰에 1/V 확률을 할당합니다. 여기서 V = vocab_size:


p_uniform = 1 / V
loss      = -log(1/V) = log(V)

V = 8449인 ANDREA-120M의 경우:


loss_uniform = ln(8449) ≈ 9.04

V = 2305인 ANDREA-12M의 경우:


loss_uniform = ln(2305) ≈ 7.74

이 기준선보다 높은 손실은 모델이 무작위보다 더 나쁜 성능을 보인다는 의미입니다. 이 기준선보다 낮은 손실은 모델이 무언가를 학습했다는 의미입니다: 균등 분포보다 더 작은 토큰 하위 집합에 확률 질량을 집중합니다.

손실 값 읽기

ANDREA-120M v1은 110K 스텝에서 EMA 손실 최소값 3.43에 도달했습니다 (붕괴 전에). 계산하세요: (a) 손실 3.43에서의 퍼플렉시티; (b) 무작위 추측 기준선(ln(8449) ≈ 9.04)보다 몇 배 더 나은 이 손실 값을 퍼플렉시티 비율로 표현하세요. 산술 과정을 보여주세요.

스텝 수준 노이즈 스무딩

원시 손실은 노이즈가 많음

스텝당 손실이 좌우로 출렁입니다. ANDREA의 bandit은 7-42 스텝마다 다른 소스를 선택합니다; 일부 소스(사전 정의)는 쉬운 손실을 생성하고, 다른 소스(gutenberg 단락)는 더 어려운 손실을 생성합니다. 원시 스텝 손실을 스텝 번호에 대해 플롯하면 혼란스러운 산포도가 됩니다.


평활화된 수정 이동 평균(Smoothed Modified Moving Average, SMMA)은 노이즈를 완화하고 추세를 드러냅니다. ANDREA의 훈련 프록시는 SMMA를 다음과 같이 계산합니다:


**SMMA[0]  = loss[0]**
**SMMA[t]  = (SMMA[t-1] * (N-1) + loss[t]) / N**

N = 100(ANDREA의 기본 평활화 창)일 때, 각 새로운 SMMA 값은 이전 SMMA의 99%와 새 스텝 손실의 1%를 혼합합니다. 갑작스러운 스파이크는 흡수되고, 지속적인 변화는 점진적으로 나타납니다.


왜 단순 평균을 사용하지 않을까?

마지막 100단계에 대한 단순 이동 평균은 100개의 손실 값을 저장해야 합니다. SMMA는 하나의 값(누적 평균)과 하나의 상수(윈도우 크기)만 저장합니다. 메모리 효율적이고, 계산이 간단하며, 곡선을 읽기에 충분히 부드럽습니다.


다른 스무딩 가중치는 다른 질문에 답합니다:


- N = 10: 단기 변화를 추적; 단계 전환 시 유용

- N = 100: ANDREA의 기본값; 중기 진행 상황을 추적

- N = 1000: 장기 추세만; 훈련 끝에서 유용


ANDREA가 추적하는 것

100 스텝마다 훈련 프록시가 현재 SMMA, 원시 손실, 스텝 번호, 및 소스별 분석을 포함한 loss.json을 작성합니다. training.ai.unturf.com/dashboard 대시보드가 10초마다 이 파일을 폴링합니다. 외부 뷰어는 실시간 진행 상황을 볼 수 있으며; 대시보드는 읽기 전용입니다.

ANDREA-12M의 실제 곡선

SMMA 2.0에 도달한 레시피


StepsAvg LossNotes
0--2.5K4.50랜덤 초기화, 초기 학습
2.5K--5K3.88구조 단계에서의 빠른 감소
5K--10K3.30일관성 경계에 접근 중
10K--20K2.80밴디트가 최적 혼합 발견
20K--25K2.40정체 --- 데이터 고갈
25K--30K2.50Hermes 데이터 도입 + LR 재시작
30K--35K2.35Hermes 통합, 새로운 최저점
35K--40K2.104-arm focus, 가파른 하강
40K--43.6K2.00지식 영역, SMMA 2.0 이하

세 가지 단계가 두드러집니다:


1. 가파른 초기 하강 (0-10K). 손실이 4.50에서 3.30으로 떨어지며, 모델이 어휘 분포와 기본 턴 구조를 학습합니다. 무작위 확률 기준선 ln(2305) ≈ 7.74가 이 곡선 위에 높이 위치합니다; 임베딩이 안정화되면 모델이 확률 질량을 빠르게 집중합니다.


2. 정체 구간 (20K-25K). 손실이 2.40에서 멈춥니다. 밴디트가 현재 소스 믹스에서 여유 공간이 소진되었습니다. 25K 단계에서 Hermes 데이터가 추가되고, LR 워ーム 재시작이 정체를 깨뜨렸습니다.


3. 최종 하강 (35K-43.6K). 커리큘럼이 16개 소스에서 4개(hermes3-general + dictionary + gutenberg + chat)로 좁혀짐. 전체-arm bandit보다 더 가파른 손실 감소. 최종 SMMA: 2.0.


ANDREA-120M v1: 경고의 곡선

동일한 어휘 계산: ln(8449) ≈ 9.04. ANDREA-120M v1은 110K 스텝에서 SMMA 3.43(최소값)에 도달한 후 발산:


StepsEMA LossTrend
26K--40K4.29수렴 중
70K--85K3.60최적 영역
85K--110K3.43최소값
110K--125K3.54발산 중
140K--155K4.05발산 중
155K--165K4.54붕괴

전체적으로 수치적으로 합리적인 손실 값 (3.43은 무작위 기준 9.04보다 훨씬 낮음). 하지만 샘플은 반복 붕괴: Budy Budy Budy Budy. 손실은 오해의 소지가 있는 이야기를 했음; 샘플 감사는 그렇지 않았음.


v2의 일관성 게이트 조기 종료(활동 78)는 병렬 신호를 추가했습니다: 빅그램 다양성, 트리그램 다양성, 영어 단어 존재, 문자 다양성. 네 가지 점수가 모두 5개의 연속 샘플 동안 30 미만으로 유지되면 훈련이 자동 중단됩니다. 이 신호는 v1을 132K 단계에서 잡아냈을 것이며, 3.8일의 컴퓨트 시간을 절약했을 것입니다.

각 단계가 알려주는 것

ANDREA-12M의 손실 곡선(4.50 → 3.30 → 2.40 정체 → 2.00 최종)을 보고, 어느 단계가 모델이 어휘 분포를 학습하는 단계인지, 어느 단계가 밴디트가 혼합 소스 여유 공간이 소진된 것을 나타내는지, & 어느 단계가 좁혀진 커리큘럼 초점을 반영하는지 설명하세요. 단계당 한 문장씩, 구체적인 단계 범위를 참조하세요.

120M v1 레슨

두 개의 독립적인 신호

ANDREA-120M v1은 110K 스텝에서 SMMA 3.43에 도달했습니다. 수치적으로: 무작위 추측보다 273배 우수 (perplexity 31 vs vocab size 8449). 곡선상으로는 훌륭해 보입니다.


110K 스텝에서의 샘플::


''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

손실(Loss)과 일관성(Coherence)은 독립적인 신호입니다. 낮은 손실은 모델이 확률 질량을 효과적으로 집중시킨다는 의미입니다. 일관성은 모델이 인간이 읽을 수 있는 텍스트를 생성한다는 의미입니다. 첫 번째가 두 번째를 암시하지 않습니다.


왜 이 간극이 존재하는가

모델은 다음과 같이 손실을 낮출 수 있습니다:


1. 실제 언어 패턴 학습 (좋음): 주어-동사 일치, 일반적인 구문, 사실적 연관성.

2. 구조적 아티팩트 암기 (나쁨): 고빈도 반복 패턴, 데이터셋 특유의 기벽, 퇴화된 어트랙터.


둘 다 손실을 줄입니다. 첫 번째는 인간이 좋아하는 샘플을 생성합니다. 두 번째는 Budy Budy Budy Budy를 생성합니다. 훈련 목표만으로는 이를 구분할 수 없습니다.


ANDREA-120M v3 Polish: 손실과 일관성이 만난 곳

v3 폴란드(112K 단계 이후) 후, ANDREA-120M은 다음을 생성합니다:


Step 112,584, loss 0.30, ppl 1:: Return ONLY translated blocks with their placeholders, preserving format: [BLOCK_TYPE SECTION/STEP] __BLOCK_N__ <translated content>


> [extinction prompt]
< black spider montano는 살아있고, carolina parakeet은 멸종했다.

두 사실 모두 정확함. Carolina parakeet은 1939년에 멸종 선언됨; black spider monkey는 현존함. 낮은 손실(0.30) AND 일관된 사실적 회상.


단계 112,500, 손실 1.94, ppl 7::


> Python 프로젝트에서 오래된 패키지를 어떻게 찾나요?
< `pip list --outdated`를 사용해 pip 패키지 목록을 확인하세요...

더 높은 손실 (1.94 → ppl 7)이지만 훈련 데이터에서 올바른 도구가 나타남. 56% 훈련 지점에서 표현 유창성은 여전히 발전 중.


두 신호 규율

현대 훈련 파이프라인은 둘 다 모니터링합니다:


- 손실 곡선. 모델이 정량적으로 무언가를 학습하고 있는지 알려줍니다.

- 샘플 감사. 모델이 학습한 것이 유용한지 알려줍니다.


v2는 일관성 게이트 조기 중단(활동 78)을 추가했습니다. v3 폴리시는 손실 값이 아닌 샘플 감사에 의해 촉발된 커리큘럼 교란입니다. 손실만으로는 필요하지만 결코 충분하지 않습니다.

가상의 실행 진단

새로운 훈련 실행에서 100K 스텝 동안 SMMA 손실이 8.0 → 3.5 → 2.8로 감소합니다. 100K 스텝에서의 샘플 감사 결과: 빅그램 다양성 12 (낮음), 트리그램 다양성 8 (낮음), 영어 단어 존재 18 (높음), 문자 다양성 7 (높음). 모델이 무엇을 하고 있을 가능성이 큽니까? 훈련을 계속할지, 중단할지, 아니면 방향을 전환할지? 3-4문장으로 이유를 설명하세요.