四川省建设厅电子政务网站,网络工程规划与设计方案,wap网站建设流程,亚马逊跨境电商好做吗本文简记我在学习自动微分相关技术时遇到的知识点。
反向传播和自动微分
以 NN 为代表的深度学习技术展现出了强大的参数拟合能力#xff0c;人们通过堆叠固定的 layer 就能轻松设计出满足要求的参数拟合器。
例如#xff0c;大部分图神经网络均基于消息传递的架构。在推理…本文简记我在学习自动微分相关技术时遇到的知识点。
反向传播和自动微分
以 NN 为代表的深度学习技术展现出了强大的参数拟合能力人们通过堆叠固定的 layer 就能轻松设计出满足要求的参数拟合器。
例如大部分图神经网络均基于消息传递的架构。在推理阶段用户只需给出分子坐标及原子类型就能得到整个分子的性质。因此其整体架构与下图类似 在模型设计阶段我们用 pytorch 即可满足大部分需求以 schnetpack 为例
我们 from torch import nn 导入了设计 nn 常用的模块。在初始化模型时我们直接继承了 pytorch 内置的模块 class AtomisticModel(nn.Module)有一些函数是重新编写的例如激活函数 shiftedsoftplus
我们可以看到模型的整体框架依然是基于 pytorch 的但针对具体的应用场景我们做了很多优化。
一方面使用 pytorch 可以帮助我们快速建立类似上图的模型网络pytorch 会自动执行梯度的反向传播。从 loss function 开始逐层递进直至输入层。pytorch 还会帮助我们完成整个网络的参数迭代学习率的迭代等等。。。
另一方面针对一些特殊的需求用户需要自行 DIY完成需要的功能。
这其中隐含着用户在程序设计时灵活性与便利性之间的折中。
注意到刚才提到了梯度的反向传播事实上这种常用算法只是自动微分算法中的一种。引用 Gemini 的一个例子
反向传播好像是计算小山丘斜率仅限于 NN的一种算法自动微分则可以计算除了小山丘以外的所有物品的斜率涵盖所有链式求导法则
写到这里自动微分技术的应用场景就很好理解了
有一些应用场景不适合无脑堆叠 NN但仍然需要优化参数此时 from torch import nn 就不管用了套用固定模版已经很难带来便利性由于整个网络的框架已经不再是上图所示规整的一层层的 NN 结构反向传播算法就不再适用于参数优化了需要更加灵活的自动微分方法
pytorch 与 jax
我们可以将参数优化的相关框架归结为两个应用场景
用户调用标准函数搭建层级式标准 NN用户自行设计函数搭建非标准拟合器仍需优化参数
针对第一个场景我们可以使用 pytorch因为 pytorch 对常用网络架构封装很好。
针对第二个场景使用 pytorch 会更加繁琐此时可以切换为 jax 因为 jax 对用户自定义函数形式更加友好其内置自动微分算法使用起来更加方便。
除了应用场景的区别外二者还有以下几个区别
pytorch 支持静态/动态计算图而 jax 仅支持静态图pytorch debug 起来更加方便jax 针对 GPU, TPU 等硬件优化更多结合其 JIT(Just In Time) 特性jax 模型一般比 pytorch 模型快得多二者间的相互转换难度不大参见一文打通PyTorch与JAX
AI for Science 领域内三个应用案例
DMFF
余旷老师在他的系列博文里系统阐释了为什么 DMFF 要基于 jax 开发参见漫谈分子力场、自动微分与DMFF项目4. DMFF和JAX概述
总结一下使用 jax 的原因有以下几点
传统分子力场的形式不适合用 NN 建模 为方便大家理解我举一个中学物理的例子。苹果从树上落下遵从自由落体运动位移随时间变化的规律h1/2 * g * t^2, 其中 g 作为引力常数就是需要通过多次落体实验测定的量。我们当然可以用多层 NN 拟合这一参数但假如我们已经知道了这样一个表达式此时直接使用该表达式即可。传统分子力场就是高度参数化的方程发展至今已经有了一套函数形式无需从头用 NN 的形式拟合 反向传播算法只适用与 NN不适应上述高度参数化的方程但优化力场参数仍需要自动微分技术 计算原子受力整个盒子的维里均需要微分技术使用 jax 编程会更加方便 jax 性能更高速度快jax 可拓展性好 余旷老师在 漫谈分子力场、自动微分与DMFF项目5. DMFF中势函数的生成和拓展 举了一个例子使用 DMFF 能有效复用前人开发势函数模块无需从头造轮子
E3x
在 Oliver T. Unke 近期的一篇论文中作者介绍了名为 E3x 的神经网络框架对标 pytorch_geometric。
其目的在于方便用户设计具有 E3 等变性的图神经网络。
使用 E3x 能将所有 AI for Science 领域的 GNN 从 pytorch 迁移至 jax 框架再结合 jax-MD获得大幅性能提升。
作者在另一篇论文中透露了这种改造的效果 在稳定性和受力误差不变的情况下NequIP 提速 28 倍SchNet 提速 15 倍。那么E3x 做了哪些关键改动呢 e3x 对不可约张量进行了压缩降低了其稀疏性 e3x 设计了开箱即用的激活函数全连接层、张量层等这些网络结构都是 E3 等变的
DLDFPT
神经网络与密度泛函围绕理论的结合论文地址
这是李贺大神今年上半年的一篇 PRL说实话我也没看懂。我只是理解到
传统的 DFPT 理论在计算某一个矩阵的时候遇到了计算瓶颈使用自动微分技术能绕开这一瓶颈