概要
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.csvとmodnetval_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/>