機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

ラプラス近似

関数f(\mathbf{x})を正規分布の形状で近似する方法です。

f(\mathbf{x})の対数をとった\ln f(\mathbf{x})において、\nabla \ln f(\mathbf{x})=\mathbf{0}となる点\mathbf{x}^{\prime}まわりでのテイラー展開による2次近似を考えます。多変数関数の点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})まわりのテイラー展開は、


\displaystyle f(x_1,\cdots, x_n) \simeq \sum_{k=0}^{\infty}\frac{1}{k!} \left\{ (x_1-x_{1}^{\prime}) \frac{\partial}{\partial x_1} +\cdots+(x_n-x_{n}^{\prime}) \frac{\partial}{\partial x_n} \right\}^{k}f(x_{1}^{\prime},\cdots, x_{n}^{\prime})\tag{1}

ですので、\ln f({\mathbf{x}})の点\mathbf{x}^{\prime}まわりでのテイラー展開による2次近似は、


\displaystyle \ln f(\mathbf{x}) \simeq \ln f(\mathbf{x}^{\prime}) +\displaystyle \frac{1}{2} (\mathbf{x}-\mathbf{x}^{\prime})^{T}\bar{\mathbf{H}} (\mathbf{x}-\mathbf{x}^{\prime}) \tag{2}

です。(参考:ヘッセ行列で極値の判定 *1)ここで


\displaystyle \bar{\mathbf{H}} = \nabla \nabla \ln f(\mathbf{x}) |_{\mathbf{x}=\mathbf{x}^{\prime}} \tag{3}

です。


\displaystyle \mathbf{A} = -\bar{\mathbf{H}} \tag{4}

とすれば、


\displaystyle \ln f(\mathbf{x}) \simeq \ln f(\mathbf{x}^{\prime}) - \displaystyle \frac{1}{2} (\mathbf{x}-\mathbf{x}^{\prime})^{T} \mathbf{A} (\mathbf{x}-\mathbf{x}^{\prime}) \tag{5}

です。対数を外せば、


\displaystyle f(\mathbf{x}) \simeq f(\mathbf{x}^{\prime}) \exp \left\{ -\frac{1}{2} (\mathbf{x}-\mathbf{x}^{\prime})^{T} \mathbf{A} (\mathbf{x}-\mathbf{x}^{\prime}) \right\} \tag{6}

です。式(6)はまさに多変量正規分布の形をしています。

試しにf(x)=\cos xをラプラス近似してみました。計算に自信がなかったので簡単な1変数関数にしてしまいました。これをラプラス近似すると、


\displaystyle \cos x \simeq  \exp \left( -\frac{x^{2}}{2} \right) \tag{7}

となりました。グラフにすると下図のようになり、確かに近似になっていそうです。 f:id:opabinia2:20190922230009p:plain

*1:文字の表現が少し違ってるので、対比して見ると余計ややこしくなりそうですが