이 글은 Joshua Starmer의 Sequence-to-Sequence (seq2seq) Encoder-Decoder Neural Networks, Clearly Explained!!!
를 정리한 것임을 밝힙니다.
자연어 처리(NLP) 분야에서 입력과 출력이 모두 시퀀스(연속된 단어들)인 문제는 매우 흔하다. 대표적인 예로는 다음과 같은 것들이 있다.
- 영어 문장을 한국어로 번역
- 질문에 대한 답변 생성
- 챗봇 응답 생성
- 오디오 신호를 텍스트로 변환 (예: 음성 인식)
이러한 문제를 해결하기 위한 대표적인 신경망 구조가 바로 Sequence-to-Sequence (Seq2Seq) 모델이다.
✅ Seq2Seq 모델 이란?
Seq2Seq는 이름 그대로 입력 시퀀스를 출력 시퀀스로 변환하는 모델이다. 이 모델은 크게 두 부분으로 나뉜다.
- 인코더(Encoder): 입력 시퀀스를 하나의 벡터(문맥 벡터, context vector)로 압축
- 디코더(Decoder): 문맥 벡터를 바탕으로 출력 시퀀스를 생성
이 구조는 문장 번역, 챗봇 응답, 문장 요약 등 다양한 NLP 작업에 활용된다.

예를 들어 위 그림에서 영어 문장 "Let's go"를 스페인어 "Vamos"로 번역한다고 하자.
인코더는 "Let's go"를 읽고, 전체 의미를 하나의 벡터로 압축한다.
디코더는 이 벡터를 바탕으로 "Vamos"라는 출력을 생성한다.
중요한 점은 입력과 출력 문장의 길이가 달라도 된다는 점이다.
- 영어 입력 문장: "Let's go"
- 임베딩 → 인코더 LSTM → context vector 생성
- context vector → 디코더 LSTM → "Vamos" 예측
- EOS가 나올 때까지 반복 예측
✅ 인코더 구조
인코더는 LSTM(Long Short-Term Memory) 또는 GRU(Gated Recurrent Unit) 같은 순환 신경망(RNN) 계열을 사용한다.
- 입력 문장을 단어 단위로 나눈 후 각 단어를 임베딩 벡터로 변환한다.
- 이 벡터들이 LSTM에 순차적으로 입력된다.
- 마지막 시점의 hidden state와 cell state가 context vector가 된다.
이 context vector는 문장의 정보를 압축한 형태로, 디코더의 초기 상태로 전달된다.
✅ 디코더 구조
디코더 또한 LSTM을 사용하며 다음과 같은 과정을 거친다.
- 시작 토큰(EOS 또는 SOS)을 입력으로 받는다.
- 이전 시점의 출력과 hidden state를 이용하여 다음 단어를 예측한다.
- 예측된 단어를 다시 입력으로 사용하며, EOS가 나올 때까지 반복한다.
각 시점에서의 출력은 Softmax 함수를 통해 전체 단어 중 하나로 선택된다.
✅ Teacher Forcing
학습 과정에서는 예측한 단어를 다음 입력으로 사용하는 대신, 실제 정답 단어(Ground Truth)를 다음 입력으로 사용하는데, 이를 Teacher Forcing이라 한다. 또한, <EOS> 문장 종료 토큰이 나오지 않더라도 정답 길이 만큼 출력이 되면 Decoding 을 종료한다.
이 방식은 학습 속도와 정확도를 높이는 데 매우 효과적이다!
✅ 정리
- Seq2Seq 모델은 입력과 출력 모두가 시퀀스인 문제를 해결하는 데 적합하다.
- 인코더는 입력 시퀀스를 압축하고, 디코더는 이를 바탕으로 출력을 생성한다.
- 입력과 출력 시퀀스의 길이가 달라도 자연스럽게 처리할 수 있다.
- 학습 시에는 Teacher Forcing을 활용하며, 추론 시에는 예측된 단어를 다음 입력으로 사용한다.
- 번역, 챗봇, 음성 인식, 요약 등 다양한 분야에 적용 가능하다.
- 실제 Seq2Seq 논문에서 사용된 모델 아키텍처
- 1000차원 임베딩 벡터
- 입력 160,000개 단어
- 출력 80,000개 단어
- LSTM: 4 layer & 1000 units
'Deep Learning' 카테고리의 다른 글
| Attention 메커니즘 (0) | 2024.05.15 |
|---|---|
| Transformer (0) | 2024.04.28 |
| [신경망] Neural Network와 Back propagation (1) | 2023.12.03 |
| LSTM 쉽게 이해하기 (0) | 2023.09.14 |
| RNN 쉽게 이해하기 (2) | 2023.09.14 |