Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
自然言語処理に適した
ニューラルネットのフレームワーク
- - - DyNet - - -
2.24,2017
Masaya Ogushi
1
注意
• このスライドはニューラルネットについて知って
いる人向けです。
• 説明のために簡単なC++のコードを使っていま
す。
• もしニューラルネットについて知らない場合は下
記を見てください。
• http://www.slideshar...
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for Natural language
pr...
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
pr...
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
pr...
Why do you use the DyNet?
• 深層学習に使えるフレームワークは多い・・・
1
0
Why do you use the DyNet?
• DyNet が他のフレームワークよりも優れている
点
• Python と C++(高速化)
• 動的なネットワークの操作(NLPにおいて重
要)
• 自然言語処理のための使いやすいインタ...
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
pr...
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
•...
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
•...
What is DyNet ?
• Case1 掛け算
1
9
What is DyNet ?
20
• Computation Graph and Expression
• Graphを作成
• 下記のコードで下記のグラフを実現していま
す。
ComputationGraph cg;
float ia, ...
What is DyNet ?
21
• Computation Graph and Expression
• 値を設定します。
• 値を計算します。
1 2
2 ia = 1;
ib = 2;
cout << as_scalar(cg.for...
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
•...
What is DyNet ?
• Case2 xor計算
23
What is DyNet ?
24
• Model and Parameters
• Parameters は最適化するもの(重み, 正則化
項)
• 下記は出力層と1層目(xorの入力とユニット数)
だけ定義 Model m;
Parame...
What is DyNet ?
25
• グラフの構成
Expression W = parameter(cg, p_W);
Expression b = parameter(cg, p_b);
Expression V = parameter...
What is DyNet ?
• Computation Graph
• Expressions( nodes in the graph)
• Parameters
• Model
• a collection of parameters
•...
What is DyNet ?
27
• Trainer
• Trainer に先ほどのモデルを与えて初期化します。
SimpleSGDTrainer sgd(m);
Code Cpp
What is DyNet ?
28
• Trainer Forward
Backprop
• XORの入力値を設定し
ます。(アドレス注意)
• XORの出力値を設定し
ます。(アドレス注意)
• forward処理でlossを
計算します。...
Agenda
• Self Introduction
• Why do you use the DyNet ?
• What is DyNet ?
• How to apply the DyNet for natural language
pr...
How to apply the DyNet for natural
language processing ?
30
ipython notebook
を用いて説明します。
https://github.com/SnowMasaya/DyNe...
• Reference
• DyNet
• https://github.com/clab/dynet
• Practical Neural Networks for NLP
• http://demo.clab.cs.cmu.edu/cdye...
Upcoming SlideShare
Loading in …5
×

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

1,967 views

Published on

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

Published in: Engineering
  • Be the first to comment

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

  1. 1. 自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - - 2.24,2017 Masaya Ogushi 1
  2. 2. 注意 • このスライドはニューラルネットについて知って いる人向けです。 • 説明のために簡単なC++のコードを使っていま す。 • もしニューラルネットについて知らない場合は下 記を見てください。 • http://www.slideshare.net/unnonouno/ss-4 3844132 2
  3. 3. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for Natural language processing ? 3
  4. 4. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 4
  5. 5. Self Introduction 5
  6. 6. Self Introduction • 名前:大串 正矢 • @SnowGushiGit • Kabuku Inc. • 3次元の画像処理をCNNでやっていま す。 • 興味:健康関連 6
  7. 7. Self Introduction Kabuku Inc. Hiring Engineer • サーバーサイド • Python • フロント • Type Script, Angular 7
  8. 8. Why do you use the DyNet ? 8
  9. 9. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 9
  10. 10. Why do you use the DyNet? • 深層学習に使えるフレームワークは多い・・・ 1 0
  11. 11. Why do you use the DyNet? • DyNet が他のフレームワークよりも優れている 点 • Python と C++(高速化) • 動的なネットワークの操作(NLPにおいて重 要) • 自然言語処理のための使いやすいインター フェース 11
  12. 12. Why do you use the DyNet? • CPUでのパフォーマンス 12
  13. 13. Why do you use the DyNet? • GPUでのパフォーマンス もし他のパフォーマンスにも気になる人は論文を参 照ください。 https://arxiv.org/pdf/1701.03980v1.pdf 13
  14. 14. Why do you use the DyNet? • 動的な操作は自然言語処理において重要 • 言語の特徴 • 連続的、ツリー、グラフ 14
  15. 15. Why do you use the DyNet? • 下記のような状況の場合はDyNetがオススメで す。 • 自然言語処理 • 性能向上が必要 15
  16. 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. 17. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 17
  18. 18. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 18
  19. 19. What is DyNet ? • Case1 掛け算 1 9
  20. 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. 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. 22. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 22
  23. 23. What is DyNet ? • Case2 xor計算 23
  24. 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. 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. 26. What is DyNet ? • Computation Graph • Expressions( nodes in the graph) • Parameters • Model • a collection of parameters • Trainer 26
  27. 27. What is DyNet ? 27 • Trainer • Trainer に先ほどのモデルを与えて初期化します。 SimpleSGDTrainer sgd(m); Code Cpp
  28. 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. 29. Agenda • Self Introduction • Why do you use the DyNet ? • What is DyNet ? • How to apply the DyNet for natural language processing ? 29
  30. 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. 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

×