微分万物:深度学习的启示
The following article is from 中国物理学会期刊网 Author 王 磊 刘金国
导语
深度学习教会了人们一种新的和计算机打交道的方式:将一些可微分的计算单元组合形成一段程序,再通过梯度优化的方法调整程序参数,使其达成期望的目标。这就是微分编程的思想。深度学习技术的快速发展为微分编程提供了趁手的工具,也为计算物理开辟了一番新天地。文章介绍微分编程的基本概念,并举例说明它在建模、优化、控制、反向设计等物理问题中的应用。
关键词 : 微分编程,自动微分,计算物理
王磊 刘金国 | 作者
中国物理学会期刊网 | 来源
01引言
深度学习在做什么?对于这个问题,人们的第一反应往往是“训练人工神经网络”。这个解释让深度学习听起来既神奇又神秘,却没有正面回答问题。让我们再追问一句:训练神经网络又是在做什么?纯粹从编程的角度看,深度学习将一些可微分的计算单元搭建成为一段程序,再使用梯度优化的方法调节程序参数,使其达成所需的功能。其实,人工神经网络是一类特别简单的计算机程序。大多数神经网络中主要涉及的是张量运算,例如张量收缩和元素非线性变换等。而所谓“深层”的神经网络,只不过意味着这类张量计算程序比较长而已。在这个意义下,人工神经网络只是一小类可以被训练的程序。推而广之,我们可以对一般的计算机程序求导,利用梯度信息调节程序的行为,这就是微分编程。
02微分编程:从薛定谔方程到愤怒的小鸟
让我们通过几个例子来直观地认识微分编程。图1(a)定义了这样一个问题:如何设计合适的外势场,使得其中的自由电子的基态密度分布达到期望的形式。这个问题的正向求解是相对容易的,只需要根据外势场构造哈密顿量,再求解相应的本征值问题就能得到基态的电子密度。按照微分编程的思路解决反向问题,我们首先定义正向计算的密度与目标密度的差别作为目标函数,再穿过正向计算过程求导得到目标函数对于外势场的梯度。之后,我们可以利用梯度信息优化外势场,使其中的电子密度分布逐渐逼近目标分布。这类反向求解自由电子势函数的问题是密度泛函理论研究中的基本问题[4],也是一个有代表性的哈密顿量反向设计问题。微分编程是解决这类问题简单而通用的方法。读者可以参考笔者编写的演示程序,使用深度学习框架PyTorch解决一维薛定谔方程的逆问题[5]。
03什么是自动微分?
顾名思义,自动微分就是自动化地计算程序的输出相对于输入的导数。这项技术的本质是机械地对计算过程使用链式法则,从而得到数值精确的导数信息。我们可以用计算图来形象化地表达程序运行和自动微分的过程。计算图是一个有向无环图(directed acyclic graph),其中的节点和箭头代表程序运行时变量之间的依赖关系。图2展示了一类典型的计算图。其中变量 x1 代表程序输入,x2,x3 是计算中间结果,θ1,θ2是程序的参数。最后,计算图末端的节点L 代表程序输出的标量损失函数。图1中的三个例子所对应的计算图都具有这样的结构[8]。
04微分编程的科学应用
4.1建模问题
4.2优化问题
4.3控制问题
4.4反向设计问题
05结语
科幻作家Arthur Clarke有一句名言:“任何充分先进的技术看起来都无异于魔法”。技术进步可以解放人们的思想,去探索更有创意的工作。微分编程的技术与应用都还在快速的发展中。例如,微分编程与可逆计算相结合,可以缓解反向模式自动微分的内存瓶颈[30]。此外,微分编程的应用范围甚至还逐渐扩展到对于离散参数或是结构信息等“不可微分”对象的学习上。因此,本文所介绍的例子还仅仅是微分编程牛刀小试,希望可以让更多的读者了解和喜欢上微分编程,让它在现实问题中大显身手。
微分编程工具
本文中列举的应用涉及到对多种复杂运算的求导,例如非线性方程求解、快速傅里叶变换、矩阵分解等等。因为这些应用的推动,人们开发了越来越多的微分编程基本单元和工具。这些进展进一步丰富了微分编程的生态。下方表格介绍了一些微分编程工具。此外,www.autodiff.org网站还列举了更多的微分编程工具。
基于这些编程工具,科学家们打造了针对具体领域的微分编程软件。这包括张量网络[20]、分子模拟[21]、量子线路[22—24]、系外行星[25]等。此外还有面向可微分的科学计算工具:ξ-torch[26]和 ADCME[27]等。SciML[28]和dolfimadjoint[29]对基于微分方程的可微分科学计算有丰富的支持。一般来说,如果程序中主要包含的是线性代数与张量计算,可以直接使用现有的深度学习框架,因为这些框架的本质是支持硬件加速的可微分张量计算库。而如果程序中主要包含的是微分方程求解、自洽迭代等计算,则需要根据具体情况选用专门的工具以充分发挥微分编程的性能。
致 谢: 感谢与谢浩、张潘、李伟、谢志远、廖海军和向涛的合作与讨论。
参考资料
[1] 其实,也可以说微分编程是深度学习的过去,见文献2,3
[2] Nolan J F. Analytical differentiation on a digital computer. Massachusetts Institute of Technology,1953
[3] Wengert R E. Communications of the ACM,1964,7:463
[4] Jensen D S,Wasserman A. International Journal of Quantum Chemistry,2018,118(1):e25425
[5]https://github.com/QuantumBFS/SSSS/blob/master/1_deep_learning/schrodinger.py
[6] Chen R T Q,Rubanova Y,Bettencourt J et al. 2018,arXiv:1806.07366
[7] Rackauckas C et al. 2020,arXiv:2001.04385
[8] 其实逆薛定谔方程和愤怒的小鸟例子中的计算图更简单:它们没有参数节点,是纯链状结构的。
[9] Ingraham J et al. Learning Protein Structure with a Differentiable Simulator. International Conference on Learning Representations,2019
[10] McGreivy N,Hudson S R,Zhu C X. 2020,arXiv:2009.00196
[11] AlphaFold: a solution to a 50-year-old grand challenge in biology. https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology
[12] Li L et al. Phys. Rev. Lett.,2021,126:036401
[13] Tamayo-Mendoza T et al. ACS Cent. Sci.,2018,4(5):559
[14] Liao H J,Liu J G,Wang L et al. Phys. Rev. X,2019,9:031041
[15] Liao H J. Talk at Computational Approaches to Quantum Many-body Problems. ISSP,2019. https://www.issp.u- tokyo.ac.jp/public/caqmp2019/slides/726S_Liao.pdf
[16] Kolter Z,Duvenaud D,Johnson M. NeurIPS 2020 tutorial,Deep Implicit Layers- Neural ODEs,Deep Equilibirum Models,and Beyond. https://implicit-layers-tutorial.org/
[17] Goodrich C P et al. 2020,arXiv: 2010.15175
[18] Güngördü U,Kestner J P. 2020,arXiv:2011.02512
[19] Minkov M et al. ACS Photonics,2020,7( 7):1729
[20] https://github.com/jurajHasik/peps-torch
[21] https://github.com/google/jax-md
[22] Bergholm V et al. 2018,arXiv:1811.04968
[23] Luo X Z,Liu J G,Zhang P et al. Quantum,2020,4:341
[24] Broughton M et al. 2020,arXiv:2003.02989
[25] Morvan M et al. 2020,arXiv:2011.02030
[26] Kasim M F,Vinko S M. 2020,arXiv:2010.01921
[27] Xu K L. Automatic Differentiation Library for Computational and Mathematical Engineering. https://github.com/kailaix/ADCME.jl
[28] https://sciml.ai/
[29] http://www.dolfin-adjoint.org/en/latest/
[30] Liu J G,Zhao T. 2020,arXiv:2003.04617
复杂科学最新论文
点击“阅读原文”,追踪复杂科学顶刊论文