序言

记录一下我在 SJTU 上的一堂好课 《Applied Functional Analysis》,前半学期是由 Diez Tobias 教授讲授的 ,在很多地方给了我很大的启发。虽然我也没受过什么科班的数学训练,但是这门课很大程度上打开了我的视野,给了我另一个从泛函角度分析数学问题的视角(nn.module 当然可以视作一种泛函)。

本篇 blog 记录了本学期 Tobias 教授最后一堂课中的一个 example question,很有意思。

Setting

考虑这样一个火箭升空问题:我们需要设定一个最小消耗的燃料方案,来保证火箭能够到达指定高度 $h$。为了建模该问题,我们设火箭的升空力为 $F(t)$,所处高度为 $y(t)$,一个简化的模型是:

并且假设燃料消耗量为 $\int_0^T |F(t)|\text{d}t$. 这里当然做了很多简化,比如说应该是 $m(t)$ 而不是 $m$,不过不重要,只是考虑这样一种setting。

则对牛二积分可得:

对上式,我们再进行一次积分。注意到

或者分步积分也行。总之积分结果为

代入 $t=T$ 时刻的约束,得

以上就是我们的约束条件,整个问题可以转化为这样一个问题:

对于一个固定的时间 $T$,找到一个预算方案 $F \in \mathbb{L}^1([0, T])$,使得

若我们从泛函的角度去理解该问题,则可以考虑一个 Hilbert Space $\mathcal{H}$,令 $w = \{T-\tau\} \in \mathcal{H}$, $u=\{F(\tau)\} \in \mathcal{H}$ and $c = mh + \frac{mg}{2}T^2 \neq 0 \in \mathbb{R}$,将问题转化为

以上,就是整个问题的定义,接下来的任务就是考虑怎么求解该问题。

读者可能不熟悉泛函分析,所谓 Hilbert Space 可以理解为,带有内积诱导的范数($L^2$范数)的 Banach Space,我们常用的几何视角可以安全地搬到 Hilbert Space 上考虑。

为了处理内积,我们选择将问题放在 $\mathcal{H}$ 中。但这会导致一个问题,我们的优化目标是 $\lVert F \rVert_1$ 而非 $\lVert F \rVert_2$,本质上是不一样的。此问题先暂时按下不表,后续我们会看到如何将其放到 Dual Space 上处理。

Solution

寻找解空间

一个看似很简单的方法是使用 Cauchy-Schwarz 不等式,$\langle w| u \rangle = c \leq \lVert w \rVert \lVert u\rVert$,所以 $\lVert u \rVert \geq \frac{c}{\lVert w \rVert}$,直接秒了。但是我们后续会发现,它没法进一步将 $\lVert \cdot \rVert_2$ 解扩展到 $\lVert \cdot \rVert_1$了;并且 Cauchy-Schwarz 假设 $w$ 与 $u$ 是continous的,解空间被限制在 $\mathbb{L}^1$ 的子集 $\mathbb{C}([0, T])$ 上。

仍然回到泛函分析的视角,来看看怎么理解该问题。

考虑一个简单的 $(a, b, c)^T \cdot (x, y, z) = m$ 的问题,它对应的即是一个三维空间中的平面方程 $ax + by + cz = m$,法向量是 $(a, b, c)$

对于我们的 $\langle w| u \rangle = c$ 约束也是一样的,$u$ 的解空间也是一个超平面,法向量是 $w$,我们需要解决这样两个问题:

  • 这个超平面上有点吗?解是否存在?

  • 我们如何描述这个超平面?

我们在法向量 $w$ 对应的直线 $\text{span}(w)$ 上建立一个线性泛函 $\alpha \in \mathcal{H}^\mid$,使得 $\alpha(w) = c$. 应用 Hahn-Banach 定理,我们将其扩展到定义在整个 $\mathcal{H}$ 上的线性泛函 $\alpha_0$,它仍然满足 $\alpha_0(w) = c$

应用 Riesz 表示定理,将线性泛函与内积联系起来,即必然存在一个唯一的 $u_0 \in \mathcal{H}$,使得 $\forall v \in \mathcal{H}, \alpha_0(v) = \langle v | u_0 \rangle$。将其应用在向量 $w$ 上,我们可以得到

因此,$u_0$ 就是我们构造出来的一个,对应于约束 $\langle w | u \rangle = c$ 的可行解。

以此为锚点,我们可以简化问题:

所以,我们将原问题 “寻找 $u$,使得 $\langle w | u \rangle = c$” 转化为了 寻找 $u-u_0$,使得 $u-u_0\in w^{\perp}$”。我们只需要找到一个合法解,然后就可以表示整个解空间了。在这个解空间里,我们可以再考虑去找到 $\lVert \cdot \rVert_1 $ 最小的可行解。

对偶空间嵌入

然而,上述推导是有问题的。首先,我们找到的解空间是 $\mathbb{L}^2$ 空间的一个子空间,很多 $\mathbb{L}^1$ 中的解早在我们将问题搬入 Hilbert Space 的那一刻就已经被扔掉了。

其次,我们之前推导全部建立在 Hilbert Space 的假设上,However,$\mathbb{L}^1([0, T])$ 恰恰不是一个 Hilbert Space,Riesz 表示定理等在此情况下都会失效,所以推导过程其实也是不成立的。

我们考虑将所有 $F \in \mathbb{L}^1([0, T])$ 嵌入到对偶空间 $\mathbb{L}^1([0, T])^\mid = \mathbb{L}^\infty([0, T])$ 上去处理,定义

我们最小化的目标可以从 $\lVert F \rVert_1$ 转化为 $\lVert \mathcal{F} \rVert^\mid = \sup \{|\mathcal{F}(g)|: g \in \mathbb{L}^\infty([0, T]), \lVert g \rVert_\infty = 1 \}$

该问题的性质如下:

  • 该嵌入是单射(injective)的:因为如果 $\int_0^TF(\tau)g(\tau)\text{d}\tau = 0$ 对所有 $g$ 成立,则 $F$ 必须是零函数。否则我们很容易针对任意一点 $F(t_0) \neq 0$ 构造一个 bump function 来使其积分不为 0。

  • 该嵌入是保范数(perserving the norm)的,可以证明 $\lVert \mathcal{F} \rVert^\mid = \lVert F \rVert_1$(通过分别证明 $\lVert \mathcal{F} \rVert^\mid \leq \lVert F \rVert_1$ 与 $\lVert \mathcal{F} \rVert^\mid \geq \lVert F \rVert_1$, 这是最关键的证明,后续补一下,笔记有点不清楚……)

  • 该嵌入不是满射(not surjective)的,对偶空间要大的多

以上性质保证了,最小化 $\lVert F \rVert_1$ 的原目标,我们可以通过最小化泛函 $\mathcal{F}$ 的范数 $\lVert \mathcal{F} \rVert^\mid$ 来实现。并且,它的解空间实际上是大于实际的解空间 $\mathbb{L}^1$ 的(也就是说,我们还有可能找到 $\mathbb{L}^1$ 之外的解)

而我们的约束条件 $\int_0^T (T-\tau) F(\tau)d\tau = c$ 可以看作是 “由 $F$ 诱导的线性泛函 $\mathcal{F}$, 作用在函数 $w$ 上” 的结果,要求 $\mathcal{F}(w) = c$

我们的目标是:

看起来很简单是不是?实际上就是很简单,根据 Hahn-Banach 定理的推论,我们能立刻知道所求的 $\lVert \mathcal{F}_{min}\rVert = \frac{|c|}{\lVert w \rVert_\infty} = \frac{|c|}{T}$,这就是我们所求的最小燃料消耗量。

但是方案呢?根据 Holder 不等式:

实际上我们考虑的就是取等的情况,$|\int_0^T F(\tau)w(\tau)\text{d}\tau| = \lVert F \rVert_1 \lVert w \rVert_\infty$,这要求我们将函数 $F(\tau)$ 的全部能量集中在 $w(\tau)$ 最大的那一点上。而 $w(\tau)$ 最大的一点即是 $t=0$ 时 $w(0) = T$

也就是说,推力 $F$ 需要集中在 $t=0$ 时施加,它是一个 $\delta$ 函数

代入约束条件,即可求得 $A = \frac{c}{T}$,也即 $F(t) = (\frac{mh}{T} + \frac{mgT}{2}) \delta(t)$

该方案的燃料消耗量 $\lVert F \rVert_1 = |\frac{c}{T}|$,和我们应用 Hahn-Banach 推论找到的最小值吻合。

严格来说,$\delta$ 函数并不是一个 $L^1$ 函数(这里不展开),这也符合我们的对偶空间嵌入策略,找到了一个 $L^1$ 之外的更好的广义解。这个解也有很好的物理解释:我们一开始就加速到最快,之后都用最快的速度来飞行。这是在这个极度简化的物理模型下的特殊情况(没有阻力、不考虑燃料的重力等等)。

总结

以上,是一个物理与泛函分析结合的例子。回到我的学习领域深度学习,我们也常常面临这种“预算分配”的问题:学习率的scheduler,batch size 的 scheduler 引出的 token 量的分配,等等。

深度学习最大的问题是,我们没有牛顿定律这样的金科玉律,根本没有办法预言我们当前的分配会产生什么样的后果。只能后验地根据 Hessian、RMS Norm 等观测值,来推测目前的 “飞行轨迹” 进行到了哪一步。硬要建模的话,我了解的也就只有 朗之万动力学 那一种;但很多实践已经证明了,朗之万动力学是有缺陷的。“有缺陷”指的是,它与 LLM 的归纳偏置不符,例如我的一个很大感触就是,噪音肯定不能建模为高斯噪声,至少也是某种重尾分布。

But who knows,这些问题牵涉的变量太多了,并且实验需要大量资源,太穷了。学习过程看起来只能建模为随机微分方程,会存在深度学习的牛顿定律或者相对论吗?只能等待着某位超级智者,未来有一天能解决深度学习领域的终极问题吧。