코딩일기

[논문 리뷰] DIALOGPT : Large-Scale Generative Pre-Training for Conversational Response Generation(feat. paper review, GPT2, MicroSoft) 본문

Paper Reviews

[논문 리뷰] DIALOGPT : Large-Scale Generative Pre-Training for Conversational Response Generation(feat. paper review, GPT2, MicroSoft)

daje 2022. 9. 14. 19:28
728x90
반응형

안녕하세요 다제입니다. 

오늘은 DialoGPT에 대해서 공부해보도록 하겠습니다. 

 

본문에 대한 해석과 함께 이것을 풀어서 설명하는 식으로 해당 리뷰는 진행될 예정입니다. 

"  → " 해당 기호와 함께 기재되어 있는 것은 필자가 직접 실험하고 테스트 한 내용을 논문에 이해를 돕기 위해 기재한 것이니 논문의 팩트만 보고 싶다면, "  → "로 기재된 라인은 생략해도 됩니다. 

 

또한, 용어 정리가 잠깐 필요할 거 같은데요. 글에서 필자는 블로그 작성자를 의미하고, 저자는 논문의 저자를 의미합니다. 

 

DialoGPT 아이디어를 이용하여 필자는 한국어 대화가 가능한 모델을 제작하게 되었는데요

테스트한 결과를 살짝 보여드리겠습니다. 아직 초기 단계 이긴 하나 사람처럼 일상적인 대화는 가능하였습니다. 

예시1 - 취미와 음식 관련 대화
예시2 - 날씨와 음식 관련 대화

 

목차

  • 0. Abstract 
  • 1. Introduction 
  • 2. Model architectures 
    • 2.1 Retriever 
    • 2.2 Generator
    • 2.3 Retriveve and Refine
      • Dialogue Retrieval
      • Knowledge Retrieval 
  • 3. Training Objectives 
    • 3.1 Ranking for Retrieval 
    • 3.2 Likelihood Training for Generation 
    • 3.3 a-blending for Retrieve and Refine 
    •  3.4 Unlikelihood trainin for generation 
  • 4. Decoding
    • 4.1 Beam Search 
    • 4.2 Sampling 
    • 4.3 Response Length 
      • Minimum length 
      • Predictive length 
    • 4.4 Subsequence Blocking 
  • 5. Training Details 
    • Pre-training Ranking models 
    • Pre-training Generative models 
    • Fine-tuning 
  • 6. Training Data 
    • 6.1 Pre-training 
      • pushshift.io Reddit 
    • 6.2 Fine-tuning 
      • ConvAI2 
      • Empathetic Dialogues(ED)
      • Wizard of Wikipedia(WoW)
      • Blended Skill Talk 
  • 7. Safety Characteristics 
  • 8. Evaluation Methods 
    • ACUTE-Eval 
    • Self-Chat ACUTE-Eval 
  • 9. Related Work
  • 10. Results & Analysis 
    • 10.1 Automatic Evaluations 
      • Retriever
      • Generator 
      • Retrieve and Refine(RetNRef)
      • Safety
    • 10.2 Self-Chat Evaluations
      • Retrieval vs. Generator vs. RetNRef 
      • Generator Decoding choices 
      • Small vs. Large models
      • Pre-trainin vs. Fine-Tuning 
      • Persona context vs. No context given 
      • Likelihood vs. Unlikehood 
    • 10.3 Full(Human-Bot Chat) Evaluations 
      • Retrieval vs. Generator vs. RetNRef 
      • Comparison to Meena 
      • Model vs. Human-human Chat Comparisons 
      • Response Length 
    • 10.4 Example Successful Conversations 
    • 10.5 Failure Cases and Mpdel Extensions 
      • Vocabulary Usage 
      • Nontrivial Repetition 
      • Contradiction and Forgetfulness 
      • Knowledge and Factual Correctness 
      • Conversation Length and Memory 
      • Deeper Understanding 
      • Further Notes onEvaluation 
    • 11. Released code and models 
    • 12. Discussion

DialoGPT는 main Idea는 

1) GPT2를 base로 하여 대화 데이터셋을 학습 시켰을 때, 대화를 잘 생성할 수 있지 않을까?

2) Reddit dataset으로 pre-train한 모델과 GPT2를 대화모델로 fine-Tuning 한 것 중 어떤 모델이 더 좋은 성능을 낼까?

3) 이를 공개함으로 챌린지한 task로 구분되는 Dialog에서도 지속적인 연구가 있었으면 하는 바램 

으로 요약해 볼 수 있습니다. 

 

0. Abstact 

-. 우리는 크고, 튜닝 가능한 딥러닝 기반 Response Genreation Model인 DialoGPT을 제시합니다. 

-. 2005 ~ 2017년에서 Reddit Comment(댓글)에서부터 추출된 대화 같은 데이터 147M로 학습되었다.

  •   → Reddit이란? 정치, 문화, 기술 등 다양한 주제를 가지고 정보를 공유하는 커뮤니티 입니다. 
  •   → 거기에는 tree 형식으로 댓글이 달리게 됩니다. 즉, 댓글이 대화처럼 보이는 것이죠_[아래 이미지 참조]

출처 : 이미지 링크 참조

  •   → 이러한 데이터는 jonl 또는 데이터프레임형식으로 존재하는데, 화자는 2005 ~ 2019년 Reddit Comment 데이터를 트리형식으로 변경하여 대화 데이터셋으로 변경하는 작업을 해본 적이 있습니다. 각 연도별로 zstd형식으로 압축되어 있으며, 이를 모두 압축을 풀면 7T나 되는 대용량 파일이 되어 이를 처리하는데 쉽지 않았습니다. 또한, 이를 바로 사용할 수 있지도 않습니다. 사람의 손을 거쳐서 반드시 필터링되어야 합니다. 

-. DialoGPT는 HuggingFace 파이토치 transformer에 확장되었고 single-turn 대화 세팅에서 automatic과 human evaluation 두 관점에서 사람과 같은 성능에 가깝다 라고 이야기하고 있습니다.  

 

-. DialoGPT가 강력한 베이스라인(GPT-2)에 비해 좀 더 관련되고, 만족스럽고, 일관성이 있는 대답을 생성하는 대화시스템이라고 논문에서 이야기 하고 있습니다.

-. 또한, pre-trained 모델과 학습 파이프라인은 일반적으로 neural response 생성연구와 open-domain 대화 시스템에서 좀 더 똑똑하게 발전이 가능하도록 공개한다고 이야기하고 있습니다. 

   3년전 코드라서 파이토치가 업데이트된 부분이 많으니 이 부분 참고하시면 보시면 될 거 같습니다. 

 

 

1. Introduction 

-. 우리는 DialoGPT를 소개합니다. 이는 튜닝이 가능하고 gigaword-scale neural network model이며, Reddit data로 학습된 Conversation Response Generation을 목적으로 만들어졌습니다. 

-. 최근 트랜스포머 구조를 기반으로 한 Large-Scale Pretraining 모델의 진보가 있었습니다. ( ex. GPT2, Bert 등 )

-. 이러한 모델들은 textual data가 세분화된 텍스트 데이터를 캡쳐하는 것과 인간이 쓴 real-word을 모방한 것과 비슷한 high-resolution을 가지는 출력을 할 수 있는 능력을 가지기에 DialoGPT은 GPT-2가 Conversation response Generation Challenges를 설명하도록 확장한 것이다라고 말하고 있습니다.

-. Neural Response Generation은 텍스트 생성의 하위 카테고리(sub-category)이며, 자연스럽게 보이도록 텍스트를 생성하는 목적을 공유하고 이것은 프롬포트와 관련있다 라고 이야기합니다. 

-. Modelling conersations에는 다른 task에서 볼 수 없는 독특한 어려움이 있다고 합니다.  대화는 두 사람이 경쟁할 가능성이 있는 목표를 캡슐화하고 잠재적인 응담 범위에서 본질적으로 더 다양하다고 이야기합니다. 

더보기

   이게 무슨 말이냐면, 우리는 대화를 하다보면 그에 대한 주제가 있고, 그 주제는 그것, 이것 등의 지시대명사로 대체하여 대화를 하기도 하며, 그 주제를 기준으로 너무나 다양한 방면으로 대화가 이루어질 수 있다는 것을 말합니다. 일명, 통통 튀는 대화가 이루어지기에 모델이 이를 학습하는 것은 어렵다 라고 이해하시면 될거 같습니다. 

따라서 이것(위에서 언급한 challenge)은 신경 기계 번역, 텍스트 요약 및 패러프레이징과 같은 다른 텍스트 생성 작업에서 일반적으로 발생하는 것보다 더 큰 일대다 문제를 제기합니다. 인간의 대화는 일반적으로 더 비격식적이고 시끄럽고, 텍스트 채팅의 형태일 때 종종 비공식적인 약어나 구문/어휘 오류를 포함하기 때문입니다. 

-. 대부분의 Open-domain Neural Response Generation은 ①컨텐츠 또는 대화 스타일의 불일치, ②장기적인 맥락 정보의 부족, ③밋밋함(blandness)로 인해 어려움을 겪습니다. 이에, 논문에서는 GPT2와 같이 transformer를 기반으로 한 모델이 

이러한 문제는 정보 콘텐츠를 향상시키기 위해 특별히 설계된 모델링 전략을 통해 완화될 수 있습니다.

라고 이야기를 하고 있습니다. 

-. 효율적인 연산을 위해 전체 컨텍스트에 대해 fully-connected cross-attention를 허용하기 위해 다층 self-attentive 메커니즘을 사용하는 것은 보다 일반적인 솔루션을 탐색하기 위한 자연스러운 선택처럼 보입니다. 이러한 방식이 가능한 이유는 Transformer를 기반으로 한 모델은 구조적인 특징 때문에 long-Term  dependency information을 가질 수 있도록 하기 때문입니다. 이에, content consistency(대화의 일관성)이 향상되는 경향을 보이게 됩니다. 

더보기

   GPT2 처럼 다음에 올 단어들을 Auto Regressive하게 찾아서 문장을 생성하는 방식을 이야기합니다. 그러나, 이러한 문제는 Knowledge기반의 대화를 할때, 또는 모델 외부에서 들어온 정보를 처리하여 문장을 생성해야할 때 취약점을 보이게 됩니다. Blenderbot이 이러한 취약점을 극복하기 위해 제안된 모델이며 최근 Blenderbot3까지 공개된 상황입니다. 

   여기서 말하는 구조적인 특징은 transformer의 구조와 GPT2의 구조(up to multi-layer(48 layers), AR(Auto-Regressive)model를 갖는  모두를 의미합니다. 

-. GPT-2와 달리, DialoGPT 는 Reddit discussion chains에서 추출된 매우 큰 대화 pairs/sessions으로 학습이 되었습니다. -. DialoGPT는 세밀한 대화 흐름에서 joint distribution of P(target(output), source(input))을 캡쳐할 수 있다고 저자들은 이야기하고 있습니다. 또한, 실제로, 우리가 관측한 것은 DialoGPT으로 생성된 문장은 다양하고 source에 구체적인 정보를 포함하고 GPT-2가 연속적인 text을 생성하는 것과 유사하다고 이야기하고 있습니다.

-. Public Benchmark Dataset(DSTC-7)에서부터 학습된 pre-trained model와 Reddit posting에서 추출한 새로운 6k multi-reference 테스트 데이터세트로 평가하였습니다. 결론적으로 DialoGPT은 automatic과 human evaluation에서 SOTA을 달성하였고, 사람의 반응 퀄리티와 유사한 성능으로 끌어올린다라고 말합니다. 

 

 

2. Dataset

-. 위에서 언급하였지만, Dataset은 Reddit Comment Dataset(2005~2017년) 데이터를 사용하였습니다. 

-. Comment들은 chain으로 연결되어 있으며, Root Node와 leaf Node를 가지고 있기에 Tree 알고리즘을 활용하여 대화 데이터셋으로 구성할 수 있습니다. 그러나, 여기서 중요한 것은 대화데이터셋으로 만드는 것뿐 아니라 어떻게 대화를 필터링하고 좋은 데이터로 선정할 것인가 입니다. 

-. 필터링 조건은 다음과 같습니다. 

  • source와 target에 URL이 있는 것 
  • Target이 적어도 단어를 3번 이상 반복하는 경우
  • Response로 가장 자주 사용되는 상위 50개 영어 단어 중 하나 이상을 포함하지 않는 경우(e.g., “the”, “of”, “a”)
  • 응답에 "[" 또는 "]"와 같은 특수 마커가 포함된 경우(markup language일 가능성이 있기에) 
  • source와 target 시퀀스를 함께 사용하여 200단어 보다 긴 경우
  • 대상에 대규모 차단 목록에 대한 구문 일치로 식별되는 공격적인 언어가 포함되어 있거나, 불쾌감을 주는 콘텐츠를 포함할 가능성이 있는 것으로 확인된 다수의 하위 레딧을 제외
  • 무미 건조한 대화를 제외 

-. 필터링 후 데이터 세트는 147,116,725개의 대화 인스턴스, 총 18억 단어로 구성됩니다.

 

 

3. Method 

3.1 Model Architecture 

-. 위에서 언급했듯 DialoGPT는 GPT2 architecture를 기반으로 합니다. GPT2가 사람의 언어를 잘 표현하는 것을 이미 입증했기 때문에 GPT2를 기반으로 DialoGPT를 만드는 것은 타당하고 합리적으로 보인다.

-. GPT2는  BPE(byte pair encodings) Tokenizer를 사용하게 됩니다. byte pair encodings을 잘 모르시는 분은 해당 링크를 참고해주시기 바랍니다. BPE(byte pair encodings)은 기본적으로 연속적으로 가장 많이 등장한 글자의 쌍을 찾아서 하나의 글자로 병합하는 방식으로 토큰화를 수행합니다. 

-. GPT-2 트랜스포머 모델은 일반적인 transformer language model로 masked multi-head self-attention layers의 stack을 활용하여 매우 큰 web-text 데이터로 학습하였다. user-specific 프롬프트을 기반 혹은 (처음)scratch부터의 생성된 텍스트는 realistic하게 보였다. GPT-2의 성공은 transformer LM이 미세한 레벨에서의 사람의 언어 데이터 분포를 특정지을 수 있음을 증명하고 이는 아마도 매우 큰 모델 능력과 뛰어난 효율성 때문일 것이다. 이에, 우리의 모델은 GPT-2을 상속 받아서 사용하게 되었다. 저자들은 OpenAI GPT-2로 긴 텍스트으로 multi-turn 대화 세션을 모델링하고 LM을 생성 테스크로 구성하였습니다. 저자들은 첫 번째로 대화 세션 안에서 모든 대화 turns을 concat시켜 긴 text(N은 시퀀스 길이)를 만들고 끝에는 end-of-text token을 넣습니다. 

 

source sentence == dialogue history 

  • 우리는 source sentence (대화 히스토리)을 ${S} = x_{1}, ···, x_{m}$ 으로 표기하고, target sentence (ground truth response)을 ${T} = x_{m+1}, ···, x_{N} $ 라고 표기합니다. 으로 표기한다.
  • 조건부 확률 은 조건부 확률의 일련의 곱으로 다음과 같이 쓰여진다.
  • multi-turn 대화 세션 
    은 다음과 같이 쓰여진다.

 

3.2 Mutual Information Maximization(상호 정보 극대화)

오픈 도메인 텍스트 생성 모델들은 밋밋하고 정보가 없는 말을 생성하는 것으로 알려져 있습니다. 

이러한 문제를 해결하기 위해, 우리는 Maximum Mutual Information (MMI) scoring function을 적용합니다. (Li et al., 2016a; Zhang et al., 2018). MMI는 pre-trained backword model로 주어진 response으로부터 source sentences을 예측하도록 적용됩니다. 이에 대해 자세히 살펴보면, 우리는 우선 top-K 샘플링을 사용하여 hypotheses의 set을 생성합니다. 그리고 우리는 P(Source|Hypothesis)의 확률로 모든 hypotheses을 rerank 합니다. 직관적으로, backward 모델이 likelihood을 최대화하면, 빈번하고 반복적인 hypotheses들이 많은 queries와 연관될 수 있기 때문에, bland hypothese에게 패널티를 가할 수 있으며,  특정 query에 대한 낮은 확률을 산출할 수 있다고 설명하고 있습니다. 

 

우리는 그것을 관찰했다 강화 학습(RL) 훈련은 가설이 단순히 소스 문장(즉, 앵무새 모델)을 반복하고 상호 정보가 최대화되는 퇴화 로컬 최적 솔루션으로 쉽게 수렴됩니다.

우리는 트랜스포머가 로컬 옵티마에 갇힐 수 있다고 가정합니다. 그들의 강력한 모델 표현력 때문입니다. 정규화된 RL 교육에 대한 조사는 향후 작업에 맡깁니다.

솔직히 무슨 말인지 잘 모르겠다. 

 

 

4.1 Experimental Details 

vocab size : 50,257 

 Nvidia V100 16개 

NVLink는 서버 내의 멀티 GPU 입출력(IO)을 확장하는 GPU 간 직접 상호 연결입니다. NVSwitch는 여러 NVLink를 연결하여 단일 노드 및 노드 간 전체 NVLink 속도에서 올 투 올 GPU 통신을 제공합니다.    

학습률은 유효성 검사 손실을 기반으로 선택됩니다. 각 모델은 유효성 검사 손실이 진행되지 않을 때까지 학습됩니다.

small and medium models : 5epochs 

large model : 3epochs

 

 

더보기

NoamScheduler

class numpy_ml.neural_nets.schedulers.NoamScheduler(model_dim=512, scale_factor=1, warmup_steps=4000, **kwargs)[source]

The Noam learning rate scheduler, originally used in conjunction with the Adam optimizer in [1].

Notes

The Noam scheduler increases the learning rate linearly for the first warmup_steps steps, and decreases it thereafter proportionally to the inverse square root of the step number:

lr = scale_factor * ( (model_dim ** (-0.5)) * adj_step )
adj_step = min(step_num ** (-0.5), step_num * warmup_steps ** (-1.5))

References

[1] Vaswani et al. (2017) “Attention is all you need”. 31st Conference on Neural Information Processing Systems, https://arxiv.org/pdf/1706.03762.pdf

 

noam learning rage scheduler & warm up 

https://nn.labml.ai/optimizers/noam.html

 

Noam optimizer from Attention is All You Need paper

This is a tutorial/implementation of Noam optimizer. Noam optimizer has a warm-up period and then an exponentially decaying learning rate.

nn.labml.ai

https://gaussian37.github.io/dl-pytorch-lr_scheduler/

 

Pytorch Learning Rate Scheduler (러닝 레이트 스케쥴러) 정리

gaussian37's blog

gaussian37.github.io

 

 

 

 

Speeding up training 

 

먼저 모든 훈련 데이터를 지연 로딩 데이터베이스 파일로 압축하여 데이터가 필요할 때만 로드되도록 합니다(액세스 빈도를 줄이기 위해 큰 청크를 미리 가져옴).

또한 별도의 비동기식 데이터 프로세스를 활용하여 교육을 확장합니다. 

dynamic batching strategy 사용함 → 한 배치 내에서 max len로 설정하여 연산이 진행됨 

 

 

4.2 DSTC-7 Dialogue Generation Challenge 

 

-. DSTC (Dialog System Technology Challenges) 7 track은 end-to-end 대화 모델링 테스크이고 이것은 external knowledge을 기반으로하는 정보를 주입한 칫챗을 넘어서는 대화 response을 생성하는 것을 목표로 가진다.

-. 이 작업은 특정하거나 미리 정의된 목표가 없다는 점에서 일반적으로 목표 지향, 작업 지향 또는 작업 완료 대화로 생각되는 것과 다릅니다.

-. 대신, 기본 목표가 종종 잘못 정의되거나 사전에 알려지지 않은 인간과 유사한 상호 작용을 목표로 하며, 사람들이 정보를 공유하는 직장 ​​및 기타 생산적인 환경에서 볼 수 있습니다.

-. multi-reference 테스트 셋을 만들기 위해서, 우리는 대화 세션이 6개 이상의 responses을 포함하도록 활용했다.

-. turn length와 같은 다른 필터링 조건이 주어졌을 때, 이것은 5-reference 테스트 셋 사이즈 2208을 야기한다.

우리는 일반적인 기계번역 metrics을 사용하여 automatic evaluation을 수행한다.

우리는 또한 Enrtropy와 Dist-n으로 lexical diversity을 평가한다.

우리는 DIALOGPT을 트위터 데이터로 학습을 기반으로한 비교할만한 seq2seq 모델 PERSONALITYCHAT 과 비교한다.

345M 매개변수를 가진 DIALOGPT의 점수는 117M 매개변수보다 전반적으로 더 좋다. 

빔 검색(빔 폭 10 포함)은 BLEU와 DIST 점수를 획기적으로 향상시키고 NIST와 MEASE 점수를 약간 개선한다. 

당사 모델은 소스-대상 쌍에서 미세 조정되며 DSTC 교육 세트의 grounding information를 활용하지 않는다는 점에 유의하십시오. 

그림 1에 나타낸 것처럼, 다중 인간 반응(R1-R4)은 소스 발음과 잘 일치할 수 있다.

일반성을 상실하지 않는 한, R1-R3이 테스트될 "ground truth" 참조인 반면, R4는 "인간" 점수를 계산하는 "보류된" 인간 반응이라고 가정한다. 

의미공간에서, 잘 훈련된 모델에서 생성된 반응 Rg는 아마도 가장 가능성이 높은 반응을 일으키려고 하기 때문에 가능한 모든 반응의 기하학적 중심에 있는 경향이 있을 것이다. 

이는 모든 훈련 사례의 기하학적 평균에 가까울 수 있으므로 이러한 예들을 "평균화"할 수 있다. 

따라서 생성된 응답 Rg는 R1-R3에서 목표 인간 응답 R4보다 낮은 "대안 거리"(BLEU와 같은 높은 자동 점수로 측정)를 가질 수 있다.

 

그런데 솔직히 4.2 무슨 말을 하는지 모르겠는데 

 

4.3 A New Reddit Multi-reference Dataset 

우리는 우리의 방법을 사전 훈련된 모델로 GPT-2를 사용한 처음부터 훈련하는 것과 미세 조정의 두 가지 설정으로 테스트하였다. 

두 가지 setting에서 모두 작은 모델보다 큰 모델에서 성능이 파라미터 수가 작은 모델보다 성능이 우월하였다. 

Pre-trained Model과 GPT2 fine-tuning 모델을 비교하였을 때, 모두 파라미터 사이즈가 작은 모델에 적용할 때 GPT-2 모델을 사용하면 더 큰 성능 향상을 얻을 수 있다고 합니다.  다시 말하지만, 최고의 시스템 DIALOGPT(345M, 빔 검색 포함)는 BLEU에서 사람보다 높은 점수를 받는다. 

 

4.4 Re-ranking The Response Using MMI 

 

4.5 Generation Examples 

흥미롭게도 우리 모델은 일부 사람들에게 상식적인 질문을 해결할 수 있는 능력을 보여줍니다. 아마도 Reddit 데이터에서 배울 수 있는 풍부한 정보 때문일 것입니다. 어떤 경우에는 시스템이 "원하는" 답변을 제공하는 대신 합리적이고 대안적인 답변을 생성합니다. 

Table4, 5, 6

  • DLGnet (Olabiyi and Mueller, 2019) is a large transformer model trained on dialogue dataset and achieves good performance in multi-turn dialogue generation. 
  • AllenNLP (Gardner et al., 2018) is developed as a toolkit for many natural language processing tasks, including the large-scale pre-trained bi-LSTM sentence representation learning framework ELMo (Peters et al., 2018). 
  • Texar (Hu et al., 2018) focuses on text generation including style transferring and controllable generation. It includes reinforcement learning capabilities along with its sequence modelling tools. 
  • DeepPavlov (Burtsev et al., 2018) is a popular framework focusing on task-oriented dialogue. 
  • This public repository contains several demos and pre-trained models for question answering and sentiment classification. Icecaps (Shiv et al., 2019) is a response generation toolkit with techniques such as grounding on personalities or external knowledge and multi-task training. 
  • The ConvAI2 challenge (Dinan et al., 2019) has a focus on personalized conversations. 
  • ParlAI (Miller et al., 2017) is another library for developing task-oriented dialogue systems. It contains pre-trained models for knowledge-grounded chatbot trained with crowdsourced data. 
  • The Text-to-Text Transformer (Raffel et al., 2019) unifies multiple text modeling tasks, and achieves the state-of-the-art results in various natural language generation and understanding benchmarks. 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments