External Memory

プログラミング周辺知識の備忘録メイン

畳み込みネットワークの構造例-AlexNetとDeeply-supervised nets

AlexNet

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

AlexNetは確か何かのImageNetコンペで他に大差をつけて優勝したチームのネットワーク構造だったはず。
論文中にはコンペ名はthe ILSVRC-2012 competitionと書かれてた。
用いられたデータセットはImageNetのサブセット:ILSVRC-2010、ILSVRC-2012であって、
1000カテゴリーごと約1000枚のカラー画像:約1200万枚の訓練画像と5万の検証画像、15万のテストデータである。
画像は256*256pixelにダウンサンプリングされている。

ネットワーク構造は畳み込み層5層、全結合層3層の計8層である。
2つのGPUを並列で使うため円柱状のCNNを用いるが列は完全に独立していない。
2,4,5つ目の畳み込み層はそれぞれの同じGPUカーネルマップに結合しており、3つ目は全てのカーネルマップに結合する。
並列化によりtop1エラーとtop5エラーがそれぞれ1.7%、1.2%減少しわずかに訓練の時間が短縮された。

以下で述べるResponse Normalization層とOverlapping Pooling層について
Response Normalization層は1,2つ目の畳み込み層に付随し、
Overlapping Pooling層はmax-poolingで行われ、でResponse Normalization層がある層と5つ目の畳み込み層に挿入される。
活性化関数はすべての層でReLUである。

Local Response Normalization

以下の式で表されるように異なるカーネルマップiの隣接n個のmap間の同一座標上activationを正規化する。
b_{x,y}^i=a_{x,y}^i/(k+\alpha \sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^j)^2)^\beta
カーネルマップの順番は訓練前に決定する。
実際のニューロンの側方抑制のように隣接細胞への活性の拡散を抑制しそれぞれのカーネル間での大きな活性の競争を生み出すとある。
おそらく画像においてはコントラストを鮮明に見分けるための働きみたいなものだろう。
文献ではk = 2, n = 5, α = 10^−4, and β = 0.75としている。

Overlapping Pooling

pooling層のウィンドウサイズをスライドサイズよりも大きくすること。
両者が同じ場合は本来のpooling層となる。
この論文中ではわずかに過学習が抑制されたことが観察されたらしい。
Fractional MaxPoolingとかでも効果が得られているので、
2*2の最低でもデータが切り捨てられ1/4になる操作は厳しい部分もあってそれなりの工夫が求められるのだろうし、境界をぼやかすのは汎化に寄与するようにも感じる。


またこの論文では過学習の抑止に苦労したらしく、解決法としてデータ拡張とドロップアウトを行っている。
データ拡張は256*256画像からを224*224の平行移動と鏡映画像データを抽出している。(32*32*2=2048倍のデータ増)
また、主成分分析を使って自然画像の正規化っぽいことをしている。
自然画像の光の加減による対象の同一性を維持することが目的のようである。
ドロップアウトは3層のうち最初の2つの全結合層で行っており、keep率は0.5である。


DSN(Deeply-supervised nets)

http://proceedings.mlr.press/v38/lee15a.pdf

DSNでは出力層だけでなく各隠れ層ごとにも教師としてのラベルと目的関数を導入する。
これは学習プロセス内の追加のソフト制約もしくは新しいタイプの正則化と見なせる。
このような付随目的関数を組み込むことで収束速度が向上する:
・小さい学習データと比較的浅いネットワークに対し分類精度と特徴学習のための強力な正則化である。
・大きな学習データと深いネットワークに対し非常に深いネットワークがもたらす重要な性能向上を利用することが可能になる。
隠れ層の特徴マップを使用して訓練された識別機能の性能が、従来の隠れ層の特徴マップの性能の代わりとなる。
この論文ではこれを用いることによって逆伝播の勾配消失問題を回避し、
かつ全体のネットワークの性能を損なうという問題が生じることはなかった。


目的関数は以下のように表現される。
この数式は見ての通りL2SVM(L2 Support Vector Machine)についての例である。
softmaxのDSNに関しては文献中に記載はなかったが、おそらく対数誤差→クロスエントロピー誤差を用いていると思われる。

F(W)\equiv P(W)+Q(W)

P(W)\equiv [\|x^{(out)}\|]^2+\mathcal{L}(W,\mathbf{w}^{(out)})
Q(W)\equiv \sum_{m=1}^{M-1} a_m[\|\mathbf{w}^{(m)}\|^2+l(W,\mathbf{w}^{(m)})-\gamma]_+

\mathcal{L}(W,\mathbf{w}^{(out)})=\sum_{y_k\neq y}[1-<\mathbf{w}^{(out)},\phi(Z^{(M)},y)-\phi(Z^{(M)},y_k)>]_+^2
l(W,\mathbf{w}^{(m)})=\sum_{y_k\neq y}[1-<\mathbf{w}^{(m)},\phi(Z^{(m)},y)-\phi(Z^{(m)},y_k)>]_+^2

[x]_+\equiv max(x,0)

Mは層の総数、mは層の番号、Wはすべての層の重み、\mathbf{w}はそれぞれの層の重み、
Z^{(m)},\mathbf{w}^{(out)}はそれぞれ各層の入力と最終出力層の重みを表す。
<x,y>は内積、φは素性関数を表す。

ニューロンの伝播自体は線形である。
Z^{(m)}=f(Q^{(m)}),Z^{(0)}=X\ \ f:pooling\ function
Q^{(m)}=W^{(m)}*Z^{(m-1)}
ここではバイアス項は重みに吸収させている。

分類器はL2SVM、比較用としてsoftmaxを使用している。
最適化はSGD(Stochhastic Gradient Descent)を用いて
W_{t+1}=Π_W(W_t-η_t\mathbf{\hat{g}})で更新される。
η_tはstep:t に反比例する係数、gはWにおける劣勾配である。

これにより逆伝播なしで全ての隠れ層の重みが直接更新される。

F(W)の式から付随する目的関数Q(W)は正則化としての性質を持っているように見えるとある。よってQ(W)はP(W)が小さければ、小さくなるので(論文中Lemma 1)収束に関して都合がよい。

SGDにおいて局所強凸性の性質を利用しているが、強凸性のλ値からいつも利用できるとは限らない(Lemma 2)ので η_t = 1/(λ_1 + λ_2)t ではなく、η_t=1/t の係数を用いる。
しかし、F(W)がλ_1-強凸でQ(W)がλ_2-強凸でλ_2>>λ_1であると期待できる時は収束スピードは大幅に向上する(Lemma 3)。
Experiments項でモーメンタム0.9との記述があるので、モーメンタムの手法も導入しているようである。


ネットワーク構造は
MNISTに対しては、conv*2+fully connected*1の標準的なCNN、
CIFAR-10に対しては、NiN(Network in Network)と似た構造のmlpconv層とglobal avaraged pooling層またはmax-pooling層を含むconv*3である。
mlpconv層はconv層の後に全結合層が続き、max-pooling層に続く一連の構造である。。
また最後のmlpconv層はglobal average pooling層を介して出力する。

NiNに関しては以下の文献にあるが、この文献はまた別途まとめる。
http://arxiv.org/abs/1312.4400