0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【論文メモ】Simulated Chats for Building Dialog Systems: Learning to GenerateConversations from Instructions (EMNLP 2021)

Posted at

Findings of EMNLP 2021 で紹介されたSimulated Chats for Building Dialog Systems: Learning to GenerateConversations from Instructionsを読んだ際のメモです。以下、画像に関しては特に断りがない場合論文中の図・表を引用しています。

Introduction

対話システムを構築するためには、モデルを学習するための大規模な会話データが必要となるが、データが不足している場合が多い。そこで、以下の役割を持つUser BotとAgent Botを構築した。
User Bot
対話からもとに応答を生成するGeneratorとコンテキストの関係性を考慮し、応答の尤度を返すSelector
Agent Bot
Uset Bot+Knowledgeベースで、User Botからの応答を基に、それに対する応答を返す

それにより少量のデータで訓練しても意味のある対話を返すモデルを訓練できるようになった。原理的にはNoisy Teacher Studentに似ており、汎用性もあることから様々なモデルで応用可能である。

Model

image.png

Overview

  • ユーザとエージェントの発話: $D=(u_1,a_1,...,u_n,a_n)$
  • $m$ターン目の過去の対話シーケンス(対話履歴) : $c_m=(u_1,a_1,...,u_{m-1},a_{m-1})$
  • 指示文セット : $I$ (Fig.2のInstruction)
  • Knowledge base : $KB$

とすると、以下のモデル$p(D|I,KB)$=ユーザシュミレータ*エージェントシュミレーターを作ることを目的とする

p(D|I,KB)=\prod_{i=1}^{n}p(u_i|c_i,I)p(a_i|c_i,u_i,KB)

具体的なインタラクションは以下の図のようになり、このモデルで作成されたデータは元のデータセットに足される形となる。
image.png

各モジュールに関して、説明を行う。

User Bot

ユーザボットは対話履歴と指示を入力として、発話を生成する$p(u_i|c_i,I)$をモデル化する。Fig.2に示されているように

  • 応答候補の生成(Responce Generator)
  • 応答候補のスコア割り振り(Responce Selector)

の2パートで構成されている。

Responce Generator

Fig.3に示すように、指示文$I$と対話履歴が与えられ、対応する発話を返す。GPT-2をfine-tuningするが、学習データが少ないと短い発話を返してしまう傾向があるため、Nucleus Sampling(上位K個を選ぶのではなく、確率の合計がpを超えるような最小の候補を決める方法)により訓練を行う。(Nucleus Samplingの説明はこの記事を参考にさせていただきました:bow:

Responce Selector

コンテキストの関係性を考慮し、スコアを割り当てるために対話履歴と生成された応答を[CAN]トークンでConcatし、Longformerに入力する。これは、GTに近いほど高いスコアを出し、間違ったデータには低いスコアを割り振るように訓練されている。間違ったデータは以下の3つの方法で作成をしている(データ比は5:2:3)。

  • ランダムな応答
  • 履歴の1部(履歴から文章を選択しないようにするため)
  • ランダムな応答をConcatしたもの(モデルが長すぎる文章を生成しないようにするため)

モデルは以下の式で表されるTriplet lossで訓練される。

L(c,u_p,u_n)=max(0,s(c,u_n)-s(c,u_p)+\alpha)

($c$:履歴, $s(○,○)$:score, $u_n$:GT, $u_p$:間違ったデータ, $\alpha$:0.05)

Agent Bot

対話履歴・ユーザの発話・知識を入力とし、応答を行うモデル$p(a|,c,u,KB)$を作ることを目的とする。Fig.2に示されているように

  • 発話履歴と最後のユーザの発話から、それらの発話意図(Belief State)をクエリとして生成する
  • クエリから知識ベースにおいてクエリがマッチしていた数を示すエンティティ$e$を生成
  • 対話履歴・ユーザの発話・エンティティ・クエリを入力として、応答を行う
  • その応答のスコアを計算

の4パートで構成されている。また、このモデルはUser Botとは重みを共有していない。

Belief State(query) Generator

GPT-2を用いて、発話履歴と最後のユーザの発話から現在のドメインとそれに続くキーとvalueのペアとなるものをトークンのシーケンスとして生成する。推論の際は貪欲法でサンプリング。

Response Generator, Response Selector

入力は異なるが、モデル・訓練方法としてはUser Botのと同一。

Experiments

の2つのデータセットに関して検証。
使用モデルは、WOZに関してはSOLOISTと、MinTL-T5DAMDで、PersonaChatに関しては、GPT2-small。
本手法の比較対象として、データを増やす関連手法であるDAMD-MADAPARG-TSCPLost in Conversationを用いて調査。
評価指標はBLEU(B), Inform(I), Sucess(S), Combined(C BLEU+0.5*Inform+Sucess)。それぞれにおいて高精度を達成。
image.png

感想

データセットを増やす手法として、UserとAgentを定義し、擬似的に対話させることでデータを増やせる考えはとてもおもしろかったです。損失関数・モデルの設定など、どうしたらモデル同士の対話ができるかといったところも読めて自然言語だけではなくモデル間でのインタラクションの参考になりそうだと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?