最適化アルゴリズム

パラメーターの最適化アルゴリズムには、もっともシンプルな確率的勾配降下法(SGD)をはじめとする Momentum 法、AdaGrad 法、Adam 法などが提唱されている。どのアルゴリズムが最も優れているのかは一概にいえない。データの種類や損失関数(交差エントロピー誤差)の形によって、効率的なアルゴリズムが違ってくる。また、各アルゴリムに含まれるハイパーパラメーターの設定値によっても、収束が早かったり遅かったり、あるいは収束したりしなかったりする。そのため、真のデータの種類や損失関数の形が知らない以上、アルゴリズムが簡単な確率的勾配降下法を使ったり、あるいはいろいろと改良が施された Adam 法などを使ったりするもよい。

確率的勾配降下法(SGD)

交差エントロピー誤算の傾き(勾配)を使ったパラメーター最適化アルゴリズムである。アルゴリズム自体は明快であるが、収束するのに長い時間を要する。確率的勾配降下法のアルゴリズムは、次のような数式で表せる。

\[ \mathbf{w} \leftarrow \mathbf{w} + \Delta \mathbf{w} \] \[ \Delta \mathbf{w} = - \eta \nabla L \]

L は交差エントロピー誤差であり、η は学習率とよばれている。

Momentum 法

パラメーターを、運動量(momentum)とよばれる物理量を用いて、物理法則に従って最適化していくアルゴリズムである。数式で表すと次のようになる。

\[ \mathbf{w} \leftarrow \mathbf{w} + \mathbf{\nu} \] \[ \mathbf{\nu} = \alpha \mathbf{\nu} - \eta \nabla L \]

ν は物理量の速度に対応する。α は減衰パラメーターで 1 よりも小さい値に設定するとことで、摩擦や空気抵抗を表し、速度が徐々に減ることを表している。速度が減少することで、余計な動きなどがなく、局地に早く到達することができる。

AdaGrad 法

AdaGrad 法は、確率的勾配降下法のときの学習率を、学習進度に応じて大きくしたり小さくしたり、学習率を調整しながらパラメーターの最適化を行なっていくアルゴリズムである。

\[ \mathbf{w} \leftarrow \mathbf{w} - \eta\frac{1}{\sqrt{h}}\nabla L \] \[ h = h +(\nabla L)◦ (\nabla L) \]

◦ は行列の各要素同士の掛け算を表す。この式から、学習が進むことで、h が大きくなり、学習効率 \(\frac{\eta}{\sqrt{h}}\) が小さくなっていく。

Adam 法

Adam 法は、Momentum 法と AdaGrad 法を合わせたアルゴリズムとなっている。数式で、次のように書き表わせる。

\[ \mathbf{m}_t=\rho_1\mathbf{m}_{t-1}+(1-\rho_1)\mathbf{\nabla L}^{(t)} \] \[ \mathbf{v}_t=\rho_2\mathbf{v}_{t-1}+(1-\rho_2)(\mathbf{\nabla L}^{(t)})^2 \] \[ \hat{\mathbf{m}}_t=\frac{\mathbf{m}_t}{1-\rho_1^t} \] \[ \hat{\mathbf{v}}_t=\frac{\mathbf{v}_t}{1-\rho_2^t} \] \[ \Delta\mathbf{w} =-\frac{\eta}{\sqrt{\hat{\mathbf{v}}_t+\varepsilon}}\hat{\mathbf{m}}_t \] \[ \mathbf{w} \leftarrow \mathbf{w} +\Delta\mathbf{w} \]

References

  • ZoneTsuyoshi. 深層学習の最適化アルゴリズム. Qiita
  • 斎藤 康毅. ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装. オライリージャパン. 2016.