Calculus of Variations

泛函的概念

众所周知,函数是数到数的映射——输入为数值 x,输出为数值 y(x). 将函数的概念进行扩展,定义泛函 (functional) 为函数到数的映射——输入为函数 y(x),输出为数值 F[y]. 直观地讲,泛函就是“函数的函数”。

Example 1:给定平面上的两点 (x1,y1),(x2,y2),穿过它们的路径有无数条。对其中某条路径 y=y(x),以这两个点为端点的路径长度可以通过曲线积分得到[2]L=x1x21+(y)2dx

由于 L 会随着 y 的不同选择而改变,并且 y 本身是一个函数,所以 L 就是 y 的泛函。

Example 2:在著名的最速降线问题中,建立一个 y 轴向下的坐标系,我们欲求出一条轨迹 y=y(x) 使得小球从 (0,0) 沿轨迹下降到 (a,b) 的用时最短。基于一系列物理定律,我们能推导出所需时间为[3]T=12g0a1+y2ydx

由于 T 会随着 y 的不同选择而改变,并且 y 本身是一个函数,所以 T 就是 y 的泛函。

Example 3:在模式识别和机器学习中,一个常见的泛函就是熵 H[x],因为熵是概率密度函数 p(x) 的函数: H=p(x)lnp(x)dx 我们也可以把熵记作 H[p],来明确表示 p(x) 是自变量。


变分法是求解泛函极值的一种方法,即找到一个函数 y(x),使得 F[y] 极大/极小。在上述三个例子中,运用变分法我们可以证明两点之间直线段最短、找到最速降线的表达式或者证明高斯分布使得熵达到最大。

泰勒展开与泛函导数

回忆对函数 y(x) 求极值的方法——计算导数(derivative)dy/dx 并令其为零。

类似的,要求泛函 的极值,我们可以求泛函导数(functional derivative) 并令其为零。接下来我们通过模仿一元和多元函数的泰勒展开式来定义什么是泛函导数。

对一元函数 ,设对 做微小扰动 ,那么有泰勒展开: 对多元函数 ,设对 做微小扰动 ,那么有泰勒展开: 仿照这种做法,对于泛函 ,设对 做微小扰动 (称为变分),其中 是任意函数,如图所示:

那么可以类比出泰勒展开:

怎么类比的?

观察 式,前者自变量为标量,或者说是“1 维向量”,于是其一阶项系数就是一个导数;后者有 个自变量,或者说是“ 维向量”,于是其一阶项系数就是 个偏导数之和。那么对于泛函 ,它的自变量 是函数,可以视为“无穷维向量”,于是其一阶项系数就类比成了积分。

换句话说,对于一个泛函 ,如果其泰勒展开能够写作 式的形式,那么就得知了其泛函导数 .

最简泛函变分

特别地,我们考虑如下形式的泛函(最简泛函): 其中 的函数。那么: 对括号中的第二项运用分部积分: 注意上面这些积分其实是定积分,只不过为书写方便省略了积分范围。假设 在积分边界处为 ,那么上式第一项其实是 ,代回 式: 对比 式,得知泛函导数就是: 要求极值,只需令其为零: 这被称作欧拉-拉格朗日方程 (Euler-Lagrange Equation).

例子

在 PRML 第一章中有两个地方用到了变分法,当时直接给出了结果,现在我们回过头来看一下解的过程。

在信息论一节中,我们遇到了最大微分熵的问题: 由于这是一个带有约束条件的优化问题,所以先使用拉格朗日乘数法: 虽然看着繁冗,但这依然是最简泛函的形式: 甚至还不包含 ,所以直接: 得: 再结合约束条件,一通代入计算即可解出高斯分布。


在决策论一节中,出现了这样的优化问题(注意自变量是 是已知量): 好像看着有点复杂,但还是最简泛函的形式: 所以直接: 解得:

References

  1. Bishop, Christopher. Pattern recognition and machine learning. ↩︎
  2. 变分法简介Part 1.(Calculus of Variations) - Dr.Stein的文章 - 知乎 https://zhuanlan.zhihu.com/p/20718489 ↩︎
  3. 浅谈变分原理 - 烤羚羊的文章 - 知乎 https://zhuanlan.zhihu.com/p/139018146 ↩︎
  4. PRML 学习笔记(附录):变分法 (Calculus of Variations) - Lucius的文章 - 知乎 https://zhuanlan.zhihu.com/p/610516538 ↩︎

Calculus of Variations
https://xyfjason.github.io/blog-main/2023/04/25/Calculus-of-Variations/
作者
xyfJASON
发布于
2023年4月25日
许可协议