理論関連事項

統計学の基本事項,確率分布の詳細,各種データ解析法の理論的背景について.

深層学習等のパラメーター学習のソルバーとして用いられる勾配降下法をより良く進めるために,様々な最適化法,すなわちオプティマイザーが考案されてきた.ここで,学習で決定したいパラメーターを $\boldsymbol{\theta}$,コスト関数を $E(\boldsymbol{\theta})$,現在のエポックを $t$,そのエポックにおけるコスト関数の勾配を $\boldsymbol{g}_t$,学習率を $\alpha$,$\boldsymbol{\epsilon}$ はゼロ除算を回避するための正の小さな定数からなる勾配と同じ形の行列とする.コスト関数の勾配は以下で計算される値.以下で,積は特別な記載がない限りアダマール積.

\begin{eqnarray*}\boldsymbol{g}=\nabla{E}=\left(\begin{array}{cccc}\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{11}}}}&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{12}}}}&\cdots&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{1n}}}}\\\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{21}}}}&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{22}}}}&\cdots&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{2n}}}}\\\vdots&\vdots&\ddots&\vdots\\\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{m1}}}}&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{m2}}}}&\cdots&\displaystyle{\frac{\partial{E(\boldsymbol{\theta})}}{\partial{\theta_{mn}}}}\end{array}\right)\tag{1}\end{eqnarray*}

深層学習ではデータは多くの場合,ミニバッチで読まれるため,そのときの勾配降下法は正確には確率的勾配降下法 (SGD: Stochastic Gradient Descent) を意味する.

オプティマイザーを持たない基本的な勾配降下法 (Vanilla SGD)

オプティマイザーを使わない場合の勾配降下法によるパラメーター更新は以下の式によって計算される.

\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}-\alpha\boldsymbol{g}_{t}\tag{2}\end{eqnarray*}

モーメンタム項を加えた勾配降下法 (Momentum SGD)

現時点までにパラメーターを更新していた方向に対してさらにパラメーターを変化しやすくする慣性項を取り入れた方法.ここで,$\gamma$ は慣性の減衰率で1より小さい値を指定する.

\begin{eqnarray*}\boldsymbol{v}_{t+1}\gets\gamma\boldsymbol{v}_{t}-\alpha\boldsymbol{g}_{t}\tag{3}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}+\boldsymbol{v}_{t+1}\tag{4}\end{eqnarray*}

Nesterov accelerated SGD

Nesterov の加速法は以下の式によって計算される.

\begin{eqnarray*}\boldsymbol{v}_{t+1}\gets\gamma\boldsymbol{v}_{t}-\alpha\nabla{E}({\boldsymbol{\theta}_{t}+\gamma\boldsymbol{v}_{t})}\tag{5}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}+\boldsymbol{v}_{t+1}\tag{6}\end{eqnarray*}

AdaGrad SGD

AdaGrad は学習率を学習状況に応じて少しずつ小さくするアダプティブな方法.ここで,$\boldsymbol{g}_{t}^2$ は $\boldsymbol{g}_{t}$ と $\boldsymbol{g}_{t}$ のアダマール積.

\begin{eqnarray*}\boldsymbol{r}_{t+1}\gets\boldsymbol{r}_{t}+\boldsymbol{g}_{t}^2\tag{7}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}-\frac{\alpha}{\sqrt{\boldsymbol{r}_{t+1}+\boldsymbol{\epsilon}}}\boldsymbol{g}_{t}\tag{8}\end{eqnarray*}

RMSprop SGD

RMSprop は AdaGrad の純然たる後継の最適化法.AdaGrad では勾配の二乗の平均を計算していたところ,RMSprop では勾配の二乗の指数移動平均を計算するため,より最近のパラメーター更新の度合いによって学習率が調整される.

\begin{eqnarray*}\boldsymbol{r}_{t+1}\gets\beta\boldsymbol{r}_{t}+(1-\beta)\boldsymbol{g}_{t}^2\tag{9}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}-\frac{\alpha}{\sqrt{\boldsymbol{r}_{t+1}+\boldsymbol{\epsilon}}}\boldsymbol{g}_{t}\tag{10}\end{eqnarray*}

AdaDelta SGD

AdaDelta は学習率を新たに導入した変数によって置き換えた方法.ハイパーパラメーターは $\beta$ のひとつだけとなる.

\begin{eqnarray*}\boldsymbol{r}_{t+1}\gets\beta\boldsymbol{r}_{t}+(1-\beta)\boldsymbol{g}_{t}^2\tag{11}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{s}_{t+1}\gets\beta\boldsymbol{s}_{t}+(1-\beta)\boldsymbol{v}_{t}^2\tag{12}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{v}_{t+1}\gets\frac{\sqrt{\boldsymbol{s}_{t+1}+\boldsymbol{\epsilon}}}{\sqrt{\boldsymbol{r}_{t+1}+\boldsymbol{\epsilon}}}\boldsymbol{g}_{t}\tag{13}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}-\boldsymbol{v}_{t+1}\tag{14}\end{eqnarray*}

Adam SGD

Adam はとても収束が速いオプティマイザー.勾配の変動で勾配の平均値を割ることで,勾配が大きい部分ではより大きく値を更新し,勾配の変動が激しいところでは更新幅を小さくする.

\begin{eqnarray*}\boldsymbol{m}_{t+1}\gets\beta_1\boldsymbol{m}_{t}+(1-\beta_1)\boldsymbol{g}_{t}\tag{15}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{v}_{t+1}\gets\beta_2\boldsymbol{v}_{t}+(1-\beta_2)\boldsymbol{g}_{t}^2\tag{16}\end{eqnarray*}
\begin{eqnarray*}\hat{\boldsymbol{m}}\gets\frac{\boldsymbol{m}_{t+1}}{1-\beta_1^{t+1}}\tag{17}\end{eqnarray*}
\begin{eqnarray*}\hat{\boldsymbol{v}}\gets\frac{\boldsymbol{v}_{t+1}}{1-\beta_2^{t+1}}\tag{18}\end{eqnarray*}
\begin{eqnarray*}\boldsymbol{\theta}_{t+1}\gets\boldsymbol{\theta}_{t}-\alpha\frac{\hat{\boldsymbol{m}}}{\sqrt{\hat{\boldsymbol{v}}+\boldsymbol{\epsilon}}}\tag{19}\end{eqnarray*}
Hatena Google+