【ゼロから作るDeap Learning】7.4~7.8

>100 Views

June 11, 26

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2026前期輪読会 #8 ゼロから作るDeep Learning 7.4-7.8 京都大学 総合人間学部 B2 本川玄人 0

2.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 1

3.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 2

4.

7.4 Convolution/Poolingレイヤの実装 CNNのデータは4次元配列 ここからCNNの実装を行うが、 CNNでは高さ・横幅・チャンネル・データ数の 4次元のデータを扱う(4次元配列) … 演算処理を簡単にするためにim2colという関数を導入 (素朴に考えるとfor文の入れ子構造になりNumPyでは処理が遅くなる) 3

5.

7.4 Convolution/Poolingレイヤの実装 Im2colによる展開 … 3次元の同じフィルターが適用されるデータを 取り出して1行に展開 各3次元データに同様の操作を繰り返して2次 元のデータに変換する … Im2colによって 4次元のデータ→2次元のデータに変換 ✓高度に最適化された行列計算のライブラリを利用でき、計算が高速 ✗通常よりも多くのメモリを使用 4

6.

7.4 Convolution/Poolingレイヤの実装 Convolutionレイヤの実装 im2colを使ってforward処理を実装 backward処理ではim2colの逆処理を行う関数、 col2imを使う必要あり 5

7.

7.4 Convolution/Poolingレイヤの実装 Poolingレイヤの実装 プーリング層はチャンネル方向には独立 →チャンネルごとに展開 Poolingレイヤは3段階の流れで実装(forward) 1. 入力データの展開 2. 行ごとに最大値を求める(Maxプーリング) 3. 適切な出力サイズに整形 6

8.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 7

9.

7.5 CNNの実装 SimpleConvnetの実装 実装したConvolutionレイヤ,Poolingレイヤを使って下図のような単純なCNNを実装する (もっと層の深いCNNが普通) Conv ReLU Pooling Affine ReLU Affine Softmax 8

10.

7.5 CNNの実装 SimpleConvNetの初期化の実装 引数の紹介 ・input_dim - 入力データの次元 ・conv_param - 畳み込み層のハイパーパラメータ ・hidden_size - 隠れ層のニューロン数 ・output_size - 出力層のニューロン数 ・weight_init_std – 初期化の際の重みの標準偏差 重みの初期化を行い、レイヤを生成 9

11.

7.5 CNNの実装 学習に関する実装 推論、損失関数の計算、勾配の計算を行う関数も同様に実装 10

12.

7.5 CNNの実装 MNISTデータセットの識別 MNISTデータセットを使って性能を検証 →約99%の高い精度を実現 CNNは画像認識課題において優秀! 11

13.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 12

14.

7.6 CNNの可視化 フィルターを可視化する 今回学習したCNNのフィルターは サイズ5×5、チャンネル数1 →グレースケール画像として可視化できる 小さな値を黒、大きな値を白として正規化 学習後のフィルターは規則性のある画像に変化 ・白から黒へグラデーションを伴って変化するフィルター ・塊のある領域(blob)を持つフィルター 13

15.

7.6 CNNの可視化 フィルターは何を見ているのか フィルターはそれぞれの反応に特性がある エッジ…色が変化する境目 ブロブ…局所的に塊のある領域 グラデーションの傾きによって異なる方位のエッジに反応 第1層目では単純な情報が抽出されて後ろの層に渡している! 14

16.

7.6 CNNの可視化 階層構造による情報抽出 ここまでは1層目のフィルターのみに注目 →より深い層ではどのような情報が抽出されるのか? AlexNet(8層のCNN)を調べると ・層が深くなるにつれてより抽象化された情報が抽出 ・エッジ→テクスチャ→物体のパーツ、と反応の対象が変化 15

17.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 16

18.

7.7 代表的なCNN LeNetの紹介 CNNに関する重要なネットワークを2つ紹介 ・LeNet ・AlexNet ※最近の代表的なCNNモデルは別の本で学ぶ必要あり LeNet : CNNの元祖(1998年) 今回扱ったCNNと比較すると ・シグモイド関数を使用 ・画像サイズを縮小するプーリング層 などの違いがある 17

19.

7.7 代表的なCNN AlexNetの紹介 AlexNetが画像認識コンペで活躍 →ディープラーニング・ブームを巻き起こした AlexNetの特徴 ・ReLUを使用 ・LRN・Dropoutを導入 大量のデータ+GPUの使用による計算スピードの向上が原動力に GPU間で異なる特徴を抽出 18

20.

アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 19

21.

7.8 まとめ ・CNNではこれまでの全結合層だけでなく 畳み込み層とプーリング層が加わる ・畳み込み層、プーリング層はim2col関数で効率的に計算 ・CNNは層が深くなるにつれて高度な情報を抽出 ・LeNet、AlexNetなどの重要なネットワーク ・大量のデータ+GPUが学習に大切 コードはこちらから 20