$30 off During Our Annual Pro Sale. View Details »

Chapter9 Convolutional Networks

@smly
January 23, 2016
320

Chapter9 Convolutional Networks

for dlbook study meeting

@smly

January 23, 2016
Tweet

Transcript

  1. 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

    View Slide

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

    View Slide

  3. 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
    基礎的な話題
    詳細・発展的な話題
    歴史背景などの補⾜

    View Slide

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

    View Slide

  5. 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

    View Slide

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

    View Slide

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

    View Slide

  8. 9.1 The Convolutional Operation
    PQFSBUPS ͭͷؔ਺ʹର͢Δԋࢉ

    Operator のそれぞれの⽤語:
    LFSOFM ॏΈ

    'FBUVSFNBQ ग़ྗ

    JOQVU ೖྗ

    実際にレーザーで計測しようとすると,秒間数回の計測を離散的に⾏う.
    離散的な Convolution も定式化:

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 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 ͷ৔߹

    View Slide

  15. 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 に減らすことができる.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 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/

    View Slide

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

    View Slide

  21. 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.

    View Slide

  22. 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 へ続く)

    View Slide

  23. 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 と呼ぶ場合 (左)
    と分けて呼ぶ場合 (右) がある.
    本書では (左) の呼び⽅を採⽤.

    View Slide

  24. 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 はほとんど変化しない
    という性質.

    View Slide

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

    View Slide

  26. 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 が (同⽂)

    View Slide

  27. 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 の例を紹介.

    View Slide

  28. 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.

    View Slide

  29. 補⾜: 実践的な 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 を
    扱ったりカスタマイズする(学習
    部分や評価部分など).
    右のコードはコンテストで⼊賞し
    たときに使ったコードの⼀部.

    View Slide

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

    View Slide

  31. 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 である

    View Slide

  32. 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
    出⼒のチャンネル
    (⼊⼒の) チャンネル
    画像の⾏
    画像の列

    View Slide

  33. 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 から
    始まるため.

    View Slide

  34. 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 と呼ばれる)

    View Slide

  35. 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.数学的には
    等価だが計算コストが無駄.

    View Slide

  36. 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

    View Slide

  37. 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 を作
    ることができる

    View Slide

  38. 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 の線形結合部分は以下の式となる:
    それぞれの空間的な位置でパラメーターを共有しない.

    View Slide

  39. 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

    View Slide

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

    View Slide

  41. 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

    View Slide

  42. 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 になる.

    View Slide

  43. 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

    View Slide

  44. 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 にて.

    View Slide

  45. 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)

    View Slide

  46. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. 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

    View Slide

  51. 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

    View Slide

  52. 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

    View Slide

  53. 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)

    View Slide

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

    View Slide

  55. 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)

    View Slide

  56. 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
    を持つことでこの性質を捉えている.

    View Slide

  57. 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 は単純細胞の性質を模倣する
    ためにデザインされた.

    View Slide

  58. 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 がインスパイ
    アされた.

    View Slide

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

    View Slide

  60. 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

    View Slide

  61. 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 (ガボール) 関数に
    よって記述されるような重みを持っていることを⽰している.

    View Slide

  62. 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

    View Slide

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

    View Slide

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

    View Slide

  65. 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

    View Slide

  66. 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 を変更

    View Slide

  67. 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)

    View Slide

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

    View Slide