728x90
🔍 Transformer의 학습과정 (Training)
1. Encoder의 역할
- 입력: 주어진 텍스트 전체
- 번역 태스크에서는 번역 전 텍스트를, 분류 태스크에서는 분류할 텍스트, 질의응답(QA) 태스크에서는 **질문(Query)**을 입력으로 받습니다.
- 작동 방식:
- 텍스트를 **토큰 임베딩(Token Embedding)**과 **위치 임베딩(Position Embedding)**을 통해 고정된 크기의 벡터로 변환합니다.
- 이 벡터는 **Transformer의 인코더(Encoder)**를 거쳐 맥락(Context) 정보를 포함한 인코딩 벡터로 변환됩니다.
예시:
- 입력 문장: "고양이가 매트 위에 앉아있어"
- 인코더 입력: "고양이가 매트 위에 앉아있어" → 벡터 변환
2. Decoder의 역할
⭕ 학습 시 Decoder의 입력:
- 이전까지 예측된 토큰 셋을 입력으로 받습니다.
- Teacher Forcing 기법을 사용하여 모델이 예측한 값이 아닌 정답(Ground-truth) 토큰을 입력으로 사용합니다.
🧠 Teacher Forcing이란?
- Teacher Forcing은 학습 시 모델이 예측한 결과와 상관없이 정답(Ground-truth)을 강제적으로 사용하는 방법입니다.
- 이는 학습 안정성을 높여주지만, 추론(Inference) 시에는 사용하지 않습니다.
예시:
- t=1 단계:
- 입력: <start_token>
- 출력: "The" (예측 확률 분포와 원핫 벡터 Ground-truth를 사용해 Cross Entropy로 Loss 계산)
- 파라미터 업데이트
- t=2 단계:
- 입력: <start_token> + The
- 출력: "cat" (정답 토큰 사용)
- Loss 계산 및 파라미터 업데이트
- t=3 단계:
- 입력: <start_token> + The + cat
- 출력: "is"
- 반복하여 <eos> 토큰이 출력될 때까지 학습
🔎 Transformer의 추론 과정 (Inference)
🧠 Inference의 특징:
- 학습 시와 달리 Teacher Forcing을 사용하지 않습니다.
- 예측된 토큰을 그대로 다음 입력으로 사용합니다.
예시:
- t=1 단계:
- 입력: <start_token>
- 출력: "A" (예: argmax를 통해 가장 높은 확률의 토큰을 선택)
- t=2 단계:
- 입력: <start_token> + A
- 출력: "dog" (예측값 사용)
- t=3 단계:
- 입력: <start_token> + A + dog
- 반복하여 <eos> 토큰이 출력될 때까지 예측
🔍 훈련과 추론의 차이점:
728x90