본문 바로가기

NLP/논문이해

[논문이해] Commonsense-Focused Dialogues for Response Generation: An Empirical Study

논문명: Commonsense-Focused Dialogues for Response Generation: An Empirical Study

 

 

https://arxiv.org/abs/2109.06427

 

Commonsense-Focused Dialogues for Response Generation: An Empirical Study

Smooth and effective communication requires the ability to perform latent or explicit commonsense inference. Prior commonsense reasoning benchmarks (such as SocialIQA and CommonsenseQA) mainly focus on the discriminative task of choosing the right answer f

arxiv.org

 


 

초록

 

당위성

  • 의사소통이 부드럽고 효율적으로 이뤄지려면, '상식을 활용'해 추측/추론하는 능력이 필요하다.

 

문제 제시

  • 1. 지금까지 Commonsense reasoning Dataset 들은 선택지 후보 중 하나를 고르는 것에 초점이 맞춰져있지, 대화속에서 상호작용이 긴밀히 반영된 건 아니었다.
  • 2. 심지어 엄밀히 보면, 그런 Dataset 들이 상식(Commonsense)에 초점을 둔 것도 아니었다.

 

해결책

 

ㄱ. 우리는 11K 정도의 'Commonsense-Dialogues'라는 Dataset 을 제공한다.

  • 1. ConceptNet 의 힘을 빌려, 현존하는 Dialogue Dataset 에서 commonsense 가진 dataset 을 자동으로 추출한다.
  • 2. SocialIQA의 사회적 맥락/상황을 바탕으로 25k의 Dataset 을 만들었다. 목표는 대화형 환경에서 사회적 상식을 보여주는 것이다.

 

ㄴ. 우리 데이터셋을 통해 훈련된 모델의 성능을 평가해서, baselines 보다 더 일관되게 commonsense 를 보이고자 한다.

 

ㄷ. 마지막으로, ConceptNet 과 'pretrained language and dialogue model'로부터 나온 features 를 통해 자동평가하는 방식도 제시한다.

 


 

본론

 

상식 기반의 대화가 부족한 Response Generation 분야

 

대화라는 것은 당연히 상식에 기반하여 유추하는 과정이 필요하다. 우리는 아무 생각 없이 대화한다고 느끼지만, 나름 상대방의 말에서 드러나지 않는 부분들을 추측하고 예상하여 대화를 이어나간다.

 

예시를 들어보자.

 

"나 내일 수많은 사람들 앞에서 공연할 것 같아."

 

라는 말을 들으면, 상식적으로 '아, 이 친구가 긴장을 했구나.', '많이 떨리겠다.' 등 다양한 걸 유추한다. 그리고 그 중에 하나에 연관된 반응(response)을 생성(generate)한다.

 

"걱정하지마. 넌 늘 잘해왔잖아. 잘할거야."

 

하지만 이건 공감적인(empathetic) 반응이다. 여지껏 Response Generation(이하 'RG') Model 은 공감적이거나 지적인(knowledgeable) 반응을 만들려는 노력이 많았지, 상식(commonsense) 기반의 대화에선 부족함이 있었다.

 

상식 기반 데이터셋이 있긴 한데, Reddit 에서 가져온 것이라 single-turn 인데다가 실제 현실에서 일어나는 대화라고 하기엔 인터넷에서 나눈 대화에 불과했다. 정말 이상적인 데이터셋이라 함은 multi-turn 이며, 사람들끼리 만나서 나눈 대화여야 한다.

 

(single-turn: 한번씩 대화를 주고 받았다는 것. 각각 한마디씩으로 끝났다는 의미다. 반대로, multi-turn 이면 여러 번 대화가 오고 간 것을 의미한다.)

 

 

Commonsense Dialogue Dataset 을 직접 만들다

 

아래 3가지 조건을 만족하는 Dataset 을 직접 만들었다.

  • large-scale
  • multi-turn
  • open-domain

 

방법은 다음과 같다.

 

1. 기존 Dataset 에서 filtering 하자.

  • 현존하는 3가지 Dataset 에서 추출한다. → DailyDialog(DD), EmphatheticDialogues(ED), MuTual
  • 추출할 때, ConceptNet 을 통해 상식에 초점을 둔 대화(Commonsense focused dialogues)인지 확인한다.
  • 이렇게 모은 게 21K 다.

 

예시를 통해 ConceptNet 을 어떻게 활용하는지 자세히 알아보겠다. 다음 대화를 지켜보자.

 

ㄱ. Identify Candidate Concepts

 

"Hi, I want to find a doctor."

"What kind of doctor are you looking for? A general doctor or a specialist?"

 

위 대화에 POS tagger, lemmatizer, stopword list (from NLTK package)를 사용해서 '명사, 동사, 형용사'만 추출할 계획이다. 위 대화에서 도출하면 다음과 같다.

 

"want, find, doctor" ← "Hi, I want to find a doctor."

"look, general, doctor, specialist" ← "What kind of doctor are you looking for? A general doctor or a specialist?"

 

 

ㄴ. Query ConceptNet for Neighboring Entities

 

이제 ConceptNet 에 저장되어 있는 관계를 모두 찾아 저장할 수 있다. ConceptNet 에 저장된 관계는 (e1, r, e2) 의 triple 형태인데, (대상1, 관계, 대상2) 이런 느낌으로 보면 된다.

 

예컨대, 'doctor'를 ConceptNet 에서 찾는다면, '(doctor, LocateAt, hospital)', '(patient, RelatedTo, doctor)', '(specialist ,TypeOf, doctor)' 이 있다.

 

 

ㄷ. Search Entities in the Next Turn

 

"Hi, I want to find a doctor."

"What kind of doctor are you looking for? A general doctor or a specialist?"

 

위 대화를 다시 보자. 첫번째 대화에 ㄱ에 의해 'doctor'라는 단어를 뽑을 수 있다. 그리고 ㄴ에 의해 '(specialist, TypeOf, doctor)'를 추출할 수 있다. 마지막으로 다음 이어지는 대화에서 'specialist'라는 단어를 뽑을 수 있다. 즉, 이런 경우엔 'TypeOf'라는 관계가 상식(commonsense)로서 내재되어 있음을 확인할 수 있다.

 

ㄹ. Filtering Results

 

이런 식으로 filtering 을 진행했다. 이 연구에서 3가지 Dataset 을 사용했는데, 다음과 같다.

 

  • DailyDialog(DD) (Li et al., 2017). 다양한 영어 교육 웹사이트에서 crawling 한 일상 대화
  • EmpatheticDialogues (ED) (Rashkin et al., 2019). Amazon Mechanical Turk 에서 crowdsourcing 한 공감 중심 대화
  • MuTual (Cui et al., 2020). 중국학생을 위한 영어 듣기 시험 문제를 기반으로 만든 추론 중심 응답 선택 데이터셋

각각 general-domain, empathy, and general reasoning 에 초점을 두고 있다.

 

ㅁ. Limitations

 

저자는 위 방식에 대해 3가지 한계를 언급한다.

  • 문맥이나 의미보다 피상적인 형태로 Filtering 을 했다는 점
  • 구(phrases)가 아니라 하나의 단어(single word)를 대상으로 했다는 점
  • one-hop 관계만 고려했다는 점. 즉, 직접적인 관계만 고려했다는 점

특히 'one-hop' 관계만 고려했다는 점은 평가와도 연관된다. commonsense 가 잘 활용되었는지 확인하려면, 그 기준 역시 명확해야 한다. 하지만 'one-hop'을 넘어서 여러 단계로 걸치는 것도 허용이 된다면, 그때부터 모호해진다. 그래서 이렇게 해둔 것 같다.

 

 

2. 직접 제작한다.

 

한편으로는, 현존하는 데이터셋만 활용하는 것보다 직접 만들 필요성이 있었다. 그래서 다음과 같은 방법으로 직접 만들었다.

 

  • SocialIQA Dataset 역시 활용한다.
  • 이 데이터셋에 있는 social context 에 기반하여, 25K 를 새롭게 직접 만든다.

 

더 자세히 단계를 나눠서 살펴보자.

 

 

ㄱ. Background and Motivation

 

저자는 Amazon Technical Turk의 crowdsourcing worker 로부터 dailogues 를 모았다고 한다. 이때, SocialIQA를 사용했다. 저자들은 SocialIQA 맥락을 통해 데이터셋을 제작한 이유를 3가지로 나눠서 제시한다.

 

  • knowledge graph ATOMIC 에 존재하는 다양한 event phrases 를 구체화한 게 SocialIQA 이기 때문에, 상식 추론이 있을 가능성이 높다는 점(potential commonsense inference)
  • ATOMIC 이 넓은 범주의 commonsense 를 기반으로 두고 있어서, context 와 commonsense 모두 다양할 것이라는 점
  • 재작성(rewriting)이 문장을 보다 자연스럽게 만들어줄 뿐만 아니라, 대화를 떠올리기에도 어렵지 않을 것이라는 점

 

ㄴ. Prompt Selection

 

작업자들(crowdsourcing workers)이 쉽게 대화(dialogue)를 생성하려면, 대화거리(prompt)의 역할이 매우 중요하다. 저자가 데이터를 검토한 결과, prompt 가 너무 짧거나 흥미로운 사건이 없는 경우가 가장 어려웠다고 한다. 예컨대, 'Robin stopped eating the food to save room for dessert'(Robin 은 디저트를 먹을 배를 남기려고, 음식을 먹는 걸 멈췄어.) 와 같은 prompt 는 길어서 대화 생성이 어렵다.

 

그래서 heuristic criteria 를 사용해서 Prompt 를 걸렀다. 그 기준은 다음과 같다.

  • 문맥은 15단어 이상
  • 중간에 마침표나 쉼표와 같은 구두점을 포함
  • 사람 이름이 있어야 함

 

예시로 다음과 같은 prompt 가 탄생하게 된다.

 

prompt example: Tracy performed her function. Their employer gave them a raise

(Tracy 는 그녀의 역할을 수행했다. 그들의 고용주는 그들에게 임금 인상을 제공했다.)

 

 

ㄷ. Dialogue Collection

 

자, 이제 작업자들에게 prompt 를 보고 대화(dialogue)를 만들어달라고 요청했다. prompt 에 나온 이름을 보고 그게 자신인 된 것처럼 몰입해서 친구랑 대화하듯 만들어달라고 요청했다. 이때 4 ~ 6 turn 으로 만들어달라고 했다.

 

135,000개에서 ramdom sampling 해서 5000개를 뽑은 뒤, 각 context 마다 5개의 dialogue 를 만들어 총 25000개를 만들었다. 아래 그림이 그에 대한 예시다.

 

 

ㄹ. Filtering

 

이렇게 만든 데이터셋 역시 ConceptNet 으로 Filtering 한다. 아까 방식과 같다. '(대상1, 관계, 대상2)' 가 잘 반영되어 있는지를 보는 것이다.

 

하지만 놀랍게도 Filtering 했더니, 예상보다 많은 데이터가 제거되었다. SocialIQA 를 기반으로 만들면, 상식(Commonsense)가 잘 반영될 것이라 예상했는데 그렇지 않았다. 그 이유는 위에서 말했듯이, Filtering 의 한계 때문이다. Commonsense 라 한다면 깊게 내재된 관계를 말하는데, Filtering 은 단순히 단어 단위로 ConceptNet 이 규정한대로만 데이터를 가를 뿐이다.

 

 

평가에 관하여

 

우리의 목적은 무엇이었나

 

이 논문/연구의 목적을 까먹을 때가 됐다. 다시 짚어보자면, 'dialogue response generation 에서 상식(Commonsense)이 얼마나 중요한가'를 알아보고자 했다. 그러기 위해서 우리는 Dataset 을 만드는 과정에 대해 상세히 알아보았다.

 

그리고 2가지에 집중하여 실험을 할 계획이다.

  • RG(response generation) 모델이 상식을 잘 따르는가?
  • commonsense focused dialogue 로 학습한 모델은 모델의 성능을 향상시킬 수 있는가?

 

실험 환경

 

모델은 GPT2를 사용한다. 그리고 training 을 할 때, multitask LM loss 를 사용했다. 여기서 주목해야 할 점은 데이터셋의 환경이 3가지로 나뉜다는 점이다. 모델이 아닌 데이터셋에 따른 성능 차이를 결과로 제시한다는 점에 유의하자.

 

  1. Existing Datasets: 현존하는 데이터셋들로 훈련시키고자 함. DailyDialogue(DD), EmpatheticDialogues(ED), TopicChat 을 사용하였다. 왜 MuTual(MT)을 사용하지 않았냐고 묻는다면, MuTual 은 response generation 이 아니라 selection 을 위한 dataset 이라서 TopicChat 을 넣었다고 밝혔다. 이거 한번에 학습 시키는 게 아니라, 데이터셋마다 학습시키는 거다. 즉, DD로 학습한 모델, ED로 학습한 모델, TC로 학습한 모델 각각 있다.
  2. Filtering existing(FE): DD, ED, MT 를 ConceptNet 으로 Filtering 한 데이터셋을 의미한다. 여기서는 또 MuTual 을 넣었다. 아무래도 Filtering 이 미치는 영향을 ablation study 를 통해 확인하고자 하기 위해 만든 조건인 것 같다.
  3. Ours: 위에서 실컷 설명했던 자체 제작 데이터셋이다. 논문에선 Ours 를 2가지 형태로 제시했다. 아래 2가지다.
  • FE and all of the 25k collected dialogues (FE+new crowdsourced)
  • FE plus the 11K filtered dialogues of our collected data (FE+filtered crowdsourced).

 

이에 따라 총 6가지 데이터셋이 탄생하고, GPT2 역시 6개가 각각 학습되어 평가에 사용된다. Test Dataset 은 FE + new data 에서 10% 를 샘플링해서 4.6K 이며 절대 겹치는 일이 없도록 했다고 한다.

 

 

평가 기준

 

평가는 2가지로 이뤄진다.

  • test dataset 기반으로 'automatic evaluation'
  • sampling 하여 'human evaluation'

 

ㄱ. Automatic Metric: 널리 쓰이는 4가지 지표를 사용한다.

이때 주의할 점은, 위 평가지표들이 생성에 많이 쓰이는 건 맞으나 상식적 타당성을 평가하는 척도는 아니라는 것이다.

 

ㄴ. Human evaluation

 

가장 확실한 건 역시 사람이 평가하는 것이다. 하지만 모두 하기엔, 비용이 많이 든다. 그래서 300개만 뽑아서 평가하기로 했다. 총 6개의 모델과 정답까지 7가지 경우니, 2100개의 데이터가 평가 대상이었다.

 

작업자분들께 1 ~ 10 사이로 '상식적 타당성(commonsense plausibility)'에 맞춰서 평가해달라고 했다. 문법적인 오류는 신경쓰지 말아달라고 당부드렸고, 한 데이터당 3명이 평가하고 평균을 매기는 방식으로 진행했다고 한다.

 

 

ㄷ. Proposed Automatic Metric for Commonsense

 

사람이 직접 평가하는 건 비싸다. 심지어 주관적이다. 그래서 정답 없이도 상식이 잘 반영되었는지 측정할 수 있는 Automatic Metric 을 제시하고자 한다. 방법은 다음과 같다.

 

"인간이 채점해놓은 점수를 보고 학습한 Regression Model - MLP(multi-layer perceptron) 을 만들자."

 

그리고 이 시도에 대해서 이야기하는데, 솔직히 성능이 너무 낮고 'DialoGPT 를 활용해서 점수를 뽑는 논문'을 읽어야 하기에 더 이상 찾아보지 않았다.

 

실험 결과

 

ㄱ. Automatic Metric

 

Perplexity 만 보면, 기존 데이터셋(DD, ED, TC)이 훨씬 성능이 좋지 않다. 저자는 이에 대해 다음 이유를 근거로 든다.

  • 1. Test Dataset 역시 Filtering 거쳤기 때문에, 더 잘 맞아떨어질 것이다.
  • 2. Test Dataset 은 여러 데이터로부터 sampling 되었으니, 단일 데이터셋이 불리할 수 밖에 없다.
  • 3. 기존 데이터셋(DD, ED, TC)보다 새로운 데이터셋들이 크기가 더 크다.

(솔직히 이 실험 결과를 보기 전부터, 위 점들이 거슬렸다. 애초에 이러한 결과는 너무 당연했다.)

 

한편, 나머지 평가 지표들은 차이도 별로 안 나고 다 낮다. 저자는 이게 Dialogue 분야 특성상 한계라고 말한다. (이럴 거면, 왜 실험한거지?)

 

 

ㄴ. Human Evaluation

실험 결과를 문장으로 옮기면, 다음과 같다.

  • Human response: 역시 사람이 최고다. GPT 도 갈 길은 멀다.
  • FE: Filtering 을 사용하면, 점수가 오른다. 대신 분산도 커진다.
  • FE + Crowdsourced: C 를 추가하니, 점수도 오르고 분산도 작아졌다.
  • FE + FC: 좀 더 Filtering 하니, 정확도와 분산이 개선되었다.

 

(이를 통해 '양도 중요하지만, 양보다 질이 더 중요하다.'와 같은 결론을 얻을 수 있었다고 말하는데, 당연한 소리나 앞에서 했던 이야기를 반복하는 경향이 좀 있는 논문이다.)

 

 

ㄷ. Proposed Commonsense Automatic Evaluation Results

 

 

Spearman's Correlation 이 뭔지 몰라도, 범위가 -1 ~ 1이다. 즉, '1에 가까울수록 인간의 평가와 유사하구나.' 라고 생각하면 된다. 근데, 저 척도를 보면 알 수 있지만, 0.2 밖에 안 된다. FED(DialoGPT 로 뽑는 점수)보다는 좋지만, 그래도 아직 봐줄만한 성과는 아닌 것 같다. 그래서 이 정도만 이야기하고 넘어가겠다.

 

 

평가

 

1. 상식 기반 대화 분야를 개척하다 (+)

: 상식 기반 대화를 강조하고, 이를 위해 데이터셋을 만들거나 자동화된 평가 지표를 만들려는 시도가 좋았다.

 

2. ConceptNet 으로 상식을 담을 수 있을까? (-)

: 이 논문에서 상식을 정의할 때, ConceptNet 이 갖고 있는 triple 을 활용한다. 하지만 '상식'이라는 것은 그렇게 간단히 정의할 수 있는 부분이 아닌 것 같다. 하지만 지금 당장 할 수 있는 시도 중의 최선이라고 느껴진다.