7-1. Machine Translation
•
소스 문장(x)을 타겟 문장(y)로 번역하는 작업을 Model이 수행하는 것.
•
e.g. 프랑스어(Input : Source) → 영어(Output : Target)
•
군사목적을 위해서 연구가 시작되었다.
•
처음에는 단순히 동일한 뜻을 가진 단어를 Target의 언어로 대체하는 방식을 사용
7-2. Statistical Machine Translation
•
1990년대부터 2010년대까지는 통계를 기반으로 확률 Model을 사용하기 시작
•
입력 문장(x)가 주어졌을 때, 이에 대한 조건부 확률을 최대화하는 번역 문장(y)를 찾는 형태
•
Bayes Rule를 이용하여 Translation Model과 Language Model로 분리
◦
Bayes Rule : Bayesian Deep Learning에서 가장 기본이 되는 개념, 조건이 주어졌을 때, 조건부 확률을 구하는 것
◦
Posterior(사후 확률) : 단서가 주어졌을 때, 대상이 특정 클래스에 속할 확률, 우리가 구하고자 하는 값 (위 그림에서는 P(A|B))
◦
Likelihood(우도) : 각 클래스에서 우리가 활용할 단서가 어떤 형태로 분포되어 있는지, Posterior를 구하는데 중요한 단서 (위 그림에서는 P(B|A))
◦
Prior(사전확률) : 사전 정보로 주어지거나, 주어지지 않는다면 연구자의 사전지식을 통해 정해주어야하는 값(위 그림에서는 P(A))
◦
+) 여기서 P(B)는 정규화상수(Normalization Constant) 또는 증거(Evidence)라고한다.
•
아래 그림이 의미하는바 명확히 이해 안된다.
•
각 Model의 역할
◦
Translation Model
▪
각 단어와 구가 어떻게 번역이 되어야할지를 병렬 데이터로부터 학습
◦
Language Model
▪
가장 적합한 문장을 생성하도록 단일 언어로부터 학습
◦
기본적으로 SMT는 많은 양의 학습 데이터를 필요로 한다.
◦
SMT model은 번역할 언어(Source)와 번역될 언어(Target) 단어 단위로 Mapping할 때, 단어의 배열정보를 담을 수 있는 Alignment를 사용한다.
•
1:1로 Mapping되는 경우는 거의 존재하지 않음(위의 그림과 같이)
•
다음과 같은 대응관계의 경우로 인해 SMT의 성능이 떨어질 수 있다.
◦
No counterpart(대응하는 단어가 없는 경우)
◦
Many-to-One(여러개가 하나에 대응하는 경우)
◦
One-to-Many(하나가 여러개에 대응하는 경우)
◦
Many-to-Many(여러개가 여러개에 대응하는 경우)
•
학습한 Translation Model과 Language Model을 통해 번역문을 생성하는 과정을 Decoding이라고 한다.
•
Decoding에도 여러 방법이 존재
◦
가능한 모든 번역문의 확률을 비교하는 것은 많은 계산량을 요구
◦
여러 독립적인 가정을 모델에 부여하고, Dynamic Programming을 통해 최적의 번역문을 찾는 방법을 주로 사용
•
SMT에는 여러 한계점이 존재
◦
Model이 많이 복잡하다.
◦
Feature Engineering을 필요로 한다.
◦
추가적인 Resource를 필요로 한다.(동등한 phrase)
◦
사람의 노력이 많이 필요하다. (병렬 데이터셋)
7-3. Neural Machine Translation
•
이러한 한계점을 극복한 NMT가 등장
•
NMT의 특징
◦
Subcomponent(Translation Model, Language Model)가 따로 필요하지 않은 Single End-To-End Neural Network로 구성
◦
2개의 RNN으로 구성된 Seq2Seq 모델
7-3-1. Seq2Seq model
Seq2Seq Model은 위 그림과 같이 Encoder와 Decoder로 구성
•
Encoder
◦
입력된 Source text(번역할 문장)를 Encoding한다.
◦
마지막 Cell의 Output이 Decoder의 첫번째 Cell의 Hidden State(h0)로 사용되는데, 이를 Context Vector라고 부른다.
◦
Context Vector안에 번역해야할 문장에 대한 모든 정보가 들어있다.
•
Decoder
◦
Encoding을 Condition으로 Target Text(번역된 문장)를 생성하는 역할을 한다.
◦
Train과 Test할 때, 다르게 작동한다.
▪
Train 과정
•
Encoder의 마지막 Cell로부터 받은 Context Vector와 실제 정답인 Target Senctence가 출력된다고 알려주면서 훈련
▪
Test 과정
•
Decoder RNN의 Time Step별 Output이 다음 Time Step의 Input으로 사용된다.
•
Seq2Seq Model은 Machine Translation뿐만 아니라 Text를 입력받고 Text를 출력하는 Summarization(문서 요약), Dialogue(대화모델), Parsing(품사 태깅), Code generation(코드 생성)등 여러 Task에서도 많이 사용된다.
•
SMT에서는 Bayes Rule을 통해 Translation Model과 Language Model을 분리한 것과는 다르게 NMT에서는 조건부 확률을 직접 계산한다.
•
End-To-End 학습이 가능하지만, 계산량이 너무 크고 여전히 많은 병렬 Corpus가 필요
•
Seq2Seq model Decoder의 Time Step별 Output은 Target Sentence에 단어를 생성하게 되고, 생성한 단어와 실제 단어의 Negative Log Likelihood를 통해 Loss를 구하게 되고, 0부터 −∞ mapping하여 loss를 최소화한다.
7-3-2. Greedy Decoding
•
앞서 설명한 것처럼 Decoding과정에서 생성될 수 있는 모든 Target Sentence를 비교하는 Exhaustive Search 방식은 계산량이 너무 크기 때문에 Greedy Decoding을 도입한다.
•
각 Timestep별 Argmax 확률을 사용하는 방법이지만, 이상한 문장이 생성될 수 있음.
◦
초장부터 틀려서 문장이 왕창 망가져버릴 수도 있다.
7-3-3. Beam Search Decoding(Top-K Beam Search)
•
그래서 Beam Search Decoding 방법을 많이 사용한다.
•
최적의 번역본을 생성하는 것은 아니지만, Exhaustive Search보다는 효율적으로 계산할 수 있고, Greedy Decoding보다는 더 적합한 번역본을 만들 수 있다.
•
먼저 <sos> token이 들어온 시점에서부터 예측 값의 확률 분포 중 가장 높은 확률 k(2)개를 고른다.
•
그 다음 k(2)개의 beam에서 각각 다음 예측 값의 확률 분포 중 가장 높은 k(2)개를 고른다.
•
그리고 총 k^2개의 자식 노드 중에 누적 확률 순으로 상위 k개를 뽑는다.
•
다시 뽑힌 k개의 자식 노드를 새로운 빔으로 다시 상위 k개의 자식 노드를 만든다.
•
마지막으로 <eos> token이 나올 때까지 반복한다.
•
그러나 <eos> token이 나오기전에 문장이 너무 길어질 경우, 사전에 정의된 max timestep(T)를 정의하기도 한다.
•
또한 log-likelihood로 생성된 문장을 비교할 때, 긴 문장의 합이 짧은 문장보다 작아져 짧은 문장을 우선적으로 선택되는 것을 막기 위해 문장 길이로 나눠 정규화를 해준다.
7-3-4. BLEU(Bilingual Evaluation Understudy)
•
Machine translation 성능을 평가하는 지표로는 대표적으로 BLEU score를 사용한다.
•
실제 문장과 생성된 문장을 비교할 때, N-gram precision 방식이 사용된다.
•
첫번째 항은 짧은 문장에 대한 penalty를 주고 있고, 두번째 항은 n-gram precision에 대한 기하평균
•
한계점?
◦
겉으로만 똑같아야 높은점수 나온다!
▪
절대적인 메트릭은 아니다!
7-3-5. NMT’s Difficulty
•
NMT가 기존 SMT의 한계점을 뛰어 넘었다고 해서 한계점이 없지는 않다.
◦
Out-Of-Vocabulary Words
◦
도메인에 적합하지 않은 Train과 Test Data
◦
긴 텍스트에서 문맥을 제대로 반영하지 못한다.
◦
병렬 언어 데이터 부족
◦
정확한 문장의 의미를 잡지 못한다.
◦
대명사를 파악하지 못한다.
◦
형태소가 일치하지 않는다.
◦
관용표현의 뜻을 담지 못한다.
•
Paper jam : 프린터기에 용지가 낀 것 → 종이가 담긴 잼통
•
관용 표현의 뜻을 담지 못한 예시
•
Bottleneck Problem
•
일반적으로 RNN기반의 모델 구조이기 때문에 Hidden State의 Dimension이 고정된 상태로 계속 정보를 누적하는데, 길어지게 되면 앞부분의 정보가 손실된다.
7-4. Attention
•
Bottleneck문제와 기존 Gradient Vanishing 문제를 해결책으로 attention을 도입했다.
•
이를 통해 Decoder가 각 time step에서 Source Sentence(번역할 문장)의 중요한 부분에 더 집중할 수 있도록 한다.
•
먼저 Encoder의 각 Time Step별 Hidden State와 Decoder의 Hidden state의 유사도를 계산하여 Attention Score를 Softmax 함수를 거쳐 확률값으로 나타낸다.
•
그 다음 Attention Distribution과 Encoder의 Hidden State를 가중합하여 최종 Output을 생성
•
그리고 출력된 Output과 Decoder의 Hidden State를 Concat하여 해당 Time Step의 단어를 만든다.
•
Attention Mechanism을 통해 Source Sentence의 모든 Embedding Vector를 참고하는 구조를 사용하여 Bottleneck 문제를 해결
•
거리가 먼 State에 대해서 Shortcut의 구조를 사용하여 Gradient Vanishing 문제를 줄였다.
•
또한 모델이 정의하기 어려운 Alignment를 스스로 학습할 수 있다.