Neural Machine Translation by Jointly Learning to Align and Translate: 어텐션 메커니즘의 시작
목차
개요
Neural Machine Translation by Jointly Learning to Align and Translate는 Dzmitry Bahdanau, KyungHyun Cho, Yoshua Bengio가 ICLR 2015에서 발표한 논문이다. 오늘날 트랜스포머의 핵심 구성 요소로 자리 잡은 어텐션 메커니즘이 처음으로 제안된 연구다.
당시 신경망 기계번역(Neural Machine Translation)은 Kalchbrenner and Blunsom(2013), Sutskever et al.(2014), Cho et al.(2014b)에 의해 막 제안된 새로운 접근이었다. 여러 하위 모듈을 개별적으로 튜닝하는 기존의 구문 기반(phrase-based) 통계 기계번역과 달리, 문장을 읽고 번역을 출력하는 하나의 거대한 신경망을 통째로 학습시키는 방식이다.
문제는 당시 제안된 모델 대부분이 인코더-디코더 계열이었다는 점이다. 인코더가 소스 문장을 고정 길이 벡터 하나로 압축하고, 디코더가 그 벡터에서 번역을 생성한다. 저자들은 이 고정 길이 벡터가 성능 향상의 병목이라고 추측했고, 모델이 타깃 단어를 예측할 때 관련 있는 소스 문장의 일부를 자동으로 소프트 검색(soft-search)하도록 확장할 것을 제안했다. 이때 관련 부분을 명시적인 하드 세그먼트로 잘라낼 필요가 없다는 점이 핵심이다.
이 접근으로 영어-프랑스어 번역 과제에서 기존 최고 수준의 구문 기반 시스템에 필적하는 성능을 달성했다. 또한 정성 분석 결과 모델이 찾아낸 소프트 정렬이 사람의 직관과 잘 일치했다.
배경: RNN 인코더-디코더
신경망 기계번역의 확률적 정식화
확률 관점에서 번역은 소스 문장 x가 주어졌을 때 조건부 확률을 최대화하는 타깃 문장 y를 찾는 문제와 같다.
1
arg max_y p(y | x)
신경망 기계번역에서는 병렬 코퍼스를 사용해 문장 쌍의 조건부 확률을 최대화하도록 파라미터화된 모델을 학습시킨다. 번역 모델이 조건부 분포를 학습하고 나면, 소스 문장이 주어졌을 때 그 확률을 최대화하는 문장을 탐색해 번역을 생성한다.
RNN 인코더-디코더 프레임워크에서 인코더는 입력 문장, 즉 벡터 시퀀스 x = (x_1, ..., x_Tx)를 읽어 벡터 c로 만든다.
1
2
h_t = f(x_t, h_{t-1})
c = q({h_1, ..., h_Tx})
여기서 h_t는 시각 t의 은닉 상태이고, c는 은닉 상태 시퀀스로부터 생성된 벡터다. f와 q는 비선형 함수이며, Sutskever et al.(2014)은 f로 LSTM을 사용하고 q로는 마지막 은닉 상태 h_T를 그대로 취했다.
디코더는 컨텍스트 벡터 c와 이전에 예측한 모든 단어가 주어졌을 때 다음 단어를 예측하도록 학습된다. 결합 확률을 순서가 있는 조건부 확률의 곱으로 분해하는 방식이다.
1
2
p(y) = 곱셈 over t=1..T of p(y_t | {y_1, ..., y_{t-1}}, c)
p(y_t | {y_1, ..., y_{t-1}}, c) = g(y_{t-1}, s_t, c)
g는 y_t의 확률을 출력하는 비선형(다층일 수 있는) 함수이고, s_t는 RNN의 은닉 상태다.
고정 길이 벡터라는 병목
이 접근의 잠재적 문제는 신경망이 소스 문장의 필요한 정보를 전부 고정 길이 벡터 하나에 압축할 수 있어야 한다는 점이다. 이는 긴 문장, 특히 학습 코퍼스에 등장한 문장보다 긴 문장을 처리할 때 어려움을 만든다. Cho et al.(2014b)은 기본 인코더-디코더의 성능이 입력 문장 길이가 늘어남에 따라 급격히 저하됨을 실제로 보였다.
제안 방식이 기존 인코더-디코더와 구별되는 가장 중요한 특징은, 입력 문장 전체를 단일 고정 길이 벡터로 인코딩하려 하지 않는다는 것이다. 대신 입력 문장을 벡터의 시퀀스로 인코딩하고, 번역을 디코딩하는 동안 그 벡터들의 부분집합을 적응적으로 선택한다. 이로써 번역 모델은 문장 길이와 무관하게 모든 정보를 고정 길이 벡터에 밀어 넣어야 하는 부담에서 벗어난다.
방법론
새로운 아키텍처는 인코더로 양방향 RNN을, 디코더로는 번역을 디코딩하는 동안 소스 문장을 검색하는 구조를 사용한다.
디코더: 타깃 단어마다 다른 컨텍스트 벡터
새 모델에서 각 조건부 확률은 다음과 같이 정의된다.
1
2
p(y_i | y_1, ..., y_{i-1}, x) = g(y_{i-1}, s_i, c_i)
s_i = f(s_{i-1}, y_{i-1}, c_i)
기존 인코더-디코더와 달리, 여기서 확률은 각 타깃 단어 y_i마다 서로 다른 컨텍스트 벡터 c_i에 조건부로 걸린다.
컨텍스트 벡터 c_i는 인코더가 입력 문장을 매핑한 어노테이션 시퀀스 (h_1, ..., h_Tx)에 의존한다. 각 어노테이션 h_i는 입력 시퀀스 전체에 대한 정보를 담되, 입력의 i번째 단어 주변 부분에 강하게 초점이 맞춰져 있다.
컨텍스트 벡터 c_i는 이 어노테이션들의 가중합으로 계산된다.
1
c_i = 합계 over j=1..Tx of alpha_ij * h_j
정렬 모델과 어텐션 수식
각 어노테이션 h_j의 가중치 alpha_ij는 소프트맥스로 정규화된다.
1
2
3
alpha_ij = exp(e_ij) / ( 합계 over k=1..Tx of exp(e_ik) )
e_ij = a(s_{i-1}, h_j)
e_ij는 정렬 모델(alignment model)로, 위치 j 주변의 입력과 위치 i의 출력이 얼마나 잘 맞는지를 점수화한다. 이 점수는 y_i를 내보내기 직전의 RNN 은닉 상태 s_{i-1}과 입력 문장의 j번째 어노테이션 h_j를 기반으로 계산된다.
정렬 모델 a는 다른 모든 구성 요소와 함께 공동 학습되는 순전파 신경망으로 파라미터화된다. 전통적인 기계번역과 달리 정렬을 잠재 변수로 취급하지 않는다. 대신 정렬 모델이 소프트 정렬을 직접 계산하므로, 비용 함수의 그래디언트가 정렬 모델을 통과해 역전파될 수 있다. 이 그래디언트로 정렬 모델과 번역 모델 전체를 함께 학습시킨다.
모든 어노테이션의 가중합을 취하는 것은 기대 어노테이션(expected annotation)을 계산하는 것으로 이해할 수 있으며, 기댓값은 가능한 정렬들에 대해 취해진다. alpha_ij를 타깃 단어 y_i가 소스 단어 x_j에 정렬되거나 그로부터 번역될 확률로 두면, i번째 컨텍스트 벡터 c_i는 그 확률에 대한 어노테이션의 기댓값이다.
확률 alpha_ij와 그에 대응하는 에너지 e_ij는, 다음 상태 s_i를 결정하고 y_i를 생성하는 데 있어 이전 은닉 상태 s_{i-1} 대비 어노테이션 h_j가 갖는 중요도를 반영한다. 논문은 이것이 직관적으로 디코더에 어텐션 메커니즘을 구현한 것이라고 설명한다. 디코더가 소스 문장의 어느 부분에 주의를 기울일지 스스로 결정하며, 그 덕분에 인코더는 소스 문장의 모든 정보를 고정 길이 벡터에 담아야 하는 부담에서 해방된다.
인코더: 양방향 RNN 어노테이션
일반적인 RNN은 입력 시퀀스를 첫 심볼부터 마지막 심볼까지 순서대로 읽는다. 그러나 제안 방식에서는 각 단어의 어노테이션이 선행 단어뿐 아니라 후행 단어까지 요약하기를 원한다. 따라서 음성 인식에서 성공적으로 사용된 양방향 RNN(BiRNN, Schuster and Paliwal, 1997)을 사용한다.
BiRNN은 순방향 RNN과 역방향 RNN으로 구성된다. 순방향 RNN은 x_1부터 x_Tx까지 순서대로 읽어 순방향 은닉 상태 시퀀스를 계산하고, 역방향 RNN은 x_Tx부터 x_1까지 역순으로 읽어 역방향 은닉 상태 시퀀스를 만든다.
각 단어 x_j의 어노테이션은 순방향 은닉 상태와 역방향 은닉 상태를 이어 붙여 얻는다.
1
h_j = [ 순방향 h_j ; 역방향 h_j ]
이렇게 하면 어노테이션 h_j가 선행 단어와 후행 단어의 요약을 모두 담게 된다. RNN이 최근 입력을 더 잘 표현하는 경향 덕분에, 어노테이션 h_j는 x_j 주변 단어에 초점이 맞춰진다. 이 어노테이션 시퀀스가 이후 디코더와 정렬 모델에서 컨텍스트 벡터를 계산하는 데 사용된다.
아키텍처 상세
논문 부록 A는 실험에 사용한 구체적인 선택을 설명한다.
RNN의 활성 함수 f로는 Cho et al.(2014a)이 제안한 게이트 은닉 유닛(gated hidden unit)을 사용한다. 이는 원소별 tanh 같은 기존 단순 유닛의 대안으로, LSTM과 유사하게 장기 의존성을 학습할 수 있다. 펼쳐진 RNN에서 도함수의 곱이 1에 가까운 계산 경로를 갖게 되어, 그래디언트가 소실 문제를 크게 겪지 않고 역방향으로 흐를 수 있기 때문이다.
디코더의 새 상태는 다음과 같이 계산된다.
1
2
3
4
5
s_i = (1 - z_i) 원소곱 s_{i-1} + z_i 원소곱 s_tilde_i
s_tilde_i = tanh( W E y_{i-1} + U [ r_i 원소곱 s_{i-1} ] + C c_i )
z_i = sigmoid( W_z E y_{i-1} + U_z s_{i-1} + C_z c_i )
r_i = sigmoid( W_r E y_{i-1} + U_r s_{i-1} + C_r c_i )
E는 타깃 언어의 단어 임베딩 행렬이고, z_i는 업데이트 게이트, r_i는 리셋 게이트의 출력이다. 업데이트 게이트는 각 은닉 유닛이 이전 활성값을 유지할 수 있게 하고, 리셋 게이트는 이전 상태의 어떤 정보를 얼마나 초기화할지 제어한다. y_i가 1-of-K 벡터로 표현될 때 e(y_i)는 단순히 임베딩 행렬의 한 열이다. 디코더의 초기 은닉 상태 s_0은 역방향 RNN의 첫 은닉 상태로부터 tanh(W_s h_1) 형태로 계산된다.
정렬 모델은 길이 Tx와 Ty인 문장 쌍마다 Tx * Ty번 평가되어야 한다는 점을 고려해 설계했다. 계산량을 줄이기 위해 단일 은닉층 다층 퍼셉트론을 사용한다.
1
a(s_{i-1}, h_j) = v_a^T tanh( W_a s_{i-1} + U_a h_j )
여기서 W_a는 n x n, U_a는 n x 2n, v_a는 n차원 가중치다. U_a h_j는 인덱스 i에 의존하지 않으므로 미리 계산해 두어 계산 비용을 최소화할 수 있다.
출력 확률은 maxout 은닉층 하나를 갖는 딥 아웃풋 구조로 계산된다.
1
2
3
4
p(y_i | s_i, y_{i-1}, c_i) 비례 exp( y_i^T W_o t_i )
t_tilde_i = U_o s_{i-1} + V_o E y_{i-1} + C_o c_i
t_i,j = max( t_tilde_{i,2j-1}, t_tilde_{i,2j} )
여기서 컨텍스트 벡터 c_i를 마지막 어노테이션 h_Tx로 고정하면 이 모델은 그대로 RNN 인코더-디코더가 된다는 점을 논문은 명시한다. 즉 어텐션 구조는 기존 인코더-디코더를 특수 케이스로 포함하는 일반화다.
모델 크기는 다음과 같다.
| 하이퍼파라미터 | 값 |
|---|---|
| 은닉층 크기 n | 1000 |
| 단어 임베딩 차원 m | 620 |
| 딥 아웃풋 maxout 은닉층 크기 l | 500 |
| 정렬 모델 은닉 유닛 수 | 1000 |
파라미터 초기화는 순환 가중치 행렬을 랜덤 직교 행렬로 초기화했다. W_a와 U_a는 평균 0, 표준편차 0.001인 가우시안에서 샘플링했고, v_a와 모든 편향 벡터는 0으로 초기화했다. 그 외 가중치 행렬은 평균 0, 표준편차 0.01인 가우시안에서 샘플링했다.
실험 설정
데이터셋
영어-프랑스어 번역 과제에서 ACL WMT ‘14가 제공하는 이중 언어 병렬 코퍼스를 사용해 평가했다. 비교 대상으로 Cho et al.(2014a)이 제안한 RNN 인코더-디코더의 성능도 같은 학습 절차와 같은 데이터셋으로 함께 보고했다.
WMT ‘14의 영어-프랑스어 병렬 코퍼스 구성은 다음과 같다.
| 코퍼스 | 규모 |
|---|---|
| Europarl | 6100만 단어 |
| news commentary | 550만 단어 |
| UN | 4억 2100만 단어 |
| 크롤링 코퍼스 1 | 9000만 단어 |
| 크롤링 코퍼스 2 | 2억 7250만 단어 |
| 전체 합계 | 8억 5000만 단어 |
Cho et al.(2014a)의 절차를 따라 Axelrod et al.(2011)의 데이터 선택 방법으로 결합 코퍼스를 3억 4800만 단어 규모로 축소했다. 언급한 병렬 코퍼스 외에 단일 언어 데이터는 사용하지 않았다. 훨씬 큰 단일 언어 코퍼스로 인코더를 사전학습하는 것이 가능할 수 있지만 이 논문에서는 시도하지 않았다.
news-test-2012와 news-test-2013을 이어 붙여 개발(검증) 세트를 만들고, WMT ‘14의 news-test-2014를 테스트 세트로 사용했다. 테스트 세트는 학습 데이터에 없는 3003개 문장으로 구성된다. 통상적인 토크나이제이션 후 각 언어에서 가장 빈번한 3만 개 단어의 숏리스트를 사용해 모델을 학습시켰다. 숏리스트에 없는 단어는 모두 특수 토큰 [UNK]로 매핑했다. 소문자화나 어간 추출 같은 추가 전처리는 적용하지 않았다.
모델 구성과 학습 절차
두 종류의 모델을 학습시켰다. 하나는 RNN 인코더-디코더(RNNencdec)이고, 다른 하나는 제안 모델인 RNNsearch다. 각 모델을 두 번씩 학습시켰는데, 먼저 길이 30단어 이하 문장으로(RNNencdec-30, RNNsearch-30), 그다음 길이 50단어 이하 문장으로(RNNencdec-50, RNNsearch-50) 학습했다.
| 항목 | 설정 |
|---|---|
| RNNencdec 인코더/디코더 | 각각 1000개 은닉 유닛 |
| RNNsearch 인코더 | 순방향, 역방향 RNN 각각 1000개 은닉 유닛 |
| RNNsearch 디코더 | 1000개 은닉 유닛 |
| 출력 확률 계산 | maxout 은닉층 1개를 갖는 다층 네트워크 |
| 최적화 | 미니배치 SGD + Adadelta |
| Adadelta 파라미터 | epsilon 1e-6, rho 0.95 |
| 미니배치 크기 | 문장 80개 |
| 그래디언트 클리핑 | L2 norm 임계값 1 |
| 학습 기간 | 모델당 약 5일 |
| 디코딩 | 빔 서치 |
두 모델 모두 은닉 유닛은 게이트 은닉 유닛을 의미한다. 학습 시 구현 특성상 각 업데이트는 미니배치 내 가장 긴 문장 길이에 비례하는 시간을 소요한다. 계산 낭비를 줄이기 위해 20번째 업데이트마다 1600개 문장 쌍을 가져와 길이 순으로 정렬한 뒤 20개 미니배치로 분할했다. 학습 데이터는 학습 시작 전 한 번 섞은 뒤 이 방식으로 순차 순회했다.
학습이 끝나면 조건부 확률을 근사적으로 최대화하는 번역을 찾기 위해 빔 서치를 사용한다.
주요 결과
BLEU 정량 결과
테스트 세트에서 측정한 BLEU 점수는 다음과 같다. All 열은 전체 문장에 대한 점수이고, No UNK 열은 문장 자체와 참조 번역 모두에 미지 단어가 없는 문장에 대한 점수다.
| Model | All | No UNK |
|---|---|---|
| RNNencdec-30 | 13.93 | 24.19 |
| RNNsearch-30 | 21.50 | 31.44 |
| RNNencdec-50 | 17.82 | 26.71 |
| RNNsearch-50 | 26.75 | 34.16 |
| RNNsearch-50 (장기 학습) | 28.45 | 36.15 |
| Moses | 33.30 | 35.63 |
RNNsearch-50 (장기 학습)은 개발 세트 성능이 더 이상 개선되지 않을 때까지 훨씬 오래 학습시킨 모델이다. 미지 단어가 없는 문장만 평가할 때는 모델이 [UNK] 토큰을 생성하지 못하도록 막았다.
모든 경우에서 제안 모델 RNNsearch가 기존 RNNencdec를 능가한다. 더 중요한 것은, 알려진 단어로만 구성된 문장만 고려할 때 RNNsearch의 성능이 기존 구문 기반 번역 시스템인 Moses만큼 높다는 점이다. Moses는 이 실험에서 사용한 병렬 코퍼스에 더해 4억 1800만 단어의 별도 단일 언어 코퍼스를 사용한다는 점을 감안하면 유의미한 성취다.
문장 길이에 따른 성능
제안 방식의 동기 중 하나는 기본 인코더-디코더가 고정 길이 컨텍스트 벡터를 사용한다는 점이었다. 저자들은 이 제약이 긴 문장에서 기본 인코더-디코더의 성능을 떨어뜨린다고 추측했다.
테스트 세트 문장 길이에 따른 BLEU 점수 측정 결과, RNNencdec의 성능은 문장 길이가 길어질수록 급격히 하락했다. 반면 RNNsearch-30과 RNNsearch-50은 모두 문장 길이에 훨씬 견고했다. 특히 RNNsearch-50은 길이 50 이상 문장에서도 성능 저하가 나타나지 않았다.
제안 모델의 우위는 RNNsearch-30이 RNNencdec-50보다도 높은 BLEU를 기록했다는 사실로 한 번 더 확인된다. 30단어 이하로만 학습한 어텐션 모델이 50단어까지 학습한 고정 벡터 모델을 앞선 것이다.
정렬 시각화 정성 분석
제안 방식은 생성된 번역의 단어와 소스 문장의 단어 사이 소프트 정렬을 직관적으로 들여다볼 수 있는 수단을 제공한다. 어노테이션 가중치 alpha_ij를 시각화하면 된다. 행렬의 각 행은 특정 타깃 단어를 생성할 때 소스 문장의 어느 위치가 더 중요하게 고려되었는지를 보여준다.
영어와 프랑스어 사이 단어 정렬은 대체로 단조(monotonic)여서 행렬 대각선을 따라 강한 가중치가 나타난다. 그러나 자명하지 않은 비단조 정렬도 다수 관찰된다. 형용사와 명사는 프랑스어와 영어에서 어순이 다른데, 모델은 구 [European Economic Area]를 [zone economique europeenne]으로 정확히 번역했다. RNNsearch는 [zone]을 [Area]에 올바르게 정렬하면서 두 단어([European], [Economic])를 건너뛴 뒤, 한 단어씩 되돌아보며 구 전체를 완성했다.
하드 정렬 대비 소프트 정렬의 강점은 [the man]이 [l’ homme]로 번역된 사례에서 분명히 드러난다. 어떤 하드 정렬이든 [the]를 [l’]에, [man]을 [homme]에 매핑할 것이다. 그러나 [the]가 [le], [la], [les], [l’] 중 무엇으로 번역되어야 하는지 결정하려면 [the] 다음 단어를 봐야 하므로 이런 매핑은 번역에 도움이 되지 않는다. 소프트 정렬은 모델이 [the]와 [man]을 동시에 보게 함으로써 이 문제를 자연스럽게 해결하고, 실제로 모델은 [the]를 [l’]로 올바르게 번역했다.
소프트 정렬의 추가 이점은 서로 길이가 다른 소스 구와 타깃 구를 자연스럽게 다룬다는 것이다. 일부 단어를 [NULL]로 매핑하거나 [NULL]에서 가져오는 비직관적인 방식이 필요하지 않다.
긴 문장 번역 사례
테스트 세트의 다음 소스 문장을 보자.
1
2
3
An admitting privilege is the right of a doctor to admit a patient to a hospital
or a medical centre to carry out a diagnosis or a procedure, based on his status
as a health care worker at a hospital.
RNNencdec-50은 [a medical center]까지는 올바르게 번역했으나 그 이후로 원문의 의미에서 벗어났다. 예를 들어 소스의 [based on his status as a health care worker at a hospital]을 [en fonction de son etat de sante], 즉 “그의 건강 상태에 근거하여”로 바꿔 버렸다. 반면 RNNsearch-50은 세부 사항을 누락하지 않고 입력 문장의 의미 전체를 보존한 번역을 생성했다.
두 번째 예시는 Disney의 시리즈 수명 연장 노력에 관한 문장이다. RNNencdec는 약 30단어를 생성한 뒤부터 실제 의미에서 벗어나기 시작했고, 닫는 따옴표가 없는 기본적인 실수까지 나타났다. RNNsearch-50은 이 긴 문장도 정확하게 번역했다.
부록 C에는 RNNencdec-50, RNNsearch-50, 그리고 2014년 8월 27일 시점의 Google Translate 번역과 참조 번역을 함께 제시한 30단어 이상 장문 사례들이 정리되어 있다.
이러한 정성적 관찰은 앞의 정량 결과와 함께, RNNsearch 아키텍처가 표준 RNNencdec보다 긴 문장을 훨씬 신뢰성 있게 번역한다는 가설을 확인해 준다.
학습 통계
논문 부록에 정리된 학습 통계는 다음과 같다.
| Model | Updates (10^5) | Epochs | Hours | GPU | Train NLL | Dev. NLL |
|---|---|---|---|---|---|---|
| RNNenc-30 | 8.46 | 6.4 | 109 | TITAN BLACK | 28.1 | 53.0 |
| RNNenc-50 | 6.00 | 4.5 | 108 | Quadro K-6000 | 44.0 | 43.6 |
| RNNsearch-30 | 4.71 | 3.6 | 113 | TITAN BLACK | 26.7 | 47.2 |
| RNNsearch-50 | 2.88 | 2.2 | 111 | Quadro K-6000 | 40.7 | 38.1 |
| RNNsearch-50 (장기 학습) | 6.67 | 5.0 | 252 | Quadro K-6000 | 36.7 | 35.2 |
한 번의 업데이트는 미니배치 하나로 파라미터를 한 번 갱신하는 것에 해당하고, 1 에포크는 학습 세트를 한 번 통과하는 것이다. NLL은 학습 세트 또는 개발 세트 문장들의 평균 조건부 로그 확률이며, 문장 길이가 서로 다르다는 점에 유의해야 한다.
주목할 점은 RNNsearch가 같은 시간 내에 RNNenc보다 훨씬 적은 업데이트와 에포크로 더 낮은 개발 세트 NLL에 도달했다는 것이다. 어텐션 계산으로 업데이트당 비용은 늘었지만 학습 효율은 오히려 개선되었다.
관련 연구
출력 심볼을 입력 심볼에 정렬하는 유사한 접근은 Graves(2013)가 필기 합성(handwriting synthesis) 맥락에서 제안한 바 있다. 필기 합성은 주어진 문자 시퀀스의 필기를 생성하는 과제다. Graves는 가우시안 커널 혼합으로 어노테이션 가중치를 계산했고, 각 커널의 위치, 폭, 혼합 계수를 정렬 모델이 예측하게 했다. 다만 그의 정렬은 위치가 단조적으로 증가하도록 제약되어 있었다.
이 논문의 접근과의 주된 차이는, Graves(2013)에서는 어노테이션 가중치의 모드가 한 방향으로만 이동한다는 점이다. 기계번역 맥락에서 이는 심각한 제약인데, 문법적으로 올바른 번역을 만들려면 장거리 재배열이 자주 필요하기 때문이다(예: 영어-독일어). 반면 이 논문의 접근은 번역의 각 단어마다 소스 문장의 모든 단어에 대한 어노테이션 가중치를 계산해야 한다.
기계번역에서 신경망의 사용 자체는 Bengio et al.(2003)의 신경 확률적 언어 모델 이후 널리 이루어졌다. 그러나 신경망의 역할은 대체로 기존 통계 기계번역 시스템에 단일 피처를 제공하거나 후보 번역 리스트를 재순위화하는 데 국한되어 있었다. Schwenk(2012)는 순전파 신경망으로 소스-타깃 구 쌍의 점수를 계산해 구문 기반 통계 기계번역의 추가 피처로 사용할 것을 제안했고, Kalchbrenner and Blunsom(2013)과 Devlin et al.(2014)은 신경망을 기존 번역 시스템의 하위 구성 요소로 성공적으로 사용했다고 보고했다.
이 논문은 기존 시스템의 일부로 신경망을 사용하는 대신, 모델이 독립적으로 동작하며 소스 문장으로부터 번역을 직접 생성하는 완전히 새로운 번역 시스템을 지향한다는 점에서 앞선 연구들과 근본적으로 갈라진다.
한계와 주의사항
첫째, 미지 단어와 희귀 단어 처리가 미해결 과제로 남는다. 논문은 결론에서 향후 과제로 이 문제를 명시적으로 지목했다. BLEU 결과에서도 전체 문장 기준으로는 RNNsearch-50 (장기 학습)의 28.45가 Moses의 33.30에 미치지 못하지만, 미지 단어가 없는 문장만 보면 36.15로 Moses의 35.63을 넘어선다. 이 격차 자체가 3만 단어 숏리스트와 [UNK] 처리의 한계를 그대로 드러낸다.
둘째, 계산 비용이다. 정렬 모델은 길이 Tx, Ty인 문장 쌍마다 Tx * Ty번 평가되어야 한다. 번역 과제에서는 입력과 출력 문장 대부분이 15~40단어라 이 단점이 심각하지 않지만, 논문은 이것이 다른 과제로의 적용 가능성을 제한할 수 있다고 명시했다. 단일 은닉층 MLP를 정렬 모델로 쓰고 U_a h_j를 미리 계산하는 것은 이 비용을 줄이기 위한 설계 선택이다.
셋째, 평가 범위가 영어-프랑스어 단일 언어쌍에 한정된다. 논문 스스로 장거리 재배열이 자주 필요한 예로 영어-독일어를 들지만, 해당 언어쌍 실험은 수행되지 않았다.
넷째, Moses와의 비교에는 학습 데이터 조건 차이가 있다. Moses는 병렬 코퍼스 외에 4억 1800만 단어의 단일 언어 코퍼스를 추가로 사용하는 반면, 이 논문의 모델들은 단일 언어 데이터를 전혀 쓰지 않았다. 따라서 두 시스템의 BLEU를 동일 조건 비교로 해석해서는 안 된다.
다섯째, RNNsearch-50 (장기 학습)은 개발 세트 성능이 정체될 때까지 다른 모델보다 훨씬 오래(252시간) 학습되었다. 따라서 이 행의 수치를 동일 학습 예산 하의 비교로 읽으면 안 된다.
결론
기존 인코더-디코더 방식은 입력 문장 전체를 고정 길이 벡터로 인코딩하고 그로부터 번역을 디코딩한다. 이 논문은 Cho et al.(2014b)과 Pouget-Abadie et al.(2014)의 실증 연구를 근거로 고정 길이 컨텍스트 벡터가 긴 문장 번역에 문제가 된다고 추측하고, 이를 해결하는 새 아키텍처를 제안했다.
핵심은 각 타깃 단어를 생성할 때 모델이 입력 단어들, 정확히는 인코더가 계산한 어노테이션들의 집합을 소프트 검색하도록 한 것이다. 이로써 모델은 소스 문장 전체를 고정 길이 벡터로 인코딩할 필요에서 벗어나고, 다음 타깃 단어 생성에 관련된 정보에만 집중할 수 있게 된다. 전통적인 기계번역 시스템과 달리 정렬 메커니즘을 포함한 번역 시스템의 모든 구성 요소가 올바른 번역의 로그 확률을 높이는 방향으로 공동 학습된다.
영어-프랑스어 번역에서 RNNsearch는 문장 길이와 무관하게 RNNencdec를 유의미하게 능가했고, 소스 문장 길이에 훨씬 견고했다. 소프트 정렬에 대한 정성 분석에서는 모델이 올바른 번역을 생성하면서 각 타깃 단어를 소스 문장의 관련 단어 또는 그 어노테이션에 정확히 정렬함을 확인했다.
무엇보다 제안 방식은 기존 구문 기반 통계 기계번역에 필적하는 번역 성능을 달성했다. 신경망 기계번역이라는 계열 전체가 그해에 막 제안되었다는 점을 고려하면 놀라운 결과다. 저자들이 도입한 정렬 가중치 alpha_ij와 컨텍스트 벡터 c_i 계산 구조는 이후 트랜스포머를 비롯한 현대 아키텍처 전반의 기반이 되었다.