ポタージュを垂れ流す。

マイペースこうしん(主に旅行)

自然勾配法

最近,甘利さんの統計神経力学の本を研究室内で輪読していて,自分が自然勾配法の章を担当することになった.せっかく資料を作った(良くも悪くも読みづらく,自分で全部再構成する形になった)ので一部をブログに載せておこうと思う.(あと二重降下の章も担当することになったのでこの記事みたくそのうちブログにするかもしれない)

最急降下法と自然勾配法

最急降下法の学習速度

関数 $f _ {\boldsymbol{\theta}}$ のパラメータを期待損失 $L(\boldsymbol{\theta})$ を最小化することで学習したい(この記事では $f _ {\boldsymbol{\theta}}$ の値は1次元であることを仮定しておく).実際に行うのは経験損失での学習だが,一旦ここでは期待損失で考えることにする.代表的な学習法として,最急降下法を使うことが考えられる.

$$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ t-η\nabla L(\boldsymbol{\theta} _ t) $$

$\nabla L(\boldsymbol{\theta})$ は $\boldsymbol{\theta} ^ \ast $ 近傍では $\varDelta\boldsymbol{\theta}=\boldsymbol{\theta}-\boldsymbol{\theta} ^ \ast $ として

$$ \nabla L(\boldsymbol{\theta})\approx \nabla L(\boldsymbol{\theta} ^ \ast )+\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )\varDelta\boldsymbol{\theta} $$

と近似でき,さらに $\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )=0$ となっている.したがって,$\boldsymbol{\theta} ^ \ast $ 近傍での更新式は

$$ \begin{split} \varDelta\boldsymbol{\theta} _ {t+1} &=\varDelta\boldsymbol{\theta} _ t-η\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )\varDelta\boldsymbol{\theta} _ t\cr &=(I-η\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast ))\varDelta\boldsymbol{\theta} _ t\cr &=S(I-η\Lambda)S ^ \top\varDelta\boldsymbol{\theta} _ t \end{split} $$

ただし $\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )=S\Lambda S ^ \top $ で, $ \Lambda=\mathrm{diag}(\lambda _ 1,\ldots,\lambda _ n)$ と $S$ は直交行列とした.

$$ \begin{split} \varDelta\boldsymbol{\theta} _ {t} &=S(I-η\Lambda)S ^ \top\varDelta\boldsymbol{\theta} _ {t-1}\cr &=S(I-η\Lambda) ^ tS ^ \top\varDelta\boldsymbol{\theta} _ {0},\quad \Lambda=\mathrm{diag}(\lambda _ 1,\ldots,\lambda _ n) \end{split} $$

収束条件は,すべての $k$ で $-1<1-η\lambda _ k<1$ つまり, $0<η<2/\lambda _ {\mathrm{max}}$ .これからわかるように,最大固有値によって学習率の大きさが制限され,この値が大きいほど学習率を小さくせざるを得ず,学習に時間がかかることになる.また,学習の時間は最小固有値が決めるので,これが小さくても学習に時間がかかることになる.そこで,うまい変換ですべてのヘッシアンの固有値が同じになるようにできるとうれしいなあ,と思うことになる.これを実現するのが自然勾配法とよばれるものになっている.

フィッシャー計量

パラメータ $\boldsymbol{\theta}$ が,ある確率分布 $p _ {\boldsymbol{\theta}}$ を定めるパラメータであるとき,$p _ {\boldsymbol{\theta}}$ と $p _ {\boldsymbol{\theta}+d\boldsymbol{\theta}}$ 間の"距離"として KL ダイバージェンスを考える(KLに限らずfダイバージェンスとか,ヘリンジャー距離とか,確率分布間の距離を測るものであれば定数倍を除いてここで言いたいことは成り立つはず)と, $p _ {\boldsymbol{\theta}+d\boldsymbol{\theta}}=p _ {\boldsymbol{\theta}}+\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}+O(\lVert d\boldsymbol{\theta} \rVert _ 2 ^ 2)$ として,$d\boldsymbol{\theta}$ の 高次項を無視して式変形を行えば $$ \begin{split} D _ {\mathrm{KL}}(p _ {\boldsymbol{\theta}}||p _ {\boldsymbol{\theta}+d\boldsymbol{\theta}}) &=\int _ {\boldsymbol{x}} p _ {\boldsymbol{\theta}}\log\frac{p _ {\boldsymbol{\theta}}}{p _ {\boldsymbol{\theta}+d\boldsymbol{\theta}}}-p _ {\boldsymbol{\theta}}+p _ {\boldsymbol{\theta}+d\boldsymbol{\theta}} d\boldsymbol{x}\cr &=\int _ {\boldsymbol{x}} -p _ {\boldsymbol{\theta}}\log\left(1+\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}}{p _ {\boldsymbol{\theta}}}\right)+\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta} d\boldsymbol{x}\cr &\approx\int _ {\boldsymbol{x}} -p _ {\boldsymbol{\theta}}\left(\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}}{p _ {\boldsymbol{\theta}}}-\frac{1}{2}\left(\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}}{p _ {\boldsymbol{\theta}}}\right) ^ 2\right)+\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta} d\boldsymbol{x}\cr &=\frac{1}{2}\int _ {\boldsymbol{x}} \left(\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}}{p _ {\boldsymbol{\theta}}}\right) ^ \top\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top d\boldsymbol{\theta}}{p _ {\boldsymbol{\theta}}}p _ {\boldsymbol{\theta}}d\boldsymbol{x}\cr &=\frac{1}{2}d\boldsymbol{\theta} ^ \top\left(\int _ {\boldsymbol{x}} \frac{\nabla p _ {\boldsymbol{\theta}} }{p _ {\boldsymbol{\theta}}}\frac{\nabla p _ {\boldsymbol{\theta}} ^ \top }{p _ {\boldsymbol{\theta}}}p _ {\boldsymbol{\theta}}d\boldsymbol{x}\right)d\boldsymbol{\theta}\cr &=\frac{1}{2}d\boldsymbol{\theta} ^ \top\left(\int _ {\boldsymbol{x}} (\nabla \log p _ {\boldsymbol{\theta}}\nabla \log p _ {\boldsymbol{\theta}} ^ \top )p _ {\boldsymbol{\theta}}d\boldsymbol{x}\right)d\boldsymbol{\theta}\cr &=\frac{1}{2}d\boldsymbol{\theta} ^ \top F d\boldsymbol{\theta} \end{split} $$

ここで $F=E_{\boldsymbol{x}}[\nabla\log p _ {\boldsymbol{\theta}}(\boldsymbol{x})\nabla\log p _ {\boldsymbol{\theta}}(\boldsymbol{x}) ^ \top]$ はフィッシャー情報行列.したがって,確率分布のパラメータ $\boldsymbol{\theta}$ は距離構造が $\lVert d\boldsymbol{\theta} \rVert ^ 2=d\boldsymbol{\theta} ^ \top F d\boldsymbol{\theta}$ で決まる空間に住んでいるといえる.フィッシャー情報行列は,確率分布をユークリッド空間に埋め込んだときの「曲がり具合」を表す量であると解釈できる.

自然勾配法

$\boldsymbol{\theta}$ が確率モデル $p _ {\boldsymbol{\theta}}$ を決めるパラメータのとき,距離構造は普通のユークリッド空間のようなものではなく $F$ で決まっている.いま, $\nabla L(\boldsymbol{\theta})$ が最も急に減る方向が知りたいとする.

$\lVert d\boldsymbol{\theta} \rVert ^ 2=d\boldsymbol{\theta} ^ \top Fd\boldsymbol{\theta}=\delta ^ 2=\mathrm{const}.$ の条件下で $L(\boldsymbol{\theta}+d\boldsymbol{\theta})-L(\boldsymbol{\theta})\approx\nabla L(\boldsymbol{\theta}) ^ \top d\boldsymbol{\theta}$ を最も減らす方向を探すことにすれば

$$ \min _ {d\boldsymbol{\theta}} \nabla L(\boldsymbol{\theta}) ^ \top d\boldsymbol{\theta}\,\,\textrm{s.t.}\,\,d\boldsymbol{\theta} ^ \top F d\boldsymbol{\theta}=\delta ^ 2 $$

これを解くためにラグランジュ未定乗数法を使う.ラグランジュ関数として

$$ \mathcal{L}(d\boldsymbol{\theta}) = \nabla L(\boldsymbol{\theta}) ^ \top d\boldsymbol{\theta}-\lambda d\boldsymbol{\theta} ^ \top F d\boldsymbol{\theta} $$

を設定し, $d\boldsymbol{\theta}$ で微分して $0$ とおくと

$$ 0=\nabla L(\boldsymbol{\theta})-2\lambda F d\boldsymbol{\theta}\quad\Rightarrow\quad d\boldsymbol{\theta}=\frac{1}{2\lambda}F ^ {-1}\nabla L(\boldsymbol{\theta})\propto F ^ {-1}\nabla L(\boldsymbol{\theta}) $$

が最もパラメータ空間上で動く方向となっている.これを自然勾配とよぶ.自然勾配を利用した勾配降下法が自然勾配法である*1

自然勾配法 最小化したい関数 $L(\boldsymbol{\theta})$ に対して, $F$ をフィッシャー情報行列として $$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-η F ^ {-1}\nabla L(\boldsymbol{\theta} _ t) $$ でパラメータを更新する.

$\nabla L(\boldsymbol{\theta})$ は $\boldsymbol{\theta} ^ \ast $ 近傍では $\varDelta\boldsymbol{\theta}=\boldsymbol{\theta}-\boldsymbol{\theta} ^ \ast $ として( $\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )=0$ に注意する)

$$ \nabla L(\boldsymbol{\theta})\approx \nabla L(\boldsymbol{\theta} ^ \ast )+\nabla ^ 2 L(\boldsymbol{\theta} ^ \ast )\varDelta\boldsymbol{\theta}= F\varDelta\boldsymbol{\theta} $$

よって,最適点付近では

$$ \varDelta \boldsymbol{\theta} _ {t+1}=\varDelta \boldsymbol{\theta} _ {t}-η F ^ {-1}F\varDelta\boldsymbol{\theta} _ t=(1-η )\varDelta\boldsymbol{\theta} _ t $$

と等方的に学習が進行することになって,うまい $F$ を使った変換でヘッシアンの固有値を揃えることができた.

ニュートン法ガウスニュートン法と自然勾配法

ニュートン法ガウスニュートン法

実は,ガウス・ニュートン法で最尤推定すると自然勾配法になっているということがいえる.ガウス・ニュートン法はニュートン法の特殊ケースみたいなものなので,ニュートン法から始める.

以下では一般の $L(\boldsymbol{\theta})$ という関数の最小化問題を考えるとする.テイラー展開を考えて

$$ L(\boldsymbol{\theta}+\varDelta\boldsymbol{\theta})=L(\boldsymbol{\theta})+\nabla L(\boldsymbol{\theta}) ^ \top\varDelta\boldsymbol{\theta}+\frac{1}{2}\varDelta\boldsymbol{\theta} ^ \top\nabla ^ 2L(\boldsymbol{\theta})\varDelta\boldsymbol{\theta}+o(\lVert \varDelta\boldsymbol{\theta} \rVert ^ 2) $$

であることから,$\nabla ^ 2L(\boldsymbol{\theta})$ が正定値であると仮定して,2 次までを最小にする $\varDelta\boldsymbol{\theta}$ を考える.

両辺を $\varDelta\boldsymbol{\theta}$ で微分して $\nabla _ {\varDelta\boldsymbol{\theta}} L(\boldsymbol{\theta}+\varDelta \boldsymbol{\theta})=0$ となるとき

$$ 0=\nabla L(\boldsymbol{\theta})+\frac{1}{2}(\nabla ^ 2 L(\boldsymbol{\theta})+\nabla ^ 2 L(\boldsymbol{\theta}) ^ \top)\varDelta \boldsymbol{\theta}=\nabla L(\boldsymbol{\theta})+\nabla ^ 2 L(\boldsymbol{\theta})\varDelta\boldsymbol{\theta} $$

$$ \therefore\varDelta\boldsymbol{\theta}=-(\nabla ^ 2 L(\boldsymbol{\theta})) ^ {-1}\nabla L(\boldsymbol{\theta}) $$

これで探索方向を決めるのがニュートン法だった.

ニュートン法 最小化したい関数 $L(\boldsymbol{\theta})$ に対して $$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-(\nabla ^ 2 L(\boldsymbol{\theta} _ t)) ^ {-1}\nabla L(\boldsymbol{\theta} _ t) $$ でパラメータを更新する.

特に,最小化したい関数として

$$ L(\boldsymbol{\theta})=\frac{1}{2}\lVert \boldsymbol{e}(\boldsymbol{\theta}) \rVert _ 2 ^ 2=\frac{1}{2}\sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta}) ^ 2,\quad \boldsymbol{e}(\boldsymbol{\theta})=(e(\boldsymbol{x} _ 1;\boldsymbol{\theta}),\ldots,e(\boldsymbol{x} _ n;\boldsymbol{\theta})) ^ \top\in\mathbb{R} ^ n $$

を考える(よくあるのは $e(\boldsymbol{x} _ i;\boldsymbol{\theta})=y-f _ {\boldsymbol{\theta}}(\boldsymbol{x} _ i)$ とかで,以下ではこの場合しか考えない).このとき

$$ \nabla L(\boldsymbol{\theta})=\sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta})\nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta}) $$

$$ \nabla ^ 2 L(\boldsymbol{\theta})=\sum _ {i=1} ^ n \nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta})\nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta}) ^ \top+\sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta})\nabla ^ 2 e(\boldsymbol{x} _ i;\boldsymbol{\theta}) $$

となるので

$$ \begin{split} \boldsymbol{\theta} _ {t+1}&=\boldsymbol{\theta} _ {t}-\left(\sum _ {i=1} ^ n \nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t})\nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t}) ^ \top+\sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t})\nabla ^ 2 e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t})\right) ^ {-1} \sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t})\nabla e(\boldsymbol{x} _ i;\boldsymbol{\theta} _ {t})\cr &=\boldsymbol{\theta} _ {t}-\left(\nabla\boldsymbol{e}(\boldsymbol{\theta} _ {t})\nabla\boldsymbol{e}(\boldsymbol{\theta} _ {t}) ^ \top+\sum _ {i=1} ^ n e(\boldsymbol{x} _ i;\boldsymbol{\theta})\nabla ^ 2 e(\boldsymbol{x} _ i;\boldsymbol{\theta})\right) ^ {-1}\nabla L(\boldsymbol{\theta} _ {t}) \end{split} $$

ここで, $\nabla ^ 2 L(\boldsymbol{\theta})$ の 2 項目を省略して $\nabla ^ 2 e$ の計算をしないことにするものをガウス・ニュートンという.

ガウス・ニュートン 最小化したい関数 $L(\boldsymbol{\theta})=\frac{1}{2}\lVert \boldsymbol{e}(\boldsymbol{\theta}) \rVert _ 2 ^ 2$ に対して $$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-(\nabla\boldsymbol{e}(\boldsymbol{\theta} _ {t})\nabla\boldsymbol{e}(\boldsymbol{\theta} _ {t}) ^ \top) ^ {-1}\nabla L(\boldsymbol{\theta} _ {t}) $$ でパラメータを更新する.

自然勾配法とニュートン法ガウス・ニュートン法の関係性

教師あり学習の期待損失の最小化は,真の分布 $q(\boldsymbol{x},y)$ と学習してつくる分布 $p(\boldsymbol{x},y;\boldsymbol{\theta})=q(\boldsymbol{x})p(y|\boldsymbol{x};\boldsymbol{\theta})$ に対して $$ \arg\min _ {\boldsymbol{\theta}} D _ {\mathrm{KL}}(q(\boldsymbol{x},y)||p(\boldsymbol{x},y;\boldsymbol{\theta}))=\arg\min _ {\boldsymbol{\theta}}\left(-\int q(\boldsymbol{x},y)\log p(y|\boldsymbol{x};\boldsymbol{\theta})d\boldsymbol{x}dy\right)=\arg\min _ {\boldsymbol{\theta}}E[-\log p(y|\boldsymbol{x};\boldsymbol{\theta})] $$ で定式化できる.特に $-\log p(y|\boldsymbol{x};\boldsymbol{\theta})=(y-f _ {\boldsymbol{\theta}}(\boldsymbol{x})) ^ 2/2$ とおくことで $$ \min _ {\boldsymbol{\theta}}L(\boldsymbol{\theta})=\min _ {\boldsymbol{\theta}}E\left[\frac{1}{2}\lVert y-f _ {\boldsymbol{\theta}}(\boldsymbol{x}) \rVert ^ 2\right] $$ になる($ y-f _ {\boldsymbol{\theta}}(\boldsymbol{x})$ がガウス分布に従うと仮定した最尤法が二乗誤差最小化に対応することを思い出す). ロスを微分すると $$ \begin{split} \nabla L(\boldsymbol{\theta})=E[\nabla f _ {\boldsymbol{\theta}} ^ \top (f _ {\boldsymbol{\theta}}-y)],\quad\nabla ^ 2 L(\boldsymbol{\theta}) &=E[\nabla f _ {\boldsymbol{\theta}}\nabla f _ {\boldsymbol{\theta}} ^ \top]+E[(f _ {\boldsymbol{\theta}}-y)\nabla ^ 2 f _ {\boldsymbol{\theta}}]\cr &= F+E[(f _ {\boldsymbol{\theta}}-y)\nabla ^ 2 f _ {\boldsymbol{\theta}}] \end{split} $$ ここで,$-\log p(y|\boldsymbol{x};\boldsymbol{\theta})=(y-f _ {\boldsymbol{\theta}}(\boldsymbol{x})) ^ 2/2$ のときのフィッシャー情報行列は $$ \begin{split} F &=E[\nabla\log p(\boldsymbol{x},y;\boldsymbol{\theta})\nabla\log p(\boldsymbol{x},y;\boldsymbol{\theta}) ^ \top]\cr &=E[\nabla f _ {\boldsymbol{\theta}}(\boldsymbol{x}) \nabla f _ {\boldsymbol{\theta}}(\boldsymbol{x}) ^ \top] \end{split} $$ となることを使って右の式では $E[\nabla f _ {\boldsymbol{\theta}}\nabla f _ {\boldsymbol{\theta}} ^ \top]=F$ としている.

さて,観測データを使って二乗和誤差最小化を行うことを考える.

$$ L(\boldsymbol{\theta})=\frac{1}{2n}\sum _ {i=1} ^ n(y _ i-f _ {\boldsymbol{\theta}}(\boldsymbol{x} _ i)) ^ 2 $$

少々記号の乱用だが,以下では $\nabla f _ {\boldsymbol{\theta}}$ は $i,j$ 成分が $\nabla _ {\boldsymbol{\theta} _ i} f _ {\boldsymbol{\theta}} (\boldsymbol{x} _ j)$ である行列だと見ることにする.

これをニュートン法で更新した場合は

$$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-\left(\frac{1}{n}\nabla f _ {\boldsymbol{\theta} _ {t}}\nabla f _ {\boldsymbol{\theta} _ {t}} ^ \top+\frac{1}{n}\sum _ {i=1} ^ n (f _ {\boldsymbol{\theta} _ t}(\boldsymbol{x} _ i)-y _ i)\nabla ^ 2 f _ {\boldsymbol{\theta} _ {t}}\right) ^ {-1}\nabla L(\boldsymbol{\theta} _ {t}) $$

ガウス・ニュートン法で更新した場合は,ニュートン法の更新則で逆行列とってるとこの2つ目の項がないやつなので

$$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-\left(\frac{1}{n}\nabla f _ {\boldsymbol{\theta} _ {t}}\nabla f _ {\boldsymbol{\theta} _ {t}} ^ \top\right) ^ {-1}\nabla L(\boldsymbol{\theta} _ {t}) $$

$n$ が十分大きいとき

$$ \frac{1}{n}\nabla f _ {\boldsymbol{\theta} _ {t}}\nabla f _ {\boldsymbol{\theta} _ {t}} ^ \top+\frac{1}{n}\sum _ {i=1} ^ n (f _ {\boldsymbol{\theta} _ t}(\boldsymbol{x} _ i)-y _ i)\nabla ^ 2 f _ {\boldsymbol{\theta} _ {t}}\approx F+ E[(f _ {\boldsymbol{\theta}}-y)\nabla ^ 2 f _ {\boldsymbol{\theta}}] $$

となる. $f _ {\boldsymbol{\theta}}-y$ が平均ゼロのガウス分布に従えば,一番右の項は消えることから,次のことがいえる.

自然勾配法とニュートン法ガウス・ニュートン法の関係性 $n$ が十分大きい場合,

Adamとの類似性

深層学習でよく使われる最適化手法にAdamがある.ざっくり言えば勾配の1次モーメントと2次モーメントとを良い感じに移動平均を使いながら利用してパラメータを推定する方法になっている.ここで $\circ$ はアマダール積で $(A \circ B) _ {ij}=(A _ {ij}B _ {ij})$ となるもの. $A\circ A=A ^ {\circ 2}$ と書くことにする.

Adam 最小化したい関数 $L(\boldsymbol{\theta})$ に対して, $$ \boldsymbol{m} _ {t+1}=\left(\beta _ 1\boldsymbol{m} _ t+(1-\beta _ 1)\nabla L(\boldsymbol{\theta} _ t)\right),\quad\hat{\boldsymbol{m}} _ t=\frac{\boldsymbol{m} _ t}{1-\beta _ 1 ^ t} $$ $$ \boldsymbol{v} _ {t+1}=\left(\beta _ 2 \boldsymbol{v} _ t+(1-\beta _ 2)\nabla L(\boldsymbol{\theta} _ t) ^ {\circ 2}\right),\quad \hat{\boldsymbol{v}} _ t=\frac{\boldsymbol{v} _ t}{1-\beta _ 2 ^ t} $$ $$ \boldsymbol{\theta} _ {t+1}=\boldsymbol{\theta} _ {t}-η\frac{\hat{\boldsymbol{m}} _ t}{\sqrt{\hat{\boldsymbol{v}} _ t+\varepsilon}} $$ でパラメータを更新する.

たとえば,PyTorchのデフォルト設定は $η=0.001,\,\beta _ 1=0.9,\,\beta _ 2=0.999,\,\varepsilon=10 ^ {-8}$ になっている.

$L(\boldsymbol{\theta})=\sum _ {i=1} ^ n -\log p _ {\boldsymbol{\theta}}(y _ i|\boldsymbol{x} _ i)/n$ のときを考える. $n$ が大きいと $$ \nabla ^ 2 L(\boldsymbol{\theta})\approx E[-\nabla ^ 2\log p _ {\boldsymbol{\theta}}]=E[\nabla\log p _ {\boldsymbol{\theta}}\nabla\log p _ {\boldsymbol{\theta}} ^ \top]=F $$

となるのは上でもみた.唐突な事実だが,フィッシャー情報行列が漸近的にブロック対角化する場合があり(ランダム神経回路ではそうなる,というのが本には説明してあったりする),このことを使って近似すると,自然勾配法は $$ \begin{split} \boldsymbol{\theta} _ {t+1} &=\boldsymbol{\theta} _ {t}-η F ^ {-1}\nabla L(\boldsymbol{\theta} _ t)\cr &=\boldsymbol{\theta} _ {t}-η E[\nabla\log p _ {\boldsymbol{\theta}}\nabla\log p _ {\boldsymbol{\theta}} ^ \top] ^ {-1}\nabla L(\boldsymbol{\theta} _ t)\cr &\approx \boldsymbol{\theta} _ {t}-η \frac{\nabla L(\boldsymbol{\theta} _ t)}{E[\nabla\log p _ {\boldsymbol{\theta}} ^ {\circ 2}]} \end{split} $$ になる.一方Adamで,簡単のため $\beta _ 1=\beta _ 2=0$ としたとき $$ \begin{split} \boldsymbol{\theta} _ {t+1} &=\boldsymbol{\theta} _ {t}-η\frac{\nabla L(\boldsymbol{\theta} _ t)}{\sqrt{\nabla L(\boldsymbol{\theta} _ t) ^ {\circ 2}+\varepsilon}}\cr &\approx\boldsymbol{\theta} _ {t}-η \frac{\nabla L(\boldsymbol{\theta} _ t)}{\sqrt{E[\nabla\log p _ {\boldsymbol{\theta}} ^ {\circ 2}]}} \end{split} $$ になることがわかる.これから,Adamは自然勾配法の $F ^ {-1}$ の代わりに $F ^ {-1/2}$ を使う方法であると近似的にみなせる.(自分はこれを見ても自然勾配法とAdamが似てるとは思えないかなあ...)

必ずしも $F ^ {-1}$ じゃなくても性能がいいのは, 自然勾配法での性能保証が最適点近傍だけの話だからだと思う.適当に検索してヒットした論文には,統計多様体上で $F ^ {-1}\nabla L$ のノルムを計算したものとユークリッド空間上で $\nabla L/\sqrt{F}$ のノルムを計算したものは同じになる(こういう幾何的な不変量を使っているから性能が良い?)とか書いてあった.実際

$$ \begin{split} \lVert F ^ {-1}\nabla L(\boldsymbol{\theta}) \rVert _ {\mathrm{Fisher}} ^ 2 &= (F ^ {-1}\nabla L(\boldsymbol{\theta})) ^ {\top}F(F ^ {-1}\nabla L(\boldsymbol{\theta})) \cr &=\nabla L(\boldsymbol{\theta}) ^ \top F ^ {-1} \nabla L(\boldsymbol{\theta}) \cr &=\lVert \nabla L(\boldsymbol{\theta})/\sqrt{F} \rVert _ {\mathrm{Euclid}} ^ 2 \end{split} $$

この話と一緒に $\sqrt{\quad}$ の代わりに $0.3$ から $1.0$ まで指数をいろいろ変えて試すと, $0.5$ が最適という数値実験結果も載っていた.この辺の話はあんまり理解していない.

arxiv.org

数値実験

せっかくなので超簡単に数値実験した.1次元ガウス分布からの観測データを見て,パラメータを最尤推定する問題を考えて,学習法として,最急降下法と自然勾配法を比較してみる.

1次元ガウス分布 $$ p(x;μ,σ ^ 2)=\frac{1}{\sqrt{2\piσ ^ 2}}\exp\left(-\frac{(x-μ) ^ 2}{2σ ^ 2}\right) $$ のパラメータ $(μ,σ ^ 2)$ を推定する.フィッシャー情報行列は $$ F(μ,σ ^ 2)=\begin{pmatrix} 1/σ ^ 2 & 0 \cr 0 & 1/(2(σ ^ 2) ^ 2) \end{pmatrix} $$ になる.

真のパラメータ $(μ,σ ^ 2)=(2,7)$ とし,$n=500$ 個のデータから最尤推定($L(μ,σ ^ 2)=-\sum _ {i=1} ^ n\log p(x _ i;μ,σ ^ 2)/n$ )を行った.図で真の正解と収束点がズレてるのはデータから最適値を計算してるため.

初期値 $(μ,σ ^ 2)=(0,2)$ からスタートした.学習率は $η=0.1$ にした.

今回の場合,勾配降下法は7122stepで収束,自然勾配法は49stepで収束(誤差が0.001未満)した.収束スピードが全然違うので初めはおおーとなったが,まあ2次最適化だし当たり前か,という気持ちになってなんかガッカリしたような気分になった.ユークリッド空間で最急降下法をみると,2つの固有値成分で片方が先に収束して,もう一方がボトルネックになっていそうなことが確認できる.また,リーマン多様体上だと自然勾配は比較的まっすぐめに収束しているように見える.

ユークリッド空間上での軌跡

リーマン多様体上での軌跡

あと何見ればいいかわからなかったが,適当に収束率をみることにした. $μ$ の方は常に $1-η$ になっていて, $σ ^ 2$ の方も $1-η$ に漸近するのが見れたので多分よいでしょう.

収束率は 1-η に漸近する

www.saiensu.co.jp

ニュートン法のあたりはこいつを参考にした.

www.kspub.co.jp

*1:ところで,暗黙的にユークリッド空間を仮定して微分の一次近似として $L(\boldsymbol{\theta}+d\boldsymbol{\theta})-L(\boldsymbol{\theta})\approx\nabla L(\boldsymbol{\theta}) ^ \top d\boldsymbol{\theta}$ と書いていたが,ある内積が定まった空間での一次近似を考えることにして,内積の記号 $\langle\,\cdot\,,\,\cdot\,\rangle$ を使って $L(\boldsymbol{\theta}+d\boldsymbol{\theta})-L(\boldsymbol{\theta})\approx\langle\nabla L(\boldsymbol{\theta}), d\boldsymbol{\theta}\rangle$ と書くことにする.この内積ユークリッド計量 $\langle\nabla L(\boldsymbol{\theta}), d\boldsymbol{\theta}\rangle _ {\mathrm{Euclid}}=L(\boldsymbol{\theta}) ^ \top d\boldsymbol{\theta}$ のとき $ \lVert d\boldsymbol{\theta} \rVert=\delta $ のもとでは $d\boldsymbol{\theta} = -\delta\frac{\nabla L(\boldsymbol{\theta})}{\lVert\nabla L(\boldsymbol{\theta})\rVert}$ が最も減る.ところで,この内積がフィッシャー計量 $\langle\nabla L(\boldsymbol{\theta}), d\boldsymbol{\theta}\rangle _ {\mathrm{Fisher}}=L(\boldsymbol{\theta}) ^ \top F d\boldsymbol{\theta}$ で決まったとすれば,最も減るときのノルムはユークリッド計量の場合と変わらないので,$\langle\nabla L(\boldsymbol{\theta}), -\delta\frac{\nabla L(\boldsymbol{\theta})}{\lVert\nabla L(\boldsymbol{\theta})\rVert} \rangle _ {\mathrm{Euclid}} = \langle\nabla L(\boldsymbol{\theta}), d\boldsymbol{\theta}\rangle _ {\mathrm{Fisher}}$ をみたすような $d\boldsymbol{\theta}$ を考えればよく,これは $d\boldsymbol{\theta} = -\delta F^{-1}\frac{\nabla L(\boldsymbol{\theta})}{\lVert\nabla L(\boldsymbol{\theta})\rVert}$ である.