CS224N - Natural Language Generation

홍종현·2022년 6월 27일
1

CS224N

목록 보기
8/8

이번 lecture의 목차는 다음과 같습니다.

• What is NLG?
• Formalizing NLG: a simple model and training algorithm
• Decoding from NLG models
• Training NLG models
• Evaluating NLG Systems
• Ethical Considerations

0. What is NLG?

NLG는 자연어처리(NLP)의 한분야로 각 task에 맞는 text를 생성하는 분야입니다. NLG의 task로는 Machine Translation, Dialougue system, Summarization, Data-to-Text Generation, Visual Description, Creative Generation, 등이 있습니다.

1. Basics of natural language generation

일반적인 NLG는 위와 같이 특정 시점의 단어 token을 예측하기 위해 이전 token들을 입력으로 사용하는, auto-regressive한 구조를 가집니다.

이는 각 time-step에서 단어에 대한 score를 계산학고 이 score를 softmax 함수를 통과시켜 확률분포를 계산합니다.

P(yt=wy<t)=exp(Sw)wVexp(Sw)P(y_t = w|{y_{<t}}) = \frac{exp(S_w)}{\sum_{w'\in V }exp(S'_w)}

이는 예측된 token과 실제 token의 negative log-likelihood를 최소화하는 방식으로 학습됩니다.

Teacher Forcing

또한 학습 시 teacher forcing이라는 방법론을 사용합니다. 이는 학습 시 model이 예측한 token이 아닌 target sentence의 token을 다음 단어 생성을 위한 input으로 사용하는 방식입니다. 이를 통해 잘못 생성된 token으로 인해 계속 잘못된 단어가 생성되는 것을 막아줄 수 있습니다. Decoding 시에는 예측된 token을 다음 시점의 input으로 사용합니다.

2.Decoding from NLG models

2.1 Argmax Decoding (Greedy methods)

다음은 decoding과정에 대해 설명드리겠습니다. 먼저 각 time-step별 vocab의 단어 중 확률이 높은 단어를 선택합니다.

y^t=argmaxwVP(yt=wy<t)\hat{y}_t = argmax_{w\in V}P(y_t = w|y_{<t})

그러나 요즘에는 argmax방식보다 더 많은 후보군을 비교하는 방법인 beam search방식을 더 많이 사용하고 있습니다.

이는 매 time-step마다 log-likelihood가 높은 k개의 후보 중 선택을 반복하여 token을 선택하는 방법으로, argmax보다 더 자연스러운 문장을 생성할 수 있습니다.

2.3 Greedy Methods get repetitive

Greedy methods는 비슷한 token을 계속 생성한다는 문제점을 갖고 있습니다. 위 그럼을 보면 문장의 길이가 길어지면서 비슷한 단어들이 계속 생성되는것을 볼 수 있습니다. 이는 작은 time-step별로 확률이 가장 큰 token을 선택했던것이 결국엔 큰 step의 관점에서 보면 부자연스러운 문장을 생성할 수 있는것을 알 수 있습니다.

위의 그래프를 보면 생성 문장의 길이가 길어질수록 transformer 기반의 GPT가 더 낮은 확률값을 가지게 되는것을 알 수 있습니다. 이는 model이 더 강한 확신을 갖고 text를 생성하는것으로 볼 수 있습니다. 이는 transformer의 attention 구조가 decoder의 주된 문제점인 bottleneck을 해결하여 이전 step의 embedding을 충분히 사용했기 때문입니다.

How can we reduce repetition?

1. Random Sampling

먼저 random sampling 방식은 model이 예측한 각 token의 확률을 가중치로 사용하여 sampling하는 방식입니다.

2. Decoding: Top-k Sampling

다음은 상위 k개 중 확률값을 가중치로 두고 sampling하는 방식입니다. 보통 k값은 5, 10, 15를 사용하고 k가 클수록 더 많은 문장이 생성되지만 부자연스럽고 k가 작을수록 적은 문장이 생성되지만 자연스럽다는 특징을 가지고 있습니다.

3. Decoding: Top-p Sampling

다음은 누적 확률 P에 속하는 상위 token들을 가지고 sampling하는 방식입니다. P가 클수록 다양하지만 부자연스러운 text가 생성되고 반대로 P가 작을수록 일반적이지만 자연스로운 문장이 생성됩니다.

4. Scaling randomness: Softmax temperature
Pt(yt=w)=exp(Sw/τ)wVexp(Sw/τ)P_t(y_t = w) = \frac{exp(S_w/\tau)}{\sum_{w'\in V }exp(S'_w/\tau)}

다음은 token이 발생할 logit(SS)에 일정한 상수 temperature(τ\tau)로 나눠 distribution을 scaling하는 방법입니다. τ\tau가 클수록 분포가 고르게 되어 다양한 문장을 생성할 수 있고, τ\tau가 작을수록 분포의 높낮이가 커 일반적인 문장을 생성할 수 있습니다.

5. Improving decoding: re-balancing distributions

다음은 training context와 target context를 학습하면서 training context의 representation을 inference시에 model의 예측값을 보정하는 방식입니다.

  • 먼저 test context의 representation vector와 저장된 training context의 representation의 vector간 거리를 구하고 가까운 k개의 training context vector를 선정합니다.

  • 선정한 training sample의 target에 해당하는 확률을 negative distance의 exponential값으로 확률값을 구합니다.

  • 만약 동일한 class가 존재한다면, 추가로 aggregation하여 test context의 예측과 interpolation하여 최종 예측값을 얻을 수 있습니다.

이러한 KNN-LM 방식으로 training representation을 저장하여 사용하므로 decoding시에 시간을 단축할 수 있다는 장점도 존재합니다.

6. Backpropagation-based distribution re-balancing

이 model은 Plug & Play Language Model의 약어로, PPLM이라고 합니다. 이는 전에 소개했던 구조를 변경하는 방법과 달리 새로운 model을 사용하여 성능을 개선합니다.

  • 기존 학습한 model의 생성된 token을 Attribute model로 전달합니다.

  • Attribute model에서 학습과정에 대한 gradient는 기존 model에서 생성된 latent vector를 update합니다.

  • 이렇게 update된 latent vector를 통하여 새로운 token을 생성할 수 있습니다.

3. Training NLG models

3.1 Unlikelihood Training

Unlikelihood Training을 사용하여 이미 생성된 token이 생성될 확률을 낮추는 일종의 penalty를 기존 loss function에 추가했습니다.

LULt=ynegClog(1P(yneg)y<t)L_{UL}^t = -\sum_{y_{neg}\in C}log(1-P(y_{neg}) | {y*}_{<t})
LULEt=LMLEt+aLULtL_{ULE}^t = L_{MLE}^t + aL_{UL}^t

위와 같은 penalty로 반복되는 단어와 구의 생성을 막을 수 있고 다양성을 증가시킬 수 있습니다.

3.2 Exposure Bias

NLG에서는 teacher forcing으로 인해 train시와 test시와 다르기 때문에 model이 불필요한 bias를 학습하게 된다는 문제가 존재합니다.

1. Scheduled sampling

이에 대한 해결책으로 먼저 Scheduled sampling이라는 방법이 소개됩니다. 이는 특정한 확률 P로 이전 생성된 token을 다음 step의 input으로 사용하는 방식입니다. 이 확률 P는 학습이 진행될수록 model의 성능이 좋아지기 떄문에 점점 더 작은 값을 사용하게되고 model이 예측한 token이 다음 time-step의 input으로 사용되게되고 test와 똑같이 만들어주기 떄문에 bias를 줄일 수 있는 효과를 가지고 있습니다.

2. Dataset Aggregation

다음은 Dataset Aggregation으로 train하는 동안 data를 추가적으로 늘려서 bias를 줄이는 방법입니다.

3. Sequence re-writing

Train dataset으로 구축한 prototype set을 text 생성에 사용하는 방법입니다. Sampling된 prototype set을 adding, removing, modifying tokens방법을 사용하여 변형합니다.

4. Reinforcement Learning

Reinforcement Learning 방법은 NLG model을 Markov decision process로 구성하는 방법입니다.
Language Model의 주요 metric인 BLEU, ROUGE는 연속적으로 연결되어 있지않아 back propagation을 사용할 수 없고 일반적으로 학습에 사용될 수 없습니다. 하지만 language model을 Markov decision process로 구성하면 이러한 metric을 reward로 사용할 수 있습니다.

LRL=t=1Tr(y^t)logP(y^ty;yt^<t)L_{RL} = -\sum_{t=1}^Tr(\hat{y}_t)logP(\hat{y}_t|{y*};{\hat{y_t}_{<t}})

이러한 방법으로 강화학습을 진행 할 경우, model이 shortcut을 학습하지 않도록 reward function을 잘 정의해야 합니다.

4. Evaluating NLG Systems

NLG model을 평가하는 방법으로 크게 세가지가 존재합니다.

  • Content Overlap Metrics
  • Model-based Metrics
  • Human Evaluations

4.1 Content overlap metrics

가장 대표적인 지표는 생성된 text를 n-gram overlap으로 비교하는 BLEU score와 ROUGR score가 존재합니다.

BLEU

먼저 BLEU score입니다.

BLEU=min(1,예측된text의길이(단어의개수)trustext의길이(단어의개수))(i=1nprecisioni)1nBLEU = min(1, \frac{예측된 text의 길이(단어의 개수)}{trus text의 길이(단어의 개수)})(\prod_{i=1}^nprecision_i)^{\frac{1}{n}}
  • 실제 문장대비 짧은 문장을 생성할 경우 왼쪽 항처럼 penalty를 부여합니다.

  • N-gram precision의 기하평균을 사용합니다.

  • NMT에서 자주 사용되는 metric입니다.

ROUGE

다음은 ROUGE score입니다.

  • N-gram recall을 사용합니다.
  • Label과 summar를 비교하여 성능을 계산합니다.
  • ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S 등 다양한 지표가 있습니다.

이러한 N-gram overlap metrics엔 한계점이 존재했는데, 만약 output text가 길 때 적절한 지표로 사용되기 어렵고 문맥의 의미를 반영하지 못합니다. 그래서 등장한것이 model-based metrics입니다.

4.2 Model-based metrics

Word Mover's Distance

Word Mover's Distance 지표는 생성된 text와 기존 reference text의 단어 혹은 문장의 semantic similarity를 계산할 수 있습니다. 모든 단어의 embedding vector들의 최소 거리 합으로 score를 계산하는 방식입니다.

BERTSCORE

다음은 BERTSCORE입니다. 이는 pre-trained된 BERT를 이용하여 성능을 계산하는 방법인데, reference와 candidate의 contextual embedding을 구하고 모든 pair에 대해 cosine similarity를 계산하여 정밀도와 재현율을 구합니다. 그리고 빈도수가 낮은 token이 document에서 키워드가 될 수 있기 때문에 IDF(Inverse document frequency score)값을 추가로 이용하는 방법 또한 존재합니다.

0개의 댓글