NMT - better way to decoding
지난 lecture에서 최종적으로 본 NMT 모델(multi RNN seq2seq)은 다음과 같다.
이 모델처럼 decoder의 이전 time output을 다음 time input으로 사용하는 output 방식을 greedy decoding 이라 한다.
하지만 이러한 방식을 사실 test과정에서는 성능 하락의 주범이 되는데, 하나만 잘못 되도 고칠 수가 없게 되기 때문이다.
하지만 그렇다고 모든 input을 다 시도(exhaustive)하기엔 compexity가 어마어마할 것이다.
이를 보완하기 위한 방법이 beam search이다. 여기서 beam은 beam size로, 만약 beam size가 k일 경우
각 time output에서 k개씩만 저장하며 tracking하여 가장 높은 probability의 조합을 찾는다.
물론 최선의 조합을 보장하진 않으나, 훨씬 나은 성능을 보여준다. 아래 그림을 보면 이해가 쉬울 것이다.
beam search는 위처럼 길이가 일정할 수도 있으나, 어떤 조합은 <END> token이 일찍 나와 문장이 짧을 수 있다.
그렇기에 문장의 길이로 보통 normalize하여 점수를 비교하여 가장 좋은 조합을 찾는다.
Attention
seq2seq은 굉장히 효과적은 solution이나, 구조에서 오는 어쩔 수 없는 단점이 존재한다. 결국 encoder에서 decoder로 넘어가는 것은 마지막 time hidden뿐이기에, 이것이 source sentence의 모든 정보를 담고 있다고 이야기 할 수 없을 것이다.
즉, 결국 RNN구조에서 따오기에 input sequence 마지막 단어에 대한 영향이 처음 단어보다 훨씬 클 수 밖에 없다.
따라서 decoder에서도 번역 시에 source sentence 뒷부분에 많이 '집중'하게 될 것이다.
이를 information bottleneck 문제라 한다.
이를 해결하려면 어떻게 하는 것이 좋을까? 단순하게 생각하면, decoder와 encoder가 집중하는 부분을 하나로 일치시켜주면 좋지 않을까? 즉 decoder 첫번째 input에는 encoder의 첫번째 hidden을 사용하는 것이다.
당연히 각 언어마다 문장 구조도 다르고, 쓰이는 단어 수 등 여러가지가 달라지기에 위치를 기준으로 할 순 없다. 대신? 분명한 것은 source 문장 어딘가에는 뜻이 비슷한 단어가 존재할 것이라는 것이다.
이런 단어를 찾기위해서, attention score라는 것을 도입한다. attention score는 문장 encoding과 각 encoder hidden과의 dot product로써 구하게 된다. (차후 dot product외에도 score 계산 방법이 여러가지가 나와 사용된다. -
특히 transformer의 reduced-rank multiplicated attention은 다음 lecture에 나온다.)
이렇게 구한 attention score들은 softmax로 이어져 확률값으로 변환된다. 이 때 가장 확률이 높은 부분이 우리가 집중해야할, 다시 말해 해당 decoder 위치에서 중요한 단어를 가진 encoder 위치가 되는 것이다.
확률 값에 따라 각 encoder hidden state를 weighted sum하여 attetion output을 구하여, 현재 decoder hidden과 합쳐 decoder output을 구하면 성공적으로 attention을 통해 해당 위치에 맞는 번역을 한 것이다.
어디에 집중을 할지가 되는 attention역시 hidden state로부터 계산되기에, 역전파 과정에서 간접적으로 hidden state에 학습될 것이다.
attention은 굉장히 큰 폭의 NMT 성능 향상을 가져왔고, 보다 인간과 비슷하게 해석하는 모델을 개발할 수 있게 해주었다.
특히 단순히 seq2seq에서의 attention외에도, 이렇게 여러 value중 주어진 query에 따라 어디에 집중할지, weighted sum을 활용해 찾는 메커니즘은 어디서든지 응용 및 사용된다.
*번외 : 2023 NLP topics
- evaluating and improving models for something other than accuracy : 정확도 외 다른 평가 방법
-> robustness와 adaptation
- get good task performance from large models for particular tasks without much data : 적은 데이터로 특수한 task 학습 -> transfer learning,
- bias, explainability : 거대 모델에 대한 신뢰성, explainability.
- data augmentation
- low resource language/problem
- model scaling : 거대 모델?(like GPT-3) 작은 모델? (pruning, quantization)
- other problems : fast learning(meta learning), compositionality, systematic generalization
*번외 : NLP datasets
Linguistic Data Consortium
huggingface
paperswithcode
https://universaldependecies.org
kaggle,,,etc,,,
'모아 읽은 보따리 > cs224n' 카테고리의 다른 글
L10: Pretraining (0) | 2023.02.07 |
---|---|
L8: Transformers (1) | 2023.02.04 |
L6: LSTMs, NMT (0) | 2023.02.03 |
L5: Language Modeling, RNN (0) | 2023.02.02 |
L4: Dependency Parsing (0) | 2023.02.01 |