Despite the continuing efforts to improve the engagingness and consistency of chit-chat dialogue systems, the majority of current work simply focus on mimicking human-like responses, leaving understudied the aspects of modeling understanding between interlocutors. The research in cognitive science, instead, suggests that understanding is an essential signal for a high-quality chit-chat conversation. Motivated by this, we propose P^2 Bot, a transmitter-receiver based framework with the aim of explicitly modeling understanding. Specifically, P^2 Bot incorporates mutual persona perception to enhance the quality of personalized dialogue generation. Experiments on a large public dataset, Persona-Chat, demonstrate the effectiveness of our approach, with a considerable boost over the state-of-the-art baselines across both automatic metrics and human evaluations.
이 논문을 읽어서 무엇을 배울 수 있는지 알려주세요! 🤔
Introduction
최근 Language Generation 모델이 과연 언어를 제대로 이해하면서 생성을하는 것인지에 대한 논의가 화두가 되고 있음. 현행 모델들은 단지 language의 pattern을 외우고, 이를 바탕으로 언어를 생성하는 것일 뿐, 모델이 언어를 제대로 이해하고, 추론을 할 수 있는 존재가 아니라는 비판이 존재한다. 즉, 작금의 Language Generation 모델들은 단지 암기력이 월등하게 좋은 반면, 이해력은 바닥 수준인 학생이라는 것이다. 실제로 Language generation의 근간이 되는 language model 자체도 단지 text의 분포를 학습하는 것에 불과하다.
이 논문은 위와 같은 인식과 공통점을 상당 부분 공유하고, 이 문제를 해결하기 위한 방법론을 제안한 논문이다. 이를 위해, 이들은 Personalized dialogue generation task에서 이러한 문제를 다룬다. Personalized dialogue generation은 추론을 하고, 이해를 하며 언어를 생성하는 모델 설계에 적합한 세팅을 갖고 있다. 대화 내역 이외에도, 대화에 참여하는 사람들에 대한 Persona라는 메타 정보가 이 태스크에는 포함되어 있다. 따라서, 모델링을 할 때, 이 메타 정보를 녹여내기 쉬운 구조적 특성이 있다. 이 논문은 Persona라는 메타 정보를 명시적으로 고려하면서 대화가 이루어질 수 있도록 하는 모델을 설계한다. -> main contribution
Methodology
two step으로 학습이 이루어짐.
첫번째는 통상적인 Language modeling + MLE 방식으로 모델 학습. (Supervised Dialogue Generation)
두번째는 학습된 language model이 명시적으로 persona를 고려하면서 dialogue를 생성하도록 fine-tune (Self-play Model Finetuning)
Supervised Dialogue Generation
첫 번째는, 여태까지 생성된 dialogue, 및 persona 정보를 prefix로 집어 넣고, 그에 대한 조건부 dialogue를 생성하는 방식. 이전 dialogue 및 persona에서는 출력이 나오지 않도록 하고, target turn에 해당하는 dialogue만 출력으로 하여 모델을 학습시킨다.
이 때, target dialogue를 모두 생성한 뒤에 Next Utterance Prediction이 추가된다. 이것은 ground truth가 아닌 randomly sampled noised utterance를 학습 데이터에 추가한 뒤에, 생성된 utterance가 actually next utterance를 분류하도록 하는 axiliary loss term.
이렇게 학습해 놓으면 인퍼런스를 다음과 같이 하게 됨
이는 일단 발화를 생성해 놓고, 앞선 대화의 맥락을 고려해 봤을 때, 이게 정말 제대로 된 응답인지를 다시 한번 검토하는 것을 가능하게 해줌.
Self play model fine tuning
위의 방법으로 학습된 모델은, 사람의 대화를 흉내낼 수 있게 해줌. 그러나 모델이 뭔가를 제대로 이해하면서 대화를 이어나가는 것은 아님. 따라서, 모델이 생각이란 것을 하면서 대화를 할 수 있도록 fine-tuning 해줌. 여기서 강화학습이 등장.
두 사람 A, B가 대화를 계속 이어 나가도록 한 뒤에, 한 사람 (e.g. B) 이 생성한 발화들에 reward를 주고 이를 바탕으로 gradient를 update함. 이 때, 발화는 teacher forcing기반 MLE로 학습하는 게 아니고, inference를 해놓고 이를 기반으로 reward를 측정하고 가중치를 변경하는 방식임.
-> 얘는 대체 뭔지 모르겠음. Applying likelihood ratio trick, θ is updated by ascending the following gradient: 이렇게 한줄로 달랑 써있는데 강화학습을 모르니 당췌 이해가 안감.
아무튼, reward는 다음 세가지 요소를 고려해서 결정됨.
첫째 language style. 즉 말이 되는 소리를 하고 있나, 또는 문법에 문제가 없나. inter sentence 말이 되는 정도
둘째, Discourse Coherence. 대화가 자연스럽게 이어지나. intra sentence 말이되는 정도
셋째, Mutual Persona Perception. 상대방에 대한 이해를 제대로 하면서 대화를 하는 것인지. 이게 사실 가장 중요함. 위의 두 reward는 그냥 mimicking만 해도 가능. 그러나 이건 모델이 understanding을 제대로 하고 있어야 가능.
이 reward는 B가 한 발화가 상대방의 persona를 제대로 이해하면서 한 소리인지를 측정함.
그럼 이 reward는 대체 어떻게 계산이되냐? 여기서 receiver가 등장함.
receiver는 상대방의 발화로부터 상대방의 persona에 대한 추측을 하는 impression encoder가 있고, 또 실제 persona를 encoding하는
persona encoder가 있음. 발화는 multi turn으로 이루어지고, persona도 여러개임. 즉 이상적인 경우, 특정 persona에 해당하는 발화에 대한 correlation이 높아지도록 학습을 하면 됨. 근데 문제는 데이터가 그렇게 생겨먹지 않았음. 그냥 뭉터기로 존재. 그래서 이 논문은 negative persona를 두고 이 encoded impression이 negative persona로부터 멀어짐과 동시에 true persona와 가까워 지도록 학습.
여기서 이 c^z, c^A가 어떻게 결정이 되냐. impression encodin과 persona encoding을 계산하면, 지들끼리 dot product들을 싹다 구함 (attention kv 곱하는거랑, 작동 방식은 동일한듯). 그럼 여기서 impression embedding - true persona embedding 끼리 계산된걸 골라내서 뭉쳐놓고, negative persona와 계산된거도 따로 뭉쳐놓음.
그럼 각각 R^N/2 x L matrix가 될 것임. 여기서 열을 기준으로 pooling하고, 이것들을 평균낸게 c^z, c^A가 됨.
evaluation
잘나온다
같이 읽어보면 좋을 만한 글이나 이슈가 있을까요?
conclusion
human pattern을 단순히 mimicking 하는 model을 극복하기 위해, 명시적으로 모델이 이해라는 것을 하면서 dialogue generation하는 module을 제안함.
근데 이건 현행 language generation model을 기본 골격으로 하고 마지막에 fine-tuning만 해주는 방식이고, fine-tuning이 완료되면 다시 원래 쓰던 모델만 인퍼런스 할 때 쓰는 방식임. 이게 과연 모델이 추론, 또는 이해를 할 수 있게 해주는지는 의문.
어떤 내용의 논문인가요? 👋
상대방의 persona를 이해하면서 dialogue를 생성하는 기법에 관한 논문
Abstract (요약) 🕵🏻♂️
Despite the continuing efforts to improve the engagingness and consistency of chit-chat dialogue systems, the majority of current work simply focus on mimicking human-like responses, leaving understudied the aspects of modeling understanding between interlocutors. The research in cognitive science, instead, suggests that understanding is an essential signal for a high-quality chit-chat conversation. Motivated by this, we propose P^2 Bot, a transmitter-receiver based framework with the aim of explicitly modeling understanding. Specifically, P^2 Bot incorporates mutual persona perception to enhance the quality of personalized dialogue generation. Experiments on a large public dataset, Persona-Chat, demonstrate the effectiveness of our approach, with a considerable boost over the state-of-the-art baselines across both automatic metrics and human evaluations.
이 논문을 읽어서 무엇을 배울 수 있는지 알려주세요! 🤔
Introduction
최근 Language Generation 모델이 과연 언어를 제대로 이해하면서 생성을하는 것인지에 대한 논의가 화두가 되고 있음. 현행 모델들은 단지 language의 pattern을 외우고, 이를 바탕으로 언어를 생성하는 것일 뿐, 모델이 언어를 제대로 이해하고, 추론을 할 수 있는 존재가 아니라는 비판이 존재한다. 즉, 작금의 Language Generation 모델들은 단지 암기력이 월등하게 좋은 반면, 이해력은 바닥 수준인 학생이라는 것이다. 실제로 Language generation의 근간이 되는 language model 자체도 단지 text의 분포를 학습하는 것에 불과하다.
이 논문은 위와 같은 인식과 공통점을 상당 부분 공유하고, 이 문제를 해결하기 위한 방법론을 제안한 논문이다. 이를 위해, 이들은 Personalized dialogue generation task에서 이러한 문제를 다룬다. Personalized dialogue generation은 추론을 하고, 이해를 하며 언어를 생성하는 모델 설계에 적합한 세팅을 갖고 있다. 대화 내역 이외에도, 대화에 참여하는 사람들에 대한 Persona라는 메타 정보가 이 태스크에는 포함되어 있다. 따라서, 모델링을 할 때, 이 메타 정보를 녹여내기 쉬운 구조적 특성이 있다. 이 논문은 Persona라는 메타 정보를 명시적으로 고려하면서 대화가 이루어질 수 있도록 하는 모델을 설계한다. -> main contribution![image](https://user-images.githubusercontent.com/16620433/88414841-78d54080-ce18-11ea-94f3-e983c6a78dcd.png)
Methodology two step으로 학습이 이루어짐. 첫번째는 통상적인 Language modeling + MLE 방식으로 모델 학습. (Supervised Dialogue Generation) 두번째는 학습된 language model이 명시적으로 persona를 고려하면서 dialogue를 생성하도록 fine-tune (Self-play Model Finetuning)
첫 번째는, 여태까지 생성된 dialogue, 및 persona 정보를 prefix로 집어 넣고, 그에 대한 조건부 dialogue를 생성하는 방식. 이전 dialogue 및 persona에서는 출력이 나오지 않도록 하고, target turn에 해당하는 dialogue만 출력으로 하여 모델을 학습시킨다. 이 때, target dialogue를 모두 생성한 뒤에 Next Utterance Prediction이 추가된다. 이것은 ground truth가 아닌 randomly sampled noised utterance를 학습 데이터에 추가한 뒤에, 생성된 utterance가 actually next utterance를 분류하도록 하는 axiliary loss term. 이렇게 학습해 놓으면 인퍼런스를 다음과 같이 하게 됨
이는 일단 발화를 생성해 놓고, 앞선 대화의 맥락을 고려해 봤을 때, 이게 정말 제대로 된 응답인지를 다시 한번 검토하는 것을 가능하게 해줌.
두 사람 A, B가 대화를 계속 이어 나가도록 한 뒤에, 한 사람 (e.g. B) 이 생성한 발화들에 reward를 주고 이를 바탕으로 gradient를 update함. 이 때, 발화는 teacher forcing기반 MLE로 학습하는 게 아니고, inference를 해놓고 이를 기반으로 reward를 측정하고 가중치를 변경하는 방식임.
-> 얘는 대체 뭔지 모르겠음. Applying likelihood ratio trick, θ is updated by ascending the following gradient: 이렇게 한줄로 달랑 써있는데 강화학습을 모르니 당췌 이해가 안감.
아무튼, reward는 다음 세가지 요소를 고려해서 결정됨. 첫째 language style. 즉 말이 되는 소리를 하고 있나, 또는 문법에 문제가 없나. inter sentence 말이 되는 정도![image](https://user-images.githubusercontent.com/16620433/88421416-847a3480-ce23-11ea-8f4b-1a02573a9f24.png)
둘째, Discourse Coherence. 대화가 자연스럽게 이어지나. intra sentence 말이되는 정도![image](https://user-images.githubusercontent.com/16620433/88421520-ab386b00-ce23-11ea-9316-6153e29cd101.png)
셋째, Mutual Persona Perception. 상대방에 대한 이해를 제대로 하면서 대화를 하는 것인지. 이게 사실 가장 중요함. 위의 두 reward는 그냥 mimicking만 해도 가능. 그러나 이건 모델이 understanding을 제대로 하고 있어야 가능.
그럼 이 reward는 대체 어떻게 계산이되냐? 여기서 receiver가 등장함.
receiver는 상대방의 발화로부터 상대방의 persona에 대한 추측을 하는 impression encoder가 있고, 또 실제 persona를 encoding하는
persona encoder가 있음. 발화는 multi turn으로 이루어지고, persona도 여러개임. 즉 이상적인 경우, 특정 persona에 해당하는 발화에 대한 correlation이 높아지도록 학습을 하면 됨. 근데 문제는 데이터가 그렇게 생겨먹지 않았음. 그냥 뭉터기로 존재. 그래서 이 논문은 negative persona를 두고 이 encoded impression이 negative persona로부터 멀어짐과 동시에 true persona와 가까워 지도록 학습.
![image](https://user-images.githubusercontent.com/16620433/88444520-7abef400-ce58-11ea-919c-27e9dd9691ad.png)
여기서 이 c^z, c^A가 어떻게 결정이 되냐. impression encodin과 persona encoding을 계산하면, 지들끼리 dot product들을 싹다 구함 (attention kv 곱하는거랑, 작동 방식은 동일한듯). 그럼 여기서 impression embedding - true persona embedding 끼리 계산된걸 골라내서 뭉쳐놓고, negative persona와 계산된거도 따로 뭉쳐놓음. 그럼 각각 R^N/2 x L matrix가 될 것임. 여기서 열을 기준으로 pooling하고, 이것들을 평균낸게 c^z, c^A가 됨.![image](https://user-images.githubusercontent.com/16620433/88444764-b3130200-ce59-11ea-877c-4eab2e8f9854.png)
evaluation 잘나온다
![image](https://user-images.githubusercontent.com/16620433/88423768-4848d300-ce27-11ea-942d-4ba8f0b697c6.png)
같이 읽어보면 좋을 만한 글이나 이슈가 있을까요?
conclusion human pattern을 단순히 mimicking 하는 model을 극복하기 위해, 명시적으로 모델이 이해라는 것을 하면서 dialogue generation하는 module을 제안함. 근데 이건 현행 language generation model을 기본 골격으로 하고 마지막에 fine-tuning만 해주는 방식이고, fine-tuning이 완료되면 다시 원래 쓰던 모델만 인퍼런스 할 때 쓰는 방식임. 이게 과연 모델이 추론, 또는 이해를 할 수 있게 해주는지는 의문.
레퍼런스의 URL을 알려주세요! 🔗
https://arxiv.org/pdf/2004.05388.pdf