번역을 생각해봅시다. "나는 학생이다"는 3 토큰, "I am a student"는 4 토큰입니다.
입력과 출력의 길이가 다릅니다. 이게 핵심 문제예요.
왜 기존 모델로 안 되는가:
- MLP: 고정 크기 입력 → 고정 크기 출력. 3단어 입력만 받게 만들면 5단어 문장은 처리 불가
- CNN: 필터 크기 고정, 출력 크기 고정. 가변 길이 시퀀스 생성 어려움
- RNN: 가변 길이 입력은 처리 가능! 하지만 출력도 가변 길이여야 함
필요한 것:
- 입력 시퀀스 길이: m (3, 10, 100 모두 가능)
- 출력 시퀀스 길이: n (m과 다를 수 있음)
- m \neq n인 상황을 자연스럽게 처리하는 구조
응용 분야:
- 기계 번역: 한국어 → 영어 (길이 다름)
- 요약: 긴 문서 → 짧은 요약
- 대화: 질문 → 답변 (길이 예측 불가)
- 음성 인식: 음성 프레임 → 텍스트 토큰
이 문제를 해결한 것이 Seq2Seq (Sequence-to-Sequence) 구조입니다.
왜 중요한가? 기존 신경망은 고정 크기 입력을 고정 크기 출력으로 매핑합니다. 그러나 기계 번역에서 "I love you"(3단어)는 "Je t'aime"(2단어)로, "Where is the nearest hospital?"(5단어)는 "Où est l'hôpital le plus proche?"(6단어)로 번역됩니다.
입력과 출력의 길이가 다르고 예측 불가능합니다. Seq2Seq는 인코더가 입력을 고정 길이 벡터로 압축하고, 디코더가 이를 기반으로 가변 길이 출력을 생성하여 이 문제를 해결합니다. 이 아이디어가 기계 번역, 요약, 대화 시스템 등 모든 시퀀스 변환 태스크의 기반이 됩니다.