GPT와 같은 언어 모델은 어떻게 "다음 단어"를 예측할 수 있을까요?
그리고 그 예측은 어떤 수학적인 방식으로 학습되는 걸까요?
오늘은 GPT의 언어 모델 학습 과정에서 사용되는 loss 함수와
그것이 우리가 잘 아는 Cross Entropy Loss와 어떻게 연결되는지 쉽게 풀어보겠습니다.
GPT는 문장을 한 단어씩 읽어나가며 "다음에 어떤 단어가 올까?"를 예측합니다.
예를 들어 문장이 아래와 같다면:
"I am a student"
모델은 이렇게 학습됩니다:
입력 | 정답 (예측할 단어) |
---|---|
"I" | "am" |
"I am" | "a" |
"I am a" | "student" |
즉, 이전까지 본 단어들을 보고 다음 단어를 맞히는 것이 GPT의 기본 원리입니다.
논문에서는 다음과 같은 수식으로 언어 모델의 학습 목표를 표현합니다:
이 수식의 의미는:
"앞 단어들을 보고 다음 단어가 나올 확률 을 최대한 크게 만들자"
이 수식은 사실 우리가 흔히 쓰는 Cross Entropy Loss와 동일한 개념입니다.
차이점은 표현 방식만 다르고, 수학적 원리는 동일합니다.
Cross Entropy는 다음과 같이 정의됩니다:
즉, 예측한 단어 확률 분포 중에서 정답 단어의 확률을 추출한 뒤
그 로그를 취하고 음수로 변환해서 손실로 사용합니다.
→ 이건 결국, 위 수식의 부호를 바꾼 형태일 뿐입니다.
입력 토큰을 임베딩하고 위치 정보를 더함:
Transformer Decoder가 여러 층을 거쳐 문맥 벡터 생성:
마지막 출력 을 어휘 전체 단어와 비교하여 점수(logits) 계산:
softmax를 거쳐 예측 확률 분포 획득:
정답 단어의 위치에 있는 확률을 뽑아 Cross Entropy Loss 계산:
GPT는 이전 단어들을 입력으로 넣고, 다음 단어의 확률을 softmax로 계산한 뒤,
정답 단어에 가까울수록 낮은 Cross Entropy Loss를 갖도록 학습됩니다.