DeePMD-kitチュートリアルのガイドライン和訳

クロスアビリティ Winmostarサポートチームです。
WinmostarはLAMMPSやQuantum ESPRESSOを簡単かつ高度に利用するための統合GUI環境となっています。学生は無料で利用でき、学生以外も無料トライアルを入手することができますので、是非 [WinmostarのWebサイト](https://winmostar.com/jp/) をご覧ください。

本ドキュメントは[DeePMD-kitチュートリアルのPractical Guidelines for DP](https://tutorials.deepmodeling.com/en/latest/CaseStudies/Practical-Guidelines-for-DP/Practical-Guidelines-for-DP.html) (LGPL3.0ライセンス)を非公式に和訳したものです。本ドキュメントもLGPL3.0を継承します。DeePMD-kitに限らず各種の機械学習力場、ニューラルネットワークポテンシャルのガイドラインとしても有用な知見を含んでいますので、参考になりましたら幸いです。

なお、DeepMD-kitを無料で体験する環境の構築方法は[こちら](https://qiita.com/xa_member/items/1f5078a73094b6f89948)の記事で紹介しています。

# 1.1.1.1. Deep Potential
Deep Potential（以下、DP）とは、DFT計算から得られた原子間ポテンシャルエネルギー、あるいはポテンシャルエネルギー曲面（以下、PES）をニューラルネットワークで学習させたものです。

DPは他の機械学習力場と同様に、系の全エネルギーEを各原子iのエネルギーEiの和として表現します。Eiは原子iの周辺の原子配置から算出することにします。

DPの機械学習モデル（以下、DPモデル）は2つのニューラルネットワークから構成されます。1つ目は埋め込みネット（embedded net）で、出力が原子間ポテンシャルが満たすべき対称性に対し不変となるように設計され、原子周辺の局所配置空間(local configurational space, 後述)から記述子を出力します。2つ目はフィッティングネット（fitting net）で、埋め込みネットが出力した記述子からEiを出力します。

# 1.1.1.1.1. 配置空間

局所配置空間については、空間の配置と化学種の配置の情報にそれぞれ分けて考えることができます。

空間の配置は、例えば同じ炭素原子でもグラファイト（sp2）, ダイアモンド（sp3）, アモルファスといった状態を区別します。また、それらの平衡構造から少しずれた配置についても考慮できます。

化学種の配置は、例えばBCC結晶において、各サイトがどの元素で占められるか、ということを区別します。高エントロピー合金の場合は特に広大な化学種の配置を考慮する必要があります。

ただし、実際には空間と化学種の情報は同時にカップリングされて処理されており、明示的に分けて処理されていません。

# 1.1.1.1.2 サンプリング方法

新しいDPモデル（力場）を構築する上で、配置空間をいかに網羅的にサンプリングするか、ということが重要になります。サンプリング方法はおおよそ4通りあると考えられます。

1. 手動での準備: 様々な新しいサンプリング方法が提案されていますが、この方法は依然として最も重要なサンプリング方法の一つです。特に欠陥を含む系では重要です。例えば、積層構造、空孔、積層欠陥、転移、表面、粒界、異種材料界面、吸着構造、といった構造は常に明示的に用意しておく必要があります。

2. MD+MC（分子動力学+モンテカルロ）: この方法は実際にある程度効果的かつ最も単純な方法となります。例えば、平衡構造周辺での原子振動（MD）、液体中での局所構造変化（MC）、固溶体中での原子交換（MD+MC）をサンプリングできます。この方法でのサンプリング範囲は、温度とシミュレーション時間に依存します。

3. 構造探索アルゴリズム: CALYPSO, USPEXなどの構造探索アルゴリズムは指向性の強い結合を持つ材料（多くのセラミックス、C, B, Pなどを含む非金属化合物など）や未知の高圧構造について、妥当な構造を探索するのに有用です。これらのケースでは1.と2.の方法が有効ではありません。配置空間を網羅的にサンプリングすることを考えると、構造探索の過程で、安定構造・準安定構造だけでなく、それ以外の構造（ただし非常に高いエネルギーのものは除く）もサンプルする必要があります。

4. 拡張サンプリング: 拡張サンプリングは、レアイベント（PESの鞍点付近）を効率よくサンプルするための方法です。MD計算において状態はボルツマン分布に従い発生するので、エネルギーの高い状態（相変化、反応の遷移状態など）をサンプルするのは困難です。拡張サンプリングにおいてはPESを平坦にするためにバイアスポテンシャルが使われ、これにより高エネルギー状態もサンプリングすることができます。

# 1.1.1.1.3. 適用限界とリスク

機械学習力場の欠点の一つが、外挿性の低さです。データセットに含まれる領域においては精度が高いですが、それ以外の領域では精度が低くなります。

例えば2原子の接近を考えた時に、距離が極めて近い配置は通常データセットに含まれず、非物理的な挙動を示します。このような状況を回避するために、例えば反発ポテンシャルを人為的に与えたり、データセットの中に明示的に距離が近い配置を加えます。これはあくまで一例で、サンプリングが十分でない領域では非物理的な挙動が観察されます。

ただし、実用上において、配置空間を全て網羅するということを推奨するわけではありません。下記の『適用限界について』を参考に、着目する現象を内包するようにサンプリングするということを推奨します。 原理的に配置空間は広大です。そのため、汎用かつロバストなDPモデルを学習させることは、不可能ではないとしても決して簡単ではありません。

# 1.1.1.2 DP-GEN

# 1.1.1.3 DP Library

DFTベースの計算は高コストなため、[DP library](https://dplibrary.deepmd.net/)においてDFTの計算データを共有し、継続的にDPモデルを改良していくことを推奨します。DPモデルは、データセットが拡充された際に、再学習し改良することができます。DPモデルが欲しい時に、次の手順を実行してください。

1. DP libraryで学習済みモデルがあるか探し、あれば入手する。
2. 1に該当しない時は、DP libraryに研究目的に対し有益なDFTデータがあるか確認し、あればデータを追加した上で自分自身でモデルを学習させる。
3. 1と2に該当しない時は、1からデータを生成しモデルを学習させる。
4. 可能であれば、生成したDFTデータと学習済みモデルをDP libraryにアップロードする。

# 1.1.2 着目する系の物理的な起源を知る

MDで配置空間をサンプリングしてDPモデルを作成する際には、たくさんのパラメータが必要となります。

先人のスクリプトをコピーしてパラメータを修正せずにDP-GENを実行することも可能ではありますが、これは基本的によくありません。着目する系の物理的起源を知ることで、これらのパラメータの設定をしやすくなります。

配置空間のPESの局所的な形状は、化学結合の強さに依存します。柔らかい（弱い）化学結合の場合はPESが緩やかに、硬い（強い）化学結合の場合はPESがシャープになります。化学結合の種類を柔らかい順に並べると、おおよそファンデルワールス結合、水素結合、金属結合、イオン結合、共有結合、となります。

1. PESがシャープで深い谷の領域：単分子の振動、固体中の原子振動
2. PESがゆるなかで浅い窪みの領域：液体中の分子・原子振動、固溶体
3. PESのバリア領域：相変化、反応の遷移状態

分子液体を例に考えます。分子内結合は平衡位置付近で振動し、配置空間内に局在したシャープなPESとなります。振動の特徴的時間は非常に短時間（~fs）となります。その場合、短時間のMD計算で十分に必要な配置空間をサンプリングすることがきます。反対に、分子間結合は配置空間に広く広がる緩やかなPESを構成します。分子間結合により分子が動く特徴時間は長くなります（~ps）。その場合、適切なサンプリングには長時間のMD計算か、様々な異なる初期座標から始まるたくさんの短時間のMD計算が必要となります。

化学種の配置についても同様です。Zr_{1-c}Hf_xCを例に取ります。Zr-Hfの交換についてはエネルギーが大きく変化せず、緩やかなPESとなり、サンプリングに多くのMCステップを必要とします。一方、Zr-CまたはHf-Cのアンチサイト欠陥のエネルギー変化はとても大きく、これらのアンチサイト欠陥のサンプリングは必要ありません。

例としてAl（アルミ）を取り上げ、物理量と　DP-GENのパラメータの関係を説明します。

1. まず初期構造を生成する必要があります。例えばDP-GENではinit_bulkメソッドを使います。このメソッドでは、線形圧縮・伸長、格子の歪み、原子の変位を設定します。通常は、典型的な固体に対しては、室温から融点に変化した際の体積変化が5%程度で、各方向では2 %程度の変化となります。そのため、高圧状態を除き、線形圧縮・伸長の範囲は±2%にしておけば、固体については十分カバーできます。ランダム講師歪みは同様に各変位モードに対して±3%程度にします。原子の変位については、最近接原子との距離から決めます（例えばボンド長の1 %など）。通常は0.01 angstrom程度とします。
2. DP-GENを自動で反復処理させる場合、普通は温度を上昇させながら、何通りかの圧力でMDを実行して配置空間をサンプルします。温度はAlの融点Tm（〜1000 K）、圧力はAlの体積弾性率B（〜80 GPa）を基準とします。例えば、温度は[0.0Tm, 0.5Tm], [0.5Tm, 1.0Tm], [1.0Tm, 1.5Tm], and [1.5Tm, 2.0Tm]の4つのグループに分けます。各グループの中では、いくつかの温度を選択します。例えば[0.0Tm, 0.5Tm]のグループについては[0.0Tm, 0.1Tm, 0.2Tm, 0.3Tm, 0.4Tm]とします（0.0Tmの計算は実際にはほとんど意味がありません）。圧力は計算の最中に変動し、変動の度合いは小さな系ではBの1 %程度となります。そのため圧力は[0.00B, 0.03B, 0.06B, 0.09B]と設定すれば通常は十分です。また、0.01B程度圧力を増やすことで、液体系においてMD計算中にシミュレーションセルが急拡大する（訳注：固相や液相の計算にも関わらず気相並にセルが大きくなること）危険性を回避することができます。
3. 候補の選択範囲（trust_level_low, trust_level_high）（訳注：model_devi_f_trust_loの間違い？）の設定は化学結合の強さに依存し、例えば分子系では金属系より大きめに設定します。固体では、下限と上限はおおよそ力のRMSE(reduced mean square error. $ \sqrt{\sum_i f^2_i}$ )について0.2、0.5とします。そのため、力に比例するような融点や体積弾性率は範囲の設定についての良い指標となります。例えば、trust_level_lowについては、Alでは0.05 eV/A, Wでは0.15 eV/Aです。WとAlの融点はそれぞれ3600 K、1000 K程度でありおよそ3倍です。（Wの体積弾性率はAlのおよそ3倍です） なお、この指標は、融点が低い、強い分子間相互作用による分子液体系では適切ではありません。

# 1.1.3 適用限界について

「汎用かつロバストなDPモデルを学習させることは、不可能ではないとしても決して簡単ではない」ということを常に意識する必要があります。通常は、我々は我々の要求に合うDPモデルが一つあれば良いです。異なる目的に対しては、配位空間の異なる探索範囲が必要となります。以下に、この考え方に対する具体的な例を示します。

(1) Al（アルミ）の室温での弾性に興味があるとする。一方で、Alの弾性の温度依存性にも興味があるとする。

前者の場合は平衡状態からわずかにずれた範囲の配置が必要となります。そのため、Alの固体の平衡状態付近のデータのみが必要です。DP-GENの反復としては000から006で十分と思われます。そして、弾性の温度依存性を知りたい場合は、Al固体のより高いエネルギー状態（熱膨張した状態など）をサンプリングするために007から024の反復も必要です。

(2) Alの融点に興味があるとする。一方で、Alの凝固過程にも興味があるとする。

Alの液相からの核生成の詳細を知りたい場合は、Alの固相と液相の両方かつ、それぞれの高いエネルギー状態をサンプルする必要があります。金属のように結合の指向性が低い場合はそれで十分です。一方、Si, Gaのように結合の指向性が高い場合はそれでは不十分です。その場合は、拡張サンプリング法とDP-GENをカップリングさせ、配置空間上で液相と固相を結ぶ経路に従ったレアイベントをサンプルする必要があります。

(3) Alの欠陥（空孔、積層欠陥、転移、表面、粒界など）に興味があるとする。

この場合は、欠陥の配置に関してDP-GENをさらに実行する必要があります。幸い、一部の欠陥の配置については、ひずみ込みの結晶構造やアモルファス構造に含まれているので、全ての欠陥の配置をサンプルする必要はありません。

これらの例から学べるのは、適用限界を知ることにより労力の大半を節約することができる、ということです。例えば、Alの弾性に興味がある場合は、DPモデルの構築時に自動でサンプルされてしまうものの、液相や欠陥のサンプリングが本来不要です。反対に、化合物の場合は、特に複雑な構造を持つ場合において、液相や欠陥のサンプリンが必要な時にしか実行されません。そのため、新しい課題に取り掛かる際には、適用限界を考え、どのぐらいの配置空間をサンプルすべきか考えましょう。

新しいプロジェクトに取り組む際には、やみくもに取り掛かるのではなく、達成しやすいマイルストーンをいくつか設定しておくとプロジェクトの進行がスムーズにいくでしょう。例えば、Alの欠陥を調べることが最終目的だったとして、最終目的にたどり着くまでの課題を上記の1から3までのように分解することができます。各段階のマイルストーンを達成したら、次の段階にスムーズに移行することができるようになります。