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

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

慶應義塾大学 機械学習基礎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(右図)がオススメ