卷积网络与偏微分方程
案:本人算是“科班”数学专业,毕业后转入工业界做了点计算机视觉和人工智能(AI)应用,才接触编程语言和深度学习。入行后逐渐发现本来专业所学(偏微分方程、可积系统)与深度学习有很深的联系,但没有写成文章。我写过一个英文的介绍 Neural networks & partial differential equations,这里尽可能简短地介绍一下,并做一些大胆的展望/开一下脑洞。
以卷积网络(CNN)为例,经过很多人的努力发展到残差网络(ResNet)及各种技巧的优化器,已经是一个巅峰了。尤其是将所有的卷积层都转化为3×3及1×1后(如所谓的"depthwise convolution"),整个网络(前向传播feed-forward)可以看做是一个偏微分方程(PDE)的数值模拟。具体地,输入的图像是初始条件,方程是一个(非线性)发展方程(evolution equation)
\frac{\partial u}{\partial t}=F(u,\frac{\partial u}{\partial x},\frac{\partial u}{\partial y},\frac{\partial^2 u}{\partial x\partial y},\ldots) (数学/物理中的经典例子:热方程、薛定谔方程、KdV方程等)
其中 F 包含了非线性的激活函数(ReLU)。变量 t 对应网络的深度,x 和y是图像的长宽方向。(为了方便讨论,这里忽略了池化层和最后的全连接层。)最简单的数值模拟(通称“欧拉法”),就是把连续变量 t,x,y 离散化,很容易得出ResNet的形式。关键的是,3×3的核(kernel)可以看作是(数值近似)一个二阶微分算子(second-order differential operator),即形如
\alpha+\beta\frac{\partial}{\partial x} + \gamma\frac{\partial}{\partial y} + \delta\Delta + \cdots
的算子;而梯度下降的过程就是在调整这些偏导前面的系数(即神经网络中的权重 weights),使得方程的解(在 t=t_f 时)更有利于最后的分类判断。训练可以看成是偏微分方程的逆问题(inverse problem):已知(很多很多)解,求方程。由于多通道(channels)的使用,更准确地说这是一个偏微分方程组,或者说是矩阵系数的偏微分方程。鉴于经典的波动方程也可以化为偏微分方程组,而更广义的双曲型(hyperbolic)微分方程具备更优的性质,我猜测卷积网络对应的方程很可能是双曲型的。
这个基本的联系有人在ResNet出现后就提出过,如鄂维南等,也有不少理论工作(反向传播解释成optimal control;见综述),但至今没有更多的AI从业人员采纳这一视角。我想原因之一是机器学习的思维范式及术语更多来自统计,很多人对不熟悉的数学概念望而却步;其二,貌似目前还没有人以此提出且验证出效果更优的网络结构。以偏微分方程的角度来看,上述的方程还是很浅显的: F 只是最简单的非线性,系数 \alpha,\beta,\gamma,\ldots 都是常系数,或者只是随 t 变的函数。如果让系数也可以随x,y变,那或许可以学到经典ResNet不易学到的。更具体地,如果仅让一阶算子的系数变成x和y的一次函数(即ax+by+c),就可以用来对图像做旋转和缩放等变化–––数学上可以写作:
\exp \left\{\theta\left(-y\frac{\partial}{\partial x}+x\frac{\partial}{\partial y}\right) \right\} = \text{绕}(0,0)\text{旋转}\theta \text{弧度}
我之前一段时间试图自己验证这一想法,希望可以有人合作来完成,特别是有ImageNet级别训练经验的。
理论上,这对很多人都关心的可解释性的问题有什么帮助呢?首先声明,本人对已有的可解释性工作完全不了解。我想可以分开两个可解释性问题,姑且称作宏观的和微观的。宏观的是:为什么这样一个高度过度参数化(overparametrized)的问题没有出现过拟合(overfitting),还能表现很好的泛化能力呢?很多人都想找到合适的数学工具来解释。基于偏微分方程的视角,我的猜测是:KdV和KAM。
KdV是一个非常特殊的非线性波动方程,当然我用它来代指一类像KdV那样的方程:他们的非线性与分散性(dispersion)两相抵消,可以让初始数据保持下去而不损耗。这个现象已经被解释为一个无穷维的可积系统(integrable system)。这一领域与其说是偏微分方程的一个分支(运用很多“硬的”估计和“软的”泛函方法),不若说是代数的一支。传统的看法是这类方程很少见,而绝大多数的方程都会出现混沌现象(chaos)。如果我猜测不错的话,这类方程其实并不少见:每个网络在每个训练集上训练出来都是(某种意义上)可积的。
而KAM理论是二十世纪天体力学(作为纯数学的一支)的巅峰之作,它是用来解释为什么连简单的三体问题都是混沌的,而我们的太阳系却能长期保持稳定呢?套用到深度卷积网络上,对于任意的(随机的)初始条件,网络给出的结果或许是混沌的──有一点扰动就产生很不一样的结果──但对于我们的训练集,和训练集“周边的区域”,结果又是稳定的。如果说太阳系的稳定态是上亿年淘汰出来的,那深度学习的稳定初始条件是我们定的,而方程是通过梯度递降找到的。虽然这可能不是我们期望的可解释性,但我相信KdV和KAM最起码指引了一个方向。
至于微观的可解释性问题,是对于某个具体的训练好的网络,每一层每个通道到底起到什么作用?以偏微分方程的视角,我们应该把每一层“对角化”,如把一个16×16×3×3的张量进行“张量分解”(等价于9个矩阵的同步SVD分解)。通过这种分析,一可以把网络模型缩小,类似于剪枝(pruning)的过程;二,几层连着看,或许可以看出某几个通道的作用。惭愧,我对已有的可解释性工作完全不了解,仅知道OpenAI的Chris Olah团队在做卷积网络reverse engineering的工作,见https://distill.pub/2020/circuits/
p.s. 感谢各位提供相关的工作!
p.p.s. 居然没看到
的文章 见笑了
我当年也涉入过一点机器学习,还有篇合作的publication,但后来发现绝大多数人都不懂后面的原理,没能力搞清楚算法什么时候性能很好什么时候性能不好。而有能力的那少数人几乎都有数学博士出身,所以我后来选择坚持基础数学。
不居然,我一直是混的
我只看到过一篇把有限元用到推荐系统的文章好像很有意思,这方面有其它成功案例么?
可以啊!多谢多谢。
一直在自己努力的学。主要是缺少太多线性代数的理论知识了。因为我实在看不起调参侠和掉包侠,虽然这样的人占了主要部分……嘘……