Minseong Code Lab
← Projects
Bootcamp MissionNLP

한영 번역 Seq2Seq

Attention을 결합한 Seq2Seq 모델로 한영 번역을 구현한 실습

게시 2026-07-10
PythonPyTorchNLTKKoNLPyJupyter
Contents · 목차
  1. 무엇을 하는 미션인가
  2. 데이터와 어휘
  3. 구조
  4. 실험 비교 (검증셋)
  5. 한계

무엇을 하는 미션인가

한국어 문장을 영어로 번역하는 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 Seq2Seqmex10 Attentionmex11 Gatedmex12 Attention(200k)
BLEU-2 (Greedy)0.22510.37850.37910.4381
BLEU-2 (Beam=4)0.23220.4042—0.4716
chrF22.8640.0139.9248.12
ROUGE-L0.35660.50060.49820.5778
METEOR0.18220.30780.30690.3621
BERTScore0.85790.88900.88900.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 값으로 대체돼 있습니다
  • 각 구성은 한 번씩만 학습했습니다