22
Copyright © 2016 TIS Inc. All rights reserved. Neural Conversational Modelを用いた 対話と破綻の同時学習 戦略技術センター 久保隆宏

対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

Embed Size (px)

Citation preview

Page 1: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

Copyright © 2016 TIS Inc. All rights reserved.

Neural Conversational Modelを用いた 対話と破綻の同時学習

戦略技術センター 久保隆宏

Page 2: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

2

Agenda

• おさらい・対話破綻検出チャレンジについて • アプローチ方針 • 基本モデル • 提案モデル • 実験設計 • 実験結果 • 考察 • 今後に向けて • Appendix:モデルの墓場

Page 3: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

3

おさらい:対話破綻検出チャレンジについて

ある対話の中で、システム発話が対話の破綻を引き起こすかを検出する。 具体的には、以下2つのタスクを行う。

破綻ラベルの推定

システム発話について、以下のラベルを予測する。 ○:破綻ではない △:破綻とは言い切れないが、違

和感がある ×:明らかにおかしい

破綻ラベルの分布の推定

アノテーターが付けた、○△×の分布を正しく推定で来ているか。

○ △ × ラベルの一致で評価

分布距離で評価

参考:対話破綻検出チャレンジ2 [東中+ 2016]

Page 4: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

4

アプローチ方針

最終的なゴールは、対話システムを作ること。 そのため、発話文の生成とその破綻度合いの推定は、統一的な仕組みの上で考えたい。 ※もちろん、発話候補を複数生成して、様々な判定機でスコアリングするという考え方もある。

発話文生成

対話破綻検知器

発話文生成

対話破綻検知器

発話生成に破綻検知を活かす

シナジーが生まれにくい

Page 5: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

5

基本モデル

背景より、発話生成に向いたNeural Conversational Model(以下、NCM)を基本としたモデルを検討した。前回の対話破綻検出チャレンジ(2015)にて、NCMと同等のSeq2Seqを基にした以下の提案が行われていたため、今回はそのアプローチをベースラインとした。 再帰型ニューラルネットワークを用いた対話破綻検出と言語モデルのマルチタスク学習 [小林+ 2015]

・ユーザー発話後 ・システム発話後 双方の内部状態を基に特徴量を作成し、破綻ラベルを分類する

小林らの提案モデルの概略

Page 6: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

6

提案モデル(1/3)

最終的なモデルは以下のような構成とした。

Page 7: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

7

提案モデル(2/3)

システム発話末尾に破綻ラベルを付与し、「この対話が破綻していたかどうか」まで含めて学習を行う。 これにより、以下のようなメリットが得られる。

破綻した対話データの有効活用 対話破綻検出チャレンジで提供されるデータは破綻した対話を含んでおり、これをNCMの学習に利用するのは好ましくない(そのため、通常は学習のために別途の「正しい対話」データセットが必要)。しかし、「破綻していたかどうか」を付与することで、破綻している対話は破綻の例として、そうでない対話は正例として学習することができる。 学習データの生成 破綻のラベルは、アノテーターの分布に基づき確率的に付与する。これにより、一つの対話データから(分布に基づく)異なるラベルの付いた複数の学習データを生成することができる。

別途の対話データの収集は大変

少ない学習データを最大限活用

Page 8: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

8

提案モデル(3/3)

モデルの実装 実装にはTensorFlowを利用

軽い気持ちで触ると火傷するぜ!

慣れの問題もありますが、命が惜しかったらChainerかKerasを使った方がいいと思います(少なくとも簡潔に書ける類の代物ではない)。 ※TensorFlowも含め、機械学習フレームワークで実装を行うに当たっての注意点についてはこちらにまとめています。

Page 10: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

10

実験設計

検証パターン 以下のパターンを検証 ・特徴量

Encoder/Decoderのstateを利用したもの(run1)、Decoderのstateと出力を用いたもの(run2)を検証

・△を予測する/しない △の存在意義がかなり微妙だったので、○×の二値にして確率が微妙な場合(閾値で設定)△にする

・入力に分散表現を利用する/しない 通常の単語(単語ID)ではなく、分散表現を利用する。これにより、単語表現を事前学習したような効果を狙った。分散表現の作成にはFacebookのfastTextを用い、データとしては日本語Wikipediaのダンプを利用した。

学習が高速で、扱いも簡単なのでお勧め

Page 11: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

11

実験結果(1/3) 特徴量: Encoder/Decoder state

特徴量: Decoder state/output

△予測しない版

Page 12: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

12

実験結果(2/3)

フォーマルランの結果

Page 13: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

13

実験結果(3/3)

・破綻ラベルの推定 基本的に低Precision/高Recallなモデル Precisionについても昨年度平均0.363をクリア ・破綻ラベルの分布の推定 JS divergence (○, △, ×)は0.1近辺とかなり小さい値 Mean Squared Errorも0.06~7とかなり小さい 分布の推定については、かなりうまくできている印象を受ける

ベースラインのモデルでは30万件の対話データを別途用意していたので、それがなくとも学習方法の工夫で同程度のモデルを構築できることを示せた。

ベースラインのモデルとは性質が異なるものの(ベースラインは高Precision、低Recall)、総合指標であるF値で上回る(F(X)で0.14 vs 0.511)

ベースラインのモデルと同程度の性能(JS divergence/MSE)

Page 14: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

14

考察(1/3)

△を予測しない効果について あまり大きな効果は見られなかった。データとして与えられている以上、省略する意味はあまりないのかもしれない。

分散表現の効果について あまり大きな効果はないどころか、若干悪化した。

×を○に勘違いするケースが増えている(Tの勘違いはあり得る話なので除外)

Page 15: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

15

考察(2/3)

分散表現の効果について 分散表現で、似ている表現を検知できることが逆にあだとなったのではないかと、推察している(意味的に適合しているが、文法的・応答文的に破綻しているケースの検知が苦手?)。

検知に失敗した例(×⇒○)。こうした同じ意味の単語の出現は○の会話で多いが、文法的な破綻により×になるケースもある。

Page 16: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

16

考察(3/3)

対話システム間の違いについて 今回はDCM/DIT/IRSという3つの対話システムがあり、そのそれぞれについて評価を行った。ただ、対話システム間で結果に取り立てて大きな差異はなかった。 しいて言えばDITが一番よく、F-measure(X)が0.68、F-measure(T+X)は0.91という高い値。データ的には、DITは時事ニュースも絡めた長めの発言がおおい印象がある。その影響なのか、ラベルの分布によるものなのかは不明。

Page 17: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

17

今後に向けて

モデルの改善の方向性 ベースライン研究、また今回の研究により、RNNのstateが対話コンテキ

ストの判定に有用な性質を持つことは推察できる。分散表現があまり効果がなかった点とその分析を考慮すると、単語よりはより文脈的な特徴量(対話行為タイプ的なものや、発話のモダリティ(肯定・否定)など)が重要なのではないかと考えられる。

対話破綻チャレンジについて 現在の破綻は文法起因なものも多く、破綻の範囲が広すぎる印象を受け

る。最終的な破綻検知の活用を考えると、現状では「×」となってもシステムがどうしたらいいかわからないため、「どういう修復が必要」というのが分かる程度に細かくする必要があると考えている。

⇒雑談対話では破綻の定義が広くまた定義が難しいので、もっと限定された分野(タスク指向対話)にするのもあり?

あと、スケジュールがタイトすぎたと思います(開発データの到着が8月

末、提出は9月上旬)。

Page 18: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

18

Appendix

Page 19: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

19

モデルの墓場(1/3)

通常RNNモデル

単純にユーザー発話とシステム発話を結合したものをRNNで処理するというもの。 精度が出ず、やはりユーザー用とシステム用は分ける必要があるという結論に至る。

Page 20: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

20

モデルの墓場(2/3)

再翻訳モデル

ユーザー発話→システム発話→ユーザー発話というように再翻訳のようなことを行い、その結果と元のユーザー発話を比較するという案(破綻していなければ双方が近しいはずという理屈)。ただ、「近さ」を比較する良い方法がなく断念。

Page 21: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習

21

モデルの墓場(3/3)

Multiresolutionモデル

Multiresolution Recurrent Neural Networks: An Application to Dialogue Response Generationを基にしたモデル。余裕があれば試してみたかったが、余裕は全くなかったため到達できずに見送りとなった。

Page 22: 対話破綻検出チャレンジ2016: NCMを用いた対話と破綻の同時学習