実装する前にChemical VAEについて論文概要をまとめます。原著は以下にあります。
https://pubs.acs.org/doi/abs/10.1021/acscentsci.7b00572
概要
SMILESをVariational Autoencoderで学習させ、潜在空間のベクトルから物性値の予測モデルを作成することで目的の物性をもつ分子を生成しようとしています。Autoencoderでは、分子を表現するためのSMILESの組み合わせが膨大なため、目標となる物性値をもつ正しいSMILESが生成されません。一方、VAEでは潜在空間をガウス分布で近似するため、より有効なSMILESが生成されるという考え方です。
分子設計の難しさ
薬や材料設計の目的は望ましい物性値を有する新規性(novel)分子を同定することです。これは最適化問題に帰着します。
定量的な切なる願い(quantitative desiderata)を最大化する分子探索と表現されてます。
しかし、分子空間の最適化は極めて困難と言われています。探索空間は広大、離散的かつ構造化されてなく、原子30個の組み合わせで1060の候補があるとされています。実際に合成されているのは108程度です。
このような問題を解決しようと様々な探索方法が研究されています。本論文のVAEやGCN, GAN, RNN, MCTS, 強化学習などを用いた方法などが提案されてきました。本記事では、このVAEの手法について記載します。いずれ他の方法も記載したいと思います。
GCN + GAN + DDPGを使った分子生成法MolGANについてはQiitaに記事を書きました。
方法
(a) 分子設計に用いられる物性予測モデルを含んだオートエンコーダ-のダイアグラムです。分子をSMILESの文字列表現にし、潜在空間に埋め込みます。潜在空間上のある点を与えればデコーダーにより復元できます。物性値はMLPで予測します。
(b) 潜在空間の勾配法による最適化です。学習されたサロゲートモデルf(z)が潜在表現の特徴zを用いて物性値を予測します。目標となる物性値が高いと予測される点を探すためにzに関してf(z)を最適化させます。Gaussian Processを用いています。
アーキテクチャ
SMILESを復元させるためにRNNのGRU, sequence to sequence (seq2seq)を用いています。SMILESではなくInChIでもテストしたようですが、こちらだとSMILESより性能が悪化したようです。おそらくは表現がより複雑であるためです。また、string encodingの畳み込みも実験したところ性能が改善しています。これは環構造や原子団寄与といった化学構造を不変とできたためと説明できます。
ZINC dataset
- エンコーダー: 3つの 1D 畳込み層。filter size (9, 9, 10), (9, 9, 11), width 196
- デコーダー: 3層gated recurrent unit (GRU)ネットワーク。隠れ層488
- 予測器の目的変数: logP, QED, SAS
QM9 dataset
- エンコーダー: 3つの 1D 畳込み層。filter size (2, 2, 1), (5, 5, 4), width 156
- デコーダー: 3層gated recurrent unit (GRU)ネットワーク。隠れ層500
- 予測器の目的変数: HOMO, LUMO, electronic spatial extent
物性予測については、2 fully connected layers of 1000 neurons, dropout 0.20。簡単にするために3 layers of 67 neurons, dropout 0.15も物性予測に用いられている。
コード
実装はkerasでされてます。
別の方の実装。 github.com
ネットワーク