Search
👻

[12/1(목)] Lecture 7 : Translation, Seq2Seq, Attention

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 ModelLanguage 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 ModelLanguage 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은 위 그림과 같이 EncoderDecoder로 구성
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를 스스로 학습할 수 있다.