第5章に引き続き、深層学習(青イルカ本)の第6章を読み進めていきます。
本投稿(連載)を一緒に読めば事前知識なしでも読み進められる...といったものを目指しています。
本章の概要
本章では,畳込みネットワークを扱います.
はじめに,本手法の発想のもととなった神経科学の知見について触れ,次に構成要素である畳込み層とプーリング層を定義します.
本手法は画像認識に応用されており,関連して画像認識に用いられる正規化(局所コントラスト正規化)についても説明します.
次に順伝播型と同様,パラメータを最適化するために勾配を計算する方法を説明します.
最後に,本手法の適用例と効果について紹介しています.
本文詳細
6.3 畳込み
畳み込みの計算方法についてはStandfordのwikiのアニメーションから入ると良いかもしれません.
6.4 畳み込み層
畳込み層に重み共有が出現することについて説明します.本文の次の内容に対応する解説です.
畳込み計算の局所性を反映して,出力層のユニット1つ(チャネル$m$の1つの画素)は,入力層の$H \times H \times K$個のユニットのみと結合します.その結合の重みがフィルタの係数$h_{pqkm}$です($m$は今考えているチャネル).この重みは,出力層の同一チャネルの全ユニットで同じである(共有される)ことに注意します.このことは重み共有(weight sharing, weight typing)と呼ばれます.このような結合の局所性と重みを共有することが,畳込み層の特徴です.
言葉だけだと分かりにくいので,畳込みを順伝播で計算する過程をアニメーションにしてみました.
入力画像が3x2x2でフィルタが2x2x2x2とします.ストライド,パディングは考えません.
まずはチャネルが1つで,フィルタの数が1つの,一番単純な畳込みの定義の場合です.
フレーム1と2間,3と4間で重みが共有されていることと,また通常の全結合と違い,結合に局所性があることを確認しましょう.
6.5 プーリング層
Lpプーリング
Lpプーリングで$P$が無限大の時に最大プーリングとなることの導出過程を補足します:
\lim_{P \to \infty} \left( \frac{1}{H^2} \sum_{(p, q) \in P_{ij}} z^P_{pqk} \right)^{\frac{1}{P}} = \lim_{P \to \infty} \left( \frac{1}{H^2} \right)^{\frac{1}{P}}
\lim_{P \to \infty} \left( \sum_{(p, q) \in P_{ij}} z^P_{pqk} \right)^{\frac{1}{P}} \\
$\lim_{P \to \infty} \left( \frac{1}{H^2} \right)^{\frac{1}{P}}$は明らかに1です.
次に,$z^P_{pqk}$に関する和を展開し,その項が$t$で最大値をとなるとします.
\begin{eqnarray}
\left( \sum_{(p, q) \in P_{ij}} z^P_{pqk} \right) ^{\frac{1}{P}}
&\Rightarrow& \frac{1}{P} \log \left (z^P_0 + ... + z^P_{t} + ... + z^P_n \right) \\
&=& \frac{1}{P} \log \left( {z^P_{t}} (\frac{z^P_0}{z^P_{t}} + ... + \frac{z^P_{t}}{z^P_{t}} + ... + \frac{z^P_n}{z^P_{t}}) \right) \\
&=& \frac{1}{P} \log {z^P_{t}} \log \left( \frac{z^P_0}{z^P_{t}} + ... + \frac{z^P_{t}}{z^P_{t}} + ... + \frac{z^P_n}{z^P_{t}} \right) \\
&=& \log z_{t} \log \left( \frac{z^P_0}{z^P_{t}} + ... + \frac{z^P_{t}}{z^P_{t}} + ... + \frac{z^P_n}{z^P_{t}} \right) \\
\end{eqnarray}
この式は$P \to \infty$の極限をとれば$\log z_t$であり,logをとらなければ$z_t$(最大値)です.
6.6 正規化層
除算正規化での定数c
除算正規化$z_{ij} = \frac{x_{ij} - \tilde{x_{ij}}}{\sigma_{ij}}$において定数 $c$ を導入する理由。本文にある次の文の解説.
この計算をそのまま行うと,濃淡変化が少ない(コントラストが小さい)局所領域ほど濃淡が増幅してしまい,例えば画像のノイズが強調されるようになってしまいます.
周囲の濃淡が少ないと,標準偏差$\sigma_{ij}$が小さくなり,大きい数になってしまいます.これを防ぐために閾値$c$を設け,標準偏差がそれを下回るようであれば$c$を採用とするようにしています.
6.7 勾配の計算
$\boldsymbol t _{ji}$と$\boldsymbol T_r$が読み取りづらいため解説します.はじめに本文を抜粋しておきます.
$\boldsymbol t_{ji}$は高々1つの成分が1をとりそれ以外は$\boldsymbol{0}$となるベクトルです. そして$\boldsymbol t_{ji}$の成分を $\boldsymbol t_{jir}$と書き,$r$ を固定した $\boldsymbol t_{jir}$ を $(j, i)$ 成分に持つ行列を $\boldsymbol T_r$ と書きます.
6.4節でフィルタ$\boldsymbol h$が重み$w_{ji}$に相当するものであることが分かりました.しかし,$\boldsymbol h$はあくまで重みの要素を1次元的に書き並べたものであり,直接行列計算に使うことができません.これを可能にする操作について考えます.
重み$w_{ji}$が$\boldsymbol h$の要素のうち,$r$番目のものに該当する状況を考えます.
さて,次は7章の再帰型ニューラルネットです.引き続きy_ujitokoが丁寧に解説してくれるはずです.