晓查发自凹非寺

  量子位报道公众号 QbitAI

  只要解出薛定谔方程,你就能预测分子的化学性质。但现实很骨感,迄今为止,科学家只能精确求解一个电子的氢原子,即使是只有两个电子的氦原子都无能为力。

  原因是有两个以上电子组成的薛定谔方程实在太复杂,根本无法精确求解。

  既然找不到精确解,科学家们希望能找到一种实用的近似解求法,只要结果足够近似,也能预测原子或分子的行为。

  近日,DeepMind 开源了一个“费米网络”(FermiNet),用来求解分子的电子行为,在 30 个电子的有机分子上也达到了很高的精度。文章结果发表在期刊Physical Review Research上。

  为什么叫费米网络

  在量子力学中,电子没有精确的位置,我们只能从波函数预测电子在空间中出现的概率,也就是电子云。

  比如氢原子的电子云就有以下几种形态。

  曲面内表示电子出现的高概率区域。蓝色区域波函数为正,紫色区域波函数为负。(注:波函数平方表示电子出现的概率)

  误差小于 即可预测分子的能量,但这对于化学家来说远远不够,要准确预测分子的形状和化学性质,需要 的精度,相当于以毫米精度测量足球场宽度。

  电子在分子中不仅受到原子核的吸引力、其他电子的斥力,还遵循着量子力学中的费米-狄拉克统计:如果两个电子交换状态,波函数要反号。

  这也意味着两个电子的状态不可能完全相同,否则波函数为0。这在物理中叫做“泡利不相容原理”。

  费米网络正是从这个基本物理原理出发,因此 DeepMind 将其命名为 FermiNet。

  交换后符号相反,这可能会让你想到线性代数中的行列式。行列式任意两行交换,输出结果就要乘以-1。

  物理学家也是这样想的,他们用所谓“Slater 行列式”来表示电子波函数,但实际情况比 Slater 行列式要复杂得多,为了更精确表示电子行为,往往需要几百万个 Slater 行列式的线性组合。

  工作原理

  与函数线性组合相比,神经网络在表示复杂函数时往往更具有优势。

  在构造 FermiNet 之初,研究人员就把泡利不相容原理作为第一性原理引入神经网络。

  在 FermiNet 中,每个电子都有单独的信息流。不仅如此,他们将网络每一层所有流平均化,然后传递给下一层的每一流。这样,这些流就具有正确的反对称性要求。

  而且在 FermiNet 行列式中的每个元素都包含所有电子,效率远远超出波函数只有单个电子的情况。

  与 Slater 行列式不同,FermiNet 是通用函数逼近器,如果神经网络层变得足够宽,则可以无限逼近真实波函数。

  这意味着,如果我们正确地训练这些网络,它们应该能够将几乎完全精确的解拟合到薛定谔方程。

  训练是通过最小化系统的能量来拟合 FermiNet。FermiNet 用蒙特卡洛方法随机选择电子构型,在每个电子排列中局部评估能量,累加每个排列的贡献,并将其最小化。

  实验结果

  研究人员将 FermiNet 用在具有 10 个电子以内的原子上,能量精度均在 左右。

  对于 30 个电子的环二丁烷,FermiNet 算出的能量达到了 97% 的精度,虽然精度不是很高,但 DeepMind 表示,作为一种“便宜但不够准确”的方法,这是巨大的成就。

  现在 FermiNet 已经在 GitHub 上开源,代码基于 TensorFlow 实现,如果你想用它算一算氢分子,不妨试试这串代码:

import sysfrom absl import logging
from ferminet.utils import system
from ferminet import train# Optional, for also printing training progress to STDOUT
logging.get_absl_handler () .python_handler.stream = sys.stdout
logging.set_verbosity ()# Define H2 molecule
molecule = [ ('H', (0, 0, -1)),  ('H', (0, 0, 1))](molecule=molecule,spins=(1, 1),batch_size=256,pretrain_config= (iterations=100),logging_config= (result_path='H2'

  经过 100 次迭代后,该程序会输出一个氢原子波函数文件。官方建议最好用 GPU 来运行,因为他们计算乙烯分子就用 8 个 GPU 花 2 天时间才算出。

  除了研究电子外,DeepMind 还将神经网络用于其他基础科学研究,比如蛋白质折叠、玻璃态动力学、晶格量子色动力学等。

  参考链接:

  https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.033429

  https://github.com/deepmind/ferminet

  https://deepmind.com/blog/article/FermiNet

python解zuobiaoxi方程_DeepMind开源薛定谔方程求解程序:从量子力学原理出发,TensorFlow实现_IT新闻...相关推荐

  1. python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!

    0 前言 山体滑坡是常见的自然灾害,从理论分析的角度讲,滑坡的稳定性分析方法源自于高中物理学,如图1所示.前者的滑动分析非常简单,在已知滑块的重量以及接触面摩擦系数的基础上通过计算下滑力和抗滑力的关系 ...

  2. python解zuobiaoxi方程_从马尔可夫链到蒙特卡洛-Metropolis方法(Python)

    这学期在上郭璐老师的<计算物理>,结合<An Introduction to Computational Physics>与网上一些资料,整理一下马尔科夫链与蒙特卡洛法相关笔记 ...

  3. DeepMind开源薛定谔方程求解程序:从量子力学原理出发,TensorFlow实现

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 只要解出薛定谔方程,你就能预测分子的化学性质.但现实很骨感,迄今为止,科学家只能精确求解一个电子的氢原子,即使是只有两个电子的氦原子都无能 ...

  4. python解zuobiaoxi方程_Python还能解决数学相关问题?大学生:以后就靠他了,事半功倍...

    问题背景 高等数学应用非常广,基本上涉及到函数的地方都要用到微积分,还有在几何方面也是如此,计算机的应用让我们能简单快速处理各种高等数学中的计算,比如极限.导数.积分.微分方程等的计算. 实验目的 使 ...

  5. python解zuobiaoxi方程_吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

    作者:Peter 红色石头的个人网站: 红色石头的个人博客-机器学习.深度学习之路​www.redstonewill.com 今天带来第二周课程的笔记:梯度下降与正规方程. 主要内容: 多维特征 多变 ...

  6. python解zuobiaoxi方程_欧式期权定价的python实现

    0. pre 在<给你的二叉树期权定价>中就挖了坑要写期权定价的代码,这会有时间来填坑啦. 本文将会用python实现欧式期权定价.具体的定价算法分别是基于BS公式的.蒙特卡洛的以及二叉树 ...

  7. python解多元多次方程组_Python求解多重或非线性方程,python,多元,多次,方程组,线性方程组...

    背景: 如何使用python求解多元多次方程组或者非线性方程组. 原创内容,转载注明出处!请勿用于商业用途! (上篇用python拟合2019nCov感染人数的文章被不少博主转载了,发的比较早,不少博 ...

  8. python解复杂方程_Python 解方程的三种方法

    # 首发于我的博客 The North. 新年第一篇,搞起. 这回写一个好久之前想做,一直搁着没做的东西-- Python 解方程(其实是放假回家,趁着家里电脑重装 LOL 的时间过来写一篇). 咱这 ...

  9. python解椭圆方程的例题_如何用python从3个点求椭圆方程

    听起来是个有趣的问题!如果你的3个点击点在同一象限内,那么由这些点定义的三角形的一个角必须是钝角.称之为B和另外两个顶点A和C.x-y定向椭圆的一般方程有4个参数.把A,B,C的x,y坐标代入椭圆方程 ...

最新文章

  1. 二维指针删除单向链表
  2. CSS3关于过渡效果的问题
  3. linux arm 常用服务,ARM、linux常用服务器+交叉编译工具链
  4. c语言的简单题目,C语言的一些简单题目,没有答案,哪位大神帮忙做一下!!!...
  5. 【BLOG】流光映雪
  6. c语言分治法求数组最大值,使用分治法求最大子数组的下标。
  7. 如何在 ASP.Net Core 中实现 健康检查
  8. asterisk的NAT配置
  9. iOS推送群发的问题,PushSharp作者的这篇讲得最详细了
  10. 基于MSFM算法与最速下降法的射线追踪技术
  11. Eclipse 在开发中使用到的快捷键很实用 .
  12. socket不能bind请求的地址_深入浅出讲解:php的socket通信
  13. C# 使用 Windows 消息队列机制
  14. matlab mac 更改语言,MAC让Matlab编辑器显示中文的方法
  15. 个人简历样本范文 下载空白简历 个人简历样本下载 个人简历表格
  16. 七周成为数据分析师 第三周:Excel篇
  17. 排序算法-冒泡算法【GIF图解】初学者小白必看
  18. c语言luhn算法生成校验位,银行卡号码校验算法(Luhn算法,又叫模10算法)
  19. 程序人生—谈安全测试的重要性
  20. 常见的树形结构(一)

热门文章

  1. 【论文悄悄递-GAIRAT】GEOMETRY-AWARE INSTANCE-REWEIGHTED ADVERSARIAL TRAINING
  2. C# 字符串 数组 IndexOf 方法
  3. [[EVD]] - 剑指 Offer 13. 机器人的运动范围
  4. 笔记本检测不到WiFi,而手机可以
  5. 【得物技术】软件工程与PlantUML实战
  6. ThreadLocal全面解析
  7. linux 浏览器 画面撕裂,Cinnamon 4.0桌面环境保证快速,没有画面撕裂
  8. 从app跳转到手机设置(代码)
  9. [ 网络安全基础篇 ]常见 Web 漏洞的描述及其修复建议(相对全面)
  10. [日推荐]『语音朗读』不做低头族