[kg-cvae] Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders

Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders
 
paper reviews

Motivation

Dialogue generation 에 주로 사용되었던 encoder-decoder 모델은 다양하지 않고 지루한 응답 (e.g. I don’t know) 을 주로 내놓는다는 문제점을 가지고 있었다.

Differences

대답의 다양성이 떨어지는 문제를 해결하기 위해 크게 두가지 방법이 사용되었는데, 첫번째는 다음 발화를 만들기 위한 input 으로 대화의 히스토리 외에도 추가적인 정보를 제공하자는 입장이고 두번째는 기존 모델의 구조를 변형시켜보자는 입장(예: decoder 에 beam search 적용)이었다.

본 논문의 핵심 아이디어는 dialogue generation 을 one-to-many problem 으로 정의하자는 것이다. Input 인 dialogue history 가 동일해도 다양한 대답이 답이 될 수 있기 때문이다. 그리고 이렇게 정의된 문제를 풀기 위해 VAE 구조를 활용해 다양한 답을 latent distribution 으로 모델링하고, 이 분포로부터 샘플링하는 과정을 통해 새로운 답을 생성하고자한다.

dialogue

Method

CVAE (Conditional VAE) 구조를 dialogue generation 에 적용하고 나아가 kgCVAE (Knowledge-Guided CVAE) 모델을 제안하였다.

CVAE for Dialogue Generation

CVAE 모델의 세부적인 사항은 다음과 같다.

  • dialogue context : c (이전에 축적된 발화 (k1)개와 conversational floor (발화자에 대한 정보를 0, 1 로 표현), m (대화 주제와 같은 meta-feature) 으로 구성)
  • response utterance : x (k 번째 발화)
  • latent variable : z
  • prior network : pθ(z|c)
  • response decoder : pθ(x|z,c)
  • posterior distribution : p(z|x,c)
    • recognition network qϕ(z|x,c) 로 근사

CVAE 가 기존 VAE 와 다른 점은 prior network 와 response decoder 가 둘 다 c 에 conditioning 되어있다는 점이다. 따라서 VAE 에서는 데이터의 생성 과정을 조절할 수 없었지만 CVAE 를 이용하면 c 를 이용해 생성되는 데이터의 형태를 조절할 수 있다. c 에 따라 prior 분포가 달라지기 때문이다.

따라서 CVAE 를 학습시킬 때는 encoder 와 decoder 에 추가적으로 prior network 도 multilayer perceptron 으로 정의를 하고 동시에 학습을 시킨다.

Knowledge-Guided CVAE (kgCVAE)

실제로는 CVAE 를 학습시키는 것이 어렵기도 하고 상당히 많은 양의 데이터가 요구된다고 한다. 또 기존 대화 시스템 연구에서 언어학적 단서가 유용하다는 점이 밝혀졌기 때문에 본 연구에서도 dialog act 를 활용하는 kgCVAE 모델을 제안하고 있다.

kgcvae

KgCVAE 모델의 목적 함수는 다음과 같다.

L(θ,ϕ;x,c,y)=KL(qϕ(z|x,c,y)||Pθ(z|c))+Eqϕ(z|x,c,y)[logp(x|z,c,y)]+Eqϕ(z|x,c,y)[logp(y|z,c)]

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

첫번째 항은 c 를 prior network 에 태워 만든 z 의 분포와 recognition network 로 만든 z 의 분포 사이의 KL divergence 이고, 두번째 항은 정답 시퀀스 x 를 decoder 에서 다시 복원시킨 값과 정답을 비교해 구한 loss, 세번째 항은 추가적으로 주어졌던 linguistic cue (dialog act) 를 예측해 구한 loss 값에 해당한다. 특히 세번째 항을 통해 linguistic cue y 를 복원하는 데에 중요한 정보가 z 에 인코딩될 수 있다고 한다.

Optimization Challenges

VAE 의 decoder 에 RNN 구조를 사용하면 초반에 입력으로 들어간 z 값에 대한 정보가 뒤로 갈수록 사라지는 vanishing latent variable problem 이 발생한다 (Bowman et al. (2015)). Bowman et al. (2015) 은 해결책으로 KL annealing 과 word drop decoding 의 두가지 방법을 제안하였다.

본 논문에서는 추가적으로 bag-of-word loss 를 사용하는 방법을 제안한다. Bag-of-word loss 의 아이디어는 기본적으로 예측하고자 하는 시퀀스 x 를 xO 와 xbow 의 joint variable 로 정의하는 것이다. 그리고 xO 와 xbow 는 z , c 에 conditionally independent 하다고 가정한다. 즉 문장 “We compare two models” 의 확률은 문장의 네 단어가 등장(xbow)할 확률과 네 단어의 순서(xO)에 해당하는 확률의 곱으로 나타낼 수 있다는 것이다.

p(x,z|c)=p(xO|z,c)p(xbow|z,c)p(z|c)

그리고 중간의 p(xbow|z,c) 를 이용해 기존의 loss function 에 bag-of-word loss 라는 새로운 항을 추가해 새로운 loss function 을 정의하게 된다.

L(θ,ϕ;x,c)=L(θ,ϕ;x,c)+E_q_ϕ(z|c,x,y)[logp(xbow|z,c)]

모델에는 decoder 에 병렬적으로 전체 vocab 내의 단어들을 대상으로 multi-label classification 을 하는 네트워크를 하나 더 붙이는 방법을 사용했다. 이 추가적인 구조를 사용하면 backprop 시에 loss 가 decoder 의 rnn 을 거치지 않고도 바로 z 로 전달될 수 있어서 vanishing latent variable problem 을 해결할 수 있다.

Results

results

  • CVAE 구조를 dialogue generation 에 적용해 decoder 에서는 greedy decoding 만 사용하면서도 diverse & appropriate 한 대답을 생성해낼 수 있었다.
  • Bag-of-word loss 와 KL annealing technique 를 함께 사용해 training 에서 나타나는 vanishing latent variable 문제를 효과적으로 해결할 수 있었다.

Comments

  • Vanishing latent variable 문제가 시퀀스의 뒤로 갈수록 z 가 생성에 반영되지 않는게 문제라면 단순히 attention mechanism 을 적용해서 해결할 수는 없었나하는 생각이 든다.
  • 기존 방법에 비해 결과가 좋기는 했지만 정성적 평가를 보았을 때 현업에서 실제로 활용되기 위해서는 아직도 개선이 많이 필요해보인다.
  • Linguistic cue 를 사용하는 것이 현 모델의 성능을 향상시키는 데에는 도움이 됐겠지만 결국에는 그에 의존하지 않고도 생성을 잘 해낼 수 있는 모델이 필요할 것 같다.
  • 2018년도 google i/o 에서 발표되었던 google duplex 는 rule-based 로 생성해낸거였을까?

[출처] https://jiminsun.github.io/2019-02-12/zhao-2017/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86515
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78936
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95686
624 한국어 뉴스 데이터로 딥러닝 시작하기 - 4. doc2vec 모델 훈련하기 file 졸리운_곰 2020.01.04 1482
623 한국어 뉴스 데이터로 딥러닝 시작하기 - 3. 위키 데이터 한국어 형태소 태깅하기 졸리운_곰 2020.01.04 981
622 한국어 뉴스 데이터로 딥러닝 시작하기 - 2. 위키 덤프 데이터 파싱하기 file 졸리운_곰 2020.01.04 1071
621 한국어 뉴스 데이터로 딥러닝 시작하기 - 1. 한국어 위키피디아 덤프 다운로드 받기 file 졸리운_곰 2020.01.04 858
620 윈도우 10(windows 10)에서 PyTorch 설치하고 gpu를 사용하자!(PyTorch install) file 졸리운_곰 2020.01.01 992
» [kg-cvae] Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders file 졸리운_곰 2020.01.01 765
618 MongoDB(몽고디비) 특징 정리 file 졸리운_곰 2019.12.25 1264
617 NNST - 한국어 네이버 뉴스 데이터셋 file 졸리운_곰 2019.12.25 1242
616 [tensorflow] 머신러닝 초보를 위한 MNIST file 졸리운_곰 2019.12.24 1041
615 [tensorflow] mnist 데이터셋 정리 졸리운_곰 2019.12.24 898
614 감석분석 작업 로그 : 감성분석(Sentiment Analysis) - 깔끔한 텍스트 방식(tidytext) : xwMOOC 자연어 처리 졸리운_곰 2019.12.24 1243
613 딥러닝이란 무엇인가? (2) file 졸리운_곰 2019.12.22 2182
612 딥러닝이란 무엇인가? (1) file 졸리운_곰 2019.12.22 2531
611 머신러닝이란 무엇인가? file 졸리운_곰 2019.12.22 5775
610 Generative Adversarial Network : DCGAN을 이용한 이미지 생성 file 졸리운_곰 2019.12.22 1723
609 Get to know TensorFlow.js in 7 minutes 7분만에 텐서플로우 자바스크립트 훑어보기 file 졸리운_곰 2019.12.17 27965
608 Tensorflow Serving Tutorial 텐서플로우 서빙 설명 file 졸리운_곰 2019.12.17 1204
607 TensorFlow GPU 버전에서 CUDA_OUT_OF_MEMORY 발생 시... file 졸리운_곰 2019.12.12 1140
606 딥러닝 기반 자연어처리 기법의 최근 연구 동향 file 졸리운_곰 2019.12.12 1590
605 텐서보드를 이용하여 학습 과정을 시각화 해보자 file 졸리운_곰 2019.12.10 1388
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED