Deep Learning論文紹介「Deep learning via Hessian-free optimization」その2

"Hessian-Free"という新しい最適化手法をDeep Learningのauto-encoderの学習に使ってみたら事前学習なしで既存の報告の性能を超えたぞ凄いだろう、という話。

Deep Learning論文紹介「Deep learning via Hessian-free optimization」の続き。

病的な勾配の例と、それにニュートン法が向いていることの説明。たとえばニューラルネットである同じ層の2つのニューロンa, bについて入出力の重みがほぼ同じとする。aのある重みiを上げて、bの対応する重みjを下げるような方向dへの更新を考える。この時d方向の勾配はほとんど0。曲率もほとんど0。だから勾配法みたいな1次の最適化手法ではほとんど更新されない。一方ニュートン法みたいな2次の方法なら分母に曲率が来るからもっと速く更新される。

本題:ヘシアンフリー最適化について。ヘシアンフリー(HF)は

  • ヘシアンHを計算しない(他の多くのquasi-Newtonと違って)
    • 代わりにHdを有限差分法で直接求める(ようするに2回勾配を計算して引く)
  • 目的関数ではなくそれの二次近似qθに対してLinear Conjugate Gradientで解く。
    • N次元なら最大Nステップかかるが、適当に打ち切る。
    • 一般的に共役勾配法と言われるNon-linear Conjugate Gradientと違って、曲率に関する再計算が必要ない。これは目的関数を曲率一定の曲面で最初に近似してるから。要するに二次近似してるから二階微分は定数でHが変わらないってことでHdも変わらないから再計算がいらない。


感想:共役勾配法、目的関数が2次の時には2回で収束するという誤解をしていたけども、それは「次元が2次元だから2回で収束する」ということだったようだ。要するにN次元なら最大N本の共役な方向が選ばれて、そっち方向にどんだけ進めばいいかは目的関数が二次なら勾配を曲率で割ることで一発で正確に求められる。だから最大N回。「曲率で割る」が他の方法だとNxN行列の逆行列を計算することになって死ねるけどHessian-FreeではHdを差分法で求めちゃうから大変じゃない、と。面白くなってまいりました。次は4章から。

さいごに

この記事はDeep Learningに興味を持った著者が、関連論文を読んで勉強しながら書いているものです。そのため間違いなどが含まれている可能性があります。もしなにか気になる点がありましたらご指摘いただけるとありがたいです。