AI_ML_DL’s diary

人工知能、機械学習、ディープラーニングの日記

Quantum-chemical insights from DTNN -2

Quantum-chemical insights from DTNN -2

*KaggleのテーマPredicting Molecular Propertiesと類似した内容であるが、Kaggleとは離れて、DTNNの本質に迫る。

・対象論文:K. T. Schütt et al., Quantum-chemical insights from deep tensor neural networks, nature communications 2017

 

*入力データ

・DTNNに入力する分子の情報は、原子番号3次元空間座標であると、テキトーに書いてきたが、そうではない。

・まず、論文の図1(下図)を見ると、原子番号のベクトルZと、原子間距離マトリックスDが入力情報である。

・データベース側で、この情報は提供されているのだろうか。

・K. T. Schüttらが用いたGDB-9に関する詳細は、R. Ramakrishnan et al., Quantum chemistry structures and properties 0f 134 kilo moleculesに書かれている。

・それによると、Å単位の座標、x,y,xと書かれている。分子の構成元素9個について、原子間距離を9x9のマトリックスに変換するのは問題なさそう。

・どれが隣接しているかは関係なく、全ての原子間について機械的に計算するだけ。

・主題から少し外れるが、下図の左側に図示されている分子構造は、データベースGDB-9には、このような図として記述されているのではなく、SMILESという書式で記述されている。ベンゼン分子であれば、c1ccccc1と記述される。

・さらに、CASとかInChIなどの表記方法がある。

IUPAC Name:Benzene
CAS:27271-55-2
SMILES :c1ccccc1
InChIKey:UHOVQNZJYSORNB-UHFFFAOYSA-N

InChI = International Chemical Identifier :IUPACが国際標準として推奨している。

 

f:id:AI_ML_DL:20200206083318p:plain

*この核の電荷Zと原子間距離Dを入力して、量子力学計算値をラベルにして、DNNに学習させる、という単純な図式かと思っていたが、全く違っている。

・原子間距離に関しては次の記述がある。

f:id:AI_ML_DL:20200206140750p:plain

・クーロンマトリクスを使った例:G. Montavon et al., Machine learning of molecular electronic properties in chemical compounds space, New Journal of Physics 15 (2013) 095003を参考にして考案したとのこと。

・そのネットワークの模式図

f:id:AI_ML_DL:20200206143912p:plain

・クーロンマトリクスの説明

f:id:AI_ML_DL:20200206144235p:plain

・DTNNで使われているガウシアンの重ね合わせ

f:id:AI_ML_DL:20200206132121p:plain

・どういうふうに理解していけばよいのだろうか。

 

 <雑談>
・物事を学ぶことによって得られるものを、直接効果と間接効果に分けてみる。

・原理的ことを学ぶと、原理を知るという直接効果の他に、原理を応用して他のところでも有効に使えるという間接効果がある。

・汎用性は、広い範囲に適用できるものということだから、汎用性を得るには、広く学ぶ必要がある。あるいは、広く適用できる原理を学ぶことが有効である。

ビッグデータは、広い範囲を含むということを直ちに意味するものではない。

・CNNによる画像認識は、直接効果は大きいが、汎用性に乏しい。それは、学んだものの中のどれに近いかを出力しているだけで、それ自体のことを把握しているわけではないからであろう。

・CNNは物体をパーツに細分化し、物体認識の過程ではパーツを再構成しているようにみえるが、再構成したものと入力画像を直接比較して判定しているわけではなく、結果として、方々に散らばっているパーツの組合せが、最も近いものを選んでいるということであろうか。

・理想的な学習について考えると、各物体について、画像から抽出した特徴量の最適な組み合わせを再構成したものを生成することができればよいのではないだろうか。入力画像を、その象徴的な画像と比較することによって、判断・判別できることが望ましいように思うし、それが、本来の学習および学習の効果というものではないだろうか。

・そういう学習機を作りたいものだ。

 

*DTNNを理解するために、K. T. SchüttらのDTNNの論文に記述されている内容を丁寧に読み進めているつもりであるが、基礎学力の不足からか、引用文献を見ても理解できない部分が多い。

*明日は、K. T. Schüttらの、ShuNetに関する2件の論文も含めて、DTNNを理解できるようにしていきたいと思う。

SchNet: A continuous-filter convolutional neurel network for modeling quantum interactions

SchNet - a deep learning architecture for molecules and materials

 

つづく 

 

f:id:AI_ML_DL:20200206082006p:plain

style=097 iteration=1

f:id:AI_ML_DL:20200206082059p:plain

style=097 iteration=20

f:id:AI_ML_DL:20200206082146p:plain

style=097 iteration=500

 

Quantum-chemical insights from DTNN -1

Quantum-chemical insights from DTNN -1

*KaggleのテーマPredicting Molecular Propertiesと類似した内容であるが、Kaggleとは離れて、DTNNの本質に迫る。

 

*データベース

・データベースとしては、GDB-13のサブセットであるGDB-7とGDB-9を用いている。

GDBの後ろの数字は、水素を除いた構成元素の数をあらわしている。

・そもそも、このデータベースは、誰が、何のために作成したのか。

・ベルン大学のReymond先生の研究グループが、低分子医薬品の探索のために作成したようである。

・最初にGDB-11で、26.4 Million、次にGDB-13で、977.5 Million、さらに、GDB-17 で、166.4 billionの分子数からなるデータベースを作りあげられたようである。

・安定に存在することや、合成可能であること、ヘテロ原子の割合を自然有機物における割合を参考にして決めるなど、さまざまな合理的制約条件を課して、計算機で作り出しているとのことである。

・したがって、医薬品候補化合物の探索に適しているとのことである。

・Reymond先生のサイトからダウンロードできる。http://gdb.unibe.ch/downloads/

GDB-17に関する論文Enumeration of 166 Billion Organic Small Molecules in the Chemical Universe Database GDB-17を眺めていると、Chemical Universeという言葉が大袈裟でないなと感じられる。

GDB-17は、医薬品開発において非常に重要な役割を果たしそうだなと思って、ダウンロードサイトを確認したところ、GDB-13はフルサイズまでダウンロード可能だが、GDB-17は、ほんの一部だけがダウンロード可能となっている。

・当然だろうな。大手製薬会社が買い占めてしまいそうな感じだな。

・2015年に発表された論文The Chemical Space Projectでは、GDB-11やGDB-13でも、医薬品開発に役に立っているようなことが書かれている。

・さらに、Beyond 17 atomsは、現在進行形であり、大きな飛躍が期待され、クリエイティブな合成経路のデザインへの期待も述べられている。

*このGDBデータベースの構築は、バーチャルの分子空間を作り出したが、そこには、現実世界が求める宝物が含まれていたということか。

・既存の手法の組合せのようだが、丁寧に、規模を大きくすると、大きな価値が生まれる、ということか。

・それにしても、すごいものを見てしまったような気がする。

 

*DTNNのデータベースを知ろうと思っただけなのだが、DTNNとの関係が少ないところにはまり込んでしまったようだ。
 

 <余談>

*論文を読むときには、引用文献は、できるだけ見ておきたいと思うのだが(集めるだけ集めて、大半は読まないことが多い)、人工知能機械学習ディープラーニング関係の文献の大半が、無償で手に入る。

・有償の画面が出てきても、論文タイトルをコピペして、再度Google Scholarで検索すると、無償のarXiveとして出版されていることが多い。

・NatureやJACSは、無償で入手するのが難しいイメージだったが、この分野の論文だと、無償で入手できることが多いように感じる。

 

*明日も、DTNNの勉強だ! 

 

つづく 

 

f:id:AI_ML_DL:20200205091748p:plain

style=096 iteration=1

f:id:AI_ML_DL:20200205091846p:plain

style=096 iteration=20

f:id:AI_ML_DL:20200205091703p:plain

style=096 iteration=500





 

Predicting Molecular Properties-9

Predicting Molecular Properties-9

*1週間程度の予定で、過去のKaggleコンペ、Predicting Molecular Properties、に取り組む。(1週間を超えた!)

*目的は、DNNがどのような課題に対して、どのように貢献できるのかを、実例を通して学ぶこと。

 *今回は、まず、グラフネットワークを理解し、次に、GilmerのMPNNを理解し、その後で、コードの理解に進むという流れにしようと思う。

 

*今日は、K. T. SchüttさんのDTNNのモデルを理解したいと思う。

有機分子に対する量子力学計算結果を、機械学習により、精度を落とすことなく、短時間の計算によって再現するために、従来の機械学習からグラフニューラルネットまで多くの研究がなされている。

・その集大成ともいえるグラフニューラルネットによる解析方法の1つがDTNNである。

・分子中の原子の種類と3次元座標を入力データとして、量子力学計算結果をラベルとして与え、未知の分子の原子の種類と3次元座標から、量子力学計算結果を予測できるようにする、ということだが、DTNNは、何をどのように学習するのだろうか。

・まず、DTNNの入力は、原子の核電荷Zと、分子の回転と並進の普遍性を保持した原子間距離Dの行列、となっているがそれだけではない。

・The distances are expanded in a Gaussian basisとか、each atom i is represented by a coefficient vectorとか、・・・。

 

*K. T. SchüttさんのDTNNを理解するためには、Graph Neural Networkおよび、それ以前の機械学習による分子の量子力学計算のモデリングに関する多くのことを学ばなければならないことがわかった。

 

*DTNNの理解は、明日以降も続けなければならない。 

 

f:id:AI_ML_DL:20200204132136p:plain

style=095 iteration=1

f:id:AI_ML_DL:20200204132229p:plain

style=095 iteration=20

f:id:AI_ML_DL:20200204132313p:plain

style=095 iteration=500

 

Predicting Molecular Properties-8

Predicting Molecular Properties-8

*1週間程度の予定で、過去のKaggleコンペ、Predicting Molecular Properties、に取り組む。(1週間を超えた!)

*目的は、DNNがどのような課題に対して、どのように貢献できるのかを、実例を通して学ぶこと。

 *今回は、まず、グラフネットワークを理解し、次に、GilmerのMPNNを理解し、その後で、コードの理解に進むという流れにしようと思う。

 

*本日の課題:お手本プログラムコード(1つはTF2.0とsklearnによるMPNNモデル、もう1つはkerasとsklearnによるベーシックな5層の全結合NNモデル)の理解(手本と論文を対比させながら)

 

*課題を確認しよう。

・This competition is hosted by members of the CHemistry and Mathematics in Phase Space (CHAMPS).

・In this competition, you will develope an algorithm that can predict the magnetic interaction between two atoms in a molecule (i.e., the scalar coupling constant.

・CHAMPSは、2017年から6年間の大学間共同研究プログラムのようである。

・CHAMPSの目的:数学者と化学者とデータサイエンティストが集まって、環境科学、製薬業、エネルギー産業などに資する化学変化、化学変換の理解に大変革を起こすような、新しいモデルを作り上げること。

・原文:This unprecedented partnership between mathematicians, chemista, and data scientists aims to provide new models that revolutionise our understanding of chemical transformation, with impacts on all industries that rely on understanding chemical change: spanning environmental science, the pharmaceutical industries, and energy sectors. 

・CHAMPSが2017年9月22日に開催した勉強会:"Introduction to the python data science pipeline", "learning to classify handwritten digits", learning potential energy surfaces", learning boby coordinates in VR"

・CHAMPSが2020年3月5日に開催するシンポジウム:"Cloud-sourcing Machine Learning in NMR"

・Abstractより:Recentry, we worked with Kaggle to design a competition which encouraged data scientists around the world to develope ML models for predicting pairwise nuclear magnetic resonance (NMR) properties for synthetically relevant chemical compounds. Over 3 months, we received 47,800 ML model submission from 2700 teams in 84 countries, with the top models outperforming our own previously published methods. The success this strategy has cultivated highlights the potential of crowd-sourced ML approaches across a range of scientific domeins.

This symposium will introduce the background and main finding of the competition, including the context of computational NMR, the Kaggle platform and presentations from the top performing teams of the competition.

*赤文字にした、CHAMPSチームの方法は、私が最初に引用した文献だった。

<再掲> 

*関連文献調査-1

IMPRESSION – prediction of NMR parameters for 3-dimensional chemical structures using machine learning with near quantum chemical accuracy†
Will Gerrard, a Lars A. Bratholm, a Martin J. Packer,b Adrian J. Mulholland, a
David R. Glowacki *a and Craig P. Butts *a

Chem. Sci., 2020, 11, 508

・タイトルからは判断できないが、本文に次の記述があり、ニューラルネットワークを使うメリットはなく、KRRという手法をベースにした、IMPRESSIONというプログラムを開発したとのことである。

IMPRESSION uses a Kernel Ridge Regression37 (KRR) framework to learn the 1JCH scalar couplings and 13C and 1H chemical shifts of molecular structures. KRR was successfully used by Paruzzo et al. to develop SHIFTML.22 Neural networks have also been used to predict chemical shifts in small molecules from experimental data,6,38,39 however we found no clear advantages in using feed forward neural networks in this work as the accuracy was comparable to KRR for the datasets used, with the kernel methods being much faster to train with the given training set size.

・しかしながら、この記述にあるように、ニューラルネットは、小さな分子の実験データに適用したということであって、DFTなどの第一原理計算結果に対して適用したものではない。

・さらに、ニューラルネットを適用した例として引用されている論文は、2002年から2007年にかけて発表されたもので、DNNの夜明け前のことである。

・最近のDNNの動向に触れられていないので、この論文をしっかり読むかどうかは、もっと調べてから判断しようと思う。

*CHAMPSチームの "Cloud-sourcing Machine Learning in NMR"は大成功だったということだ。

*大成功の源は、MPNN、DTNN、SchNetなどが開発されていたこと、優秀なKagglerが存在していること、それに加えて、CHAMPSチームが高品質なデータベースを作り上げたことだろうな。

 

*データの詳細検討

 

*明日は、データの詳細を検討する。(停滞気味・要注意)

 

 つづく 

 

f:id:AI_ML_DL:20200203085837p:plain

style=094 iteration=1

f:id:AI_ML_DL:20200203085942p:plain

style=094 iteration=20

f:id:AI_ML_DL:20200203090039p:plain

style=094 iteration=500

 

Predicting Molecular Properties-7

Predicting Molecular Properties-7

*1週間程度の予定で、過去のKaggleコンペ、Predicting Molecular Properties、に取り組む。

*目的は、DNNがどのような課題に対して、どのように貢献できるのかを、実例を通して学ぶこと。

 *今回は、まず、グラフネットワークを理解し、次に、GilmerのMPNNを理解し、その後で、コードの理解に進むという流れにしようと思う。

 

*残された課題:お手本プログラムコード(1つはTF2.0とsklearnによるMPNNモデル、もう1つはkerasとsklearnによるベーシックな5層の全結合NNモデルの理解(手本と論文を対比させながら)

 

*本日の課題:Molecular Propertiesの予測においてMPNNモデルよりも高い性能を持っているように見えるDTNNおよびSchNetを理解すること。

・昨日に続き、これらのプログラムを開発したK. T. Schüttらの論文を読む。

・nature communicationに掲載されたQuantum-chemical insights from deep tensor neural networksのプログラムの構造を理解しよう。

・プログラムの模式図を再掲する。

f:id:AI_ML_DL:20200202100535p:plain

GitHubに、開発者らのチームが作成したdtnnのコードがアップされているので、それに取り組んでみよう。

The deep tensor neural network (DTNN) enables spatially and chemically resolved insights into quantum-mechanical observables of molecular systems.

Requirements:

  • python 3.4
  • ASE
  • numpy
  • tensorflow (>=1.0)

pythonとnumpyとtensorflowがあれば動くということらしいが、KerasやPyTorchを使っていないと、プログラムは見た目が複雑になる。

・SchNetは、SchNetPackという統合環境になっていて、PyTorchを使って書かれている。

・ASE:The Atomic Simulation Environment (ASE) is a set of tools and Python modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations. The code is freely available under the GNU LGPL license.

・ASEは、conda install -c matsci ase で、3.16.2をインストールできた。

・荷が重いな。

・実際に動かすときは、目的を明確にし、データベースを準備し、前処理等もやってから、という感じかな。

・いろいろ手をひろげすぎて収拾がつかなくなってきた。

・ここで、コンペに戻ろう。

 

<雑感>

*Kaggleの良いところは、機械学習の具体的な適用例を知ることができることであり、メーカーや研究者などのニーズが幅広く実現されているところだと思っている。

・予測結果を提出して、スコアを得て、順位を知って、上位を目指して、改良したモデルで予測結果を出して、スコアを得て、順位を知って、上位を目指して、・・・。

・予測結果を出力できるようになるまでのプロセスと、そこから、改良を加えていくプロセスがある。

・予測結果を出力できるようになることは、プログラミング技術が無い場合でも、Kaggle内での手順がわかれば、ちょっとしたことでつまづくことはあったとしても、たいていは、できるようになる。

・Kaggleの真骨頂は、他の人のモデルを参考にしたり、議論を参考にしたり、議論に加わったりしながら、モデルを改良したり、新しいモデルを適用してみたりしながら、スコアをアップさせていくことであろう。

・このプロセスに入り込んで、スコアを上げていくためには、少なくとも、プログラムを書き換える能力を身に着ける必要がある。

・スコアアップの手段は理解できても、プログラムに反映する技術がないと、立ち往生するだけである。

・この段階、すなわち、借り物のプログラムでスタートしても、いつも、借り物をそのまま使うだけで、画素数、学習率、バッチサイズ、dropout率、学習済みDNNの種類や組合せ、エポック数、augmentationのパターンやパラメータなど、数値もしくは名称を変更するだけの作業によるスコアアップに留まっている人は、自分を含め、非常に多いのではなかろうか。

・トップレベルの人のコンペ終了後の感想で、理想的だなと思ったのは、借り物でスタートしたが、論文を読み漁り、課題解決のために、より適切なモデルを探し出して、そのモデルを組み込んで、スコアアップにつなげた、というものである。

 

<雑感>

*最初に本格的に参加したKaggleのコンペは、画像分類だったので、KerasでCNNを1か月程度勉強したところであったが、F. Schollet氏のテキストを片手に、モデルをつくって、テストデータの予測結果を出力して、提出できた。ただし、データの前処理は、Kaggleのnotebookを参考にさせてもらった。ただし、スコアはエラーでつかなかった。

・テキスト片手にモデルを作れる、というレベルでない場合には、どうすればよいのか。鉄鋼表面の欠陥検出では、自分でモデルを作れず、前処理も難しく、結局、前処理の一部を自分で少しできるようになっただけで終わった。

・コンペ終了後に再度挑戦してみたが、他人のコードで概要を把握して、前処理方法を学んだところまでで終えた。借用したnotebookのハイパーパラメータの一部を変更して計算結果を提出したが、改善作業は進まず、課題にしていた損失関数の改善とaugmentationの拡張は実現できずに終わった。

・いま取り組んでいるカップリング定数の予測にしても、自分でしっかりとしたモデルを組めるようなものではないので、借り物のモデルであっても、内容を理解して改善にもっていきたいのであるが、モデル自体が複雑になってくると、改善の仕方を考えるところまでたどり着けない。

・計算環境の貧弱さも大きな問題になってくる。クラウドを借りる資金もない。

・今回の過去コンペへの取り組みも、そろそろ終わろうかと思ったが、ここで引き下がるわけにはいかない。第一原理計算は、ずっと前からやってみたいと思っていたし、ディープラーニングバイオインフォマティクスを勉強して両方の資格を取れたタイミングなので、このコンペは、最後までやり切らなければならないと思っているところである。

・このコンペにLate Submissionすることだけではなく、SchNetPackを使いこなし、DeepChemなども使えるようになって、バイオインフォマティクスの分野へも踏み込みたいと思っている。

 

<雑感>

GitHubのDTNNがtensorflowで書かれている。KerasでもPyTorchでもない。

・2017年の春にディープラーニングの勉強を始めようとして、何冊かテキストを購入した。ひとりで勉強していたのだが、さっぱり進まなかった。

・進展が見られたのは、2018年春にゲームパソコンを購入してからである。なんとなく、GPUが必要だということを覚えていたので、GTX1050Tiを選んだ。

・なんとなくディープラーニングをやろうとして、斎藤康毅氏のゼロから作るDeep Learningの本を参考に、Anacondaをインストールし、GitHubからプログラムをダウンロードし、Spyderでプログラムを動かした。

・斎藤康毅氏は、Python3とMumPyとMatplotlibだけでプログラムを組み立てていた。

・そのため、内容が深くなってくると、別の場所に格納してある関数を引き出して使うようになり、途中からついていけなくなった。

*とはいえ、fastai, pytorch, kerasなどでは見えにくくなっている、プログラムの中身(パラメータ設定の詳細やテンソル演算の詳細など)が具体的に見えて、演算内容とニューラルネットの構造との対応がよくわかるので、一度は通っておくべき道かもしれない。

・そのままディープラーニングの世界にのめりこんでいればよかったのだが、2018年の5月から2019年の3月まで、違うことをやっていたのは、今思えば悔やまれる。

・しかし、2019年の3月13日に、ディープラーニングを再開し、この道を極めたいと思うようになった。

 

*明日は、コンペのプログラムに戻ろう!

 

 つづく 

 

f:id:AI_ML_DL:20200202111628p:plain

style=093 iteration=1

f:id:AI_ML_DL:20200202111720p:plain

style=093 iteration=20

f:id:AI_ML_DL:20200202111812p:plain

style=093 iteration=500

 

Predicting Molecular Properties-6

Predicting Molecular Properties-6

*1週間程度の予定で、過去のKaggleコンペ、Predicting Molecular Properties、に取り組む。

*目的は、DNNがどのような課題に対して、どのように貢献できるのかを、実例を通して学ぶこと。

 *今回は、まず、グラフネットワークを理解し、次に、GilmerのMPNNを理解し、その後で、コードの理解に進むという流れにしようと思う。

 

*本日の課題:お手本プログラムコード(1つはTF2.0とsklearnによるMPNNモデル、もう1つはkerasとsklearnによるベーシックな5層の全結合NNモデルの理解(手本と論文を対比させながら)

 

*昨日、新幹線の中で、MoleculeNet: a benchmark for molecular machine learningを見ていたら、QM9に対するMAE値は、MPNN(Message Passing Neural Networks)よりもDTNN(Deep Tensor Neural Networks)の方が小さい(良好)ことに気付いた。

・DTNNについて調べてみると、DTNNはSchNet(Schは、著者の名前からとっているのだろう)に発展していることがわかった。

・さらに、Kaggleコンペサイトのnotebooksをあらためて眺めてみると、SchNetを用いたものがかなり多いことがわかった。

 

*ということで、DTNNとSchNetについて少し勉強してみよう。

Quantum-chemical insights from deep tensor neural networks

K. T. Schütt et al., Nature Communications, 8(13890), 2017

・これは、SchüttらのDTNNに関する最初の論文のようである。

・データから学ぶことによって、画像認識や自然言語処理など、様々な分野でパラダイムシフトが起きている。

・量子多体系においても、同様なブレイクスルーを起こさせることができるのではなかろうか。

・中くらいの分子に対して、正確に多体系のハミルトニアンを解いたデータベースを用いて、エネルギー状態を予測できるdeep tensor neural networksを提案する。

 

f:id:AI_ML_DL:20200201134446p:plain

SchNet: A continuous-filter convolutional neural network for modeling quantum interactions

K. T. Schütt et al., 31st Conference on Neural Information Processing Systems (NIPS 2017), Long Beach, CA, USA.

・この論文は、DTNNを改良し、SchNetと命名したものである。

・continuous-filter convolutional layersを導入することによって、下のFigure 1に示されるように、エネルギーを位置の変化に対して離散的ではなく連続的な値として得られるようにしたことである。

・これにより、下のTable 1に示されように、DTNNやMPNN(enn-s2sが相当する)よりも高い精度で、QM9を用いてエネルギー値を予測できることが確かめられている。

f:id:AI_ML_DL:20200201134828p:plain

f:id:AI_ML_DL:20200201134916p:plain

f:id:AI_ML_DL:20200201135040p:plain

SchNet - a deep learning architecture for molecules and materials

K. T. Schütt et al., arXiv: 1712.06113v3 [physics.chem-ph] 22 Mar 2018

 

*さらに、SchNetを改良したPiNetを含む、PiNNが提案されている。

PiNN: A Python Librery for Building Atomic Networks of Molecules and Materials

Y. Shao et al., arXiv:1910.03376v2 [physics.comp-ph] 12 Jan 2020

・このPiNNには、Figure 1に示されているように、BPNN(Behler-Parrinello Neural Network)とGCNN(Graph Convolution Neural Network)とPiNetが含まれている。このPiNetは、SchNetを改良したもののようである。

f:id:AI_ML_DL:20200201124211p:plain

f:id:AI_ML_DL:20200201135929p:plain

注)pinetで検索すると、piNET: a versatile web platform for downstream analysis and visualization of proteomics dataという文献が出てくるが、PiNetとは別物のようだ。

 

*明日は、K. T. Schüttらの、DTNN, SchNetについて、もっと詳しく内容を調べることにする。

・DTNNは、原子番号や実際の原子間距離に相当する値をネットワークに入力している、すなわち、DFT計算に用いているのと同じパラメータを入力しているので、ネットワークは、画像認識や言語認識における単なる答え合わせのための学習ではなく、物理的な意味をもつ学習結果が含まれている可能性があるので、直接学習した物理量以外の物理量を予測することも可能になっているのかもしれない。このあたりを、より正確に理解する。

 

つづく 

 

f:id:AI_ML_DL:20200201081222p:plain

style=092 iteration=1

f:id:AI_ML_DL:20200201081316p:plain

style=092 iteration=20

f:id:AI_ML_DL:20200201081404p:plain

style=092 iteration=500

 

Predicting Molecular Properties-5

Predicting Molecular Properties-5

*1週間程度の予定で、過去のKaggleコンペ、Predicting Molecular Properties、に取り組む。

*目的は、DNNがどのような課題に対して、どのように貢献できるのかを、実例を通して学ぶこと。

 *今回は、まず、グラフネットワークを理解し、次に、GilmerのMPNNを理解し、その後で、コードの理解に進むという流れにしようと思う。

 

*本日の課題:プログラムコードの理解(手本と論文を対比させながら)

・MPNN, edge, node, update, aggregationなどに関係する図や式を再掲する。

・MPNNはモデル全体の呼び名。

・edgeは直訳すれば端部ということだが、nodeとnodeを結び付けているもので分子モデルの場合は結合(1重結合とか二重結合とか)のことだが、実際に使う値としては原子の3次元座標になるのかな。

・nodeは直訳すれば節ということで分子モデルの場合は原子をあらわすのだと思うが、スカラーカプリングは原子間の相互作用だから実際に使う値は原子のペアかな。

・updateは下に示す式(2)ではNNとなっているのでなにがしかのニューラルネットを使って値を更新するということかな。

・aggregationは同じく下に示す式(2)ではΣ記号が付いているから和をとるということかな。

f:id:AI_ML_DL:20200130093304p:plain

f:id:AI_ML_DL:20200130094144p:plain

f:id:AI_ML_DL:20200130072802p:plain

f:id:AI_ML_DL:20200130093833p:plain

f:id:AI_ML_DL:20200130103826p:plain

*プログラムの検討

・Message passenger

・Aggregator

・Node update 

・Edge update

・Output layer

・Put it together to form a MPNN

・Define the loss functions

・Define some callbacks

・Finally create the model

・Let the learning begin

・Prediction done

*プログラムの概要はなんとなく見えてきたような気がするが、残念なことに、使っているメインのデータベースがプライベートなものらしくて消去されているようである。

・プログラムの本体は、MPNNに間違いなさそうなので、残念である。

 

<雑談>

*以前にも書いたことがあるが、斎藤康毅のゼロから作るDeep Learning②の中で、RNNによる文章作成のseq2seqのところで、足し算をやってみせるところがある。

・50000件ほどの例を使って学習させると、正解率が、baselineで10%程度、それがreverseにより50%以上に、peeky(Encoderの出力hをすべての時刻のLSTMレイヤとAffineレイヤに与える)により100%近くにまで上がるというものである。

・以前は、これはすごい、と思った。足し算の方法を教えずに、膨大な量ではあるが、問題と答えの組を示しただけで、正解できるようになるのだから、驚きだ。

・といっても、今では、量子力学の計算をしないで、分子中の原子の種類と3次元座標を与えるだけで、量子力学で計算したのと同等の情報が得られるのだから、いまさらではある。とはいえ、やっていることは、原理的に、同じだ。

・ほかの方法で計算して得られた大量のデータを、大規模非線形変換装置(DNN)に学習させることができて、かつ、未知のモデルに対して学習させたデータと同レベルの正確さで予測できる、ということができればいいだけなのだ。

レイ・カーツワイルが提唱した、シンギュラリティーというのがある。技術的進化速度は指数関数的に増大していて、2029年にはヒトを超え、2045年には、技術的進化速度が無限大になるというものだ。

・ヒトと比較すること、ヒトの技術開発力と比較することに意味があるとは思われないが、いろいろな領域で、ヒトの能力、既存の技術力を超えた、もしくは超えようとしているのは間違いなさそうだ。

・ヒトが開発したものがヒトを超えたと言っても、これもヒトの能力だと言ってしまえば、ヒトを超えることはない、ともいえるかもしれない。

・現状でも、既存の技術を超えたり、超えようとしているのであれば、その領域においては、計算機は、予測能力を駆使し、GANのような技術も駆使して、教師データをどんどん増やすというのは出来そうな気がするのだがどうだろう。

・教師データが、新たな教師データを生み出す仕組みができれば、それは、自律的に精度を向上させることができるということになる。

・どうなんだろうな。

 

*本題に戻ろう。

・このまま続けるには、大きな問題がある。

1)TensorFlow2が使われていること。何か月か前に、TF2をインストールすると、常用しているプログラムが動かなくなった。

2)プライベートなデータベースを用いてトレーニングしているらしく、そのデータベースは削除されている。

3)コンペのデータベースをダウンロードしたが、データ量が多すぎるようで、自分のパソコン環境で、エクセルでは開けなかった。

・とはいえ、ここでやめるわけにはいかない。

 

*まずは、コンペのデータベースの中身を調べる。

・ゼロから、notebookを作る。

・言語は、KerasとTensorFlowをベースとする。

・A. Geron氏のHands-On Machine Learning with Scikit-Learn & Tensouflowと、F. Chollet氏のDEEP LEARNING with Pythonを参照しながらすすめる。

 

・まずは、 train.csvを読み込んで、一部を表示してみる。

import os

import pandas as pd

PATH = 'C:Users/・・・・/champs-scalar-coupling'

train_df = pd.read_csv(PATH + 'train.csv')

train_df.head()

・これまでは、データベースをダウンロードしたら、いつも、ファイル名をダブルクリックして、エクセルで表示していたが、今日は、A, Geronのテキストを見ながら、train_df.info(), train_df.describe(), train_df.hist(bins=50, figsize=(20,15):plt.show()などを試した。

・非常にスムーズに動作した。

・structures.csvに対しても同様のコマンドを試した。

・これで、元素ペア、スカラーカップリングコンスタント、分子構造情報(構成元素のx,y,z情報)の場所がわかり、イメージが湧いてきた。

・しかし、なんにせよ、前処理に難があるのは自覚しており、今はまだ、動くプログラムで、勉強するしかない。

*Kerasで、Kaggleのデータベースを使って、動くプログラムが見つかったので、それで学ぶことにする。

 

*このつづきは、土曜日の予定。 

 

f:id:AI_ML_DL:20200130072014p:plain

style 091 iteration=1

f:id:AI_ML_DL:20200130072135p:plain

style 091 iteration=20

f:id:AI_ML_DL:20200130072253p:plain

style 091 iteration=500