Submit Search
Upload
ぼくの実装した最弱のディープラーニング
•
Download as PPTX, PDF
•
37 likes
•
36,108 views
なおき きしだ
Follow
最近流行のディープラーニングを実装して画像認識しようとしたけどなかなかうまく学習してくれない話をしようと思ったのだけど、どうやらうまくいき始めたようです。
Read less
Read more
Software
Report
Share
Report
Share
1 of 35
Download now
Recommended
機械学習プロ生20151121
機械学習プロ生20151121
なおき きしだ
mxnetで頑張る深層学習
mxnetで頑張る深層学習
Takashi Kitano
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
Introduction to Chainer and CuPy
Introduction to Chainer and CuPy
Kenta Oono
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
More modern gpu
More modern gpu
Preferred Networks
Recommended
機械学習プロ生20151121
機械学習プロ生20151121
なおき きしだ
mxnetで頑張る深層学習
mxnetで頑張る深層学習
Takashi Kitano
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
Introduction to Chainer and CuPy
Introduction to Chainer and CuPy
Kenta Oono
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
More modern gpu
More modern gpu
Preferred Networks
Kaggleのテクニック
Kaggleのテクニック
Yasunori Ozaki
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Yuya Unno
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
Takuji Tahara
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
nagachika t
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
Koji Matsuda
backbone としての timm 入門
backbone としての timm 入門
Takuji Tahara
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
Yasuyuki Sugai
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Ohsawa Goodfellow
Deep learning入門
Deep learning入門
magoroku Yamamoto
第3回nips読み会・関西『variational inference foundations and modern methods』
第3回nips読み会・関西『variational inference foundations and modern methods』
koji ochiai
無限と計算可能性と対角線論法
無限と計算可能性と対角線論法
Ryosuke Nakamura
単純パーセプトロン
単純パーセプトロン
T2C_
More Related Content
What's hot
Kaggleのテクニック
Kaggleのテクニック
Yasunori Ozaki
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Yuya Unno
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
Takuji Tahara
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
nagachika t
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
Koji Matsuda
backbone としての timm 入門
backbone としての timm 入門
Takuji Tahara
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
Yasuyuki Sugai
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Ohsawa Goodfellow
Deep learning入門
Deep learning入門
magoroku Yamamoto
第3回nips読み会・関西『variational inference foundations and modern methods』
第3回nips読み会・関西『variational inference foundations and modern methods』
koji ochiai
What's hot
(20)
Kaggleのテクニック
Kaggleのテクニック
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
backbone としての timm 入門
backbone としての timm 入門
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Deep learning入門
Deep learning入門
第3回nips読み会・関西『variational inference foundations and modern methods』
第3回nips読み会・関西『variational inference foundations and modern methods』
Viewers also liked
無限と計算可能性と対角線論法
無限と計算可能性と対角線論法
Ryosuke Nakamura
単純パーセプトロン
単純パーセプトロン
T2C_
20150803.山口大学集中講義
20150803.山口大学集中講義
Hayaru SHOUNO
はじぱた7章F5up
はじぱた7章F5up
Tyee Z
20150803.山口大学講演
20150803.山口大学講演
Hayaru SHOUNO
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
sleepy_yoshi
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
Naoki Yanai
決定木学習
決定木学習
Mitsuo Shimohata
Viewers also liked
(8)
無限と計算可能性と対角線論法
無限と計算可能性と対角線論法
単純パーセプトロン
単純パーセプトロン
20150803.山口大学集中講義
20150803.山口大学集中講義
はじぱた7章F5up
はじぱた7章F5up
20150803.山口大学講演
20150803.山口大学講演
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
決定木学習
決定木学習
More from なおき きしだ
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
GraalVM at Fukuoka LT
GraalVM at Fukuoka LT
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
GraalVMについて
GraalVMについて
なおき きしだ
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
最近のJava事情
最近のJava事情
なおき きしだ
怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
なおき きしだ
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
なおき きしだ
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
なおき きしだ
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Spr
なおき きしだ
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
なおき きしだ
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)
なおき きしだ
これからのJava言語と実行環境
これからのJava言語と実行環境
なおき きしだ
JavaOne報告2017
JavaOne報告2017
なおき きしだ
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
More from なおき きしだ
(20)
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVM at Fukuoka LT
GraalVM at Fukuoka LT
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
GraalVMについて
GraalVMについて
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
最近のJava事情
最近のJava事情
怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Spr
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)
これからのJava言語と実行環境
これからのJava言語と実行環境
JavaOne報告2017
JavaOne報告2017
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
ぼくの実装した最弱のディープラーニング
1.
ぼくの実装した最弱の ディープラーニング 2015/9/4 きしだ なおき
2.
機械学習
3.
学習が進むにつれて正答グラフ がなんとなくあがってきている なんかAirplaneって言ってる 現在の状況
4.
機械学習とは • 多数のデータからパラメータを学習する • いろいろ判定に使う •
あんまりファンタジーじゃない
5.
ニューラルネットワーク • ニューロンを模した構造
6.
各ユニットの計算 • 入力に重みをかけてバイアスを足して活性化 関数を適用
7.
活性化関数 • 入力に、なにか掛けて足すだけでは線形にし かならない • 非線形な活性化関数を入れる –
シグモイド関数 – ReLU(正規化線形関数) • 計算が速い!
8.
ニューラルネットワークの学習
9.
最急降下法 • 微分して傾きを求めて深いほうに進む • 最適ではない谷に落ちないように工夫が必要
10.
バックプロパゲーション • 誤差を逆伝播させる
11.
ディープラーニングによる画像識別
12.
ディープラーニング • 階層の深いニューラルネット • 最近、人工知能っていわれてるのは、ほぼこれ •
いままでできなかったわけ – コンピュータが遅かった • GPUで速い計算 – データがなかった • インターネッツ! – データあさり放題 • クラウドソーシング! – ImageNetの1400万の画像はクラウドソーシングでタグ付けして るらしい
13.
参考文献 • 「深層学習」 – 広い範囲が解説してある –
http://www.amazon.co.jp/dp/4061529021 • AlexNet論文 – パラメータなどが詳しく説明して ある http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf
14.
畳み込みニューラルネット • 畳み込み層やプーリング層といった、特徴的 なレイヤーを持つニューラルネット • 画像識別に向いている •
AlexNetで有名に – 2012年のILSRVCで2位に大差をつけて優勝
15.
畳み込み層 • フィルターを畳み込む • 重み共有
16.
プーリング層 • 区域の最大値をとったり平均をとったりする • 学習パラーメタはない
17.
正規化層 • 値の平均や分散を一定にする • 学習パラメータはない
18.
AlexNetの構造 • C->P->N->C->P->N->C->C->C->P->F->F->F – C:畳み込み層 •
96/256/384/384/256 – P:プーリング層 – N:正規化層 – F:全結合 • 4096/4096/1000 • いま動いてるやつ – C->P->N->C->P->N->F->F • C:48/96 • F:1024/256
19.
学習の工夫
20.
データ正規化 • 入力画像の画素ごとの平均をとっておいて、 入力画像から引く
21.
ミニバッチ • 一枚の画像ごとに重み更新するんではなくて、 何枚かの画像の差分を平均して重みを更新 する
22.
モメンタム • 重みの更新に慣性をつける。 • 谷に落ちにくくなる
23.
局所正規化 • 近いフィルタの出力を使って正規化する
24.
ドロップアウト • 複数の機械学習の結果を平均させるとい い結果になる。 • 複数の機械学習器を用意するのは面倒 •
ニューラルネットの ユニットを確率的に 省く – 構造の違う ニューラルネット!
25.
doubleではなくfloatを使う • 学習に精度はあまり関係ない – 「誤差の減り方は殆ど同じであり、数値に高い精 度は必要ない」 http://news.mynavi.jp/articles/2015/04/08/gtc2015_google/ •
速くなった! – float 95枚/分 – double 75枚/分
26.
ぼくの機械学習が学習してくれなかっ たわけ • フィルタの初期値が大きすぎた – フィルタは標準偏差0.01、平均0のガウスノイズに –
バイアスは0か1 • 青イルカ本に書いてない工夫 – 局所正規化 • となりのフィルタ出力と平均化させる – 重み減衰を取り入れる • aparapiのバグ! – これはひどい
27.
GPU対応
28.
GPUつよい! • GPU – ちょうたくさんコアがある –
同じ処理を行う – 行列計算に向いてる • GTX 970 – 1664コア! – 衝動買い!
29.
aparapi – A PARalell
API – Javaで書いたコードを実行時にOpenCLのコードに 自動変換してくれる。 – JavaでGPUコードが書ける! – Mac Book Proでもいける!(Intel Iris Pro)
30.
記述 • Kernelを継承 • runを実装 –
getGlobalId()でインデックスを取る • executeを呼び出し – 引数で与えた回数 runが呼び出される @Override public void run() { int fxy = getGlobalId(); float d = result[fxy] >= 0 ? delta[fxy] : 0; tempBiasDelta[fxy] = learningRate * d; } execute(outputChannels * outputWidth * outputHeight);
31.
効果 • AlexNetの学習 • 自宅
(Core i7 4コア+GTX 970) – CPU 15枚/分 – GPU 95枚/分 • このMac(Core i7 4コア+Intel Iris Pro) – CPU 12枚/分 – GPU 16枚/分 • ImageNetのサンプル1400万枚が100日で学習で きる! – CPUなら640日!
32.
バグがある・・・ • 三項演算子のカッコが反映されない – (修正してプルリクなげてます) •
CPUとの結果と比較するテストを用意したほうが いい – けど、丸めの違いを考慮するの面倒 void proc(int fxy) { float d = (result[fxy] >= 0 ? 1 : 0) * delta[fxy]; tempBiasDelta[fxy] = learningRate * d; } void kishida_cnn_kernels_ConvolutionBackwordBiasKernel__proc(This *this, int fxy){ float d = (float)(this->result[fxy]>=0.0f)?1:0 * this->delta[fxy]; this->tempBiasDelta[fxy] = this->learningRate * d; return; }
33.
〆
34.
課題 • ミニバッチ内のサンプルが偏らないようにす る • 学習結果の保存・読み込み –
(9/5-6の土日に実装した) • 学習結果を使った判定 – いまはドロップアウトしたまま
35.
まとめ • 一ヶ月がんばればなんでも組める気がする • お金さえあればたくさんデータが処理できる
Download now