stMind

about Tech, Computer vision and Machine learning

Deep Learningを学ぶ -その2-

CVPR2012のチュートリアルを読んで、適宜自分なりに補足しながらディープラーニングを学ぶの続き。
前回は導入までだったので、今回は多層のNNで学習を上手く行うための仕組みについて概観してみる。 (あくまでも概観で「だから」上手く行くというところまではまだまだ理解が進んでないが)

層の構成

f:id:satojkovic:20140330162337p:plain

これが一つの層に相当する構成。多層のNNは、これを複数組み合わせた構成となる。

  • 入力層: 入力はImage Pixels, 出力はFeatures
  • 隠れ層1: 入力はFeatures, 出力はFeatures
  • ・・・
  • 隠れ層N:  入力はFeatures, 出力はFeatures
  • 出力層: 入力はFeatures, 出力はClassifier

この構成の分け方や各ステージ毎の具体的処理も説明の仕方によって違う様子。また、必ずしもこの順序ではない。 例えば、ICML2013のチュートリアル資料を見てみると、

  • Normalize → Filter → Non-linearity → Pool
    • sparsificationはNon-linearityに分類

各所で分け方は異なるが、やっていることは同じになっている(当たり前だが)。

次に、各ステージの概要と役割について見てみる。

フィルタ
  • 「\」「/」などのフィルタによる畳み込み処理
  • 非線形フィルタ関数にはtanh, sigmoid, rectified linear unit(ReLU)など
  • フィルタ毎にfeature mapが出力される
正規化
  • コントラスト正規化
    • 平均0、分散1となるような局所正規化
    • subtractive(減算)とdivisive(除算)
  • スパースコーディング
プーリング
  • フィルタ出力層の小領域をまとめる処理
    • max-poolingやsum-pooling
  • 細かい位置変化に対して不変性(特徴の位置に関する情報をなくす)を持たせる
  • 複数の異なる特徴マップを組み合わせ(AND/ORがsumとmaxに相当)

Deepアーキテクチャの例

ここまでの知識に基いて、ILSVRC2012で話題となったImageNetの論文のアーキテクチャを例として見てみます。

f:id:satojkovic:20140330161406j:plain

  • 画像の上部と下部で別々のGPUにて処理するため、2系統に分かれている
  • 各層の出力に非線形フィルタ関数ReLU(Rectified Linear Unit)を適用

処理を順におっていくと次のようになる。

  1. 入力(一番左)は224 x 224 x 3の画像
  2. 96パターンの11 x 11 x 3のフィルタを4pixel飛ばしで畳み込み
    • 55 x 55 x 48 x 2 が次の層として得られる
  3. 正規化とmaxプーリングを実行後、256パターンの5 x 5 x 48のフィルタを畳み込み
    • 27 x 27 x 128 x 2が次の層として得られる
  4. 正規化とmaxプーリングを実行後、384パターンの3 x 3 x 256のフィルタを畳み込み
    • 13 x 13 x 192 x 2が次の層として得られる
  5. 384パターンの3 x 3 x 192のフィルタを畳み込み
    • 13 x 13 x 192 x 2が次の層として得られる
  6. 256パターンの3 x 3 x 192のフィルタを畳み込み
    • 13 x 13 x 128 x 2が次の層として得られる
  7. フル接続の層では4096個のニューロンを持つ
  8. 最後にsoftmax関数で1000クラスの確率分布を出力

論文をじっくり読まないとわからなそうですが、正規化とmaxプーリングは3と4だけで実行し、途中の4でフル接続になっていたりするのは何か理由がありそうです。

まとめ

層の構成とそれを複数繰り返した多層NNの構成を概観しました。
次は、このような構成の多層NNを教師なしで学習する手法であるオートエンコーダーについて調べてまとめたいと思います。