Chainer を用いた対話ボット
の作り方
自己紹介

名前:宮本圭一郎

SIer で ERP 開発( C#,VB )

freelance
深層学習サービスの開発( python )
@miyamotok0105

https://www.facebook.com/keiichirou.miyamoto
実装例紹介
対話で使われているモデル
chainer での実装紹介
データの作り方紹介
実装例紹介
Conchylicultor/DeepQA
https://github.com/Conchylicultor/DeepQA
nicolas-ivanov/tf_seq2seq_chatbot
Sequence-to-sequence model with attention
multiple buckets
multi-layer recurrent neural network as encoder,
and an attention-based decoder
https://github.com/nicolas-ivanov/tf_seq2seq_chatbot
macournoyer/neuralconvo
https://github.com/macournoyer/neuralconvo
データと論文
Corpora
・ AlJohri/OpenSubtitles
  Get a lot of raw movie subtitles (~1.2Gb)
・ Cornell Movie-Dialogs Corpus
  ~ 40Mb after clearing out the technical data.
Papers
[1] Sequence to Sequence Learning with Neural Networks
[2] A Neural Conversational Model
https://github.com/nicolas-ivanov/seq2seq_chatbot_links
対話で使われているモデル
キーワード
word2vec
RNN,LSTM
A simple Seq2Seq
Seq2seq with attention
Encoder-decoder 翻訳
DSSM+RNN GRU
Hierarchical Neural Network
Latent Variable Hierarchical Recurrent Encoder-Decoder
Google Neural Machine Translation(GNMT)
文字をベクトル化する
one-hot ベクトル、 bag of words
... 未知語に対応できない。次元が増えすぎる。
文脈ベクトル、 TF-IDF
... 文章全体に占める割合も重みとして考慮
Distributional 表現、 LSI, LDA
...LSI は特異値分解で次元圧縮。 LSI モデルに確率分布を付与
分散表現 (Word Embeddings) 、 word2vec
... 1層のニューラルネットで通常 200 〜 1000 次元程。
単語の定義によってベクトル化
で
す
ね
、
人
工
知
能
で
す
ですね =0
、
=1
人工知能 =2
です =3
one-hot
word2vec でベクトル化
king – man + woman = queen
Continuous Bag-of-Words ( CBoW …) 前後の単語から対象単語を予測
Skip-gram... 単語からその周辺単語を予測
で
す
ね
、
人
工
知
能
で
す
0
1
2
3
ですね =0.1
、 =0.2
人工知能 =10
です =0.5
単語の定義によってベクトル化
word2vec
king – man + woman = queen
EmbedID 、、、
one-hot ベクトル入力に効率のよい層。 embed_id 関数のラッパー。
one-hot ベクトルは文字に対しベクトル化すること。
RNN
問題:次に来る文字の予想
https://github.com/takaaki5564/demo_RNN?files=1
LSTM
rnn のブロックを lstm に変更する
rnn の多層にしたときの勾配消失爆発の問題を解決
LSTM の機能
メモリセル、、、過去の状態を記憶( ct )
入力判断ゲート (input modulation gate) 、、、メモリセルに加算
される値を調整する。直近のあまり関係ない情報が影響してメ
モリセルが持つ重要な情報が消失してしまうのを防ぐ。
忘却判断ゲート (forget gate) 、、、メモリセルの値が次の時刻で
どれくらい保持されるかを調整
出力判断ゲート (output gate) 、、、メモリセルの値が次の層にど
れだけ影響するかを調整
A simple Seq2Seq
各セルが RNN のセル、一般的には GRU セルや
LSTM セル
Attention Seq2Seq
長い文字列に対応。
学習回数も減るらしい。
入力文字に h を保持。
入力と出力の内積をとる。
https://arxiv.org/abs/1409.0473
Hierarchical Neural Network Generative
Models
映画対話の為のモデル
Latent Variable Hierarchical Recurrent Encoder-
Decoder
さらに長い文章に対応
Google Neural Machine
Translation(GNMT)
ゼロショット学習 ... ポルトガル語→英語、英語→
スペイン語を学習してポルトガル語→スペイン
語の翻訳が可能
Google’s Neural Machine Translation System
chainer での実装紹介
Chainer の主なクラス
・ Variable... 変数の値の変化を記録する。
・ Function... ネットワークの管理を行う。
・ Link... ネットワークのパラメータを持つ。
・ Chain...Link をまとめたもの。
・ Optimizer... ネットワークを操作する。
・ Dataset.Iterator... 学習対象を辞書型で指定。 (<1.11.0)
・ Training.Trainer... エポック数などを指定 (<1.11.0)
・ Updater... 最適化手法の指定など。 (<1.11.0)
・ Extension... 途中経過の保存など。 (<1.11.0)
モデル定義
変数の変化を記録
AdaGrad 等
単純な順伝搬での実装の流れ
データの事前処理
モデル定義
値予想
学習
モデル保存
データの用意
     画像の場合
文字列の場合
010100001...001011.1
モデルの定義
インプットセル
アウトプットセル
隠れ層のセル
値の予想
wx+b=u
z=f(u)
y= 正解
インプットセル
アウトプットセル
隠れ層のセル
x=
入
力
z=
出
力
w=
重
み
f=
活
性
化
関
数
順伝搬
学習
偏微分で勾配を求め
て重み更新
インプットセル
アウトプットセル
隠れ層のセル
x=
入
力
z=
出
力
w=
重
み
f=
活
性
化
関
数
誤差逆伝搬
重みの保存
w を保
存
インプットセル
アウトプットセル
隠れ層のセル
x=
入
力
z=
出
力
w=
重
み
f=
活
性
化
関
数
seq2seq の実装について
Word2vec 層
LSTM 層
出力層
モデルを定義
embedID
... 分散表現の層
LSTM
... 次の文章予想
LSTM 層
EmbedID
層
EmbedID 層
出力層
値の予想
原文と目的文を格納
値の予想
EmbedID 層でベクトル化
値の予想
LSTM で伝搬させて
次の値を予想
誤差の計算
誤差関数を使う
学習
入力値を逆方向に変換して精度をあげている。
データの作り方紹介
データの集め方
git clone https://github.com/miyamotok0105/ai_chatbot.git
cd chat_data
twiiter developer に登録してアクセスキーを取得
python get_repray.py
temp.csv に貼り付け
python save_conversation_data.py
対話文が conversation.db に保存される

More Related Content

PPT
青本勉強会2章
PDF
捗るリコメンドシステムの裏事情(ハッカドール)
PPTX
Python による 「スクレイピング & 自然言語処理」入門
PDF
Rubyと機械学習の現状
PDF
PythonによるWebスクレイピング入門
PDF
scikit-learnを用いた機械学習チュートリアル
PDF
10分でわかるPythonの開発環境
PDF
なぜ科学計算にはPythonか?
青本勉強会2章
捗るリコメンドシステムの裏事情(ハッカドール)
Python による 「スクレイピング & 自然言語処理」入門
Rubyと機械学習の現状
PythonによるWebスクレイピング入門
scikit-learnを用いた機械学習チュートリアル
10分でわかるPythonの開発環境
なぜ科学計算にはPythonか?

What's hot (20)

PDF
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
PDF
Python 2/3コード共存戦略 #osakapy
PDF
Rubyの会社でPythonistaが3ヶ月生き延びた話
PDF
メモリアロケーションからみた拡張ライブラリに大切なこと
PDF
本気でPythonで宛名書きした話
PPTX
第3回メドレー読書会後半
PDF
DBエンジニアに必要だったPythonのスキル
PPTX
数理最適化とPython
PDF
Pythonはどうやってlen関数で長さを手にいれているの?
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PDF
pythonでemlファイルを扱う話
PDF
bottleで始めるWEBアプリの最初の一歩
PDF
Rubyとプログラミング言語の潮流
PDF
S18 t0 introduction
PDF
bottle.pyをつかったチャットアプリ作成チュートリアル
PDF
Scikit learnで学ぶ機械学習入門
PPTX
Pythonスタートアップ勉強会201109 python入門
PDF
IntelliJ IDEAで快適なPython生活
PDF
Python3 プログラミング勉強会
PDF
Requestsで始める5分前帰社
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
Python 2/3コード共存戦略 #osakapy
Rubyの会社でPythonistaが3ヶ月生き延びた話
メモリアロケーションからみた拡張ライブラリに大切なこと
本気でPythonで宛名書きした話
第3回メドレー読書会後半
DBエンジニアに必要だったPythonのスキル
数理最適化とPython
Pythonはどうやってlen関数で長さを手にいれているの?
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
pythonでemlファイルを扱う話
bottleで始めるWEBアプリの最初の一歩
Rubyとプログラミング言語の潮流
S18 t0 introduction
bottle.pyをつかったチャットアプリ作成チュートリアル
Scikit learnで学ぶ機械学習入門
Pythonスタートアップ勉強会201109 python入門
IntelliJ IDEAで快適なPython生活
Python3 プログラミング勉強会
Requestsで始める5分前帰社
Ad

Viewers also liked (20)

PPT
15 ai農業ハッカソン
PPT
18 minitus発表資料
PPT
17ゼロから作るディープラーニング2章パーセプトロン
PDF
Pythonを使った機械学習の学習
PDF
画像認識モデルを作るための鉄板レシピ
PDF
GPU上でのNLP向け深層学習の実装について
PDF
「深層学習」第6章 畳込みニューラルネット
PDF
ディープラーニングハンズオンを準備して学んだこと
PPTX
Chainerを使って細胞を数えてみた
DOCX
PDF
Google SpreadSheetでtwitter bot作ったよ
PDF
ネトゲで人生を変えたい
PDF
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
PDF
Effective Numerical Computation in NumPy and SciPy
PDF
MacroPyがすごい
PDF
やさしい日本語言い換えシステムを支える技術
PPTX
Chainerで学ぶdeep learning
PPTX
Python勉強会in 長野 オープニング
PDF
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
PDF
文書をコードとして扱う
15 ai農業ハッカソン
18 minitus発表資料
17ゼロから作るディープラーニング2章パーセプトロン
Pythonを使った機械学習の学習
画像認識モデルを作るための鉄板レシピ
GPU上でのNLP向け深層学習の実装について
「深層学習」第6章 畳込みニューラルネット
ディープラーニングハンズオンを準備して学んだこと
Chainerを使って細胞を数えてみた
Google SpreadSheetでtwitter bot作ったよ
ネトゲで人生を変えたい
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Effective Numerical Computation in NumPy and SciPy
MacroPyがすごい
やさしい日本語言い換えシステムを支える技術
Chainerで学ぶdeep learning
Python勉強会in 長野 オープニング
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
文書をコードとして扱う
Ad

Similar to 14対話bot発表資料 (20)

PPTX
DockerでJupyter使おうぜ
PPTX
レゴブロックとC#を使ったIoT体験
PDF
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
PDF
関数型言語ElixirのIoTシステム開発への展開
PPTX
Getting Started with Graph Database with Python
PDF
2018 07-23
PPTX
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
PDF
2014 0228 OSC-Spring Tokyo NETMF
PDF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ODP
Sourcecode Reading Workshop2010
PDF
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
PDF
Goodby Hatena, hello Sphinx
PDF
2014年を振り返る 今年の技術トレンドとDockerについて
PDF
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
PDF
WebRTC Rockstars Asian Tour 2017 (JP)
PPTX
2015 0227 OSC-Spring Tokyo NETMF
PDF
Python × Herokuで作る 雑談slack bot
PDF
13-E-7 クラウドサービスとゲーミフィケーション: 「TwilioQuest 3」を用いた開発者オンボーディング
PDF
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
PPTX
Docker meetup tokyo_public_r001
DockerでJupyter使おうぜ
レゴブロックとC#を使ったIoT体験
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
関数型言語ElixirのIoTシステム開発への展開
Getting Started with Graph Database with Python
2018 07-23
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
2014 0228 OSC-Spring Tokyo NETMF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Sourcecode Reading Workshop2010
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
Goodby Hatena, hello Sphinx
2014年を振り返る 今年の技術トレンドとDockerについて
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
WebRTC Rockstars Asian Tour 2017 (JP)
2015 0227 OSC-Spring Tokyo NETMF
Python × Herokuで作る 雑談slack bot
13-E-7 クラウドサービスとゲーミフィケーション: 「TwilioQuest 3」を用いた開発者オンボーディング
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Docker meetup tokyo_public_r001

Recently uploaded (11)

PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
Working as an OSS Developer at Ruby Association Activity Report 2025
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由

14対話bot発表資料