にっき

技術的な話題はないです

深層カルマンフィルタ (3)

今回は変分自己符号化器 (VAE) における確率勾配変分ベイズ (SGVB) の説明。 なお、SGVB 自体の説明は本家の論文、および以下のものを参考にしたのでそちらも参照されたい。 正直、下の資料さえあれば今回の内容は飛ばしても良い気もするが、一応まとめておく。

Stochastic gradient variational bayes (SGVB)

確率的勾配変分ベイズ (stochastic gradient variational bayes; SGVB) とは、雑に言うと確率的勾配法が適用可能なように変分事後分布への制約などが設計された変分ベイズ法である。 変分ベイズ法では変分事後分布に与える制約によりもとの事後分布との近似精度や計算の効率性などが大きく左右されるが、本手法は深層学習(多層パーセプトロン)による近似にフォーカスを当てた手法ということらしい。

さて、VAE の対数周辺尤度の変分下限を再掲する(前回の結果に誤植があったので修正)。

\displaystyle \mathcal{L}(x; \theta, \phi) = \mathbb{E}_{q(z|x,\phi)} \big[ \log p(x|z,\theta) \big] - \mathrm{KL}\big(q(z|x,\phi) \;\|\; p(z)\big)

上式の目的関数を最大化するパラメータ  \theta, \phi を(確率的)勾配法を用いて求めるためには、少なくとも上の関数が  \phi微分可能であることが要求される。 この要求を満たすよう、  q(z|x,\phi) への制約を考えるのが今回の話題である。

まず第二項に着目すると、これは事前分布が正規分布であるという前提から  q(z|x,\phi) = \mathcal{N}(\mu_{\phi}(x), \Sigma_{\phi}(x)) と(平均、共分散が多層パーセプトロンで近似された)多変量正規分布で与えられると仮定すれば次のように解析的に求めることができる。

 \displaystyle \mathrm{KL}(q \| p) = \frac{1}{2}( -\log |\Sigma_{\phi}| + \mathrm{tr}\;\Sigma_{\phi} + \| \mu_{\phi} \|^2 - d)

次に第一項を見てみる。 これについては、期待値計算を  q(z|x,\phi) について直接求めるのではなく、 \phi に依存しない別の確率変数に関して求めることで \phi微分可能にする (reparametrization trick) 。 具体的には、  z が次のように確率変数  \epsilon写像で得られると仮定する。

 z = g(x, \epsilon, \phi),\quad \epsilon \sim p(\epsilon)

 g(x,\epsilon,\phi) および  p(\epsilon) の具体的な形は、先程 q(z|x,\phi) に課した制約を考慮すると次のようになる。

 z = \mu_{\phi}(x) + \epsilon \cdot \sqrt{\Sigma_{\phi}(x)}, \quad \epsilon \sim \mathcal{N}(0, I)

ここで  \Sigma_{\phi}平方根行列  \sqrt{\Sigma_{\phi}(x)} はコレスキー分解などを用いて求めることができる。

以上の結果を用いて、期待値計算にモンテカルロ近似を適用すると、期待値計算は次のように得られる。

\displaystyle \mathcal{L}(x,\theta,\phi) \simeq \sum_{i=1}^M \big[ \log p\Big(x|\mu_{\phi}(x) + \epsilon^{(i)} \cdot \sqrt{\Sigma_{\phi}(x)},\theta\Big) \big] - \frac{1}{2}( -\log |\Sigma_{\phi}| + \mathrm{tr}\;\Sigma_{\phi} + \| \mu_{\phi} \|^2) ,\quad \epsilon^{(i)} \sim \mathcal{N}(0,I)

上式はパラメータ  \theta, \phi に関して微分可能であるため、(確率的)勾配法を適用して最適化を行うことができる。実際の勾配の導出は面倒なので省略。


ごちゃごちゃしてしまったが、要は「変分事後分布(認識モデル)を正規分布に制約する」ことと「パラメータに依存する分布からの直接のサンプリングを避けるために変数変換を行う」ことが重要なことであり、深層カルマンフィルタでもこの方法を用いて学習アルゴリズムの導出を行うことになる。