重み初期化 (weight initialization): Xavier初期化とHe初期化

1. 重み初期化 (weight initialization)とは [概要]

重み初期化 (weight initialization)は,ディープニューラルネットワーク(DNN)において,各線形層のパラメータを学習する時に,学習中に重みの分布に偏りが起きていかないような初期分布で各重みをランダムに初期化しておくことにより,学習の繰り返しを安定させ,高速な収束も促すことができるテクニックである.

この記事では2つのDNN向け定番初期化手法を紹介する. (1) シグモイド関数活性化を持つDNN向けのXavier初期化 (もしくはGlorot初期化) [Glorot and Bengio, 2010](3節)と,(2) Xavier初期化をReLU型活性化関数向けに少しアレンジしたことで,CNN向け重み初期化として定番となったHe初期化 [He et al., 2015](4節)について,紹介する.

ファイニンチューニングなどを行わない線形層は,SGDを開始するある程度良い初期値がないと上手く学習できないので(1.1節),それらの線形層のパラメータは全て学習開始前に,ランダム初期化しておく必要がある.従って,DNNをスクラッチから学習する際の全線形層に対してや,事前学習済みCNNをファインチューニングする際の新しく追加した各線形層に対しては,Xavier初期化/ He初期化によりランダム初期化を学習前に行う.

1.1 記事の構成

2節以降のこの記事では,以下の構成で2種類のDNN重み初期化について述べる.重要なのは,現在定番手法となっている「He初期化(4節)」である:

  • 2節 DNNで重み初期化が必要な理由は?
  • 3節 Xavier 初期化 [Glorot and Bengio, 2010]
  • 4節 He初期化 [He et al.,2015] (ここが本題)
  • 5節 まとめ

1.2 重み初期化の目的

DNNの学習中を繰り返している際に,「線形層(畳み込み層 or 全結合層) 」 ReLU型活性化層」を経る前後において,各隠れ層のニューロンの活性化値の分布を入力と出力のあいだ一定に保つと,勾配消失や勾配爆発をさせて,最適解までスムーズに学習を継続しやすくなる.これを達成する目的で,重み初期化がSGDを行う前に予め初期化フェーズとして行われる.

前後での値の分散一定化は,通常「入出力ノード数Nで正規化したガウス分布により重みをランダム初期化」することで実現する.Xavier初期化の論文 [Glorot and Bengio, 2010] では,この処理を正規化初期化と呼んでいる.この正規化初期化により,勾配消失・爆発や局所解収束を防ぐことができ,深い層数のDNNでも安定して学習することができる.

ただし,強力なDNNの学習安定化・高速化手法であるバッチ正規化 [Ioffe and Szegedy, 2015] の登場以降は,重み初期化の学習安定化への貢献度はあまり大きくないかもしれない(4.2節で詳しく議論).バッチ正規化が登場して定番化したのちは,SGDの各iterationで,バッチ正規化型を挿入した場所ごとに正規化することができ,中間層の値を随時調整することが可能になった.これによりかなり深いResNetTransformer (レイヤー正規化)でも,収束性のよい安定した学習が,行いやすくなった.つまりバッチ正規化のほうが学習安定性への貢献度が高くなり,重み初期化の重要度は下がったかもしれない

1.3 正規化初期化の2ステップ構成

初期化を行うDNNの$l$層目の線形層(もしくは畳み込み層)において,$i$番目の入$x_i$から,$j$番目の出力(活性化値)への重みを,$w_{ji}^{(l)}$とする.そして,入力ノード数を$n^{(l)}$とし,出力ノード数を入力ノード数を$n^{(l+1)}$とする.

このとき,Xavierの重み初期化(3節)は,以下の2ステップにより実施する:

  • [ステップ1]:
    • $l$番目の線形層において,ガウス分布からi.i.dな$w_{ji}^{(l)}$をサンプリングする.
  • [ステップ2]:
    • 分散が$\hat{n} = \frac{n^{(l)}+n^{(l+1)}}{2}$(=入・出力ノード数の平均値)になるように,各サンプリング値$w_{i,j}^{(l)}$ を $w_{i,j}^{(l)} = w_{i,j}^{(l)} \cdot \sqrt{ \frac{2}{n^{(l)}+n^{(l+1)}} }$ に正規化する.

ステップ2により,学習開始後は順・逆伝搬時ともに,各層の出力(活性化値)の分散の大きさをキープできるように分散が分配され,重み初期化される(これが「正規化初期化」).

Xavier初期化(3節)は「中間層の活性化関数がシグモイド関数のニューラルネットワーク」向けの古典的な手法であった.一方,He初期化(4節)は,「中間層の活性化関数がReLU型関数であるDNN向けの手法」であり,ステップ2の正規化分散値を少しだけ変更する.このHe初期化が,現代のCNNでは主に使われている.

1.4 重み初期化の変遷

過去の3層のMLPは,重みパラメータを,平均ゼロ・標準偏差1の正規分布を$\frac{1}{n^{l}}$と出力ノード数で正規化した重みで初期化 [LeCun et al., 1998] しておけば,問題なく誤差逆伝搬法で学習できていた (2.1.2節)

この古典的重み初期化を,LeCunの重み初期化 Lecun初期化と呼ぶこともある.

それに対して,4層以上の学習可能層を含むDNNでは,初期化分布の分散値の大きさ次第で,学習に問題が出がちであった(2.2節).DNNで順伝搬で多数の層を経ると,「入力が小さい値だと出力が 0に」 or 「入力が大きい値」だと1 に近づく「シグモイド型の活性化関数」で何度も活性化をおこなう.すると,初期の分散値次第で,多数の層を経ると勾配が消失して重みがほぼ更新されなくなったり,逆に勾配爆発で早くに各層の活性化値が1,-1に飽和するケースもあった.

そこで,まず,シグモイド型活性化関数を中間層に用いるDNN向けのXavier初期化が提案された(3節).同時期にReLU [Nair and Hinton, 2010] も登場するが,Xavier初期化は,ReLUとの相性が良くない.

そこで,ReLU向けの He初期化が提案された(4節).以降,He初期化は,CNN向けのスクラッチからの学習を行う際の,重み初期化の定番手法となった(特に残差接続を用いたResNetResNeXt系CNNにおいて).

一方,画像の2D空間情報をあまり積極的に使わないTransformer系ネットワークでは,以後もXavier 初期化で各層の重み(ほとんどがアテンション係数)を初期化することが標準的である.同じくTransformer系ネットワークでよく用いるGELUレイヤー正規化に学習が助けられるので,Xavier初期化でスクラッチから学習することが標準的である.

2. DNNで重み初期化が必要な理由は?

2節では,まず「DNN向けに,特殊な重み初期化が必要となった理由」について整理する.

2.1 事前準備

2.1.1 ニューラルネットの線形層における順伝搬

まず,このあとの議論で必要なニューラルネットの基本事項として「線形層の順伝搬における,入出力の構成」を復習しておく.

ニューロンユニット
図1 ニューロンユニット(1層内の$j$番目の出力$y_j$を担当).

$l$番目の線形層とその直後の活性化層において,その$j$番目の出力ニューロンには,以下のような入力の計算が行われる(図1):

  • DNNの$l$番目の線形層において,$n^{(l)}$個の値$x_i$が入力される.
  • $x_i$に対応する重み$w_{i}$を掛けた値に対して,出力が$n^{(l)}$個出力され,その和にバイアスを与えた $\sum_{i=1}^{n^{(l)}} w_{ji} x_i +b $を1つ,ユニットの中間出力として算出する.
  • 活性化関数で最後に活性化を行い,ユニット出力 $y_j$ を出力する.
  • 活性化関数$f(\cdot)$には,シグモイド関数やtanhなどのシグモイド形の関数を使用する.

2.1.2 三層MLP時代の重み初期化

ディープラーニング隆盛以前の3層MLPでは,一様分布 を$\sqrt{n^{(l)}}$で割って正規化した$U(-\frac{1}{\sqrt{n^{l}}},\frac{1}{\sqrt{n^{l}}})$ からランダムサンプリングを行い,各層の重みの値を初期化していた [LeCun et al., 1998].これは,ヒューリスティックな重み初期化法であったが,3層MLPではこのランダム初期化で,重みの偏りのない十分な識別力を持つ隠れ層表現を学習できていた.

しかし,深いDNNの重みを「特定の分散値の範囲の」ガウス分布で初期化すると,学習に問題が出てくることがわかり(2.2節),DNNでも学習を安定させることができるXavier初期化 / He重み初期化が,提案されていくこととなる.

2.2 重みが偏って,うまく行かないケース

2.1.1のようなMLPでは,活性化関数にtanhを使う.それに対して $f(\cdot)$ に,シグモイド系の関数を用いると,活性化値 $f(y_j)$ は [0,1] の範囲の値が出力される.

シグモイド関数には以下のような特徴がある:

  • 活性化値も,$x=0$ 付近の「線形に近い部分」以外の両端は,それぞれ出力が$0$か$1$に飽和しやすい.
  • また,$f(y_j)$の微分値も,$x=0$ 付近以外の両端は,$0$ に飽和する.

このとき,層の数が多いDNN (※ Xavier初期化の当時の,5層~8, 9層程度のもの)を,隠れ層の活性化関数シグモイド関数にして設計すると,学習時に以下の2つケースの問題が生じて,学習が中途半端になってしまう:

  • [ケース1] 活性化値が,シグモイド関数の端値の「0と1」に偏る:
    • 例えば,各層の重みを 平均=0.5,分散 = 1.0のガウス分布で初期化.
    • 活性化値が,出力両端の0と1に集中してしまう.
    • 0と1に偏った活性化は,勾配が指数関数的に減衰していき0に近づき,勾配消失してしまう.
    • 学習がそれ以上進行せず,よい解まで到達できない.
  • [ケース2] 活性化値が,平均値くらいの同じ値に偏る:
    • 例えば,各層の重みを平均=0.5,分散 = 0.001のガウス分布で初期化.
    • 勾配消失はしないが,活性化値が,0.5 付近に狭く偏った状態で収束してしまう.
    • 重みも同じ値ばかりに偏るので,CNNの表現力が乏しくなってしまう.同じ層内で,各ニューロンが同じ識別境界ばかり作ってしまうと,識別力が弱くなってしまう.

以上の2ケースのうち,どちらかに陥ると,識別モデルの良い重み値を学習できない(※ 参照記事リンクに挙げた,記事1記事2などでは,重みをわざと偏らせる実験がなされており,参考になる).

そこで [Glorot and Bengio, 2010] は,深いDNNでも上のケースが起こらずに,安定して大域解まで収束できる手法を提案する.

3. Xavier初期化

Xavier 初期化が提案された研究 “Understanding the difficulty of training deep feedforward neural networks.” [Glorot and Bengio, 2010] は,以下の2つの論点で(※ 当時の)CNNの学習の難しさを探った:

  1. 各層における活性化値の分布が,学習中にどう変わっていくかを観察する(※「活性化値の計測・可視化ツール」の提案).これにより,対象のDNN設計が「どのくらい学習が難しいか」を計測できる.
  2. シグモイド活性化関数が,どういう重み初期化だとよくないかを探った.

具体的には,5層MLPに画像識別モデルを学習する際に(学習対象は MNIST,CIFAR10など),1のツールで分析を行い,2の結論になることを実証した.2の結果をうけて,独自の重み初期化である正規化初期化(Xavier初期化)を提案したのがこの論文である.

3節では,まず 概要を述べたあと(3.1節),実際にどういう分布で「正規化ランダム初期化」を行うかを先に結論から述べる(3.2節).その後,導出手順と原理・仮定について詳しくみてみたい(3.3節).

この記事で一番大事なのは,現在定番化している He初期化(4節)である.3章は少し長くなるが,あくまでその準備として,He初期化のベース手法であるXaiver初期化をまず紹介することに注意されたい.

3.1 Xavier初期化の概要

[Glorot and Bengio, 2010] は,正規化初期化を提案した.順伝搬と逆伝搬時に,各層の入力分散と出力分散を保持できる手法なので,各ニューロンにおけるシグモイド活性値の2クラスの境界領域が,「平均値 + その周辺の分散の範囲」の,シグモイド関数2クラス境界部分に,綺麗に載りやすい(3.3節).

これにより,2節で述べた「DNNの学習で重みが偏るケース」を防ぎ,勾配消失による低速化や表現力不足も起きないようにでき,学習を安定化・高速化させられるようになった.DNNやCNNを,事前学習無しでスクラッチからの学習する際に,これらの重み初期化を使うことで正しく学習できるすくなるので,とても重要な手法である.

3.2 Xavier初期化に用いる2種類のランダム分布

3.2.1 ガウス分布

平均0分散1を,入出力ノード数の平均$\frac{ n^{(l)} +n^{(l+1)} }{2}$で割ってスケーリングしたガウス分布から,重み初期値をランダムサンプリングする(バイアスは0で初期化):

\begin{align}
w_{i,j}^{(l)} \sim \mathcal{N} \left(0,\sigma = \sqrt{\frac{2}{ n^{(l)} +n^{(l+1)} }} \right)\tag{3.1}
\end{align}

一方,LeCunの重み初期化では,入力ノード数だけを用いて初期化していた:

\begin{align}
w_{i,j}^{(l)} \sim \mathcal{N} \left(0,\sigma = \sqrt{\frac{2}{ n^{(l)} }} \right)\tag{3.2}
\end{align}

3.2.2 一様分布

一様分布から重み初期化する場合は,以下のように重み初期化を行う:

\begin{align}
w_{i,j}^{(l)} \sim \sqrt{\frac{6}{n^{(l)} + n^{(l+1)}}} U[-1,1] \tag{3.3}
\end{align}

Xavier初期化 の論文 [Glorot and Bengio, 2010] では,一様分布をメインにしてXiavier初期化が導出されているのだが,この記事では紹介しない.He初期化の論文での「ガウス分布ベース」の,数式記述スタイルに揃えて,以後も紹介していく(読者には,古い書き方のXavier初期化の論文よりも,現代風の簡潔なライティングで読みやすい 「He初期化の論文 [He et al., 2015] 」をメインに読んでほしいため,この記事では,そちらに記述スタイルを合わせたいのが理由である).

3.3 計算式の導出:層を経ても分散をキープする

ここからは,「ガウス分布からの初期化(3.2.1節)」の計算式の導出について述べる.

2.2節の重みが偏っていく2ケースを避けるために,まず「重みの分散が,単位長1である」と条件づける:

\[Var(w_i) = 1 \tag{3.4}\]

$l$層目の線形層の入力ノードが$n^{(l)}$個あるとする.$j$番目のニューロンの出力は$y_j = \bm{W}^{(l)} \cdot \bm{x} + b$であるので,まず$y_j$の分散が以下のようになる:

\[Var(y_j) = Var \left ( w_{1j} x_1 + w_{2j} x_2 + \ldots + w_{n^{(l)}j} x_{n^{(l)}} + b \right) \tag{3.5}\]

ここで,ニューロンの各入力$x_i$(の分布)が i.i.d. であり,重み$w_{ji}$(の分布)もi.i.d.で,なおかつそれら2つの分布はお互い独立であると仮定する.

シグモイド系関数は,0付近では(※ 特に入力が[-1.5~1.5]のあたり),ほぼ線形の入出力関係である.つまり,「シグモイドの入力が分散1・平均0の範囲にあれば,線形関数である」と仮定できる.

すると,$w_i$と$x_i$が互いに独立であることから,式(3.5)右辺の各ユニット成分の分散は,更に以下のように分解できる:

\[Var(w_{ji} x_i) = Var(w_{ji})[E(x_i)]^2 + Var(w_{ji})Var(x_i) + [E(w_{ji})]^2 Var(x_i) \tag{3.6}\]

線形層の入力と重みが両方とも平均0で,分散1であると仮定すれば,(3.6)は以下のように簡潔になる:

\[
Var(w_{ji} x_i) =Var(w_{ji})Var(x_i) \tag{3.7}
\]

ここで$y_i$の分散は以下のようになる:

\begin{align}
Var(y_j) &= Var(w_{1j}) Var(x_1) + \ldots + Var(w_{n^{(l)}j}) Var(x_{n^{(l)}}) \\
&= \textcolor{red}{ n^{(l)} Var(w_{ji})} Var(x_i) \tag{3.6}
\end{align}

この式(3.6)から,出力ニューロンの分散 = 入力の各分散のn(l)倍である.よって,目的である「入力の分散 と出力の分散を同じにする」ためには,『式(3.6)の$n^{(l)} Var(w_i) = 1$にすればよい』ということがわかった.

以上より, Lecunの重み初期化[LeCun et al., 1998] では,重み$w_{ji}$の分散を以下のように$\frac{1}{n^{(l)}}$に設定して初期化する:

\begin{align}
Var(w_{ji}) = \frac{1}{n^{(l)}} \tag{3.7}
\end{align}

式(3.7)は,要するに重みの分散を,nl個の入力ノードの分散へ均等分配することをしている.

こうして,式(3.6)から,各$l$層の入力の分散 $Var(x_i)$ と出力の分散 $Var(y_j)$ を,同じ値にキープできる( ※ ここまでが[LeCun et al., 1998] の話 ) .


ただし,これだと入力ノード数$n^{(l)}$のみ考慮した均等分配になっている.DNNでは,AutoEncoderやCNNだと,入力と出力のノード数はバラバラで異なる.つまり,入力ノード数$n^{(l)}$だけを用いて正規化すると,逆伝搬時に弱くなる意味でも好ましくない.

したがって,逆伝搬時も,入力勾配の分散と出力勾配の分散を一定化させると,もっと学習が安定する.よって,逆伝搬時は,式(3.7)とは逆に,出力ノード数$n^{(l+1)}$により重みを正規化したい:

\begin{align}
Var(w_{ji}) = \frac{1}{n^{(l+1)}} \tag{3.8}
\end{align}


したがって,順伝搬の分配だけでなく逆伝搬時の分配も考慮した,入出力ノード数の平均 $\hat{n} = \frac{1}{n^{(l)} + n^{(l+1)}}$ を,ガウス分布の分散として正規化初期化に用いることを,Xavier初期化は最終的に提案した:

\begin{align}
Var(w_i) = \frac{1}{\hat{n}} \tag{3.9}
\end{align}

以上が,Xavier重み初期化の公式(3.9)の導出と,そこに到った背景である.

3.4 呼び名が2通りある件

この手法に,Xavier初期化Glorot初期化の2通りの呼び名がある件について,整理しておきたい.

Xavier初期化というよく使われる方の呼びかたであるが,主著者の名前が Xavier Glorot 氏であり,Xavierはファミリーネームである.「手法名にはファミリーネーム(苗字)をつける」というコンピュータサイエンスの慣習にのっとり,Glorot初期化で統一されたほうが,本来はややこしくなかった.よって,あとからこの慣習通りに, Glorot InitializerとかGlorot初期化と呼ぶ人たちもでてきて,名前が2個出きてしまった.

Xavier初期化が定着してしまったのは,初期の定番 deep learning ライブラリのcaffeにおいて,「’xavier’ type の初期化」と名付けられた影響が大きい.当時の研究者にはcaffeユーザーが多かったことから「Xavier初期化」の名前が定着した.実際,4節の論文 [He et al., 2015] でも,”Xavier”と名付けたのはcaffeであることに言及している(論文中のSection 2.2).

Xavier初期化は,2つ呼び名があったせいで「ライブラリごとに呼び名が違う問題」も生じている.例えば,Kerasは「GlorotNormal」を用いるとXavier重み初期化を使用できるが,PyTorch だと 「torch.init.nn.xavier_normal_」 である.いずれにせよ,主著者のフルネーム Xavier Glorot を知っておくしかない.

また,上述のKerasとPytorchの重み初期化は,[Hanin and Rolnick 2018]によると,(2018年当時)ガウス分布を「平均値で切り詰め(truncation)」している実装だったそうである .

4. He初期化

4.1 ReLU向けの改善版

He初期化 が,ReLU・PReLU向けの正規化初期として提案された [He et al., 2015].

Xavier初期化は,シグモイド型活性化関数むけに「活性化関数は(局所的に)線形である」という仮定のもとで使用できる 式 (3.7)を用いて,活性化の分散値を通過前後で一定にする初期化であった.よって,線形の仮定が使えない,非線形活性化関数のReLUやPReLUでは使用できない仮定である.そこで,ReLU・PReLUむけに正規化値を変更したHe初期化が提案された.

以降は,He初期化が,標準的なDNN,CNNの重み初期化手法として用いられることになる.

4.1.1 He初期化で変わった点

Xavier初期化では,式(3.7)のように標準偏差 $\sqrt{\frac{1}{n^{(l)}}}$ になるように,ガウス分布をスケーリングしていた.それをHe初期化では,ReLU・PReLUに対応させるために,$\sqrt{\frac{2}{n^{(l)}}}$ へと変更した.

Xavier 初期化では,式(3.6)の関係から$n^{(l)}Var(w_{ji}) = 1$となるように重み初期化することで,層の入出力の分散を同じ値にキープできた.しかし,PReLUを使う場合は,負の入力だと活性化値が0 or -1付近であり,すなわち「期待値が半分になる」ことから,式(3.7) の関係式は,以下のように変わる(詳しい導出は [He et al., 2015] を参照):

\begin{align}
Var(y_j) = \frac{1}{2} n^{(l)} Var(w_{ji}) Var(x_i)\tag{3.8}
\end{align}

よって$\frac{1}{2}n^{(l)}Var(w_{ji}) = 1$とすれば,入出力の分散を一定に保てる.したがって,He初期化では,以下の分散値になるよう,ガウス分布をスケーリングする:

\[ Var(w_{ji}) = \frac{2}{n^{l}}\tag{3.9}\]

ちなみに,[He et al., 2015] は,ReLU [Nair and Hinton, 2010]の発展型の,PReLU (Parametric Rectified Linear Units) も提案しており,DL界隈の重要論文の1つであると言える(※ ちなみに重み初期化同様に,PReLUも勾配消失を防ぐ).

4.2 バッチ正規化も併用すると,あまり役に立たない?

He初期化の論文と同時期に,CNN向けの隠れ層ごとの正規化であるバッチ正規化が提案された [Ioffe and Szegedy, 2015].He初期化 論文の脚注4でも「同時研究であるバッチ正規化も,同程度の画像認識性能を示した」と言及しているように,「Xavier初期化・He初期化」の重み初期化と,正規化という目的は共通点しており,認識性能でも近い手法である.

また,LSTMGRUを用いた自然言語処理や,Transformerにおいても,バッチ正規化の系列モデル向け改善版であるレイヤー正規化(Layer Normalization)[Ba et al., 2016] が頻繁に使用されている.つまり現在のDNNでは,バッチ正規化系の層を各中間層に挿入することで,学習を安定・高速化させることが標準的な設計方法である.

(活性化値の)バッチ正規化は,DNNの学習安定化・高速化の役割を,学習中の各繰り返し(iteration)で,適応的におこなう.この意味で,学習の初期化時だけ調整する「重み初期化」よりも,バッチ正規化の学習安定化への貢献度は高いと言えるかもしれない(あくまで筆者個人の見解であることに注意).

ただし,バッチ正規化の発展型の各論文でも「実験では,重み初期化にはLecun/Xavier/He初期化を使った」とあるだけで,2者間の貢献度比較の議論や実験まではされない(どちらがどれくらい効くかは,実験系もつくりづらそうである).

一方,2015年以降は,ResNet残差接続を用いることや,各解像度同士をスキップ接続した「U-NetライクなEncoder-Decoder」構造,およびそれと似た構造の Feature Pyramid Networkでスキップ接続を用いることなどで,CNN・DNNにおける勾配消失問題は,解決されるようになってきている.従って,なおのこと「どの技術が学習の安定化にどのくらい貢献しているか」の切り分けは難しくなっており,あまり議論したくないので,両者を比較せずじまいなのかもしれない.残差ブロックやスキップ接続を用いたネットワークで,He重み初期化がどれくらい効いているかについても,現時点(2021年12月)では管理人は詳しくない.

5. まとめ

(ランダム)重み初期化は,多数の層を持つDNNも,安定して学習できる,DNN向けのランダム正規化初期化テクニックである.初期化ガウス分布を,入・出力ノード数平均値でスケーリングした分散値で初期化することで,順逆伝搬時ともに,活性化層の入出力間で値の分散をキープでき,(学習率を高めて,大きい勾配で)高速に学習できる.なおかつ,ローカル極値で最適化が収束して止まってしまうこともない「収束性の良い学習」も実行できるようになった.

重み初期化の代表例として,Xavier初期化とHe初期化を紹介したが,両者はスケール係数が少し異なる改善が行われくらいの小さな違いである(4.1.1節).

また,ReLU層の登場後は,ReLU層に合わせて正規化スケール定数を変更した「He初期化」が標準的に用いられるようになった.ReLUを使用するDNNだと,He初期化の方が早く安定して収束させることができる.

関連書籍

References

  • [Ba et al., 2016] J. Ba, R. Kiros, and G. E. Hinton. Layer normalization. ArXiv, abs/1607.06450, 2016.
  • [Glorot and Bengio, 2010] Xavier Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In Proceedings of International Conference on Artificial Intelligence and Statistics (AISTATS), volume 9, pages 249–256, 2010.
  • [Hanin and Rolnick, 2018] Hanin, B., & Rolnick, D. (2018). How to start training: The effect of initialization and architecture. arXiv preprint arXiv:1803.01719.
  • [He et al., 2015] He, K., Zhang, X., Ren, S., Sun, J.: Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In ICCV, 2015.
  • [Ioffe and Szegedy, 2015] S. Ioffe and C. Szegedy, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift” In ICML , 2015.
  • [LeCun et al., 1998] LeCun, Y., Bottou, L., Orr, G. B., and Mu ̈ller, K. “Efficient backprop.”, (1998) In Neural Networks, Tricks of the Trade.
  • [Nair and Hinton, 2010] Nair, V., Hinton, G.E. Rectified linear units improve restricted Boltzmann machines. In, ICML 2010.

参照外部リンク

関連記事