Upgrade to Pro — share decks privately, control downloads, hide ads and more …

慶應義塾大学 機械学習基礎07 畳み込みニューラルネット

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

慶應義塾大学 機械学習基礎07 畳み込みニューラルネット

More Decks by Semantic Machine Intelligence Lab., Keio Univ.

Other Decks in Technology

Transcript

  1. 本講義の到達目標と今回の授業の狙い - - 4 本講義の到達目標 ▪ DNNの基礎理論と実装の関係を理解する ▪ 種々のDNNをコーディングできる 今回の授業の狙い

    ▪ 畳み込みニューラルネットの基礎を習得する ▪ 出席確認: K-LMS上の機械学習基礎のMainページへアクセス
  2. 背景 - - 6 ▪ 画像を全結合層(fully-connected layers)のみで扱おうとするとパラ メータ数が増えすぎる 学習が遅い ▪

    例:65536×2000+バイアス=1億個以上 256 256 65536 2000 1億個以上のパラメータ
  3. ★畳み込みニューラルネット (convolutional neural network; CNN) - - 7 ▪ 画像特有の性質を利用してパラメータを減らし、学習を容易にしたい

    ▪ 画素同士の距離が近いと関係が強く、遠いと関係が弱い ▪ 応用例(画像・音声・言語等がある) https://github.com/facebookresearch/detectron2 WaveNet [van den Oord+ 2016]
  4. 畳み込みニューラルネットの歴史 - - 8 1959年 ヒューベル(Hubel)とウィーゼル(Wiesel)が、「ある角度の線分 にだけ反応し他の角度に反応しない細胞」がネコの視覚野に存 在することを発見 →一連の研究により、ノーベル賞受賞 1979年

    Fukushimaがネオコグニトロン(最初の畳み込みニューラル ネット)を提案 1989年 LeCunが誤差逆伝播法を適用した畳み込みニューラルネットを 提案 2012年 AlexNet [Krizhevsky+ 2012]がILSVRC(→第2回資料)でトッ プの成績を収める
  5. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 出力画像 ※カーネルはフィルタとも呼ばれる パラメータ9個
  6. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 出力画像 2x3 0x1 -2x4 0x1 2x5 0x9 -2x2 0x6 2x5 パラメータ9個
  7. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 出力画像 2x3+0x1+(-2)x4 +0x1+2x5+0x9 -2x2+0x6+2x5 パラメータ9個
  8. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 出力画像 パラメータ9個
  9. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 出力画像 2x1 0x4 -2x1 0x2 2x6 0x5 -2x8 0x9 2x7 パラメータ9個
  10. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 8 出力画像 2x4 0x1 -2x5 0x6 2x5 0x3 -2x9 0x7 2x9 パラメータ9個
  11. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 8 22 出力画像 2x9 0x2 -2x6 0x5 2x8 0x9 -2x3 0x2 2x3 パラメータ9個
  12. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 8 22 24 出力画像 2x2 0x6 -2x5 0x8 2x9 0x7 -2x2 0x3 2x8 パラメータ9個
  13. ニューラルネットにおける畳み込み 3 1 4 1 5 9 2 6 5

    3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 入力画像 カーネル (kernel) 2 0 -2 0 2 0 -2 0 2 10 10 8 22 24 22 -4 12 10 出力画像 パラメータ9個
  14. CNN explainer [Wang+ TVCG20]を使ってみよう - - 20 https://poloclub.github.io/cnn- explainer/ 【グループワーク】画像を入力し

    てみよ。例えば、人間にはピーマ ンに見えるが「bell pepper」に分 類されない画像を探してみよ(3 分)。 ▪ 使い方の説明(高校生向け) ▪ https://speakerdeck.com/k eio_smilab/ysfh-science- literacyi- text2image?slide=19
  15. 畳み込みの直感的な理解: 入力画像中でカーネルと似たパターンを探している - - 27 ▪ 畳み込み演算=行列の要素ごとの積の和(フロベニウス積) ▪ 行列をベクトルとみなした場合の内積 ▪

    →カーネルと似ているパターンであれば出力値が大きい ▪ 記号「*」は畳み込みを表す(=行列積ではない) 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 * * = 3 = 1 入力 カーネル 入力 カーネル
  16. 3 8 4 6 2 9 2 … 6 画像のチャネル数

    - - 28 ▪ グレースケール画像 ▪ RGB画像 8 9 7 9 3 9 2 … 2 3 1 4 1 5 9 2 6 5 3 5 … 4 3 3 8 3 2 7 9 5 0 2 … 3チャネル (K=3) 1チャネル (K=1) R G B = =
  17. 入力チャネル数がKの場合: →Kチャネルのカーネルを用意 - - 29 3 5 8 9 7

    9 3 2 3 3 1 4 1 5 9 2 6 5 1 2 3 4 0 1 2 3 3 1 4 1 5 9 2 6 5 0 1 2 3 3 5 8 9 7 9 3 2 3 1 2 3 4 86 119 67 79 入力 カーネル * = * + * =
  18. 入力チャネル数がKの場合: →Kチャネルのカーネルを用意 - - 30 3 5 8 9 7

    9 3 2 3 3 1 4 1 5 9 2 6 5 1 2 3 4 0 1 2 3 3 1 4 1 5 9 2 6 5 0 1 2 3 3 5 8 9 7 9 3 2 3 1 2 3 4 入力 カーネル * = * + * =
  19. パディング(padding) - - 37 ▪ 畳み込み後に出力のサイズが入 力より小さくなることを避けた い →入力の外周に縁を付加する (=パディング)

    ▪ サイズ ▪ Same:入力と同じサイズ ▪ Valid:パディングしない ▪ 上下左右で任意の厚さ等 ▪ 埋める値 ▪ ゼロパディング(ゼロ埋め、 zero padding)等 0 0 0 0 … 0 0 0 0 0 0 0 0 3 1 4 1 5 …
  20. プーリング(pooling) - - 39 ▪ プーリング:画像領域から得た 特徴を代表値にまとめる ▪ 平均プーリング(average pooling)

    ▪ 領域の平均値を代表値とする 3 2 1 1 4 3 2 0 4 4 2 0 5 3 2 0 3 1 4 1 他のチャネルも 同様に操作
  21. プーリング(pooling) - - 40 ▪ プーリング:画像領域から得た 特徴を代表値にまとめる ▪ 平均プーリング(average pooling)

    ▪ 領域の平均値を代表値とする ▪ 最大プーリング(max pooling) ▪ 領域の最大値を代表値とする ▪ 大域的平均プーリング(global average pooling; GAP) ▪ 各チャネルを平均 ▪ 出力層付近での使用が多い 3 2 1 1 4 3 2 0 4 4 2 0 5 3 2 0 3 1 4 1 他のチャネルも 同様に操作 3 2 1 1 0 1 1 2 1 0 1 3 2 2 1 4 5 1 1 4 3 1 1 5 2 2 1 0 1 3 2 2 1 4 5 1 1 4 3 1 1 2
  22. CNNが学習した内容の可視化 - - 46 中間層の出力の可視化 ▪ 画像から犬 / 猫の識別をするCNNを例に ▪

    畳み込み層( ) ▪ 最大プーリング層( ) ▪ 全結合層( ) 148×148×32 72×72×64 34×34×128 15×15×128 74×74×32 36×36×64 17×17×128 7×7×128 6272 512 150×150×3 1 [Chollet 2017] https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/first_edition/5.2-using-convnets-with-small-datasets.ipynb
  23. CNNが学習した内容の可視化 - - 53 フィルタの解釈  各フィルタが応答することになっている視覚パターンを表示 ▪ 空の画像から入力画像に勾配上昇法を適用 

    特定のフィルタの応答を最大化  VGG(代表的なCNNの一種,詳細は後述)の最初の畳み込み4層分 について考える
  24. 代表的なCNN(1) - - 55 LeNet [LeCun+ 1989] ▪ 畳み込み層( )

    ▪ サブサンプリング層( ) ▪ 全結合層( ) ▪ 活性化関数はシグモイド関数 ▪ 手書き数字認識(MNIST)で成功をおさめる
  25. 代表的なCNN(2) - - 56 AlexNet [Krizhevsky+ 2012] ▪ 畳み込み層( )

    ▪ 最大プーリング層( ) ▪ 局所応答正規化層( ) ▪ 全結合層( ) ▪ 活性化関数はReLU ▪ Dropout / データ拡張の正則化テクニックを使用 ▪ ILSVRC* 2012でトップ(誤答率16.4%) * ImageNet Large Scale Visual Recognition Challenge
  26. 代表的なCNN(3) - - 57 VGG [Simonyan+ 2015] ▪ 畳み込み層( )

    ▪ 最大プーリング層( ) ▪ 全結合層( ) ▪ VGG16  畳み込み13層 + 全結合3層 ▪ VGG19  畳み込み16層 + 全結合3層(下図) ▪ ILSVRC 2014で2位(誤答率7.3%)
  27. 代表的なCNN(4) - - 58 ResNet [He+ 2016](レズネットと発音) ▪ 入力と出力を直接接続する経路をもつ残差ブロックを積み上げた 残差ネットワーク(residual

    network: ResNet)を提案 ▪ 勾配消失問題を防ぐ ▪ ILSVRC 2015でトップ(誤答率3.57%) ▪ res-block ▪ ▪ ▪ ILSVRC 2015のResNet(152層)では  に「足しこむ量=残差」を 畳み込み層で学習 … 畳み込み層 res-block
  28. 本講義全体の参考図書 - - 60 ▪ ★機械学習スタートアップシリーズ これならわかる深層学習入門 瀧雅人著 講談 社(本講義では、異なる表記を用いることがあるので注意)

    ▪ ★Dive into Deep Learning (https://d2l.ai/) ▪ 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之著 講談社 ▪ ディープラーニングを支える技術 岡野原大輔著 技術評論社 ▪ 画像認識 (機械学習プロフェッショナルシリーズ) 原田達也著 講談社 ▪ 深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ) 坪井祐太、 海野裕也、鈴木潤 著、講談社 ▪ 東京大学工学教程 情報工学 機械学習 中川 裕志著、東京大学工学教程編纂委員会 編 丸善出版 ▪ パターン認識と機械学習 上・下 C.M. ビショップ著 丸善出版
  29. 参考文献 - - 61 1. https://github.com/vdumoulin/conv_arithmetic 2. https://www.youtube.com/watch?v=vU-JfZNBdYU 3. Chollet,

    F. (2017). Deep Learning with Python. MANNING. 4. Lecun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), pp. 2278– 2324. 5. Krizhevsky, A., Sutskever, I., & Hinton, G. (2012). ImageNet Classification with Deep Convolutional Neural Networks. In Proc. NIPS, pp. 1097–1105. 6. Simonyan, K. & Zisserman, A. (2015). Very Deep Convolutional Networks for Large-Scale Image Recognition. In Proc. ICLR, pp. 1–14. 7. Szegedy, C. et al. (2015). Going Deeper with Convolutions. In Proc. CVPR, pp. 1–9. 8. He, K., Zhang, X., Ren, S. & Sun, J. (2016). Deep Residual Learning for Image Recognition. In Proc. CVPR, pp. 770–778.
  30. 実習 - - 64 実習の目的 ▪ コーディングと基礎理論の関係を学ぶ 実習課題の場所 ▪ K-LMSから辿る

    実習に関する質問 ▪ ChatGPTに説明させる ▪ 教科書で調べる・検索・周囲と相談(私語禁止ではありません) ▪ 上記で解消しなければ挙手→TAが対応
  31. 補足:畳み込みに関する紛らわしいネーミング - - 67 ①ニューラルネットの畳み込み ②(数学・信号処理等の)一般的 な畳み込み ③相互相関 ②において としたもの

    ▪ ポイント ▪ ニューラルネットの畳み込み は、相互相関の定義に近い ▪ の順番を入れ替えれば、 一般的な畳み込みと等価 ▪ DNNの慣習に従い、本講義で は①を「畳み込み」と呼ぶ ①と正負が逆 画像なら
  32. 代表的なCNN(4) - - 68 GoogLeNet [Szegedy+ 2015] ▪ 畳み込み層( )

    ▪ 局所応答正規化層( ) ▪ 最大プーリング層( ) ▪ インセプションモジュール( ) ▪ ILSVRC 2014でトップ(誤答率6.7%)
  33. 代表的なCNN(4) - - 69 GoogLeNet [Szegedy+ 2015] ▪ インセプションモジュール( )

    ▪ パラメータ数はAlexNetの1/12 3×3 MaxPool 5×5 Conv 1×1 Conv 3×3 Conv 1×1 Conv 1×1 Conv 1×1 Conv 深度連結
  34. オススメの勉強方法 - - 71 ▪ コード・数式を見るだけの勉強法は 効率が悪い ▪ コードは自分で種々の変更を加えて 動かすことが重要

    ▪ 例:100を101に変えるとエラーが 起こるので修正する ▪ 数式は手書きで何度も写していると 意味がわかってくることがある ▪ iPadとApple Pencilを持っていれば、 GoodNotes(右図)がオススメ