본문 바로가기
자연어처리/개념 정리

Text generation(NLP) 간단 개념 정리

by 아인슈페너먹고싶다 2022. 9. 21.

 

Text generation은 NLP 분야에서 다양하게 사용되고 있다.

 

 

그 예시로는 

 

 

1) Machine Translation

2) Open-Ended Generation

3) Summarization

4) Dialogue System

5) Q&A

 

 

 

그 중 

 

Document Summarization 에는 두 종류로 나눠서 볼 수 있다.

 

1) Extractive Summarization 

 

추출적 요약은 주어진 원문 내에서 단어들을 뽑아 문장을 구성해 요약하는 방법이다.

 

중요한 단어들을 뽑을 수 있지만 자연스러운 연결이 힘들 때도 있다.

 

 

 

2) Abstractive Summarization

 

추상적 요약은 주어진 원문을 기반으로 요약한 새로운 문장을 생성하는 방법이다. 

 

요즘엔 Extractive Summarization이 더 각광받는 추세라고 한다.

 

 

Generation model 중 가장 유명한 것은 저번에 배웠던 seq2seq model이다.

 

 

 

 

이 과정에서 새로 등장하는 개념으로 Teacher Forcing이 있는데

 

Teacher Forcing은 t 시점의 출력이 t+1 시점의 입력으로 사용되는 훈련 기법이다.

 

주어진 sequence를 전체적으로 배울 수 있도록 하는 것이 핵심이고

 

좀 더 빠르고 안정적이며 학습에 효율적이다. 

 

 

하지만 학습단계와 테스트 단계의 차이 때문에 (테스트 단계에서는 teacher forcing으로 교정이 불가)

 

잘못 된 예측을 통해 뒤 sequence까지 잘못된 추론에 영향을 주는 exposure bias 문제가 발생할 수 있다.

 

 


 

 

 

이제 인코더로부터 결과값을 받아 처리하는

 

Decoding Strategy엔 

Likelihood base decoding과 Sampling-based Decoding이 있다.

 

 

 

먼저 Likelihood base Decoding에는 

 

1) Greedy decoding

 

 Fully connected Layer를 통과한 결과에 Softmax를 취한 가장 높은 확률값을 선택하는 방법

 

2) Beam search

 

하나가 아닌 k 개의 beam size 만큼의 가능성을 두어 다양성을 주고

 

후에 가장 합리적인 sequence를 판단하는 방법

 

 

 

 

Beam search의 장

점은 high recall value를 가질 수 있다는 점이지만

 

단점은 연산량이 늘어나면 생성 속도가 줄어들고 문장이 길어져 Underflow해질 가능성이 있다.

 

 

 

 

또한 이런 LIikelihood base Decoding 방법은

 

지루하다는, 결과값이 예측 가능하고 뻔함하여 다양한 변수를 생성할 수 없다는 단점이 있다.

 

 

그래서 이에 대한 솔루션으로 Sampling-based decoding strategy가 있는데 이는

 

Randomness를 추가하여 너무 generic하지 않게끔 해준다.

 

 

1) Pure sampling

 

해당 시점에 확률분포로부터 랜덤하게 sampling 방법

 

 

2) Top-k sampling 

 

해당 시점에 가장 확률값이 높은 Top -k개 안에서만 추출하는 방법

 

 

3) Top-p sampling (nucleus sampling)

 

확률값 p를 임의로 정한 후 높은 순서대로 확률값이 p가 될 경우 까지만 k개를 추출하는 방법

 

 


 

Text generation 평가 지표에서는 

 

Word-level similarity

 

BLEU, ROUGE, METEOR

 

 

Embedding Similarity

 

BERTScore, Word Average 등이 존재하며

 

마지막으로 

 

수없이 들어온 PPL(Perplexity)가 있다.

 

 

 

평가지표에 대해서는 차후에 더 설명할 예정이다.

 

오늘은 여기서 꿑

댓글