전통적인 statistical machine translation과는 다르게, neural machine translation은 번역 성능을 최대화 하기 위해서 공동으로 조정할 수 있는 single neural network로 설계하는 것이 목적이다.
이런 neural machine translation은 최근에 인코더와 디코더 구조에 속해있고, 문장을 고정된 길이의 벡터로 인코딩하면, 디코더가 번역을 해준다.
이 논문에서, 우리는 고정된 길이의 벡터를 사용하는 것이 기본적인 인코더-디코더 구조의 성능을 향상시키는 것을 막는 병목점이라고 추측한다.
이를 확장하여, 모델이 대상 단어를 예측하는 데 관련된 문장의 부분을 명시적으로 hard segment로 형성하지 않고도 자동적으로 soft-search 할 수 있도록 제안한다.
hard segment : 소스 문장을 고정된 길이로 형성
결과
영어를 프랑스어로 번역하는 phrase-based 시스템에서 SOTA를 달성했다.
qualitative analysis를 통해 우리의 직관과 모델이 발견한 soft-alignments가 잘 일치함을 드러낸다.
1. Introduction
과거 및 선행 연구
대부분의 neural machine translation은 인코더에서 문장을 읽고 고정길이 벡터로 인코딩하며, 디코더에서는 인코딩 된 벡터로부터 번역을 한다. 그리고, 언어 쌍에 대한 인코더-디코더 시스템은, 문장이 주어지면 정확하게 번역할 확률을 최대화 하도록 훈련된다.
과거 연구의 문제점
인코더-디코더 접근법의 잠재적인 문제는 신경망이 문장의 필요한 모든 정보를 고정 길이 벡터로 압축할 수 있어야 한다는 것
신경망이 긴 문장, 특히 훈련 말뭉치의 문장보다 긴 문장에 대처하지 못함
실제로 기본 인코더-디코더의 성능이 입력 문장의 길이가 증가함에 따라 급격히 저하되는 연구 결과가 있음 (Cho et al. (2014b))
이 논문의 개선사항
이 문제를 해결하기 위해서 정렬하고 번역하는 법을 둘 다 학습하게 하는 인코더-디코더 모델의 확장을 소개한다. 제안된 모델이 번역에서 단어를 생성할 때 마다, 가장 관련성이 높은 정보가 집중된 문장에서 위치 집합을 (soft-)search 한다.
그런 다음 모델은 이 문장의 위치들과 관련된 context vector와 이전에 생성된 모든 target 단어를 기반으로 target 단어를 예측합니다.
기존 인코더-디코더와 가장 구별되는 특징은 인코더가 전체 문장을 정해진 길이의 벡터로 줄일 필요가 없다는 점이다. 그 대신 입력 문장을 벡터 시퀀스로 인코딩하고 번역을 디코딩하면서 이러한 벡터의 하위 집합을 적응적으로 선택한다.
단어 단어마다 attention이 새로 적용하니까 적응적이라는 말을 쓴듯
효과
모델이 길이에 관계없이 소스 문장의 모든 정보를 fixed-length로 압축해야 하는 것을 방지
기존 인코더-디코더 방식보다 훨씬 향상된 번역 성능을 달성한다.
영어-프랑스어 번역에서 싱글 모델만으로도 기존 phrase-based system과 비슷하거나 가까운 번역 성능 달성
정성적 분석을 통해 제안된 모델이 소스 문장과 해당 대상 문장 사이에서 언어적으로 그럴듯한 (soft-) alignment을 찾는 것으로 나타났다.
2. BACKGROUND: NEURAL MACHINE TRANSLATION
확률적 관점에서 번역은 주어진 원문 x에 대해 조건부 확률 p(y∣x)을 최대화하는 대상 문장 y를 찾는 것과 같다.
신경망 기계 번역에서는 병렬 학습 말뭉치를 사용하여 문장 쌍의 조건부 확률을 최대화하도록 매개변수화된 모델을 적합화한다.
번역 모델에 의해 조건부 분포가 학습되면, 주어진 원문에 대해 조건부 확률을 최대화하는 문장을 검색함으로써 해당 번역을 생성할 수 있다.
신경망 기계 번역 접근법은 일반적으로 두 가지 구성 요소로 이루어진다.
첫 번째는 원문 x를 인코딩하고, 두 번째는 대상 문장 y를 디코딩
ex) 가변 길이의 원문을 고정 길이 벡터로 인코딩하고 벡터를 가변 길이의 대상 문장으로 디코딩하기 위해 두 개의 순환 신경망(RNN)을 사용
이 방법은 기존 RNN을 기반으로 한 신경망 기계 번역이 영어에서 프랑스어로의 번역 작업에서 SOTA를 달성했다.
2.1 RNN ENCODER–DECODER
인코더-디코더 프레임워크에서, 인코더는 input 문장을 벡터의 시퀀스로 변환한다.
⁍
t 시점에서 hidden state를 ht라고 했을 때, c는 hidden state의 문장으로부터 생성된 벡터이다. 여기서 f와 q는 어떤 비선형 함수이다.
⁍
⁍
디코더는 context 벡터 c가 주어지고, 이전에 예측한 결과가 주어졌을 때, {y1,…,yt’−1}를 기반으로 그 다음단어인 yt’를 예측한다. 다른 말로 말하면, 디코더는 결합 확률을 순서화된 조건으로 분해하여 translation y의 확률을 정의하는 것이다.
g는 비선형함수이고, multi-layered 일 것이고, yt의 확률을 output으로 내는 함수이며, st는 RNN의 hidden state이다.
여기서 c는 아래의 ci가 다른 것을 주목해야함 ! 여기서 c는 시점을 고려 안한 것(마지막 context vector만 사용)ci는 i 시점마다 context vector가 달라짐
3. LEARNING TO ALIGN AND TRANSLATE
새로운 아키텍쳐는 다음과 같이 구성된다.
Encoder : bidirectional RNN
Decoder : 번역을 디코딩 하는 동안 source sentence를 searching을 수행하는 디코더
3.1 DECODER: GENERAL DESCRIPTION
새로운 모델 아키텍쳐에서 우리는 조건부 확률을 각각 아래와 같이 정의할 것이다.
현 시점 i의 출력인 yi를 만들기 위해서 아래 두개가 사용됨
si : 시점 i에서 RNN의 hidden state
yi−1 : 직전 출력
여기서 확률값은 각 target 단어 yi에 대한 별개의 컨텍스트 벡터 ci에 따라 결정된다. 컨텍스트 벡터 ci는 인코더가 입력 문장을 매핑하는 ****annotations(h1,…,htx)에 달려있다.
각각의 annotationhi는 전체 input sequence의 i번째 단어와, 단어 주변 부분에 강한 포커스를 두고 입력 시퀀스 전체에 대한 정보를 포함한다.
위 모델은 input position j와 output position i가 얼마나 잘 매치가 되느냐로 점수를 매기는 alignmnet 모델이다.
이건 당연하게도 직전 decoder쪽의 hidden state와(i−1번째), j번째 어노테이션인 hj에 따라서 달려있다.
실제로 alignment가 어떤 특정한 수치를 가지고 있는 값이 아니기 때문에, backpropagation에 의해서 gradient가 바뀌면서 계산될 수 있는 값이다 !
X1,X2,X3,…,XT : 각각 들어가는 입력 단어
hj : bidirectional hidden state
si : decoder의 hidden state이고, 현재 단어 시점에서의 컨텍스트 벡터(ci)와 직전 decoder의 hidden state, 그리고 직전 예측 값으로 구성됨
각각의 hidden state에 weighted sum을 한 것이 ci
그럼 이 weight(aij)는 어떻게 구할까? → eij를 softmax를 취해서 확률값을 도출
그럼 ei,j는 무슨 의미? → 직전에 만들어 hidden state 값과, 특정한 j번째 입력 인코더의 hidden state 사이의 관계를 찾는 함수의 결과 값
확률 αij와 에너지 eij는 다음 state si 를 결정하고 yi를 생성할 때 직전의 hidden state si−1에 대한 hj의 중요성을 반영
i 값 : 출력 문장의 word에 붙는 index
j 값 : 입력 문장의 word에 붙는 index
즉 이말은, ci는 고정된게 아니라, 몇번 째 단어냐에 따라서 컨텍스트 벡터가 다시 계산 됨
seq2seq는 ci가 마지막 hidden state에서 구하는 것으로 고정
3.2 ENCODER: BIDIRECTIONAL RNN FOR ANNOTATING SEQUENCES
RNN은 입력 시퀀스 x를 첫 번째 기호 x1부터 마지막 기호 xTx까지 순서대로 읽는다. 그러나, 제안된 방식에서는 각 단어의 annoation이 앞의 단어뿐만 아니라 다음 단어도 같이 요약했으면 하기 때문에, 여기서는 bidirectional RNN을 사용한다.
backward RNN f는 시퀀스를 반대로 xTx 부터 x1까지 읽고 backward hidden state (f1,...,fhTx)가 결과로 나온다.
우리는 각각 단어 x_j의 annotation을 forward hidden state hj와 backward hidden state hj를 concat하여 얻는다.
즉, hj=[hjT;hjT]
그러면 annotation hj는 앞쪽 단어와 뒤쪽 단어 모두를 요약하는 것이다.
recent input을 더 잘 표현하는 RNN의 경향으로 인해 annotation hj는 xj 주변 단어에 초점을 맞출 것이다.
이 annotation 시퀀스는 나중에 디코더와 align 모델에 의해 context vector를 계산하는 데 사용된다.
4. EXPERIMENT SETTINGS
논문에서는 영어→프랑스어로 번역하는 task를 평가 할 것이다. 우리는 ACL WMT ’14 bilingual, parallel corpora를 사용해서 평가하며, 또한 최근에 제안되어진 RNN Encoder-Decoder의 성능또한 비교할 것이다.
두 모델 모두 같은 절차로 같은 데이터셋을 활용해서 학습한다.
4.1 DATA SET
WMT ’14는 English-French paralell corpora 데이터셋이다.
Europarl (61M words)
news commentary (5.5M)
UN (421M)
각각 90M, 272.5M의 크롤링된 corpora
총 850개의 단어
데이터 선택 방법을 사용하여 단어를 348M개로 줄임
언급된 parallel corpora 이외의 monolingual corpus는 사용하지 않았으나, 인코더를 pretraining하기 위해 훨씬 더 큰 monolingual corpus를 사용할 가능성은 있다.
병렬 코퍼스(parallel corpora) : 두 언어 간의 번역 쌍을 포함하는 데이터셋
단일 언어 코퍼스(monolingual corpus) : 하나의 언어로만 이루어진 텍스트 데이터셋
validation set
news-test-2012 and news-test-2013
test set
news-test-2014 (training set에서는 없는 3003개의 문장)
토큰화 한 후, 각 언어에서 가장 자주 사용하는 30,000개의 단어의 최종 목록을 사용하여 모델을 훈련
최종 목록에 포함되지 않는 단어들을 special token [UNK]로 매핑
데이터에 어떠한 preprocessing도 하지 않았음
lowercasing
stemming (어간 추출)
4.2 MODELS
두 가지 유형의 모델(RNN Encoder-Decoder와 제안된 RNNsearch)이 최대 30단어와 최대 50단어 길이의 문장으로 각각 두 번 학습됨
두 모델 모두 숨겨진 유닛을 1000개씩 가지며, RNNsearch는 forward and backward recurrent neural networks이다.
학습에는 미니배치 SGD와 Adadelta가 사용되며, 각 모델은 약 5일간 훈련됨
trained 모델은 beam search를 사용하여 조건부 확률을 최대화하는 번역을 찾는다.
모델 아키텍처와 학습 절차의 자세한 내용은 별첨된 부록에서 설명된다.
5 RESULTS
5.1 QUANTITATIVE RESULTS
test set으로 BLEU score를 매긴 결과. All column은 모든 문장에 대한 스코어이고, No UNK는 unknown 단어를 제거하고 스코어를 매긴 결과.(=학습하지 않은 단어) RNNsearch-50*은 더이상 성능이 나아지지 않을 때 까지 학습한 것. No UNK는 [UNK] 토큰을 생성하지 못하도록 만들었음
Moses : 기존 구문 기반 번역 시스템
제안된 RNNsearch는 기존의 RNNencdec 성능을 능가한다. 그리고 RNNSearch의 성능은 알고있는 단어만 문장에 구성되어 있을 때, 기존의 구분 기반의 번역 시스템(Moses)와 성능이 유사하다.
Moses가 RNN 검색 및 RNNencdec을 훈련하는 데 사용한 parallel corpora 외에 별도의 monolingual corpus(418M 단어)를 사용한다는 점을 고려할 때 이는 상당한 성과이다.
또 하나 주목할 것은 기존 encoder-decoder 접근에서의 fixed-length context vector의 사용에 대한 점인데, 이런 fixed-length와 같은 제한이 긴 문장에 대한 성능을 저하시킨다는 점이다.
문장이 길어질수록 성능이 떨어지는데, RNNsearch-30과 50은 로버스트하게 길이에 대해서 반응함. 특히 RNNsearch-50은 길이가 50이나 그 이상이 되어도 성능 저하가 없음.
기본 인코더-디코더에 비해 제안된 모델의 이러한 우수성은 RNNsearch-30이 RNNencdec-50보다 성능이 뛰어나다는 사실에 의해 확인될 수 있음 (table 1)
5.2 QUALITATIVE ANALYSIS
5.2.1 ALIGNMENT
대상 단어를 생성할 때 원본 문장의 어느 위치가 더 중요하게 고려되었는지 알 수 있다. / 주석 가중치 aij를 시각화 함
대상 단어를 생성할 때 원본 문장의 어느 위치가 더 중요하게 고려되었는지 알 수 있다.
제안된 접근법은 번역된 단어와 원본 문장 사이의 소프트 정렬을 직관적으로 검사할 수 있게 함.
정렬은 주석 가중치를 시각화하여, 목표 단어 생성에 있어 원본 문장의 어느 부분이 중요했는지 보여줌.
영어와 프랑스어 사이의 단어 정렬은 대체로 단조로우나, 비단조적인 정렬도 존재.
“단어 정렬이 단조롭다”는 소스 문장에서의 단어 순서와 번역된 문장에서의 단어 순서가 일관되게 유지된다는 의미
프랑스어와 영어 사이에는 형용사와 명사의 순서가 일반적으로 다르며, (a)에서 예를 볼 수 있다. 이 그림에서 모델이 [European Economic Area]라는 구를 [zone économique européenne]으로 올바르게 번역한 것을 볼 수 있다.
즉, (a)를 보면 프랑스와 영어가 어순이 거꾸로 되어있어도 잘 attention하더라
소프트 정렬은 단어의 순서가 다른 두 언어 간의 번역에 유용하며, 하드 정렬보다 더 유연하고 효과적임.
Hard Alignment
소스 문장의 각 단어가 타겟 문장의 특정 단어에 1:1로 엄격하게 매핑되는 방식
soft Alignment
소스 문장의 각 단어가 타겟 문장의 여러 단어와 연관될 수 있는 보다 유연한 방식
(d)를 보면 영어는 정관사가 the 밖에 없지만 불어는 많은데, 정관사인지 아닌지는 뒤에 단어까지 봐야 볼 수 있다.
i’homme를 보면 I’를 정관사로 잘 처리하고 있음을 보여준다.
5.2.2 LONG SENTENCES
제안된 모델인 RNNsearch가 기존의 RNNencdec보다 긴문장에서 성능이 훨씬 좋음을 알 수 있다. 이는 아마도 RNNsearch가 긴 문장을 고정된 길이의 벡터로 완벽하게 인코딩하는 것을 요구하지 않기 때문이다. RNNsearch는 특정 단어를 둘러싼 입력 문장의 부분들만을 정확하게 인코딩하는 데에 집중한다.
RNNencdec-50은 소스 문장의 medical center까지는 정확하게 번역을 하나, 밑줄친 부분부터는 번역을 제대로 하지 못한다.
그러나 RNNsearch-50은 디테일의 생략 없 정확하게 모든 문장을 번역한다.
RNNencdec는 30문장 이후 소스 문장의 실제 의미에서 벗어나기 시작했고, 그 이후에는 닫는 따옴표가 없는 것과 같은 기본적인 실수가 발생하는 등 번역의 품질이 저하됐다.
이미 제시된 정량적 결과와 함께, 이러한 정성적 관찰은 RNN 검색 아키텍처가 표준 RNNencdec 모델보다 훨씬 더 신뢰할 수 있는 긴 문장 번역을 가능하게 한다는 우리의 가설을 확인할 수 있다.
7 CONCLUSION
이전 연구에서 우리는 긴 문장을 번역할 때 fixed-length context vector를 사용하는 것이 문제가 있다고 추측했다.
이 논문에서는 모델이 각 target 단어를 생성할 때, input 단어 집합 또는 인코더에서 계산한 annotation을 (soft-)search 하도록 해서 기본 인코더-디코더를 확장
모델이 다음 target 단어를 생성할 때 관련있는 정보를 집중할 수 있게 해주며, 전체 소스 문장을 고정 길이 벡터로 인코딩해야 하는 부담을 해소
결과적으로 긴 문장에 대해서 좋은 번역 결과가 나옴
RNNsearch는 기존의 encoder-decoder 모델보다 좋은 성능을 얻었으며, source sentence의 길이에 훨씬 로버스트하며, 번역 결과도 훨씬 잘 일치했다.
하나 남은 개선사항은 드물거나 처음본 단어를 더 잘 처리해야 한다는 것이다 !
헷갈리는 것
context vector가 업데이트 되는거가 포인트인거지 context vector 길이가 바뀌는게 아니다.
A MODEL ARCHITECTURE
A.1 ARCHITECTURAL CHOICES
A.1.1 RECURRENT NEURAL NETWORK
A.1.2 ALIGNMENT MODEL
논문에서 이 식과 같은데, WSt−1,Vhj 두 개 weighted sum 한 다음, hyperbolic tanh을 거쳐서 에너지 eij를 계산하고, softmax를 거쳐서 weight를 계산