論文メモ: Convolutional Networks on Graphs for Learning Molecular Fingerprints

情報処理学会 第81回全国大会に参加した際、熊谷将也さんの発表「疎構造学習およびグラフ畳み込みニューラルネットワークによる異常検知」のアイデアに影響を受け、論文「Convolutional Networks on Graphs for Learning Molecular Fingerprints」を読みました。

不慣れな化学系の内容も含まれているので、間違いや、読みの浅いところもあると思います。また、いくつか内容を端折ったり、論文の直訳っぽいところも見受けられると思いますが、ここに内容のメモを残します。

また、論文中で使われている参考文献の番号 ([4]とか[5]とか)はそのまま使っておりますので、気になる方はオリジナルの論文のほうをご覧ください。

arxiv.org

概要

この論文では、任意のサイズ・形をしたグラフを入力にすることができる、畳み込みニューラルネットワークを紹介しています。

この畳み込みニューラルネットワークは、circular fingerprintsをベースとした一般的な分子特性の抽出手法を一般化したものです。

グラフデータから得られたニューラルネットワークが出力する特徴量は、より解釈性が高く、より良い予測性能を持っています。

これによって、分子構造のグラフを畳み込みニューラルネットワークに入力し、その特徴ベクトルを得ることができるようになります。

既存技術とその問題

材料設計の分野では、分子の性質を予測するために、ニューラルネットワークを使って既知の分子データのサンプルを一般化し、新しい分子の性質を予測しているそうです。

この作業で問題となっていることは、判別器に入力する分子のサイズ・形にバリエーションがあることです。

現在の最新の技術では、既製品のfingerprintソフトウェアを使って、固定次元の特徴ベクトルを計算し、全結合のdeep neural networkか、他の機械学習手法へ入力します。 学習の間も、分子のfingerprintベクトルは固定値として扱われてます。

入力が固定長ですと、すべてのありうる部分構造をエンコードできるようにするために、fingerprintのサイズを極端に大きくしなくてはなりません。また、サイズが大きくなったせいで、その後の計算量も大きくなるでしょう。

この論文では、そのfingerprintソフトウェアの部分(分子からfingerprintベクトルの計算を行う部分)を、畳み込みニューラルネットワークに置き換えます。

提案手法の良い点

このneural fingerprintsは、固定のfingerprintsよりもいくつかの点でアドバンテージがあります。

予測性能

溶解度、薬の効能、有機薄膜太陽電池効率のそれぞれのデータセットにおいて、標準のfingerprintsの予測性能と同等かそれ以上の結果を示すことができました。

節約

既存のfingerprintソフトウェアは入力が固定長なので、様々な分子に対応するためには、fingerprints自体のサイズを極端に大きくなくてはいけませんでした。

しかし、提案手法は、関連性のある特徴のみをエンコードするように最適化でき、その後の計算などを軽減できます。

解釈性

標準のfingerprintsは、fragments (分子の特徴的な部分構造のこと)間の類似性という概念を持たず、それぞれのfragmentsを完全に分けてエンコードしていました。

一方で、neural graph fingerprintsのそれぞれの特徴は、類似しているが異なるmolecular fragmentsによってactivatedすることができ、特徴表現をより意味深いものにします。

(ちなみに、この後もactivatedという言葉がたくさん出てきます。特徴ベクトルはビットフラグのようになっており、ある特定の特徴が存在すれば、特定のビットフラグが立ちます。そのフラグが立ったことを、activatedと言っています。)

分子構造のグラフ

ここで入力として扱う分子構造のグラフは、頂点を原子、エッジを結合として表しています。

イメージがしやすいので、ここに論文のFigure 1の画像を引用します。

f:id:toyamaguchi:20190406150548p:plain
[Duvenaud15] Figure 1

既存技術であるcircular fingerprintsの手法も、提案手法であるneural graph fingerprintsの手法も、手法の流れを表す図は似ているようです。

ある原子は近傍と接続され影響を受け合い、その情報が上の層のレイヤーに流れ、それらのレイヤーが幾重にも積み重なっているという点で、両方共convolutionalな構造になっています。

そして、最終的にglobal pooling stepで、すべての原子からの特徴量が合わせられます。

現在の最新技術(既存技術)「Circular Fingerprints」

分子構造のfingerprintsの最新技術 (既存技術)は、extended-connectivity circular fingerprintsです。(ECFP) [21]

circular fingerprints [6]は、Morgan algorithm [17]の改良版で、atom-relabeling (原子の再ラベル付け)に対して不変の方法で、分子内にどの部分構造が存在するかをエンコードするように設計されています。

(直訳気味な説明でした。言い換えると、分子構造を入力した際に、グラフデータ内の原子の位置情報のようなものが少し変わっただけで、その部分構造の認識が変わってしまうようでは困ってしまいます。例え話ですが、90度回転したグラフ情報を入力しても同じ結果が得られる、という意味かと思われます。)

circular fingerprintsは、1つ前のレイヤーの近傍の連結された特徴に、固定長のハッシュ関数を適用することによって、それぞれのレイヤーの特徴を生成します。

これらのハッシュの結果は、先程触れた特徴ベクトル (ビットフラグの配列)のインデックスとして使われます。

このインデックスがactivatedな状態 (フラグが立ってる状態)は、分子内に特定の部分構造が存在していることを示しており、言い換えると、分子が特定の性質を持っていることを示唆しています。

インデックスによって表現された部分構造のサイズは、ネットワークの深さに依存しています。それゆえに、レイヤーの数は、fingerprintsの「半径」と呼ばれるそうです。

(「半径」と呼んでいるようですが、私はcircular fingerprintsの実物を見たことがないので、これが本当に円形 (circular)のようになっているのか知らないです。(笑))

新しいニューラルネットワークのFingerprintsを作る

circular fingerprintsのそれぞれ個別の操作を、differentiable analogに置き換えます。

(うまく訳せないですが、個別の操作を連続な数値と重み付けで処理を行うニューラルネットワーク構造に置き換える、という意味。)

Hashing

circular fingerprintsのそれぞれのレイヤーに適用されるハッシュ関数の目的は、それぞれの原子とその近傍の部分構造についての情報を組み合わせること。

これは、fragments上に微妙な変化があったときでも、きちんと異なる特徴量がactivatedになることを保証しています。

提案手法では、このハッシュ操作をシングルレイヤーのneural networkに交換します。

smooth functionというものを使うことで、分子構造の一部があまり重要でないような変化が起きたときに、activation (フラグビットの活性化)が似たようなものになることを可能にします。

Indexing

circular fingerprintsは、すべてのノードの特徴ベクトル (特徴ビットの集まり)を、最終的に分子全体の1つfingerprintへ組み合わせます。

提案手法では、このインデックス付けの作業をsoftmax operationを使用する。

これにより、それぞれの原子は一つのカテゴリーに属されるようになり、これらのすべてのラベルのベクトルを合わせたものが、最終的なfingerprintになります。

この操作は、標準的なconvolutional neural networkのpooling operationに似ています。

Canonicalization (正規化)

circular fingerprintsは、近傍における原子の順番によらず、同じものになります。

この不変性は、隣接原子の特徴と結合の特徴に従って、隣接原子を分類することで達成されています。

この正規化の代替手段は、summation (足し合わせ、総和)のような、permutation-invariant function (置換不変関数、順列を変えても不変な値を返す関数)を適用することです。

単純さと、スケーラビリティのために、提案手法ではsummationを選択しています。

置き換え作業を行う上でのcircular fingerprintsとneural graph fingerprintsの類似性

circular fingerprintsは、大きなランダムな重みを持ったneural graph fingerprintsの特別なケースだと解釈できるそうです。

これは、大きな入力の重みの限界において、tanh非線形性がステップ関数に近づくため、とのこと。

ステップ関数は連結されると単純なハッシュ関数を形成します。

また、大きな入力の重みの限界においては、softmax演算子は、one-hot-codedされたargmax演算子に近づき、これはインデックス付けの操作に似ているとのこと。

実験

大きなランダムな重みを持ったneural fingerprintsがcircular fingerprintsと同じように動作することを実証するために、2つの実験を行いました。

また、neural fingerprints単体を単体で見たとき、学習できた分子の特徴がどのようなものだったのか、予測性能はどうだったのかに触れていきます。

生成した特徴ベクトルの比較

最初に、circular fingerprintsで作った特徴ベクトル間の距離が、neural fingerprintで作った特徴ベクトル間の距離と似ているかどうかを調べました。

Figure 3 (左)は、circular vs. neural fingerprintsのscatterplot。

f:id:toyamaguchi:20190407110913p:plain
[Duvenaud15] Figure 3

fingerprintsの長さは2048で、solubility dataset (溶解度のデータセット) [4]から分子のペアを使って計算を行っています。

距離は、Tanimoto (a.k.a. Jaccard) similarityの指標の連続値の正規化手法を使って計測。

距離間には、r = 0.823の相関があったようです。

図の右側に点が並んでしまっているのは、binary ECFP fingerprintsが0になってしまったものがあったようです。 (この点においても、neural graph fingerprintsのほうはきちんと計算できている、というアドバンテージを主張できるかもしれません。)

予測性能の比較

2番目に、大きなランダムな重さを持つneural fingerprintsの予測性能 vs. circular fingerprintsの予測性能を調査しました。

先程のFigure 3 (右)に、solubility dataset上での平均予測性能を示しています。

これは、fingerprintsに線形回帰を使っています。

両方の手法の性能は似たようなカーブに従っています。

対照的に、小さいランダムな重みを持つneural fingerprintsの予測性能は、異なるカーブに沿っており、それは実質的に良い結果を示すものでした。

これは、ランダムな重みがあったとしても、neural fingerprintsのほうが比較的smooth activationが一般化性能を助けることを示唆しています。

Neural Graph Fingerprintsが学習できた特徴

Figure 4と5は、neural graph fingerprints単体で見たとき、最大限にactivateした最も予測性能の高い特徴のfragments (分子構造の特徴的な部分構造)を表しています。

Figure 4は、溶解度のデータセットを利用して得られたものです。

私は化学的な素養が無いのでピンときませんが(笑)、標準的な溶解度の指標となっている親水性R-OH基を含むfragmentsが最もactivateされたようです。

また、下段は、不溶性を強く示したものです。非極性復環構造というものがactivateされているそうです。

f:id:toyamaguchi:20190407113005p:plain
[Duvenaud15] Figure 4

Figure 5は、毒性のデータセットを利用して得られたものです。

f:id:toyamaguchi:20190407113024p:plain
[Duvenaud15] Figure 5

[27]は似たような可視化をしているようですが、半自動半マニュアルな方法だったようです。

毒性fragmentsによって発火するneuronを決定するために、彼らは毒性の部分構造を手作業でリスト上を調べ、最も関連しているものを1つ選択していたそうです。

対照的に、この論文では可視化も自動で生成したそうです。あらかじめ、検出しそうな毒性fragmentsをリストアップしておくようなこともしていないそうです。

予測性能

neural graph fingerprintsの予測性能と、標準設定をしたstate-of-the-artの予測性能を比較するために、いくつかの実験を行いました。

state-of-the-artは、circular fingerprintsを全結合neural networkに入力しました。

論文の中では、学習方法、neural networkの構造、ハイパーパラメータの最適化についても触れられていますが、少し端折ります。

データセット

予測性能比較のため、3種類のデータセットを用いたようです。

  • Solubility (溶解度)
    • [4]によって測定された、1144の分子の水溶解度。
  • Drag efficacy (薬の効能)
    • [5]によって測定された、マラリアを引き起こす寄生虫である熱帯マラリア原虫 (P. falciparum)の耐硫酸塩性株に対する、50%効果濃度に関するデータ。1000の分子。
  • Organic photovoltaic efficiency (有機薄膜太陽電池効率)
    • The Harvard Clean Energy Project [8]では有機化合物の太陽光発電効率の見積もりのために高価なDFT (Density Functional Theory: 分子動力学) simulationを使用している。このデータセットから20000の分子のサブセット。

予測精度

2つの条件下で、circular fingerprintsとneural graph fingerprintsのパフォーマンスの比較をしました。

最初の条件では、fingerprintsを入力として使うlinear layerによって予測をしました。

2つ目の条件では、fingerprintsを入力として使うone-hidden-layer neural networkによって予測をしました。

すべての実験において、neural graph fingerprintsは、circular fingerprintsの精度と同じか、それ以上でした。

fingerprintsを入力として使うneural networkは、linear layerを使ったときよりも精度が上がりました。

f:id:toyamaguchi:20190407115100p:plain
[Duvenaud15] Table 1

実装

Theanoのような自動微分のパッケージは、自動で勾配を提供することによって、著しく開発時間が向上しますが、制御構造やインデックス付けに制限がありました。

比較的複雑なコントロールフローや、アルゴリズムの改良版を実装するためにインデックス付けが必要だったため、よりフレキシブルなPythonの自動微分パッケージである「Autograd」を使いました。

このパッケージはNumpyのコードをハンドルし、while loop、branches、indexingを含んだコードを微分できるそうです。

neural fingerprintsを計算するコードや可視化するコードは、次の場所にあります。

github.com

制限事項

計算コスト

neural fingerprintsは原子数とネットワークの深さにおいて、circular fingerprintsと同じ漸近的複雑度を持っています。

しかし、各ステップにおける特徴ベクトルの変換をするのに必要な行列乗算があるため、追加の項を持っています。 (つまり、余計に計算する箇所がある、ということ。)

深さRのneural fingerprintで、各レイヤーで特徴数Fを持つ、molecular convolutional netを使って、N個の原子を持つ分子の長さLのfingerprintを計算するのに、O(RNFL + RNF2)のコストがかかります。

実際には、circular fingerprintsの上位にあるneural networksを学習するのに、普通数分かかる。fingerprint自体の学習と上位のneural networksを両方学習するのに、より大きなデータセットを使うと1時間程度かかります。

各レイヤーでの計算における制限

ネットワークのあるレイヤーから次へ進む関数をどれほど複雑にするべきか。この論文では、とても単純で実現可能性が高いneural networkのシングルレイヤーを選びました。

しかし、これを別なものに置き換えることで、情報のやりとりを効果的にでき有益だろう、と言っています。

グラフ全体への情報伝達における制限

この論文で開発したlocal message-passingアーキテクチャは、グラフのサイズを縮小することができます。

しかし、グラフ全体に情報を伝達する能力は、ネットワークの深さによって制限されます。 (原子とその近傍が影響を与えあって、徐々にレイヤーを上がって行くため、全体にその影響が渡るまでに数レイヤーかかります。)

この論文で使用した小さな有機分子を表すような小さなグラフにとっては問題ないですが、最悪の場合、サイズNのグラフを区別するために、深さN/2のネットワークが必要になります。

この問題を避けるために、[2]はグラフ部分構造の階層的クラスタリングを提案しています。木構造ネットワークでlog(N)レイヤーだけ使用して、グラフ全体の構造を調べることができます。

しかし、これは分子をパースするために学習が必要でした。

自然言語処理からの技術 [25]をこのドメインに適用することで、良い結果が期待できるかもしれません。

立体異性体を区別できない制限

エナンチオマー (鏡像異性体)(分子の鏡像)や、シス/トランス異性体 (二重結合周りの回転)を含む立体異性体を区別するために、特別な処理が必要となります。

たいていのcircular fingerprint実装は、これらの区別を行うオプションを持っています。

neural fingerprintsは立体異性体に対してsensitiveになるよう拡張できるが、これはfuture workとして引き続き取り組みます。

まとめ

このように、分子構造の特徴抽出の作業がニューラルネットワークによって置き換えることができました。

この新しいfingerprintsの性能や、解釈性の向上をデモンストレーションすることができました。

すでに、音声認識、画像認識、自然言語処理などの分野では、手作業で作られた特徴量からdata-drivenな特徴量に置き換わっております。

バーチャルスクリーニング (コンピュータを使った化学構造を評価する技術の一つ)、材料設計、薬の開発などに適用されていくことも、自然な流れなのでしょう。

雑感

論文の内容に関する雑感。

  • 分子構造・性質が似ている場合には同じ特徴フラグがactivateしてほしい。分子構造にあまり重要でない変化があった場合にも、同じような特徴フラグがactivateしてほしい。一方で立体異性体のような分子のそっくりさんを別物と判断することが、なかなか難しそう。
  • 「グラフ全体への情報伝達における制限」は、扱うグラフの大きさに依存してくるため、要注意。

論文メモを残すという作業に関する雑感。

  • ぼんやりわかったことを、きちんと説明するのが難しかったです。(笑)
  • 化学の知識はほぼ無いに等しいですが、取り急ぎ提案手法の貢献が理解できたので良し。
  • 「differentiable fingerprints」という言葉は、ニューラルネットワークを適用した、連続な数値と重み付けの足し合わせによって得られるfingerprintsなわけですが、「微分可能な」fingerprintsと訳すのは違う感じがして、良い日本語が思いつかない。もっと他の論文を読めば、何か答えが見つかるかも。

参考文献

  • 熊谷将也, 松本亮介, 侵入検知システムのためのグラフ構造に基づいた機械学習および可視化, 情報処理学会研究報告インターネットと運用技術(IOT), No.2019-IOT-44, Vol.52, pp.1-8, 2018年3月.
  • D. Duvenaud, D. Maclaurin, J. Aguilera-Iparraguirre, R. Gomez-Bombarelli, T. Hirzel, A. Aspuru-Guzik, R. P. Adams: Convolutional Networks on Graphs for Learning Molecular Fingerprints, NIPS'15 Proceedings of the 28th International Conference on Neural Information Processing Systems Vol. 2, pp.2224-2232 (2015).