한영 번역 Seq2Seq
Attention을 결합한 Seq2Seq 모델로 한영 번역을 구현한 실습
Repository개인 저장소
malit9999/nlp-ko-en-translation-seq2seq-mission-11(새 탭에서 열림)Contents · 목차
무엇을 하는 미션인가
한국어 문장을 영어로 번역하는 Seq2Seq 모델을 직접 구현하고, Attention을 붙였을 때 무엇이 달라지는지 비교한 미션입니다. 사전학습 번역 모델을 쓰지 않았습니다.
데이터와 어휘
Kiwi로 한국어를 토큰화했고, 고유 어휘는 한국어 24,479 · 영어 25,160개였습니다.
min_freq 임계값을 적용해 각각 19,155 / 18,833으로 줄였고,
특수 토큰은 SOS=0 / EOS=1 / PAD=2 / UNK=3 / NUM=4로 뒀습니다.
문장 길이는 95 퍼센타일 기준으로 잘랐습니다.
구조
EncoderRNN(GRU)과 DecoderRNN을 만들고, Attention 버전은 AttnDecoderRNN으로 분리했습니다.
학습에는 teacher forcing 비율을 두고 마지막에는 0으로 낮춥니다(tf_end=0.0).
실험 비교 (검증셋)
| 지표 | mex9 Seq2Seq | mex10 Attention | mex11 Gated | mex12 Attention(200k) |
|---|---|---|---|---|
| BLEU-2 (Greedy) | 0.2251 | 0.3785 | 0.3791 | 0.4381 |
| BLEU-2 (Beam=4) | 0.2322 | 0.4042 | — | 0.4716 |
| chrF | 22.86 | 40.01 | 39.92 | 48.12 |
| ROUGE-L | 0.3566 | 0.5006 | 0.4982 | 0.5778 |
| METEOR | 0.1822 | 0.3078 | 0.3069 | 0.3621 |
| BERTScore | 0.8579 | 0.8890 | 0.8890 | 0.9024 |
구성은 mex9가 hidden=256, mex10 이후가 hidden=512 + Bidirectional이고,
mex12는 학습 데이터를 20만 건으로 늘린 버전입니다.
mex9 → mex10 구간에서 모든 지표가 크게 올랐습니다 — BLEU-2 기준 0.2251 → 0.3785. 다만 이 구간에서는 Attention 추가와 함께 hidden size가 256에서 512로, 인코더가 Bidirectional로 바뀌었습니다. 여러 설정이 동시에 변경돼 이 실험만으로 상승분을 Attention 단독 효과로 분리할 수 없습니다. 이후 mex11은 mex10과 거의 같은 값에 머물렀고, 학습 데이터를 20만 건으로 늘린 mex12에서 다시 올랐습니다.
한계
- 검증셋 기준이며 테스트셋 평가가 없습니다. BLEU-2는 2-gram 기준이라 일반적인 BLEU-4 값과 직접 비교할 수 없습니다
- mex11의 Beam 결과가 없어 표에서 Greedy 값으로 대체돼 있습니다
- 각 구성은 한 번씩만 학습했습니다