量子力学拥有大量的计算工具,但是构建有效的表示仍然是个难题。即使是最近似的方法,量子化学计算最多只能求解包含数万个电子的模型,而经典的(即非量子的)化学计算技术(例如分子动力学)可以处理数百万个原子。经典系统的状态可以用很简单的方式描述,只需要知道每个粒子的位置和动量。而表示量子系统的状态则更具挑战性,因为电子的位置是不确定的,必须给出其概率分布。波函数可用于编码电子的位置分布,并且波函数的平方给出了其概率值。要描述所有可能的位置,基本是不可能的。例如,假设有每个维度上具有100个点的网格,则硅原子的可能位置分布数将大于宇宙中的原子数。图1:不同的原子轨道波函数图像,表面代表出找到电子的高概率区域。在蓝色区域,波函数为正,而在紫色区域,波函数为负。这正是DeepMind认为深度神经网络可以提供帮助的地方。在过去的几年中,神经网络在表示复杂的高维概率分布方面取得了巨大的进步。现在,神经网络已经可以高效、可扩展地训练。DeepMind推测,鉴于神经网络已经证明了在解决人工智能问题中拟合高维函数方面的能力,也许它们也可以用来表示量子波函数。这个想法不是DeepMind第一个提出的,例如Giuseppe Carleo和Matthias Troyer等曾经在Science上发表论文“Solving the quantum many-body problem with artificial neural networks”,表明使用现代深度学习解决理想的量子问题是可行的。如今,DeepMind想使用深度学习来解决化学和凝聚态物理中更实际的问题,这意味着在计算中会包括电子。电子必须遵守泡利不相容原理,这意味着任意两个电子不能同时处于相同的状态。因为电子是费米子,费米子包括了质子、中子、夸克、中微子等,它们都遵守泡利不相容原理。交换两个电子会使得总波函数乘以-1,如果两个电子的波函数是全同的,则总波函数将为0。这意味着我们必须开发一种其输入是反对称的新型神经网络,DeepMind将其称为Fermionic神经网络或FermiNet。在大多数量子化学方法中,使用行列式引入反对称性。矩阵的行列式具有以下属性:如果交换两行,则输出将乘以-1,就像费米子的波函数一样。因此,对于一系列单电子函数,可以将其转换成一个矩阵。该矩阵的行列式就是适当的反对称波函数。这种方法的主要局限性在于所得到的函数(称为Slater行列式)不是很通用。实际系统的波函数通常要复杂得多。典型的改进方法是采用Slater行列式的大规模线性组合(有时甚至数百万个),并基于电子对添加一些简单的校正。即使那样,这仍不足以精确地计算能量。图2:Slater行列式展示,每个曲线都是图1中的某个轨道的波函数。当电子1和2交换位置时,Slater行列式的其中两行交换,波函数乘以-1,从而保证遵守泡利不相容原理。与基函数的线性组合相比,深度神经网络在表示复杂函数上通常效率更高。在FermiNet中,这是通过使行列式中的每个函数作为所有电子的函数来实现的,这远远超出仅使用单电子和双电子函数的方法。FermiNet对每个电子都有单独的信息流。如果这些流之间没有任何交互,网络的表示能力将不会超过常规的Slater行列式。为了解决这个问题,DeepMind将来自网络每一层所有流的信息平均化,然后将此信息传递给下一层的每一流。这样,这些流具有正确的对称性,从而可以创建反对称函数。这类似于图神经网络在每一层汇总信息的方式。与Slater行列式不同,FermiNets是通用函数逼近器(至少在神经网络层变得足够宽的极限内)。这意味着,如果可以正确地训练这些网络,它们将能够几乎精确地拟合薛定谔方程的解。图3:FermiNets图示。网络函数的单个流(蓝色、紫色或粉红色)非常类似于常规轨道。FermiNets引入了流之间的对称相互作用,使得波函数更具一般性和更具表达能力。就像常规的行列式一样,将两个电子位置交换仍将导致行列式交换两个行,并将总波函数乘以-1。我们通过最小化系统的能量来拟合FermiNet。为了精确地做到这一点,我们需要评估所有可能的电子构型下的波函数,因此不得不进行近似。我们随机选择电子构型,在每个电子排列中局部地估计能量,将每个排列的贡献相加,并将其(而不是真实能量)最小化。这称为蒙特卡洛方法,因为它有点像赌徒一遍又一遍地掷骰子。虽然是近似值,但如果我们需要使其更精确,则可以随时再次掷骰子。由于波函数平方代表可以观察到的任何位置的粒子排列,因此最方便的是从波函数本身生成样本(本质上是模拟观察粒子的行为)。虽然大多数神经网络都是从一些外部数据中训练出来的,但在DeepMind的这个案例中,用于训练神经网络的输入是由神经网络本身生成的。这意味着我们不需要任何训练数据,除了电子在的原子核周围的位置。上述基本概念被称为变分量子蒙特卡洛(variational quantum Monte Carlo,VMC),自20世纪60年代就出现了,通常被认为是一种廉价但不太精确的计算系统能量的方法。通过用FermiNet替换基于Slater行列式的简单波动函数,DeepMind极大地提高了该方法在多个系统上的精度。