我没有做过automatic differentiation这一方向。论文阅读嘛,就是要走出舒适区,拓宽认知边界的。这一篇以学习前置知识为主。
论文链接:https://openreview.net/pdf?id=J2wI2rCG2u
研究背景
自动微分(automatic differentiation, AD)的维度灾难
- 神经网络可以被理解为一个多元的可微函数,损失函数亦然。在许多现实场景中,神经网络的优化需要求解多元可微函数的高阶自动微分。当函数的自变量数
和微分的阶数 很大时,会不可避免地遭遇维度灾难的问题。具体而言,对于 元函数 ,其 阶微分微分张量的空间复杂度是 。这很好理解: - 当
时,微分张量是函数的梯度,规模为 - 当
时,微分张量是Hessian阵,规模为 - 当
时,微分张量的规模为 - 当
时,需要对 阶微分张量的每个元素求梯度,因此新微分张量规模为
- 当
- 对应地,计算图的规模为
,其中 表示前向计算图的操作数(这一步不很清楚,或许是AD Community众所周知的结论)。
本文贡献
- 本文提出一种随机泰勒微分估计器(Stochastic Taylor Derivative Estimator, STDE)用于高效地估计高阶AD。具体贡献包括:
- 本文阐释了泰勒AD(Taylor mode AD)如何能够对原始的高阶微分问题做摊还优化
- 本文提出了一套完整的使用STDE随机化任意微分算符的流程。这一操作主要关注拉普拉斯算符
- STDE的性能(效率)超过了已有方法,包括SDGD和HTE.
- 本文使用实验验证了STDE的效率。只用8分钟,就在一张英伟达A100 40GB GPU上就完成了
维度级别的偏微分方程的求解。
前置知识
一阶自动微分
- AD被广泛应用于神经网络的优化。一般地,一个神经网络函数
可以被分解为L层的计算图,即 。其中每一层 被称为原始函数(primitive),如全连接神经网络的一个隐藏层。一般计算图可以被分解为有向无环图(directd acyclic graph, DAG)。但是这种层次化表征更方便分析。 - 前向AD(Forward mode AD). 矩阵的一个重要性质:乘积的非对易性。因此一阶自动微分的向量乘积要分成两种情况处理。第一种情况是微分在前,任意向量在后。这种乘积称为雅可比-向量乘积(Jacobian-vector-product, JVP):
。在这里, 们组成一个线性结构,用于计算整体的JVP: - 后向AD(Backward mode AD). 第二种情况是任意向量在前,微分在后。这种乘积称为向量-雅可比乘积(Vector-Jacobian-product, VJP):
。在这种情况下,原始函数微分的计算顺序是与前向AD相反的:
注:我觉得这里用到了微分的算符化表示。此外,原始函数族的微分以及连接操作,可以和矩阵类比。在矩阵中,有
高阶自动微分
- 传统方法中,高阶自动微分本质上就是重复使用一阶自动微分。其中后向AD用得最多。
推荐阅读
- Jesse Bettencourt, Matthew J. Johnson, & David Duvenaud (2019). Taylor-Mode Automatic Differentiation for Higher-Order Derivatives in JAX. In Program Transformations for ML Workshop at NeurIPS 2019. url: https://openreview.net/pdf?id=SkxEF3FNPH (STDE相当于将这篇文章发扬光大了)