Seq2Seq: LSTM 인코더-디코더로 문장을 문장으로 사상하다
한 줄 요약
DNN은 입력과 출력의 차원이 고정되어야 한다는 제약 때문에 “가변 길이 시퀀스 → 가변 길이 시퀀스” 문제를 직접 풀 수 없었다. 이 논문은 인코더 LSTM이 입력 전체를 고정 차원 벡터 하나로 읽어 들이고, 디코더 LSTM이 그 벡터에서 출력 시퀀스를 자기회귀로 풀어내는 구조로 이 제약을 우회한다 — 그리고 입력 문장을 뒤집는 단순한 트릭 하나로, 순수 신경망 번역 시스템이 처음으로 대규모 MT 태스크에서 구문 기반 SMT를 넘어섰다.
핵심 기여
- 인코더-디코더 분해: 조건부 확률을 인코더의 마지막 은닉 상태로 얻은 고정 차원 표현 에 대한 자기회귀 분해로 모델링한다.
각 는 80k 목표 어휘에 대한 softmax이고, <EOS> 토큰으로 가변 길이 출력을 처리한다. 입력용과 출력용으로 서로 다른 LSTM 두 개를 쓴다.
-
아키텍처: 4층 deep LSTM(얕은 것보다 유의미하게 좋음), 층당 1000셀, 1000차원 임베딩, 입력 어휘 160k / 출력 어휘 80k, 총 384M 파라미터. 문장 하나가 8000개의 실수(4층 × 2방향 상태 × 1000)로 표현된다.
-
입력 뒤집기 트릭: 대신 로 학습하면 테스트 perplexity가 5.8→4.7, BLEU가 25.9→30.6으로 뛴다. 소스와 타깃의 대응 단어 간 평균 거리는 그대로지만, **최소 시간 간격(minimal time lag)**이 크게 줄어 앞쪽 단어들 사이에 역전파가 “통신을 수립”하기 쉬워진다는 설명이다. LSTM 리뷰에서 본 오차 소멸 분석이 그대로 실전 트릭으로 이어진 사례. 흥미롭게도 뒤집기는 긴 문장에서도 성능을 올렸다.
-
학습: 모멘텀 없는 SGD, 학습률 0.7 고정 후 5에폭부터 반 에폭마다 절반으로 감소(총 7.5에폭), 배치 128. 그래디언트 노름이 5를 넘으면 클리핑. 미니배치 내 문장 길이를 비슷하게 맞춰 2배 속도 향상. 8개 GPU에 층별 파이프라인 + softmax 분산으로 초당 6,300단어, 약 10일 학습.
-
디코딩: 단순 좌→우 beam search. beam 1로도 상당히 잘 되고 beam 2에서 이득 대부분을 얻는다. SMT 베이스라인의 1000-best 리스트를 LSTM 점수와 평균 내 재순위화하는 사용법도 함께 제시.
주요 결과
- WMT’14 En→Fr: 뒤집힌 LSTM 5개 앙상블 + beam 12로 BLEU 34.81 vs SMT 베이스라인 33.30 — 순수 신경망 번역이 대규모 태스크에서 SMT를 넘은 첫 사례. SMT 1000-best 재순위화로는 36.5(당시 최고 시스템 37.0에 근접).
- 어휘 밖(OOV) 단어가 있으면 불리한 조건임에도 달성한 수치라는 점을 저자들이 강조한다.
- 35단어 이하 문장에서는 성능 저하가 없고, 가장 긴 문장들에서도 저하가 크지 않다.
- 학습된 문장 표현의 PCA 시각화는 어순에 민감하고 능동/수동태에는 불변인 클러스터링을 보여준다 — 고정 벡터가 단순한 bag-of-words 이상을 담는다는 증거.
계보에서의 위치
LSTM이 “긴 시퀀스를 기억할 수 있는 부품”을 제공했다면, Seq2Seq는 그 부품으로 “시퀀스를 시퀀스로 사상하는 일반적인 프레임”을 만들었다 — 번역뿐 아니라 요약, 대화, 파싱까지 같은 틀로 풀리게 된 출발점이다. 그러나 입력 전체를 고정 차원 벡터 하나에 욱여넣는 병목은 문장이 길어질수록 한계가 명확했고, 같은 시기 Bahdanau et al.이 이 병목을 어텐션으로 해소하면서 다음 단계가 열린다. 이 논문의 인코더-디코더 어휘(인코더, 디코더, beam search, <EOS>)는 그대로 Transformer 시대까지 이어진다.