hodaです。機械学習に興味があります。
突然ですが読者の皆さんは第13回ケムステVシンポジウム「創薬化学最前線」をご覧になりましたか?私も第13回Vシンポを見ていました。見ていないよという人も、一部講演がYou Tubeで今からも見られます。第13回のVシンポでは、AI・機械学習関連の研究のご講演がありました。
この記事では機械学習の初歩的な知識から、化学において重要な構造式を機械がどのように読み込むかについてお話しようと思います。
機械学習とは
機械学習に関連するいくつかワードを拾ってきて分けてみました。聞いたことのある言葉も入っているでしょうか。人工知能(AI)や機械学習と言った言葉はよく使われていますが、くくっていくと図1のように分類されます。機械学習により、コンピュータが与えられたデータに潜まれたパターンを分析し、その学習したパターンを利用して新たなデータに対して結果を予想することが可能になります。
ラベルがあるかないか
機械学習において、結果を予測するためにデータを集め、そのデータを処理する方法として次の2つが挙げられます。
・教師あり学習(Supervised learning)
・教師なし学習(Unsupervised learning)
教師あり学習、教師なし学習にはそれぞれたくさん種類があります。教師あり学習は、ラベルを元にモデルを作り未知のデータに対しても正しい予測ができるようにする汎化能力の習得を目標としています1。一方教師なし学習は、データ自体の背後にある構造や特徴を解析することを目的としています2。ここでいうラベルは、答に対応すると考えてもそれほど問題ありません。教師あり学習だけを用いてもモデルを作成し、未知データに対して予測を行うことができます。しかし、教師あり学習の前に教師なし学習でデータを処理することにより、そのままのデータを使うよりも人間が説明しやすくなったり、場合によっては教師あり学習の精度が向上させたりすることができます。他にも強化学習(Reinforcement learning)や半教師あり学習(半教師付き学習とも言う)が存在します。
教師あり学習の種類
教師あり学習は「分類(Classification)」と「回帰(Regression)」の大きく2種類に分けられます。クラス(例えば0と1)に分ける場合は分類を、連続した値から(線形または非線形に)予測する場合は回帰になります。
分類のみに使うことができるアルゴリズムや、分類と回帰のどちらにも使うことができるアルゴリズムなど、各アルゴリズムに特徴があります。
・Random Forest
・AdaBoost
・Support Vector Machine (SVM)
・kNN(k近傍法)
・Neural Network
・Logistic Regression
・Liner Regression
など
教師なし学習の種類
クラスタリング(Clustering)や次元削減(Dimensionality reduction)などを行ったりします。
・PCA
・k-means
・t-SNE
など
機械学習の言語
プログラミング言語にはC/C++やJava、JavaScript、Swiftなどほかにもたくさんありますが、機械学習によく使われる言語は次の2つだと思います。
・Python
・R
特にPythonは比較的直感的なコードであるため、初心者にやさしい汎用型のプログラミング言語と言われています。汎用性があり、機械学習系のライブラリが豊富であるため機械学習などによく使われています。またR はデータ解析を得意としています。ちなみに筆者は執筆時点でPythonしかプログラミング言語を学んでいません。筆者がPythonを使っているのでここからはPythonの話ばかりになってしまうと思いますが、ご容赦ください。
化学で特に使うツール
ここまでは機械学習全般の話で、化学に限ったものではありません。
ここからは化学で特に使うツールについてです。化学において構造式は人間にたくさんの情報を与えてくれます。構造式は人間からすると視覚的にわかりやすいですが、機械にとっては構造式からうまく情報を取り込むことは難しいです。そこで構造式を機械に読み込ませる形に変換するための変換ツールが登場します。構造式の変換ツールの例として、SMILES(スマイルズと読む)が挙げられます3。SMILESはSimplified Molecular Input Line Entry Systemの略です。この表記により構造式を文字や記号を用いて1行の文字列にして情報を取り込めるようにします。そして、プログラミングやソフトウェアなどによってSMILESから構造式の画像を出すことができます。SMILESにはいくつか種類があるようなので、ここではcanonical SMILES4の例を示したいと思います。
SMILESで化合物を読み込み、計算や機械学習を行えるような形で構造情報を表す方法として、例えばfingerprints(フィンガープリントと読む)があります。fingerprintsにもいくつか種類があります。構造式をfingerprintsへ変換するアルゴリズム5, 6, 7のひとつであるECFP アルゴリズムのおおまかな流れは以下のようになっています。
- 水素原子以外の原子それぞれについて原子番号などの特徴を元に整数の識別子を割り当てる。
- それぞれの原子の識別子を隣接する原子の識別子の存在を反映して、識別子のアップデートを繰り返し行う。このことにより、部分構造の情報を加味した識別子が得られる。
- 重複した識別子を削除する。
ECFPs はExtended-connectivity fingerprintsの略で、上記のアルゴリズムの後に残った識別子がECFP fingerprintsです。
ここでは筆者が使ったことがあるfingerprintsのひとつであるMorgan fingerprintsの例を図4に示しました。Morgan fingerprintsは構造情報が0と1を大量に並べるビット列で表されます(fingerprintsの種類によって記述子の数やビット列、整数の列か異なります8)。複雑な化学構造式がシンプルな数字の並びだけで表現できるとは驚きですね。
SMILES、fingerprintsについての詳しい説明はケムステの過去記事にもまとめられているのでご参照ください (SDF って何?〜化合物の表記法〜)。
終わりに
今回はとにかく機械学習に関して思いつく限りの基礎用語を挙げてみました。リスト方式で紹介した教師あり学習、教師なし学習の種類はまだまだたくさんありますし、1つ1つもそれぞれ特徴があります。まだまだ十分な情報ではありませんが、今回はここまでにしたいと思います。
続きは果たして作ったモデルはどのくらいよいのだろうか【化学徒の機械学習】
参考文献
[1] 杉山将 著, イラストで学ぶ 機械学習―最小二乗法による識別モデル学習を中心に, 2頁, 講談社, 2013 [2] 大曽根, 関, 米田 著, 現場で使える!Python機械学習入門, 136頁, 翔泳社, 2019 [3] 金子弘昌 著, 化学のためのPythonによるデータ解析・機械学習入門, 129頁, 134頁,オーム社, 2019 [4] Toluene (Compound), PubChem,https://pubchem.ncbi.nlm.nih.gov/compound/Toluene#section=InChI-Key (最終閲覧日:2021年3月20日)
[5] Kensert, A.; Alvarsson, J.; Norinder, U.; Spjuth, O. Evaluating Parameters for Ligand-Based Modeling with Random Forest on Sparse Data Sets. J. Cheminform. 2018, 10 , 1–10. DOI: 10.1186/s13321-018-0304-9. [6] Rogers, D.; Hahn, M. Extended-Connectivity Fingerprints. J. Chem. Inf. Model. 2010, 50, 742–754. DOI: 10.1021/ci100050t. [7] A Practical Introduction to the Use of Molecular Fingerprints in Drug Discovery, https://towardsdatascience.com/a-practical-introduction-to-the-use-of-molecular-fingerprints-in-drug-discovery-7f15021be2b1 (最終閲覧日:2021年4月8日) [8] Elton, D. C.; Boukouvalas, Z.; Butrico, M. S.; Fuge, M. D.; Chung, P. W. Applying Machine Learning Techniques to Predict the Properties of Energetic Materials. Sci. Rep. 2018, 8, 1–12. DOI: 10.1038/s41598-018-27344-x.記事全体の参考
[9] 神崎洋治 著, 図解入門 最新人工知能がよ~くわかる本, 秀和システム, 2016 [10] 下田倫大 監訳, scikit-learnとTensorFlowによる実践機械学習, オライリー・ジャパン, 2018 [11] 中田秀基 訳, Pythonではじめる機械学習, オライリー・ジャパン, 2017 [12] Kebin P. Murphy, Machin Learning A Probabilistic Perspective, 2頁, 12頁, The MIT Press, 2012Topの画像は写真ACから利用しています
関連書籍
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
関連リンク
果たして作ったモデルはどのくらいよいのだろうか【化学徒の機械学習】
AI・機械学習関連
・AIによる創薬に新たな可能性 その研究と最新技術に迫る ~米・Insitro社 / 英・ケンブリッジ大学の研究から~
・日本で発展する化学向けAIと量子コンピューターテクノロジー
2021/04/19 一部修正