からっぽのしょこ

読んだら書く!書いたら読む!読書読読書読書♪同じ事は二度調べ(たく)ない

3.4.2:自然勾配法【白トピックモデルのノート】

はじめに

 『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。

 この記事では、3.4.2節の自然勾配法やフィッシャー情報行列によるKL情報量の近似について書いています。

 数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】

3.4.2 自然勾配法

 目的関数が確率分布に依存する場合に、その確率分布に基づいた空間における勾配を計算する。

 この節では、目的関数が

$$ f(\theta) = \sum_{i=1}^n \log p(x_i | \theta) $$

のように確率分布$p(x_i | \theta)$によって構成されているとする。$f(\theta)$を最大化する$\theta$について考える。

・勾配の導出

 $f(\theta + \delta \theta)$を$\theta$の周りで1次までテイラー展開すると

$$ \begin{aligned} f(\theta + \delta \theta) &\approx f(\theta) + \frac{\partial f(\theta)^{\top}}{\partial \theta} \{ (\theta + \delta \theta) - \theta \} \\ &= f(\theta) + \nabla_{\theta} f(\theta)^{\top} \delta \theta \end{aligned} $$

であることを用いて

$$ \begin{align} \mathop{\rm argmax}\limits_{\delta \theta} f(\theta + \delta \theta) &\approx \mathop{\rm argmax}\limits_{\delta \theta} \{ f(\theta) + \nabla_{\theta} f(\theta)^{\top} \delta \theta \} \\ &= \mathop{\rm argmax}\limits_{\delta \theta} \nabla_{\theta} f(\theta)^{\top} \delta \theta \tag{3.139} \end{align} $$

となる。$f(\theta)$は$\delta \theta$に影響しないため省ける。

 $\delta \theta$について、$\|\delta \theta\|^2 \leq \epsilon \ (\epsilon > 0)$の制約を導入する。この制約の下での最適化問題として、ラグランジュ乗数$\lambda \geq 0$を用いて

$$ \mathop{\rm argmax}\limits_{\delta \theta} \nabla_{\theta} f(\theta)^{\top} \delta \theta + \lambda ( \epsilon - \|\delta \theta\|^2 ) $$

を解くと(ムリだった…)

$$ \mathop{\rm argmax}\limits_{\delta \theta : \|\delta \theta\|^2 \leq \epsilon} \nabla_{\theta} f(\theta)^{\top} \delta \theta = \sqrt{ \frac{ \epsilon }{ \|\nabla_{\theta} f(\theta)\|^2 } } \nabla_{\theta} f(\theta) \tag{3.140} $$

となる。$\nu = \sqrt{ \frac{\epsilon}{\|\nabla_{\theta} f(\theta)\|^2} }$とおくと、勾配は

$$ \mathop{\rm argmax}\limits_{\delta \theta : \|\delta \theta\|^2 \leq \epsilon} f(\theta + \delta \theta) \approx \mathop{\rm argmax}\limits_{\delta \theta : \|\delta \theta\|^2 \leq \epsilon} \nabla_{\theta} f(\theta)^{\top} \delta \theta = \nu \nabla_{\theta} f(\theta) \tag{3.141} $$

と最適化問題により定義できる。

 更に、ユークリッド空間における距離の制約$\|\delta \theta\|^2$を$\|\delta \theta\|^2 = \|\theta - (\theta + \delta \theta)\|^2$として、これを確率分布間の距離(正確には距離とは言えない)であるKL情報量に置き換える。
 確率分布$p(x | \delta \theta)$と$p(x | \theta + \delta \theta)$とのKL情報量$KL[p(x | \theta) \| p(x | \theta + \delta \theta)]$を用いて、勾配は

$$ \mathop{\rm argmax}\limits_{ \delta \theta : KL[p(x | \theta) \| p(x | \theta + \delta \theta)] \leq \epsilon } \nabla_{\theta} f(\theta)^{\top} \delta \theta \tag{3.142} $$

と定式化できる。
 ただし、この最適化問題を解析的に解くことは難しいため、テイラー近似およびフィッシャーの情報行列を用いてKL情報量を近似する。

・フィッシャー情報量

 パラメータ$\theta$を持つ確率分布$p(x | \theta)$の対数をとり$\theta$で偏微分したものをスコア関数$S(x)$と呼ぶ。

$$ S(x) = \frac{\partial}{\partial \theta} \log p(x | \theta) $$

 スコア関数は、期待値が

$$ \begin{aligned} \mathbb{E}[S(x)] &= \int p(x | \theta) \frac{\partial}{\partial \theta} \log p(x | \theta) dx \\ &= \int p(x | \theta) \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) dx \\ &= \int \frac{\partial}{\partial \theta} p(x | \theta) dx \\ &= \frac{\partial}{\partial \theta} \int p(x | \theta) dx \\ &= \frac{\partial}{\partial \theta} 1 \\ &= 0 \end{aligned} $$

0となる性質を持つ。ただし、微分と積分を交換可能であるとする。
 また、スコア関数の分散をフィッシャー情報量$g(\theta)$と呼ぶ。

$$ g(\theta) = \mathbb{V}[S(x)] $$

 スコア関数の期待値は0であることから、フィッシャー情報量は

$$ \begin{aligned} g(\theta) &= \mathbb{V}[S(x)] \\ &= \mathbb{E}[S(x)^2] - \mathbb{E}[S(x)]^2 \\ &= \mathbb{E}[S(x)^2] \\ &= \mathbb{E} \left[ \left( \frac{\partial}{\partial \theta} \log p(x | \theta) \right)^2 \right] \end{aligned} $$

である。
 また、$\log p(x | \theta)$を2階微分すると

$$ \begin{aligned} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) &= \frac{\partial}{\partial \theta} \left( \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) \right) \\ &= - \frac{1}{p(x | \theta)^2} \frac{\partial}{\partial \theta} p(x | \theta) \frac{\partial}{\partial \theta} p(x | \theta) + \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) \\ &= - \left( \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) \right)^2 + \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) \\ \left( \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) \right)^2 &= \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) - \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \end{aligned} $$

【途中式の途中式】

  1. $(\log p(x | \theta))' = \frac{1}{p(x | \theta)} p(x | \theta)'$より、$(\log p(x | \theta))'' = (\frac{1}{p(x | \theta)} p(x | \theta)')'$となる。
  2. (積の(合成関数の)微分を行う。
$$ \begin{aligned} f(x) &= \frac{1}{p(x | \theta)} = p(x | \theta)^{-1} \\ h'(x) &= \frac{\partial}{\partial \theta} p(x | \theta) \end{aligned} $$

とおき、右辺を(積の)微分すると$(f(x) h'(x))' = f'(x) h'(x) + f(x) h''(x)$の形になる。よって、他の項は

$$ \begin{aligned} f'(x) &= - p(x | \theta)^{-2} \frac{\partial}{\partial \theta} p(x | \theta) = - \frac{1}{p(x | \theta)^2} \frac{\partial}{\partial \theta} p(x | \theta) \\ h''(x) &= \frac{\partial^2}{\partial \theta^2} p(x | \theta) \end{aligned} $$

となる。

  1. 項を整理する。
  2. 移項する。


 両辺で期待値をとる(あるいは$g(\theta) = \mathbb{E} [ ( \frac{\partial}{\partial \theta} \log p(x | \theta) )^2 ]$に代入する)と

$$ \begin{aligned} \mathbb{E} \left[ \left( \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) \right)^2 \right] &= \mathbb{E} \left[ \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) - \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ \mathbb{E} \left[ \left( \frac{\partial}{\partial \theta} \log p(x | \theta) \right)^2 \right] &= \mathbb{E} \left[ \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) \right] - \mathbb{E} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ g(\theta) &= \int p(x | \theta) \frac{1}{p(x | \theta)} \frac{\partial^2}{\partial \theta^2} p(x | \theta) dx - \mathbb{E} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ &= \int \frac{\partial^2}{\partial \theta^2} p(x | \theta) dx - \mathbb{E} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ &= \frac{\partial^2}{\partial \theta^2} \int p(x | \theta) dx - \mathbb{E} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ &= - \mathbb{E} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \end{aligned} $$

となる。(左辺は計算過程より$g(\theta) = \mathbb{E} [ ( \frac{\partial}{\partial \theta} \log p(x | \theta) )^2 ] = \mathbb{E} [ ( \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta) )^2 ]$である。)

・フィッシャー情報行列

 フィッシャー情報量

$$ \begin{aligned} g(\theta) &= - \mathbb{E}_{p(x | \theta)} \left[ \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \right] \\ &= - \int p(x | \theta) \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) dx \end{aligned} $$

を多次元に拡張したものをフィッシャー情報行列$G(\theta)$と呼ぶ。(他の節と表記を合わせるには$\boldsymbol{x}, \boldsymbol{\theta}$とすべきでは?$g(\theta)$と$G(\theta)$で式変わってないし…)

$$ \begin{align} G(\theta) &= - \int p(x | \theta) \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) dx \\ &= - \int p(x | \theta) \nabla_{\theta}^2 \log p(x | \theta) dx \tag{3.143} \end{align} $$

 また、各要素は

$$ G_{j,i} (\theta) = - \int p(x | \theta) \frac{\partial^2}{\partial \theta_j \partial \theta_i} \log p(x | \theta) dx \tag{3.144} $$

と定義される。

・KL情報量とフィッシャー情報行列の関係

 $\log p(x | \theta + \delta \theta)$を$\theta$の周りで2次までテイラー展開すると

$$ \log p(x | \theta + \delta \theta) \approx \log p(x | \theta) + \frac{\partial}{\partial \theta} \log p(x | \theta)^{\top} \delta \theta + \frac{1}{2} \delta \theta^{\top} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \delta \theta \tag{A.6} $$

である。これを用いて、KL情報量を式変形する。

$$ \begin{align} KL[p(x | \theta) \| p(x | \theta + \delta \theta)] &= \int p(x | \theta) \log \frac{ p(x | \theta) }{ p(x | \theta + \delta \theta) } dx \\ &= \int p(x | \theta) \Bigl( \log p(x | \theta) - \log p(x | \theta + \delta \theta) \Bigr) dx \\ &\approx \int p(x | \theta) \left\{ \log p(x | \theta) - \left( \log p(x | \theta) + \frac{\partial}{\partial \theta} \log p(x | \theta)^{\top} \delta \theta + \frac{1}{2} \delta \theta^{\top} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \delta \theta \right) \right\} dx \\ &= \int p(x | \theta) \left( - \frac{\partial}{\partial \theta} \log p(x | \theta)^{\top} \delta \theta - \frac{1}{2} \delta \theta^{\top} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \delta \theta \right) dx \tag{A.7} \\ &= - \int p(x | \theta) \frac{\partial}{\partial \theta} \log p(x | \theta)^{\top} \delta \theta dx - \int \frac{1}{2} p(x | \theta) \delta \theta^{\top} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \delta \theta dx \end{align} $$

 前の因子は

$$ \begin{align} &- \int p(x | \theta) \frac{\partial}{\partial \theta} \log p(x | \theta)^{\top} \delta \theta dx \\ &= - \int p(x | \theta) \frac{1}{p(x | \theta)} \frac{\partial}{\partial \theta} p(x | \theta)^{\top} \delta \theta d\theta \\ &= - \frac{\partial}{\partial \theta} \int p(x | \theta)^{\top} d\theta \delta \theta \\ &= - \frac{\partial}{\partial \theta} 1 \delta \theta \\ &= 0 \end{align} $$

なので、式(A.7)はフィッシャー情報行列(3.143)を用いて

$$ \begin{align} KL[p(x | \theta) \| p(x | \theta + \delta \theta)] &\approx - \int \frac{1}{2} p(x | \theta) \delta \theta^{\top} \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) \delta \theta dx \\ &= \frac{1}{2} \delta \theta^{\top} \left( - \int p(x | \theta) \frac{\partial^2}{\partial \theta^2} \log p(x | \theta) dx \right) \delta \theta \\ &= \frac{1}{2} \delta \theta^{\top} G(\theta) \delta \theta \tag{A.9, 3.147} \end{align} $$

と近似できる。

・勾配の近似

 では話戻って、勾配(3.142)を近似していく。

 $p(x | \theta)$のフィッシャー情報行列$G(\theta)$を用いてKL情報量を近似する。

$$ \mathop{\rm argmax}\limits_{ \delta \theta : KL[p(x | \theta) \| p(x | \theta + \delta \theta)] \leq \epsilon } \nabla_{\theta} f(\theta)^{\top} \delta \theta \approx \mathop{\rm argmax}\limits_{ \delta \theta : \frac{1}{2} \delta \theta^{\top} G(\theta) \delta \theta \leq \epsilon } \nabla_{\theta} f(\theta)^{\top} \delta \theta \tag{3.148} $$

 これを、制約$\frac{1}{2} \delta \theta^{\top} G(\theta) \delta \theta$の下での最適化問題としてラグランジュ乗数$\lambda$を用いて解く。

$$ L(\delta \theta) = \nabla_{\theta} f(\theta)^{\top} \delta \theta + \lambda \left( \epsilon - \frac{1}{2} \delta \theta^{\top} G(\theta) \delta \theta \right) $$

 この式を$\delta \theta$で微分する。

$$ \begin{aligned} \frac{\partial L(\delta \theta)}{\partial \delta \theta} &= \nabla_{\theta} f(\theta) - \frac{1}{2} \lambda G(\theta)^{\top} \delta \theta - \frac{1}{2} \lambda \delta \theta^{\top} G(\theta) \\ &= \nabla_{\theta} f(\theta) - \frac{1}{2} \lambda \Bigl( G(\theta)^{\top} + G(\theta) \Bigr) \delta \theta \\ &= \nabla_{\theta} f(\theta) - \lambda G(\theta) \delta \theta \end{aligned} $$

 $\frac{\partial L(\delta \theta)}{\partial \delta \theta} = 0$となる$\delta \theta$を求める。

$$ \begin{aligned} \nabla_{\theta} f(\theta) - \lambda G(\theta) \delta \theta &= 0 \\ \delta \theta &= \frac{ \nabla_{\theta} f(\theta) }{ \lambda G(\theta) } \\ &= \lambda G(\theta)^{-1} \nabla_{\theta} f(\theta) \end{aligned} $$

(こっちも解けない…どうしたら$\lambda$を消せるんだ?$\epsilon$を出すためにも、制約の式を使って置き換えるのがセオリーだと思っていたのだが…解らん??)
 従って

$$ \mathop{\rm argmax}\limits_{ \delta \theta : \frac{1}{2} \delta \theta^{\top} G(\theta) \delta \theta \leq \epsilon } \nabla_{\theta} f(\theta)^{\top} \delta \theta = \nu G(\theta)^{-1} \nabla_{\theta} f(\theta) \tag{3.150} $$

となる。

 これを利用して、更新式

$$ \theta = \theta + \nu G(\theta)^{-1} \nabla_{\theta} f_{\theta}(p(x | \theta)) \tag{3.151} $$

が得られる。

参考文献

  • 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.

おわりに

 全然分からないところが出てきました。

  • そも自然勾配法とは何なのかよく分からんかった。(自然という言葉に引っ張られ過ぎている気がする。)
  • 見ないふりをしていた○○空間というやつ。
  • $||x||$(ノムル?)自体とその微分。
  • 不等式制約付き最適化問題。(それ以前のとこで躓いているのかもしれない)

 とりあえず、暇な時間に『わけがわかる機械学習』と『機械学習のエッセンス』を読んでみようと思います。

 が、分からないところがあったことは頭に置いときつつ、先へ進もう。

【次節の内容】

https://www.anarchive-beta.com/entry/2020/01/12/150000www.anarchive-beta.com