Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Toward Personalized Dialogue Agents

Toward Personalized Dialogue Agents

Scatter Lab Inc.

May 22, 2019
Tweet

More Decks by Scatter Lab Inc.

Other Decks in Research

Transcript

  1. 발표 개요 • 현재의 chit-chat 모델들은 유저들에게 그닥 매력적이지 않음

    ◦ 장기 기억 (Long Term Memory)의 부재 ◦ 구체적이지 않은 답변 (몰라요. 알겠어요 등등) ◦ 일관된 페르소나의 부재 ◦ 상식의 부재 등등... • 질 높은 데이터셋의 부재가 원인 아닐까? ◦ 위의 문제들 중 일관된 페르소나의 부재를 데이터셋의 구축을 통해 극복하자! ◦ 클라우드 소싱으로 페르소나 데이터셋을 구축하자! →Personalizing Dialogue Agents: I have a dog, do you have pets too? (ACL 2018) ◦ 클라우드 소싱으로는 부족하다 ! Reddit 데이터를 이용해서 대량의 페르소나 데이터셋을 구축하자! →Training Millions of Personalized Dialogue Agents (EMNLP 2018) • 두 가지 방법으로 수집한 데이터셋으로 대화 모델을 학습시켰을 때 대답이 더 일관성 있고, 유저 만족도가 향상됨을 실험을 통해 검증 • 모델링 방법보단 데이터셋 구축 방법에 좀 더 초점을 맞춤.
  2. 논문 개요 • 본 논문에서는 PERSONA-CHAT이라는 대화 코퍼스를 구축함 ◦

    더 매력적이고, 인간적인 chit-chat 대화를 가능하게 하는 것이 목표 ◦ Amazon Mechanical Turk를 이용하여 클라우드 소싱 ◦ 데이터 수집은 총 3가지 스테이지로 이루어짐 ▪ Personas: 1155개의 페르소나를 클라우드 소싱 ▪ Revised personas: 더 도전적인 데이터셋을 만들기 위해 문장을 Rephrase ▪ Persona chat: 두 명의 클라우드 소서들이 랜덤한 페르소나로 서로 대화하도록 • Next Utterance를 Prediction할 수 있는 몇 가지 모델들을 이용하여 PERSONA-CHAT 데이터셋의 효용성을 검증 ◦ Ranking ◦ Generation
  3. Personas • 목적 ◦ 자연스럽고 구체적인 프로필을 작성하고, 일반적인 사람들의

    관심사나 평범한 주제들을 포함시키는 것 • 방법 ◦ 하나의 페르소나에 대해 최소 5문장으로 이루어지도록 지시 ◦ 각 문장들이 최대 15단어 정도인 짧은 문장이 되도록 지시 ▪ 너무 길어지면 클라우드 소서들이 흥미를 잃고, 기계에게 너무 어려운 태스크가 되어버림 ◦ 단, 개인 정보 유출 방지 및 다양성을 위해 클라우드 소서 자신의 프로필을 쓰지 않도록 지시
  4. Revised personas • 목적 ◦ 대화 코퍼스를 너무 쉽거나 너무

    어렵게 구축하지 않도록 하기 위함 ▪ 잘 알려진 QA 데이터셋인 SQuAD의 경우, 단순한 단어 overlap만으로 맞출 수 있는 케이스가 다수 존재 • 방법 ◦ 새로운 클라우드 소서들을 고용해서 문장을 새로운 문장으로 rephrase하도록 지시 ▪ ‘난 농구를 좋아해'→ ‘난 마이클 조던의 광팬이야’ ▪ 완전히 동일한 의미로 리프레이징하지 않고, 동일한 페르소나가 각각을 포함할 수 있도록 rephrase ◦ 원래 단어를 단순 카피해서 재구성하지 않도록 지시 ▪ ‘내 아빠는 현대 자동차에서 일했어' • ‘내 아버지는 자동차 업계에 종사하셨어’ (O) • ‘내 아빠는 현대 자동차에 몸 담으셨었어’ (X)
  5. Persona Chat • 목적 ◦ 페르소나 셋을 활용하여 다이얼로그 데이터를

    생성하기 위함 • 방법 ◦ 두 명의 랜덤 클라우드 소서가 주어진 페르소나로 연극하듯이 대화하도록 지시 ▪ “상대방과 자연스럽게 대화하면서 서로에 대해 알아가라”라고 지시 • 기존 연구에서 자신에 대해 너무 많이 말하려는 경향이 있다는 것을 발견했기 때문 • “상대방과 교대로 질문/답변해라”라고 지시 ▪ 고퀄 대화에는 보너스를 지급! ◦ 턴 베이스 기반이고, 각 문장은 15단어 미만이 되도록 지시 ◦ 페르소나 문장을 그대로 가져다 쓰지 못하도록 지시 ▪ 페르소나 문장과 단어 매칭이 되면 에러 메시지를 보냄 ◦ 각 대화는 6-8턴이 되도록
  6. Models • 크게 Ranking-based models와 Generation-based models로 나뉨 • Ranking-based

    models ◦ 훈련 셋의 reply들을 possible candidates로 생각하고, 각 reply들에 점수를 매겨 순위를 매기는 모델 • Generation-based models ◦ Dialogue history와 Persona를 조건으로 하여, 답변 단어들을 순차적으로 생성해나가는 모델
  7. Ranking Models • 베이스라인 모델 ◦ IR 모델 ▪ 훈련

    셋 내에서 가장 유사한 Utterance를 tf-idf similarity를 이용하여 검색 ◦ Starspace ▪ (Dialog+Persona)와 Next Utterance간의 유사도를 단어 임베딩의 합 벡터의 cosine similarity를 이용하여 측정 후, 제일 유사한 Utterance를 선택 • Ranking Profile Memory Network ◦ Dialogue history를 input query로 입력하고, 각 profile sentence에 대한 Attention 값을 학습 ◦ candidates와 q+의 유사도를 이용하여 랭킹을 매김 • Key-Value Profile Memory Network ◦ Dialogue history를 Keys, Next Dialogue Utterances를 Values로 하는 메모리 네트워크 ◦ Ranking Profile Memory Network에서 구해진 q+를 이용하여 각 key에 대한 attention 값을 구하고, Value의 가중합을 만들어 새로운 query embedding q++를 생성
  8. Generation Models • Seq2Seq ◦ LSTM 인코더/디코더를 갖는 단순 Seq2seq

    ◦ Persona는 인풋 시퀀스에 concat하여 입력 • Generative Profile Memory Network ◦ Seq2seq 모델에서 디코딩을 할때 각 step에서 메모리 (여기서는 프로필 문장들)에 attend하여 persona context vector를 생성하고 이 벡터를 추가로 입력해주는 방식
  9. Experiments • Ranking vs Generation hits@1에 의한 성능 비교를 했을

    때 Ranking 모델이 Generation 모델보다 좋은 성능
  10. 논문 개요 • PERSONA-CHAT 데이터셋의 문제점들을 보완 ◦ 클라우드 소싱으로

    수집한 데이터셋이므로, 실제 human-bot 다이얼로그를 표현하지 못함 ◦ 데이터셋의 커버리지에 한계가 있음 • Reddit 코멘트 데이터를 이용하여 very large 스케일의 페르소나 데이터셋을 구축 ◦ 단순한 휴리스틱을 사용해서 500만개 이상의 페르소나를 생성하고, 7억 문장 이상으로 구성된 다이얼로그 데이터셋을 구축 • 이 데이터셋을 이용하여 pretraining후, PERSONA-CHAT 데이터로 finetuning한 모델이 PERSONA-CHAT 데이터셋에 대해 SOTA 성능을 보임
  11. Millions of Persona-based Dialogues • Reddit 데이터를 이용하여 다음과 같은

    페르소나 데이터셋을 만드는 것이 목표 • 3가지 스테이지로 구성 ◦ Preprocessing ◦ Persona Extraction ◦ Dataset Creation
  12. Preprocessing • 방법 ◦ 1.7 billion의 코멘트로 구성된 Reddit 덤프를

    이용 ◦ 모든 특수 문자는 whitespace로 처리하고, whitespace 기준으로 토크나이징 ◦ 250k의 고빈도 단어들로 사전을 구축 ◦ 100 토큰 이상의 코멘트는 100 토큰 기준으로 잘라냄
  13. Persona extraction • 목적 ◦ 레딧 각 유저가 작성한 모든

    코멘트를 바탕으로 그 유저의 페르소나를 작성하기 위함 • 방법 ◦ 각 코멘트를 문장 단위로 분할 ▪ 각 문장은 4-20단어로 구성되고, 온점을 포함하도록 ◦ 각 문장은 I 혹은 my를 포함하도록 ◦ 각 문장은 적어도 하나의 동사를 포함하고, 적어도 (명사, 대명사, 형용사) 중 하나를 포함하도록 ◦ 데이터 양의 조절을 위해, 페르소나의 사이즈를 N개의 문장 이하로 제한: 4가지 설정으로 N개 문장을 선택 ▪ Rules: 위의 규칙을 만족하는 문장들을 N개 랜덤 선택 ▪ Rules+Classifier:위의 규칙을 만족하고, PERSONA-CHAT 데이터셋으로 학습한 분류기의 스코어가 일정 점수 이상인 문장들을 선택 ▪ Random from user: 위의 규칙 중 길이 규칙만 따르는 유저의 코멘트 문장을 랜덤 선택 ▪ Random from dataset: 전체 데이터셋 내의 문장을 랜덤으로 선택
  14. Dataset Creation • 방법 ◦ 각 스레드 (댓글창)에서 연속적인 코멘트들을

    이용하여 context, response를 구성 ◦ Validation/Test 데이터는 각각 50k의 다이얼로그로 구성 ◦ 훈련 데이터셋에 대해서만 페르소나를 추출 (Persona extraction 방법을 통해) ▪ 테스트 셋의 response에는 명시적인 페르소나가 존재하지 않음 ◦ 레딧 데이터셋 전체 유저 13.2m 가운데 ▪ 룰베이스 설정으로는 4.6m의 페르소나 생성 ▪ 랜덤 설정으로는 7.2m의 페르소나 생성
  15. End-to-end Dialogue model • Next Utterance Prediction 기반 모델 •

    Encoded Persona와 Encoded Context를 1-hop Memory network에 입력 ◦ Context as query, Persona as memory • 후보 Reponses와 Persona+Context의 joint representation을 Dot-product ◦ 정답 Response의 softmax 값이 최대가 되도록 학습 • Context, Response 인코더로는 Bag-of-words, LSTM, Transformer 3종류를 검증 • Persona 인코더로는 Bag-of-words
  16. 결론 및 개인적인 감상 • 일관된 페르소나를 갖는 대화 모델을

    학습시키기 위한 페르소나 데이터셋을 구축하는 방법을 2가지를 소개함 ◦ 클라우드 소싱 ◦ Reddit • 랭킹 모델/생성 모델을 이용하여 페르소나 데이터셋의 효용성을 검증함 ◦ 아직까진 랭킹 모델이 자동 평가/사람 평가에서 더 좋은 성능을 냄 ◦ 그러나, 랭킹 모델 역시 디테일한 정보가 일관적이지 못할 수도 있을거라 생각 ▪ Persona: “난 여자 아이돌을 좋아한다” ▪ Response: “난 아이돌 중에 방탄소년단이 제일 좋아” ???
  17. 결론 및 개인적인 감상 • Reddit 데이터로 페르소나 데이터셋 만든

    방법을 우리도 적용할 수 있지 않을까? ◦ 우리가 갖고 있는 카톡 데이터는 썸타는 남녀, 커플 등등 서로를 알아가는 대화가 다수 포함되어 있음 • 논문에는 언급이 되어 있지 않으나, profile sentences를 수집하다보면 모순되는 profile sentences가 포함될 수도 있을 것 ◦ “난 여자 아이돌 중에 트와이스가 제일 좋아”: 아이즈원 데뷔 전 ◦ “난 여자 아이돌 중에 아이즈원이 제일 좋아": 아이즈원 데뷔 후 ◦ 이에 대한 처리도 필요할 듯 • Facebook(FAIR)에서 오픈 도메인 대화 태스크에 관한 논문을 활발히 발표하는 느낌 ◦ I Know The Feeling: Learning To Converse With Empathy (ICLR 2019) https://arxiv.org/pdf/1811.00207 ▪ 공감 능력을 학습하기 위한 데이터셋을 클라우드 소싱으로 구축 ◦ Wizard of Wikipedia: Knowledge-Powered Conversational Agents (ICLR 2019) https://arxiv.org/abs/1811.01241 ▪ 위키 정보를 활용하여 대화하는 능력을 학습하기 위해 위키피디아로 지식 데이터셋을 구축하고, End-to-end로 학습가능한 모델 아키텍쳐를 제안 ◦ 둘 다 오픈 데이터셋으로 웹에 공개되어 있음.