初心者データサイエンティストの備忘録

調べたことは全部ここに書いて自分の辞書を作る

【深層学習】パラメータの初期化手法をどのように選択すべきか?活性化関数に応じて決める

はじめに

 一般的に機械学習モデルを構築する際には、教師データからモデルが分類ルールを獲得する必要があります。この分類ルールを獲得することは「学習」と呼ばれ、機械学習モデルに含まれるパラメータを調整して損失関数を減少させることで実現します。つまり、機械学習モデルの学習とは、パラメータを入力とする損失関数の最小化問題を解くことにあたります。

 深層学習における損失関数の最小化には、広く「勾配降下法」が使われます。勾配降下法は、初期値を設定し、その値を繰り返し更新して損失関数を最小化する手法です。そのため、最終的な結果の精度は、最初に設定する値、つまり初期値に大きく左右されます。この記事では「どのように初期値を設定すれば良いのか?」という疑問に答えることを目指しています。

 具体的には、初期値を設定するために広く使われている「Glorot法」と「He法」について説明します。これらの手法の仮定や導出過程を整理し、それぞれの手法がどのような場合に適しているかを解説します。これにより、どのような場合にGlorot法やHe法を使えば良いのかがわかり、また、Glorot法やHe法を使えない場合の初期値の設定の仕方を導出できるようになると考えています。

 次の章では、Glorot法とHe法の概要と、それぞれの適用場面について詳しく説明します。

Glorot法とHe法の概要

 一般的に、パラメータの初期値は平均が 0正規分布や一様分布にしたがう乱数によって決めることが多いです。Glorot法とHe法はこれらの分布の分散の決め方に関する手法です。

 Glorot法とHe法を説明するため、問題設定を整理しておきます。

問題設定
  L層からなる深層学習モデルを考える。第 l層の第 jユニットへの入力を u _ j ^ {(l)}、出力を z _ j ^ {(l)}とする。このとき、第 l層の活性化関数を fとすると、次の関係が成り立つ。

z _ j ^ {(l)} = f(u _ j ^ {(l)})

 また、第 l層の第 jユニットの入力 u _ j ^ {(l)}は、第 l-1層の第 iユニットの出力 z _ i ^ {(l-1)}と重み w _ {ji} ^ {(l)}を用いて次のように表せる。

u _ j ^ {(l)} = \sum_{i} w _ {ji} ^ {(l)} z _ i ^ {(l-1)}

 さらに、第 l層のユニット数を M _ {l}とする。

 このとき、 w _ {ji} ^ {(l)}の初期値を正規分布 N(0, \sigma _ {l} ^ 2)もしくは、一様分布 Unif(-a _ l, a _ l)にしたがう乱数とするならば、 \sigma _ {l} a _ lをどのように決めれば、すべての層の入力や出力の分散を(おおむね)等しくできるか?ただし、各 w _ {ji} ^ {(l)}は独立とする。

 問題設定を少し補足します。

 まず、深層学習モデルの構造としては、図1のようなものを想定しています。

図1:想定する深層学習モデル

 次に、「すべての層の入力や出力の分散を等しくできる」ことについて補足します。一般的に深層学習モデルでは、ある層のパラメータの分散が大きすぎると、他の層よりも分類ルールに相対的に大きな影響を与えてしまいます。これでは、深層学習モデルの「層を積み重ねることによって、精度の高い分類ルールを獲得する」というメリットが十分に発揮されなくなってしまいます。その結果、学習を進めても深層学習モデルの精度が向上しないという現象が発生します。

 したがって、各層に含まれるパラメータの分散をできるだけ等しくすることが必要です。この要件を初期値に求めたものがGlorot法とHe法です。以下にGlorot法とHe法の概要を記します。

Glorot法(概要)
 モデルに含まれる活性化関数 fが以下を満たすと仮定する。
  • 原点対称である。つまり、 f(u) = -f(-u)である。
  • 原点付近で一階微分の値が 1に近似できる。つまり、 u \approx 0のとき f^ \prime (u) \approx 1である。
 このとき、各層のパラメータの分散を以下のように決めれば、すべての層の出力の分散がおおむね等しくなる。つまり、 {\rm Var}\left[z _ j^{(1)}\right] \approx \cdots \approx {\rm Var}\left[z _ j^{(l)}\right] \approx \cdots \approx {\rm Var}\left[z _ j^{(L)}\right] となる。
  • 正規分布の乱数を用いる場合: \sigma _ l = \sqrt{\dfrac{1}{M _ {l-1}}}
  • 一様分布の乱数を用いる場合: a _ l = \sqrt{\dfrac{3}{M _ {l-1}}}
He法(概要)
 モデルに含まれる活性化関数にReLUを仮定する。つまり、

f(u) = \left\{
\begin{array}{ll}
u & (u\geq 0) \\
0 & (u< 0) \\
\end{array}
\right.
である。
 このとき、各層のパラメータの分散を以下のように決めれば、すべての層の入力の分散が等しくなる。つまり、 {\rm Var}\left[u _ j^{(1)}\right] = \cdots = {\rm Var}\left[u _ j^{(l)}\right] = \cdots = {\rm Var}\left[u _ j^{(L)}\right] となる。
  • 正規分布の乱数を用いる場合: \sigma _ l = \sqrt{\dfrac{2}{M _ {l-1}}}
  • 一様分布の乱数を用いる場合: a _ l = \sqrt{\dfrac{6}{M _ {l-1}}}

 Glorot法とHe法の主な違いは、それぞれが前提とする活性化関数です。そのため、Glorot法とHe法のどちらの手法を使うべきかは、モデルが使用している活性化関数によって決まります。

 また、Glorot法は出力の分散を均等にし、He法は入力の分散を均等にする点も異なります。この違いが生じる理由については、筆者もはっきりとは分かりませんが、導出上の都合ではないかと推測しています。He法の仮定から出力の分散を計算することが困難なため、先行研究であるGlorot法と同じように出力の分散を等しくできなかったのではないか、と考えています。

 ここまで、Glorot法とHe法の概要をまとめました。しかし、これらの手法には、活性化関数以外にもいくつか仮定があります。次の章では、それぞれの手法の仮定を整理し、導出過程を詳しく説明します。

Glorot法とHe法の詳細

 この章では、Glorot法とHe法のそれぞれに必要な仮定と、導出過程をまとめます。なお、導出に必要な命題は補足中の「He法の導出で使った命題の証明」の節で証明します。

Glorot法の仮定と導出

 Glorot法の詳細は以下の通りです。

Glorot法(詳細)
 学習対象の深層学習モデルが以下の仮定を満たすとする。
  • 仮定1:活性化関数 fに関する仮定
    • 仮定1-1:原点対称である。つまり、 f(u) = -f(-u)である。
    • 仮定1-2:原点付近で一階微分の値が 1に近似できる。つまり、 u \approx 0のとき f ^ \prime (u)\approx 1である。
  • 仮定2:各層の入力 u _ j^{(l)} 0付近の値をとる
 このとき、各層のパラメータの分散を以下のように決めれば、すべての層の出力の分散がおおむね等しくなる。つまり、 {\rm Var}\left[z _ j^{(1)}\right] \approx \cdots \approx {\rm Var}\left[z _ j^{(l)}\right] \approx \cdots \approx {\rm Var}\left[z _ j^{(L)}\right] となる。
  • 正規分布の乱数を用いる場合: \sigma _ l = \sqrt{\dfrac{1}{M _ {l-1}}}
  • 一様分布の乱数を用いる場合: a _ l = \sqrt{\dfrac{3}{M _ {l-1}}}

 仮定1については、双曲線正接関数 f(u) = \dfrac{e ^ u - e ^ {-u}}{e ^ u + e ^ {-u}}などが該当します。仮定2については、入力データをバッチ正規化するなどで、この仮定を満たせる場合があります。

 以下では、Glorot法を導出します。

(導出)
 1.  {\rm Var}\left[z _ j^{(l)}\right] \approx {\rm Var}\left[u _ j^{(l)}\right]を示します。
 活性化関数 f u=0の周りでTaylor展開すると、


f(u) = f(0) + f^\prime(0)u + \displaystyle{\sum_{k=2}^\infty} \dfrac{f^{(k)}(0)}{k!} u^k

となります。ここで、仮定2を用いると k \geq 2 \dfrac{u ^ k}{k!} \approx 0と近似できます。また、仮定1-1より、 f(0) = 0、仮定1-2より f ^ \prime(0) \approx 1なので、


f(u) \approx u

となります。
 したがって z _ j ^ {(l)} = f(u _ j ^ {(l)}) \approx u _ j ^ {(l)}となり、


\begin{eqnarray}
{\rm Var}\left[z _ j^{(l)}\right] \approx {\rm Var}\left[u _ j^{(l)}\right] \tag{1}
\end{eqnarray}

が成り立ちます。
2.  {\rm Var}\left[u _ j^{(l)}\right] = E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right] \displaystyle{\sum _ {i}} E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right]を示します。
 まず、第 l層の第 jユニットの入力 u _ j^{(l)}は、次のように表されます。


u _ j^{(l)} = \displaystyle{\sum _ {i}} w _ {ji} ^ {(l)} z _ i ^ {(l-1)}

 したがって、入力 u _ j^{(l)}の分散は、


\begin{eqnarray}
{\rm Var}\left[u _ j^{(l)}\right] &=& {\rm Var}\left[\displaystyle{\sum _ {i}} w _ {ji} ^ {(l)} z _ i ^ {(l-1)} \right] \\
&=& \displaystyle{\sum _ {i}} {\rm Var}\left[w _ {ji} ^ {(l)} z _ i ^ {(l-1)} \right]  + 2\displaystyle{\sum _ {i \neq i^\prime}}\displaystyle{\sum _ {i^\prime}}{\rm Cov}\left[w _ {ji} ^ {(l)} z _ i ^ {(l-1)}, w _ {ji^\prime} ^ {(l)} z _ {i^\prime} ^ {(l-1)} \right] \tag{2}
\end{eqnarray}

となります。ここで、 w _ {ji} ^ {(l)}  z _ i ^ {(l-1)}は独立であり、 E\left[w _ {ji} ^ {(l)}\right] = 0であることを用いると


\begin{eqnarray}
{\rm Var}\left[w _ {ji} ^ {(l)} z _ i ^ {(l-1)} \right] &=& E\left[ \left(w _ {ji} ^ {(l)}\right)^2 \right]E\left[ \left(z _ {i} ^ {(l-1)}\right)^2 \right]-E\left[ w _ {ji} ^ {(l)} \right]^2 E\left[ z _ {i} ^ {(l-1)} \right]^2 \\
&=& E\left[ \left(w _ {ji} ^ {(l)}\right)^2 \right]E\left[ \left(z _ {i} ^ {(l-1)}\right)^2 \right] \tag{3}
\end{eqnarray}

となります。同様に、


\begin{eqnarray}
{\rm Cov}\left[w _ {ji} ^ {(l)} z _ i ^ {(l-1)}, w _ {ji^\prime} ^ {(l)} z _ {i^\prime} ^ {(l-1)} \right] &=& E\left[ w _ {ji} ^ {(l)} \right]E\left[ w _ {ji^\prime} ^ {(l)} \right]E\left[ z _ {i} ^ {(l-1)} z _ {i^\prime} ^ {(l-1)}\right] \\
&-& E\left[ w _ {ji} ^ {(l)} \right]E\left[ w _ {ji^\prime} ^ {(l)} \right]E\left[ z _ {i} ^ {(l-1)} \right]E\left[ z _ {i^\prime} ^ {(l-1)} \right] \\
&=& 0 \tag{4}
\end{eqnarray}

となります。また、 w _ {ji} ^ {(l)}はすべての i, jに対して同分布なので、


\begin{eqnarray}
E\left[\left(w _ {ji} ^ {(l)}\right) ^ 2 \right]= E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right] \tag{5}
\end{eqnarray}

です。
 以上より、(2)、(3)、(4)、(5)式を用いると


\begin{eqnarray}
{\rm Var}\left[u _ j^{(l)}\right] = E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right] \displaystyle{\sum _ {i}} E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right] \tag{6}
\end{eqnarray}

が成り立ちます。
3.  E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right]\displaystyle{\sum _ {i}} E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right] = M _ {l-1}{\rm Var}\left[ w _ {11} ^ {(l)} \right] {\rm Var}\left[ z _ 1 ^ {(l-1)} \right]を示します。
  E\left[w _ {11} ^ {(l)}\right] = 0なので、


\begin{eqnarray}
E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right] &=& {\rm Var}\left[ w _ {11} ^ {(l)} \right] + E\left[w _ {11} ^ {(l)} \right]^2 \\
&=& {\rm Var}\left[ w _ {11} ^ {(l)} \right] \tag{7}
\end{eqnarray}

となります。また、 z _ i ^ {(l-1)} = f(u _ i ^ {(l-1)}) \approx u _ i ^ {(l-1)}より


\begin{eqnarray}
E\left[ z _ i ^ {(l-1)} \right] &\approx& E\left[ u _ i ^ {(l-1)} \right] \\
&=& \displaystyle{\sum_m} E\left[ w_{im}^{(l-1)} \right] E\left[ z_{m}^{(l-2)} \right] \\
&=& 0 
\end{eqnarray}

となります。したがって、


\begin{eqnarray}
E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right] &=& {\rm Var}\left[ z _ i ^ {(l-1)} \right] +E\left[ z _ i ^ {(l-1)} \right]^2 \\
&=& {\rm Var}\left[ z _ i ^ {(l-1)} \right] \tag{8} \\
\end{eqnarray}

となります。ここで、(1)、(6)式を用いると


\begin{eqnarray}
{\rm Var}\left[ z _ i ^ {(l-1)} \right] & \approx &  {\rm Var}\left[u _ i^{(l-1)}\right] \\
&=& E\left[\left(w _ {11} ^ {(l-1)}\right) ^ 2 \right] \displaystyle{\sum _ {m}} E\left[ \left(z _ m^ {(l-2)} \right) ^ {2} \right] \tag{9}
\end{eqnarray}

となり、(9)式の右辺は iに依存しません。したがって、すべての iについて z _ i ^ {(l-1)}は同分布です。よって、(8)式は


\begin{eqnarray}
E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right] &=& {\rm Var}\left[ z _ i ^ {(l-1)} \right] \\
&=& {\rm Var}\left[ z _ 1 ^ {(l-1)} \right]
\end{eqnarray}

となります。
 以上より、


\begin{eqnarray}
E\left[\left(w _ {11} ^ {(l)}\right) ^ 2 \right]\displaystyle{\sum _ {i}} E\left[ \left(z _ i ^ {(l-1)} \right) ^ {2} \right] &=& {\rm Var}\left[w _ {11} ^ {(l)} \right]\displaystyle{\sum _ {i}} {\rm Var}\left[ z _1 ^ {(l-1)} \right] \\
&=& M _ {l-1}{\rm Var}\left[ w _ {11} ^ {(l)} \right] {\rm Var}\left[ z _ 1 ^ {(l-1)} \right] \tag{10}
\end{eqnarray}

が成り立ちます。
4. {\rm Var}\left[ w _ {11} ^ {(l)} \right] = \dfrac{1}{M_{l-1}}を示します。
 (1)、(6)、(10)式を用いると


\begin{eqnarray}
{\rm Var}\left[ z _ j ^ {(l)} \right] \approx M_{l-1}{\rm Var}\left[ w _ {11} ^ {(l)} \right]{\rm Var}\left[ z _ 1 ^ {(l-1)} \right]
\end{eqnarray}

となります。したがって、各層の分散が等しいという要件を満たすためには、 {\rm Var}\left[ z _ j ^ {(l)} \right] = {\rm Var}\left[ z _ 1 ^ {(l-1)} \right]とすればよく、


\begin{eqnarray}
{\rm Var}\left[ w _ {11} ^ {(l)} \right] = \dfrac{1}{M_{l-1}} \tag{11}
\end{eqnarray}

となります。
 最後に、(11)式と正規分布 N(0, \sigma _ l ^2)の分散が \sigma _ l ^2であること、一様分布 Unif(-a _ l, a _ l)の分散が \dfrac{a _ l  ^ 2}{3}であることを用いれば、

  • 正規分布の乱数を用いる場合: \sigma _ l = \sqrt{\dfrac{1}{M _ {l-1}}}
  • 一様分布の乱数を用いる場合: a _ l = \sqrt{\dfrac{3}{M _ {l-1}}}

となります。

 これで、Glorot法を導出することができました。個人的には、1の議論が少しテクニカルなような気がしましたが、それ以外は期待値と分散の公式等を使って、計算するだけだと思いました。

 次に、He法の仮定を整理し、導出過程を示します。He法は活性化関数がReLUのようなGlorot法の仮定1を満たさない場合に使う手法です。Glorot法よりも導出は少し複雑ですが、できるだけ行間を読む必要がないように導出過程を示そうと思います。

He法の仮定と導出

 He法の詳細は以下の通りです。

He法(詳細)
 学習対象の深層学習モデルが以下の仮定を満たすとする。
  • 仮定1:活性化関数 fをReLUとする。つまり、
    
f(u) = \left\{
\begin{array}{ll}
u & (u\geq 0) \\
0 & (u< 0) \\
\end{array}
\right.
    とする。
  • 仮定2:各層のユニットの出力はすべて独立とする。つまり、 z _ 1^{(l)}, \dots, z _ {M _ {l}} ^ {(l)}はすべて独立とする。
 このとき、各層のパラメータの分散を以下のように決めれば、すべての層の入力の分散が等しくなる。つまり、 {\rm Var}\left[u _ j^{(1)}\right] = \cdots = {\rm Var}\left[u _ j^{(l)}\right] = \cdots = {\rm Var}\left[u _ j^{(L)}\right] となる。
  • 正規分布の乱数を用いる場合: \sigma _ l = \sqrt{\dfrac{2}{M _ {l-1}}}
  • 一様分布の乱数を用いる場合: a _ l = \sqrt{\dfrac{6}{M _ {l-1}}}

 導出の前にGlorot法と同様に、以上で述べた仮定に補足をします。

 仮定2に関して、少し疑問が残ります。 z _ i ^{(l)} z _ {i ^ \prime} ^{(l)}は、両方とも z _ 1 ^ {(l-1)}, \dots, z _ {M _ {l-1}} ^ {(l-1)}の影響を受けるため、本当に独立であるかは疑わしいです。しかし、原著論文ではこの仮定が採用されているので、この記事でもこの仮定を受け入れて、導出を進めていきます。

 以下では、He法を導出します。

(導出)
 1.  E\left[\left(z _ i ^ {(l-1)}\right) ^ 2\right] = \dfrac{1}{2} {\rm Var} \left[ u _ i ^ {(l-1)} \right]を示します。

 まず、左辺を計算します。活性化関数にReLUを仮定しているので、


z _ i ^ {(l-1)} = \left\{
\begin{array}{ll}
u_i^{(l-1)} & (u_i^{(l-1)} \geq 0) \\
0 & (u_i^{(l-1)}< 0) \\
\end{array}
\right.

です。したがって、 z _ i ^ {(l-1)}確率密度関数 p\left(z _ i ^ {(l-1)}\right)とすると、


\begin{eqnarray}
E\left[\left(z _ i ^ {(l-1)}\right) ^ 2\right] &=& \int_{-\infty}^{+\infty} \left(z _ i ^ {(l-1)}\right) ^ 2 p\left(z _ i ^ {(l-1)}\right)dz _ i ^ {(l-1)} \\
&=& \int_{0}^{+\infty} \left(u _ i ^ {(l-1)}\right) ^ 2 p \left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \tag{12}
\end{eqnarray}

となります。
 次に、右辺を計算します。


\begin{eqnarray}
E\left[u _ i ^ {(l-1)}\right] &=& \displaystyle{\sum_m} E\left[ w_{im}^{(l-1)} \right] E\left[ z_{m}^{(l-2)} \right] \\
&=& 0 
\end{eqnarray}

なので、


\begin{eqnarray}
{\rm Var}\left[u _ i ^ {(l-1)}\right] &=& E\left[\left(u _ i ^ {(l-1)}\right)^2\right] - \left(E\left[u _ i ^ {(l-1)}\right] \right)^2 \\
&=& E\left[\left(u _ i ^ {(l-1)}\right)^2\right] \\
&=& \int_{-\infty}^{+\infty} \left(u _ i ^ {(l-1)} \right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \tag{13}
\end{eqnarray}

となります。補足で後述する命題1より u _ i ^ {(l-1)} u _ i ^ {(l-1)} = 0で対称です。したがって、 t = - u _ i ^ {(l-1)}とすると、 p(t) = p(-t)が成り立ちます。よって、


\begin{eqnarray}
\int_{-\infty}^{0} \left(u _ i ^ {(l-1)}\right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} &=&  - \int_{+\infty}^{0} t^2 p(-t)dt \\
&=& \int_{0}^{+\infty} t^ 2 p(t)dt \tag{14}
\end{eqnarray}

となります。したがって、(13)、(14)式から


\begin{eqnarray}
\dfrac{1}{2}{\rm Var}\left[u _ i ^ {(l-1)}\right]\ &=& \dfrac{1}{2} \int_{-\infty}^{+\infty} \left(u _ i ^ {(l-1)}\right) ^ 2 p \left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \\
&=& \dfrac{1}{2} \left( \int_{-\infty}^{0} \left(u _ i ^ {(l-1)}\right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} + \int_{0}^{+\infty} \left(u _ i ^ {(l-1)}\right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \right) \\
&=& \dfrac{1}{2} \times 2 \int_{0}^{+\infty} \left(u _ i ^ {(l-1)}\right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \\
&=& \int_{0}^{+\infty} \left(u _ i ^ {(l-1)}\right) ^ 2 p\left(u _ i ^ {(l-1)}\right)du _ i ^ {(l-1)} \tag{15}
\end{eqnarray}

となります。以上より、(12)、(15)式から


\begin{eqnarray}
E\left[\left(z _ i ^ {(l-1)}\right) ^ 2\right] = \dfrac{1}{2} {\rm Var} \left[ u _ i ^ {(l-1)} \right] \tag{16}
\end{eqnarray}

が成り立ちます。
 2.  {\rm Var}\left[u _  j ^ {(l)} \right] = \dfrac{M _ {l-1}}{2} {\rm Var} \left[ w _ {11} ^ {(l)} \right] {\rm Var}\left[u _ 1 ^ {(l-1)} \right]を示します。
 (9)式の導出と同じ議論から、すべての iに対して、 u _ i ^ {(l-1)}は同分布です。したがって、 {\rm Var}\left[u _ i ^ {(l-1)} \right] = {\rm Var}\left[u _ 1 ^ {(l-1)} \right]となります。これと、(6)、(7)、(16)式を用いると、


\begin{eqnarray}
{\rm Var}\left[u _ j ^ {(l)} \right] &=& E \left[ \left(w _ {11} ^ {(l)}\right) ^ 2 \right] \displaystyle{\sum_{i}} E\left[\left(z _ i ^ {(l-1)}\right) ^ 2\right] \\
&=& E \left[ \left(w _ {11} ^ {(l)}\right) ^ 2 \right] \displaystyle{\sum_{i}}  \dfrac{1}{2} {\rm Var}\left[u _ i ^ {(l-1)} \right] \\
&=& E \left[ \left(w _ {11} ^ {(l)}\right) ^ 2 \right] \displaystyle{\sum_{i}}  \dfrac{1}{2} {\rm Var}\left[u _ 1 ^ {(l-1)} \right] \\
&=& \dfrac{M_{l-1}}{2}  E \left[ \left(w _ {11} ^ {(l)}\right) ^ 2 \right] {\rm Var}\left[u _ 1 ^ {(l-1)} \right] \\
&=& \dfrac{M_{l-1}}{2} {\rm Var} \left[ w _ {11} ^ {(l)} \right] {\rm Var}\left[u _ 1 ^ {(l-1)} \right]
\end{eqnarray}

となり、冒頭の式を示せました。 後は、Glorot法の4以降と同様の議論をすることで、He法を示すことができます。

 私としては、(16)式の導出が難しいと感じましたが、他の部分はそれほど難しくないと感じました。

 最後に、以下の結論でここまでの議論をまとめます。

結論

 この記事では、深層学習モデルのパラメータの初期値を決める方法についてまとめました。

 パラメータの初期値を決める際に、重要となる考え方は、各ユニットの出力か入力を、すべての層で等しくすることです。これにより、特定の層がモデル全体に過剰な影響を与えるのを防ぎます。

 このような考え方に基づいて提案された手法が、「Glorot法」と「He法」です。両者の違いは主に仮定している活性化関数にあります。したがって、初期値を決める方法を選ぶ際には、深層学習モデルに使用されている活性化関数に合わせて決める必要があります。

 また、活性化関数がGlorot法とHe法の仮定を満たさない場合でも、この記事の導出過程を参考に、その活性化関数に適した初期値の決め方を導出できる可能性があります。

補足

He法の導出で使った命題の証明

 この補足では、He法の導出で用いた次の命題1を証明します。

命題1
 W _ 1, W _ 2はそれぞれ W _ 1 = 0, W _ 2 = 0で対称な確率変数であり、かつ、 W _ 1, W _ 2, Z _ 1, Z _ 2はすべて独立とする。このとき、 W _ 1 Z _ 1 + W _ 2 Z _ 2は、 W _ 1 Z _ 1 + W _ 2 Z _ 2 = 0で対称な確率変数となる。

(証明)
 1. まずは、 W _ 1 Z _ 1 W _ 1 Z _ 1 = 0で対称であることを示します。
 以下のように変数 X _ 1, X _ 2を定義します。


\left\{
\begin{array}{ll}
X_1 = Z_1 \\
X_2 = W_1 Z_1 \\
\end{array}
\right.

これより、


\left\{
\begin{array}{ll}
Z_1 = X_1 \\
W_1 = \dfrac{X_2}{X_1} \\
\end{array}
\right.

となります。ここで、 W _ 1, Z _ 1確率密度関数をそれぞれ p _ {W _ 1}, p _ {Z _ 1} (W _ 1, Z _ 1)の同時確率密度関数 p _ {W _ 1, Z _ 1} (X _ 1, X _ 2)の同時確率密度関数 p _  {X _ 1, X _ 2}とします。このとき、確率変数の変換公式と W _ 1,\ Z _ 1が独立であることを用いると、


\begin{eqnarray}
p _  {X _ 1, X _ 2}(x_1, x_2) &=& p _ {W _ 1, Z _ 1}\left(\dfrac{x_2}{x_1}, x_1 \right) \left| 
\begin{array}{cc}
\dfrac{\partial z_1}{\partial x_1} & \dfrac{\partial z_1}{\partial x_2} \\
\dfrac{\partial w_1}{\partial x_1} & \dfrac{\partial w_1}{\partial x_2} \\
\end{array}
\right| \\
&=& p_{W_1}\left(\dfrac{x_2}{x_1}\right) p_{Z_1}(x_1)
\left| 
\begin{array}{cc}
1 & 0 \\
-\dfrac{x_2}{x_1^2} & \dfrac{1}{x_1} \\
\end{array}
\right| \\
&=& p_{W_1}\left(\dfrac{x_2}{x_1}\right) p_{Z_1}(x_1) \dfrac{1}{x_1}
\end{eqnarray}

となります。したがって、 W _ 1 Z _ 1( = X _ 2)確率密度関数


\begin{eqnarray}
p_{X_2}(x_2) &=& \int_{-\infty}^{+\infty} p_{X_1, X_2}(x_1, x_2) dx_1 \\
&=& \int_{-\infty}^{+\infty} p_{W_1}\left( \dfrac{x_2}{x_1}\right) p_{Z_1}(x_1) \dfrac{1}{x_1} dx_1
\end{eqnarray}

となります。ここで、 W _ 1 W _ 1 = 0で対称な確率変数なので、 \forall \ x_2 \in \mathbb{R}に対して p _ {W _ 1}\left( - \dfrac{x _ 2}{x _ 1}\right) = p _ {W _ 1}\left(\dfrac{x _ 2}{x _ 1}\right)が成り立ちます。よって、


\begin{eqnarray}
p_{X_2}(-x_2) &=& \int_{-\infty}^{+\infty} p_{X_1, X_2}(x_1, -x_2) dx_1 \\
&=& \int_{-\infty}^{+\infty} p_{W_1}\left( - \dfrac{x_2}{x_1}\right) p_{Z_1}(x_1) \dfrac{1}{x_1} dx_1 \\
&=& \int_{-\infty}^{+\infty} p_{W_1}\left( \dfrac{x_2}{x_1}\right) p_{Z_1}(x_1) \dfrac{1}{x_1} dx_1 \\
&=& p_{X_2}(x_2)
\end{eqnarray}

となり、 W _ 1 Z _ 1 W _ 1 Z _ 1 = 0で対称な確率変数であることが示せました。同様の理由で、 W _ 2 Z _ 2 W _ 2 Z _ 2 = 0で対称な確率変数です。
 2. 次に、 W _ 1 Z _ 1 W _ 2 Z _ 2が独立であることを示します。
 以下のように変数 X _ 3 X _ 4, X _ 5, X _ 6を定義します。


\left\{
\begin{array}{ll}
X_3 = W_1 \\
X_4 = W_1 Z_1 \\
X_5 = W_2 \\
X_6 = W_2 Z_2 \\
\end{array}
\right.

とすると、確率変数の変換公式と、確率変数 W _ 1, W _ 2, Z _ 1, Z _ 2がすべて独立であることから、


\begin{eqnarray}
p_{X_4, X_6}(x_4, x_6) &=& \int_{-\infty}^{+\infty}p_{W_1}(x_3)p_{Z_1}\left(\dfrac{x_4}{x_3}\right) \dfrac{1}{x_3} dx_3 \\
& \times & \int_{-\infty}^{+\infty}p_{W_2}(x_5)p_{Z_2}\left(\dfrac{x_6}{x_5}\right) \dfrac{1}{x_5} dx_5 \\
&=& p_{W_1 Z_1}(x_4)p_{W_2 Z_2}(x_6)
\end{eqnarray}

となり、 W _ 1 Z _ 1 W _ 2 Z _ 2が独立であることが示せました。
 3. 最後に、 W _ 1 Z _ 1 + W _ 2 Z _ 2は、 W _ 1 Z _ 1 + W _ 2 Z _ 2 = 0で対称な確率変数となることを示します。
  W _ 1 Z _ 1,\ W _ 2 Z _ 2確率密度関数をそれぞれ p _ {W _ 1 Z _ 1},\ p _ {W _ 2 Z _ 2}とします。このとき、 W _ 1 Z _ 1 W _ 1 Z _ 1 = 0で対称、 W _ 2 Z _ 2 W _ 2 Z _ 2 = 0で対称なので、


\begin{eqnarray}
p_{W_1 Z_1}(-u-v) &=& p_{W_1 Z_1}(u+v) \\
p_{W_2 Z_2}(v) &=& p_{W_2 Z_2}(-v)
\end{eqnarray}

が成り立ちます。よって、 W _ 1 Z _ 1 + W _ 2 Z _ 2確率密度関数 p _ {W _ 1 Z _ 1 + W _ 2 Z _ 2}とすると、畳み込み計算により、


\begin{eqnarray}
p _ {W _ 1 Z _ 1 + W _ 2 Z _ 2}(-u) &=& \int_{-\infty}^{+\infty}p _ {W _ 1 Z _ 1}(-u-v)p _ {W _ 2 Z _ 2}(v)dv \\
&=& \int_{-\infty}^{+\infty}p_{W_1 Z_1}(u+v) p_{W_2 Z_2}(-v)dv \tag{17} \\
&=& -\int_{+\infty}^{-\infty}p_{W_1 Z_1}(u-v^{\prime}) p_{W_2 Z_2}(v^{\prime})dv^\prime \tag{18} \\
&=& \int_{-\infty}^{+\infty}p_{W_1 Z_1}(u-v^{\prime}) p_{W_2 Z_2}(v^{\prime})dv^\prime \\
&=& p _ {W _ 1 Z _ 1 + W _ 2 Z _ 2}(u)
\end{eqnarray}

となり、 W _ 1 Z _ 1 + W _ 2 Z _ 2 0で対称な確率分布であることが示せました。ただし、(17)式から(18)式の変換は、 v ^ {\prime} = -vとしました。

バッチ正規化との関連

 この補足では、バッチ正規化を導入することで、Glorot法とHe法を使う必要性が低くなる理由を説明します。

 深層学習モデルの学習手法には、「バッチ学習」「オンライン学習」「ミニバッチ学習」という3つの方法があります。

 「バッチ学習」とは、すべての訓練データを用いて、一気にパラメータを更新する手法です。一方、「オンライン学習」は一つのサンプルごとにパラメータを更新する手法です。

 バッチ学習の場合、すべての訓練データを使うため、パラメータの更新が効率的に行われるという長所があります。一方で、局所解に陥りやすく、すべてのデータをメモリにのせられないと学習を始められないという短所もあります。

 逆に、オンライン学習では、バッチ学習に比べて、局所解を回避しやすい長所があります。一方で、一回のパラメータ更新に、一つのサンプルしか用いないため、非効率的であるという短所があります。

 「ミニバッチ学習」はこれらの手法の中間的な役割を果たします。訓練データを複数のグループ(ミニバッチ)に分け、そのグループごとにパラメータの更新を行います。これにより、バッチ学習とオンライン学習の長所を活かし、それぞれの短所が緩和されることがあります。

 このようなミニバッチ学習を行う際に、各層の出力を平均 0、分散 1に強制的に変換し、順伝播させていくという手法があります。この変換をバッチ正規化と呼びます。具体的には、第 iサンプルの第 L層目の第 jユニットの出力 z _ {ji}をバッチ正規化後の出力 \tilde{z} _ {ji}に、以下のように変換します。


\begin{eqnarray}
\tilde{z}_{ji} = \dfrac{z_{ji} - \hat{\mu}}{\sqrt{\hat{\sigma}^2+\epsilon}}
\end{eqnarray}

ただし、 Nはミニバッチのサンプル数、 \hat{\mu} \hat{\sigma}^2は以下のように計算されます。


\begin{eqnarray}
\hat{\mu} &=& \dfrac{1}{N} \displaystyle{\sum_{i=1}^N} z_{ji} \\
\hat{\sigma}^2 &=& \dfrac{1}{N} \displaystyle{\sum_{i=1}^N} (z_{ji}-\hat{\mu})
\end{eqnarray}

です。

 既に述べたように、バッチ正規化とは各層の出力を平均 0、分散 1に変換する手法です。したがって、バッチ正規化を用いれば、深層学習モデルに含まれるすべての層の出力の分散を 1に揃えることができます。したがって、バッチ正規化をすることで、Glorot法やHe法を使う必要性が低くなります。