SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
PythonでDeepLearningを始めるよ
Report
Tanaka Yuichi
Follow
IBM
Oct. 20, 2016
•
0 likes
•
3,721 views
1
of
32
PythonでDeepLearningを始めるよ
Oct. 20, 2016
•
0 likes
•
3,721 views
Download Now
Download to read offline
Report
Technology
PythonでDeepLearningの仕組みを見ていきます。
Tanaka Yuichi
Follow
IBM
Recommended
Bluemixを使ったTwitter分析
Tanaka Yuichi
8.6K views
•
18 slides
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
Tanaka Yuichi
3.3K views
•
23 slides
Apache Sparkを使った感情極性分析
Tanaka Yuichi
2.7K views
•
20 slides
Big datauniversity
Tanaka Yuichi
3.1K views
•
28 slides
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
Tanaka Yuichi
1.4K views
•
18 slides
Watson summit 2016_j2_5
Tanaka Yuichi
759 views
•
35 slides
More Related Content
What's hot
Jjug ccc
Tanaka Yuichi
4.2K views
•
21 slides
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Tanaka Yuichi
3.1K views
•
31 slides
Pysparkで始めるデータ分析
Tanaka Yuichi
6.6K views
•
21 slides
HBaseとSparkでセンサーデータを有効活用 #hbasejp
FwardNetwork
4.4K views
•
25 slides
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
5.8K views
•
46 slides
Spark GraphX で始めるグラフ解析
Yosuke Mizutani
3K views
•
17 slides
What's hot
(20)
Jjug ccc
Tanaka Yuichi
•
4.2K views
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Tanaka Yuichi
•
3.1K views
Pysparkで始めるデータ分析
Tanaka Yuichi
•
6.6K views
HBaseとSparkでセンサーデータを有効活用 #hbasejp
FwardNetwork
•
4.4K views
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
•
5.8K views
Spark GraphX で始めるグラフ解析
Yosuke Mizutani
•
3K views
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Future Of Data Japan
•
3.3K views
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
•
52.8K views
Apache Sparkの紹介
Ryuji Tamagawa
•
4.3K views
20160127三木会 RDB経験者のためのspark
Ryuji Tamagawa
•
3K views
本当にあったApache Spark障害の話
x1 ichi
•
7.9K views
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Kazutaka Tomita
•
5.2K views
SparkやBigQueryなどを用いたモバイルゲーム分析環境
yuichi_komatsu
•
5.3K views
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
Yahoo!デベロッパーネットワーク
•
6.9K views
Sparkのクエリ処理系と周辺の話題
Takeshi Yamamuro
•
2.8K views
Kafkaを活用するためのストリーム処理の基本
Sotaro Kimura
•
8.3K views
ゼロから始めるSparkSQL徹底活用!
Nagato Kasaki
•
6.6K views
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
Kazuki Taniguchi
•
3.5K views
Apache Sparkについて
BrainPad Inc.
•
7.6K views
Spark勉強会_ibm_20151014-公開版
Atsushi Tsuchiya
•
2.8K views
Similar to PythonでDeepLearningを始めるよ
Introduction to NumPy & SciPy
Shiqiao Du
9.2K views
•
38 slides
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
6.1K views
•
32 slides
なにわテック20180127
Natsutani Minoru
1.4K views
•
67 slides
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
LeapMind Inc
9.7K views
•
47 slides
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
67K views
•
35 slides
Fpgax20180217
Natsutani Minoru
2.7K views
•
41 slides
Similar to PythonでDeepLearningを始めるよ
(20)
Introduction to NumPy & SciPy
Shiqiao Du
•
9.2K views
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
•
6.1K views
なにわテック20180127
Natsutani Minoru
•
1.4K views
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
LeapMind Inc
•
9.7K views
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
•
67K views
Fpgax20180217
Natsutani Minoru
•
2.7K views
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
•
974 views
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
•
15.4K views
第3回 JavaScriptから始めるプログラミング2016
kyoto university
•
774 views
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
•
32.8K views
静的サイトどこにする?
ogawatti
•
187 views
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
Insight Technology, Inc.
•
3K views
Ansible handson ood2016
Hideki Saito
•
1.6K views
Apache Auroraの始めかた
Masahito Zembutsu
•
14.1K views
Reactive programming
Yasuki Okumura
•
3.4K views
[Oracle big data jam session #1] Apache Spark ことはじめ
Kenichi Sonoda
•
175 views
Django_Fukuoka
Shuya Motouchi
•
442 views
Django_fukuoka
ShuyaMotouchi1
•
446 views
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
•
2.3K views
Subprocess no susume
Makoto Kishimoto
•
1.6K views
Recently uploaded
テスト自動化.pdf
ssuserf8ea02
25 views
•
26 slides
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
16 views
•
18 slides
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
7 views
•
11 slides
GraphQLはどんな時に使うか
Yutaka Tachibana
11 views
•
37 slides
画像生成AIの問題点
iPride Co., Ltd.
10 views
•
9 slides
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
5 views
•
1 slide
Recently uploaded
(14)
テスト自動化.pdf
ssuserf8ea02
•
25 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
16 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
11 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
5 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
159 views
CatBoost on GPU のひみつ
Takuji Tahara
•
528 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
44 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
40 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
55 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
113 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
140 views
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
7 views
PythonでDeepLearningを始めるよ
1.
© 2016 IBM
Corporation Pythonをつかってディープ・ラーニングの仕 組みを見ていくよ Tanaka Y.P 2016-10-18
2.
© 2016 IBM
Corporation2 お詫びと言い訳 (仮)Sparkで試してみるディープ・ラーニング 昨今、人工知能関連で最大の話題であるDeep Learningを、Apache Sparkを使って実装する方法について体験していただくハンズ・オン・セッ ションです。 Pythonをつかってディープ・ラーニングの仕組みを見ていくよ 昨今、人工知能関連で最大の話題であるDeep Learningを、Numpyを 使って実装する方法について体験していただくハンズ・オン・セッションで す。
3.
© 2016 IBM
Corporation3 自己紹介 田中裕一(yuichi tanaka) 主にアーキテクチャとサーバーサイドプログラムを担当 することが多い。Hadoop/Spark周りをよく触ります。 Node.js、Python、最近はSpark周りの仕事でScalaを書く ことが多い気がします。 休日はOSS周りで遊んだり。 詳解 Apache Spark
4.
© 2016 IBM
Corporation4 DeepLearningとは • 機会学習の一つであるNNの層を重ね高精度な予測・分類処理を行うための手法 • 色々な関数の層を重ねて精度を向上させる • 画像識別の分野で精度が高くて有名(ResNet/GoogLeNet等) 例)VGG16
5.
© 2016 IBM
Corporation5 さっきのを簡略に書き直すと Data Convo lution Relu Affine Relu Softmax Out ・・・ max poolin g VGG16の簡略図
6.
© 2016 IBM
Corporation6 今日のゴール • 今日は最終的に下記のNN(fully-connected)を作成します。 • 今日の例では特に層を厚くする意味もないですがせっかくなのでDNNっぽく・・・ Data Affine Relu Affine Relu Softmax Out・・・ Affine
7.
© 2016 IBM
Corporation7 今日の範疇 今日の話の中で説明すること 背景的な話 DeepLearningの全体像 レイヤ フォワード • アフィン変換 活性化関数について • ReLU関数 出力層での正規化関数 • ソフトマックス関数 バックプロパゲーション 損失関数 誤差伝搬について ハイパーパラメータ
8.
© 2016 IBM
Corporation8 今日の範疇 今日の話の中で説明しないこと DeepLearningの種類的な違いとかの細かいこと 畳み込みニューラルネットワーク:CNN@触れる程度で 再帰ニューラルネットワーク:RNN 教師なし学習:GAN 強化学習:DQN 数式の話 『うぇ』ってなるので数式なしで 内積の話@アフィン変換 ネイピア数@ところどころ 各関数の詳細@特にバックプロパゲーションの関数 Batch Norm@各レイヤの値の分布調整 Dropoutについて@過学習とか
9.
© 2016 IBM
Corporation9 背景 人間の脳の構造を模してやれば上手く識別できるのは? ニューロン情報処理モデル 例)単純パーセプトロン I I I W W W S O Input1 Input2 Input3 output 参考) 単純パーセプトロンの基本のき Weight
10.
© 2016 IBM
Corporation10 背景 層をふやしてやれば上手く識別できるのは? 例)FF-NN I I I Input1 Input2 Input3 output O O
11.
© 2016 IBM
Corporation11 今日のサンプル(色の識別:3つに分類) • 何色ですか? RGB(255,0,0) RGB(0,255,0) RGB(0,0,255) RGB(233,63,127) 赤 緑 青 赤
12.
© 2016 IBM
Corporation12 今日のサンプルNN(色の識別)の用語説明 • こんな形のFully-Connectedを作成していきます。 Out ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 入力層 隠れ層 出力層 Softmax
13.
© 2016 IBM
Corporation13 今日のサンプルNN(色の識別)の用語説明 • こんな形のFully-Connectedを作成していきます。 ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 0層(入力層) 1層 4層(出力層)2層 計算処理 活性化関数 出力関数 レイヤ Softmax Out
14.
© 2016 IBM
Corporation14 今日のサンプルNN(色の識別)の用語説明 • こんな形のFully-Connectedを作成していきます。 ・・・ Forward Backward ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 計算処理 Affine変換 活性化関数 Relu関数 出力関数 Softmax関数 OutSoftmax
15.
© 2016 IBM
Corporation15 フォワード(入力レイヤ -> Affine) 122 66 94 n1 ・ ・ ・ ・ ・ ・ RGBの値でフォワードとバックプロパゲーションについて見ていきます。 入力値 : RGB(122, 66, 94) n1:発火のしやすさ(バイアス)、各重み Rの値 * Rの重み Gの値 * Gの重み Bの値 * Bの重み 122 66 94 n1 Rの重み Gの重み Bの重み バイアス
16.
© 2016 IBM
Corporation16 フォワード(入力レイヤ -> Affine) バイアスと重みを使ってどのくらい発火するか計算します。 入力値 : RGB(122, 66, 94) n1:バイアス、重み Rの値 * Rの重み Gの値 * Gの重み Bの値 * Bの重み 122 66 94 n 1 Rの重み Gの重み Bの重み 122 66 94 n 1 Rの重み Gの重み Bの重み bias バイアス バイアス (122 * Rの重み) + (66 * Gの重み) + (94 * Bの重み) + バイアス
17.
© 2016 IBM
Corporation17 フォワード(入力レイヤ -> Affine) 入力値と重みの内積にバイアスを足したもの 122 66 94 n1 n2 n3 ・ ・ ・ ・ ・ ・ bias output = Input ・ weight + bias 122,66,94 n1R,n2R,n3R n1G,n2G,n3G n1B,n2B,n3G ・ ・ ・ n1B,n2B,n3B,・・・ pythonコード: out = x.dot(w) + b n1O,n2O,n3O,・・・
18.
© 2016 IBM
Corporation18 フォワード(Affine -> Relu) Affineの出力結果を活性化関数Reluを使って活性化させます ・ ・ ・ ・ ・ ・ ・ ・ ・ s1 = np.array([[122, 66, 94]]) w1 = np.array([[0.1], [0.2],[0.3]]) s1.dot(w1) + [0.5] [ 54.1] 例)Affineの重み・バイアスを決め打ちで計算 n1 54.1
19.
© 2016 IBM
Corporation19 フォワード(Affine -> Relu) Relu関数はx<=0なら0をx>0ならxを返す。(超簡単) Relu関数の図 n1 54.1 54.1 phthonコード return np.maximum(0,x)
20.
© 2016 IBM
Corporation20 フォワード(Affine -> 出力レイヤ) Softmax関数で最終値を扱いやすい形に変換 Softmax関数 pythonコード e = np.exp(x) sum_e = e.sum() return e / sum_e Softmax n1 n2 n3 出力例 [0, 0.1, 5.3] => [ 0.00493969, 0.0054592 , 0.98960111] 98%の確率で青と判定!
21.
© 2016 IBM
Corporation21 バックプロパゲーション • 各nodeの重みとバイアスは? ・・・ Backward ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ OutSoftmax
22.
© 2016 IBM
Corporation22 バックプロパゲーション(損失関数) • 各nodeの重みとバイアスは? ・・・ Backward ・ ・ ・ ・ ・ ・ OutSoftmax RGB(122, 66, 94) 教師Label [1,0,0] 初期値を当てる Forward 教師Label [1,0,0] 出力 [0.3,0.28,0.32] 損失関数 誤差修正 交差エントロピー誤差
23.
© 2016 IBM
Corporation23 バックプロパゲーション(誤差伝搬) ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Softmax Backward 本来は勾配という微分計算を全パラメータに対して行う必要があるところ、 誤差逆伝搬法を使うことで出力層側から入力層側に向かって 単純計算だけでパラメータの更新を行います。
24.
© 2016 IBM
Corporation24 バックワード(出力レイヤ(Softmax + 交差エントロピー誤差)) Softmax関数 + 交差エントロピー誤差 yk - tk pythonコード dx = (self.y - self.t) Softmax n1 n2 n3 ここからはバックワードする際のコードと式を紹介だけします。 Softmax y1 – t1 y2 – t2 y3 – t3 損失関数
25.
© 2016 IBM
Corporation25 バックワード(Affine -> Relu) pythonコード dx = dout.dot(self.w.T) #出力 w = dx.T.dot(dout) #重み b = dout.sum(axis=0) #バイアス Affine変換の式は重み・バイアス・入力の3値を計算します ・ ・ ・ ・ ・ ・ Affine変換の重み・バイアス
26.
© 2016 IBM
Corporation26 バックワード(Relu -> Affine) pythonコード dout[self.mask] = 0 Relu関数は値を反転してあげるだけ ・ ・ ・ ・ ・ ・
27.
© 2016 IBM
Corporation27 フォワードとバックワード Data Affine Relu Affine Relu Softmax Out・・・ Affine Forward Forward Forward Forward Forward Forward Forward Backward BackwardBackwardBackwardBackwardBackwardBackward • Foward -> Backwordを繰り返し処理を行うことで重み・バイアスの更新が可能になります
28.
© 2016 IBM
Corporation28 もう一度CNNを見てみよう Data Convo lution Relu Affine Relu Softmax Out ・・・ max poolin g VGG16の簡略図
29.
© 2016 IBM
Corporation29 ハイパーパラメータについて(層の数とNodeの数) ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Softmax • NNでは各関数の重みやバイアスを自動で調整していく事で精度を上げます • ではNNではパラメータの調整は全て不要なのでしょうか? 全体で幾つの層を重ねるのか? 1層に幾つのNode を作るのか?
30.
© 2016 IBM
Corporation30 ハイパーパラメータについて(ネットワーク全体の学習率) Affine変換の重み・バイアス ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Softmax Affine変換の重み・バイアス Affine変換の重み・バイアス どのぐらいの強さで重み・バイアスを更新するのか? 学習率学習率学習率
31.
© 2016 IBM
Corporation31 今日のサンプルプログラム ・・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Softmax Affine変換の重み・バイアス 学習率:0.01 全体4層 50 100 503 3 入力データ数 train: 240 test: 20
32.
© 2016 IBM
Corporation32 DataScientistExperienceへ Notebookはこちらそれではコードに移ります
Editor's Notes
1
会社ではSparkとHadoopのスペシャリストやってます。
DeepLearningとは
今日は画像処理などややこしいことを行わず、純粋にAffine変換とRelu関数、最後のSoftmax関数のみを使ってNNを作成します。 ただ、せっかくなのでAffine+Reluを4層にしてDNNっぽく作ります。 今日のサンプルソースコードでは色(RGB)の分類を扱います。 #ちなみに色の分類行うのにわざわざDNNを作ったりはしません。説明用。
Rectified linear unit
元々NN系の機会学習は人間の脳の構造を模せば、識別処理が上手くいくのではというところから始まってます。
で、単純パーセプトロンは、非線形の分析ができないということで、FF-NN(多層パーセプトロン)に進化していきます。
今日はこのあたりからやってきます。
まず入力レイヤから見ていきます。
余談ですが、このNNに画像を入れる場合 30*30の画像で入力層が900になります。多いですね。
また余談です。今回簡素化のため正規化かけてませんが、入力値の正規化は重要です。 今日のサンプルはこのAffine変換と活性化関数Reluを3層重ねてます。
この層で結果[1,0,0] ここでForwardの処理は終わりです。ね簡単でしょ?ここまでなら・・・
この時の問題として 例えば50のnodeを作ると、今回のケースでいきなり150個の重みと50個のバイアスを適切な値 これ無理ですよね? 出力結果をもとに重みやバイアスを調整するのを誤差伝搬
実際のコードはSoftmax関数内で損失関数の計算もやってる 初期値はガウス分布
確率勾配を用いて パラメータの微分は独立なものではなく、 レイヤのパラメータに関する誤差関数の微分は、 一つ前の層のレイヤのパラメータの微分が求まっていると、 微分計算をしなくても自動的に単純計算で決まる、つまり微分やらなくても良いので高速
次はAffine変換
Input(教師データ)だけ用意すればNNを通して各パラメータを自動的に算出してくれます。 これがend-to-endの機会学習と言われる所以ですね。 例えばTensorFlowやchainerやcaffe
このDNNをCNNにしたい場合はいくつかの層を Convolutionとmax poolingの関数を作って入れ替えてあげればCNNの完成です。
今日はこんな感じのパラメータで作ります。