학습할때는 정답 데이터를 미리 주고
1. 영어 원문 + 한글 정답(디코더 입력 : 앞에 <sos>를 붙힘)
2. 이걸 토대로 한글 정답(디코더 타깃/정답 :뒤에 <eos> 를 붙혀서 끝임을 알림)
3. 이걸 토대로 학습할떄 디코더가 매 시점 ‘다음 토큰’을 맞추면서, <eos>를 통해 어디서 끝나는지도 학습
4. 추론때는 영어 원문만 입력 i like apple
5. 이 원문을 lstm으로 요약상태(히든h,셀c)를 만듦
6. 디코더에서 매 시점 다음 단어의 확률분포를 예측
7. 시작은<sos> 디코더가 다음 단어 확률분포를 예측(6번과정)하고, 거기서 선택(argmax/beam 등)된 단어(예: “나는”)를 다음 시점 디코더 입력으로 넣으며, 동시에 LSTM 상태(h,c)도 업데이트한다. 이 과정을 반복해 다음 값을 예측한다.
8. 마지막으로 디코더에서 <eos>를 예측하면 끝
<sos> 부터 시해 한 토큰씩 한국어를 생성<eos>가 나오면 멈추는 Seq2Seq 번역기를 학습/추론까지 구현<sos> 정답문장<eos>디코더는 "다음 단어 맞추기"를 해야 하므로 입력은 한 칸 앞(
<sos>)시작, 정답은 한 칸 뒤 (<eos>)맞춤
teacher forcing의 기본 형태
<sos> + 한국어<eos>개념:
<sos> vs <eos>
<sos>: 디코더가 “지금부터 문장 생성 시작”하라고 받는 시작 신호(입력 쪽)
<eos>: 디코더가 “문장 끝”을 예측하도록 하는 종료 신호(정답 쪽)
왜<eos>가 target이냐?모델이 “언제 멈출지”도 학습해야 하니까, 끝 토큰을 맞추는 문제를 만들어줘야 함.
<sos> <eos> 안날아가게함인코더는 보통 “마지막 상태”를 요약으로 쓰니까, 뒤쪽이 실제 단어로 끝나게(pre padding) 만드는 선택이 흔함.
디코더는 왼→오 생성이라 정렬이 쉬워 post padding이 흔함.
핵심: 영어 문장을 읽고 마지막에 남는 요약 정보(h,c)를 뽑아냄.
핵심: 학습은 “번역 생성”이 아니라 다음 단어 맞추기 문제로 바뀜.
학습용 디코더는 "정답 문장 전체"를 한번에 넣지만 추론은 정답이 없어서
1. 입력 : 현재 토큰 1개 + 이전 상태(h,c)
2. 출력 : 다음 토큰 분포 + 업데이트된 상태(h,c)
"한 스텝씩" 생성하기 위한 전용 구조
<sos>로 시작<eos>가 나오면 종료핵심: 추론은 결국 영어 → (h,c) 요약 →
<sos>부터 한 단어씩 생성 →<eos>에서 멈춤
<sos>+정답을 입력으로 받아 다음 토큰을 맞추며 파라미터 업데이트.<sos>부터 시작해 (현재 토큰, (h,c))로 다음 토큰 분포와 새 (h,c)를 반복 생성하다 <eos>에서 종료.