0. 시작하기 전
Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
최근 10년 동안의 자연어 처리 연구 중에 가장 영향력이 컸던 3가지를 꼽는 서베이에서 여러 연구자들이 꼽았던 연구가 바로 2014년에 발표됐던 sequence-to-sequence (Seq2seq) + Attention 모델입니다 (Sutskev
nlpinkorean.github.io
다음의 글을 참고해서 작성했습니다.
1. Seq2seq
Sequence-to-sequence(* Seq2seq) 모델은 기계 번역이나 문서 요약등의 문제에서 큰 성공을 거둔 모델입니다.
이 Seq2seq 모델은 아래의 논문들을 통해 처음 소개되었습니다:
https://emnlp2014.org/papers/pdf/EMNLP2014179.pdf
Seq2seq 모델은 아이템의 나열(* 단어, 글자, 이미지들의 단편 등)을 입력으로 받아 또 다른 아이템의 나열을 출력하는 모델을 말합니다.
신경망 기계 번역의 경우에 대해서 본다면, 입력은 일련의 단어로 이루어진 sequence이며 맨 앞 단어부터 차례대로 모델에서 처리됩니다. 그리고 출력으로는 비슷한 형태의 그러나 다른 언어로의 단어 sequence가 나오게 됩니다.
(* 이때 sequence 의 길이가 달라질 수 있다는 점이 중요합니다.)
2. Seq2seq 모델
Seq2seq 모델은 하나의 encoder 와 하나의 decoder 로 이루어져 있습니다.
encoder 는 입력의 각 아이템을 처리하여 거기서 정보를 추출한 후 그것을 하나의 벡터로 만들어냅니다. 이를 흔히 context 라고 부릅니다.
입력의 모든 단어에 대한 처리가 끝난 후 encoder 는 context 를 decoder 에게 보내고 출력할 아이템이 하나씩 선택되기 시작합니다.
기계 번역의 경우에서는 context 가 하나의 벡터의 형태로 전달됩니다. encoder 와 decoder 는 둘다 Recurrent Neural Networks(* RNN)를 이용하는 경우가 많습니다.
context 는 float 으로 이루어진 하나의 벡터입니다.
이 context 벡터의 크기는 모델을 처음 설정할 때 원하는 값으로 설정할 수 있습니다. 하지만 보통 encoder RNN 의 hidden unit 의 개수로 정합니다.
실제 연구에서는 256, 512, 1024 와 같은 숫자를 이용합니다.
Seq2seq 모델 디자인을 보게 되면 하나의 RNN은 한 타임 스텝마다 두 개의 입력을 받습니다. 하나는 sequence 의 한 아이템이고 다른 하나는 그전 스텝에서의 RNN 의 hidden state 입니다.
이 두 입력들은 RNN 에 들어가기 전에 꼭 vector 로 변환 되어야 합니다. 하나의 단어를 벡터로 바꾸기 위해서는 'word embedding' 방법을 사용해야합니다.
2024.08.29 - [[Deep daiv.] NLP] - [Deep daiv.] WIL, NLP - 6. 단어 임베딩
[Deep daiv.] WIL, NLP - 6. 단어 임베딩
1. 임베딩(* Embedding) 워드 임베딩은 단어를 컴퓨터가 이해하고, 효율적으로 처리할 수 있도록 단어를 벡터화하는 기술입니다.워드 임베딩은 단어의 의미를 잘 표현해야만 하며, 현재까지도 많은
hw-hk.tistory.com
2024.08.16 - [[Deep daiv.] 복습] - [Deep daiv.] TIL - 6. Word2Vec을 활용한 단어 임베딩
[Deep daiv.] TIL - 6. Word2Vec을 활용한 단어 임베딩
0. 현재 상황 2024.08.14 - [[Deep daiv.] 복습] - [Deep daiv.] TIL & WIL - 5. 자연어 처리 & 텍스트 처리 (Contd.) [Deep daiv.] TIL & WIL - 5. 자연어 처리 & 텍스트 처리 (Contd.)이전 글2024.08.09 - [[Deep daiv.] NLP] - [Deep daiv.
hw-hk.tistory.com
해당 과정을 시각화 하면 다음과 같이 나타낼 수 있습니다:
이와 같이 타임 스텝 #2 에서는 두 번째 단어와 첫 번째 hidden state 를 이용하여 두 번째 출력을 만듭니다.
encoder 와 decoder 는 모두 RNN 이고, RNN 은 한 번 아이템을 처리할 때마다 새로 들어온 아이템을 이용해 그의 hidden state 를 업데이트 합니다. 그렇기 때문에 hidden state 는 encoder 가 보는 입력 시퀀스 내의 모든 단어에 대한 정보를 담게 됩니다.
그러면 마지막 타임 스텝에서의 hidden state 는 모든 input vector 들에 대한 정보를 담고 있다고 볼 수 있고, 바로 그 hidden state 가 우리가 decoder 에게 넘겨주는 context 가 됩니다.
3. Attention
다양한 연구를 통해 decoder 로 넘겨주는 context 벡터가 이런 seq2seq 모델의 가장 큰 걸림돌인 것으로 밝혀졌습니다. 이렇게 하나의 고정된 벡터로 전체의 맥락을 나타내는 방법은 특히 긴 문장들을 처리하기 어렵게 만들었습니다.
이에 대한 해결 방법으로 제시된 것이 바로 'Attention' 입니다.
아래의 두 논문을 통해 Attention 개념이 제시되었습니다:
https://arxiv.org/abs/1409.0473
Neural Machine Translation by Jointly Learning to Align and Translate
Neural machine translation is a recently proposed approach to machine translation. Unlike the traditional statistical machine translation, the neural machine translation aims at building a single neural network that can be jointly tuned to maximize the tra
arxiv.org
https://arxiv.org/abs/1508.04025
Effective Approaches to Attention-based Neural Machine Translation
An attentional mechanism has lately been used to improve neural machine translation (NMT) by selectively focusing on parts of the source sentence during translation. However, there has been little work exploring useful architectures for attention-based NMT
arxiv.org
이 두 논문이 소개한 attention 메커니즘은 seq2seq 모델이 디코딩 과정에서 현재 스텝에서 가장 관련된 입력 파트에 집중할 수 있도록 해줌으로써 기계 번역의 품질을 매우 향상 시켰습니다.
타임 스텝 #7 에서 attention 메커니즘은 영어 번역을 생성하려 할 때, decoder 가 단어 “étudiant” (“학생”을 의미하는 불어)에 집중하게 합니다. 이렇게 스텝마다 관련된 부분에 더 집중할 수 있게 해주는 attention model 은 attention 이 없는 모델보다 훨씬 더 좋은 결과를 생성합니다.
기존 모델과 attention 모델은 2가지의 차이점을 가집니다:
첫 번째로 encoder 가 decoder 에 넘겨주는 데이터의 양이 attention 모델에서 훨씬 더 많다는 점입니다.
기존 seq2seq 모델에서는 그저 마지막 아이템의 hidden state 벡터를 넘겼던 반면 attention 모델에서는 모든 스텝의 hidden states 를 decoder 에게 넘겨줍니다.
두 번째로는 attention 모델의 decoder 가 출력을 생성할 때에는 하나의 추가과정이 필요합니다. decoder 는 현재 스텝에서 가장 관련있는 입력을 찾아내기 위해 다음과 같은 과정을 실행합니다:
- encoder 에서 받은 전체 hidden states를 봅니다. 각 스텝에서의 encoder hidden states 는 이전의 맥락에 대한 정보도 포함하고 있지만 그 스텝에서의 입력 단어와 가장 관련이 있습니다.
- 각 스텝의 hidden state마다 점수를 매깁니다.
- 매겨진 점수들에 softmax 를 취하고 이것은 각 타임 스텝의 hidden states 에 곱해서 더합니다. 이를 통해 높은 점수를 가진 hidden states는 더 큰 부분을 차지하고 낮은 점수를 가진 hidden states는 작은 부분을 가져가게 됩니다.
이러한 점수를 매기는 과정은 decoder 가 단어를 생성하는 매 스텝마다 반복됩니다.
(* 추가적으로 attention 의 점수를 매기는 방법은 다음과 같습니다:)
15-01 어텐션 메커니즘 (Attention Mechanism)
앞서 배운 seq2seq 모델은 **인코더**에서 입력 시퀀스를 컨텍스트 벡터라는 하나의 고정된 크기의 벡터 표현으로 압축하고, **디코더**는 이 컨텍스트 벡터를 통해서 출력 …
wikidocs.net
이를 시각화 하면 다음과 같습니다:
이 attention 을 이용하면 각 decoding 스텝에서 입력 문장에서 어떤 부분을 집중하고 있는지에 대해 볼 수 있습니다:
배움
seq2seq 과 attention
attention 점수 매기는 방식
'[Deep daiv.] > [Deep daiv.] NLP' 카테고리의 다른 글
[Deep daiv.] WIL, NLP - 8. 순환 신경망 실습 (6) | 2024.09.02 |
---|---|
[Deep daiv.] WIL, NLP - 6. 단어 임베딩 (1) | 2024.08.29 |
[Deep daiv.] WIL, NLP - 5. 토픽 모델링 (0) | 2024.08.22 |
[Deep daiv.] WIL, NLP - 4. 의미 연결망 분석(Sematic Network Analysis) (0) | 2024.08.21 |
[Deep daiv.] WIL, NLP - 3. 군집 분석 (0) | 2024.08.20 |