자연어처리를 위한 Machine Translation

아래 내용은 CS224N 2019 Lecture 8: Machine Translation, Seq2Seq and Attention을 참고하였습니다.

미리 확인해야할 내용


1. What is Machine Translation

Machine Translation은 인간의 언어(Source)를 컴퓨터를 이용하여 다른 언어(Target)로 번역하는 것을 의미합니다.
주요 Machine Translation의 간단한 역사는 다음과 같습니다.

A-brief-history-of-MT.jpeg

(이미지 출처: Luong-Cho-Manning-NMT-ACL2016-v4.pdf)

  • Rule-Based Machine Translation
    Source와 Target 언어를 mapping할 bilingual dictionary
    각 언어의 rule을 이용한 규칙기반 번역
  • Statistical Machine Translation
    Language pair로부터 통계적 패턴 학습
    $argmax_{y}P(y|x)$
  • Neural Machine Translation
    데이터에서 Neural Network 학습
    Sequence to Sequence 모델


2. Machine Translation Model

nmt-01.png

위 그림과 같이 Sequence to Sequence (Seq2Seq) 모델은 Encoder와 Decoder의 행태를 가집니다.

  • Encoder는 Source 언어를 입력받아 Source를 대표하는 하나의 벡터 Source Encoding을 생성합니다.
  • Decoder는 Source Encoding을 조것으로 해서 이해 해당하는 Traget 언어를 생성합니다. (Conditional Language Model)


2.1. Machine Translation Model 학습

Machine Translation을 학습할 때 번역할 원문(Source)을 Encoder에 입력하고 번역문(Target)을 Decoder에서 생성하도록 학습합니다.

nmt-train-01.gif

위 그림과 같이 'Education is the most powerful weapon'을 입력으로 '교육은 가장 강력한 무기 입니다'를 예측하도록 학습하는 과정은 다음과 같습니다.

  1. Encoder에 Source 문장 'Education is the most powerful weapon'을 입력합니다.
  2. Encoder RNN은 Source 문장을 연산하여 Source 문장을 표현하는 하나의 벡터(Encoding of source)를 연산합니다.
  3. Decoder RNN은 Encoding of source를 초깃값으로 Target 문장 '교육은 가장 강력한 무기 입니다'를 생성하도록 학습합니다.
    • Decoder 입력은 Target의 앞에 '[BOS]'를 추가합니다.
    • Decoder 정답은 Target의 뒤에 '[EOS]'를 추가합니다.
    • 이와 같이 하면 각 단어들이 Encoding of source와 Target의 이전 단어들을 보고 다음 단어를 예측하도록 학습이 됩니다.
    • Decoder는 벡터 Encoding of source를 조건으로 문장을 생성하는 Conditional Language Model입니다.

$$ p(y_1,...,y_n|x_1,...,x_m) $$

위 수식의 확률 Encoding of source 벡터를 $v$라고 할 때 Source($x_1,...,x_m$)에 대해서 Target($y_1,...,y_n$)이 발생할 확률은 다음과 같이 계산할 수 있습니다. $$ \begin{equation} \begin{split} &p(y_1,...,y_n|x_1,...,x_m) \\ = \; &p(y_n|v, y_1, ..., y_{n-1}) \cdot ... \cdot p(y_3|v, y_1, y_2) \cdot p(y_2|v, y_1) \end{split} \end{equation} $$

위 수식과 같이 각 확률의 곱으로 표현할 수 있습니다.

  • $p(y_2|v, y_1)$: Encoding of source($v$), '[BOS]'($y_1$)을 입력으로 '교육은'($y_2$)가 발생할 확률
  • $p(y_3|v, y_1, y_2)$: Encoding of source($v$), '[BOS]'($y_1$), '교육은'($y_2$)을 입력으로 '가장'($y_3$)가 발생할 확률
  • ...
  • $p(y_n|v, y_1, ..., y_2)$: Encoding of source($v$), 모든 Target을 입력으로 'EOS'($y_n$)가 발생할 확률

위 내용을 간단하게 수식을 표현하면 다음과 같습니다.

$$ p(y_1,...,y_n|x_1,...,x_m) = \prod_{t=1}^n p(y_t|v,y_1,...,y_{t-1}) $$

loss $J(\theta)$는 Language Model의 loss와 동일합니다.

$$ J(\theta) = {1 \over T} \sum_{t=1}^T -\log \hat{y}_{x_{t+1}}^{(t)} $$

loss는 Decoder에서 다음 단어를 예측하는 Language Model과 같지만 loss가 감소하기 위해서는 조건인 Encoding of source($v$)가 잘 생성되어야 합니다.

2.2. Machine Translation 번역

Machine Translationl에서의 번역은 생성은 Decode에서 한 단어씩 순서대로 생성해서 문장을 완성합니다.

nmt-infer-01.gif

위 그림과 같이 'Education is the most powerful weapon'이라는 문장을 입력으로 번역 문장을 한 단어씩 생성합니다.

  1. Encoder는 'Education is the most powerful weapon'라는 입력 문장을 연산하여 Encoding of source($v$)를 계산합니다.
  2. Decoder는 Encoding of source($v$)와 '[BOS]'를 입력으로 다음 단어를 sampling 합니다. 위 예에서는 '교육은'이 sampling 되었습니다.
  3. Decoder는 sampling 된 '교육은'을 추가해서 Encoding of source($v$)와 '[BOS] 교육은'을 입력으로 다음 단어를 sampling 합니다. 위 예에서는 '가장'이 sampling 되었습니다.
  4. Decoder는 sampling 된 '가장'을 추가해서 Encoding of source($v$)와 '[BOS] 교육은 가장'을 입력으로 다음 단어를 sampling 합니다. 위 예에서는 '강력한'이 sampling 되었습니다.
  5. 이와 같이 순서대로 한 단어씩 생성을 하다가 '[EOS]'가 sampling 되거나 일정한 길이를 넘어가는 경우 문장 생성을 완료합니다.
3.3. Machine Translation 다양성

Machine Translation Model은 아래와 같이 다양한 곳에서 활용됩니다.

  • Summarization (long text → short text)
  • Dialog (user utterance → agent utterance)
  • Parsing (text → parsed sequence)
  • Code generation (text → program code) etc.