【E資格対策】学習率とパラメータ初期化の最適化手法

適応的な学習率を持つアルゴリズム

AdaGrad(Adaptive Gradient)

過去の勾配の二乗の累積和に基づいて各パラメータの学習率を調整するアルゴリズム.

更新式は以下の通り.

gt,i=θiL(θt,i)Gt,i=Gt1,i+gt,i2θt+1,i=θt,iηGt,i+εgt,i\begin{align*} g_{t, i} & = \nabla_{\theta_{i}} L(\theta_{t, i}) \\ G_{t, i} & = G_{t-1, i} + g_{t, i}^{2} \\ \theta_{t+1, i} & = \theta_{t, i} - \dfrac{\eta}{\sqrt{G_{t, i}} + \varepsilon} g_{t, i} \end{align*}

ここで, gt,ig_{t, i} はステップ tt における勾配, Gt,iG_{t, i} は勾配の二乗の累積和, θ\theta はパラメータ, η\eta は全体の学習率, ε\varepsilon はゼロ除算を防ぐための微小な正の定数である.

RMSProp(Root Mean Square Propagation)

AdaGradでは, 学習の最初から勾配の二乗の累積和を計算し続けることで, 学習率が過度に減少してしまう問題があった.

そこで, RMSPropでは, 勾配の二乗に指数関数的な重みを付けた移動平均を利用することで, 過去の勾配情報を取り除き, AdaGradよりも高速で収束するようにした.

更新式は以下の通り.

gt,i=θiJ(θt,i)Gt,i=γGt1,i+(1γ)gt,i2θt+1,i=θt,iηGt,i+εgt,i\begin{align*} g_{t, i} & = \nabla_{\theta_{i}} J(\theta_{t, i}) \\ G_{t, i} & = \gamma G_{t-1, i} + (1 - \gamma) g_{t, i}^{2} \\ \theta_{t+1, i} & = \theta_{t, i} - \dfrac{\eta}{\sqrt{G_{t, i}} + \varepsilon} g_{t, i} \end{align*}

AdaGradではステップを重ねると ηGt,i+ε\dfrac{\eta}{\sqrt{G_{t, i}} + \varepsilon} の分母が大きくなりすぎる場合があり, 勾配に関わらず更新が進まなくなる問題がある. RMSPropではその対策をするために, γ\gamma というパラメータを導入している.

Adam(Adaptive Moment Estimation)

RMSPropにMomentumを導入して, 過去の勾配の指数関数的に減衰する平均も保持するアルゴリズム.

更新の手順は以下の通り.


  • 各パラメータに対する損失関数の勾配を計算する.
gt,i=θiJ(θt,i)g_{t, i} = \nabla_{\theta_{i}} J(\theta_{t, i})
  • これまでの平均(第一モーメント)と分散(第二モーメント)の推定値を更新する.
mt,i=β1mt1,i+(1β1)gt,ivt,i=β2vt1,i+(1β2)gt,i2\begin{align*} m_{t, i} & = \beta_{1} m_{t-1, i} + (1 - \beta_{1}) g_{t, i} \\ v_{t, i} & = \beta_{2} v_{t-1, i} + (1 - \beta_{2}) g_{t, i}^{2} \end{align*}
  • これらのモーメントの推定値は, 初期値が 00 なのでバイアスがかかっている. そこで, バイアス補正を行う.
m^t,i=mt,i1β1tv^t,i=vt,i1β2t\begin{align*} \hat{m}_{t, i} & = \dfrac{m_{t, i}}{1 - \beta_{1}^{t}} \\ \hat{v}_{t, i} & = \dfrac{v_{t, i}}{1 - \beta_{2}^{t}} \end{align*}
  • 最後にパラメータの更新を行う.
θt+1,i=θt,iηv^t,i+εm^t,i\theta_{t+1, i} = \theta_{t, i} - \dfrac{\eta}{\sqrt{\hat{v}_{t, i}} + \varepsilon} \hat{m}_{t, i}

パラメータの初期化戦略

Xavier法(Glorot法)

ニューラルネットワークの重みを初期化するための手法の一つで, 様々な層に渡って勾配の分散を釣り合わせるという考え方に基づいている.

Xavier法では, 左右対称で中央付近を線形関数として見なせるシグモイド関数や tanh\tanh 関数を活性化関数として使用する場合に適している. 前層のノードの個数を nn としたとき, 1n\dfrac{1}{\sqrt{n}} の標準偏差を持つ分布を利用する.

  • 一様分布の場合 : WU(6nin+nout,6nin+nout)W \sim U \left( -\dfrac{\sqrt{6}}{\sqrt{n_{in} + n_{out}}}, \dfrac{\sqrt{6}}{\sqrt{n_{in} + n_{out}}} \right)

  • 正規分布の場合 : WN(0,2nin+nout)W \sim N \left( 0, \dfrac{2}{\sqrt{n_{in} + n_{out}}} \right)

ただし, ninn_{in} は重みを掛け合わせる入力ニューロンの個数, noutn_{out} は次の槽に供給する出力ニューロンの個数である.

He法(Kaiming法)

Xavier法は, ReLU関数のような非対称な活性化関数には適用が難しい. そこで, He法では, 前層のノードの個数を nn としたとき, 2n\sqrt{\dfrac{2}{n}} の標準偏差を持つ分布を利用する.

  • 一様分布の場合 : WU(6nin,6nin)W \sim U \left( -\sqrt{\dfrac{6}{n_{in}}}, \sqrt{\dfrac{6}{n_{in}}} \right)

  • 正規分布の場合 : WN(0,2nin)W \sim N \left( 0, \sqrt{\dfrac{2}{n_{in}}} \right)

参考文献