Python機械学習プログラミング
読み会
第12章
多層人工ニューラルネットワークを一から実装
1
[第2版]
基盤 江口春紀
目次
● 人工ニューラルネットワークによる複雑な関数のモデル化
● 手書きの数字を分類する
● 人工ニューラルネットワークのトレーニング
● ニューラルネットワークでの収束
● ニューラルネットワークの実装についての補足
2
3
人工ニューラルネットワークによる
複雑な関数のモデル化
単層ニューラルネットワークのまとめ
● ADALINEアルゴリズム
4
勾配降下法を使って重みwを更新
しきい値関数
多層ニューラルネットワークアーキテクチャ
● 多層パーセプトロン
5
フォワードプロパゲーションによるニューラルネットワークの活性化
● 多層パーセプトロンの学習
1. 入力層を出発点として、トレーニングデータのパターンをネットワーク経由で順方向に
伝播させ、出力を生成する。
2. ネットワークの出力に基づき、後ほど説明するコスト関数を使って誤差を計算する。
この誤差を最小化することが目的となる。
3. 誤差を逆方向に伝播させることで、ネットワーク内の各重みに対する偏導関数を求め、
モデルを更新する。
6
フォワードプロパゲーションによるニューラルネットワークの活性化
● フォワードプロパゲーション
● ベクトル化
7
8
手書きの数字を分類する
手書きの数字を分類する
● ニューラルネットワークの実際の効果
● バックプロパゲーションの説明を続ける前に、一度ニューラルネットワークの実際の効果
を確かめる。
● 使用するデータセット
● MNIST(Mixed National Institute of Standards and Technology database)
○ トレーニングデータセットの画像(28×28 ピクセル) : 60,000 サンプル
○ テストデータセットの画像(28×28 ピクセル) : 10,000 サンプル
○ 各画像のピクセル値が0~255の値をとるので、-1~1の範囲に正規化して使用する。
9
多層パーセプトロンを実装する
● 実装されたコードの一部
● フォワードプロパゲーション
10
def _forward(self, X):
z_h = np.dot(X, self.w_h) + self.b_h
a_h = self._sigmoid(z_h)
z_out = np.dot(a_h, self.w_out) + self.b_out
a_out = self._sigmoid(z_out)
return z_h, a_h, z_out, a_out
多層パーセプトロンを実装する
● MNISTデータセットのトレーニング
11
>>> nn = NeuralNetMLP(n_hidden=100,
... l2=0.01,
... epochs=200,
... eta=0.0005,
... minibatch_size=100,
... shuffle=True,
... seed=1)
>>> nn.fit(X_train=X_train[:55000],
... y_train=y_train[:55000],
... X_valid=X_train[55000:],
... y_valid=y_train[55000:])
200/200 | Cost: 5065.78 | Train/Valid Acc.: 99.28%/97.98%
コスト
正解率
正解率の差が
開いていっていることが分かる
多層パーセプトロンを実装する
● 正しく分類できなかった数字
12
miscl_img = X_test[y_test != y_test_pred][:25]
correct_lab = y_test[y_test != y_test_pred][:25]
miscl_lab = y_test_pred[y_test != y_test_pred][:25]
fig, ax = plt.subplots(nrows=5, ncols=5, sharex=True, sharey=True,)
ax = ax.flatten()
for i in range(25):
img = miscl_img[i].reshape(28, 28)
ax[i].imshow(img, cmap='Greys', interpolation='nearest')
ax[i].set_title('%d) t: %d p: %d' ¥
% (i+1, correct_lab[i], miscl_lab[i]))
ax[0].set_xticks([])
ax[0].set_yticks([])
plt.tight_layout()
plt.show()
人が正しく分類するのが難しいものもあることがわかる
13
人工ニューラルネットワークの
トレーニング
ロジスティック関数を計算する
● クロスエントロピー誤差関数
● 正則化項の追加
● ネットワーク内の全ての活性化ユニットtに対して一般化する
14
バックプロパゲーションに対する直感力を養う
● バックプロパゲーション(誤差逆伝播法)
● 多層ニューラルネットワークにおいて、複雑なコスト関数の偏導関数を求める際に
その計算を非常に効率よく行う手法。
● 連鎖律
● 例えばfがuの関数で,uがxの関数であるとき,fをxで微分するには以下のようにする。
連鎖律と偏微分を使い更新する重みを計算していく。
15
バックプロパゲーションによるニューラルネットワークのトレーニング
● フォワードプロパゲーション
16
フォワードプロパゲーションでは、
ネットワークの結合を通じて入力特徴量を順方向に伝搬させる。
バックプロパゲーションではこれを逆方向に伝搬させていく。
バックプロパゲーションによるニューラルネットワークのトレーニング
● 重みの更新
17
勾配に対して逆方向に進み
重みを更新する
ニューラルネットワークでの収束
● バッチ学習
● 学習データxがn個あるときに、n個のデータを全て用いて、損失の平均を計算し学習を行う。
● オンライン学習
● 学習データが入ってくるたびにその都度、新たに入ってきたデータのみを使って学習を行う。
● ミニバッチ学習
● 学習データxがn個あるときに、ランダムな
k個(1<k<n)のサブセットを使い学習を行う。
● 学習率
● 局所解に陥らないように調整をする。
18
まとめ
● 多層人工ニューラルネットワーク
● 複数のニューロンをニューラルネットワークアーキテクチャに結合させて、
より複雑な問題を解くことができる。
● バックプロパゲーションを使った効率的な重みの更新をおこなう。
19

More Related Content

PDF
[第2版]Python機械学習プログラミング 第15章
PDF
[第2版]Python機械学習プログラミング 第13章
PDF
[第2版]Python機械学習プログラミング 第14章
PDF
[第2版]Python機械学習プログラミング 第16章
PPTX
Differentiable neural conputers
PDF
Mxnetによるデープラーニングでセミの抜け殻を識別する
PPTX
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
PDF
BMS Molecular Translation 3rd place solution
[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第13章
[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第16章
Differentiable neural conputers
Mxnetによるデープラーニングでセミの抜け殻を識別する
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
BMS Molecular Translation 3rd place solution

What's hot (20)

PDF
深層学習フレームワーク Chainerとその進化
PPTX
深層学習入門 スライド
PPTX
[DL輪読会] Hybrid computing using a neural network with dynamic external memory
PPTX
Hybrid computing using a neural network with dynamic
PDF
PCAの最終形態GPLVMの解説
PDF
NIPS2019 Amazon「think globally, act locally : a deep neural network approach...
PDF
Learning Convolutional Neural Networks for Graphs
PDF
mxnetで頑張る深層学習
PDF
深層学習レポート Day1 (小川成)
PDF
論文紹介 Pixel Recurrent Neural Networks
PPTX
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
PDF
Maxout networks
PDF
More modern gpu
PDF
[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...
PDF
0から理解するニューラルネットアーキテクチャサーチ(NAS)
PDF
GCEをTensorFlowの「計算エンジン」にする
PDF
現在のDNNにおける未解決問題
PDF
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
PPTX
農業AIハッカソンマイクロソフト様発表資料
PDF
TensorFlowで学ぶDQN
深層学習フレームワーク Chainerとその進化
深層学習入門 スライド
[DL輪読会] Hybrid computing using a neural network with dynamic external memory
Hybrid computing using a neural network with dynamic
PCAの最終形態GPLVMの解説
NIPS2019 Amazon「think globally, act locally : a deep neural network approach...
Learning Convolutional Neural Networks for Graphs
mxnetで頑張る深層学習
深層学習レポート Day1 (小川成)
論文紹介 Pixel Recurrent Neural Networks
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
Maxout networks
More modern gpu
[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...
0から理解するニューラルネットアーキテクチャサーチ(NAS)
GCEをTensorFlowの「計算エンジン」にする
現在のDNNにおける未解決問題
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
農業AIハッカソンマイクロソフト様発表資料
TensorFlowで学ぶDQN
Ad

Similar to [第2版]Python機械学習プログラミング 第12章 (20)

PPTX
ラビットチャレンジレポート 深層学習 Day1
PDF
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
PDF
Chainerの使い方と自然言語処理への応用
PDF
20150803.山口大学集中講義
PDF
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
PDF
「深層学習」勉強会LT資料 "Chainer使ってみた"
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
PDF
PythonによるDeep Learningの実装
PDF
Deep learning実装の基礎と実践
PPTX
ディープラーニングハンズオン・レクチャー資料
PDF
TensorflowとKerasによる深層学習のプログラム実装実践講座
PDF
深層学習(講談社)のまとめ(1章~2章)
PDF
A yet another brief introduction to neural networks
PDF
SGDによるDeepLearningの学習
PDF
第2回 メドレー読書会
PDF
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
PPT
Deep Learningの技術と未来
PDF
20160329.dnn講演
PDF
深層学習 勉強会第1回 ディープラーニングの歴史とFFNNの設計
PDF
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
ラビットチャレンジレポート 深層学習 Day1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
Chainerの使い方と自然言語処理への応用
20150803.山口大学集中講義
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
「深層学習」勉強会LT資料 "Chainer使ってみた"
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
PythonによるDeep Learningの実装
Deep learning実装の基礎と実践
ディープラーニングハンズオン・レクチャー資料
TensorflowとKerasによる深層学習のプログラム実装実践講座
深層学習(講談社)のまとめ(1章~2章)
A yet another brief introduction to neural networks
SGDによるDeepLearningの学習
第2回 メドレー読書会
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
Deep Learningの技術と未来
20160329.dnn講演
深層学習 勉強会第1回 ディープラーニングの歴史とFFNNの設計
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
Ad

More from Haruki Eguchi (13)

PDF
[第2版]Python機械学習プログラミング 第12章
PPTX
[第2版]Python機械学習プログラミング 第11章
PPTX
[第2版]Python機械学習プログラミング 第10章
PPTX
[第2版]Python機械学習プログラミング 第9章
PDF
[第2版]Python機械学習プログラミング 第8章
PDF
[第2版]Python機械学習プログラミング 第7章
PDF
[第2版]Python機械学習プログラミング 第6章
PDF
[第2版] Python機械学習プログラミング 第5章
PDF
[第2版] Python機械学習プログラミング 第4章
PDF
[第2版] Python機械学習プログラミング 第3章(5節~)
PDF
[第2版] Python機械学習プログラミング 第3章(~4節)
PDF
[第2版] Python機械学習プログラミング 第2章
PDF
[第2版] Python機械学習プログラミング 第1章
[第2版]Python機械学習プログラミング 第12章
[第2版]Python機械学習プログラミング 第11章
[第2版]Python機械学習プログラミング 第10章
[第2版]Python機械学習プログラミング 第9章
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第7章
[第2版]Python機械学習プログラミング 第6章
[第2版] Python機械学習プログラミング 第5章
[第2版] Python機械学習プログラミング 第4章
[第2版] Python機械学習プログラミング 第3章(5節~)
[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第2章
[第2版] Python機械学習プログラミング 第1章

[第2版]Python機械学習プログラミング 第12章

Editor's Notes

  • #3: IMDb: Internet Movie Database
  • #5: 入力と重みを掛け合わせ、総入力関数に入れて活性化関数を通り、単位ステップ関数でクラスラベルを予測する。 勾配降下法を使って、重みの更新を行う η(イーター):学習率
  • #6: 隠れ層が1つ以上存在するネットワークは「ディープ人工ニューラルネットワーク」と呼ばれる inとh、hとoutはそれぞれ完全に結合している。 a0はバイアスユニットで1に設定されている。入力にバイアスを足したものが伝搬する。
  • #7: 隠れ層の総入力z^(h)は入力層aとhへの重みwの内積をとったもので、 それらを活性化関数(シグモイド関数)に入れて、隠れ層へ伝播する。
  • #15: a: シグモイド関数 t: ネットワーク内のパーセプトロンの数 i: トレーニングサンプルのindex数(28*28個)
  • #19: オンライン学習:通常の勾配降下法よりも早く収束し、早いが、外れ値に影響されやすかったりもする ミニバッチは:ベクトル化された実装で計算を行えるので計算効率が良い、そして重みの更新も速い