人工知能の技術で有名なニューラルネットワークのフレームワークである...
TRANSCRIPT
人工知能の技術で有名なニューラルネットワークのフレームワークである Chainerを用いた対話 Bot を使った俺の屍を越えてゆけJuly Tech Festa 2016 「 IoTxAIx インフラ時代の最新技術、やってみた SP — 俺の屍を越えて行け —」
注意
数式は一切出てきません。厳密に理解したい方は論文を参照することをお勧めいたします。
Agenda
:
Self Introduction
Dialogue Value
Character of the Bot
System
Feature Plan
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
Self Introduction
Self Introduction
名前:大串 正矢@SnowGushiGit
ポート株式会社Web 開発事業部 研究開発チーム
Tech-Circle 運営スタッフ機械学習、自然言語処理、クロラー開発、インフラ自動構築、並列分散処理、検索機能構築
Dialogue Value
Agenda
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
Self Introduction
Dialogue Value
How to Dialogue to the Bot
System
Feature Plan
Dialogue Value
対話の価値連続性インタラクティブな提案新たなユーザー体験の提供
Dialogue Value
連続性会話の事前情報が利用できる
最近テニスにはまってて
対話Bot
テニスですか面白そう
ちょうど知り合いのスポーツ店の店長がバイト探してたよ
そうそうそういえばバイト探してるんだけど良いのない?
Dialogue Value
インタラクティブな提案相手のニーズをヒアリ ングして提案が可能
対話Bot
最近、美味しいお菓子見つけた
夏に向けてダイエット中!
ダイエット中なのにそんなこと言わないで
ダイエットにも良いらしいよ本当に??
Dialogue Value
新たなユーザー体験の提供キャラクター性
実装したものの動作例
Dialogue Value
対話の価値連続性インタラクティブな提案新たなユーザー体験の提供
対話のデータが必要な領域
データがなくてもある程度カバー可能最初はこっち
Character of the Bot
Agenda
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
Self Introduction
Dialogue Value
Character of the Bot
System
Feature Plan
突然ですがどちらが高度な回答をしそうですか?Character of the Bot
どちらと話してみたいですか?Character of the Bot
どちらにギャップを感じますか?Character of the Bot
最近、読んだ本は“Statistical Machine Translation”ですね
最近、読んだ本は“Statistical Machine Translation”ですね
Character of the Bot
対話Bot
松屋が個人的にオススメ
良いバイト先ない?
かなり違うかなもっと女性向けのお願い
スィーツ店とか?そんな感じ
キャラクター性が重要 ( フィクションです )
とりあえず飯屋
スィーツが良さげ
面白そう
太ってるから仕方ないか
意外に分かってるじゃん
学習
許容
驚き
Character of the Bot
新たなユーザー体験をもっと高度にするには回答に対する期待値を下げつつ話しかけやすさを上げる
アイコン画像の工夫
Bot の発話内容の工夫
認知科学の効果
回答に対する期待値:高い話しかけやすさ:低い
回答に対する期待値:低い話しかけやすさ:高い
気軽に話しかけて
気軽に話しかけて
こっちについて話します。
Character of the Bot
キャラクターごとに文章を用意するのは高コスト同じ文章でも微妙に変える必要がある。
お前は食ったパンの数を覚えているか?
あなたは食べたパンの数を把握されていますか?
あなたは食べたパンの数を覚えているの?
Character of the Bot多数のシナリオライターが必要
Character of the Bot
内容を変えたくないがキャラクター性だけ付与したい!!お前は食ったパンの数を覚えているか?
あなたは食べたパンの数を把握されていますか?
あなたは食べたパンの数を覚えているの?
Character of the Bot
女性っぽい文章
太い人特有の文章
丁寧な執事っぽい文章
あなたは食べたパンの数を覚えていますか?
キャラクター性を付与
Character of the BotNeuralStoryTeller
通常の文章に特徴をつける。下記はロマンチック要素を付与
「彼は心の奥で裸の男であった。彼が私にキスしようと肩に寄りかかってきた時、私は悪態をついた。私が彼のボクサーを履いたら美しいため、彼は私を締め付けようとしたのだ」
Character of the Bot微妙な表現の変更をニューラルネットに任せる。キャラクターの文さえあれば色々な文章に適用可能
Character of the Bot今回は残念ながらここまで実装できませんでした(汗途中までの実装になります
Agenda
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
Self Introduction
Dialogue Value
Character of the Bot
System
Feature Plan
System
System
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
システム全体像対話インターフェースは Slack
データは Twitter から取得 ( 事前学習に Wikipedia のデータと対話破綻コーパス使用)話題の選定は WordNet と WikiPedia Entity Vector を使用対話モデルの作成は Chainer を使用
WordNetWikiPediaVector
System
話題の選定
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
WordNetWikiPediaVector
System話題の選定
相手によって話す内容が異なる私 と仕事のどっちが 大事 ?
その 服 可愛いどこ で買ったの?
パパ 小遣い 頂戴
彼氏
妹
パパ
System話題の選定
Word Net について単語に概念を付与してグループ化してくれているデータセット
スコティッシュホールド クロネコ オレンジのネコ
ネコ
System概念数が多い。 57238概念データの用意が難しい
System概念をまとめたい
Systemまとめ方概念を距離を測れるような空間に移す
距離が近いものをまとめるネコ
ネコ
ネコ トラ
System概念の距離を測れる空間に移す
近い??
単純な文字列の比較では概念毎の近さは分からない適切な距離を測れる空間に写像する必要がある。
System概念の距離を測れる空間に移す
エンティティリンキングキーワードを比較可能な知識の空間へ移す
近い??
知識空間へFacebook
SNS
System話題の選定概念を適切な知識空間に移すには日本語 WikiPedia エンティティベクトルの使用!!!単語及びWikiPedia(知識)で記事となっているエンティティの分散表現ベクトル(Wikipedia などのナレッジベースをエンティティと呼ぶ)
System話題の選定
Wiki Pedia Entity Vector を使用して概念クラスにベクトルを付与
ネコ :[0.2, 0.3, 0.4…] 犬 :[0.3, 0.4, 0.5…]
System距離を測りたい
System概念の距離を測る写像した空間に適した距離のはかり方を選択間違うと図のように近さを間違う
黄色が近そう
水色の方が近かった
Systemベクトル間の近さを測るため、コサイン類似度を使用(注意:もっと適切な距離の測り方があるかもしれません)
System話題の選定
概念クラス同士のコサイン類似度を計算してサマライズ
ネコ :[0.2, 0.3, 0.4…] 犬 :[0.3, 0.4, 0.5…]
コサイン類似度計算
Systemこれでもまだ概念数が多い
System話題の選定
概念が持っている単語が少ないので WordNet の未知語を WikiPedia Entity Vector から追加
クロネコ白猫:三毛猫:
ネコWikipedia Entity Vector
コサイン類似度近い
未知語なら追加
Word Net
System話題の選定
WikiPedia Vector でベクトルが付与できた単語のベクトルを用いて各概念の平均ベクトルを算出
クロネコ :[0.2, 0.3, 0.4…]白猫 :[0.1, 0.3, 0.…]:
ネコ
柴犬 :[0.1, 0.3, 0.4…]土佐犬 :[0.1, 0.2, 0.…]:
犬
平均ベクトル
平均ベクトル
System話題の選定
各概念の平均ベクトルを用いてコサイン類似度を計算し、各概念をサマライズ
コサイン類似度計算し基準以上ならまとめる
クロネコ :[0.2, 0.3, 0.4…]白猫 :[0.1, 0.3, 0.…]:
ネコ
柴犬 :[0.1, 0.3, 0.4…]土佐犬 :[0.1, 0.2, 0.…]:
犬
平均ベクトル
平均ベクトル
Systemこれでもまだ概念数が多い( 20000概念)
System話題の選定
各概念が持つ単語の総数が 1000以上の概念のみ選択(発話と一致しやすいクラスのみ残すため)
クロネコ白猫:
ネコ
柴犬土佐犬:
犬
白鳥アヒル:
トリ
コアラコアラ
選択された概念
System76概念まで減らせている。(注意: WikiPedia Entity Vector を全て使用していない。計算量を減らす実装に変えれば全て使用できる。)
System話題の選定
対話の振り分け方法
各概念との一致率を計算して振り分ける
その 服 可愛いどこ で買ったの?
彼氏イケメンかっこいい:妹
可愛い服:パパお金小遣い:
単語の平均一致率計算
System
内容理解・対話制御・応答文生成
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
:
WordNetWikiPediaVector
Systemニューラルネットワークで全て対応
( 注意:この対応が必ずしも良いとは思っていません。)
Systemなぜニューラルネットか自然言語処理における深層学習の位置づけが関連します。
Dialogue Value
ニューラルネットの価値表現力連続性フォーカス
Dialogue Value
ニューラルネットの価値表現力連続性フォーカス
System自然言語をベクトル空間へ移すとき
Bag of Words を使用(辞書を用意して単語が観測された回数カウント)低次 高次
単語 フレーズ 文表現
I show am me your you … when are1, 0, 0, 0, 0, 0, … 0, 0I
am
Shota
I show am me your you … when are0, 0, 1, 0, 0, 0, … 0, 0
I show am me your you … when are0, 0, 0, 0, 0, 0, … 0, 0
数万語以上あるがほとんどが使用されないデータ
System
単純に単語のみしか考慮していない。
Systemニューラルネットを使用すると単語のみでなく周囲の単語も考慮した空間に Word2vec により移せる
低次 高次
単語 フレーズ 文表現
0.5, 0.0, 1.0, 1.0, 0.3, 0.0I
am
Shota
深層学習により単語の空間を圧縮
深層学習
0.5, 0.0, 1.0, 1.0, 0.0, 0.0
0.5, 0.0, 1.0, 0.5, 0.3, 0.0
データ
Dialogue Value
ニューラルネットの価値表現力連続性フォーカス
System
太郎 さん こんにちは
発話は文章の連続性が重要ニューラルネットは Recurrent Neural Network により、その考慮も可能
Dialogue Value
ニューラルネットの価値表現力連続性フォーカス
System
+
太郎 さん こんにちは
発話中の重要な単語へのフォーカスが重要ニューラルネットは Attention Model により、その考慮も可能
System発話内容の生成表現力連続性フォーカス
私 と仕事のどっちが 大事 ?
その 服 可愛いどこ で買ったの?
パパ 小遣い 頂戴
彼氏
妹
パパ
Systemニューラルネットワークでどのように実現するか
System今回、使ったモデルです。次ページから細かく解説していきます。
太郎 さん こんにちは
こんにちは<EOS>
+Encoder
Decoder
System発話内容をニューラルネットの空間に移します。中間層がニューラルネットの空間を表します。
太郎 さん こんにちは
太郎 :1さん :0こんにちは :0 :
太郎 :1さん :0こんにちは :0 :
System発話の連続性を学習します。
00001:0
出力層
さんこんにちは隠れ層
太郎の時の隠れ層
変換行列
過去の値をコピー
太郎 さん こんにちは
System逆方向も学習します。重要な単語が最初に出ても対応するため
太郎 さん こんにちは
System順方向と逆方向の情報を集約します。発話部分の情報を集約します。
+Encoder
太郎 さん こんにちは
System集約された情報を元に対応する発話を作成
太郎 さん こんにちは
+Encoder
こんにちはDecoder
System発話文の作成部分で連続性を考慮
太郎 さん こんにちは
こんにちは<EOS>
+Encoder
Decoder
Systemこのモデルの良いところ表現力連続性フォーカス
AgendaSelf Introduction
Dialogue Value
Character of the Bot
System
Feature Plan
:
対話Bot
話題の選定内容理解
対話制御応答文生成
応答文候補
ニューラルネットワーク1
内容理解対話制御
応答文生成
ニューラルネットワーク2
Feature Plan
Feature Planテスト環境の充実
テストコードが揃っていない評価
F measure などで定量評価できていないChainer の最新バージョン (v11.0)への対応
Trainer が良いらしい概念クラスの距離の選定(コサイン類似度以外に KL距離など)ニューラルネットで処理するか決めうちの文章で処理するか分類する前処理の実装NeuralStoryTeller の実装
キャラクター性の付与検索機能の付与( Q & A 対応)
ConclusionWord Net は概念を表したデータセット
上位概念を表せるデータがあればそれで代替可能Wikipedia Entity Vector はベクトル付与に使用ベクトルの付与に使用。独自のデータセットを使用して Word2Vec を作成してベクトル付与しても良い
ニューラルネットで全て対話を対応する必要はないルールとのハイブリッド
github で探して“ Chainer Slack Twitter” で検索Star をくれるとやる気が増します!!
Conclusion
エンジニア募集中https://www.theport.jp/recruit/information/
Reference• Chainer で学習した対話用のボットを Slack で使用 +Twitter から学習データを取得してファインチューニン
• http://qiita.com/GushiSnow/items/79ca7deeb976f50126d7• WordNet
• http://nlpwww.nict.go.jp/wn-ja/• 日本語 Wikipedia エンティティベクトル
• http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/• PAKUTASO
• https://www.pakutaso.com/• Luong, Minh-Thang, Hieu Pham, and Christopher D. Manning. "Effective approaches to attention-
based neural machine translation." arXiv preprint arXiv:1508.04025 (2015).• Rush, Alexander M., Sumit Chopra, and Jason Weston. "A neural attention model for abstractive
sentence summarization." arXiv preprint arXiv:1509.00685 (2015).• Tech Circle #15 Possibility Of BOT
• http://www.slideshare.net/takahirokubo7792/tech-circle-15-possibility-of-bot• Generating Stories about Images
• https://medium.com/@samim/generating-stories-about-images-d163ba41e4ed#.h80qhbd54• 二つの文字列の類似度
• http://d.hatena.ne.jp/ktr_skmt/20111214/1323835913• 構文解析
• http://qiita.com/laco0416/items/b75dc8689cf4f08b21f6