搜索

x

留言板

姓名
邮箱
手机号码
标题
留言内容
验证码

downloadPDF
引用本文:
Citation:

刘金国, 许开来

Automatic differentiation and its applications in physics simulation

Liu Jin-Guo, Xu Kai-Lai
PDF
HTML
导出引用
  • 自动微分是利用计算机自动化求导的技术, 最近几十年因为它在机器学习研究中的应用而被很多人了解. 如今越来越多的科学工作者意识到, 高效、自动化的求导可以为很多科学问题的求解提供新的思路, 其中自动微分在物理模拟中的应用尤为重要, 而且具有挑战性. 物理系统的可微分模拟可以帮助解决混沌理论、电磁学、地震学、海洋学等领域中的很多重要问题, 但又因为其对计算时间和空间的苛刻要求而对自动微分技术本身提出了挑战. 本文回顾了将自动微分技术运用到物理模拟中的几种方法, 并横向对比它们在计算时间、空间和精度方面的优势和劣势. 这些自动微分技术包括伴随状态法, 前向自动微分, 后向自动微分, 以及可逆计算自动微分.
    Automatic differentiation is a technology to differentiate a computer program automatically. It is known to many people for its use in machine learning in recent decades. Nowadays, researchers are becoming increasingly aware of its importance in scientific computing, especially in the physics simulation. Differentiating physics simulation can help us solve many important issues in chaos theory, electromagnetism, seismic and oceanographic. Meanwhile, it is also challenging because these applications often require a lot of computing time and space. This paper will review several automatic differentiation strategies for physics simulation, and compare their pros and cons. These methods include adjoint state methods, forward mode automatic differentiation, reverse mode automatic differentiation, and reversible programming automatic differentiation.
        Corresponding author:Liu Jin-Guo,jinguoliu@g.harvard.edu
      • Funds:Project suppored by the Research Program of QuEra Computing Inc.
      [1]

      [2]

      [3]

      [4]

      [5]

      [6]

      [7]

      [8]

      [9]

      [10]

      [11]

      [12]

      [13]

      [14]

      [15]

      [16]

      [17]

      [18]

      [19]

      [20]

      [21]

      [22]

      [23]

      [24]

      [25]

      [26]

      [27]

      [28]

      [29]

      [30]

      [31]

      [32]

      [33]

    • 输入: 动力学参数$\theta$, 开始时间$t_0$, 结束时间$t_n$, 末态$s_n$, 以及需要回传的导数$\dfrac{\partial {\cal{L} } }{\partial s_n}$
      输出: $\dfrac{\partial {\cal{L} } }{\partial s_0}$, $\dfrac{\partial {\cal{L} } }{\partial \theta}$
      1 functionaug_dynamics((s,a, –),t, $\theta$)
      2  $q=f(s, t, \theta)$   #定义拓展动力学函数
      3  return$\left(q, \;-a^{\rm{T}}\dfrac{\partial q}{\partial s}\right.$, $\left. -a^{\rm{T}}\dfrac{\partial q}{\partial \theta}\right)$
      4end
      5 ${S_0} = \left( { {s_n}, \dfrac{ {\partial {\cal{L} } } }{ {\partial {s_n} } }, 0} \right)$ #计算拓展动力学函数的初始状态
      6 $\left(s_0,\; \dfrac{\partial {\cal{L} } }{\partial s_0}\right.$, $\left.\dfrac{\partial {\cal{L} } }{\partial \theta}\right)$ = ODESolve(aug_dynamics,S0, $\theta$, $t_n$,t0)       #对拓展动力学反向积分
      下载: 导出CSV

      方法 时间 空间 是否严格
      伴随状态法 ${\cal{O}}(T)$ ${\cal{O}}(S)$
      前向自动微分 ${\cal{O}}(NT)$ ${\cal{O}}(S)$
      基于最优检查点的
      后向自动微分
      ${\cal{O}}(T\log T)$ ${\cal{O}}(S\log T)$
      基于可逆计算的
      后向自动微分
      ${\cal{O}}(T^{1+\epsilon})$ ${\cal{O}}(S\log T)$
      下载: 导出CSV

      方法 Julia ForwardDiff NiLang Neural
      ODE +
      NiLang
      时间/ms 1.90 2.88 6.70 34.30
      空间 (估计) 1 6 104 50
      下载: 导出CSV

      放置规则: 如果第$ i $个格子上有鹅卵石, 则可以从自己堆中 取一个鹅卵石放置于第$ i+1 $个格子中,
      回收规则: 仅当第$ i $个格子上有鹅卵石, 才可以把第$ i+1 $ 个格子上的鹅卵石取下放入自己的堆中,
      结束条件: 第$ n $个格子上有鹅卵石.
      游戏目标: 在固定可使用鹅卵石数目为$ S $ (不包括初始鹅 卵石) 的前提下, 使用尽可能少的步骤数触发游 戏结束.
      下载: 导出CSV

      输入: 初始状态集合$S=\{0:s_0\}$, 子分块数目$k$, 分块   起点点$i=0$, 分块长度$L=n$
      输出: 末态$S[n]$
      1functionbennett (S, $k$, $i$, $L$)
      2  ifL= 1then
      3  $S[i+1]\leftarrow0$
      4  $S[i+1]+=f_iS[i]$
      5  else
      6    $l\leftarrow\lceil {L}/{k} \rceil$
      7     $k'\leftarrow\lceil {L}/{l} \rceil$
      8  for$j=1,2,\cdots,k'$do
      9   bennett $(S, k, i+(j-1)l) $, min $(l,L(j-1) l))$
      10  end
      11  for$j=k'-1,k'-2,\cdots 1$do
      12   bennett $(S, k, i+(j-1)l,l)$
      13  end
      14  end
      15  end
      下载: 导出CSV

      放置规则: 如果第$ i $个格子上有鹅卵石, 则可以从自己堆中取一个鹅卵石放置于第$ i+1 $个格子中.
      回收规则: 可以随意把格子上的鹅卵石取下放入自己的堆中, 收回鹅卵石不计步骤数.
      涂鸦规则: 当第$ i $个格子有鹅卵石, 且第$ i+1 $个格子被涂鸦, 可以涂鸦第$ i $个格子, 涂鸦不记入步骤数.
      结束条件: 涂鸦完所有的格点.
      游戏目标: 在固定可使用鹅卵石数目为$ S $ (不包括初始鹅卵石) 的前提下, 使用尽可能少的步骤数触发游戏结束.
      下载: 导出CSV

      输入: 状态缓存集合$S=\{0:s_0\}$, 需回传的梯度$\overline{s_n}\equiv $$ \dfrac{\partial {\cal{L} } }{\partial s_n}$, 允许缓存的状态数$\delta$, 扫描次数$\tau$, 分块起点$\beta=0$, 分开终点$\phi=n$内容 以及把分块分割为两部分的分割点$\sigma=0$
      输出: 回传的梯度$\overline{s_0} \equiv \dfrac{\partial {\cal{L} } }{\partial s_0}$
      1functiontreeverse(S, $\overline{s_\phi}$, $\delta$, $\tau$, $\beta$, $\sigma$, $\phi$)
      2  if$\sigma > \beta$then
      3   $\delta = \delta - 1$
      4   $s = S[\beta]$  #加载初始状态 $s_\beta$
      5   for$j=\beta, \beta+1, ..., \sigma-1$do
      6    $s_{j+1} = f_j(s_j)$  #计算$s_\sigma$
      7   end
      8   $S[\sigma] = s_\sigma$
      9  end
      10  #以$\kappa$为最优分割点(二项分布), 递归调用
      Treeverse算法
      11  while$\tau>0$and$\kappa={\rm{mid}}(\delta, \tau, \sigma, \phi) < \phi$do
      12   $\overline{s_{\kappa}}$ = treeverse(S, $\overline{s_\phi}$, $\delta$, $\tau$, $\sigma$, $\kappa$, $\phi$)
      13   $\tau = \tau-1$
      14   $\phi = \kappa$
      15  end
      16  $\overline{s_\sigma} \!=\! \overline{f_\sigma}(\overline{s_{\sigma+1} }, s_\sigma)$  #利用已有的$s_\sigma$和$\overline{s_\phi}$ 回
      传导数
      17  if$\sigma>\beta$then
      18   remove($S[\sigma]$) # 从缓存的状态集合中移除$s_\sigma$
      19  end
      20  return$\overline{s_\sigma}$
      21end
      22functionmid($\delta$, $\tau$, $\sigma$, $\phi$) #选取二项分布分割点
      23  $\kappa = \lceil(\delta\sigma + \tau\phi)/(\tau+\delta)\rceil$
      24  if$\kappa \geq \phi$and$\delta > 0$then
      25   $\kappa = \max(\sigma+1, \phi-1)$
      26  end
      27end
      下载: 导出CSV
    • [1]

      [2]

      [3]

      [4]

      [5]

      [6]

      [7]

      [8]

      [9]

      [10]

      [11]

      [12]

      [13]

      [14]

      [15]

      [16]

      [17]

      [18]

      [19]

      [20]

      [21]

      [22]

      [23]

      [24]

      [25]

      [26]

      [27]

      [28]

      [29]

      [30]

      [31]

      [32]

      [33]

    • [1] 李天胤, 邢宏喜, 张旦波.基于量子计算的高能核物理研究. 必威体育下载 , 2023, 72(20): 200303.doi:10.7498/aps.72.20230907
      [2] 方波浪, 王建国, 冯国斌.基于物理信息神经网络的光斑质心计算. 必威体育下载 , 2022, 71(20): 200601.doi:10.7498/aps.71.20220670
      [3] 上官丹骅, 闫威华, 魏军侠, 高志明, 陈艺冰, 姬志成.多物理耦合计算中动态输运问题高效蒙特卡罗模拟方法. 必威体育下载 , 2022, 71(9): 090501.doi:10.7498/aps.71.20211474
      [4] 范桁.量子计算与量子模拟. 必威体育下载 , 2018, 67(12): 120301.doi:10.7498/aps.67.20180710
      [5] 李日, 沈焕弟, 冯长海, 潘红, 冯传宁.一个新的用于元胞自动机模拟微观组织的溶质分配模型及其计算验证. 必威体育下载 , 2013, 62(18): 188106.doi:10.7498/aps.62.188106
      [6] 王江, 钟云波, 汪超, 王志强, 任忠鸣, 徐匡迪.电磁复合场制备匀质Zn-Bi偏晶合金的物理模拟. 必威体育下载 , 2011, 60(7): 076101.doi:10.7498/aps.60.076101
      [7] 汪荣凯, 沈光先, 杨向东.He-BH碰撞体系微分截面的理论计算. 必威体育下载 , 2009, 58(8): 5335-5341.doi:10.7498/aps.58.5335
      [8] 许 峰, 刘堂晏, 黄永仁.油水饱和球管孔隙模型弛豫的理论计算与计算机模拟. 必威体育下载 , 2008, 57(1): 550-555.doi:10.7498/aps.57.550
      [9] 汪荣凯, 令狐荣锋, 杨向东.He-NO碰撞体系微分截面的理论计算. 必威体育下载 , 2007, 56(4): 2067-2072.doi:10.7498/aps.56.2067
      [10] 郑小平, 张佩峰, 刘 军, 贺德衍, 马健泰.薄膜外延生长的计算机模拟. 必威体育下载 , 2004, 53(8): 2687-2693.doi:10.7498/aps.53.2687
      [11] 谭云亮, 周辉, 王泳嘉, 马志涛.模拟细观非均质材料破坏演化的物理元胞自动机理论. 必威体育下载 , 2001, 50(4): 704-710.doi:10.7498/aps.50.704
      [12] 陈宝玖, 秦伟平, 王海宇, 许 武, 黄世华.能量传递过程的计算机模拟. 必威体育下载 , 1999, 48(3): 545-549.doi:10.7498/aps.48.545
      [13] 吕晓阳, 刘慕仁, 孔令江.一维元胞自动机随机交通流模型的理论分析与计算机实验. 必威体育下载 , 1998, 47(11): 1761-1768.doi:10.7498/aps.47.1761
      [14] 胡畏, 王炎森, 方渡飞, 陆福全, 杨福家.电子氢原子碰撞电离能量微分截面和总截面的理论计算. 必威体育下载 , 1994, 43(7): 1083-1089.doi:10.7498/aps.43.1083
      [15] 李富斌.用细胞自动机方法模拟计算二维流体的平衡与非平衡相关函数. 必威体育下载 , 1992, 41(9): 1448-1451.doi:10.7498/aps.41.1448
      [16] 屈卫星, 徐至展.产生于铍箔组的渡越辐射量子微分谱的理论计算. 必威体育下载 , 1988, 37(6): 892-898.doi:10.7498/aps.37.892
      [17] 朱振和.脉冲主被动锁模固体激光器的理论计算(Ⅱ)——计算机模拟. 必威体育下载 , 1985, 34(5): 611-621.doi:10.7498/aps.34.611
      [18] 林中衡;殷光裕.激光核聚变模拟计算. 必威体育下载 , 1979, 28(4): 455-469.doi:10.7498/aps.28.455
      [19] 俞铁城.用图样匹配法在计算机上自动识别语音. 必威体育下载 , 1977, 26(5): 389-396.doi:10.7498/aps.26.389
      [20] 周培源.物理学是自然科学的主导. 必威体育下载 , 1960, 16(3): 117-122.doi:10.7498/aps.16.117
    计量
    • 文章访问数:6684
    • PDF下载量:405
    • 被引次数:0
    出版历程
    • 收稿日期:2021-04-27
    • 修回日期:2021-06-17
    • 上网日期:2021-07-10
    • 刊出日期:2021-07-20

      返回文章
      返回
        Baidu
        map