>100 Views
June 11, 26
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2026前期輪読会 #8 ゼロから作るDeep Learning 7.4-7.8 京都大学 総合人間学部 B2 本川玄人 0
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 1
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 2
7.4 Convolution/Poolingレイヤの実装 CNNのデータは4次元配列 ここからCNNの実装を行うが、 CNNでは高さ・横幅・チャンネル・データ数の 4次元のデータを扱う(4次元配列) … 演算処理を簡単にするためにim2colという関数を導入 (素朴に考えるとfor文の入れ子構造になりNumPyでは処理が遅くなる) 3
7.4 Convolution/Poolingレイヤの実装 Im2colによる展開 … 3次元の同じフィルターが適用されるデータを 取り出して1行に展開 各3次元データに同様の操作を繰り返して2次 元のデータに変換する … Im2colによって 4次元のデータ→2次元のデータに変換 ✓高度に最適化された行列計算のライブラリを利用でき、計算が高速 ✗通常よりも多くのメモリを使用 4
7.4 Convolution/Poolingレイヤの実装 Convolutionレイヤの実装 im2colを使ってforward処理を実装 backward処理ではim2colの逆処理を行う関数、 col2imを使う必要あり 5
7.4 Convolution/Poolingレイヤの実装 Poolingレイヤの実装 プーリング層はチャンネル方向には独立 →チャンネルごとに展開 Poolingレイヤは3段階の流れで実装(forward) 1. 入力データの展開 2. 行ごとに最大値を求める(Maxプーリング) 3. 適切な出力サイズに整形 6
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 7
7.5 CNNの実装 SimpleConvnetの実装 実装したConvolutionレイヤ,Poolingレイヤを使って下図のような単純なCNNを実装する (もっと層の深いCNNが普通) Conv ReLU Pooling Affine ReLU Affine Softmax 8
7.5 CNNの実装 SimpleConvNetの初期化の実装 引数の紹介 ・input_dim - 入力データの次元 ・conv_param - 畳み込み層のハイパーパラメータ ・hidden_size - 隠れ層のニューロン数 ・output_size - 出力層のニューロン数 ・weight_init_std – 初期化の際の重みの標準偏差 重みの初期化を行い、レイヤを生成 9
7.5 CNNの実装 学習に関する実装 推論、損失関数の計算、勾配の計算を行う関数も同様に実装 10
7.5 CNNの実装 MNISTデータセットの識別 MNISTデータセットを使って性能を検証 →約99%の高い精度を実現 CNNは画像認識課題において優秀! 11
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 12
7.6 CNNの可視化 フィルターを可視化する 今回学習したCNNのフィルターは サイズ5×5、チャンネル数1 →グレースケール画像として可視化できる 小さな値を黒、大きな値を白として正規化 学習後のフィルターは規則性のある画像に変化 ・白から黒へグラデーションを伴って変化するフィルター ・塊のある領域(blob)を持つフィルター 13
7.6 CNNの可視化 フィルターは何を見ているのか フィルターはそれぞれの反応に特性がある エッジ…色が変化する境目 ブロブ…局所的に塊のある領域 グラデーションの傾きによって異なる方位のエッジに反応 第1層目では単純な情報が抽出されて後ろの層に渡している! 14
7.6 CNNの可視化 階層構造による情報抽出 ここまでは1層目のフィルターのみに注目 →より深い層ではどのような情報が抽出されるのか? AlexNet(8層のCNN)を調べると ・層が深くなるにつれてより抽象化された情報が抽出 ・エッジ→テクスチャ→物体のパーツ、と反応の対象が変化 15
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 16
7.7 代表的なCNN LeNetの紹介 CNNに関する重要なネットワークを2つ紹介 ・LeNet ・AlexNet ※最近の代表的なCNNモデルは別の本で学ぶ必要あり LeNet : CNNの元祖(1998年) 今回扱ったCNNと比較すると ・シグモイド関数を使用 ・画像サイズを縮小するプーリング層 などの違いがある 17
7.7 代表的なCNN AlexNetの紹介 AlexNetが画像認識コンペで活躍 →ディープラーニング・ブームを巻き起こした AlexNetの特徴 ・ReLUを使用 ・LRN・Dropoutを導入 大量のデータ+GPUの使用による計算スピードの向上が原動力に GPU間で異なる特徴を抽出 18
アジェンダ ◼ 7.4 Convolution/Poolingレイヤの実装 ◼ 7.5 CNNの実装 ◼ 7.6 CNNの可視化 ◼ 7.7 代表的なCNN ◼ 7.8 まとめ 19
7.8 まとめ ・CNNではこれまでの全結合層だけでなく 畳み込み層とプーリング層が加わる ・畳み込み層、プーリング層はim2col関数で効率的に計算 ・CNNは層が深くなるにつれて高度な情報を抽出 ・LeNet、AlexNetなどの重要なネットワーク ・大量のデータ+GPUが学習に大切 コードはこちらから 20