23
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

深層学習 第6章 畳込みニューラルネット

Posted at

第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つの,一番単純な畳込みの定義の場合です.
cnn_1.gif

次にチャネルが2つで,フィルタの数が1つの場合です.
cnn_2.gif

最後にチャネルが2つで,フィルタの数が2つの場合です.
cnn_3.gif

フレーム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が丁寧に解説してくれるはずです.

23
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?