マテリアルズ・インフォマティクスではRDKitをこう使う
今度は機械学習のための準備だ。マテリアルズ・インフォマティクスをPythonで実行する場合、RDKitライブラリが用いられることが多い。物質を探したり、物性を予測するためのツールキットだ。多くがC++で実装されており、Pythonのライブラリが提供されている。Anacondaを導入していれば、コマンドからインストールできる。
例えば物質の溶解度(溶けやすさ)を予測するモデルを構築する場合。物質(X)から溶解度(Y)を予測するモデルとなる。大まかには、データの取得、データの読み込み、記述子の計算、予測モデルの構築、モデルの評価といった流れで進める。データはRDKitのGitHubから入手できる。
物質データの読み込みはRDKitへのインポートという形で行う。実際にはファイルなどを指定するものの、SMILES記法からの読み込みも可能だ。描画ツールも提供されている。読み込んだらMolクラスのオブジェクトを生成する。このオブジェクトに対して、関数を用いて元素を抽出したり、結合の種類(単結合や二重結合)を調べたりすることができる。
それから記述子を計算する。マテリアルズ・インフォマティクスの肝となる部分だ。学習データから目的変数を計算する。その後の予測モデルの構築とモデルの評価は通常の機械学習と同じ。
深層学習や強化学習で求める物質の化学式データを人工的に生成
近年の話題として、福島氏が着目したテーマは「分子生成」と「逆合成の経路探索」の2つ。
分子生成とは求める物性値が高い分子の候補を深層学習で人工的に生成すること。AIが小説を書き上げるように、AIが求める物質の化学式を生成する。最近、後述するGAN(敵対的生成ネットワーク)を用いた分子生成の論文が出ているが、この場合、人工的に分子の候補を生成するのを「ジェネレーター」、データの真偽を識別するのを「ディスクリミネーター」と呼ぶ。「電気伝導率が高い分子がほしい」なら、電気伝導率が高そうな分子のデータを生成するジェネレーターを鍛え上げていくことになる。鍛えることで、より電気伝導率が高い分子の候補を生成できるようにする。
処理としてはGAN(敵対的生成ネットワーク)を用いて、本物(実在する物質と物性の)データから特徴を学習して人工的なデータ(物質の化学式)を生成する。実際には、シーケンスGAN(seqGAN)と強化学習を組み合わせたORGANが用いる手法などが提案されている。
関連してMolGANというのもある。これも同じく求める分子のデータを生成するものだが、物質をSMILES記法ではなくグラフ構造で扱うのが特徴だ。分子の構造をイメージすると、グラフ構造としてとらえるのは相性がよさそうだ。
もう一つが逆合成の経路探索。分子を生成する経路を効率良く探索するための技術だ。ここで使われるのがモンテカルロ探索木。囲碁やチェスで数段階先の経路を考えた上で、次の手を探すために使われる探索手法だ。これを分子を生成する経路の探索に応用する。
マテリアルズ・インフォマティクスではコンピュータが「あなたが求める物性を持つ物質は、こんな分子では?」と分子を提案してくれることになる。本当にそのとおりの物性を持つかは実験で確かめる必要があるものの、試行錯誤が続く素材開発が効率的に進みそうだ。
