MODNet

MODNet(Material Optimal Descriptor Network)は、組成あるいは結晶構造から材料物性を予測する教師あり学習フレームワークである。matminerによる特徴量生成と、相互情報量に基づく特徴選択を組み合わせ、限られたデータ数でも性能を引き出すことを狙う。

MatDaCs Tool Review: MODNet

概要

MODNet(Material Optimal Descriptor Network)は、matminer記述子と相互情報量に基づく特徴選択、さらにjoint learningを組み合わせ、小規模またはノイズのある材料データセットに対しても実用的な予測を狙う。本レビューでは、MODNet 0.4.5をmacOS(Apple M4 Pro)のクリーンなconda環境(modnet39)で検証し、MatDaCsへの導入容易性を確認した。

MODNetとは

MODNetは、まず情報量の高いコンパクトな記述子を構築し、その後ニューラルネットワークを学習する教師あり学習フレームワークである。典型的な流れは以下である。

  • MODData: 組成または構造をmatminerで特徴量化し、特徴選択を行う。
  • MODNetModel: 単一または複数ターゲットのフィードフォワードネットを学習する。

この設計により、特徴量中心のパイプライン(Matminer)と、モデル中心のベンチマーク(MatBench)の橋渡しとなる。

主な機能

  • 限られたデータ向けの特徴選択: 相互情報量スコアにより多数の候補特徴量を圧縮する。
  • joint learning: 相関する複数物性を同時学習できる。
  • 事前学習モデル: 屈折率や振動熱力学などの予測器が提供される。
  • MatBench連携: リーダーボード上で比較でき、ベンチマーク用ユーティリティがある。
  • 特徴量化のプリセット: 組成のみ/構造ベースなどを揃え、Matminerと整合した運用が可能である。

インストール

READMEはPython 3.8+と環境固定を推奨している。本検証では以下の手順とした。

conda create -n modnet39 python=3.9
conda activate modnet39
pip install modnet

TensorFlow、matminer、pymatgen、scikit-learnなどが追加ビルドなしで導入できた。

例: ワークフローとローカルテスト

公式ワークフローを基に、matminerのdielectricconstantデータセットを使う小さなデモを作った(modnetdemo.py)。処理の流れは以下である。

  • 化学式と誘電率を含む200サンプルを読み込む。
  • CompositionOnlyMatminer2023Featurizerで特徴量化する。
  • 相互情報量で64特徴量を選択する。
  • 40エポック学習する。
  • 予測とパリティプロットを出力する。
from modnet.preprocessing import MODData
from modnet.models import MODNetModel
from modnet.featurizers.presets import CompositionOnlyMatminer2023Featurizer

moddata = MODData(materials=materials, targets=targets, target_names=['poly_total'],
                  featurizer=CompositionOnlyMatminer2023Featurizer())
moddata.featurize(n_jobs=1)
moddata.feature_selection(n=64, n_jobs=1, random_state=42)

model = MODNetModel(targets=[[['poly_total']]], weights={'poly_total': 1.0},
                    num_neurons=[[128], [64], [32], [16]], n_feat=64)
model.fit(train_data, val_data=test_data, epochs=40, batch_size=16, verbose=0)

conda run -n modnet39 python modnet_demo.pyの実行結果(要点)は以下である。

  • サンプル数: 200
  • 選択特徴量: 64
  • Validation MAE: 4.12
  • 出力: modnetpredictions.csvmodnetval_scatter.png

Matminer/DScribeとの比較

  • MatminerとMODNet: Matminerがデータ取得と特徴量化を担い、MODNetがそこからコンパクトな記述子を構築してニューラルモデルを学習する。
  • DScribeとMODNet: DScribeは局所環境記述子(SOAP、MBTR)に焦点がある一方、MODNetはグローバルな組成/構造記述子を扱う。局所構造が重要ならDScribe、コンパクト記述子とjoint learningを重視するならMODNetが適する。
  • 補完関係: Matminer下流にMODNetを置き、DScribe特徴量と並べてベンチマークする構成が可能である。

所感

  • 一部の例ではfast=Trueによりfigshareから特徴量をダウンロードするが、本環境ではMD5不一致で失敗した(WAF等の影響が疑われる)。ローカル特徴量化の方が確実である。
  • matminer側でimpute_nan=Falseの警告が出る場合がある。欠損があるデータでは補完を検討すべきである。
  • 小規模データでも、特徴選択と学習まで含めて短時間で完了する。

まとめ

MODNetは、特徴量工学とニューラルモデリングの中間に位置する実用的フレームワークである。Matminerと整合した流れを保ちつつ、特徴選択とマルチターゲット学習を追加できるため、小規模材料データセットに適する。MatDaCsの文脈では、MatminerのベースラインやDScribe記述子と組み合わせ、説明可能なコンパクト記述子とニューラルモデルを併用した比較が行いやすい。

参考

  • MODNet GitHub: <https://github.com/ppdebreuck/modnet>
  • MODNet documentation: <https://modnet.readthedocs.io/en/latest/>
  • De Breuck et al., npj Comput. Mater. 7, 83 (2021)
  • De Breuck et al., J. Phys.: Condens. Matter 33, 404002 (2021)
  • MatBench leaderboard: <https://matbench.materialsproject.org/>