CVPR2012のチュートリアルを読んで、適宜自分なりに補足しながらディープラーニングを学ぶの続き。
前回は導入までだったので、今回は多層のNNで学習を上手く行うための仕組みについて概観してみる。
(あくまでも概観で「だから」上手く行くというところまではまだまだ理解が進んでないが)
層の構成
これが一つの層に相当する構成。多層の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の論文のアーキテクチャを例として見てみます。
処理を順におっていくと次のようになる。
- 入力(一番左)は224 x 224 x 3の画像
- 96パターンの11 x 11 x 3のフィルタを4pixel飛ばしで畳み込み
- 55 x 55 x 48 x 2 が次の層として得られる
- 正規化とmaxプーリングを実行後、256パターンの5 x 5 x 48のフィルタを畳み込み
- 27 x 27 x 128 x 2が次の層として得られる
- 正規化とmaxプーリングを実行後、384パターンの3 x 3 x 256のフィルタを畳み込み
- 13 x 13 x 192 x 2が次の層として得られる
- 384パターンの3 x 3 x 192のフィルタを畳み込み
- 13 x 13 x 192 x 2が次の層として得られる
- 256パターンの3 x 3 x 192のフィルタを畳み込み
- 13 x 13 x 128 x 2が次の層として得られる
- フル接続の層では4096個のニューロンを持つ
- 最後にsoftmax関数で1000クラスの確率分布を出力
論文をじっくり読まないとわからなそうですが、正規化とmaxプーリングは3と4だけで実行し、途中の4でフル接続になっていたりするのは何か理由がありそうです。
まとめ
層の構成とそれを複数繰り返した多層NNの構成を概観しました。
次は、このような構成の多層NNを教師なしで学習する手法であるオートエンコーダーについて調べてまとめたいと思います。