人工知能の技術で有名なニューラルネットワークのフレームワークである...

Preview:

Citation preview

人工知能の技術で有名なニューラルネットワークのフレームワークである 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概念の距離を測れる空間に移す

Facebook

Twitter

近い??

単純な文字列の比較では概念毎の近さは分からない適切な距離を測れる空間に写像する必要がある。

System概念の距離を測れる空間に移す

エンティティリンキングキーワードを比較可能な知識の空間へ移す

Facebook

Twitter

近い??

知識空間へFacebook

Twitter

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このモデルの良いところ表現力連続性フォーカス

Systemお待たせしました。デモです!!

https://youtu.be/2eGs_Qpt_aQ

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

Recommended