Dialogue system에서 상대방의 감정을 고려한 대화를 가능하게 하는 방법에 대한 연구이다.
대화에 참여하는 사용자의 감정을 대화와 함께 레이블링한 EmpatheticDialogues(ED) 데이터셋도 구축해서 제공한다.
해당 데이터셋을 사용하면 보다 더 상대의 감정을 고려하는 대화를 수행할 수 있다.
논문의 원본은 여기에서 볼 수 있다.
Facebook Research에서 제공하는 실제 코드는 여기 GitHub에서 확인할 수 있다.
Dialogue agent가 대화를 하는 상대의 감정을 파악하고, 그 감정에 알맞는 대화를 제공하는 것을 상당히 중요한 요소이다. 이번 논문에서는 empathetic dialogue generation이 가능하도록 학습할 수 있는 EMPATHETICDIALOGUES(ED) 라는 데이터셋을 제안한다. 25K개의 대화로 구성되어 있고, 각 대화는 특정한 감정/emotion을 기반으로 하고 있다. 해당 데이터셋으로 학습하는 경우, 대화하는 상대의 감정을 더 고려해서 알맞는 응답을 제공할 수 있다고 주장한다. [그림-1]을 보면, Listener가 생성한 두 응답 모두 대화에는 적합하다고 할 수 있지만, 상대방의 입장과 감정을 고려한 경우, 두 번째 응답을 사용하는 것이 적합하다는 것을 판단할 수 있다.
아직까지는 empathy를 기준으로한 dialogue generation의 benchmark가 존재하지 않기 때문에 더 의미있다고 할 수 있다. ED를 구성하는 모든 대화는 특정한 상황을 기반으로 하고 있다. Speaker는 해당 상황에 대한 감정이 정해지고, 해당 감정에 대해서 1대1 대화를 나누게 된다. 감정을 예측하는 다양한 데이터셋이 기존에 존재하지만, ED는 더 큰 규모와 더욱 다양한 감정을 담고 있다. [그림-2]은 ED를 구성하는 데이터 중 일부이다.
이번 논문에서는 ED를 사용해서 기존 모델들이 상대방의 감정을 더 고려하는 응답을 생성할 수 있도록 한다. 우선, ED의 학습데이터를 구성하는 응답들을 retrieval based model의 선택지 중 하나로 함께 사용해서 학습을 진행하고, 현재 task에 맞게 fine-tuning 하게 된다.
# 데이터 구축
EmpatheticalDialogues(ED) 데이터셋은 open-domain 대화 방식으로, 1대1로 대화를 진행한다. 대화는 두 사람 중 한 사람이 처한 상황에 대해서 이루어진다. 해당 데이터셋은 [그림-3]에서와 같이 총 33개의 감정을 다루게 된다. 각 감정에 대한 데이터는 최대한 균등하게 유지할 수 있도록 제작했다. 특정 상황이 한 개의 감정에 해당될 수도 있지만, 어떠한 경우에는 여러개의 감정이 복합적으로 해당되는 경우도 발생하게 된다.
Speaker가 대화를 시작하게 된다. Speaker는 현재 본인이 처한 상황과 감정을 기반으로 대화를 시작하고, Listener는 상대방의 감정을 고려하면서 다음 응답을 제공하게 된다. 총 대화는 최대 6번 까지 주고받게 된다. 앞으로 평가될 모델들은 해당 대화에서 Listener의 역할을 수행하게 된다. Listener는 과거에 대화 내용만 제공되고, 현재 상황에 대한 내용은 물론, Speaker의 감정이 직접적으로 제공되지 않고, Speaker와의 대화를 통해서 유추해야 한다. 과거의 $ n $ 개의 내화 내용을 모두 연결해서 $ x_1, ..., x_m $ 를 입력으로 제공해서, 응답 $ \overline{y} $ 를 생성하게 된다. 모델은 likelihood $ p(\overline{h}|x) $ 를 최대화하는 방향으로 학습을 진행한다.
데이터는 ParlAI platform을 통해서 구축했다.총 24,850 개의 대화로 구성되어 있고, 810명의 사람들이 작업에 참여했다. 전체의 80%가 학습(19,553), 10%가 validation(2,770), 10%가 test(2,547) 데이터로 지정했다.
# 모델 구조
기본적인 모델은 모두 Transformer를 기반으로 하고 있다.
Retrieval-based model : 해당 모델에서는 전체 후보 응답 $ Y $ 중에서 최적의 해답 $ y^* $ 를 찾아내는 문제이다. 두 개의 서로 다른 Transformer encoder를 학습한다. 첫 번째 인코더에서는 context $ x $ 에 대한 인코더 역할을 수행하고, 두 번째 인코더에서는 후보 응답 $ y $ 를 인코딩하는 역할을 수행해서 각각 $ h_x, h_y $ 의 인코딩을 생성해내게 된다. 추가적으로 BERT 를 사용한 모델도 구축했다. BERT의 마지막 hidden vector를 각각 $ h_x, h_y $ 으로 사용하게 된다. Context를 기반으로 제일 좋은 후보 응답을 찾아내는 방법은 단순히 $ h_x, h_y $ 의 dot product의 결과에 softmax 함수를 사용하는 방식으로 구하게 된다. Inference time에서는 3개의 데이터셋에서 후보 응답을 추출해서 사용하게 되는데, 데이터셋은 각각 ED training set, DailyDialog training set, Reddit conversation으로 구성된다.
Generative model : 해당 모델은 전체 Transformer 구조를 사용한다. 디코더에서는 인코더의 결과를 기반으로 $ y $ 를 순차적으로 예측하게 된다. negtive log-likelihood를 최소화시키는 방향으로 학습된다.
학습 과정 : 모든 모델을 1.7 billion Reddit conversation에 대해서 사전학습을 시켰다. ED 에 대한 finetuning을 수행하지 않은 경우, Pretrained 모델이라고 칭하게 된다. ED로 추가적인 학습을 진행하는 경우, 우리가 최종적으로 원하는 empathetic response를 생성할 가능성이 높아지기 때문에, ED로 추가적인 학습을 진행하지 않더라고, inference time에 사용되는 응답 후보에 ED의 응답을 추가해서 함께 학습하는 경우도 고려하게 된다. ED에 대해서 추가적인 fine-tuning을 수행한 경우, 해당 논문에서는 Fine-tuned 모델이라고 부르게 된다. Transformer 모델에 대해서는 300-차원의 임베딩을 사용해서 common-crawl의 데이터로 사전 학습을 진행했다. BERT 모델의 경우, 768-차원의 임베딩을 사용했고, BooksCorpus, EnglishWikipedia로 사전학습을 진행했다.
현재 존재하는 다양한 모델을은 특정한 task에 알맞게 pretrained 되어 있는데, 해당 학습 과정에 empathetic responding과 관련이 있을 수 있다. 이러한 관련성을 살리기 위해, 해당 논문에서 기본으로 사용하는 모델과 새로운 사전학습된 모델을 합쳐서 조금 더 좋은 성능을 낼 수 있을 것이라 판단했다. (이러한 과정은 추가적인 데이터나 추가적인 학습이 필요 없다는 장점도 있다.) 그래서 해당 논문에서는 2개의 사전 학습된 모델을 추가해서 실험을 진행했다. 첫 번째는 emotion detection 모델이고, 두 번째는 topic detection을 수행하는 모델이다. 이러한 사전 학습된 모델을 사용하는 방식 중 하나인 PREPEND-1 은 [그림-5]와 같이 표현할 수 있다. 동일한 입력을 사전 학습된 모델의 입력으로 제공하고, 해당 모델에서 결과로 나온 데이터를 인코더에 함께 입력으로 제공하는 것이다. Emotion detection 모델을 예로 들어보면, ([그림-6]) 입력으로 해당 문장이 제공되는 경우, emotion detection 모델에서는 해당 문장을 기반으로 감정을 구분하고(proud) 해당 결과를 실제 인코더에 입력으로 제공할 때 기존의 데이터 앞에 prepend 하는 방식이다. 그래서 해당 논문에서는 EMOPREPREND-1 과 TOPICPREPEND-1 이라는 두 모델을 사용하게 된다.
# 실험 결과
해당 논문에서는 구축한 모델들이 Listener의 역할을 얼마나 잘 수행하는지 평가했다. 크게 automated metrics와 human evaluation 을 기반으로 평가를 진행했다.
Automated metrics : 기본적으로 BLEU score를 사용해서 예측한 응답과 실제 정답 응답을 비교하게 된다. Generative model의 경우, perplexity를 추가적으로 측정하고, retrieval-based system의 경우, 100개의 후보 중에서 정답을 찾아내는 정확도인 p@1,100을 평가 metric으로 사용하게 된다.
Human evalution : 사람의 평가는 각 모델에 대해서 최고 100개를 구했다. 점수는 1(매우 안좋음), 3(어느 정도 좋음), 5(매우 좋음)으로 평가가 되었다. 총 3가지의 평가 주제에 대해서 평가를 진행했다.
- Empathy/Sympath : 상대방의 감정을 어느정도 잘 이해했는가?
- Relevance : 대화에 알맞는 응답을 제공하는가?
- Fluency : 제공된 응답을 제대로 이해할 수 있는가?
[표-1]은 automated metric의 평가 결과이고, [표-2]는 human evaluation의 결과이다.
Pretrained 모델의 경우, empathy 면에서 좋지 않은 성능을 보이고 있다. 조금 더 큰 Transformer 모델을 사용하는 경우 성능이 조금 좋아지기는 하지만, 사람의 성능에 비해서는 많이 떨어진다는 것을 확인할 수 있다.
ED 데이터를 선택 후모에 포함해서 학습하는 경우, 두 평가 기준 모두에 대해서 성능이 좋아지는 것을 확인할 수 있다.
ED 데이터를 fine-tuning에 사용하는 경우, automated metric의 모든 부분에 대해서 성능이 향상하는 것을 확인할 수 있었고, human evaluation에 대해서도 성능이 향상한다는 것을 확인할 수 있었다.
사전 학습된 classifier를 함께 사용하는 경우, BERT 를 기반으로 하는 모델에 대해서는 거의 사람 성능에 유사할 정도의 성능 향상이 이루어지는 것을 확인할 수 있었다.
[표-3]은 각 모델들에 대한 training detail 이고, [표-4]는 실제로 각 모델들의 응답의 예시이다.
# 관련 논문
- Unsupervised modeling of twitter conversations. : social media 기반 학습
- Personalizing dialogue agents: I have a dog, do you have pets too?
- BERT: pre-training of deep bidirectional transformers for language understanding. : BERT (리뷰)
- Training millions of personalized dialogue agents
- Multi-task deep neural networks for natural language understanding.
- Language models are unsupervised multitask learners.
- Ask me anything: what is reddit? : social media 기반 학습 (social media를 기반으로 학습하는 경우, aggressive 한 데이터를 학습할 수 있음)
- The second conversational intelligence challenge (convai2). : chitchat dialogue benchmark
- #emotional tweets. : emotion을 학습/hashtag 분석 (1)
- A sentimentand-semantics-based approach for emotion detection in textual conversations. : emtion 학습 (2)
- Domain adaptation for affect in tweets. : emtion classification task (1)
- Exploiting emotion knowledge from emoji and #hashtags. : emtion classification task (2)
- Emo2vec: Learning generalized emotion representation by multitask training. : emotion classification task (3)
- Using millions of emoji occurrences to learn any-domain representations for detecting sentiment, emotion and sarcasm. : emoji 분석
- A persona-based neural conversation model. : persona=based dialogue model (speaker-addressee model) (리뷰)
- Dailydialog: A manually labelled multi-turn dialogue dataset. : DailyDialog 데이터셋
- Parlai: A dialog research software platform. : parlAI
- Attention is all you need. : Transformer (리뷰)
- Learning semantic textual similarity from conversations.
- Diverse beam search: Decoding diverse solutions from neural sequence models. : Diverse beam search
- Learning word vectors for 157 languages. : fastText
- Polite dialogue generation without parallel data. : controlling style of text
- Bag of tricks for efficient text classification. : fasttext classifier
- Bleu: a method for automatic evaluation of machine translation. : BLEU score (리뷰)
댓글