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

Keio Univ intro to ml 2021 05

Keio Univ intro to ml 2021 05

Transcript

  1. 情報工学科 准教授 杉浦孔明 Email: komei.sugiura@keio.jp Slack: 1_sugiura.komei 慶應義塾大学理工学部 機械学習基礎 第5回

  2. 畳み込みニューラルネット - - 6

  3. 畳み込みニューラルネットの背景と応用 - - 7  畳み込みニューラルネット(convolutional neural network; CNN) 

    画像特有の性質を利用してパラメータを減らし、学習を容易にしたい  画素同士の距離が近いと関係が強く、遠いと関係が弱い  応用例(画像・音声・言語等がある) https://github.com/facebookresearch/detectron2 WaveNet [van den Oord+ 2016]
  4. 画像の行列表現 - - 8  MNISTの場合 画像を28x28の行列 として表現

  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 出力画像 ※カーネルはフィルタとも呼ばれる
  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
  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
  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. ニューラルネットにおける畳み込み 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
  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
  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
  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
  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 出力画像
  14. 畳み込みの直感的な理解: 入力画像中でカーネルと似たパターンを探している - - 18  畳み込み演算=行列の要素ごとの積の和(フロベニウス積)  行列をベクトルとみなした場合の内積 

    →カーネルと似ているパターンであれば出力値が大きい  記号「*」は畳み込みを表す(=行列積ではない) 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 入力 カーネル 入力 カーネル
  15. サイズ3x3のカーネルによる畳み込みの数式表現 - - 19

  16. サイズ3x3のカーネルによる畳み込みの数式表現 - - 20

  17. サイズ3x3のカーネルによる畳み込みの数式表現 - - 21

  18. サイズ3x3のカーネルによる畳み込みの数式表現 - - 22

  19. サイズ3x3のカーネルによる畳み込みの数式表現 - - 23

  20. サイズHxHのカーネルによる畳み込み スライドにおいて、図では入力xカーネル、数式ではカーネルx入力の順番 になっていることがあるので注意 - - 24 出力 入力 カーネル

  21. 3 8 4 6 2 9 2 … 6 

    グレースケール画像  RGB画像 画像のチャネル数 - - 25 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 = =
  22. 入力チャネル数がKの場合: →Kチャネルのカーネルを用意 - - 26 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 入力 カーネル * = * + * =
  23. 入力チャネル数がKの場合: →Kチャネルのカーネルを用意 - - 27 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 入力 カーネル * = * + * =
  24. 入力チャネル数K・出力チャネル数Mの場合: →KチャネルのカーネルをMセット用意 - - 28 3 5 8 9 7

    9 3 2 3 3 1 4 1 5 9 2 6 5 入力 カーネル * = M
  25. 特徴マップとは ↓ 層から 層への結合の場合 29 ↓活性化関数を追加 特徴マップ(feature map) M バイアス

    追加
  26. 畳み込みの図示 - - 30  2チャネルの入力を畳み込みに より3チャネルに変換した例 入力 出力 受容野

  27. 畳み込みの図示 - - 31  2チャネルの入力を畳み込みに より3チャネルに変換した例  上下や直方体で表すこともある 入力

    出力 受容野 チャネル 入力 出力 出力 入力
  28. ストライド(stride) - - 32  精緻に局所構造を捉えたい →1画素ごとにカーネルを適用  大雑把に構造を捉えたい →S画素ごとにカーネルを適用

    S個ごと https://github.com/vdumoulin/conv_arithmetic
  29. パディング(padding) - - 33  畳み込み後に出力のサイズが入 力より小さくなることを避けた い →入力の外周に縁を付加する (=パディング)

  30. パディング(padding) - - 34  畳み込み後に出力のサイズが入 力より小さくなることを避けた い →入力の外周に縁を付加する (=パディング)

     サイズ  Same:入力と同じサイズ  Valid:パディングしない  上下左右で任意の厚さ等  埋める値  ゼロパディング(ゼロ埋め、 zero padding)等 0 0 0 0 … 0 0 0 0 0 0 0 0 3 1 4 1 5 …
  31. dilation - - 35  畳み込み後に出力のサイズが入 力より小さくなることを避けた い →入力の外周に縁を付加する (=パディング)

     dilation: 間隔をあけて(飛び飛 びに)畳み込みを行うことで範 囲を広げる
  32. プーリング(pooling) - - 36  プーリング:画像領域から得た 特徴を代表値にまとめる  平均値プーリング(average pooling)

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

     領域の平均値を代表値とする  最大プーリング(max pooling)  領域の最大値を代表値とする  他に プーリングなどがある 3 2 1 1 4 3 2 0 4 4 2 0 5 3 2 0 3 1 4 1 他のチャネルも 同様に操作
  34. 理解度確認 - - 38

  35. 理解度確認 以下について周りと相談して1分以内に答えよ 1. 汎化誤差とは何か? 2. 検証用集合の英語名は何か? 3. 正則化とは何か? 4. ドロップアウト操作を、出力hjと確率pを用いて表せ

    - - 39
  36. 理解度確認 以下について周りと相談して1分以内に答えよ 1. バッチ学習とミニバッチ学習の違いは何か? 2. エポックとは何か? 3. 大域的極小値と局所的極小値の英語名は何か? 4. RMSpropとAdaDeltaの違いは何か?

    - - 40
  37. 理解度確認 以下について周りと相談して1分以内に答えよ 1. 3層ニューラルネットを構成する層は何と何と何と呼ばれるか? 2. 順伝播型ニューラルネットの英語名は何か? 3. 活性化関数の例を挙げよ。 4. Kクラス分類問題に対する交差エントロピー誤差関数を

    を使って 表せ。 - - 41
  38. 本編に戻る - - 42

  39. CNNの誤差逆伝播法 - - 43  式(8.15)に対応する式  式(8.17)に対応する式

  40. CNNが学習した内容の可視化 - - 44  中間層の出力の可視化  画像から犬 / 猫の識別をする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
  41. CNNが学習した内容の可視化  畳み込み1層目  入力画像 - - 45 https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/first_edition/5.4-visualizing-what-convnets-learn.ipynb

  42. CNNが学習した内容の可視化  最大プーリング1層目  入力画像 - - 46

  43. CNNが学習した内容の可視化  畳み込み2層目 - - 47

  44. CNNが学習した内容の可視化  最大プーリング2層目 - - 48

  45. CNNが学習した内容の可視化  畳み込み3層目 最大プーリング3層目 - - 49

  46. CNNが学習した内容の可視化  畳み込み4層目 最大プーリング4層目 - - 50

  47. CNNが学習した内容の可視化  フィルタの解釈  各フィルタが応答することになっている視覚パターンを表示  空の画像から入力画像に勾配上昇法を適用  特定のフィルタの応答を最大化 

    VGG(代表的なCNNの一種,詳細は後述)の最初の畳み込み4層分 について考える - - 51
  48. CNNが学習した内容の可視化  フィルタに応答しやすい入力画像(=フィルタの特徴) 1層目 2層目 3層目 4層目 - - 52

  49. 代表的なCNN(1)  LeNet [LeCun+ 1989]  畳み込み層( )  サブサンプリング層(

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

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

    )  全結合層( )  VGG16  畳み込み13層 + 全結合3層  VGG19  畳み込み16層 + 全結合3層(下図)  ILSVRC 2014で2位(誤答率7.3%) - - 55
  52.  GoogLeNet [Szegedy+ 2015]  畳み込み層( )  局所応答正規化層( )

     最大プーリング層( )  インセプションモジュール( )  ILSVRC 2014でトップ(誤答率6.7%) 代表的なCNN(4) - - 56
  53.  GoogLeNet [Szegedy+ 2015]  インセプションモジュール( )  パラメータ数はAlexNetの1/12 代表的なCNN(4)

    3×3 MaxPool 5×5 Conv 1×1 Conv 3×3 Conv 1×1 Conv 1×1 Conv 1×1 Conv 深度連結 - - 57
  54.  ResNet [He+ 2016]  入力と出力を直接接続する経路をもつ残差ユニットを積み上げた 残差ネットワーク(residual network)を提案  ILSVRC

    2015でトップ(誤答率3.57%)  残差ユニット  ILSVRC 2015のResNet(152層)では 代表的なCNN(5) … 残差ユニット - - 58
  55. 代表的なCNN(5) - - 59

  56. 補足 - - 60

  57. 補足:畳み込みに関する紛らわしいネーミング - - 61 ①ニューラルネットの畳み込み ②(数学・信号処理等の)一般的 な畳み込み ③相互相関 ②において としたもの

    ①と正負が逆 画像なら
  58. 補足:畳み込みに関する紛らわしいネーミング - - 62 ①ニューラルネットの畳み込み ②(数学・信号処理等の)一般的 な畳み込み ③相互相関 ②において としたもの

     ポイント  ニューラルネットの畳み込み は、相互相関の定義に近い  の順番を入れ替えれば、 一般的な畳み込みと等価  DNNの慣習に従い、本講義で は①を「畳み込み」と呼ぶ ①と正負が逆 画像なら
  59. 補足:畳み込みニューラルネットの歴史 - - 63 1959年 ヒューベル(Hubel)とウィーゼル(Wiesel)が、「ある角度の線分 にだけ反応し他の角度に反応しない細胞」がネコの視覚野に存 在することを発見 →一連の研究により、ノーベル賞受賞 1979年

    Fukushimaがネオコグニトロン(最初の畳み込みニューラル ネット)を提案 1989年 LeCunが誤差逆伝播法を適用した畳み込みニューラルネットを 提案 2012年 AlexNet [Krizhevsky+ 2012]がILSVRCでトップの成績を収める
  60. 本講義全体の参考図書  ★機械学習スタートアップシリーズ これならわかる深層学習入門 瀧 雅人著 講談社(本講義では、異なる表記を用いることがあるので注意)  ★Dive into

    Deep Learning (https://d2l.ai/)  画像認識 (機械学習プロフェッショナルシリーズ) 原田達也著 講談 社  深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ) 坪井祐太、海野裕也、鈴木潤 著、講談社  東京大学工学教程 情報工学 機械学習 中川 裕志著、東京大学工学教 程編纂委員会編 丸善出版  パターン認識と機械学習 上・下 C.M. ビショップ著 丸善出版 - - 64
  61. 参考文献 - - 65 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.