LLM 학습의 본질: 확률 분포 예측
주어진 입력(문맥)에서 다음 단어(토큰)가 나올 확률 분포를 예측하는 모델
ex)
Input: ENFP 스타일로 바꿔줘: 나도 좋아해.
Output: 헐~ 나도 진짜 좋아해~!
모델은 이 Input 다음에 등장할 문장으로 "헐~"이 등장할 확률이 가장 높아지도록 조정함.
학습 과정 요약
Step 1. 학습 데이터 준비
"ISTP 스타일로 바꿔줘: 나도 그거 진짜 좋아하는데! "
-> "나도 좋아해"
Step 2. 모델 입력 형태로 인코딩 (tokenization)
텍스트는 모두 숫자 토큰으로 바뀌고, 각 토큰마다 다음 토큰의 확률을 예측하도록 함.
ex) ISTP -> 1234, 스타일 -> 0812, ...
input 처리: "ISTP 스타일로 변경: 나도 그거 진짜 좋아하는데! " 한 번에 인코딩
output 처리: "나도 좋아해" 를 1 token씩 왼쪽부터 순서대로 예측
예측 방식: P(token_t | context + token₁, token₂, ..., token_{t-1})
-> t번째 토큰이 등장할 확률은, 지금까지 본 모든 토큰(문맥)을 기반으로 계산된다.
목표 출력: "나도 좋아해"
step (t) | 앞 문맥 (token₁ ~ token_{t-1}) | 예측할 토큰 (token_t) | 예측 의미 |
t = 1 | ISTP 스타일로 변경: 나도 그거 진짜 좋아하는데! | "나" | 첫 토큰은 "나"일 확률이 높아야 함 |
t = 2 | … 나 | "도" | "도"가 올 확률이 가장 높아야 함 |
t = 3 | … 나도 | " " 또는 "좋" | 다음 토큰은 "좋"일 확률이 높음 |
t = 4 | … 나도 좋 | "아" | ... |
... | ... | ... | ... |
t = n | … 나도 좋아 | "해" | 마지막 토큰까지 순차 예측 |
이런 순차적 예측 확률을 모두 곱해서 전체 문장의 확률을 평가함.
학습이란 결국:
정답 토큰의 확률이 최대화되도록 모델 파라미터(수백만 개)를 조정하는 과정
이 값이 최대가 되도록 만드는 게 Loss 줄이기 = 학습의 본질.
Step 3: Forward + Loss 계산 (Forward pass)
- 모델은 input sequence를 보고 output sequence를 한 글자씩 생성
- 생성된 결과와 정답 output을 비교해서 Cross Entropy Loss 계산
Cross Entropy Loss란?
모델이 예측한 확률 분포와 실제 정답 분포가 얼마나 다른지를 측정하는 수치.
즉, 모델이 정답에 얼마나 가까운 확률을 줬는가?를 수치화해서 평가하는 지표.
정답: "좋아요" 인 상황
단어 | 모델의 예측 확률 |
좋아해 | 0.7 ✅ |
싫어해 | 0.1 |
고마워 | 0.1 |
먹고싶어 | 0.1 |
이 상황에서의 손실은? -> 모델이 "좋아해"에 0.7의 확률을 줬으니 꽤 잘 예측 한 것.
Cross Entropy는 이 확률에 -log를 취해서 계산.
1에 가까울수록 Loss가 낮아 좋은 예측이고, 0에 가까울수록 Loss가 높아 틀린 예측.
전체 문장에서는?
문장이 여러 토큰으로 되어 있기 때문에
→ 모델은 각 토큰에 대해 예측을 하고,
각 토큰별 Cross Entropy를 전부 더해서 평균을 낸다.
Step 4: Backpropagtaion (역전파)
- 틀린 예측을 줄이기 위해 내부 파라미터(수백만 개)를 업데이트함
모델이 위해서 구한 손실값을 바탕으로 각 파리미터에 대한 기울기를 계산하고, 경사 하강법을 이용해서 모델의 파라미터를 업데이트함.
전체 흐름
[입력 문장]
↓
[모델 (Transformer 등)]
↓
[예측 확률 분포]
↓
[정답과 비교 → Cross Entropy Loss]
↓
[역전파 → 가중치 미분]
↓
[파라미터 업데이트]
↓
[모델 성능 향상]
'Computer Science > AI' 카테고리의 다른 글
PERT와 LoRA란 무엇인가 (0) | 2025.03.24 |
---|