Pre-trained Language Model에 다음 두 가지 요소를 추가하고자 한 논문!
External Knowledge (외부 지식)
Controllabiltiy (조절 가능성)
이를 위한 MEGATRON-CNTRL 모델 구성, 총 네 가지 Step에 걸쳐 Text Generation 수행!
구축한 모델을 Story Generation Task에서 검증! 아주 우수!
GPT-2, BERT와 같은 large pre-trained langguage models은 다양한 NLP Task에서 promising result를 보여줌.
그 중에서도 text generation task에서, 이들을 사용한 모델이 long, grammatically correct, and fluent text를 생성한다는 것을 보여줌.
이 모델들을 Fine-tuning 함으로써 다양한 Generation 기반의 downstream tasks은 significant improvements를 보여주었음.
모델은 사람이 자연어를 생성할 때 사용하는 지식들을 사용하지 않음.
이로 인해, 예를 들어 GPT-2 기반의 모델들이 생성하는 문장은 illogical하며 Sotry generation과 같은 지식 기반의 생성 테스크(knowledg-driven generation tasks)에서는 ungrammatical한 결과를 초래함.
이에 따라 이전 연구 (*Guan et al. 2020)에서는 commonsense dataset을 기반으로, 언어 모델에 commonsense knowledge를 도입하려고 했으나, 이는 implicit encoding of knowledge이었음.
결과적으로 모델 학습 단계에서 모델에게 언제, 어떤 external knowledge를 활용해야 하는지는 가르쳐줄 수 없다는 한계가 존재함.
Pre-trained Language Model이 보다 명시적으로(explicit) External Knowledge를 활용할 수 있게 하는 메커니즘이 필요함!
Language Model이 control하기 힘들다는 건 우리 모두 잘 알고 있다~!
이에 따라, 이를 해결하고자 한 과거 연구들이 있었음. (세 편 정도 소개해주지만, 여기서는 Pass)
그러나, 과거 연구는 control하고자 하는 condition을 항상 pre-define해야 했으며, 항상 모델 시작 부분(beginning)에 condition을 한번 주고 rest of the document를 생성하도록 했음.
이 때문에, control를 세부적으로 할 수 없으며, sentence나 sub-document level의 control은 불가능했다는 한계가 존재함.
모델 자체에서 지금 어떤 External Knowledge를 주입할 지 판단할 수 있으면서, 전체 Document가 아닌 Sentence 혹은 Sub-Document 단위의 지식 주입이 가능한 모델이 필요함!
방금 말했던 방향을 갖춘 Controllable Text Generation Framework를 만들자!
근데 특히, Generation Task 중에서도 Story Generation Task에 맞춰서 만들 것임!
우리가 제안할 FrameWork는 총 네 가지 부분으로 구성됨.
1. Keyword Predictor
2. Knowledge Sentence Retriever
3. Contenxtual Knolwedge Ranker
4. Conditional Text Generator
1. Keyword Predictor
2. Knowledge Sentence Retriever
3. Contextual Knowledge Ranker
4. Conditional Text Generator
Knowledge-Base 관련
- : knowledge-base
- : set of knowledge triples (subject, relation, object)
- : knowledge sentence ( = 이며, 는 Template를 의미함.)
[추가 설명]
Triples 은 기존에 구성한 Template에 기반해, Knowledge Sentence 형태로 변환됨.
[Example] (eiffel tower, At-Location, Paris)---> (eiffel tower is at paris.)
이렇게 Triples 형태를 Template를 통해 knowledge sentence로 바꿈으로써, 모델에 효과적으로 external knowledge를 주입시킬 수 있었다고 함.
Story 관련
- : story
- : sequence of individual story sentence
- : keywords associated with story sentence .
- : knowledge associated with , 각각의 은 knolwedge sentence를 의미.
[추가 설명]
키워드는 language model의 Vocabulariy로부터 만들어짐.
키워드나 knowledge sentence는 없을 수도 있음.
keyword하나 당 knowledge sentence 이런거 아님. 두 개 개수는 다를 수 있음.
모델 입력 관련
- : story context, 각각의 는 해당 Sentence 자체와 그 Sentence의 Knolwedge Sentence로 구성됨.
- 모델의 목적은 이 주어졌을 때 를 생성하는 것임.
[추가 설명]
의 구성요소인 , 를 예측하는 테스크로 정의 가능. 이를 위해 먼저 과거 context story ()를 보고 현재 문장인 과 관련될 것으로 예상되는 External Knowledge 를 예측하고, 그 다음 이를 바탕으로 자체를 생성하게 되는 것임.
이전 story context 이 주어졌을 때, 모델은 set of keywords 를 예측함. (다음으로 생성될 문장에 대한 키워드 집합)
Probability distribution을 위해 GPT-2 활용, Maximum likelihood training과 Token prediction loss를 활용해 학습.
Ground-truth : RAKE 알고리즘을 활용해 각 스토리 문장으로부터 키워드 추출함!
(근데 여기서는 알고리즘 이용했지만, 유저가 Control하고 싶은 경우 자기가 원하는 키워드를 넣어서 모델에 넣어주면 됨, 이런 면에서 controllable하다는 것!)
[RAKE 알고리즘]
'Rapid Automatic Keyword Extraction'의 약자로 자세한 설명은 아래 링크에서 확인.
https://www.analyticsvidhya.com/blog/2021/10/rapid-keyword-extraction-rake-algorithm-in-natural-language-processing/
앞 단계에서 생성한 keywords 를 가지고 knowledge base 로부터 knowledge를 retrieve 하는 단계.
다음과 같은 절차로 수행 (엄청 간단!)
Ground Truth : 학습이 아니라 매칭 방식이라 필요 X!
!! 그냥 키워드 매칭방식이라 띠용스러우시겠지만...
저자분들도 이를 의식하셨는지 나중가서는 Learnable하게 구성할 것이라 하심.
앞에서 keyword를 기반으로 한 knowledge를 선정했다고 하지만, word들은 ambiguous하기 때문에 뽑아온 knowledge들은 여전히 large & noisy함.
그래서 저자들은 이 knowledge sentences를 contextualize함으로써, story context와 relevant하고 useful한 정보만 얻고자 하였음.
이를 위해 Ranking 기법을 사용!
즉, 앞 단계에서 뽑아온 Knowledge Sentence들을 Story와의 Relevant를 바탕으로 순위를 매긴 후, 상위의 랭크된 Knowledge Sentence만을 다음 단계로 넘기는 것!
Ground Truth : 정답은 어떻게 설정할 것인가? (가장 관련 있는 문서가 무엇인지 어떻게 아는데!)
에 대한 Ground truth를 만들어야하는데 ... 인간도 스토리 작성할 때 어떤 배경지식을 쓸거다 막 생각하고 쓰진 않잖아요?
때문에 이건 상당히 난해한 문제라고 할 수 있음. 그래서 우리는 직접적인 Supervised signal보다는 weakly supervised signal를 주기로 결심함.
우리는 현재 setnence 를 생성하는 데 쓰이는 을 다음과 같이 가정함.
[추가 설명]
이 단계에서는 si만 가지고 하지 않고, si-1도 포함됨.
왜냐하면 si만 가지고 적절한 지식을 가져오는게 매우 어려웠다고 함.
또한 si-1이전의 context는 포함시키지 않았다고 하는데, 이유는 si안에 포함된 information을 overwhelms하기 때문임. 따라서 더도 말고 덜도 말고 딱 si-1, si만 포함시키는 게 제일 좋았다고 함!
[참고 설명]
Story context 는 앞서 말했듯 knowledge sentence 집합 과 sentence 로 이루어져 있음. 이들을 같이 넣기 위해 [SEP]토큰 가운데에 넣어주었음.
[참고 설명]
해당 로스의 목표는 과 Negative Sample Representations 사이의 거리인 가 Margin 와 보다 커지게 만드는 것!
크기에 따른 성능 비교를 위해 같은 모델 여러 개 사이즈로 구성.
제일 작은 크기의 모델도 이전 연구들보다 PPL, Distinct 면에서 우수함.
근데 반복성에 있어서는 Yao et al. 보다 worse한 것을 볼 수 있음. 근데 이건 Guan et al도 마찬가지임!
이에 대한 이유는 Yao et al.의 작은 8M 모델이 더 짧은 short-term statistics를 학습하기 때문이고, large pre-trained 모델로 한 게 long-dependencies를 학습하기 때문이라고 설명.
그래도 다른 프리 트레인드 모델 쓴 모델에 비하면 우리게 덜 repeat하고, higher distinct score를 얻은 것을 알 수 있었고, 결과적으로 우리 모델이 덜 반복적인 스토리를 생성한다고 볼 수 있음.
[추가 설명]
Perplexity의 낮을 수록 좋은 지표임. 근데 낮은 용량의 M-CNTRL모델에서 이전 연구들보다 값이 큰 모습을 볼 수 있음. 저자들은 이에 대해 이전 모델들이 를 위해 [s1, s2, s3..., si-1]를 기반으로 스토리를 생성하지만, 우리 모델은 R이라는 external knowldege sentence가 들어가기 때문에 이게 노이즈로 작용했기 때문이라고 보고 있음. 하지만 문제되지 않느다고 함 왜? 큰 모델에서는 우리게 더 좋으니까~
인간 평가를 위해 다음 세 가지 메트릭 사용.
1. Fluency
2. Coherence
3. Consistency
Fluency의 경우 베이스라인과 우리 모델에서 나온 story pair를 보여주고, 각각의 메트릭 측면에서 어떤 게 더 좋은지 고르라고 시킴.
인간 평가 결과는 Table 3의 consistency와 Table 4에 나타나있음.
오른쪽과 왼쪽 중 누가 더 좋은지 선택한거 (100퍼 합이 아닌 이유는 tie 땜시)
전반적으로 우리 게 훨씬 잘함!
특히 fluency보다 coherence와 consistency가 더 많이 차이나는데, 이게 우리가 앞에서 일종의 주제인 knowledge를 가져다주니까 우리의 Conditional generative model은 generating text만 하면 됨.
근데 이에 비해 기존의 GPT-2모델은 그 안에서 토픽도 찾고 생성도 해야하니까 이런 부분에서 coherence와 consistency 면에서 이득을 많이 본 것으로 보임.
우리 모델간의 비교에서도 모델 사이즈가 더 클수록 성능이 더 좋아진다는 것을 알수 있음.
1. External Knowledge를 잘 활용하면서도 Controllable한 Generation Framework 제안함!
2. 총 네 가지 스텝! 주제 키워드 뽑고, 관련 지식 추출하고, 랭킹 매겨서, 이를 바탕으로 스토리 문장 Generating!
3. 전반적으로 성능 우수! ROC dataset에 대해 기존 Sota 능가 & Controllability에 대한 실험 & Capacity에 대한 실험 다양하게 진행
[내 느낀점]
완젼 새로운 것들 아니고, 있는 것들을 잘 조합한 논문! 이게 좋은 학회에 publish될 수 있었던 이유는 각 부품들을 설치하는 데에 대한 튼튼한 배경 설명, 유연하게 흘러가는 설명력! 그리고 다양하게 프레임워크를 실험해볼 수 있었던 튼튼한 실험이지 않을까~