摘要:分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用。

本文分享自华为云社区《AI建模-分子动力学仿真》,作者: 木子_007 。

一、背景

分子动力学的仿真模拟广泛应用于医药、化学、生物、材料等领域,研究模拟物质的微观结构,可以帮助我们理解物质的宏观性质,甚至对物质的宏观性质做出预测,物质的微观结构是由原子间的相互作用决定的,所以分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用。

传统的建模手段有两种:DFT(第一性原理)和经验力场。

DFT

DFT又称为第一性原理,具体建模和计算的过程非常复杂,需要很高深的数学和领域知识,了解一下即可

DFT构建的模型,可以看做是黑盒,根据输入,可以计算出下一帧体系内原子的状态

DFT的计算结果是比较准确的,但是因为计算代价太高,导致计算效率太低,只能够模拟几百个原子的物理体系。

经验力场

经验力场,是人们在研究某个物理体系时,根据其物理特性和一些实验结果,再加上一些处理经验,所构建的一个高阶函数,如研究惰性气体时的势能函数。

这种构建方式计算效率很高,但是其建模方式本身就决定了其精度不高。所以传统的分子动力学仿真存在一个困境,即无法效率和精度兼顾,而随着深度学习的普及使这种困境有了解决的思路。接下来就分子动力学仿真框架DeepMD的建模思想,做一个简单的介绍。

二、AI建模(water H2O 为例)

微观粒子上的相互作用

本质上是关于原子空间坐标的一个高维函数,如果能够计算出这个函数,那么在进行仿真的时候,就可以性能与精度兼顾了,传统数学工具对高维函数缺乏有效手段,而AI深度学习,本质上就是一个数学工具。为高维函数的逼近提供了有力工具,接下来会介绍一下建模的思想和过程。首先理清楚我们的目的和已具备的条件:

目的:构建一个深度学习网络,最终可以训练计算出一个高维函数(训练出一个模型)来表示这个物理体系,最终计算出来的结果,近似于第一性原理的计算结果。

模型:

训练及测试数据:

由第一性原理计算出来的体系内不同帧的原子状态,包括,原子坐标coord,空间尺度坐标box,体系的能量energy,体系中每个原子受到的力force

训练:

训练L2级别的loss

2.1 数据处理

通过上面的分析,我们要建立的这个模型,输入就是体系内原子的坐标,输出就是体系的势能和原子受到的力,但是,有一点需要特别注意,对于一个体系如水分子,如果一个水分子发生了旋转,平移或者它的两个氢原子发生交换,那么能量是不变的。

这种变化我们从直觉上理解是正常的,但是从模型的角度,这就要求,在坐标发生变化之后,输出还能保持与变化前一致,这对模型来说,往往是不可能的,所以在真正进入到深度学习DNN网络之前,需要对原始的原子三维坐标,做一些处理,使其能够满足空间中的平移,旋转和交换不变性。

2.1.1 平移不变性

要保证平移不变性,我们可以把空间中的原子左边转为原子间的相对距离,创建一个距离矩阵Ri。

根据原子中心框架,对距离矩阵做平滑处理,将超过截断半径外的原子的影响置为0。

2.1.2 交换和旋转不变性

要满足空间中的交换和旋转不变性,需要对距离矩阵做一些变化,这里介绍一下结论

创建矩阵G,将环境描述符D表示为如下的形式,可以满足空间的交换不变。

同时,因为对距离矩阵做旋转变化后,仍然是其本身,所以也满足了旋转不变。

这样,空间的坐标就转为了具备实际物理意义的环境描述D,就可以参与到接下来的DNN网络训练中。

2.2 整网训练

到这里,训练网络的构建已经完成,如下图所示

深度势能的构造如下:

环境描述

原子的受力根据其平滑势能计算,得到如下,实际上是对原子势能面计算梯度得到。

损失函数定义为

那么这个建模就完成了,之后就是具体的实现了。

三、小结

以上只是分享了一些DeepMD-kit框架的构建思想,分子动力学仿真领域还有很多框架和思想值得学习挖掘,比如为了增强模型对物理场景分布的覆盖,需要在训练的过程中随机采样,生成数据让模型做出预测,预测的不准,就把数据加入训练集继续训练,这个操作是包装了DeepMD-kit的另外一个框架DeepGen做的内容,以后有时间再总结一下其中的一些设计思想和算法优化的内容。

点击关注,第一时间了解华为云新鲜技术~

跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架的更多相关文章

  1. P2P/WSN信任建模与仿真平台

    1.ART Testbed 该平台是基于多代理的信任仿真平台,官网的介绍如下: The Agent Reputation and Trust (ART) Testbed initiative has ...

  2. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  3. Java多线程 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。

    package com.swift; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...

  4. eNSP仿真模拟软件之理解Hybrid接口的应用

    1. 实验原理 Hybrid接口既可以连接普通终端的接入链路又可以连接交换机间的干道链路,它允许多个VLAN的帧通过,并可以在出接口方向将某些VLAN帧的标签剥掉. Hybrid接口处理VLAN帧的过 ...

  5. 《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战

    ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译.写文章.写代码等.ChatGPT很强大,让很多人感兴趣,也让很多人担心. 使用ChatGPT有一些 ...

  6. 《花雕学AI》17:关注提示工程—本世纪最重要的技能可能就是与AI人工智能对话

    本文目录与主要结构 引言:介绍提示工程的概念和背景,说明为什么它是本世纪最重要的技能之一. 正文: 一.提示工程的基本原理和方法:介绍什么是提示.如何设计和优化提示.如何使用提示与语言模型进行交互. ...

  7. 为什么要学3D建模呢?你看中的肯定是这几点

    游戏行业的大环境 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的5年时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.虚拟社区.网络游戏.电子 ...

  8. 为什么需要学UML建模

    今天在看<设计模式>的时候,看到了许多的UML模型图,案例中作者用极少的代码却能讲清楚讲好设计模式的背景和思想,抽象成一张张的UML图就能很好的review和复盘,这对于在工作中习惯用代码 ...

  9. ROS-机器人建模与仿真概论

    前言:无论是因为高昂的设备费用还是为了减少实验次数,仿真都是十分必要的. ROS提供了很多优秀的仿真方式,下面来介绍一下: URDF:Unified Robot Description Format, ...

  10. 【小白学AI】八种应对样本不均衡的策略

    文章来自:微信公众号[机器学习炼丹术] 目录 1 什么是非均衡 2 8种解决办法 2.1 重采样(四种方法) 2.2 调整损失函数 2.3 异常值检测框架 2.4 二分类变成多分类 2.5 EasyE ...

随机推荐

  1. SSH 免秘钥登录

    yum -y install expect ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa for i in 192.168.1.11 1 ...

  2. nginx防盗链+flv.js拉流地址防盗

    需要此版本nginx的私信留邮箱,支持http-flv,支持rtmp,支持secure_link nginx.conf配置: c#后端生成链接 结果:

  3. Java代码审计之目录穿越(任意文件下载/读取)

    一.目录穿越漏洞 1.什么是目录穿越 所谓的目录穿越指利用操作系统中的文件系统对目录的表示.在文件系统路径中,".."表示上一级目录,当你使用"../"时,你正 ...

  4. idea的git插件,可以显示每一行代码的git版本记录,很好用

    再给大家推荐一款idea的git插件----GitToolBox,可以显示每一行代码的git版本记录,很好用 效果图如下 可以在光标所在行代码的后面显示git的版本记录信息(提交的用户名,提交的时间等 ...

  5. 四个id 生成器性能比较记录

    IdGenerator Seata 优化的雪花算法 Seata基于改良版雪花算法的分布式UUID生成器分析 关于新版雪花算法的答疑 csharp 移植代码 public class IdGenerat ...

  6. Pandas 分组聚合操作详解

    Pandas 是 Python 中用于数据分析的重要工具,它提供了丰富的数据操作方法.在数据分析过程中,经常需要对数据进行分组聚合操作.本文将介绍 Pandas 中的数据分组方法以及不同的聚合操作,并 ...

  7. C/C++ 运用VMI接口查询系统信息

    Windows Management Instrumentation(WMI)是一种用于管理和监视Windows操作系统的框架.它为开发人员.系统管理员和自动化工具提供了一种标准的接口,通过这个接口, ...

  8. Kubernetes 漫游:etcd

    概述 etcd 是一个基于 Raft 协议实现.开源的.分布式的键值存储系统.主要用于在分布式系统中提供强一致性和高可用性的数据存储. etcd 在 Kubernetes 中的作用如下: 集群状态数据 ...

  9. SpringBoot项目中常见组件的配置属性

    本文本的属性摘录自官方Properties配置清单,并附加了国内开发常用的框架配置属性.以国内WEB开发中,所涉及的常见组件为顺序组织配置清单 1. 配置属性清单 1.1 日志配置 序号 属性名 类型 ...

  10. springboot——入门案例

    真简单啊 springboot 学了入门案例,有感而发 首先是一个自带的配置文件: package com.example.springboot_01; import org.springframew ...