SlideShare a Scribd company logo
1 of 31
Download to read offline
自然言語処理に適した
ニューラルネットのフレームワーク
- - - DyNet - - -
2.24,2017
Masaya Ogushi
1
注意
• このスライドはニューラルネットについて知って
いる人向けです。
• 説明のために簡単なC++のコードを使っていま
す。
• もしニューラルネットについて知らない場合は下
記を見てください。
• http://www.slideshare.net/unnonouno/ss-4
3844132
2
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for Natural language
processing ?
3
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
processing ?
4
Self Introduction
5
Self Introduction
• 名前:大串 正矢
• @SnowGushiGit
• Kabuku Inc.
• 3次元の画像処理をCNNでやっていま
す。
• 興味:健康関連
6
Self Introduction
Kabuku Inc. Hiring Engineer
• サーバーサイド
• Python
• フロント
• Type Script, Angular
7
Why do you use the
DyNet ?
8
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
processing ?
9
Why do you use the DyNet?
• 深層学習に使えるフレームワークは多い・・・
1
0
Why do you use the DyNet?
• DyNet が他のフレームワークよりも優れている
点
• Python と C++(高速化)
• 動的なネットワークの操作(NLPにおいて重
要)
• 自然言語処理のための使いやすいインター
フェース
11
Why do you use the DyNet?
• CPUでのパフォーマンス
12
Why do you use the DyNet?
• GPUでのパフォーマンス
もし他のパフォーマンスにも気になる人は論文を参
照ください。
https://arxiv.org/pdf/1701.03980v1.pdf
13
Why do you use the DyNet?
• 動的な操作は自然言語処理において重要
• 言語の特徴
• 連続的、ツリー、グラフ
14
Why do you use the DyNet?
• 下記のような状況の場合はDyNetがオススメで
す。
• 自然言語処理
• 性能向上が必要
15
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
processing ?
1
6
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
• Trainer
17
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
• Trainer
18
What is DyNet ?
• Case1 掛け算
1
9
What is DyNet ?
20
• Computation Graph and Expression
• Graphを作成
• 下記のコードで下記のグラフを実現していま
す。
ComputationGraph cg;
float ia, ib;
Expression a = input(cg, &ia);
Expression b = input(cg, &ib);
Expression y = a * b;
Code Cpp
What is DyNet ?
21
• Computation Graph and Expression
• 値を設定します。
• 値を計算します。
1 2
2 ia = 1;
ib = 2;
cout << as_scalar(cg.forward(y))
<< endl; // 2
Code Cpp
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
• Trainer
22
What is DyNet ?
• Case2 xor計算
23
What is DyNet ?
24
• Model and Parameters
• Parameters は最適化するもの(重み, 正則化
項)
• 下記は出力層と1層目(xorの入力とユニット数)
だけ定義 Model m;
Parameter p_W, p_b, p_V, p_a;
const unsigned HIDDEN_SIZE = 8;
p_W = m.add_parameters({HIDDEN_SIZE, 2});
p_b = m.add_parameters({HIDDEN_SIZE});
p_V = m.add_parameters({1, HIDDEN_SIZE});
p_a = m.add_parameters({1});
Code Cpp
What is DyNet ?
25
• グラフの構成
Expression W = parameter(cg, p_W);
Expression b = parameter(cg, p_b);
Expression V = parameter(cg, p_V);
Expression a = parameter(cg, p_a);
vector<dynet::real> x_values(2);
Expression x = input(cg, {2}, &x_values);
Expression h = tanh(W*x + b);
Expression y_pred = V*h + a;
dynet::real y_value;
Expression y = input(cg, &y_value);
Expression loss_expr =
squared_distance(y_pred, y);
Code Cpp
x_values
y_values
W
b
a
tanh
+
V
+
x
y
squared_
distance
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
• Trainer
26
What is DyNet ?
27
• Trainer
• Trainer に先ほどのモデルを与えて初期化します。
SimpleSGDTrainer sgd(m);
Code Cpp
What is DyNet ?
28
• Trainer Forward
Backprop
• XORの入力値を設定し
ます。(アドレス注意)
• XORの出力値を設定し
ます。(アドレス注意)
• forward処理でlossを
計算します。
• backward処理で勾配
を計算します。
• parametersを更新しま
す。
for (unsigned iter = 0; iter < ITERATIONS; ++iter)
{
double loss = 0;
for (unsigned mi = 0; mi < 4; ++mi) {
bool x1 = mi % 2;
bool x2 = (mi / 2) % 2;
x_values[0] = x1 ? 1 : -1;
x_values[1] = x2 ? 1 : -1;
y_value = (x1 != x2) ? 1 : -1;
loss += as_scalar(cg.forward(loss_expr));
cg.backward(loss_expr);
sgd.update(1.0);
}
sgd.update_epoch();
loss /= 4;
cerr << "E = " << loss << endl;
}
Code Cpp
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
processing ?
29
How to apply the DyNet for natural
language processing ?
30
ipython notebook
を用いて説明します。
https://github.com/SnowMasaya/DyNe
t_Study_Docker/blob/master/dynet-py
thon/RNNS%20DyNet.ipynb
• Reference
• DyNet
• https://github.com/clab/dynet
• Practical Neural Networks for NLP
• http://demo.clab.cs.cmu.edu/cdyer/emnlp2016-dynet-tutorial-part1.pdf
• Practical Neural Networks for NLP
• http://demo.clab.cs.cmu.edu/cdyer/emnlp2016-dynet-tutorial-part2.pdf
• ニューラルネットのフレームワークDyNetの紹介
• http://qiita.com/odashi_t/items/237a34d56e5d2a1df7ae
• TensorFlow
• https://www.tensorflow.org/
• A Powerful, Flexible, and Intuitive Framework for Neural Networks
• http://chainer.org/
• Caffe
• http://caffe.berkeleyvision.org/
• theano
• http://www.deeplearning.net/software/theano/
• RNNS tutorial
• https://github.com/clab/dynet/blob/master/examples/python/tutorials/RNNs.ipynb
• 深層学習時代の自然言語処理
• http://www.slideshare.net/unnonouno/ss-43844132
31

More Related Content

What's hot

2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介Hiroki Nakahara
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化marsee101
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAHiroki Nakahara
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)智啓 出川
 
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)Takuma Yagi
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 
Tf勉強会(4)
Tf勉強会(4)Tf勉強会(4)
Tf勉強会(4)tak9029
 
(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESSHiroki Nakahara
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開Seiya Tokui
 
17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロン17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロンKeiichirou Miyamoto
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術孝昌 田中
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTKmaruyama097
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算(拡散方程式)2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算(拡散方程式)
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)智啓 出川
 
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことRetrieva inc.
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
Clustering _ishii_2014__ch10
Clustering  _ishii_2014__ch10Clustering  _ishii_2014__ch10
Clustering _ishii_2014__ch10Kota Mori
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 

What's hot (20)

2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
FPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGAFPGAX2016 ドキュンなFPGA
FPGAX2016 ドキュンなFPGA
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
 
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 
Tf勉強会(4)
Tf勉強会(4)Tf勉強会(4)
Tf勉強会(4)
 
(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロン17ゼロから作るディープラーニング2章パーセプトロン
17ゼロから作るディープラーニング2章パーセプトロン
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術
 
FPGAX2019
FPGAX2019FPGAX2019
FPGAX2019
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTK
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算(拡散方程式)2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算(拡散方程式)
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)
 
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
Clustering _ishii_2014__ch10
Clustering  _ishii_2014__ch10Clustering  _ishii_2014__ch10
Clustering _ishii_2014__ch10
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 

Similar to 自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -

SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
PietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しいPietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しいHideaki Nagamine
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用Nobuaki Oshiro
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)なおき きしだ
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
130710 02
130710 02130710 02
130710 02openrtm
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようHiromu Yakura
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 

Similar to 自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - - (20)

SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
PCL
PCLPCL
PCL
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
PietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しいPietでLISP処理系を書くのは難しい
PietでLISP処理系を書くのは難しい
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
130710 02
130710 02130710 02
130710 02
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみよう
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 

More from Ogushi Masaya

Deep reinforcement learning for imbalanced classification
Deep reinforcement learning for imbalanced classification Deep reinforcement learning for imbalanced classification
Deep reinforcement learning for imbalanced classification Ogushi Masaya
 
Hidden technical debt in machine learning systems(日本語資料)
Hidden technical debt in machine learning systems(日本語資料)Hidden technical debt in machine learning systems(日本語資料)
Hidden technical debt in machine learning systems(日本語資料)Ogushi Masaya
 
Deep and confident prediction for time series at uber
Deep and confident prediction for time series at uberDeep and confident prediction for time series at uber
Deep and confident prediction for time series at uberOgushi Masaya
 
A dual stage attention-based recurrent neural network for time series prediction
A dual stage attention-based recurrent neural network for time series predictionA dual stage attention-based recurrent neural network for time series prediction
A dual stage attention-based recurrent neural network for time series predictionOgushi Masaya
 
How to apply deep learning to 3 d objects
How to apply deep learning to 3 d objectsHow to apply deep learning to 3 d objects
How to apply deep learning to 3 d objectsOgushi Masaya
 
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ slide share
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ  slide share人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ  slide share
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ slide shareOgushi Masaya
 
Step by Stepで学ぶ自然言語処理における深層学習の勘所
Step by Stepで学ぶ自然言語処理における深層学習の勘所Step by Stepで学ぶ自然言語処理における深層学習の勘所
Step by Stepで学ぶ自然言語処理における深層学習の勘所Ogushi Masaya
 
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...Ogushi Masaya
 
Chainer with natural language processing hands on
Chainer with natural language processing hands onChainer with natural language processing hands on
Chainer with natural language processing hands onOgushi Masaya
 

More from Ogushi Masaya (9)

Deep reinforcement learning for imbalanced classification
Deep reinforcement learning for imbalanced classification Deep reinforcement learning for imbalanced classification
Deep reinforcement learning for imbalanced classification
 
Hidden technical debt in machine learning systems(日本語資料)
Hidden technical debt in machine learning systems(日本語資料)Hidden technical debt in machine learning systems(日本語資料)
Hidden technical debt in machine learning systems(日本語資料)
 
Deep and confident prediction for time series at uber
Deep and confident prediction for time series at uberDeep and confident prediction for time series at uber
Deep and confident prediction for time series at uber
 
A dual stage attention-based recurrent neural network for time series prediction
A dual stage attention-based recurrent neural network for time series predictionA dual stage attention-based recurrent neural network for time series prediction
A dual stage attention-based recurrent neural network for time series prediction
 
How to apply deep learning to 3 d objects
How to apply deep learning to 3 d objectsHow to apply deep learning to 3 d objects
How to apply deep learning to 3 d objects
 
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ slide share
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ  slide share人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ  slide share
人工知能の技術で有名なニューラルネットワークのフレームワークである #Chainer を用いた対話botを使った俺の屍を越えてゆけ slide share
 
Step by Stepで学ぶ自然言語処理における深層学習の勘所
Step by Stepで学ぶ自然言語処理における深層学習の勘所Step by Stepで学ぶ自然言語処理における深層学習の勘所
Step by Stepで学ぶ自然言語処理における深層学習の勘所
 
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...
Wikipedia Entity VectorとWordNetで
対話内容を選定し Chainer を用いたAttentionモデルで 発話内の重要な単語...
 
Chainer with natural language processing hands on
Chainer with natural language processing hands onChainer with natural language processing hands on
Chainer with natural language processing hands on
 

自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -

  • 2. 注意 • このスライドはニューラルネットについて知って いる人向けです。 • 説明のために簡単なC++のコードを使っていま す。 • もしニューラルネットについて知らない場合は下 記を見てください。 • http://www.slideshare.net/unnonouno/ss-4 3844132 2
  • 3. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for Natural language processing ? 3
  • 4. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 4
  • 6. Self Introduction • 名前:大串 正矢 • @SnowGushiGit • Kabuku Inc. • 3次元の画像処理をCNNでやっていま す。 • 興味:健康関連 6
  • 7. Self Introduction Kabuku Inc. Hiring Engineer • サーバーサイド • Python • フロント • Type Script, Angular 7
  • 8. Why do you use the DyNet ? 8
  • 9. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 9
  • 10. Why do you use the DyNet? • 深層学習に使えるフレームワークは多い・・・ 1 0
  • 11. Why do you use the DyNet? • DyNet が他のフレームワークよりも優れている 点 • Python と C++(高速化) • 動的なネットワークの操作(NLPにおいて重 要) • 自然言語処理のための使いやすいインター フェース 11
  • 12. Why do you use the DyNet? • CPUでのパフォーマンス 12
  • 13. Why do you use the DyNet? • GPUでのパフォーマンス もし他のパフォーマンスにも気になる人は論文を参 照ください。 https://arxiv.org/pdf/1701.03980v1.pdf 13
  • 14. Why do you use the DyNet? • 動的な操作は自然言語処理において重要 • 言語の特徴 • 連続的、ツリー、グラフ 14
  • 15. Why do you use the DyNet? • 下記のような状況の場合はDyNetがオススメで す。 • 自然言語処理 • 性能向上が必要 15
  • 16. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 1 6
  • 17. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 17
  • 18. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 18
  • 19. What is DyNet ? • Case1 掛け算 1 9
  • 20. What is DyNet ? 20 • Computation Graph and Expression • Graphを作成 • 下記のコードで下記のグラフを実現していま す。 ComputationGraph cg; float ia, ib; Expression a = input(cg, &ia); Expression b = input(cg, &ib); Expression y = a * b; Code Cpp
  • 21. What is DyNet ? 21 • Computation Graph and Expression • 値を設定します。 • 値を計算します。 1 2 2 ia = 1; ib = 2; cout << as_scalar(cg.forward(y)) << endl; // 2 Code Cpp
  • 22. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 22
  • 23. What is DyNet ? • Case2 xor計算 23
  • 24. What is DyNet ? 24 • Model and Parameters • Parameters は最適化するもの(重み, 正則化 項) • 下記は出力層と1層目(xorの入力とユニット数) だけ定義 Model m; Parameter p_W, p_b, p_V, p_a; const unsigned HIDDEN_SIZE = 8; p_W = m.add_parameters({HIDDEN_SIZE, 2}); p_b = m.add_parameters({HIDDEN_SIZE}); p_V = m.add_parameters({1, HIDDEN_SIZE}); p_a = m.add_parameters({1}); Code Cpp
  • 25. What is DyNet ? 25 • グラフの構成 Expression W = parameter(cg, p_W); Expression b = parameter(cg, p_b); Expression V = parameter(cg, p_V); Expression a = parameter(cg, p_a); vector<dynet::real> x_values(2); Expression x = input(cg, {2}, &x_values); Expression h = tanh(W*x + b); Expression y_pred = V*h + a; dynet::real y_value; Expression y = input(cg, &y_value); Expression loss_expr = squared_distance(y_pred, y); Code Cpp x_values y_values W b a tanh + V + x y squared_ distance
  • 26. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 26
  • 27. What is DyNet ? 27 • Trainer • Trainer に先ほどのモデルを与えて初期化します。 SimpleSGDTrainer sgd(m); Code Cpp
  • 28. What is DyNet ? 28 • Trainer Forward Backprop • XORの入力値を設定し ます。(アドレス注意) • XORの出力値を設定し ます。(アドレス注意) • forward処理でlossを 計算します。 • backward処理で勾配 を計算します。 • parametersを更新しま す。 for (unsigned iter = 0; iter < ITERATIONS; ++iter) { double loss = 0; for (unsigned mi = 0; mi < 4; ++mi) { bool x1 = mi % 2; bool x2 = (mi / 2) % 2; x_values[0] = x1 ? 1 : -1; x_values[1] = x2 ? 1 : -1; y_value = (x1 != x2) ? 1 : -1; loss += as_scalar(cg.forward(loss_expr)); cg.backward(loss_expr); sgd.update(1.0); } sgd.update_epoch(); loss /= 4; cerr << "E = " << loss << endl; } Code Cpp
  • 29. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 29
  • 30. How to apply the DyNet for natural language processing ? 30 ipython notebook を用いて説明します。 https://github.com/SnowMasaya/DyNe t_Study_Docker/blob/master/dynet-py thon/RNNS%20DyNet.ipynb
  • 31. • Reference • DyNet • https://github.com/clab/dynet • Practical Neural Networks for NLP • http://demo.clab.cs.cmu.edu/cdyer/emnlp2016-dynet-tutorial-part1.pdf • Practical Neural Networks for NLP • http://demo.clab.cs.cmu.edu/cdyer/emnlp2016-dynet-tutorial-part2.pdf • ニューラルネットのフレームワークDyNetの紹介 • http://qiita.com/odashi_t/items/237a34d56e5d2a1df7ae • TensorFlow • https://www.tensorflow.org/ • A Powerful, Flexible, and Intuitive Framework for Neural Networks • http://chainer.org/ • Caffe • http://caffe.berkeleyvision.org/ • theano • http://www.deeplearning.net/software/theano/ • RNNS tutorial • https://github.com/clab/dynet/blob/master/examples/python/tutorials/RNNs.ipynb • 深層学習時代の自然言語処理 • http://www.slideshare.net/unnonouno/ss-43844132 31