post Image
医薬品設計とニューラルネットワーク

Nextremer Advent Calendar 2016の14日目の記事です。

医薬品設計含めケモインフォマティクスの分野でニューラルネットワークがどのように活用されているのか興味があり調べてみました。

簡単に医薬品設計について説明してから、これとニューラルネットワークの最近の動向について記述します。また最後に今回興味を持つきっかけとなった、Variational Auto Encoderを元にして新しい化学構造を生成する生成モデルベースのアプローチについても紹介したいと思います。

自分は有機化学を少しかじった程度なので、誤り等あったらご指摘お願いします。


医薬品設計とは

新しい薬を発見することが目標な創薬とは異なり、医薬品設計では特定の化学反応を理解してそのタスクに特化した分子を作り上げることを目標とします1 2

例えばある蛋白質がある病気において重要な役割を果たすとわかった時、これを「ターゲット」と呼びます。炎症を引き起こす蛋白質や、腫瘍の成長を促進する蛋白質、ウイルスが人の細胞に感染するときに関与する蛋白質などが医薬品ターゲットの例となります。医薬品設計の目標はこれらターゲットと強く相互作用する分子―リガンドと呼ぶ―を作って、ターゲットの影響を低下(または増加)することになります。ターゲットとリガンドの関係は鍵と鍵穴の関係で捉えることができます―たくさんある鍵(リガンド)の中で目的の鍵穴(ターゲット)に合う鍵はほんの少ししかありません2。(下の画像はIntroducing AtomNet – Drug design with convolutional neural networksから引用させてもらっています)

Introducing AtomNet – Drug design with convolutional neural networks

バーチャルスクリーニング

医薬品開発に用いられるコンピュータ技術の1つで、医薬品ターゲットと最も良く結合する化学構造(リガンド)を特定するために、コンピュータを用いて高速に多数の構造を評価する手法のことを指します3

リガンド法

鍵と鍵穴の例えを踏まえると、リガンド法は鍵思考の技術と捉えることができます。これはターゲットに結合することが既にわかっているたくさんのリガンド(鍵)から、より良い(目的に合った)リガンドを予測します2

構造法

こちらは鍵穴思考の技術と捉えることができます。鍵穴であるターゲットの構造を考慮してリガンドを予測します2

医薬品設計とニューラルネットワーク

ケモインフォマティクスの分野では定量的構造活性相関(QSAR)のタスクにおいて昨今ディープニューラルネットワークが適用されていて4、Dahl et al., 20145の手法はMerckの主催するKaggleのコンペティション においてベースラインに比べ約15%のaccuracyの向上を達成しています5

医薬品設計の分野でもリガンド法、構造法共にニューラルネットワークを用いたアプローチが研究されています6

リガンド法とニューラルネットワーク

B Ramsundar et al., 20157ではリガンド法に基づきMultitask Networkを用いて医薬品設計のタスクに対するネットワークのパフォーマンスを考察しています。ここでいうMultitaskとは、出力層に複数の異なる分析向けの分類器を設ける構造のことです。本論文ではMultitaskにすることでなぜパフォーマンスが向上するかについて考察されています。

通常インプットはフィンガープリントという、各ビットが各々化学構造の部分構造を表しているビット列を用います8。上記論文ではRDKitを利用して得られるECFP4というフィンガープリントを用いています。これに対してDuvenaud et al., 20159はこのフィンガープリント自体もニューラルネットワークで学習するようなアーキテクチャを提案しています。

構造法とニューラルネットワーク

リガンド法では事前にいくつかのリガンドが手に入っていることが前提となります。しかし新規の医薬品ターゲットに対しては既知のリガンドがほとんど存在しないことがあります。これに対して構造法ではそういった制約はありませんが、従来構造法は精度が低いという問題を抱えていました2。Wallach et al., 201510では畳み込みニューラルを用いた構造法を提案しており、これが従来法を大きく上回ったと報告しています。また得られたモデルの畳み込みニューラルネットワークにおけるフィルターを視覚化したところ、フィルターが化合物の官能基を学習できていることがわかったとしています。以下の画像では得られたフィルターがスルホニル基を学習できていることを表しています。

スクリーンショット 2016-12-13 21.38.25.png

生成モデルを用いた医薬品設計へのアプローチ

最後に紹介するGómez-Bombarelli et al., 201611はこれまでのものと若干毛色が異なり、Variational Auto Encoder12にヒントを得た生成モデルが提案されています。

入力には化学構造を英数字で文字列化するSMILES記法を用いています。再帰型ネットワーク(RNN)で構成されるencoderはこれを潜在空間にマップし、こちらもRNNであるdecoderはこれをSMILES記法に戻すよう学習されます。さらに所望の属性を備えた化合物を得られるように、潜在空間の分子の表現を元にその分子の属性を予測するよう追加のモデルを学習します。

これにより例えば以下に示すように潜在区間上でアスピリン(2-アセチルオキシ安息香酸)と近い点をdecodeしてみると類似の化学構造式が得られたとしています。

スクリーンショット 2016-12-13 21.43.50.png

原論文ではこの手法を改善することができれば、人手に依る属性値付きの膨大なライブラリなしに、所望の化合物を潜在空間から探索できる可能性があると示唆しています。

これは個人的な感想でしかも原論文では改善すべき点とされていますが、1次元のテキストで構成されたSMILES記法のみでも化学的特性を考慮した新しい化合物を検索できる可能性を示している点で、(あと、本当に個人的な感想ですが論文がひどく質が良くて読んでいてとても楽しいという点も含めて、あ、後、SMILES記法の有益性が暗に示唆されている点も含めて)非常に有益な結果だと思っています。


今回前述のGómez-Bombarelli, 201611に感銘を受けて、ケモインフォマティクス界隈とニューラルネットワークを調べてみて、この分野にとても興味をもててよかったと思っています。弊社は基本的に対話〜自然言語処理を得意とする会社であり、そこに属する自分も平時は一日の2/3をそこに費やしていますが(残りはアニメ見てるか寝てる)、化学系は自然言語処理に比べてコーパス(…とは化学系では言わないのかな…)元いデータが充実している点も含めて魅力的なので、趣味の時間使って色々やってみたいなぁと思いました。VAEいけるならGANは?もっと強化学習的アプローチは?とか。落ちこぼれだったくせにマクマリー読み返そうかと思ったら、表紙が様変わりしててちょっとびっくりしました。

というところで、最後まで読んでくださってありがとうございます(_ _)


  1. 「医薬品設計」(2016年6月15日 (水) 06:16 UTCの版)『ウィキペディア日本語版』 

  2. Introducing AtomNet – Drug design with convolutional neural networks 

  3. 「バーチャルスクリーニング」(2015年11月24日 (火) 15:15 UTCの版)『ウィキペディア日本語版』 

  4. Izhar Wallach, Michael Dzamba, and Abraham Heifets. Atomnet: A deep convolutional neural network for bioactivity prediction in structurebased drug discovery. arXiv preprint arXiv:1510.02855, 2015. 

  5. G. E. Dahl, N. Jaitly, and R. Salakhutdinov, “Multi-task neural networks for QSAR predictions,” CoRR, vol. abs/1406.1231, 2014. 

  6. Gonczarek, Adam, et al. “Learning Deep Architectures for Interaction Prediction in Structure-based Virtual Screening.” arXiv preprint arXiv:1610.07187 (2016). 

  7. Ramsundar, Bharath, et al. “Massively multitask networks for drug discovery.” arXiv preprint arXiv:1502.02072 (2015). 

  8. Pythonでケムインフォ:Fingerprint 

  9. Duvenaud, David K., et al. “Convolutional networks on graphs for learning molecular fingerprints.” Advances in Neural Information Processing Systems. 2015. 

  10. Wallach, Izhar, Michael Dzamba, and Abraham Heifets. “AtomNet: A Deep Convolutional Neural Network for Bioactivity Prediction in Structure-based Drug Discovery.” arXiv preprint arXiv:1510.02855 (2015). 

  11. Gómez-Bombarelli, Rafael, et al. “Automatic chemical design using a data-driven continuous representation of molecules.” arXiv preprint arXiv:1610.02415 (2016). 

  12. Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013). 


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。