하나의 신경망이 원문을 받아 번역문을 통째로 내놓도록 학습시키는 기계번역 방식이다. 2014년 무렵부터 이전의 통계 기반 방식을 빠르게 대체했다.

통계 기반 방식(SMT)은 번역을 여러 부품으로 나눠 각각 학습시켰다. 구절 사전, 정렬 모델, 언어 모델, 재정렬 모델을 따로 만들고 가중치를 조합해 최종 점수를 냈다. 부품마다 목표가 달라 전체 품질과 각 부품의 성능이 어긋나기 쉬웠다.

NMT 는 이 부품들을 하나의 신경망으로 대체하고, 번역 품질에 직접 대응하는 손실 하나로 전체를 함께 학습시킨다.

구조의 변천

encoder-decoder — 인코더가 원문을 벡터 하나로 압축하고, 디코더가 그 벡터에서 번역문을 생성한다. 문장이 길어지면 벡터 하나에 담기지 않아 뒷부분이 뭉개진다.

attention 도입 — 디코더가 매 단어를 만들 때 원문의 어느 부분을 볼지 매번 고르게 한다. 벡터 하나에 모든 것을 담을 필요가 없어져 긴 문장의 품질이 크게 올랐다.

transformer — 순환 구조를 없애고 attention 만으로 구성했다. 토큰을 순서대로 처리할 필요가 사라져 학습을 병렬화할 수 있게 됐고, 지금 언어모델 전반의 기본 구조가 됐다.

어휘 문제와 subword

번역은 출력 쪽에서도 어휘 사전이 필요하다. 사전을 키우면 출력층 계산이 그만큼 비싸지고, 작게 잡으면 out-of-vocabulary 가 늘어난다. 생성 모델에서는 OOV 가 곧 복원 불가능한 출력이라 더 치명적이다.

그래서 NMT 는 subword 단위를 일찍부터 표준으로 삼았다. SentencePiece 는 원문을 미리 단어로 나누지 않고 raw text 에서 바로 subword 사전을 만들어, 띄어쓰기가 없는 언어까지 같은 방식으로 다룬다. 같은 문장을 여러 방식으로 쪼개 학습시키는 subword regularization 은 토크나이징이 조금 달라져도 흔들리지 않게 만들어 정확도를 올린다.