Slide 1

Slide 1 text

Notes of “Deep Learning” An MIT Press book in preparation Chapter 9 Convolutional Networks http://www.deeplearningbook.org/version-2016-01-18/contents/convnets.html @smly / 2016-01-18

Slide 2

Slide 2 text

REMINDER 9章は Convolutional Networks の基本的な構成要素を解説する. 資料は 1/18 時点の draft version を使っているため 最新版と内容に違いがあるかもしれない.

Slide 3

Slide 3 text

AGENDA それぞれの節をおおざっぱに分類すると以下のような話題に分かれる. - 9.1 The Convolution Operation - 9.2 Motivation - 9.3 Pooling - 9.4 Convolution and Pooling as a Infinitely Strong Prior - 9.5 Variants of the Basic Convolution Function - 9.6 Structured Outputs - 9.7 Data Types - 9.8 Efficient Convolution Algorithms - 9.9 Random or Unsupervised Features - 9.10 The Neuroscientific Basic for Convolutional Networks - 9.11 Convolutional Networks and the History of Deep Learning 基礎的な話題 詳細・発展的な話題 歴史背景などの補⾜

Slide 4

Slide 4 text

9 Convolutional Networks Convolutional Networks = 1 つ以上のレイヤーで (⼀般的な⾏列積の代わりに) Convolution の操作を使っているネットワーク この章のゴールは Convolutional networks が提供するツールの種類を記述す ること. Chapter 11 “Practical Methodology” でどのような事象に対してどのツール を選択するのか⼀般的なガイドラインを記述する.

Slide 5

Slide 5 text

9.1 The Convolutional Operation Convolution は2つの関数に対するオペレーター 例: 宇宙船の位置をレーザーによってトラッキングすることを考える. レーザーを single output として表す.時間 t における宇宙船の位置. この が多少 noisy であったら? 正確に推定するには? x(t) = 10^6+4 km x(t+1) = 10^6+9 km x(t+2) = 10^6+2 km

Slide 6

Slide 6 text

9.1 The Convolutional Operation Convolution は2つの関数に対するオペレーター 例: 宇宙船の位置をレーザーによってトラッキングすることを考える. レーザーを single output として表す.時間 t における宇宙船の位置. この が多少 noisy であったら? 正確に推定するには? ࣌ࠁUΑΓաڈͷ࣌ࠁUBʹ͓͚Δ݁Ռ΋࢖͏ɽ Ӊ஦ધͷҐஔY B ͱॏΈX UB ͷੵΛੵ෼ɽ εϜʔζͳਪఆ݁ՌΛ༩͑Δɽ ୯७Խͯ͠ࠨهͷΑ͏ʹهड़͢Δɽ

Slide 7

Slide 7 text

9.1 The Convolutional Operation 補⾜: Convolutional Operation を可視化した例. 引数がマイナスなので関数形が flip している.

Slide 8

Slide 8 text

9.1 The Convolutional Operation PQFSBUPS ͭͷؔ਺ʹର͢Δԋࢉ Operator のそれぞれの⽤語: LFSOFM ॏΈ 'FBUVSFNBQ ग़ྗ JOQVU ೖྗ 実際にレーザーで計測しようとすると,秒間数回の計測を離散的に⾏う. 離散的な Convolution も定式化:

Slide 9

Slide 9 text

9.1 The Convolutional Operation 機械学習の応⽤では多次元であることが多い (例: Input が画像であれば 2 次) Convolution は commutative (交換可能) なので 以下のように書いても結果は変わらない:

Slide 10

Slide 10 text

9.1 The Convolutional Operation Convolution に似た関数として Cross-correlation がある. Convolution の式: Cross-Correlation の式: (多くの階学習ライブラリではこれを Convolution と呼び実装している) Kernel が flipping していない 本書では実装に習い,両者を区別せず convolution と呼ぶ. (flip が重要な意味を持つときだけ区別する)

Slide 11

Slide 11 text

9.1 The Convolutional Operation “Visualization of Cross Correlation and Convolution with Matlab” https://www.youtube.com/watch?v=Ma0YONjMZLI

Slide 12

Slide 12 text

9.1 The Convolutional Operation 機械学習の⽂脈では,学習アルゴリ ズムがカーネルの適切な値を学習す る. Convolution が単独で機械学習に使 われることは稀で,他の関数と同時 に使われる.その場合も kernel を flip するか否かに注意を払う必要は ない. flip しないほうの convolution (よく使う) Fig 9.1 は 2-D convolution (kernel-flipping してない) の例.

Slide 13

Slide 13 text

9.2 Motivation Convolution が利⽤している3つの重要なアイディアについて説明 これらが機械学習システムの改善に役⽴っている. 1)  sparse interactions 2)  parameter sharing 3)  equivariant representations

Slide 14

Slide 14 text

9.2 Motivation: Sparse Interactions 伝統的な NN では⾏列積で⼊⼒層と出⼒層の interaction を記述する. (これはすべての出⼒ unit とすべての⼊⼒ unit が作⽤することを意味する) (1, m) Input units ⼀⽅で,Convolutional networks は sparse な interaction を持つ. これは⼊⼒より⼩さな kernel によって得られる性質である. (m, n) Parameters (1, n) Output units = I H S m inputs, n outputs ͷ৔߹

Slide 15

Slide 15 text

9.2 Motivation: Sparse Interactions Fig 9.2 は⼊⼒層から出⼒層への interaction を⼆部グラフで表現したもの. (上図) は Convolutional Networks (width=3) の場合. (下図) は伝統的な Neural Networks (⾏列積) の場合. 通常の⾏列積の場合は O(m n) runtime connection を k 個に制限する場合は O(k n) runtime に減らすことができる.

Slide 16

Slide 16 text

9.2 Motivation: Sparse Interactions Fig 9.3 出⼒から逆⽅向にたどり,ある出⼒の unit に影響を与える⼊⼒ units のことを Receptive field と呼ぶ. (上図) … s3 の Receptive field は {x2, x3, x4} となる. (下図) … s3 の Receptive field は ⼊⼒層のすべての units

Slide 17

Slide 17 text

9.2 Motivation: Sparse Interactions Fig 9.4 レイヤーを増やした時の 例.出⼒層の g3 の Receptive field は⼊⼒全体となっている. レイヤーを増やすことによって sparse connectivity であっても 全ての⼊⼒層の units に影響を受 けるネットワークを作ることがで きる. Receptive field が⼀部の⼊⼒にのみ影響されるのであれば,⼊⼒層の⼀ 部の位置しか扱わない単純な関数しか表現できない? → 層を増やす

Slide 18

Slide 18 text

9.2 Motivation: Parameter Sharing Parameter sharing は同じパラメーターをモデル内の別の関数にも使うこと. CNN のパラメーターの数を調整する仕組み. 伝統的な Neural networks では,重み⾏列(パラメーター)の各要素は出⼒ レイヤーを計算するときに,ただ⼀度だけ使われる (なので tied weight であ ると⾔う). ⼀⽅で,Convolutional networks は kernel の構成要素が⼊⼒の各位置で使 われる.Parameter sharing はすべての位置で別々のパラメーター集合を学 習するのではなく,単⼀のパラメーター集合を学習するということ.これは Forward propagation の runtime に対して影響を与えない ( O(k n) ) が, モデルパラメーターの容量を⼤きく減らすことができる.

Slide 19

Slide 19 text

9.2 Motivation: Parameter Sharing Fig 9.5 Parameter sharing ⿊⽮印はある特 定のパラメーターを使った接続を表している. (上図) … 3 つの接続で構成される Kernel の 中央に注⽬する.Parameter sharing によっ て,単⼀のパラメーターが⼊⼒のすべての位 置で使われる. (下図) … fully-connected model の中央の 要素について注⽬している.このパラメー ターは parameter sharing されず⼀度だけ 使われる. 特に定義を書いてないけどユニークな個々の parameter を持つ kernel を filter という. Ref: http://cs231n.github.io/convolutional-networks/

Slide 20

Slide 20 text

補⾜: 2-D Input での例 * Ref: http://cs231n.github.io/convolutional-networks/ 2-D Input の例で各⼊⼒位置で同⼀のパラメーターが使われていることをよく 可視化しているデモ.JavaScript で動作.

Slide 21

Slide 21 text

9.2 Motivation: Parameter Sharing Fig 9.6 Sparse connectivity と Parameter sharing がエッジ検出 のための線形関数の計算効率が 劇的に改善する事例. ⼊⼒画像は 320x280. 出⼒は 319x280. 2つの画像の変換は 2 つの要素から なる convolution kernel による.319x280x3=267,960 floating point operations を convolution を使って計算する. 同じ操作を⾏列積(伝統的 NN)でやるなら 320x280x319x280 op. width=2 Convolution kernel Input 2 pixels 2 ピクセルとカーネルの内積で 2 ops. 結果を⾜し合わせるために 1 op. 合計 3 ops.

Slide 22

Slide 22 text

9.2 Motivation: Equivariant Representation 特定の Parameter sharing は equivariance と呼ばれる性質を持つレイ ヤーを発⽣させる.関数 f(x) が equivariant であるとは,ある関数 g に対 して以下が成⽴する場合のこと: f ( g ( x )) = g ( f ( x )) 具体的な例: 1 pixel 右に⼊⼒画像をシフトする変換を g とした場合, Convolution function f(x) は g に対して equivariant である. 同じ局所的な関数が⼊⼒のどこの位置でも有⽤である時,この equivariance の性質は有⽤.例えば,画像を処理するときに convolutional network の⼀ 番⽬のレイヤーが edge を検出することは画像を処理する場合など. ただし Convolution はスケールや回転などの変換などに対して equivariance ではないので,他のメカニズムが必要になる(→ 9.3 Pooling へ続く)

Slide 23

Slide 23 text

9.3 Pooling: Typical CNN layers Terminology の話. Convolutional Network の構成要素の呼び⽅が⼆通りある (Fig 9.7). 3 2 1 1. Convolution stage (affine trans.) 2. Detector stage (nonlinearity) 3. Pooling stage この 3 つ の stage をセットで 1つ の Convolutional Layer と呼ぶ場合 (左) と分けて呼ぶ場合 (右) がある. 本書では (左) の呼び⽅を採⽤.

Slide 24

Slide 24 text

9.3 Pooling: Max Pooling Pooling function は NN の出⼒を周辺の出⼒を統計値でまとめ,置き換える. 例: max pooling operation (Fig 9.8) 近傍の最⼤の出⼒を結果として返す. 他にも avg, L2, weighted-avg など… (上図) … Pooling への⼊⼒とその出⼒ (下図) … ⼊⼒を 1 ピクセル右にずらした (下図) Detector stage の⼊⼒が 1 つずれた場合でも Max Pooling Operation を適⽤した場合は 2 つの位置の値が変化しない. Pooling は表現⼒を invariant にする. invariant = ⼊⼒に少量の変換を加えたとき に同じ位置の output はほとんど変化しない という性質.

Slide 25

Slide 25 text

9.3 Pooling: Invariance 「どの位置に特徴が表現されているのか」正確に把握するのではなく, 「特徴が表現されているのか否か」がより重要である場合は, 局所的な変換に対して Invariance であることが⾮常に重要. 例: 画像に顔があるかどうか判断する場合を考える. 「ピクセル単位で正確に⽬の位置」を知っている必要はない. 「顔の右側と左側に⽬がある」ことを知っていることが必要. (逆に) 特徴の位置が保存されていることが重要な,他の⽂脈の例: 2 つのエッジが特定の⾓度で重なる⾓を⾒つけたいとき. 2 つのエッジが重なることを検査するために, エッジの位置が保たれている必要がある. = invariant であることが重要ではない. Invariant = 少量の変更に対して出⼒が変化しないという性質.

Slide 26

Slide 26 text

9.3 Pooling: Learned Invariances Fig 9.9. Pooling unit が⼊⼒に対する変換に対して Invariance となるよう学習できることを説明する例. (左図) やや左回転ぎみの⼊⼒に対して,⼀番左側の Detector unit 1 が⼤きな反応を返す.Detector stage の 3 つの unit に対して Pooling unit が最⼤ 値をとるので Detector unit 1 が出⼒する⼤きな反 応を Pooling unit で出⼒することができる. (右図) やや右回転ぎみの⼊⼒に対して,⼀番右側の Detector unit 3 が (同⽂)

Slide 27

Slide 27 text

9.3 Pooling: Pooling with downsampling Pooling は whole neighborhood 上のレスポンスを集約する.なので detector units より少ない pooling units を使う (downsampling). これはネットワークの計算効率も改善する.パラメーターを保存するためのメ モリ容量の削減にもなる. stride between pools of 2. a pool width of 3 Fig 9.10 downsampling の例を紹介.

Slide 28

Slide 28 text

Fig 9.11: 完全な CNN の構造 の例 (shallow だし stride も 実⽤的な値ではない) (左) ⼀般的な CNN. 最後 2 層 で出⼒を vector に flatten out して fully-connected layer で学習している. (中) filter のサイズを 3x3 grid に変えて pooling する点 が異なる(特殊型). (右) fully-connected layer な しで学習する.最後の Layer は class につき 1 feature map.

Slide 29

Slide 29 text

補⾜: 実践的な CNN の実装例 from lasagne.layers.dnn import Conv2DDNNLayer as Conv from lasagne.layers.dnn import Pool2DDNNLayer as Pool from lasagne.layers import batch_norm nfilt = 32 l = InputLayer((batch_size, 3, input_width, input_height)) l = batch_norm(Conv( l, nfilt, 2, stride=2, nonlinearity=rectify, W=GlorotUniform(gain='relu'))) for _ in range(5): if nfilt >= 1024: nfilt = 1024 l = batch_norm(Conv( l, nfilt, 3, stride=1, pad=0, nonlinearity=rectify, W=GlorotUniform(gain='relu'))) l = Pool(l, 2, stride=2) nfilt *= 2 Lasagne では Layer object をネストさせることで NN を構成する. Theano expression を返す helper function を import して コーディングすることで NN を 扱ったりカスタマイズする(学習 部分や評価部分など). 右のコードはコンテストで⼊賞し たときに使ったコードの⼀部.

Slide 30

Slide 30 text

9.4 Convolution and Pooling as an Infinitely Strong Prior Prior が強いならパラメーターの収束を決める上で強く働く. 無限に強い Prior はパラメーターを 0 に固定して, データが与えられてもパラメーターの値の調整を完全に禁⽌する. 弱い Prior ⾼いエントロピーの事前分布(分散の⾼いガウス分布) 強い Prior 低いエントロピーの事前分布(分散の低いガウス分布) Convolution Networks を Prior (ref: Sec. 5.2) によって理解する話.

Slide 31

Slide 31 text

9.4 Convolution and Pooling as an Infinitely Strong Prior 「Convolutional net」を「fully-connected net + 無限に強い Prior」として イメージすると,無限に強い Prior によって Convolution layer と Pooling の機能を説明することができる. ⇒ Convolution と Pooling は underfitting(overfitting の逆パターンでバイ アスが⼤きためにデータに適合できないという問題)を起こしうる Convolution layer 学習すべき関数は局所的な相互作⽤であり変換に対して equivariant である Pooling Pooling を使うことは(特定の width の detector units のみを使うことで⼩さな変換に対して invariant にすべき という)無限に強い Prior である

Slide 32

Slide 32 text

9.5 Variants of the Basic Convolution Function: Notation 実践的に使われている Convolution function とその詳細や性質を紹介. Convolution を定式化する.画像を⼊⼒として考える場合, カラーの画像であれば RGB の 3 つのチャンネルを持つ. 空間座標とチャンネルで Convolution の⼊出⼒は 3-D tensors となる. (バッチを作成して学習するときには 4-D tensors として扱うことになる) Kernel の記法は以下の通り: Ki,j,k,l Kernel は異なるチャンネル間 も計算するため 4-D tensor Mark Description 出⼒のチャンネル (⼊⼒の) チャンネル 画像の⾏ 画像の列

Slide 33

Slide 33 text

9.5 Variants of the Basic Convolution Function: Notation Convolution K によって⼊⼒ V から Z が出⼒されるとした場合: (※ K を flipping しない場合) Mark Description 出⼒のチャンネル (⼊⼒の) チャンネル 画像の⾏ 画像の列 Zi,j,k = X l,m,n Vl,j+m 1,k+n 1 Ki,l,m,n -1 の部分は linear algebra notation が 1 から 始まるため.

Slide 34

Slide 34 text

9.5 Variants of the Basic Convolution Function: Stride Convolution K によって⼊⼒ V から Z が出⼒されるとした場合: (※ Kernel flipping しない場合) Zi,j,k = X l,m,n Vl,j+m 1,k+n 1 Ki,l,m,n Zi,j,k = c(K, V, s)i,j,k = X l,m,n [Vl,(j 1)⇥s+m,(k 1)⇥s+n Ki,l,m,n] 縦横の⽅向に s pixels 間隔だけ必要であれば,以下のように低コストな Downsampled convolution 関数 c を定義できる(s は stride と呼ばれる)

Slide 35

Slide 35 text

9.5 Variants of the Basic Convolution Function: Stride Fig 9.12: Convolution with a stride の例 (stride=2) = X l,m,n [Vl,(j 1)⇥s+m,(k 1)⇥s+n Ki,l,m,n] (上) 単⼀の操作による stride ⻑が 2 の Convolution (下) 2 ステップで stride あり の Convolution.数学的には 等価だが計算コストが無駄.

Slide 36

Slide 36 text

9.5 Variants of the Basic Convolution Function: Zero-Padding Convolutional Network 実装にある重要な機能の1つに 「暗黙的に⼊⼒ V を広げるために zero-pad する」というものがある. これがなければ kernel の表現(Convolution の⼊⼒サイズ)がそれぞれ のレイヤーで収縮することになる.Convolution のたびに (kernel-width -1) のサイズに⼩さくなるため.(次スライドで説明) 入力 V 入力 V + zero-padding

Slide 37

Slide 37 text

9.5 Variants of the Basic Convolution Function: Zero-Padding Fig 9.13: ネットワークの表現⼒が著しく 制限されてしまうという問題の例. 図は kernel width=6 の Layers で構成される Convolutional network (1-D の⼊⼒) (上) 暗黙的 zero-padding なしの例. 各 Layer で 5 pixel ずつ表現が収縮する (Convolution の⼊⼒サイズが⼩さくなる) (下) zero-padding ありの例.収縮しないの で任意の深い Convolutional network を作 ることができる

Slide 38

Slide 38 text

9.5 Variants of the Basic Convolution Function: Locally Connected Layers Locally Connected Layers: Convolution を使いたくないけど 局所的に接続しているレイヤーが欲しいというような場合の話. MLP のグラフ内の隣接⾏列は (Conv と) 同じだが,コネクションそれぞ れに個々の weight が付いている場合.Weight を 6-D tensor W として 記述する. Locally connected layer の線形結合部分は以下の式となる: それぞれの空間的な位置でパラメーターを共有しない.

Slide 39

Slide 39 text

9.5 Variants of the Basic Convolution Function: Locally Connected Layers Fig 9.14 は local connections, convolution, full connection を⽐較. Locally connected layers は,それぞれ の特徴が空間上の⼩さな⼀部の機能であ るべきで,同じ特徴が空間上のすべての 場所に現れるとと考えられない場合に役 ⽴つ. 例: 顔の画像であることを伝えたい場合, 画像の下半分で⼝を探す必要だけがある. Locally connected layers Standard convolution Fully connected layers

Slide 40

Slide 40 text

9.5 Variants of the Basic Convolution Function: Tiled convolution Fig 9.15: ⼊出⼒の Channel の対応が取れた Convolutional networks を図⽰したもの. Convolution や Locally connected layers の別バージョンを考える. 少数のチャンネル間の相互作⽤としてモデリングすると パラメータを減らしメモリ消費を減らすことが でき,性能改善にも繋がる. Forward & back-propagation の計算も減らす こともできる.

Slide 41

Slide 41 text

9.5 Variants of the Basic Convolution Function: Tiled convolution Tiled convolution: Convolutional layer と Locally connected layer の間に位置する妥協案. すべての空間的位置で別々の weight を 持つ kernel を学習するのではなく,空 間上を移動するように,順にカーネルの 集合を学習する. Locally connected layers * Tiled convolution Standard convolution

Slide 42

Slide 42 text

9.5 Variants of the Basic Convolution Function: Tiled convolution Tiled convolution は 6-D tensor K で以下のような線形変換をする. Locally connected layers と Tiled convolution layers については Max-Pooling との相互作⽤が興味深い.これらの layers の detector units は (parameter sharing されていない) 異なる filter から発⽣する. もし filter の根本にある特徴が同⼀の異なる変形を検出するように 学習した場合,Max-pooled units はこれらの変換に対して invariant になる.

Slide 43

Slide 43 text

9.5 Variants of the Basic Convolution Function: Training 訓練時は Loss functino J(V, K) の最⼩化を考える. 学習するときは Kernel の weight (=parameters) に対して微分を計算する: Bottom layer でない場合,エラーを下層へ誤差逆伝搬するために V (=observed data) に対する勾配を計算する: (※ 最適化については Sec 8.1 を参照) where

Slide 44

Slide 44 text

9.5 Variants of the Basic Convolution Function: Autoencoder networks Autoencoder networks は⼊⼒を出⼒に複写する feedforward network (ref: Chapter 14) .この単純な例は PCA アルゴリズム.⼊⼒ x から近似的に再構 築した値(r = W^T W x)を出⼒する. このモデルを convolutional にするために,convolutional operation の転置を 適⽤する関数 h を使い,Z と同様の形式で H を hidden unit とする.再構築は 次のように定義できる. → 詳細は Chapter 14 Autoencoder にて.

Slide 45

Slide 45 text

9.6 Structured Outputs Convolutional networks は分類のために class-label を当てるだけではなく high-dimensional な structured object を出⼒するために使うことができる. 典型的なものは標準的な Convolutional layer から出⼒される Tensor を使う⽅法. 例: Pixel-wise labeling ピクセル(i, j) が class k に属する確率を 3D-Tensor S_{i,j,k} で出⼒する. Fig 9.13 のように output 平⾯が input 平⾯より⼩さくなる問題がある. ・Pooling を完全に避ける (Jain+ ʻ07) ・ラベルの粒度を下げる (Pinheiro & Collobert ʼ14, ʻ15)

Slide 46

Slide 46 text

9.6 Structured Outputs: Pixel-wised labeling Pixel-wised labeling のための⽅法のひとつに (Pinheiro & Collobert ʼ14, ʼ15) のアプローチ 画像ラベルの初期の推測を作り,隣接ピクセルと の相互作⽤を使い refinement を何度も繰り返す (Fig9.17) 前の estimation \hat{Y} を使って \hat{Y} を refine する.kernel W が \hat{Y} を畳み込む. 注) recurrent convolutional network と呼ばれるものは (Pinheiro & Collobert ʻ14) の他に (Liang & Hu ʻ15) がある.後者は Layer 間ではなく同⼀ Layer 間に connection を作る. axis=(rows, columns, channels) axis=(rows, columns, classes) convolution kernel kernel tensor kernel

Slide 47

Slide 47 text

9.6 Structured Outputs: Pixel-wised labeling 注) ピクセル単位でラベリングする結果の例.出典は recurrent convolutional neural networks の 論⽂ (Pinheiro & Collobert ʻ14) から.

Slide 48

Slide 48 text

9.7 Date Types Convolutional network に使われる.データは様々な channel を持っている. 表9.1 は異なる次元やチャンネル数におけるデータ型の例. Single channel Multi-channel 1-D ⾳声 (離散時間ごとの波形の強さ) スケルトンアニメーション 2-D フーリエ変換後の⾳声 カラー画像 3-D 容量計測データ (CT スキャンなど) カラービデオ

Slide 49

Slide 49 text

9.7 Date Types ここまでは train と test のすべての事例が同⼀サイズの空間的な次元(縦 横)であるケースについてのみ議論してきた. Convolutional networks の利点は空間的な広がりを変更しながら⼊⼒を処理 することもできる点.このような⼊⼒サイズの定まらない⼊⼒は,⾏列積ベー スの伝統的な NN では表現できない. 例として (width, height) が異なる画像の集まりを考える.Kernel は単純に ⼊⼒サイズに応じて異なる回数だけ適⽤する.Convolution 操作の出⼒も同様 にスケールさせる.時にはネットワークの出⼒も⼊⼒と同様にサイズが変わる. 例えば Pixel-wise Labeling のケースは shape = (width, height, class).

Slide 50

Slide 50 text

9.8 Efficient Convolution Algorithms モダンな Convolutional network の応⽤は 1M 以上の units を含むネット ワークで構成されることが多い.並列計算を活⽤する強⼒な実装については Sec 12.1 にて議論する.適切な convolution algorithm を選択することで convolution をスピードアップすることも可能である. Convolution は Input と Kernel をフーリエ変換で frequency domain に変 換して,両者を point-wise multiplication して,逆フーリエ変換で time domain に戻すことと等価であることが知られている. Ref: “Fast Training of Convolutional Networks through FFTs” http://arxiv.org/abs/1312.5851

Slide 51

Slide 51 text

9.8 Efficient Convolution Algorithms フーリエ変換を使った Convolution は,問題のサイズによっては naïve 実装 より⾼速.d-次の kernel が, d 個の 1 次のベクトルに分離しその外積とし て表現できる場合,separable (分離可能) であると呼ぶ. → この場合 d 個の 1-dim convolution で convolution の計算ができ効率的 (w は各次元の要素数). Naïve convolution … O(w^d) runtime / storage space. Separable convolution … O(wd) runtime / storage space. Ref: “Fast Training of Convolutional Networks through FFTs” http://arxiv.org/abs/1312.5851 Ref: “Fast Convolutional Nets With fbfft: A GPU Performance Evaluation” http://arxiv.org/abs/1412.7580 ※ 層を深くするために⼩さい kernel の Convolution layer を何層も重ねるアプローチがよく使われるので, そういった convolutional networks には使われることがなさそうではある(?) d=2, w=3

Slide 52

Slide 52 text

9.9 Random or Unsupervised Features Convolutional network の訓練のうち (最も計算コストの) ⾼い部分は特徴を 学習すること.出⼒ layer は通常 pooling layers を通過するから⽐較的計算 コストが低い.Convolutional network の訓練の計算コストを減らす⼀つの ⽅法は,unsupervised な⽅法で作った特徴量を使うこと. Ref: “An Analysis of Single-Layer Networks in Unsupervised Feature Learning” (Coates+ 2011) ⽅法①: ランダムに convolution kernel を初期化する ⽅法②: (Coates+ 2011) は ⼩さな patch 画像に対して k-means clustering して得られた centroid を convolution kernel として使う → 他の unsupervised learning approach については Part III

Slide 53

Slide 53 text

9.9 Random or Unsupervised Features 余談: (Coates+ 2011) は当時は state-of-the- art performance であっ たが,現在は deep な CNN が主流. ・ ・ ・ Ref: “An Analysis of Single-Layer Networks in Unsupervised Feature Learning” (Coates+ 2011) Ref: http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html (Coates+ 2011) (Manual)

Slide 54

Slide 54 text

9.9 Random or Unsupervised Features Random filers について. うまく機能している話と unsupervised features を convolution kernel として使い convolutional networks を学習 することで,計算コスト削減で きるなどの話. ここ時間なくてちゃんと読んで ないので重要な話題を⾶ばして いるなら教えて下さい.

Slide 55

Slide 55 text

9.10 The Neuroscientific Basis for Convolutional Networks: History of CNN ヒューベル (David Hubel) とウィーゼル (Torsten Wiesel) の発⾒が deep learning model に⼤きな影響を与えた. 猫の前⽅にあるスクリーンに投影された画像に対して猫の脳の中にあるニュー ロンがどのように反応するかを観察.特定のパターン(傾いた線)のライトに 対してとても強く反応し,他のパターンにはほとんど反応しないようなニュー ロンを発⾒した. (image source: hFp://www.cns.nyu.edu/~david/courses/percepLon/lecturenotes/V1/lgn-V1.html) (image source: hFps://en.wikipedia.org/wiki/David_H._Hubel)

Slide 56

Slide 56 text

9.10 The Neuroscientific Basis for Convolutional Networks: History of CNN ⽬から映像を最初に処理する V1 (1次視覚⽪質; primary visual cortex) と呼 ばれる部位にフォーカスする.Convolutional network layer は V1 の3つの 性質を捉えるようにデザインされている. ① V1 は空間的な map 内に配置されている.2次の構造を持ち,網膜内の画 像の構造をミラーリングしている.網膜の下半分に届いたライトは V1 の対応 する半分のみ影響する ⇒ Convolutional networks は 2-D maps という観点で定義される features を持つことでこの性質を捉えている.

Slide 57

Slide 57 text

9.10 The Neuroscientific Basis for Convolutional Networks: History of CNN ⽬から映像を最初に処理する V1 (1次視覚⽪質; primary visual cortex) と呼 ばれる部位にフォーカスする.Convolutional network layer は V1 の3つの 性質を捉えるようにデザインされている. ② V1 は多くの単純細胞を含む.それらは画像の線形関数のような振る舞いを する ⇒ Convolutional networks の detector units は単純細胞の性質を模倣する ためにデザインされた.

Slide 58

Slide 58 text

9.10 The Neuroscientific Basis for Convolutional Networks: History of CNN ⽬から映像を最初に処理する V1 (1次視覚⽪質; primary visual cortex) と呼 ばれる部位にフォーカスする.Convolutional network layer は V1 の3つの 性質を捉えるようにデザインされている. ③ V1 は多くの複雑型細胞も含む.単純細胞と同じような反応をするが⼩さな シフトなどに対して invariant である ⇒ Maxout units (Goodfellow+ 13a) のような Pooling stage がインスパイ アされた.

Slide 59

Slide 59 text

9.10 The Neuroscientific Basis for Convolutional Networks: Halle Barry neuron (Mammalian vision system について.Convolutional networks との関連 もありますが⼤半は興味ないし関連が薄いと思ったので読み⾶ばす)

Slide 60

Slide 60 text

9.10 The Neuroscientific Basis for Convolutional Networks: Model structure Convolutional networks のモデルの歴史について. •  (Marr & Poggio 1976)… 空間的な位置を越える parameter sharing •  (Fukushima 1980) … 多くのモダンな convolutional network のモデル 構造デザインの要素を併合している.Pooling や Convolution など.ただ し layer-wise unsupervised algorithm に依存しており,モダンな back- propagation や勾配降下法などのアルゴリズムを使っていなかった. •  (Lang & Hinton 1988) … back-propagation を TDNNs に導⼊. •  (LeCun+ 1989) … 画像に応⽤される 2-D convolution

Slide 61

Slide 61 text

9.10 The Neuroscientific Basis for Convolutional Networks: Reverse correlation では個々の細胞は何を検知しているのか.⼈⼯の neural network であれば, どの対応する Convolution layer の channel が反応しているのかを⾒るため に,Convolution kernel の画像を表⽰することができる. biological net では weight ⾃⾝にアクセスできないが,ニューロンに電極を 置いて,動物の網膜の前にサンプルを表⽰して,どのようにそれぞれのサンプ ルがニューロンを活動させるのか記録をとることができる. (これは reverse correlation と呼ばれる) Reverse correlation によると多くの V1 細胞が Gabor (ガボール) 関数に よって記述されるような重みを持っていることを⽰している.

Slide 62

Slide 62 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor function Gabor function は画像内の 2-D point の重みを表現する. 画像を I(x, y) とすると,画像の各位置に対する単純細胞の反応は: w(x,y) は Gabor function の形をとる: where parameters Cosine factor Gaussian factor

Slide 63

Slide 63 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor function x_0, y_0, \gamma は座標系を定義するためのパラメーター. x_0, y_0 で原点をずらして \gamma だけ回転させている. (x, y) の座標系を (xʼ, yʼ) の座標系における関数として⾒る.

Slide 64

Slide 64 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor function ガウス関数は単純細胞が (xʼ, yʼ) が 0 の付近(細胞の受容体の中央付近)での み反応させるためのゲート項としてみなすことができる. スケーリング因⼦ \alpha は反応全体の強さを調整する. \beta_x, \beta_y はどの程度早く受容体の反応が低下するかを調整する. Gaussian factor

Slide 65

Slide 65 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor function Gaussian factor と cosine factor の積のイメージ. パラメーター f は cosine の frequency を調整する.\phi は位相を調整. これを変更することでガウス関数の形が細⻑くなったりする. (image source: hFp://fussy.web.fc2.com/algo/algo12-2.htm) f = 3 \pi f = 2 \pi f = \pi Cosine factor x’-axis

Slide 66

Slide 66 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor function Fig 9.18: 異なるパラメーターでの Gabor function. ⽩=強い正の重み,⿊=強い負の重み,グレー(背景)=0 (左) 座標系を調整するパラメータ x_0, y_0, Γ を変更した. (中央) ガウススケールパラメーター \beta_x, \beta_y を変更. (右) 正弦曲線パラメーター f, \phi を変更

Slide 67

Slide 67 text

9.10 The Neuroscientific Basis for Convolutional Networks: Gabor-like function Convolutional networks は Gabor-like な特徴を学習する. Fig 9.19: エッジを検出するために学習した特徴 特定の⾊のエッジを検出するための特徴を学習している. (左) Unsupervised learning algorithm で学習した重み (右) Convolution kernel で学習した特徴 (conv maxout net の first layer)

Slide 68

Slide 68 text

9.11 Convolutional Networks and the History of Deep Learning (Convolutional Networks の応⽤の歴史.読み⾶ばす) •  NEC, AT&T, Microsoft, OCR •  Imagenet のコンテスト •  etc 省略(興味がある⼈は読んで)