일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래머스
- CSS
- 프로그래밍
- linux
- BFS
- AI
- 알고리즘
- 백준
- 리눅스
- 순열
- 코딩테스트
- 파이썬
- DFS
- 동적 프로그래밍
- nlp
- 구글 킥스타트
- dp
- 코딩 테스트
- 킥스타트
- 코딩
- PYTHON
- OS
- 그래프
- google coding competition
- 동적프로그래밍
- 딥러닝
- 네트워크
- kick start
- 운영체제
- 브루트포스
- Today
- Total
오뚝이개발자
Towards a Human-like Open-Domain Chatbot(Meena) 리뷰 본문
Towards a Human-like Open-Domain Chatbot(Meena) 리뷰
땅어 2021. 11. 4. 23:49
오늘 소개할 논문은 구글 리서치팀에서 발표한 "Towards a Human-like Open-Domain Chatbot"이다. (원논문 링크)
Meena라는 이름으로 잘 알려진 2020년도 구글에서 발표한 챗봇에 관한 논문이다. 하지만 사실상 챗봇 모델보다는 evaluation metric을 제안했다는 것에 큰 의의가 있다.
본 논문의 핵심
1. Meena는 end-to-end로 학습된 multi-turn, open-domain 챗봇이다.
2. 다음 토큰의 ppl(perplexity)을 최소화하는 방식으로 학습
3. SSA라는 human evaluation metric을 제안
SSA는 Sensibleness and Specificity Average다. 한마디로, 말이 되는지(sensible) 그리고 general하지 않고 specific한지 측정하는 metric이다. 연구팀은 실험결과 SSA와 PPL은 강한 상관 관계를 보인다고 말한다. (즉, PPL을 최적화한 모델은 sensible하고 specific함) 이와 관련해선 아래에서 좀 더 자세히 설명하겠다.
Open domain chatbot이란?
close domain chatbot이 specific task에 대답이 맞춰진 것에 반해 open domain chatbot은 어떠한 토픽으로도 대화 가능한 챗봇을 말한다. 이러한 open domain chatbot의 예시로는 Meena, XIaoIce, Mitsuku, Cleverbot 등이 있다.
Open-domain chatbot을 구현하는 데는 두 가지 방식이 있다. 하나는 Complex framework 방식으로 구현하는 것이다. 이는 knowledge-based, retrieval-based, rule-based system과 같은 여러 복잡한 framework component들의 집합으로 이루어진 dialog manage를 이용해 구현하는 것이다. XIaoIce, Mitsuku, Cleverbot과 같은 챗봇들이 이러한 방식이다.
다른 방법으로는 End-to-end 방식이 있다. 이는 복잡한 컴포넌트들의 집합체가 아닌 sigle learned model로 dialog를 수행할 수 있도록 구현한 것이다. Meena가 바로 이러한 방식으로 구현되었다.
Meena
앞서 말했듯이 Meena는 end-to-end 방식으로 train된 모델로 Public domain social media conversation으로부터 수집한 40B words를 가지고 학습을 시켰다. Meena의 메인 아키텍처는 seq2seq model with ET(Evolved Transformer)이며, multi-turn conversation으로 학습되었다.
SSA
SSA는 sensibleness + specificity이다. 연구팀은 다른 여러 모델들과 비교를 위해 evaluation을 하였는데 human judge가 모든 모델의 응답에 대해 sensibleness와 specificity라는 두 기준에 따라 label하도록 하였다. 그렇다면 왜 specific도 측정할까? 그냥 단순히 sensibleness만 측정해서 말이 되는지(make sense)만 확인하면 안되나?
이유는 바로 Sensibleness만으로는 충분하지 않기 때문이다. 가령, 모든 질문에 I don't know라고 응답하는 모델은 말은 되지만(make sense하지만) specific하진 않아 의미가 없다. 우리는 좀 더 사람같이(human-like) 말하는 그러한 dialog 모델을 원한다.
연구팀은 실험을 통해 이러한 SSA metric은 PPL과 강한 correlation 보인다는 것을 발견했다. 이러한 결과는 매우 유의미하다. Dialog에서 최근 human evaluation과 automatic evaluation metric인 BLEU간에 poor correlation이 밝혀진 바 있기 때문이다. 바꿔말하면, automatic metric인 PPL을 최적화하는 것이 사람이 평가한 좋은 대화 모델에 가까이 다가가도록 한다는 뜻이다.
논문에서 밝힌 사람과 Meena의 SSA 점수는 다음과 같았다.
- 사람 : 86%
- Meena base : 72%
- Meena full : 79%(filtering, tuned decoding)
- 사람보단 낮지만 Meena는 기존의 챗봇들 대비 높은 성능을 보임
두 가지 Evaluation
연구팀은 두 가지 evaluation 방식을 사용하였다.
1. Static Evaluation
static evaluation은 multi-turn 대화 데이터셋을 가지고 각각에 대한 응답 평가하는 방식이다. MTB(Mini Turing Benchmark)라고 부르는 dataset을 가지고 평가를 진행했는데 이는 315개의 single-turn context , 500개의 two-turn context, 662개의 three-turn context로 이루어져 있다. contexts가 고정되어 있기 때문에 static이라고 이름 붙였다고 한다.
2. Interactive Evaluation
interactive evaluation은 사람이 자유롭게 모델과 대화를 나누며 응답 평가하는 방식이다.(자유 토픽) static evaluation은 dataset이 어떻게 구성되어있는지에 따라 bias가 생길 수 있기 때문에 interactive evaluation도 함께 사용하는 것이다. 대화는 14turn(한쪽이 7turn씩) ~ 28turn으로 이어지도록 구성하였다.
Measuring Human Likeness
Sensibleness
Sensibleness는 common sense, logical coherence, consistency와 같은 요소들을 평가한다. confusing, illogical, out of context, factually wrong과 같은 샘플들은 "doesn't make sense"로 label 된다.
Sensible is not enough!!!
앞서 설명했듯이 dialog 모델을 평가하기에 sensibleness만으로는 충분하지 않다. 예컨대, I don't know와 같은 응답은 sensible하지만(말은 되지만) 너무 generic, unspecific하다.
연구팀은 실제로 question엔 "I don't know", statement엔 "OK"로 대답하는 GenericBot을 만들어 성능을 테스트하였다. GenericBot은 DialoGPT보다 높은 sensibleness를 보였지만 실제론 DialoGPT가 더 자연스러운 응답을 보이며 SSA도 높았다. 즉, 응답이 specific한지를 체크하는 것이 필요하다.
Specificity
specificity는 response가 sensible하면 specific한지 판단하여 evaluation하는 것이다. (sensible하지 않으면 애초에 말이 안되니 specific 여부를 판단할 필요가 없다.)
예컨대, A가 사람, B가 모델이고 서로 대화를 나눈다면 아래와 같은 경우는 Not specific하다.
A : "I love tennis"
B : "That's nice"
하지만, 아래와 같은 경우는 specific하다고 label한다.
A : "I love tennis"
B : "Me too, I can't get enough of Roger Federer!"
SSA(Sensibleness and Specificity Average)
논문에선 이러한 sensibleness와 specificity를 합쳐 dialog 모델을 평가하기 위한 SSA라는 하나의 metric으로 사용하였다. 그렇다면 SSA는 과연"얼마나 사람같은지(human-like)"를 잘 측정하는 metric일까? 연구팀은crowd worker들에게 응답 샘플을 보여주며 "human like"한 것을 꼽아달라고 하였다.(SSA를 메겨 evaluation하는 것이 아니라 단순히 사람 같은 것을 꼽는 것이다.)
결과는 SSA와 human-likeness 간에 우상향의 강한 상관관계를 보였다고 한다. 즉, SSA가 높은 모델은 좀 더 사람과 같이 대화를 한다고 생각할 수 있는 것이다.
Automatic Evaluation
human evaluation인 SSA와 달리 perplexity(PPL)은 automatic metric이다. ppl은 모델이 다음 단어를 얼마나 잘 예측하는지에 대한 성능을 나타내는 척도로 이미 많이 사용되고 있었다. 연구팀이 실험을 통해 보인 것은 SSA가 이러한 ppl과 강한 상관관계를 보인다는 것이다. 이것이 왜 유의미할까?
가령 dialog 모델을 하나 만든다고 해보자. 그럼 이 모델의 성능을 평가해서 얼마나 좋은지를 알아봐야 할 것이다. 그런데 챗봇이 나눈 대화 샘플을 사람이 직접 보고 사람 같은지를 평가하는 것은 생각보다 간단하지만 이를 scoring하여 평가한다는 것은 그리 간단한 일이 아니다. 하지만 ppl이 human evaluation인 SSA와 상관관계를 갖는다는 사실을 통해 automatic하고 directly optimizable한 ppl을 최적화할 objective로 함으로써 SSA도 높은 방향으로 만들어 결국 좀 더 human like하도록 응답하는 챗봇을 만들 수 있는 것이다.
Training data
연구팀은 학습 데이터를 트리로 구성하였다. 즉, 가장 처음 발화가 root가 되고 각 응답은 자식 노드로 취급한다. 각 path를 따라가면 하나의 conversation이 되는 셈이다. 이러한 각 path에서 특정 노드를 기준으로 이전의 모든 노드들이 context가 된다. 즉, 각 path마다 (context, response) pair를 뽑아낼 수 있다. text는 BPE(Byte Pair Encoding)으로 토크나이징 하였고, Meena에 최종적으로 사용된 text는 341GB였다고 한다. 참고로 GPT-2가 40GB의 text를 사용해 학습되었따.
데이터 filtering을 위해선 message가 다음의 경우에 해당하면 제거하였다.
- the number of sub words is less than 2 or more than 128
- the percentage of alphabetic characters is less than 70%
- message contains URL
- author's username contains 'bot'
- the message is repeated more than 100 times
- the message has a high n-gram overlap with the parent's text
- the message is potentially unsafe or offensive
Decoding
decoding 알고리즘으론 Sample-and-rank 방식을 사용하였다. temperature T를 사용해 N개의 후보를 sampling하고, 이 중 확률이 가장 높은 것은 pick하는 방식이다.
T값이 커지면 좀 더 희귀한 토큰을 선택하는 경향이 있고, 반대로 작아지면 좀 더 보편적인 토큰을 선택하는 경향이 있다고 한다. 실험에선 N=20, T=0.88을 사용하였다.
decoding 알고리즘으로 많이 사용하는 것 중 하나가 beam search 방식이다. 논문에선 sample and rank 방식이 이보다 더 자연스러운 응답을 도출해내도록 한다고 설명하면서 아래와 같은 예시를 첨부하였다. 아래의 대화 샘플은 "왜 너는 바다가 좋아?"라는 질문에 대해 beam search와 sample and rank 방식을 사용하여 얻어낸 응답들을 score에 따라 정렬해 나타낸 것이다.
Meena conversation 예시들
Meena는 상상 속 상황에 대해 대답하기도 하고, 영화에 대해 말하거나 단어의 개념을 정의하기도 하고, 사람과 농담을 하기도 한다. 하나씩 살펴보면 굉장히 흥미롭다. 더 많은 대화 샘플은 논문의 Appendix를 참조하면 된다. sample들이 굉장히 많은데 가만히 읽어보면 결과가 정말 재미있다.
Result
연구팀은 실험을 통해 Interactive, static evaluation 모두에서 SSA는 perplexity와 상관관계를 가짐을 보였다. 또한 Meena는 사람보다는 낮지만 타모델들과 비교해 가장 높은 SSA score를 기록하였다.
아래 표는 동일한 sample context에 대해 Meena, Cleverbot, DialoGPT의 응답을 서로 비교한 것이다. 읽어보면 흥미로운 대답들이 좀 있다. Meena는 다른 두 모델에 비해 상대적으로 sensible과 specific으로 label된 것이 많다.
Conclusion
1. 본 논문에선 autometic metric인 PPL(perplexity)은 human-likeness를 측정하는 human evaluation의 좋은 proxy가 될 수 있음을 시사하였다.
2. dialog system에 있어서 매우 방대하고 추상적인 개념인 human-likeness를 측정하는데 한 단계 다가섰다는 데에 의의가 있다.
3. 매우 복잡한 human-likeness를 보다 다각도에서 정확하게 측정하기 위해 향후 sensibleness나 specificity 이외에도 다양한 metric들이 등장하는 것이 중요함을 지적하였다.
'AI > Deep Learning Paper Review' 카테고리의 다른 글
RepSum : Unsupervised Dialogue Summarization based on Replacement Strategy(ACL 2021) 논문 리뷰 (0) | 2022.01.04 |
---|---|
대화 요약 Multi-View Squence-to-Sequence Models with Conversational Structure for Abstractive Dialogue Summarization(2020 EMNLP) 논문 리뷰 (0) | 2021.11.20 |
ELECTRA(ICLR 2020) 논문 리뷰 (1) | 2021.10.27 |
BERT(NAACL-HLT 2019) 논문 리뷰 (0) | 2021.10.08 |
Attention is all you need(NIPS 2017) 논문 리뷰 (0) | 2021.09.17 |