Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders
3 minute read

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 모델의 세부적인 사항은 다음과 같다.

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 모델의 목적 함수는 다음과 같다.

$\mathcal{L}(\theta, \phi ; x, c, y) = -KL(q_{\phi}(z|x, c, y) || P_{\theta}(z|c)) + \mathbb{E}_{q_{\phi}(z|x, c, y)}[\log{p(x|z, c, y)}] + \mathbb{E}_{q_\phi(z|x, c, y)}[\log{p(y|z, c)}]$

첫번째 항은 $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 annealingword drop decoding 의 두가지 방법을 제안하였다.

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

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

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

Results

results

Comments

Recent Posts

Why are Sequence-to-Sequence Models So Dull?
Variational Autoregressive Decoder for Neural Response Generation
Content Preserving Text Generation with Attribute Controls
Matching Networks for One Shot Learning
Pointer Networks