1 Sequence to Sequence Problem
1.1 sequence
- 단어들의 나열 (=문장, 문단 ..)
1.2 sequence to sequence
- 하나의 sequence를 다른 sequence로 바꾸는 것
- ex
- Machine Translation: 제 이름은 지은이고, 저는 학생입니다. → My name is Jieun and I am a student.
- Summarization: 긴 text → 짧은 text
- Dialog: 이전 대화 → 이후 대화
2 Seq2Seq Model (= Encoder-Decoder Architecture)
2.1 Seq2seq
- 시계열 데이터를 input으로 받아 다른 시계열 데이터들로 변환할 때 사용
2.2 Encoder-Decoder 구조
: Many to Many = Many to One (Encoder) + One to Many (Decoder)
- Encoder: input sequence → hidden representation
- Decoder: hidden representation → output sequence
- Encoder와 Decoder는 서로 parameter를 공유하지 않지만, 각각의 내부에서는 parameter를 공유
- Encoder의 마지막 hidden state = Decoder의 첫 번째 hidden state
2.3 Encoder와 Decoder의 학습 방법
이 부분에서는 Encoder-Decoder Model with LSTM을 예시로 사용
- Encoder Stage
- encoder stage에서의 output은 버린다
- input sequence의 모든 정보를 담고 있는 encoder의 마지막 hk와 ck → decoder의 input이 된다
- Decoder Stage
- decoder는 encoder에서 넘겨받은 encoder의 마지막 hidden state로 자신을 초기화한다
- decoder는 train, test시의 작동 방식이 다르다
- train: 더 빠르고 효율적으로 학습하기 위해 실제 데이터를 input으로 사용하는 teacher forcing 방법 사용. 하지만 이러한 방식은 실제 사용 환경과의 괴리를 가지므로 학습 초기에는 teacher forcing 방식을 사용하다가, 어느 정도 학습이 진행된 후에는 teacher forcing을 사용하지 않기도 함
- test: 이전 step에서의 output을 input으로 사용
2.4 Encoder-Decoder 구조의 문제점
- Encoder-Decoder model도 결국은 encoder가 decoder에게 전달해준 encoder의 마지막 hidden state에 의존하여 output sequence를 생성하게 됨
- But, 하나의 hidden state는 information bottleneck 현상으로 인해 실질적으로 input sequence의 모든 정보를 담고 있지 못함
- input sequence의 모든 정보를 전달하려면? → 모든 hidden state를 전달하자 !
⇒ Attention Mechanism의 등장
3 Seq2Seq Model with Attention
3.1 Motivation
- 기존의 bottleneck problem, long term dependency problem을 해결하기 위해
- decoder에게 input sequence에 관한 모든 정보를 넘겨주자 = encoder의 각 time step에서 생성되는 모든 hidden state vector를 decoder에 전달하자
- → decoder는 각 time step에서 전달받은 hidden state vector 중 필요로 하는 특정 부분에 ‘집중’하여 output 생성 (ex. 첫 번째 단어의 output을 생성할 때에는 input sequence의 첫 번째 단어에 더 관심을 가질 수 있도록 함)
3.2 Attention Mechanism
- attention vector: 해당 time step에서의 decoder hidden state vector와 모든 time step에서의 encoder hidden state vector 사이의 유사도
- context vector: encoder hidden state vector와 attention vector의 sumproduct한 attention의 output (=encoder hidden state vector의 가중 평균) → 현재 time step에서의 decoder hidden state와 유사한 encoder hidden state vector가 선별되어 있음
- output layer에서 output을 생성할 때에는 decoder hidden state vector와 context vector를 함께 input으로 사용
- → decoder의 hidden state vector는
- 1) attention vector를 통해 context vector를 생성하고
- 2) output layer의 input이 된다
- backpropagation을 통해 context vector가 해당 time step에서 필요한 encoder의 정보를 잘 선별하게끔 학습됨
3.3 Attention vector를 계산하는 여러 가지 방법
3.4 Attention Mechanism의 장점
- decoder가 전체 정보에서 필요한 부분에 집중할 수 있게 함으로써 NMT task performance를 향상시킴
- bottleneck problem 해결
- vanishing gradient problem 해결
- 해석 가능성
- attention distribution을 통해 decoder가 encoder의 hidden state 중 어느 곳에 집중하고 있는지 파악 가능
'NLP > Concept' 카테고리의 다른 글
[NLP] Machine Reading Comprehension (1) | 2023.06.06 |
---|---|
[NLP] BERT basic (0) | 2023.05.05 |
[NLP] Beam Search (0) | 2023.04.03 |
[NLP] Sequential Model (0) | 2023.04.03 |
[NLP] Word Embedding (0) | 2023.04.03 |
댓글