Quantum-chemical insights from DTNN -6
*KaggleのテーマPredicting Molecular Propertiesと類似した内容であるが、Kaggleとは離れて、DTNNの本質に迫る。
*プログラムコードを学び、使えるようにする。(2月9日追記)
*主要対象論文:K. T. Schütt et al., Quantum-chemical insights from deep tensor neural networks, nature communications 2017、SchNetの論文、K. T. Schüttさんの学位論文他
*DTNNとSchNetは、量子力学のDFT(密度汎関数法)によって計算した分子のエネルギーのデータベースによって訓練し、未知の分子のエネルギーを量子力学のDFT計算と同レベルの正確さで予測するプログラムである。
*このDTNNとSchNetの計算の仕組みとプログラムコードを学んでいるところである。
*分子のデータベースからは、MD(分子動力学)に関係する分子の力も、正確に予測できるということだが、論文中の、1分子の力の計算とMDの関係性が理解できず、昨日、MDのことを調べることにした。
*その結果、MDが、初期のニュートン力学をベースにしたものから、近似的な量子力学的計算を取り入れたものがあらわれ、さらには、原子分子の量子力学計算の集大成であるDFTをベースにしたab initio MDが登場したということがわかった。
*しかし、ab initio MDは、計算資源の問題から、扱える原子数が少なく時間スケールも短いために現実的な系に適用するのが困難で、限られた使い方しかできない。
*計算資源の問題の根源は、ab initio MD計算に必要な、DFTによる原子分子の力の計算に要する時間にある。
*ここで、機械学習が登場する。
*ab initio MDに必要な、DFTによる原子分子の力の計算を、DFTに変わって行えるように訓練するニューラルネットの1つが、DTNNである。
*H. Wangらは、DTNNのような機能を組み込んだ、ab initio MDとして、DeePMDを開発した。
*今日は、このDeePMDについて、もう少し詳しく見ていきたいと思う。
・DeePMD-kit: A deep learning package for many-body potential energy representation and molecular dynamics, H. Wang, L. Zhang, J. Han and W. E, arXiv 31 Dec 2017
・ディープラーニングは、量子力学計算の領域で、正確だけど時間がかかる計算と同等の結果を、短時間で得る方法を提供し始めている。
・ここでは、ディープラーニングベースで表現されたポテンシャルエネルギーと力場(force field)を、分子動力学(molecular dynamics)に適用することができる、DeePMD-kitを紹介する。
・LAMMPSやi-PIのような、高機能な古典的MD計算から、量子力学的MD計算まで、種々のMDプログラムとのインターフェースを備えている。
・LAMMPSとi-PIは、GitHubにあることを確認した。オープンソースのコードが増えて有難いこと、この上ない。(やる気と少しのお金があれば、好きなだけ勉強/研究できるのだ)
・DeePMD-kitの全体の構成は、以下の図のようになっている。
・オレンジ色の機械学習で学んだモデルが緑色のMD計算に用いられる。
*そもそも、古典的なMDとは、どのような計算なのかを勉強してみよう。
・Introduction to molecular dynamics simulations, K. Vollmayr-Lee, arXiv 20 Jan 2020
・代表的なソフトウエアパッケージが、LAMMPSである。
・とりあえず、図を並べておこう。
・これでは何の説明にもなっていないが、学生向けに書かれたもので、次のようなPythonで書かれたコードが載っている。
*次は、ab initio MDのシミュレーションソフト、i-PIをながめてみよう。
・i-PIは、ab initioに限らず、半経験的パラメータ等を用いた計算も可能である。
・さらに、DeePMD-kitで使われていることからもわかるように、外部からエネルギーと力を入力してMDシミュレーションすることも可能である。それが、下図右上の、EXTERNAL FORCE CODESとして示されている。
*さて、K. T. SchüttさんのDTNN、SchNet、学位論文等からずいぶん離れてしまったようだ。
*DeePMD-kitでは、DTNNやSchNetと同等かそれ以上の性能を持つエネルギーと力の予測性能を持つニューラルネットが使われているので、どうしたものかと悩むところではある。
*Kaggleコンペのテーマであった、スカラーカップリングコンスタントの予測に対しては、DooPMD-kitで使われているニューラルネットとDTNNやSchNetのどちらが優れているかはわからない。
*明日は、DTNNから、さらに離れてしまうことになるが、スカラーカップリングコンスタントの予測に用いられていた、機械学習モデル、XGBoost, LightGBM, CatBoostなどを全く知らないので、勉強してみよう。
・そもそも、Gradient Boostもよくわかっていない。
・なので、タイトルを、Machine Learning without DNNに変えて、1回か2回やってから、Quantum-chemical insightに戻ってこよう。
つづく
*F. CholletさんのDeep Learning with Pythonのテキストを使って、このスペースで、プログラムコードの勉強をしよう。(写経レベル)
・毎回載せている画像の加工に使っているNeural Style transfer in Kerasを使わせていただこう。
Lat's start by defining the paths to the style-reference image and the target imge. To make sure that the processed images are a similar size (widely different sizes make style transfer more difficult), you'll later resize them all to a shared height of 400 px.
Listing 8.14 Defining initial variables
from keras.preprocessing.image import load_img, img_to_array
target_image_path = 'img/portrait.jpg' # path to the image you want to transform
style_reference_image_path = 'img/transfer_style_reference.jpg' # path to the style image
width, height = load_img(target_image_path).size
img_height = 400
img_width = int(width * img_height / height)
以上