Tomato Basil
Attention | Neural Machine Translation by Jointly Learning to Align and Translate 본문
Attention | Neural Machine Translation by Jointly Learning to Align and Translate
salt pepper 2024. 11. 12. 01:03[ Neural Machine Translation by Jointly Learning to Align and Translate ]
Dzmitry Bahdanau, Kyunghyun Cho 등의 연구진이 ICLR 2015 학회에서 발표한 논문이다.
양방향 RNN을 인코더로 사용하며, 디코더는 번역과 동시에 입력 문장을 검색하는 RNNsearch 모델에 대한 논문으로, 기계 번역 분야에 혁신적인 접근 방식을 제시했다. 기존 encoder-decoder 모델처럼 고정 길이 벡터 사용 대신 입력 문장을 벡터 시퀀스로 인코딩하여 긴 문장에 대한 성능을 개선했다. 그리고 attention 매커니즘을 도입하여 입력 문장의 관련 부분에 집중할 수 있게 했다.
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
Abstract
전통적인 통계 기반 기계 번역과 달리 요즘의 Neural Machine Translation(인공신경망 기반 기계번역) 모델들은 하나의 신경망으로 이루어져 있다. 최근의 Neural Machine Translation 모델들은 보통 encoder-decoder 구조로 이루어져 있는데, encoder가 문장을 fixed-length vector로 인코딩하면 decoder가 그로부터 번역을 생성하는 식이었다.
하지만 이 논문에서는 encoder-decoder 구조의 병목 현상 원인이 fixed-length vector 때문이라고 주장하며, 해결 방법을 제시하고 있다. 어떤 문장이 주어졌을 때, 모델이 특정 단어를 예상(prdeict)하기 위해 문장의 관련 부분들을 soft search 할 수 있게 만들면 되고, 그 관련된 부분들은 노골적으로 추출하거나 문장 전체를 사용할 필요가 없다는 것이었다.
1. Introduction
기존의 기계 번역은 구절을 단위로 번역했지만, 새로운 기계 번역 접근 방법인 Neural Machine Translation은 하나의 신경망을 통해 문장 단위의 번역을 얻는다.
그리고 기존의 Neural Machine Translation 모델들은 encoder-decoder 구조를 가진다. encoder가 문장을 fixed-length vector로 인코딩하고 decoder가 그 encoded vector로부터 번역된 문장을 반환하는 식이다. encoder와 decoder는 joint training이 된다.
하지만 이 구조의 문제는 fixed-length vector에 문장의 모든 중요한 정보를 압축해서 넣어야 하기 때문에, 길이가 긴 문장은 번역 효과를 떨어뜨린다는 점이었다.
하나의 단어를 번역하기 위해 이 모델은 어떤 과정을 거칠까?
-> 입력 문장(source sentence)에서 그 단어와 가장 연관된 정보를 가지고 있는 set of positions를 soft search한다. 그 후 이 source positions 및 기존에 생성된 단어들과 연관된 context vectors를 기반으로 단어를 예측한다.
중요한 점은, 하나의 fixed-length vector를 위해 문장 전체를 하나의 고정 길이 벡터가 아닌 벡터들의 시퀀스로 encode한다는 것이다. 따라서 문장의 모든 정보를 고정 길이 벡터에 우겨넣을 필요가 없다.
이 논문은 encoder-decoder 구조를 그대로 사용하는 대신, 정렬과 번역을 합동되게(jointly) 학습하는 추가 방식을 제안한다. 기본 encoder-decoder과 비교 시 나타나는 효과는 모든 길의의 문장에서 관찰되었고, 긴 문장에서 특히 뚜렷하게 관찰되었다.
2. Background: Neural Machine Translation
NMT에서는 문장 쌍의 조건부 확률 p(y|x)를 최대로 만들기 위해 매개변수화된 모델을 병렬 학습 corpus로 학습시킨다. 번역 모델이 조건부 분포를 학습하면 조건부 확률을 최대화하는 문장을 검색을 함으로써 번역 문장을 생성할 수 있다.
최근의 논문들이 제안한 조건부 분포를 직접 학습하는 NMT 방법은 두 가지(encode, decode) 컴포넌트로 구성된다. 예를 들면 컴포넌트 1은 가변 길이의 원본 문장을 고정 길이 벡터로 encode하고, 컴포넌트 2는 그 고정 길이 벡터를 가변 길이 타세 문장으로 decode 한다.
RNN Encoder-Decoder
기반에 있는 프레임워크는 RNN Encoder-Decoder로, 정렬(align)과 번역(translate)를 동시에 학습하는 아키텍처를 위한 것이다.
이 프레임워크의 인코더에서는
- 입력 문장
- 벡터 시퀀스 \( x=(x1,,xTx) \)
를 입력으로 받아 벡터 \( c \) 를 만든다.
이후 디코더에서는
- 문맥에 맞는 벡터 \( c \)
- 기존에 만들었던 모든 단어들 \( {y1 , · · · , yt′ −1 } \)
을 입력으로 받아 타깃 단어인 \( yt′ \) 를 만든다.
이때 디코더는 번역문 \( y \) 의 확률을 정의하는데, 결합 확률(joint probability, 2개의 사건이 동시에 일어나는 확률) 을 순차적인 조건부 확률로 분해하며 정의한다. 이때의 \( y \) 는 \( y = (y1, ... , yTy) \) 로, Ty개의 단어를 가지는 전체 번역 시퀀스이다. 즉, 번역문이라는 것 같다.
위와 같이 말이다. 2개의 사건이 동시에 일어나는 확률 이라 하면, 하나의 문장에 여러 해석 요소가 있음을 의미하는 것 같다. g 함수는 이러한 확률 표현을 모델링에 옮길 때 사용하는 비선형 함수라고 한다.
3. Learning to Alilgn and Translate
RNNSearch의 아키텍처는 인코더로 양방향 RNN을 사용했다. 번역 과정에서 디코더는 원본 문장을 검색하도록 했다.
3-1. Decoder : General Description
\( si \)는 시간 \( i \) 에 대한 RNN의 hidden state로, \( si = f(si−1,yi−1,ci) \) 이다.
아까 2-1 에서 각 조건부 확률 함수 p는 g함수를 통해 모델링 된다고 했었다.
2-1 에서처 통상적인 RNN encoder-decoder 구조를 사용하여 번역문의 확률을 구할 때는 하나의 문백 벡터 \( c \)를 사용했다. 하지만 새로운 구조에서는 매 목표 단어 \( yi \) 마다 개별적인 문맥 벡터 \( ci \)를 매칭하여 확률에 적용한다.
+) 문맥 벡터 \( ci \)는 무엇일까?
일단 인코더에 의해 입력 문장에 맵핑되는 'annotation'들이 있다. (주석, 메타데이터와 같은 개념)각 annotation \( hi \) 는 입력 문장 전체에 대한 정보, 그리고 입력문장의 \( i \)번째 단어 및 그 주변에 대한 정보 를 가진다.
문맥 벡터 \( ci \)는 annotations들의 시퀀스에 의존한다. 즉, \( (h1 , · · · , hTx ) \) 에 의존한다.
다음 수식처럼 annotations \( hi \) 들의 weighted sum 을 문백 벡터라고 부른다. \( α \) 가 weight이다.

3-2. Encoder : Bidirectional RNN for Annotating Sequences
통상적인 RNN은 입력 시퀀스를 처음부터 순차적으로 읽어들인다. 하지만, 이 새로운 모델에서는 각 단어에 대한 annotation이 이전 단어들 뿐만 아니라 이후의 단어들의 정보를 담게 했다.
BiRNN은 forward RNN, backward RNN으로 구성되어 있다. forward RNN은 입력 문장을 순서대로 읽은 후
forward hidden states (h→1,⋯,h→Tx) 시퀀스를 계산해낸다. backward RNN은 입력 문장을 반대로 읽어들여
backward hidden states (h←1,⋯,h←Tx) 를 계산해낸다.
결과적으로 각 단어의 annotation은 forward hidden state 와 backward hidden state 를 함축하게 된다. 이를 통해 annotation \( hj \)는 앞선 단어와 추후 단어의 요약을 모두 가지고 있다고 말할 수 있게 되는 것이다.
5. Results
(Soft) Alignment
입력 문장, 그리고 번역된 문장에서의 단어 정렬에 대한 직관을 제공한다고 한다. 매트릭스 그림(단어의 annotation 관계도 설명해주는 그림)을 통해 단어가 문장의 어느 위치와 밀접한 연관을 가지는지 알 수 있었다.
그림을 통해 영어-프랑스어 간의 관계를 살펴보자면, 각 어순은 단조롭게 매칭된다. 단, 명사나 형용사의 경우 두 언어간에 사용되는 문장 속 위치가 다르다.
번역 전: European Economic Area
↓
번역 후 : zone e ́conomique europe ́en
이렇게 어순이 다른데도 의미가 맞게 번역이 되었다.
(zone 을 Area에 매칭시키기 위해 European, Economic 두 단어를 건너 뛰었다.)
Soft Alignment의 장점은 문맥을 고려할 수 있다는 것이며, 원문과 번역문의 길이가 다른 경우에도 자연스러운 처리가 가능하다는 것이다.
7. Conclusion
기존의 incoder-decoder 방식 NMT이 사용하던 고정 길이 벡터 사용이 번역 성능에 저하를 부른다는 판단으로 이 논문은 새로운 아키텍처를 제안했다. 이를 통해
- 각 목표 단어 생성 시, 입력 문장의 단어들을 검색(soft search)할 수 있도록 incoder-decoder의 개념을 확장했다.
- 이를 통해 입력 문장 전체를 고정 길이 벡터로 encode할 필요가 없어졌다.
- 모델이 다음 목표 단어 생성에 관련된 정보에만 집중할 수 있게 되었다.
질문 그리고 답변
1. 왜 특정 단어의 의미를 표현할 때 주변 N개의 단어(context window)를 주로 사용할까?
단어의 의미는 주변 단어들과의 관계에서 더 정확하게 파악될 수 있기 때문이다. 주변 단어들은 해당 단어의 문맥을 제공하며, 이 문맥은 단어의 의미를 더 정확하게 파악하는 데 도움을 준다. 계산 효율성 측면에서도, 전체 문장이나 문서를 고려하는 것보다 제한된 window를 사용하는 것이 계산 복잡도를 줄일 수 있다.
2. Attention 메커니즘은 Long Term Dependency 문제를 극복했다는 것 이외에 어떤 의의를 가질까?
Attention 가중치를 시각화함으로써 모델 해석 가능성이 향상되었다. 그리고 Self-attention 구조에서는 각 위치의 표현을 계산할 때 다른 모든 위치를 동시에 고려할 수 있어, 병렬 처리가 가능해졌다. 또 입력의 각 부분에 대해 동적으로 중요도를 할당할 수 있어, 더 정교한 문맥 이해가 가능해졌다. 덕분에 Attention 메커니즘은 NLP 분야뿐만 아니라 컴퓨터 비전, 음성 인식 등 다양한 분야에서 광범위하게 적용되고 있다.
3.
- Query, Key, Value 각각은 무엇을 의미할까?
- Query: 현재 단어가 문장 내 어떤 단어들에 주목해야 하는지.
- Key: 각 단어가 Query에 대해 얼마나 중요한지.
- value: 실제 단어의 의미와 문맥 정보. Key와 Query의 관계가 결정되면 Value가 실제 정보를 제공한다.
- W_Q, W_K, W_V 가중치는 각각 무엇을 학습할까?
- W_Q: 입력을 Query 공간으로 변환하는 방법을 학습
- W_K: 입력을 Key 공간으로 변환하는 방법을 학습
- W_V: 입력을 Value 공간으로 변환하는 방법을 학습
- 멀티 헤드 어텐션을 사용하는 이유는?
- 다양한 관점에서 정보를 추출할 수 있다.
- 모델이 여러 위치의 정보를 동시에 처리할 수 있게 한다.
- 트랜스포머의 Positionoal Encoding에 왜 sin, cos 함수를 사용하였을까?
- 값의 범위가 -1에서 1 사이로 제한되어, 단어 간 거리에 관계없이 어텐션을 적용할 수 있다.
- 주기적인 특성으로 인해 시퀀스 길이에 제한 없이 위치 정보를 인코딩할 수 있다.
- 다양한 주파수의 sin과 cos 함수를 사용함으로써 단거리 및 장거리 의존성을 모두 포착할 수 있다.
'AI > NLP' 카테고리의 다른 글
| LLM | Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (0) | 2025.01.23 |
|---|---|
| LangChain - chat with my data (2) | 2024.12.18 |
| RAG | Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (0) | 2024.12.08 |
| CoT | Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (0) | 2024.12.08 |
| Transformer | Attention Is All You Need (0) | 2024.11.27 |