[논문 리뷰] Neural Machine Translation by Jointly Learning to Align and Translate
Abstract
- 신경망 기계 번역은 최근 제안된 기계 번역 방법이다.
- 전통적인 통계 방식의 기계 번역과는 다르게 번역 성능을 최대화하는 것에 알맞게 단일 신경망을 학습시킨다.
- 최근 제안된 모델은 Encoder-Decoder 구조이며 문장을 고정된 길이의 벡터로 encodeing해 decoder에 제공하고 문장을 생성한다.
- 이 책에서는 고정 길이 벡터는 성능 향상에 병목을 일으킨다고 어림짐작한다.
- 이를 해결하기 위해 각 부분의 source 문장과 target 단어가 관련있는 부분을 자동으로 탐색한다.
- 이를 통해 English-French 번역 부분에서의 SOTA보다 성능이 더 높게 나왔다.
- 또한 모델에 의해 발견된 정렬이 우리의 직관과 잘 일치함
Introduction
- 신경망 번역은 번역 분야에서 새롭게 떠오르는 접근법이다.
- 각각 나눠진 많은 하위 요소들을 포함하는 전통적인 구문 기반 번역 시스템과 달리, 신경망 기계 번역은 문장을 읽고 정확한 번역을 하는 커다란 단일 신경망을 학습시키기 위해 노력한다.
- 대부분의 번역 모델은 Encoder-Decoder 구조를 포함한다.
- Encoder 신경망은 source 문장을 고정길이 벡터로 읽고 압축한다.
- Decoder는 압축된 벡터로부터 번역된 문장을 산출한다.
- 언어 쌍에 대한 encoder와 decoder을 포함하는 시스템은 주어진 source 문장을 올바르게 번역할 확률을 최대화하기위해 학습한다.
- Encoder-Decoder 구조의 잠재적 문제는 신경망이 모든 중요한 정보를 고정된 길이의 벡터로 압축해야만 한다는 것이다.
- 이는 신경망 시스템이 긴 문장을 번역하기에는 어려울 것이다.(특히 training corpus에 비해 더욱 길 경우에는 더욱)
- 이 문제를 다루기위해, 우리는 정렬하고 번역하는 Encoder-Decoder 모델로 확장시킨다.
- 이 모델이 번역을 수행할 때 마다, 가장 집중되고 관련된 정보를 지니고 있는 source 문장의 위치를 탐색한다.
- 모델은 이전 target 단어들과 source 위치를 통해 문맥 벡터를 기반으로 해 target 단어를 예측한다.
- 기본적인 Encoder-Decoder 모델과 구분되는 특징 중 가장 중요한 것은 모든 input 문장을 단일 고정길이 벡터로 압축하려고하지 않았다는 점이다.
- 대신, input 문장을 sequence vector로 encoding하고 번역문으로 decoding하는 동안이 벡터들 중 부분집합을 선택한다.
- source 문장의 모든 정보를 뭉개뜨리는 부분에서 해방
- 이로 인해 긴 문장에서 더욱 잘 동작한다.
- 위 구조 도입으로 성능이 향상되었다.
- 긴 문장에서 더욱 성능 향상이 명확했고 어느 길이에서든지 성능이 향상되었다.
- source 문장과 target 문장 간의 언어적으로 그럴듯한 번역 수행
Background: Neural Machine Translation
- 확률 측면에서, 번역은 주어진 source 문장 x로부터 조건부 확률 y를 최대화하는 target 문장 y를 찾는 것과 동일하다. argmaxyp(y∣x)
- 번역 모델이 조건부 분포를 학습하면,조건부 확률을 최대화하는 문장을 탐색함으로써 주어진 source 문장과 동일한 번역을 발생시킬 수 있다.
- 최근 논문들은 2가지 요소를 제안하는데, source 문장을 encoding하는 부분과 target 문장으로 decoding하는 부분을 제안한다.
- 예를 들어, RNN은 가변 길이 sourcre 문장을 고정 길이 벡터로 변환하고 이를 가변 길이 target 문장으로 변환한다.
- LSTM으로 대체한 모델이 영어-불어 번역 부분에서 SOTA를 달성
- 구문 pairs를 점수매기고 후보 번역자들을 다시 순위 매기는 것을 추가한 모델은 기존 SOTA(LSTM활용모델)의 성능을 능가했다.
RNN Encoder-Decoder
- 우리 모델의 기초가 되는 구조
- Encoder는 input 문장(x)을 읽고 벡터 c로 만듭니다.
- ht는 시각 t의 hidden state이다.
- f, q는 비선형 함수이다. (ex. LSTM 사용)
ht=f(xt,ht−1)c=q({h1,⋯,hTx})
- Decoder는 주어진 문맥 벡터 c와 이전에 예측한 단어 {y1,⋯,yt′−1} 를 통해 다음 단어 yt′를 예측하기 위해 학습된다.
- Decoder는 결합 확률을 정렬된 조건부로 분해하여 y에 대한 확률을 정의한다.
- g는 비선형 함수(ex. RNN), yt−1은 이전 시점의 결과 확률, st−1는 RNN의 hidden state
- 비선형 함수에 RNN와 deconvolutional neural network 함께 사용 가능
p(y)=t=1∏Tp(yt∣{y1,⋯,yt−1},c)p(yt∣{y1,⋯,yt−1},c)=g(yt−1,st,c)
Learning to Align and Translate
- Encoder에 Bi-RNN을 포함시키고, decoding 동안 source 문장의 탐색 과정을 모방하였다.
Decoder: General Description
- 새로운 모델 구조에서, 우리는 각 조건부 확률을 아래와 같이 정의했다.
p(yi∣y1,⋯,yi−1,x)=g(yi−1,si,ci)si=f(si−1,yi−1,ci)
- 기존 Encoder-Decoder 구조와 다른 점은 확률이 각 target 단어 yi에 대해 문맥 벡터 ci의 조건부 확률이라는 점이다.
- 문맥 벡터 ci는 Encoder가 입력 문장을 매핑하는 순서 (hi,⋯,hTx)에 따라 달라진다.
- 각 hi는 전체 input 문장이 "i번째 단어를 둘러싼 부분에 강한 집중을 하는" 순서에 대한 정보를 포함한다.
- 문맥 벡터 ci는 hi의 가중합을 한다.
- 가중치 αij는 아래와 같이 계산된다.
ci=Σj=1Txαijhjαij=Σk=1Txexp(eik)exp(eij)eij=a(si−1,hj)
- 얼마나 input의 위치 j 주변이 얼마나 output의 위치 i와 잘 맞는지 점수를 계산하는 모델이다.
- 점수는 RNN의 hidden state si−1과 input 문장의 j번째 hidden state hj를 기반으로 한다.
- alignment model a를 제안된 시스템의 모든 다른 요소로 학습한 FeedForward NN으로 파라미터를 설정했다.
- 기존 전통적인 기계 번역과 다르게 정렬이 잠재 변수로 생각되지 않음
- 대신 alignment model이 역전파법을 활용해 직접적으로 soft alignment를 계산한다.
- 전체 모델과 alignment model이 학습될 때 경사는 같이 계산된다.
- αij는 source 단어 xi와 정렬될 target 단어 yi의 확률
- 문맥 벡터 ci는 αij의 확률의 모든 주석에 대한 예상 주석이다.
- 확률 αij 또는 관련된 에너지 eij는 이전 시점의 hidden state si−1의 관점에서 다음 상태 si를 결정하고 yi를 발생시키는 주석 hj의 중요성을 반영한다.
- 직관적으로 Decoder에서 집중(attention) 메커니즘의 활용이다.
- Decoder는 source 문장이 집중할 부분을 결정한다.
- Decoder가 Attention 메커니즘을 사용함으로써 source 문장이 모든 정보를 고정 길이 벡터로 encoding해야만 하는 짐을 줄여준다.
- 정보는 annotation의 순서를 통해 퍼지고 decoder에 의해 선택적으로 검색된다.
Encoder: Bidirectional RNN for Annotating Sequences
- 기본적인 RNN은 input sequence를 x1으로부터 xTx 순서대로 읽는다.
- 하지만, 각 단어가 선행 단어 뿐 아니라 다음 단어도 요약하고 싶어한다.
- 그래서 우리는 Bi-RNN을 사용한다.
- Bi-RNN은 앞, 뒤 방향 모두 RNN을 적용한다.
- forward RNN은 x1 부터 xTx 순서대로 읽고 forward hidden state를 계산한다.
- backward RNN은 xTx 부터 x1 순서대로 읽고 backward hidden state를 계산한다.
- forward와 backward의 hidden state를 concatenate함으로써 annotation 얻음
- 해당 방법은 이전 단어와 다음 단어의 정보를 모두 요약한 annotation hj를 얻는다.
- RNN의 최근 것을 더 잘 기억하는 특성 때문에, hj는 xj 주변 단어들에 집중할 것이다.
Experiment Settings
- 영어-불어 번역 task
- ACL WMT 14에서 제공한 두 개 이상의 언어가 유사한 corpora(corpus들) 사용
- 성능 비교를 위해 RNN Encoder-Decoder와 함께 시행했다.
Dataset
- Europarl(61M words), news commentary(5.5M), UN(421M), two crawled coropa(90M, 272.5M)
- total 850M
- data selection을 통해 348M까지 corpus 크기를 줄였다.
- 사용해도 됨에도 불구하고 어떠한 monolingual data를 사용하지 않았다.
- news-test-2012와 news-test-2013을 concat해서 validation set을 발전시키고 WMT' 14(train set에 없는 3003개 문장)로 모델을 평가했다.
- Tokenization 후, 모델 학습을 위해 30,000개의 가장 흔한 단어 shortlist를 사용했다.
- 해당 list에 없는 단어는 [UNK]로 처리되었다.
- 그 외의 전처리는 수행되지 않았다.
Models
- RNN Encoder-Decoder 모델과 우리가 제안한 모델을 사용했다.
- 각 모델을 두번 학습한다.
- 첫번째는 30단어까지의 문장으로 학습을 했고, 두번째는 50 단어까지의 문장을 학습했다.
- RNN의 노드 수는 1000개로 설정했다.
- Adadelta, SGD 사용(batch size: 80)
- 조건부 확률을 최대화하는 번역을 찾기 위해 beam search를 사용했다.
Results
Quantitative Results
- 성능 측정을 위해 BLEU score 계산
- 모든 경우에 기존 RNN Encoder-Decoder 모델보다 Attention 메카니즘이 추가된 모델의 성능이 더 높았다.
- 고정길이 문맥 벡터가 문장의 길이가 길수록 성능이 감소하도록 한다.
- 이를 개선하여 길이에 더욱 강건하도록 만들었다.
- 길이가 50을 넘어가도 성능 감소는 나타나지 않았다.
Qualitative Analysis
- Alignment
- 번역되어 발생한 문장과 source 문장 사이의 부드러운 정렬을 조사한다.
- 영어와 불어 사이의 단어 정렬은 대체로 단조롭다.
- 대각선 부분에서는 강한 가중치를 보임
- 단조롭지 않은 정렬도 많음
- 이를 통해 올바르게 번역
- 부드러운 정렬의 힘은 분명하다.
- 부드러운 정렬은
the man
을 l' homme
로 번역
- 딱딱한 정렬의 경우에는
the
를 l'
로, man
을 homme
로 번역
the
가 l'
, le
, la
, les
로 번역이 되기 때문에 도움이 안됨
- 부드러운 정렬은
the
와 man
을 함께 봄으로써 올바른 번역을 한다.
- [NULL] 등을 추가하지 않고도 source와 target을 다른 길이로 보기 때문에 이 점에서 이득이 있다.
- Long Sentences
- 고정 길이 벡터로 Encoding 하지 않고 특정 단어 주변의 문장만 정확히 Encoding 할 필요가 없기 때문에 긴 문장도 잘 번역할 수 있다.
Learning to Align
- output symbol을 input symbol과 정렬하는 비슷한 접근법은 Handwriting synthesis에서 제안되었다.
- Handwriting synthesis는 주어진 순서의 글자를 발생시키는 모델을 의미한다.
- 주석의 가중치를 계산하기 위해 Gaussian kernel의 조합을 사용한다.
- 위치가 단조롭게 증가하도록 위치를 예측하도록 제한
- 우리 모델과 다른점
- 가중치의 최빈값이 한 방향으로 움직인다.
- 문법적으로 순서를 바꿔야 하는 번역의 경우 한계가 있다.
- 우리의 모델은 모든 단어의 가중치를 계산해야한다.
- 번역의 경우에는 단어 수가 15~40개 이므로 취약하지 않지만 다른 경우에는 취약
Neural Networks for Machine Translation
- 고정된 이전 몇 개의 단어를 통해 조건부 확률을 계산하는 신경망 확률 언어 모델 이후로 신경망이 기계 번역에 많이 사용되었다.
- 하지만 신경망은 그 당시 현존하는 통계적 기계 번역 시스템의 단순한 feature을 만들어내거나 후보 번역문을 다시 순위 매기는 것은 한계가 있었다.
- FeedForward NN으로 source와 target 구문의 점수를 부가적인 feature로서 계산하는 시도
- 번역 시스템의 하위요소로 신경망이 사용되었다.
- 전통적으로는 target 쪽의 언어 모델로 번역 후보들을 재점수매기고 순위를 매기는 것에 사용되었다.
Conclusion
- 고정 길이 벡터를 문맥벡터로 사용한다는 단점을 해결
- target 단어를 생성할 때의 input 단어의 부드러운 탐색을 Encoder-Decoder 구조에 추가
- 다음 target 단어를 예측할 때 관련된 단어에 집중할 수 있도록 함
- 정렬 메카니즘을 포함하는 전통적인 기계 번역 시스템과 다르게 로그우도를 최대화하는 방향으로 학습했다.
- 길이에 상관 없이 기존 모델보다 좋은 성능을 보였고 특히 길이가 길수록 더욱 성능 향상을 보였다.
- target 단어를 관련된 source 단어들과 함께 정렬할 수 있다.
- 역대 기계 번역 시스템들보다 훨씬 성능이 좋으며 앞으로 연구하기에 유망하다.
- 앞으로는 모르거나(unknown), 흔하지 않은(rare) 단어들을 다루는 방법에 대해서 연구하면 좋을 것 같다.
Model Architecture
Architecture Choices
- 활성화 함수 f와 alignment model a는 자유롭게 정하면 된다.
- Recurrent Neural Network
- f로 RNN을 사용했다.
- element-wise tanh의 대안으로 gated hidden unit 사용
- LSTM과 유사(LSTM으로 대체 가능)
- e(yi−1)는 단어 yi−1의 임베딩 값
si=f(si−1,yi−1,ci)⊙si−1+zi⊙s~is~i=tanh(We(yi−1)+U[ri⊙si−1]+Cci)zi=σ(Wze(yi−1)+Yzsi−1+Czci)ri=σ(Wre(yi−1)+Yrsi−1+Crci)
- maxout과 softmax를 사용
- Alignment Model
- 각 문장의 길이가 Tx, Ty일 때, TxTy 시간이 소요된다는 점 명심
- 계산을 줄이기 위해 1개의 계층의 신경망 사용
- Wa, Ua, va는 가중치 행렬이다.
- Uahj는 i와 독립적이므로 계산량 최소화를 위해 사전에 계산한다.
a(si−1,hj)=vaTtanh(Wasi−1+Uahj)
Detailed Description of the Model
- Encoder
hi={(1−zi)⊙hi−1+zi⊙h~i,ifi>00,ifi=0h~i=tanh(We(xi)+U[ri⊙hi−1])zi=σ(Wze(xi)+Yzhi−1)ri=σ(Wre(xi)+Yrhi−1)
hi=[hiforwardhibackward]
- Decoder
si=(1−zi)⊙si−1+zi⊙s~is~i=tanh(We(yi−1)+U[ri⊙si−1]+Cci)zi=σ(Wze(yi−1)+Yzsi−1+Czci)ri=σ(Wre(yi−1)+Yrsi−1+Crci)ci=Σj=1Txαijhjαij=Σk=1Txexp(eik)exp(eij)eij=vαTtanh(Wasi−1+Uahj)
- Model Size
- 은닉층의 노드 수는 1000, embedding 차원 수는 620
- maxout hidden layer의 크기는 500
- alignment model의 은닉층 노드 수는 1000