在過去的 30 年中,密度泛函理論 (DFT) 已成為預測化學、生物學和材料科學中各種系統性質的最廣泛使用的電子結構方法。儘管有著悠久的成功歷史,但最先進的 DFT 泛函具有侷限性。特別是對於涉及分數電子和自旋電荷密度,觀察到顯著的系統誤差。James Kirkpatrick等人. 開發了一個框架來訓練一個關於準確化學資料和分數電子約束的深度神經網路(參見 Perdew 的 Perspective)。由此產生的功能在主族原子和分子的全面基準測試中優於傳統功能。目前的工作為 DFT 中長期存在的關鍵問題提供瞭解決方案,並展示了將 DFT 與現代機器學習方法相結合的成功。
例如:現有的 DFT 方法,如 B3LYP,對分子如何共享電子密度(藍色)的預測很差,就像在這個 DNA 鹼基對中一樣。DeepMind21 神經網路更接近現實。
之所以會出現這樣的錯誤,是因為 DFT 方程是科學家對物理現實的近似。Alphabet Inc. 的 DeepMind 機器學習專案相關的研究人員表示,他們的神經網路消除了電子誤差,並且比傳統的 DFT 方法做出了更準確的預測。該項成果已經發表於國際頂級期刊Science(10.1126/science.abj6511)。
傳統泛函在處理分數佔據電子的時候有較大誤差,分數佔據電子的能量應該是整數電子連線上(紫色實線),但是傳統泛函能量在虛線上。這導致在複雜磁性體系和強相關計算的時候傳統泛函往往失效(需要+U或者雜化的方式修正)。DM21泛函則給出了更好的解決方案。
此外,該專案開發人員已經將DM21及其底層程式碼和軟體與公眾共享,以允許使用者將其整合到現有的程式中。
該軟體包中描述的DM21(DeepMind 21)系列交換相關泛函提供了PySCF介面
安裝方法:
透過pip install來安裝DM21功能和其所需依賴項的介面
注意:建議使用PySCF2.0(或更高版本)可以顯著提高Hartree-Fock特徵的計算效率,從而顯著提高計算速度。
1.要在不克隆或下載deepmind_reserach 儲存庫的情況下安裝,請執行以下命令:
python3 -m venv ~/venv/DM21
source ~/venv/DM21/bin/activate
pip install git+git://github.com/deepmind/deepmind-research.git#subdirectory=density_functional_approximation_dm21
2.克隆deepmind_research儲存庫並從本地儲存庫安裝:
git clone https://github.com/deepmind/deepmind-research.git
cd deepmind-research/density_functional_approximation_dm21
python3 -m venv ~/venv/DM21
source ~/venv/DM21/bin/activate
pip install .
安裝完成,可以透過直接執行測試檔案或使用py.test,再次從density_functional_approximation_dm21子目錄下執行測試:
pip install '.[testing]'
py.test
3.透過conda安裝:
conda create -n dm21
conda activate dm21
conda install absl-py "h5py<3.3.0" numpy pytest scipy tensorflow
conda install -c pyscf pyscf
conda install -c conda-forge tensorflow-hub
git clone https://github.com/deepmind/deepmind-research.git
cd deepmind-research/density_functional_approximation_dm21
pip install .
py.test
PySCF介面:
使用 PySCF 進行典型的 DFT 計算的設定和執行使用:
from pyscf import gto
from pyscf import dft
# Create the molecule of interest and select the basis set.
mol = gto.Mole
mol.atom = 'Ne 0.0 0.0 0.0'
mol.basis = 'cc-pVDZ'
mol.build
# Create a DFT solver and select the exchange-correlation functional.
mf = dft.RKS(mol)
mf.xc = 'b3lyp'
# Run the DFT calculation.
mf.kernel
DM21 泛函包提供了一個圍繞 PySCF 的數值積分類的輕量級包裝,它評估了實空間網格上的交換相關能。要將 DM21 函式與 PySCF 一起使用,需要將上述程式碼更改為:
import density_functional_approximation_dm21 as dm21
from pyscf import gto
from pyscf import dft
# Create the molecule of interest and select the basis set.
mol = gto.Mole
mol.atom = 'Ne 0.0 0.0 0.0'
mol.basis = 'cc-pVDZ'
mol.build
# Create a DFT solver and insert the DM21 functional into the solver.
mf = dft.RKS(mol)
mf._numint = dm21.NeuralNumInt(dm21.Functional.DM21)
# Run the DFT calculation.
mf.kernel
即不是用指定泛函,而是使用指定泛函mf.xc = <functionalname>,mf._numint= dm21.NeuralNumInt(<DM21 functional>)其中<DM21 functional>是 Functional列舉的相應成員。
相關報道:https://cen.acs.org/physical-chemistry/computational-chemistry/Machine-learning-solves-long-standing/99/web/2021/12
資料和材料的獲取:https://github.com/deepmind/deepmind-research/tree/master/density_functional_approximation_dm21