본문 바로가기
대학원 이야기/논문 리뷰

[논문 리뷰] A Persona-Based Neural Conversation Model (ACL 2016)

by misconstructed 2020. 11. 19.
728x90

Persona를 유지하면서 대화를 이어나갈 수 있는, persona-based neural conversational model에 대해서 다룬다. 

논문의 원본은 여기에서 볼 수 있다. 

기존의 seq2seq 모델과 유사하지만, decoder에서 한 사람의 persona를 나타내는 speaker embedding 과 addressee embedding 을 함께 입력으로 사용한다. 그러므로 이전 hidden state, 이전 timestep의 예상 결과, 그리고 speaker embedding 이 한 timestep의 입력으로 제공된다. Speaker embedding을 사용함으로서 비슷한 persona 를 보유하는 사람은 가까이에 위치하게 되는데, 이러한 방식은 학습 과정에서 배우지 않은 질문들에 대해서도 근처 다른 speaker embedding을 통해 유추해서 대답하고 일관성 있는 대답을 제공해줄 수 있다. 

Open-domain conversation model 에 대한 다양한 연구들이 진행되어 왔다. 기존 open-domain conversation model 의 가장 큰 문제점은 너무 일반적인(더 이상 대화를 이끌어 나갈 수 없는) 대답을 제공한다는 것과 일관적인 persona(대화를 할 때 한 사람이 보유하고 있는 성격/특정 등)를 보유하지 못한다는 것이 있다. [표-1]을 보면, 같은 질문을 다른 말로 하는 경우, 일관적이지 못한 답변을 제공한다는 것을 확인할 수 있다. 

[표-1]

이번 논문에서는 conversation model 이 persona를 꾸준하게 유지해서 사람과 비슷한 대화를 이끌어나갈 수 있는 방법을 제안한다. 기존의 연구들에서도 persona를 임베딩으로 나타내서 사용하는 방법들이 제시되었었다. 이번 논문에서도 동일하게 persona를 임베딩으로 사용하는 두 모델 SPEAKER MODEL(단일 화자)과 SPEAKER-ADDRESSEE MODEL(두 명의 화자) 을 제안한다. Speaker Model은 대답을 제공하는 speaker의 persona를 벡터로 나타낸다. Speaker-Addressee Model은 speaker 뿐만 아니라, 대화를 하는 상대(addressee)의 persona도 함께 벡터로 나타내서 사용한다. 

# Sequence-to-Sequence Model

Seq2seq 모델을 입력 $ X = \{x_1, x_2, ..., x_{nX} \} $ 을 LSTM에 제공해서 input gate ($ i_t $), memory gate ($f_t $), output gate ($ o_t $) 을 계산하게 된다. $ e_t $ 는 각 text에 대한 벡터를 나타내고, $ h_t $ 는 시간 t 에서의 hidden state를 나타낸다. $ h_t $ 는 $ e_t $ 와 $ h_{t-1} $ 을 이용해서 계산하게 된다. ([식-1] 참고) $ \sigma $ 는 sigmoid 함수를 의미한다.

[식-1]

Seq2seq은 결과적으로 출력 $ Y = \{y_1, y_2, ..., y_nY \} $ 을 예측한다. 한 출력 $ y_t $ 는 이전 모든 출력 $ y_1, .., y_{t-1} $ 과 입력 $ x_1, ..., x_{nX} $ 를 기반으로 구해지고, softmax 함수를 통해 확률로 제공된다. 결과로 생성되는 문장을 특수한 토큰인 EOS 가 나타나면 종료하게 된다. Greedy 방식으로 결과를 예측할 수도 있고, beam search 를 이용해서 다양한 후보들 중 제일 좋은 결과를 사용할 수도 있다. 

[식-2]

# Speaker Model, Speaker-Addressee Model

입력으로 제공되는 Message $ M = \{ m_1, m_2, ..., m_I \} $ 라고 표현하고,  $ R $ 은 $ M $ 에 대한 응답으로 $ R = \{ r_1, r_2, ..., r_J, EOS \} $ 로 표현한다. 여기에서 $ J $ 는 response 의 길이를 의미한다. $ r_t $ 는 word token을 의미하고, 한 word token 은 하나의 word embedding $ e_t $ 로 매핑된다. 

[그림-1]

Speaker Model : speaker 정보에 대한 모델링만 수행한다. (이름, 성별, 개인적인 정보 등) 이러한 정보들은 대화를 할 때 사용되는 내용과 대화하는 방식 등에 영향을 끼치게 된다. Speaker $ i $ 는 본인에게 해단되는 representation $ v_i $ 를 보유하게 된다. Seq2seq 모델(자세한 내용은 여기 참고)을 생각했을 때, 입력 $ S $는 encoder의 마지막 hidden state에 의해서 $ h_S $ 라는 representation을 생성하게 된다. Decoder에서는 이전 hidden state, 이전 time step에서 예측한 결과 $ e^s_t $ , 그리고 speaker embedding $ v_i $ 를 한번에 입력으로 제공한다. 이렇게 하면 speaker representation $ v_i $ 는 전체 대화에서 동일하게 참조된다. $ v_i $ 는 word prediction error를 기반으로 back-propagation에 의해 학습된다. Speaker representation을 사용하는 큰 장점 중 하나는 질문에 대한 답을 유추할 수 있다는 것이다. 질문에 대한 답을 학습 과정에서 명확하게 학습하지 못했어도, speaker representation 공간에서 가까이 위치하는 다른 speaker representation을 참고해서 답을 제공할 수 있다는 것이다. 이러한 방식을 조금 더 generalization 이 가능하게 한다. 

[식-3]

Speaker-Addressee Model : Speaker Model의 확장으로, speaker와 addressee 사이의 대화 패턴을 학습하게 된다. 대화 상대에 따라서 대화하는 방식이 달라질 수 있기 때문에, 대화하려는 상대에 대한 정보도 학습하게 된다. 대화에 참여하는 두 사람 $ i, j $ 에 대해서 동일하게 $ v_i, v_j $ 라는 representation을 생성한다. 이렇게 생성한 representation을 [식-4]와 같이 하나의 representation $ V_{i, j} $ 로 생성하고, 이후에는 Speaker Model 과 동일한 과정으로 연산을 진행한다. ([식-5]) Speaker-Addressee Model 을 학습할 때 가장 어려운 점은, 다양한 사람들이 포함된 대화로 구성된 데이터셋을 구하기 힘들다는 점이다. 

[식-4]
[식-5]

# Decoding, Reranking

Decoder에서는 beam size B = 200 으로 해서 decoding 을 수행했다. 각 time step 마다 $ B * B $ 개의 가능한 다음 단어들을 후보로 유지하고, 그 중 EOS가 나타난 문장들을 N-best list 에 추가시킨다. 나머지 문장들에 대해서는 top-B 만 유지해서 동일한 과정을 다음 time step에서 수행한다. N-best list 에서는 reranking을 수행하는데, 이 과정에서 일반적인 대답 ("I don't know" 와 같이 대화를 멈추게 하는 대답 등) Reranking을 length penalty와 target이 주어졌을 때 source 에 대한 log likelihood를 [식-6] 과 같이 사용했다. 

[식-6]

$ p(R|M, v) $ 는 message 와 speaker id ($ v $) 가 주어졌을 때 response 의 확률을 의미한다. $ \gamma $ 는 penalty weight 를 의미한다. 

# Dataset

Twitter Persona Dataset : Twitter FireHose 에서 가져온 데이터 중 한 사람이 3회 이상 지속된 대화를 총 60번 이상 (60번의 대화, 각 대화는 최소 3번 문장을 주고받음) 한 경우만 골라서 사용했다. 이렇게해서 총 74,003 명의 사용자를 추려냈고, 24,725,711 개의 대화를 구할 수 있었다. 

Twitter Sordoni Dataset : Sordoni 의 논문 (리뷰는 여기 참고) 에서 사용하는 데이터셋을 Twitter Sordoni Dataset 이라고 부흔다. 해당 데이터셋은 한 개의 message 에 대해서 평균적으로 10개의 reference를 제공한다는 점에서 Twitter Presona Dataset (reference 1개 제공) 과는 다른다. 그러므로 서로 다른 데이터셋에 대해서 BLEU 점수를 비교할 수 없다. (reference 가 10개인 경우 BLEU 점수가 훨씬 좋게 나온다.)

Television Series Transcripts : Speaker-Addressee Model 의 학습에 사용된다. Friends와 Big Bang Theory 의 대본을 사용했다. 총 13명의 주인공에 대해서 69,565 개의 대화를 추출했다. 데이터셋의 크기가 상대적으로 적기 때문에 기존의 seq2seq을 OpenSubtitles 데이터셋에 대해서 학습하고 transfer learning을 통해서 추가 학습을 진행했다. 

모델 구성은 다음과 같다.

  1. 4-layer LSTM, 1000-dim hidden cell
  2. batch size = 128
  3. learning rate = 1.0
  4. parameters = uniform distribution [-0.1, 0.1]
  5. gradient clipping : threshold = 5
  6. Vocab size = 50,000
  7. dropout = 0.2
  8. 14 epoch (1 month on Tesla K40 GPU)

# 실험

모델의 성능을 평가하기 위해서 BLEU 점수(사람의 평가와 유사한 결과를 제공)와 perplexity를 사용했다. A diversity-promoting objective function for neural conversation models. 에서 제안한 모델을 baseline으로 삼았다. (Twitter Sordoni Dataset으로 학습했다.) [표-2] 은 Twitter Sordoni Dataset에 대해서 성능 평가 결과이다. Baseline 보다 성능이 조금 더 좋게 나왔는데, 이것은 학습할 때 더 큰 데이터셋을 사용한 것과 dropout을 적용한 것, 모델의 "conversationalist" 한 특징에 의한 것이라고 분석한다. 

[표-2]

Twitter Persona Dataset에 대한 실험 결과는 [표-3], [표-4] 과 같다. Perplexity와 BLEU score 모두에 대해서 성능이 향상한 것을 확인할 수 있다. 또한, MLE (maximum likelihood) 가 MMI (mutual information) 보다 더 좋은 성능을 제공한다는 것을 알 수 있다. 

[표-3]
[표-4]

TV series dataset에 대한 성능 평가는 [표-5], [표-6] 와 같다. Speaker-Addressee Model과 Speaker Model 사이에 큰 차이가 없어보이는데, 이것은 Speaker-Addressee Model 을 너무 작은 데이터셋으로 학습했기 때문이라고 판단했다. 

[표-5]
[표-6]

[표-7]은 Speaker Model 에서 뽑은 예시이다. 동일한 질문에 대해서도 speaker의 persona가 다르다면 다른 대답을 제공한다는 것을 확인할 수 있다. [표-8]은 Speaker Model에서 생성된 예시 중, persona를 일정하게 유지하는 예시(user1)과 일정하게 유지하지 못하는 예시 (user2)를 나타낸다. User2의 경우, 같은 의미의 질문을 다른 단어들로 물어봤을 때, 일관적이지 않은 답변을 제공한다는 것을 할 수 있다. 

[표-7]
[표-8]

[표-9]은 Speaker-Addressee Model 에서 생성된 예시이다. Speaker는 물론, Addressee 가 다른 사람으로 바뀌면 다른 답변이 생성된다는 것을 알 수 있다. 또한, addressee를 직접 언급하는 답변들이 매우 자주 나타난다는 것을 알 수 있다. 

[표-9]


# 참고 논문

  1. Data-driven response generation in social media. : conversation system (1)
  2. A neural network approach to context-sensitive generation of conversational responses. : conversation system (2) (baseline) (리뷰)
  3. A neural conversational model. : conversation system (3) (리뷰)
  4. A diversity-promoting objective function for neural conversation models. : conversation system (4)
  5. Neural responding machine for short-text conversation. : conversation generation neural model
  6. Sequence to sequence learning with neural networks. : seq2seq (리뷰)
  7. Semantically conditioned LSTM-based natural language generation for spoken dialogue systems. : LSTM을 이용한 conversation system
  8. Neural machine translation by jointly learning to align and translate. : seq2seq with attention (리뷰)
    Addressing the rare word problem in neural machine translation. : neural language model
  9. Building end-to-end dialogue systems using generative hierarchical neural network models : end-to-end conversation system
  10. Attention with intention for a neural network conversation model. : intention network 를 적용
  11. Minimum error rate training in statistical machine translation. : MERT
  12. BLEU: a method for automatic evaluation of machine translation. : BLEU (리뷰)
728x90

댓글