概要
DimeNetは、分子グラフ向けニューラルネットワークモデルであるDimeNetおよびDimeNet++の参照実装を含む研究用リポジトリです。「分子グラフのための方向性メッセージパッシング」および「非平衡分子のための高速かつ不確実性を考慮した方向性メッセージパッシング」の論文に付随しています。ワークフロー上の用途はモデルの学習と分子特性予測であり、分子データベースへのアクセスやホスト型予測サービスではありません。READMEでは、オリジナルモデルよりDimeNet++を推奨しています。
モデルは方向性メッセージパッシングの計算に、分子グラフ情報と距離および角度を使用します。文書に記載されたQM9の予測対象には、alpha、R2、U0、U、H、G、Cv、Mu、HOMO、LUMO、ZPVEが含まれます。出典の抜粋では、完全な入力スキーマや予測ファイル形式は明示されていません。学習はtrain.ipynbで行い、predict.ipynbは学習済みモデルを使ってテストセットの予測を生成します。pretrainedには2組の事前学習済みモデルが用意されており、train_seml.pyはSacredとSEMLを用いたクラスタ学習をサポートします。
このリポジトリはTensorFlow 2を使用し、オリジナルのTensorFlow 1実装との学習および初期化の違いを説明しています。結果を解釈する際には、記載されている問題に留意する必要があります。具体的には、qm9_eV.npzにおける分子フィルタリングの1件ずれ、距離および基底層の相違、埋め込み層の相違、古いTensorFlow AddOnsバージョンに影響するチェックポイント保存の問題です。READMEでは、MD17ベンチマーク比較の不一致も指摘しています。エネルギーと力の予測について、著者は代わりにGemNetを推奨しています。そのため、この項目は文書化された研究実装として扱うべきであり、独立に検証された科学的ワークフローとはみなせません。
主な機能
- 分子グラフ上の方向性メッセージパッシングを行うDimeNetとDimeNet++の両方の参照実装を含みます。
- モデル学習用の`train.ipynb`と、学習済みモデルによるテストセット予測用の`predict.ipynb`を提供します。
- 実験用に、`pretrained`フォルダー内に2組の事前学習済みモデルを収録しています。
- SacredとSEMLを使ったクラスタ学習用の`train_seml.py`を含みます。
- TensorFlow 2実装における、予測対象ごとの出力層初期化について説明しています。
- 結果の解釈や再現に関係する、データセット、幾何、基底層、埋め込み層、チェックポイントの既知の問題を列挙しています。
用途
- 評価案:学習および予測ノートブックを使ってQM9の分子特性予測ワークフローを評価し、記載された分子フィルタリングの誤りを考慮する。
- 評価案:管理された実験条件でDimeNetとDimeNet++を比較する。ただし、公開済みの結果が新しいデータセットにも当てはまるとは仮定しない。
- 評価案:再学習にリソースを投入する前に、提供された事前学習済みモデルを調べる。
- 評価案:SacredとSEMLを使ったクラスタベースの分子モデル実験の出発点として、`train_seml.py`を評価する。
使い方
- 公式READMEを読み、DimeNetとDimeNet++のどちらを使うか選びます。READMEはDimeNet++を推奨し、エネルギーと力を扱う場合にはGemNetを案内しています。
- setup.pyに記載された依存関係を確認します。TensorFlow、TensorFlow AddOns、NumPy、SciPy、SymPyなどが含まれます。これらは宣言された要件であり、利用環境との互換性を示すものではありません。
- リポジトリ内の
train.ipynb、predict.ipynb、pretrainedフォルダーを確認します。学習や予測を試す前に、想定されるデータ表現と予測対象を確認してください。 - READMEに記載された既知の問題と、QM9フィルタリングに関する議論を確認します。評価を行う場合は、データセットの出典と処理履歴、初期化の選択、修正内容を上流の結果とは分けて記録してください。
- クラスタ学習が必要な場合は、
train_seml.pyとリンク先のSEMLプロジェクトを調べます。利用または再配布の前に、コードライセンスを確認してください。