材料物性予測モデル: MODNetについて学ぶ(理論編)


# MODNetとは？
MODNet(Material Optimal Descriptor Network)は、材料の様々な物性を予測するモデルです。[別の記事](https://qiita.com/k_t_09099/items/030774a69abbfae224ef)で紹介しましたが、Matbenchは材料に関する様々なデータセットやベンチマークを提供するプラットフォームです。MODNetはこのMatbenchのリーダーボードの様々なタスクで高いスコアを記録しています。以下は[Matbench](https://matbench.materialsproject.org/)のサイトに掲載されている表です。計5つのタスクでトップのスコアを出していることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006209/d1741221-4c64-425c-a95b-e8cff5ee546d.png)

MODNetは**小規模データセットに強く、複数の物性を同時に予測でき、さらに特徴量の解釈性が高いのが特徴です**。
今回の記事では[MODNetの論文](https://www.nature.com/articles/s41524-021-00552-2)を読み、その中身について紹介をしていきます。

# MODNetの理論
## 特徴量エンジニアリング
材料の特性を予測するためには、まず材料を機械学習モデルが理解できる形で表現する必要があります。 MODNetでは、材料の構造や組成を数値化し特徴量として表現します。 これらの特徴量は材料の特性と密接に関連している物理的、化学的、幾何学的な観点から設計されます。例えば以下のような特徴量が用いられます。
- 元素の特徴量: 原子量、電気陰性度、イオン化エネルギー、電子親和力など    
- 構造の特徴量: 原子間距離、配位数、結合角、結晶構造、空間群など    
- 組成の特徴量: 元素の構成比、化学量論など  

一般的なグラフベースのモデル(ニューラルネットワークなど)は材料の構造をグラフとして表現し、グラフニューラルネットワークを用いて学習します。この方法では、物理的・化学的な特徴量を明示的に設計する必要がなく、モデルが自動的に特徴量を学習することができます。しかし一方で、このタイプのモデルは**大量のデータを必要とします**。
これに対し、MODNetでは**物理的・化学的な知識に基づいて特徴量を設計**します。この方法ではグラフベースのモデルに比べて**必要なデータ量が少なくて済みます**。多くの場合、材料科学の分野では利用可能なデータが限られているため、これは重要な利点となります。

## 特徴量選択
材料に関する物理的・化学的な特徴量には膨大な種類があります。 しかしすべての特徴量が予測に役立つわけではなく、むしろ無関係な特徴量が多すぎるとモデルの精度が低下し、学習に時間がかかる原因となります。MODNetでは、**正規化相互情報量 (NMI)** と **関連性・冗長性 (RR) スコア** という2つの指標を用いて、予測に重要な特徴量を選択します。

### 正規化相互情報量 (NMI)
NMIは、2つの変数間の関係性の強さを表す指標です。 NMIが高いほど2つの変数は密接に関連していることを示します。 MODNetでは各特徴量と予測したい特性の間のNMIを計算し、NMIが高い特徴量を優先的に選択します。NMIは以下の式で表されます。

```math
NMI(X, Y) = \frac{MI(X, Y)}{(H(X) + H(Y))/2}
```
ここで、
- MI(X, Y) は変数 X と Y の相互情報量   
- H(X) は変数 X の情報エントロピー   
- H(Y) は変数 Y の情報エントロピー

です。

### 関連性・冗長性 (RR) スコア
RRスコアは、特徴量がターゲット変数とどれだけ強く関連しているか、そして既に選択された特徴量とどれだけ冗長であるかを評価する指標です。 つまり、**RRスコアが高い特徴量は、予測に役立つ情報が多く、かつ他の特徴量と情報の重複が少ないことを意味します**。 MODNetでは、RRスコアを用いることで、冗長な特徴量を排除し予測に必要な情報だけを効率的に抽出しているとのことです。RRスコアは以下の式で表されます。


```math
RR(f) = \frac{NMI(f, y)}{\left( \max_{f_s \in F_s} (NMI(f, f_s)) \right)^p + c}
```
ここで、
- NMI(f, y) は特徴量 f とターゲット変数 y の正規化相互情報量   
- max_{fs∈Fs}(NMI(f, fs)) は特徴量 f と既に選択された特徴量集合 Fs に含まれる特徴量 fs の中で、最大の正規化相互情報量   
- p と c は、関連性と冗長性のバランスを調整するためのハイパーパラメータ   

を表します。

pとcに関しては任意のパラメータとなりますが、経験的に$p = max[0.1, 4.5-n^{0.4}]$、$c = 10^{-6}n^3$ (nは特徴量の数)に設定するのが良いと書かれています。RRスコアが高い特徴量をFsに入れていき、特徴量の数が閾値に達したら終了する、というアルゴリズムになっているようです。いわゆるForward Step-wiseとよばれｒ特徴量選択手法ですね。

## 共同学習(joint learning)
共同学習は、複数のタスクを同時に学習する機械学習の手法です。  異なるタスク間で共通の特徴量やパターンを共有することで、モデルの汎化能力を高めより正確な予測を可能にするものです。これを利用してMODNetでは複数の物性を同時に学習させることで、予測精度を向上させています。
以下の図はMODNetの模式図です。RRスコアを使って選択された特徴量は、ニューラルネットワークに渡されます。共同学習を実現するためネットワークはツリー状になっています。これは、**ルートノードが材料の一般的な特徴を表し、そこから枝分かれしていくにつれて、より具体的な特性を表すようになる構造です**。例えば、ルートノードは材料の元素組成や結晶構造などの一般的な特徴を表し、そこから枝分かれして、硬度、融点、電気伝導度などの具体的な特性を表すノードが生成されます。
この構造により、MODNetは**一般的な特徴から具体的な特性まで様々なレベルの特徴量を学習することができます**。 また、異なる特性間で共通の特徴量を共有することで、モデルの汎化能力を高め、より正確な予測を可能にできるとのことです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006209/45e33e7c-4d1e-45a5-9037-902da0aa33c8.png)

# 性能評価
MODNetの性能を評価するため、論文では2つのケースで評価を実施しています。
## ケース1：単一特性の学習
形成エネルギー、バンドギャップ、屈折率の3つの特性について、MODNetと他のモデルの予測精度を比較しています。 比較対象のモデルは、同じく材料特性予測モデルであるMEGNetと、圧縮センシング法であるSISSOです。    

データセットは、Materials Project (MP) から取得したもので、形成エネルギーとバンドギャップのデータセットにはそれぞれ60,000個のサンプルが含まれています。  バンドギャップのデータセットについては、ゼロ以外のバンドギャップを持つ36,720個の材料に制限したサブセットも使用しています。  屈折率のデータセットは3,240個のと比較的小規模です。    

これらのデータセットに加えて、小規模なデータセットをシミュレートするために、550個のランダムサンプルのサブセットも使用しています。    

結果として、**MODNetはトレーニングサンプルの数が少ない場合（通常、約4,000サンプル未満）、転移学習を使用している場合でも、MEGNetとSISSOよりも体系的に優れていることがわかりました**。  しかし、形成エネルギーとバンドギャップを含む大規模なデータセットの場合、MEGNetは（転移学習なしでも）予測誤差が最も小さくなりました。  SISSOに関しては、体系的に誤差が大きくなることがわかりました。

以下は評価結果をまとめた表です。E_fは形成エネルギー、E_gはバンドギャップで、nzの添え字がついているのはnon-zero(非ゼロ)のバンドギャップのみのデータセット、そしてnは屈折率を表します。これらの物性について、各モデルでのパフォーマンスをまとめています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006209/f36ec179-8ab5-44c0-ac6f-17c7534caf13.png)


## ケース2: 複数特性の学習
振動エネルギー、エンタルピー、エントロピー、比熱（40種類の温度における）と形成エネルギーを同時に予測するタスクで、MODNetの性能を評価しています。  

データセットは、1,245個の材料の振動特性を計算したもので、305 Kにおける振動エントロピーでMODNetの精度を他のモデルと比較しています。  比較対象のモデルは、組成のみに基づいて学習したランダムフォレスト（c-RF）、すべての特徴量で学習したランダムフォレスト（RF）、転移学習を用いたMEGNet、SISSO、すべての特徴量を用いた単一出力のフィードフォワードニューラルネットワーク（AllNet）です。  さらに、すべての熱力学データと形成エネルギーを考慮した(つまり共同学習をした)、m-MODNetとm-SISSOの結果も比較しています。    

結果として、**MODNetは他のモデルよりも低い平均絶対誤差（MAE）と分散を示し、共同学習によって精度が大幅に（約8％）向上することがわかりました。  特に、トレーニングサイズが小さいほど共同学習の効果が大きくなりました**。

以下は、これらの結果を表すグラフです。テストセットに対する誤差の分布を表しており、各色はモデルを表しています。上からトレーニングセットのサイズが200、500、1100の結果を示しています。右に書いてある数字は分布の平均と分散です。緑と紫の線がMODNetを表していますが、トレーニングセットサイズ200、500、つまり少サンプルのデータで特に優れた結果を出していることが読み取れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006209/af9a64f9-1d91-46e2-9057-1d66f69b9d15.png)


これらの評価結果から、MODNetは、単一特性の学習と多特性の学習の両方において高精度な予測を実現できることが示されました。 特に、小規模なデータセットや複数特性の同時予測においてMODNetは優れた性能を発揮することが明らかになりました。

## 特徴量選択の効果
前のセクションで特徴量選択の概要について書きましたが、MODNetでは特徴量選択が重要な役割を果たしますので、ここでその効果について記述します。
MODNetの特徴量選択は、大きく分けて以下の2つの利点があります。
- **予測精度の向上**: 無関係な特徴量を削除することでノイズが減少し、モデルが重要なパターンをより効果的に学習できる
- **解釈可能性の向上**: どの特徴量が予測に重要であるかを特定することで、材料特性の背後にある物理的なメカニズムの理解や解釈が可能

論文では、振動エントロピー、形成エネルギー、バンドギャップ、屈折率の4つの特性について、特徴量選択の効果を検証しています。

### 振動エントロピー
振動エントロピーは、物質の原子振動に関連するエントロピーです。 論文では、305Kにおける振動エントロピーを予測するタスクにおいて、特徴量選択を行うことで予測精度が向上することが確認されたと報告しています。 特に、**データセットのサイズが小さい場合、特徴量選択の効果が大きくなりました**。  これは、特徴量選択によってノイズが減少し、モデルが重要なパターンをより効果的に学習できるようになるためと考えられます。
また、特徴量選択によって、**振動エントロピーの予測に重要な特徴量が明らかになりました**。  具体的には、原子間結合長とp価電子の範囲が重要であることがわかりました。  原子間結合長が長いほど、また、p価電子の範囲が広いほど振動エントロピーは大きくなる傾向があるとのことです。

### 形成エネルギー
形成エネルギーは、化合物を構成元素から形成するのに必要なエネルギーです。  論文では、形成エネルギーを予測するタスクにおいても精度が向上することが確認されたと紹介しています。

### バンドギャップ
バンドギャップは、電子のエネルギー準位におけるギャップのことであり、材料の電気伝導性を決定づける重要な要素です。  論文では、バンドギャップを予測するタスクで特徴量選択の効果を検証しています。  その結果、特徴量選択を行うことで予測精度が向上することが確認されたとのことです。

### 屈折率
屈折率は、物質中での光の速度が遅くなる割合を表し、光学材料の設計において重要な役割を果たします。 論文では、特徴量選択を行うことで予測精度が向上することが確認され、また特徴量選択によって、屈折率の予測に重要な特徴量が明らかになりました。 具体的には、バンドギャップと材料の密度が重要であること示唆されたと書いてあります。

これらの結果は、MODNetの特徴量選択手法が、予測精度と解釈可能性の両方を向上させる上で有効であることを示しています。

# データセットやモデルのトレーニング方法

## データセット
論文では、4つのデータセットを使用しています。
- **形成エネルギー、バンドギャップ**: Materials Projectから取得した69,640個の結晶データ       
- **屈折率**: 4,040個の化合物の屈折率データ    
- **振動熱力学**: 1,245個の無機化合物の振動特性データ
バンドギャップのデータセットについては、ゼロ以外のバンドギャップを持つ45,901個の材料に制限したサブセットも使用しています。   

### データセットの詳細
- **形成エネルギー、バンドギャップ**: 2018年6月1日に取得したデータであり、MEGNetの論文で使用されたものと同じ
- **屈折率**: 密度汎関数理論（DFT）とハイスループット法に基づいて計算されたデータです。 データセットの値の範囲は1〜6で、60％が2未満の値
- **振動熱力学**: 密度汎関数摂動理論（DFPT）に基づく調和近似で計算されたデータです。 このデータセットには、5〜800Kの振動エントロピー、ヘルムホルツ自由エネルギー、内部エネルギー、熱容量（5K刻み）が含まれる

## モデルのトレーニング
MODNetのトレーニングは以下のような手順で行われました。
- データセットを、トレーニングセット、検証セット、テストセットの3つに分割  
- 検証セットを用いて、モデルのハイパーパラメータを最適化  
- テストセットを用いて、最適化されたモデルの性能を評価

調整したハイパーパラメータは、ニューラルネットワークの層の数、ニューロンの数、学習率、バッチサイズなどで、すべてグリッドサーチで探索が行われたとのことです。

最終的なモデルでは、min-max正規化、学習率0.01、MSE Loss(損失関数)、ブロックあたり2つの層のアーキテクチャ、各ブロックに256、128、64、8個のニューロンを使用しています。  層やニューロンの数を変更しても精度は向上しなかったとのことです。  バッチサイズは256に固定し、活性化関数にはReLUを使用しました。  学習は600エポックでAdamオプティマイザー（β1 = 0.9、β2 = 0.999、decay = 0）を使用して実行されました。最終的なアーキテクチャは以下のようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006209/b8fd0d31-1032-41e4-84bd-5da089fe795e.png)

# まとめ
以上、MODNetの論文の内容をまとめてみました。論文中でも述べられているように、RRスコアを使った特徴量選択手法と共同学習(joint learning)により、少ないデータセットでも効率的にモデルをトレーニングできたというところがポイントになるかと思います。材料科学のデータは不足している場合が多いと思いますので、このような特徴量エンジニアリングはデータが少ない分野では特に重要となりそうですね。ニューラルネットワークの構造は意外とシンプルで驚きました。良い特徴量が絞られていれば、複雑なモデルは必要ないということでしょうか。今回は理論編ということで論文の内容まとめが中心となりましたが、次回は実際にソースコードを読み、モデルをPython上で動かしてみたいと思います。

# 参考文献
- [MODNet](https://www.nature.com/articles/s41524-021-00552-2)
- [matbench](https://matbench.materialsproject.org/)