복원이 아니라 변환이 목적이다
Auto-Encoder는 입력을 압축했다가 “같은 것”으로 복원하는 것이 목표였다. Seq2Seq(Sequence-to-Sequence)는 다르다 — 입력 시퀀스를 받아 다른 시퀀스로 변환하는 것이 목표다. 대표적으로 기계 번역(한국어 문장 → 영어 문장), 텍스트 요약(긴 글 → 짧은 요약), 초기 버전 챗봇(질문 → 답변) 등이 이 구조를 쓴다.
입력은 시간에 따라 변하는 시계열이나 문장(자연어)이고, 출력은 입력과 길이가 다를 수도 있는 새로운 시퀀스다 — 예를 들어 한국어 5단어 문장이 영어로는 7단어가 될 수 있다.
Encoder-Decoder 구조와 Context Vector
Seq2Seq는 RNN 계열(주로 LSTM) 두 개를 이어 붙인다.
구성 요소 | 역할 |
|---|---|
Encoder | 입력 시퀀스를 순서대로 읽어 들이며 정보를 계속 요약한다 |
Context Vector | Encoder가 입력 전체를 다 읽은 뒤 마지막 시점에 남긴 Hidden State 하나 — 입력 전체의 압축된 의미를 담은 벡터 |
Decoder | 이 Context Vector를 받아, 처음부터 새 시퀀스를 한 단어(토큰)씩 생성한다 |
Auto-Encoder의 Latent Space와 비슷한 역할을 하는 것이 이 Context Vector다. 다만 Auto-Encoder는 같은 데이터를 복원하지만, Seq2Seq는 이 압축된 의미를 바탕으로 전혀 다른 시퀀스를 새로 만들어낸다는 점이 다르다.
고정 길이 병목 문제
Seq2Seq의 구조적 한계는 여기서 드러난다. 입력 문장이 3단어든 30단어든, Encoder는 그 전체 정보를 길이가 고정된 Hidden State 벡터 하나에 욱여넣어야 한다. 문장이 길어질수록 앞부분의 정보가 이 하나의 벡터 안에서 희석되거나 손실되기 쉽다. 이를 고정 길이 병목(Fixed-length Bottleneck)이라 부른다.
예를 들어 30단어짜리 문장을 번역할 때, Decoder는 사실상 “30단어를 하나로 압축한 요약본” 하나만 보고 처음부터 끝까지 문장을 만들어내야 한다. 사람이 긴 문단을 한 단어로 요약한 메모만 보고 그대로 다시 써내려가는 것과 비슷한 어려움이다.
이 병목을 해결하려는 시도가 이어졌다 — Decoder가 매 단어를 생성할 때마다 Encoder의 “모든” 시점 정보를 다시 참고하되, 그중 관련 있는 부분에 더 집중하도록 하자는 것이다. 이 아이디어가 바로 다음 글에서 다룰 Attention이고, 이후 Transformer로 이어진다.
정리
Seq2Seq는 Encoder가 입력 시퀀스를 하나의 Context Vector로 압축하고, Decoder가 이를 바탕으로 새 시퀀스를 생성하는 구조다. 기계 번역·요약처럼 입력과 다른 길이·형태의 출력이 필요한 문제에 적합하지만, 긴 입력을 고정 길이 벡터 하나에 압축해야 하는 병목이 성능의 한계로 작용한다. 이 병목을 넘어서려는 것이 Attention과 Transformer의 출발점이다.
참고 자료
Sequence to Sequence Learning with Neural Networks (Sutskever, Vinyals, Le, NeurIPS 2014) — Seq2Seq 원 논문, LSTM 기반 Encoder-Decoder 구조 (2026-08-07 확인)
댓글 0
댓글을 불러오는 중…