論文読み：A Survey of Statistical User Simulation Techniques for Reinforcement-Learning of Dialogue Management Strategies

中身を正確に理解したい方は原文を読むことを強くおススメします。
筆者が必要な部分しか抜粋していません。また間違いを含む可能性があります。

http://mi.eng.cam.ac.uk/~sjy/papers/swsy06.pdf

#どんなもの（概要）
対話におけるシミュレーションベースの強化学習の概要とまとめた論文

![dialogue1.png](https://qiita-image-store.s3.amazonaws.com/0/10496/0a716781-aece-1177-e5d7-8e864954f3f6.png)

対話における強化学習は下記のステップで行われる

１：教師あり学習でユーザーのモデルを学習
２：ユーザーのモデルから得られる反応をもとにシステムの戦略を強化学習

ユーザーモデルを作成するのが難しい
（人間の特徴や過去の対話などを表すのには十分なデータが必要になってくる。）

![dialogue2.png](https://qiita-image-store.s3.amazonaws.com/0/10496/0f3e6453-5cb2-dd7a-ffbc-ef3cac5637a7.png)

対話の戦略は単純な対応(yes/no)で終わるものと情報量を多く返す必要があるものに分かれる。
後者の方が難しく、前者は音声のロバストネスな反応も含めて対応できるようになってきている。

対話のスタイルはシステム主導と混合型がある。
システム主導はスロット埋めと呼ばれ、システムは必要な情報を質問していき、穴埋めを行う。
混合主導はシステムとユーザーの両者が主体になるスタイル

対話には確認処理を含むスタイルとスロットの情報を埋めるスタイルがある。
確認処理は対話時間が伸びる傾向にあるため、音声認識精度が悪い場合に使用すると有用。

統計的アプローチは複雑でデータが十分な品質でないと厳しく、今の所、ルールベースに勝つのは難しい。

###強化学習
対話において、強化学習が有効な点は対話全体の目的を考慮できる点である。
個々のデータはアノテーションされているが、対話全体の目的はアノテーションされていないが対話全体の目的を達成したい場合に有効である。

例：
対話の発話例：今日は寒い（アノテーション：冬）

対話の目的：行きたい場所を聞く

この場合は用意されているデータが対話文とアノテーションだけなので対話全体の目的を達成するような情報は含まれていない。
このように対話の場合はここのデータの状態を予測するのではなく、対話全体を通して、達成したいことが何か分かっている場合に有用である。

####MDPについて

![MDP.png](https://qiita-image-store.s3.amazonaws.com/0/10496/bb38fd04-6a66-36cd-bd7a-5155aca9a683.png)

MDPは状態遷移をアクションごとに行い、アクションの度に報酬を与え、報酬が最大になるように選ぶ手法

####状態空間とアクションセット

![MDP_action_state.png](https://qiita-image-store.s3.amazonaws.com/0/10496/ad4e3261-ee8b-3b96-39ea-3284a3f126ef.png)


状態空間とアクションセットを定義しないとMDPは使用できない。
状態数とアクション数が多い方が理想だが現実的には難しいのでスロットフィリングの考えに基づいて作成される。
スロットフィリングとは本の予約を例に挙げれば、本の名前、期間、などの埋めるべき項目が決まっているため、それを状態と紐づけて、アクションはその状態を次の状態に遷移させるために定義する。

例：

タスク：本を借りる
必要なパラメーター：本の名前、期間、借りる人の名前

１：借りたい本を教えて下さい。（初期状態）
２：本を借りる期間を教えて下さい。（名前は取得、期間を取得したい状態）
３：お名前を教えて下さい。（名前は取得、期間も取得、借りる人の名前を取得したい状態）

![Q_learning.png](https://qiita-image-store.s3.amazonaws.com/0/10496/85aed3c0-199a-439a-0af6-8214b1075701.png)

報酬関数を定義してQ関数で学習していく。その際に報酬の重みは学習によって更新されていく。図は状態とアクションによって得られる報酬を表している。

モデル作成の方法
１：集めたデータを用いて作成
２：シミュレーションにより作成

データを集める手法のアプローチにはいくつか問題
１：データを集めるのが大変。データはスパースのため適切に学習が進むか分からない。
２：新しい戦略に対応できない。データだけだと新しい戦略に対応できない。
３：データセットに固定された反応しかできない。

シミュレーションベースの利点
１：何度でも学習可能
２：学習データ不要（事前学習はした方が良いと思う）
３：学習データに依存しないので状態空間とアクションセットは固定にしなくて良い。

####統計的ユーザーモデルのテクニックをシミュレーション学習に応用

NLG：データからテキストを個人に適した生成
NLU：データからユーザーの状態を理解

統計的ユーザーモデルのメリット
１：ユーザーの行動が予測できる
２：人手で決めないので、自由度が高く、ユーザーごとに変更できる
３：ロバスト（データの揺れ）に強い
４：スケール性が高い

####モデルの例

N-gram

Graph Base Model(各ノードにYesNoアクションと状態がある)
＊ドメイン依存性が高い

Bayesian Networks
条件付き確率を用いたネットワークのため、通常のネットワーク構成より条件を考慮している分、遷移をコントロールできる。

![BaysianNetwork.png](https://qiita-image-store.s3.amazonaws.com/0/10496/e98f99dd-ade4-5f04-efc5-9a75c58c741d.png)

###機械学習

nグラム特徴量

特徴量の組み合わせ

####隠れマルコフモデル

![HMM.PNG](https://qiita-image-store.s3.amazonaws.com/0/10496/c5efd1ac-7623-09ef-ad7a-e5450eab7e14.png)

HMMは前回の対話を考慮しつつ、各状態の長さの決定の自由度が高いので対話モデルによく用いられる。

###コンテント　コラボレーションモデル

対話の内容　+　他のユーザーの対話内容

###コンセプト　ドリフト

シミュレーションの内容を利用して学習
問題はシミュレーション結果のみなので答えが固定される可能性がある。



###評価

対話の対応内容の評価

precision
Recall
F measure

統計的指標におけるコーパス比較

![evaluate.PNG](https://qiita-image-store.s3.amazonaws.com/0/10496/b89fd47a-a796-3b3e-1cc7-74b009f3dd89.png)

１：対話の特徴
　対話の平均長、対話とアクションのペア、ユーザーとシステムの会話比率
２：スピーチアクションの違い、ゴールアクション、対話、、間違い、ユーザー協調性の比率など
３：対話の成功率、目的達成率、目的にかかる時間

パープレキシティ

KL距離(HMMモデル限定)

クロスモデル比較

コーパスから特徴量を抽出し、対話マネジメントシステムを学習し評価


![eval.PNG](https://qiita-image-store.s3.amazonaws.com/0/10496/bc2e7b04-110e-19ee-b526-7dda8d0cfa5c.png)

評価結果

モデルのパフォーマンスと有意差を見ている（モデルのパフォーマンスは不明）



![eval2.PNG](https://qiita-image-store.s3.amazonaws.com/0/10496/cc02ef08-3ef3-1527-0187-59295e765792.png)



##課題
対話戦略が対話の質を決めるのだが難しい
対話は早く、正確に行う必要があり、ノイズも考慮する必要がある。