본문 바로가기

Deep Learning

Sequence-to-Sequence(Seq2Seq)

이 글은 Joshua StarmerSequence-to-Sequence (seq2seq) Encoder-Decoder Neural Networks, Clearly Explained!!! 

를 정리한 것임을 밝힙니다.

 


자연어 처리(NLP) 분야에서 입력과 출력이 모두 시퀀스(연속된 단어들)인 문제는 매우 흔하다. 대표적인 예로는 다음과 같은 것들이 있다.

  • 영어 문장을 한국어로 번역
  • 질문에 대한 답변 생성
  • 챗봇 응답 생성
  • 오디오 신호를 텍스트로 변환 (예: 음성 인식)

이러한 문제를 해결하기 위한 대표적인 신경망 구조가 바로 Sequence-to-Sequence (Seq2Seq) 모델이다.

 

 Seq2Seq 모델 이란?

Seq2Seq는 이름 그대로 입력 시퀀스를 출력 시퀀스로 변환하는 모델이다. 이 모델은 크게 두 부분으로 나뉜다.

  1. 인코더(Encoder): 입력 시퀀스를 하나의 벡터(문맥 벡터, context vector)로 압축
  2. 디코더(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) 계열을 사용한다.

  1. 입력 문장을 단어 단위로 나눈 후 각 단어를 임베딩 벡터로 변환한다.
  2. 이 벡터들이 LSTM에 순차적으로 입력된다.
  3. 마지막 시점의 hidden state와 cell state가 context vector가 된다.

이 context vector는 문장의 정보를 압축한 형태로, 디코더의 초기 상태로 전달된다.

디코더 구조

디코더 또한 LSTM을 사용하며 다음과 같은 과정을 거친다.

  1. 시작 토큰(EOS 또는 SOS)을 입력으로 받는다.
  2. 이전 시점의 출력과 hidden state를 이용하여 다음 단어를 예측한다.
  3. 예측된 단어를 다시 입력으로 사용하며, 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