[논문 리뷰] Neural Machine Translation by Jointly Learning to Align and Translate

권유진·2022년 6월 26일
0

논문 리뷰

목록 보기
8/17

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(yx)argmax_y p(y|x)
  • 번역 모델이 조건부 분포를 학습하면,조건부 확률을 최대화하는 문장을 탐색함으로써 주어진 source 문장과 동일한 번역을 발생시킬 수 있다.
  • 최근 논문들은 2가지 요소를 제안하는데, source 문장을 encoding하는 부분과 target 문장으로 decoding하는 부분을 제안한다.
    • 예를 들어, RNN은 가변 길이 sourcre 문장을 고정 길이 벡터로 변환하고 이를 가변 길이 target 문장으로 변환한다.
    • LSTM으로 대체한 모델이 영어-불어 번역 부분에서 SOTA를 달성
    • 구문 pairs를 점수매기고 후보 번역자들을 다시 순위 매기는 것을 추가한 모델은 기존 SOTA(LSTM활용모델)의 성능을 능가했다.

RNN Encoder-Decoder

  • 우리 모델의 기초가 되는 구조
  • Encoder는 input 문장(xx)을 읽고 벡터 cc로 만듭니다.
    • hth_t는 시각 tt의 hidden state이다.
    • ff, qq는 비선형 함수이다. (ex. LSTM 사용)
      ht=f(xt,ht1)c=q({h1,,hTx})h_t = f(x_t,h_{t-1})\\ c = q(\{h_1, \cdots, h_{T_x}\})
  • Decoder는 주어진 문맥 벡터 cc와 이전에 예측한 단어 {y1,,yt1y_1, \cdots, y_{t'-1}} 를 통해 다음 단어 yty_{t'}를 예측하기 위해 학습된다.
    • Decoder는 결합 확률을 정렬된 조건부로 분해하여 yy에 대한 확률을 정의한다.
    • gg는 비선형 함수(ex. RNN), yt1y_{t-1}은 이전 시점의 결과 확률, st1s_{t-1}는 RNN의 hidden state
    • 비선형 함수에 RNN와 deconvolutional neural network 함께 사용 가능
      p(y)=t=1Tp(yt{y1,,yt1},c)p(yt{y1,,yt1},c)=g(yt1,st,c)p(y) = \prod^T_{t=1} p(y_t | \{y_1, \cdots, y_{t-1}\}, c)\\ p(y_t | \{y_1, \cdots, y_{t-1}\}, c) = g(y_{t-1}, s_t, c)

Learning to Align and Translate

  • Encoder에 Bi-RNN을 포함시키고, decoding 동안 source 문장의 탐색 과정을 모방하였다.

Decoder: General Description

  • 새로운 모델 구조에서, 우리는 각 조건부 확률을 아래와 같이 정의했다.
    p(yiy1,,yi1,x)=g(yi1,si,ci)si=f(si1,yi1,ci)p(y_i|y_1,\cdots,y_{i-1}, x) = g(y_{i-1}, s_i, c_i)\\ s_i = f(s_{i-1}, y_{i-1}, c_i)
  • 기존 Encoder-Decoder 구조와 다른 점은 확률이 각 target 단어 yiy_i에 대해 문맥 벡터 cic_i의 조건부 확률이라는 점이다.
  • 문맥 벡터 cic_i는 Encoder가 입력 문장을 매핑하는 순서 (hi,,hTx)(h_i, \cdots, h_{T_x})에 따라 달라진다.
    • hih_i는 전체 input 문장이 "i번째 단어를 둘러싼 부분에 강한 집중을 하는" 순서에 대한 정보를 포함한다.
    • 문맥 벡터 cic_ihih_i의 가중합을 한다.
    • 가중치 αij\alpha_{ij}는 아래와 같이 계산된다.
      ci=Σj=1Txαijhjαij=exp(eij)Σk=1Txexp(eik)eij=a(si1,hj)c_i = \Sigma^{T_x}_{j=1} \alpha_{ij}h_j\\ \alpha_{ij} = \cfrac{\exp(e_{ij})}{\Sigma^{T_x}_{k=1} \exp(e_{ik})}\\ e_{ij} = a(s_{i-1}, h_j)
  • 얼마나 input의 위치 jj 주변이 얼마나 output의 위치 ii와 잘 맞는지 점수를 계산하는 모델이다.
    • 점수는 RNN의 hidden state si1s_{i-1}과 input 문장의 jj번째 hidden state hjh_j를 기반으로 한다.
    • alignment model aa를 제안된 시스템의 모든 다른 요소로 학습한 FeedForward NN으로 파라미터를 설정했다.
      • 기존 전통적인 기계 번역과 다르게 정렬이 잠재 변수로 생각되지 않음
      • 대신 alignment model이 역전파법을 활용해 직접적으로 soft alignment를 계산한다.
        • 전체 모델과 alignment model이 학습될 때 경사는 같이 계산된다.
    • αij\alpha_{ij}는 source 단어 xix_i와 정렬될 target 단어 yiy_i의 확률
    • 문맥 벡터 cic_iαij\alpha_{ij}의 확률의 모든 주석에 대한 예상 주석이다.
  • 확률 αij\alpha_{ij} 또는 관련된 에너지 eije_{ij}는 이전 시점의 hidden state si1s_{i-1}의 관점에서 다음 상태 sis_i를 결정하고 yiy_i를 발생시키는 주석 hjh_j의 중요성을 반영한다.
  • 직관적으로 Decoder에서 집중(attention) 메커니즘의 활용이다.
  • Decoder는 source 문장이 집중할 부분을 결정한다.
  • Decoder가 Attention 메커니즘을 사용함으로써 source 문장이 모든 정보를 고정 길이 벡터로 encoding해야만 하는 짐을 줄여준다.
  • 정보는 annotation의 순서를 통해 퍼지고 decoder에 의해 선택적으로 검색된다.

Encoder: Bidirectional RNN for Annotating Sequences

  • 기본적인 RNN은 input sequence를 x1x_1으로부터 xTxx_{T_x} 순서대로 읽는다.
    • 하지만, 각 단어가 선행 단어 뿐 아니라 다음 단어도 요약하고 싶어한다.
    • 그래서 우리는 Bi-RNN을 사용한다.
  • Bi-RNN은 앞, 뒤 방향 모두 RNN을 적용한다.
    • forward RNN은 x1x_1 부터 xTxx_{T_x} 순서대로 읽고 forward hidden state를 계산한다.
    • backward RNN은 xTxx_{T_x} 부터 x1x_1 순서대로 읽고 backward hidden state를 계산한다.
    • forward와 backward의 hidden state를 concatenate함으로써 annotation 얻음
    • 해당 방법은 이전 단어와 다음 단어의 정보를 모두 요약한 annotation hjh_j를 얻는다.
    • RNN의 최근 것을 더 잘 기억하는 특성 때문에, hjh_jxjx_j 주변 단어들에 집중할 것이다.

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개로 설정했다.
    • 활성화 함수로 maxout 사용
  • Adadelta, SGD 사용(batch size: 80)
  • 조건부 확률을 최대화하는 번역을 찾기 위해 beam search를 사용했다.

Results

Quantitative Results

  • 성능 측정을 위해 BLEU score 계산
  • 모든 경우에 기존 RNN Encoder-Decoder 모델보다 Attention 메카니즘이 추가된 모델의 성능이 더 높았다.
  • 고정길이 문맥 벡터가 문장의 길이가 길수록 성능이 감소하도록 한다.
    • 이를 개선하여 길이에 더욱 강건하도록 만들었다.
      • 길이가 50을 넘어가도 성능 감소는 나타나지 않았다.

Qualitative Analysis

  1. Alignment
  • 번역되어 발생한 문장과 source 문장 사이의 부드러운 정렬을 조사한다.
  • 영어와 불어 사이의 단어 정렬은 대체로 단조롭다.
    • 대각선 부분에서는 강한 가중치를 보임
    • 단조롭지 않은 정렬도 많음
    • 이를 통해 올바르게 번역
  • 부드러운 정렬의 힘은 분명하다.
    • 부드러운 정렬은 the manl' homme로 번역
    • 딱딱한 정렬의 경우에는 thel'로, manhomme로 번역
      • thel', le, la, les로 번역이 되기 때문에 도움이 안됨
    • 부드러운 정렬은 theman을 함께 봄으로써 올바른 번역을 한다.
      • [NULL] 등을 추가하지 않고도 source와 target을 다른 길이로 보기 때문에 이 점에서 이득이 있다.
  1. 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

  • 활성화 함수 ff와 alignment model aa는 자유롭게 정하면 된다.
  1. Recurrent Neural Network
  • ff로 RNN을 사용했다.
  • element-wise tanh의 대안으로 gated hidden unit 사용
    • LSTM과 유사(LSTM으로 대체 가능)
    • e(yi1)e(y_{i-1})는 단어 yi1y_{i-1}의 임베딩 값
      si=f(si1,yi1,ci)si1+zis~is~i=tanh(We(yi1)+U[risi1]+Cci)zi=σ(Wze(yi1)+Yzsi1+Czci)ri=σ(Wre(yi1)+Yrsi1+Crci)s_i = f(s_{i-1}, y_{i-1}, c_i)\odot s_{i-1} + z_i \odot \tilde s_i\\ \tilde s_i = \tanh(W e(y_{i-1}) + U [r_i \odot s_{i-1}] + C c_i)\\ z_i = \sigma(W_z e(y_{i-1}) + Y_z s_{i-1} + C_z c_i)\\ r_i = \sigma(W_r e(y_{i-1}) + Y_r s_{i-1} + C_r c_i)
  • maxout과 softmax를 사용
  1. Alignment Model
  • 각 문장의 길이가 TxT_x, TyT_y일 때, TxTyT_x T_y 시간이 소요된다는 점 명심
  • 계산을 줄이기 위해 1개의 계층의 신경망 사용
    • WaW_a, UaU_a, vav_a는 가중치 행렬이다.
    • UahjU_ah_jii와 독립적이므로 계산량 최소화를 위해 사전에 계산한다.
      a(si1,hj)=vaTtanh(Wasi1+Uahj)a(s_{i-1}, h_j) = v_a^T \tanh(W_a s_{i-1} + U_a h_j)

Detailed Description of the Model

  1. Encoder
    hi={(1zi)hi1+zih~i,    if  i>00,    if  i=0h~i=tanh(We(xi)+U[rihi1])zi=σ(Wze(xi)+Yzhi1)ri=σ(Wre(xi)+Yrhi1)h_i = \begin{cases} (1-z_i) \odot h_{i-1} + z_i \odot \tilde h_i, \;\; if\; i >0\\ 0, \;\; if\; i=0 \end{cases}\\ \tilde h_i = \tanh(W e(x_{i}) + U [r_i \odot h_{i-1}])\\ z_i = \sigma(W_z e(x_{i}) + Y_z h_{i-1})\\ r_i = \sigma(W_r e(x_{i}) + Y_r h_{i-1})
hi=[hiforwardhibackward]h_i = \begin{bmatrix} h_i^{forward}\\ h_i^{backward} \end{bmatrix}
  1. Decoder
    si=(1zi)si1+zis~is~i=tanh(We(yi1)+U[risi1]+Cci)zi=σ(Wze(yi1)+Yzsi1+Czci)ri=σ(Wre(yi1)+Yrsi1+Crci)ci=Σj=1Txαijhjαij=exp(eij)Σk=1Txexp(eik)eij=vαTtanh(Wasi1+Uahj)s_i = (1-z_i) \odot s_{i-1} + z_i \odot \tilde s_i\\ \tilde s_i = \tanh(W e(y_{i-1}) + U [r_i \odot s_{i-1}] + C c_i)\\ z_i = \sigma(W_z e(y_{i-1}) + Y_z s_{i-1} + C_z c_i)\\ r_i = \sigma(W_r e(y_{i-1}) + Y_r s_{i-1} + C_r c_i)\\ \\ c_i = \Sigma_{j=1}^{T_x} \alpha_{ij}h_j\\ \alpha_{ij} = \cfrac{\exp(e_{ij})}{\Sigma^{T_x}_{k=1} \exp(e_{ik})}\\ e_{ij} = v_\alpha^T \tanh(W_a s_{i-1} + U_a h_j)
  2. Model Size
  • 은닉층의 노드 수는 1000, embedding 차원 수는 620
  • maxout hidden layer의 크기는 500
  • alignment model의 은닉층 노드 수는 1000
profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글