Enviar pesquisa
Carregar
mxnetで頑張る深層学習
•
12 gostaram
•
6,275 visualizações
Takashi Kitano
Seguir
Tokyo.R#57
Leia menos
Leia mais
Dados e análise
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 59
Baixar agora
Baixar para ler offline
Recomendados
Chainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM について
Retrieva inc.
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
Koji Matsuda
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
Yasuyuki Sugai
Mais conteúdo relacionado
Mais procurados
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Yuya Unno
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
Kenta Oono
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
Ryosuke Okuta
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)
Seiya Tokui
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Ohsawa Goodfellow
Stochastic Gradient MCMC
Stochastic Gradient MCMC
Kenta Oono
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
はじめての人のためのDeep Learning
はじめての人のためのDeep Learning
Tadaichiro Nakano
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
Ryosuke Okuta
Deep learning入門
Deep learning入門
magoroku Yamamoto
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep Learning
Jun-ya Norimatsu
More modern gpu
More modern gpu
Preferred Networks
画像認識で物を見分ける
画像認識で物を見分ける
Kazuaki Tanida
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
Shinya Akiba
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
Tadaichiro Nakano
Mais procurados
(20)
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Stochastic Gradient MCMC
Stochastic Gradient MCMC
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
はじめての人のためのDeep Learning
はじめての人のためのDeep Learning
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
Deep learning入門
Deep learning入門
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep Learning
More modern gpu
More modern gpu
画像認識で物を見分ける
画像認識で物を見分ける
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
Semelhante a mxnetで頑張る深層学習
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
fukuoka.ex
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
fukuoka.ex
20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS
都元ダイスケ Miyamoto
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
MITSUNARI Shigeo
Introduction to Spock
Introduction to Spock
Takahiro Sugiura
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
keki3
Or seminar2011final
Or seminar2011final
Mikio Kubo
MoteMote Compiler Plugin
MoteMote Compiler Plugin
yoshiaki iwanaga
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口
Nds meetup8 lt
Nds meetup8 lt
ushiboy
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
nagachika t
Gurobi python
Gurobi python
Mikio Kubo
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mitsuru Katoh
Semelhante a mxnetで頑張る深層学習
(20)
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
Introduction to Spock
Introduction to Spock
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
Or seminar2011final
Or seminar2011final
MoteMote Compiler Plugin
MoteMote Compiler Plugin
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
JavaScriptクイックスタート
JavaScriptクイックスタート
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
Nds meetup8 lt
Nds meetup8 lt
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
Gurobi python
Gurobi python
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mais de Takashi Kitano
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
Takashi Kitano
{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発Tips
Takashi Kitano
令和から本気出す
令和から本気出す
Takashi Kitano
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
Takashi Kitano
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
Takashi Kitano
{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
Takashi Kitano
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
Takashi Kitano
可視化周辺の進化がヤヴァイ 〜2016〜
可視化周辺の進化がヤヴァイ 〜2016〜
Takashi Kitano
Rによるウイスキー分析
Rによるウイスキー分析
Takashi Kitano
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
Takashi Kitano
20140625 rでのデータ分析(仮) for_tokyor
20140625 rでのデータ分析(仮) for_tokyor
Takashi Kitano
lubridateパッケージ入門
lubridateパッケージ入門
Takashi Kitano
20150329 tokyo r47
20150329 tokyo r47
Takashi Kitano
20140920 tokyo r43
20140920 tokyo r43
Takashi Kitano
Google's r style guideのすゝめ
Google's r style guideのすゝめ
Takashi Kitano
Mais de Takashi Kitano
(15)
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発Tips
令和から本気出す
令和から本気出す
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
可視化周辺の進化がヤヴァイ 〜2016〜
可視化周辺の進化がヤヴァイ 〜2016〜
Rによるウイスキー分析
Rによるウイスキー分析
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20160311 基礎からのベイズ統計学輪読会第6章 公開ver
20140625 rでのデータ分析(仮) for_tokyor
20140625 rでのデータ分析(仮) for_tokyor
lubridateパッケージ入門
lubridateパッケージ入門
20150329 tokyo r47
20150329 tokyo r47
20140920 tokyo r43
20140920 tokyo r43
Google's r style guideのすゝめ
Google's r style guideのすゝめ
mxnetで頑張る深層学習
1.
で頑張る深層学習 Tokyo.R#57 2016-09-24 @kashitan
2.
• xgboostの開発元であるdmlcが開発した Deep Learning
Framework • C++, Scala, Python, R, Juliaなど様々な インタフェースがある • CPU/GPUの切り替えが容易 • 複数コア/複数ノードで分散処理が可能
3.
• 多層パーセプトロン • 畳み込みニューラルネットワーク
4.
• 多層パーセプトロン • 畳み込みニューラルネットワーク
5.
多層パーセプトロン • パーセプトロンを複数の層に配置させ ⼊⼒層に与えられた値を伝播させてい くネットワーク ・ ・ ・ ・ ⼊⼒層 中間層
出⼒層 x1 x2 xn y2 y1
6.
多層パーセプトロン • irisデータでやってみる Sepal. Length Sepal. Width Petal. Length Petal. Width Species 5.1 3.5
1.4 0.2 setosa 4.9 3.0 1.4 0.2 setosa 4.7 3.2 1.3 0.2 setosa 4.6 3.1 1.5 0.2 setosa sepal petal setosa, versicolor, virginicaの各品種に50行ずつあるデータセット
7.
多層パーセプトロン • 学習⽤と検証⽤にデータを分割 > data(iris) >
# 奇数⾏を学習⽤データ、偶数⾏を検証⽤データとする > train.ind <- seq(1, nrow(iris), 2) > > train.x <- data.matrix(iris[train.ind, 1:4]) > train.y <- as.numeric(iris[train.ind, 5]) - 1 > test.x <- data.matrix(iris[-train.ind, 1:4]) > test.y <- as.numeric(iris[-train.ind, 5]) - 1 > table(train.y) train.y 0 1 2 25 25 25
8.
多層パーセプトロン • パッケージのロードとログの設定 > library(mxnet) > >
# mxnetでランダムプロセスをコントロールするための関数 > mx.set.seed(0) > > # 学習および検証時の誤差を後で使うためのリファレンスクラス > logger <- mx.metric.logger$new()
9.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger)
10.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 中間層のユニット数
11.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 出⼒層のユニット数 今回は3class分類なので 3を指定
12.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 活性化関数 今回はReLUを指定
13.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 誤差関数
14.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 学習回数
15.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 1回の学習で 使⽤する 学習データ数
16.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 学習率
17.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) モーメンタム
18.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 評価⽅法 回帰の場合はRMSEなど
19.
多層パーセプトロン • モデル作成 > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = 6, + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger) 学習毎に実⾏する関数
20.
多層パーセプトロン • モデル作成結果 Start training
with 1 devices [1] Train-accuracy=0.38 [1] Validation-accuracy=0.333333333333333 [2] Train-accuracy=0.333333333333333 [2] Validation-accuracy=0.333333333333333 [3] Train-accuracy=0.333333333333333 [3] Validation-accuracy=0.333333333333333 (中略) [199] Train-accuracy=0.96 [199] Validation-accuracy=0.96 [200] Train-accuracy=0.986666666666667 [200] Validation-accuracy=0.96
21.
多層パーセプトロン • 学習毎の精度をプロット > library(dplyr) >
library(plotly) > data.frame(epoc = seq(1, 200, 1), + train = logger$train, test = logger$eval) %>% + plot_ly( + x = epoc, y = train, + type = "scatter", mode = "lines", name = "train" + ) %>% + add_trace( + x = epoc, y = test, + type = "scatter", mode = "lines", name = "test" + ) %>% + layout(yaxis = list(title = "accuracy"))
22.
多層パーセプトロン • 学習毎の精度をプロット
23.
多層パーセプトロン • モデルを検証⽤データに当てはめ > #
検証⽤データに当てはめ > preds <- predict(model, test.x) > head(t(preds)) [,1] [,2] [,3] [1,] 0.9999290 7.107238e-05 1.109092e-12 [2,] 0.9997237 2.762006e-04 1.440176e-11 [3,] 0.9999521 4.790557e-05 6.202604e-13 [4,] 0.9999722 2.779509e-05 1.976960e-13 [5,] 0.9999521 4.791964e-05 5.282145e-13 [6,] 0.9998796 1.204296e-04 3.145415e-12
24.
多層パーセプトロン • 混合⾏列/精度の確認 > #
最も確率が⾼い列を予測した品種とする > pred.label <- max.col(t(preds)) - 1 > # 混合⾏列をプロット > library(caret) > confusionMatrix(pred.label, test.y) Confusion Matrix and Statistics Reference Prediction 0 1 2 0 25 0 0 1 0 24 2 2 0 1 23
25.
多層パーセプトロン • 計算グラフの描画 > graph.viz(model$symbol$as.json()) ⼊⼒層 中間層 活性化関数 出⼒層 尤度関数
26.
多層パーセプトロン • 2層にしてみる > model
<- mx.mlp( + train.x, train.y, + eval.data = list(data = test.x, label = test.y), + hidden_node = c(6, 6), + out_node = 3, + activation = "relu", + out_activation = "softmax", + num.round = 200, + array.batch.size = 25, + learning.rate = 0.07, + momentum = 0.9, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(5, logger)
27.
多層パーセプトロン • 計算グラフの描画 > graph.viz(model$symbol$as.json()) 中間層が2層に 増えている
28.
多層パーセプトロン • 学習毎の精度をプロット
29.
多層パーセプトロン • 混合⾏列/精度の確認 > confusionMatrix(pred.label,
test.y) Confusion Matrix and Statistics Reference Prediction 0 1 2 0 25 0 0 1 0 25 25 2 0 0 0 Overall Statistics Accuracy : 0.6667 95% CI : (0.5483, 0.7714)
30.
多層パーセプトロン • オッカムの剃⼑ “Pluralitas non
est ponenda sine neccesitate. Frustra fit per plura quod potest fieri per pauciora.” 必要が無いなら多くのものを定⽴ してはならない。少数の論理でよい 場合は多数の論理を定⽴してはなら ない。
31.
• 多層パーセプトロン • 畳み込みニューラルネットワーク
32.
畳み込みニューラルネットワーク • ⼈の視覚野にある受容野をモデル化 • 以下の層から構成される •
畳み込み層 • プーリング層 • 全結合層 • 出⼒層
33.
畳み込みニューラルネットワーク • 畳み込み層とプーリング層は複数回 繰り返す • 全結合層も何層か繰り返し深い層を 形成 http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdfより抜粋
34.
畳み込みニューラルネットワーク • 詳しくは以下の神スライドを参照 http://www.slideshare.net/matsukenbook/ss-50545587
35.
畳み込みニューラルネットワーク • MNISTデータでやってみる • 0〜9までの数字の⼿書き⽂字 •
学習⽤データ 6万件 • 検証⽤データ 1万件
36.
畳み込みニューラルネットワーク • LeNet-5を可能なかぎり再現してみる
37.
畳み込みニューラルネットワーク • MNISTデータのダウンロード http://yann.lecun.com/exdb/mnist/
38.
畳み込みニューラルネットワーク • バイナリデータを読み込む関数をロード https://gist.github.com/brendano/39760
39.
畳み込みニューラルネットワーク • データの読み込み > #
MNISTデータの読み込み > load_mnist() > > # 28x28(=784)のレコードが60000個 > dim(train$x) [1] 60000 784 >
40.
畳み込みニューラルネットワーク • 次元の変換とプロット > #
mx.symbol.Convolutionで処理できる4次元配列に変換 > train.x <- t(train$x) > dim(train.x) <- c(28, 28, 1, 60000) > > test.x <- t(test$x) > dim(test.x) <- c(28, 28, 1, 10000) > > # 1⽂字⽬をプロット > library(plotly) > plot_ly(z=train.x[, , 1, 1], colorscale = "Greys", type = "heatmap")
41.
畳み込みニューラルネットワーク • 次元の変換とプロット
42.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2))
43.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2)) フィルタのサイズ
44.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2)) フィルタの数
45.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2)) 活性化関数
46.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2)) プーリングのタイプ
47.
畳み込みニューラルネットワーク • ⼊⼒層とC1, S2の定義 >
library(mxnet) > input <- mx.symbol.Variable('data') > > # C1 > c1 <- mx.symbol.Convolution( + data = input, kernel = c(5, 5), num_filter = 6) > a1 <- mx.symbol.Activation(data = c1, act_type = "tanh") > > # S2 > s2 <- mx.symbol.Pooling( + data = a1, pool_type = "max", kernel = c(2, 2)) フィルタのサイズ
48.
畳み込みニューラルネットワーク • C3, S4,
C5の定義 > # C3 > c3 <- mx.symbol.Convolution( + data = s2, kernel = c(5, 5), num_filter = 16) > a2 <- mx.symbol.Activation(data = c3, act_type = "tanh") > > # S4 > s4 <- mx.symbol.Pooling( + data = a2, pool_type = "max", kernel = c(2, 2)) > > # C5 > c5 <- mx.symbol.Flatten(data = s4)
49.
畳み込みニューラルネットワーク • F6, OUTPUT,
損失関数の定義 > # F6 > f6 <- mx.symbol.FullyConnected(data = c5, num_hidden = 84) > a3 <- mx.symbol.Activation(data = f6, act_type = "tanh") > > # Output > output <- mx.symbol.FullyConnected(data = a3, num_hidden = 10) > > # loss > lenet <- mx.symbol.SoftmaxOutput(data = output)
50.
畳み込みニューラルネットワーク • ネットワークモデルの学習 > model
<- mx.model.FeedForward.create( + lenet, + X = train.x, + y = train$y, + ctx = mx.gpu(), + num.round = 20, + array.batch.size = 1000, + learning.rate = 0.05, + momentum = 0.9, + wd = 0.00001, + eval.metric = mx.metric.accuracy, + epoch.end.callback = mx.callback.log.train.metric(100) + )
51.
畳み込みニューラルネットワーク • 学習毎の精度をプロット > data.frame(epoc
= 1:20, + train = logger$train, + test = logger$eval) %>% + plot_ly( + x = epoc, y = train, + type = "scatter", mode = "lines", name = "train") %>% + add_trace( + x = epoc, y = test, + type = "scatter", mode = "lines", name = "test") %>% + layout(yaxis = list(title = "accuracy"))
52.
畳み込みニューラルネットワーク • 学習毎の精度をプロット
53.
畳み込みニューラルネットワーク • 混合⾏列/精度の確認 > confusionMatrix(pred.label,
test$y) Confusion Matrix and Statistics Reference Prediction 0 1 2 3 4 5 6 7 8 9 0 970 0 1 0 0 2 5 0 5 3 1 0 1126 2 0 0 0 2 1 0 2 2 3 1 1020 1 1 0 1 4 3 0 3 0 1 0 997 0 7 1 2 3 4 4 1 0 3 0 971 0 2 0 2 13 5 0 0 0 5 0 876 2 0 2 2 6 2 2 1 0 2 4 943 0 1 0 7 1 2 4 5 3 1 0 1019 6 10
54.
畳み込みニューラルネットワーク • 計算グラフの描画 > graph.viz(model$symbol$as.json())
55.
まとめ
56.
で でも 深層学習が捗る!
57.
参考
58.
•MXNet R Package
- mxnet 0.7.0 documentation •Deep Learningライブラリ{mxnet}のR版で Convolutional Neural Networkをサクッと 試してみた(追記3件あり) •Deep Learningライブラリ「MXNet」のR版 をKaggle Otto Challengeで実践してみた •Mxnetで回帰 #TokyoR 53th
Baixar agora