在介绍变分贝叶斯之前,首先以这篇博客介绍下大名鼎鼎的变分法。 参考资料主要是知乎的文章与维基百科。
变分就是函数的微分。
回顾一下传统的函数优化问题。 对于 min x f ( x ) \min_x f(x) minxf(x)这样的优化问题,求取最优的 x x x的做法常用一阶条件,即: ∂ f ∂ x ⋆ = 0 \frac{\partial f}{\partial x^\star} =0 ∂x⋆∂f=0 对应的物理意义是从该点出发的任何变化方向都无法让函数值进一步下降,也即: f ( x ⋆ ) ≤ f ( x ⋆ + ϵ d x ) f(x^\star) \le f(x^\star + \epsilon dx) f(x⋆)≤f(x⋆+ϵdx) 因此,这也是最优的 x ⋆ x^\star x⋆的必要条件, 容易通过反证法求证。如果将这个方法称为变量求最优解的微分法, 那变函数求最优解的类似方法就是变分法。 具体而言, 此时变量 x x x成了给定的东西,我们要通过优化函数来最小化函数值, 也即 min f g ( f ( x ) ) \min_f g(f(x)) minfg(f(x))。 g g g就是以函数为变量的目标函数, 而函数的变化量就是变分。 我们通过一个经典的例子来进行阐释。
如上图所示, 存在函数 y = f ( x ) y=f(x) y=f(x)。 对应上图 y 1 = f ( x 1 ) y1 = f(x_1) y1=f(x1), y 2 = f ( x 2 ) y_2 = f(x_2) y2=f(x2)。我们的问题是寻找给定的 ( x 1 , y 1 ) (x1, y1) (x1,y1)和 ( x 2 , y 2 ) (x2, y2) (x2,y2)间的最短距离所对应的 f f f函数。 通过小学知识我们知道,结论是两点之间线段最短。现在我们通过变分法论证这一点, 也即 f f f函数是一个一次线性函数。
首先,我们可以将 ( x 1 , y 1 ) (x1, y1) (x1,y1)和 ( x 2 , y 2 ) (x2, y2) (x2,y2)间的距离显示地写出,作为我们的目标函数。 具体地, 我们取线上的一小段微元 d s ds ds (参考上图), 根据勾股定理显然有 (注意是 d y 2 dy^2 dy2不是 d 2 y d^2y d2y): d s 2 = d x 2 + d y 2 = [ 1 + ( y ′ ) 2 ] d x 2 d s^{2}=d x^{2}+d y^{2}=\left[1+\left(y^{\prime}\right)^{2}\right] d x^{2} ds2=dx2+dy2=[1+(y′)2]dx2 因此 d s = 1 + ( y ′ ) 2 d x d s=\sqrt{1+\left(y^{\prime}\right)^{2}} d x ds=1+(y′)2 dx,总路径长度可写为:
A [ f ] = ∫ x 1 x 2 1 + [ f ′ ( x ) ] 2 d x A[f]=\int_{x_{1}}^{x_{2}} \sqrt{1+\left[f^{\prime}(x)\right]^{2}} d x A[f]=∫x1x21+[f′(x)]2 dx
此时路径长度为函数 f f f的函数。 类似于一阶条件, 假设 f 0 f_0 f0是能达到局部最小的函数,那么有: A [ f 0 ] ≤ A [ f 0 + ϵ f 1 ] A\left[f_{0}\right] \leq A\left[f_{0}+\epsilon f_{1}\right] A[f0]≤A[f0+ϵf1] 其中 f 1 f_1 f1是以 x 1 x1 x1和 x 2 x2 x2为端点的任意函数, ϵ \epsilon ϵ代表一个极小值。类似地,这就要求对于任意 f 1 f_1 f1,当 ϵ → 0 \epsilon\rightarrow 0 ϵ→0时, A [ f 0 + ϵ f 1 ] A\left[f_{0}+\epsilon f_{1}\right] A[f0+ϵf1]对 ϵ \epsilon ϵ的导数为 0 0 0:(对于给定的 f 1 f_1 f1, A [ f 0 + ϵ f 1 ] A\left[f_{0}+\epsilon f_{1}\right] A[f0+ϵf1]是 ϵ \epsilon ϵ的函数)
d d ϵ ∫ x 1 x 2 1 + [ f 0 ′ ( x ) + ϵ f 1 ′ ( x ) ] 2 d x ∣ ϵ = 0 = ∫ x 1 x 2 ( f 0 ′ ( x ) + ϵ f 1 ′ ( x ) ) f 1 ′ ( x ) 1 + [ f 0 ′ ( x ) + ϵ f 1 ′ ( x ) ] 2 ∣ ϵ = 0 d x = ∫ x 1 x 2 f 0 ′ ( x ) f 1 ′ ( x ) 1 + [ f 0 ′ ( x ) ] 2 d x = 0 \left.\frac{d}{d \epsilon} \int_{x_{1}}^{x_{2}} \sqrt{1+\left[f_{0}^{\prime}(x)+\epsilon f_{1}^{\prime}(x)\right]^{2}} d x\right|_{\epsilon=0}=\left.\int_{x_{1}}^{x_{2}} \frac{\left(f_{0}^{\prime}(x)+\epsilon f_{1}^{\prime}(x)\right) f_{1}^{\prime}(x)}{\sqrt{1+\left[f_{0}^{\prime}(x)+\epsilon f_{1}^{\prime}(x)\right]^{2}}}\right|_{\epsilon=0} d x=\int_{x_{1}}^{x_{2}} \frac{f_{0}^{\prime}(x) f_{1}^{\prime}(x)}{\sqrt{1+\left[f_{0}^{\prime}(x)\right]^{2}}} d x=0 dϵd∫x1x21+[f0′(x)+ϵf1′(x)]2 dx∣∣∣∣ϵ=0=∫x1x21+[f0′(x)+ϵf1′(x)]2 (f0′(x)+ϵf1′(x))f1′(x)∣∣∣∣∣∣ϵ=0dx=∫x1x21+[f0′(x)]2 f0′(x)f1′(x)dx=0
此处可以使用分部积分法: ∫ u d v = u v − ∫ v d u \int udv = uv -\int vdu ∫udv=uv−∫vdu。令 v = f 1 ( x ) v=f_1(x) v=f1(x), u = f 0 ′ ( x ) 1 + [ f 0 ′ ( x ) ] 2 u=\frac{f_{0}^{\prime}(x)}{\sqrt{1+\left[f_{0}^{\prime}(x)\right]^{2}}} u=1+[f0′(x)]2 f0′(x),得到: ∫ x 1 x 2 f 1 ( x ) d d x [ f 0 ′ ( x ) 1 + [ f 0 ′ ( x ) ] 2 ] d x = 0 \int_{x_{1}}^{x_{2}} f_{1}(x) \frac{d}{d x}\left[\frac{f_{0}^{\prime}(x)}{\sqrt{1+\left[f_{0}^{\prime}(x)\right]^{2}}}\right] d x=0 ∫x1x2f1(x)dxd⎣⎡1+[f0′(x)]2 f0′(x)⎦⎤dx=0 这里使用了条件 f 1 ( x 1 ) = f 1 ( x 2 ) = 0 f_1(x1)=f_1(x2)=0 f1(x1)=f1(x2)=0。 由于对于任意 f 1 f_1 f1都要有此结论,因此: d d x [ f 0 ′ ( x ) 1 + [ f 0 ′ ( x ) ] 2 ] = 0 \frac{d}{d x}\left[\frac{f_{0}^{\prime}(x)}{\sqrt{1+\left[f_{0}^{\prime}(x)\right]^{2}}}\right]=0 dxd⎣⎡1+[f0′(x)]2 f0′(x)⎦⎤=0 化简终可得到: d 2 f 0 d x 2 = 0 \frac{d^{2} f_{0}}{d x^{2}}=0 dx2d2f0=0 也即, f ( x ) f(x) f(x)为直线。
而对于更普遍的情况, 一般函数的函数都可以写为如下形式:
A [ f ] = ∫ x 1 x 2 L ( x , f , f ′ ) d x A[f]=\int_{x_{1}}^{x_{2}} L\left(x, f, f^{\prime}\right) d x A[f]=∫x1x2L(x,f,f′)dx 即变量为 x x x,函数和函数的一阶导。此时,根据类似的推导,可以得到最优解需要满足条件:
− d d x ∂ L ∂ f ′ + ∂ L ∂ f = 0 -\frac{d}{d x} \frac{\partial L}{\partial f^{\prime}}+\frac{\partial L}{\partial f}=0 −dxd∂f′∂L+∂f∂L=0 这也被称为欧拉-拉格朗日方程, 为极值的必要条件。而由此求取极值的方法也即变分法。