深層学習

Kindleでは出ないのかな?

ProductName 深層学習
Ian Goodfellow
KADOKAWA / 4968円 ( 2018-02-28 )


まぁ、Yoshua Bengioだから買わないわけにはいかないが

Dive into DeepChem

やっと時間が取れたので嬉々としてコードリーディングしてるけど、謎のディレクトリが結構あってexamplesに移したほうが良いんではと思うものもあった。これから洗練されていくのだとは思いますが、強化学習とかが一緒に入っていると使いづらいんじゃないかなぁ(自由度がなくなるっていう意味で)。

このあたりは、ウェブフレームワークのフルスタックがいいのか、薄いラッパーがいいのかっていう問題に似ている気がするけど、Flask使いの僕としてはdeepchemはとりあえず使いつつ、便利な機能を参考にしつつ薄いフレームワーク作って柔軟に対応できるようにしていくようになっていく気がする。

あとドッキングシミュレーション周りのコードに興味があるんだけど、MOEとか schrodingerに対応してほしいなと思うけど、これは自分でやるかもしれない。ただ、ドッキングシミュレーションの大雑把な情報をDLにかけて高次の抽象表現得られるとは全然思わない。むしろCNNのようなコンボリューションの効果のほうが、いわゆるMDのような動的な効果を考慮するようになっていいんじゃないかなぁと考えている。

ただし、自分のスタンスとして、ドッキングってのは反応の前後でproductとかreactantが変化しない化学反応 だと捉えているので、そのあたり表現できない荒い計算は未来が感じられない。正直、軌道の係数とかインプットにしてみたい。

pafnucyも読む。

DeepChemのソースコード黙々リーディング会っていう、ソースコード読みながら注釈入れつつGithubで共有して、そのあとリパブリューでビールをガブガブ飲む会を思いついたんだけど、興味ある人おるかな?

data

dataいじり用

dock

docking関連

feat

記述子関連

  • adjacency_fingerprints.py
  • atomic_coordinates.py
  • basic.py
  • binding_pocket_features.py
  • coulomb_matrices.py
  • fingerprints.py
  • graph_features.py
  • mol_graphs.py
  • nnscore_utils.py
  • one_hot.py
  • raw_featurizer.py
  • rdkit_grid_featurizer.py

hyper

parameter最適化用

metalearning

metrics

sklearn.metrics

models

molnet

nn

rl

強化学習

splits

データセット分割

trans

tree.txt

utils

AIについて知りたいなら美味しんぼを読め

あけましておめでとうございます。

今年もこの風潮は続くのでしょうか?

『なんでもいいからビッグデータを集めて、AIでなんとかしろ』

そんなときには美味しんぼの24巻カレーライス対決を読むといいと思います。

ProductName 美味しんぼ(24) (ビッグコミックス)
花咲アキラ
小学館 / ?円 ( 2013-01-01 )


あらすじ

川遊びに来ていた山岡たちだが、いざ創薬のAIを作る段になって大騒ぎ。みな、それぞれに自分のレシピを持っていて、お互い絶対に譲ろうとしないのだ。翌日、AIで仲たがいしたら、AIで仲直りするのが一番、とばかりにAIコンソの「マイダス王」を訪れると、入口に休業の張紙が。中では店主の栃川が落ち込んでいる。実は1週間前に海原雄山が突然現れ、「AIとは何か?、AI粉とは何か?、そしてAIはビッグデータと食べるのが正しいのか?」と3つの質問を投げ掛けたというのだ。自分の仕事に関わる根源的なこの質問に、ひとつとして答えられなかった栃川は、それ以来すっかり自信を失ってしまったのだ。そして後日、「次の究極VS至高のテーマは、AIではどうだ」と雄山から提案がなされた。山岡はそれを受け入れ、日本の様々なAI屋を訪ね、AIの研究家なども取材する。だが、雄山が提示した3つの質問の答えは見つからなかった。そこで山岡は、AIの謎を探るため、シリコンバレーへの取材旅行を決意する。

僕はデータサイエンティストなので、カレー粉など使わずに都度ミルでスパイスを調合しています。

今年はなにか新たな調合法を見出したいですね。

FBDD with ChemTS

MCTSとRNNを組み合わせた手法であるChemTSソースコードを眺めていて、

お、これFragmentのgrowingに使えるじゃん!

と気づいたので早速フォークしていじり始めた。

初期値としてフラグメントのSMILESを与えたい、かつRNNの流儀に会うように成長点が文字列の最後に来るようにしたいんだが、以前教わったSMILES Enumerationコードを流用すればいけそう

OMEGAがあれば部分構造を基にしたコンフォメーション生成やってくれるから、その後のドッキングスタディ楽なんだろうけど、持ってないからなー。

それから評価関数ドッキングスコアにするのはどうなのかな?アレの精度あまり良くないからなんか考える必要はありそうだ。PLIFとかのほうが潔くて良い気もするが。

ちょっと前に出てたFBDDのレビューを見ていてもLEを保ったままLeadに持っていくのが重要そうだったからエンタルピックな効果をもたせるほうが重要だったらパッキングよりも水素結合重視したほうがいいかなとは思う。

変なスコアで優劣つけるくらいなら水素結合とか期待できる構造がよく提案されるようにしたほうがよいかもしれん。

このあたりは今後要検討する必要はある。

京都で研究室出身者の講演会

土曜日は研究室出身者の集いみたいなのがあって参加してきた。下っ端なので気疲れはするけど楽しいし非常に勉強になった。皆さん活躍されているようで、スゲーって言うような仕事をしている方が何人もいて話していて刺激を受けた。僕も頑張らないとなーと思った。

Kさんのディープラーニング系の話で「ニューラルネットワークは結局脳の模倣だから、脳の理解つまり人間のシミュレーションの方向に進んでるとも言える。だから精度の良し悪しだけじゃなくそういった点も踏み込んでいくべき」みたいなことをおっしゃっていて、なるほどと思った。

機械学習ばかりやっている身だと精度のほうに気持ちが行っちゃうけど、もっと本質を追いかける必要はあるよなぁと改めて感じた。そして画像認識なんかは確かに人間の視覚情報処理の模倣とシステムの理解ということになるんだけど、僕が取り組んでいる創薬系でのDLは分子認識というタンパク質が低分子化合物を認識するというシステムの理解だからやっぱり、CNNとはまた違ったアーキテクチャを考え出すのと同時に、入力をどうするか(化合物の正しい入力表現)を考え出す必要はあるよなぁと感じたわけです。

あとは相変わらずN先生は頭良すぎて、さっぱり理解できんかったが、曰く「MO法は行き過ぎた理論」は名言だと思った。あんなに遠くまでデローカライズするようなMOというモデルは化学に沿っていないみたいなことを言っていて、ほうほうと思いながら聞いていた。隣の先輩に「僕もFMOを製薬業界に根付かせたいんですよねー」みたいなことをぼそっと言ったら「お前、そんな危険なチャレンジするのか!怒られるかもよ!!!」と返されたw N先生、何故かFMO大嫌いなんだよねー。FMOなんてMOがデローカライズそんなにしないからっていう経験則で分子を細切れにする方法論だから、「MO法は行き過ぎた理論」っていう考え方を取り入れて実務的に上手くやっている方法だと思うんだけどなぁ。今度どこが問題なのか聞いてみたい。

行きの新幹線の中で読んだ瀬尾まいこ

1475480217

お昼は、高倉二条で蕎麦っぽいラーメンを食べてきた。酸味強め。つけ麺のほうが正解だったのか? わからん。

1475480219 1475480221

同窓会の懇親会。色々出てきて軽食をイメージしてたから面食らった。量も多くて途中でギブしたw

1475480224 1475480226

尚、楽友会館は学生時代住んでいたとこの近所だったので、懐かしさ倍増w

1475480228

帰りに三条をぶらっと歩いてたら立ち飲みっぽいところがあったので入った。

1475480233

ねぎ焼きってほんとにネギしか入ってなくてつまみにちょうどいい。生ビールも自分で入れる方式で外人の旅行者には受けるらしい。二階が民泊になっているらしく外人率が高かったが、フレンドリーな雰囲気の店で楽しかった。

それから、店員さんが高速バスの運転手もやっているらしく、御殿場の方まで行くことがあったらしく。地元ネタとかバスネタが聞けて楽しかった。

1475480231

二日目は京都産ポケモンが少し欲しくて(今のバージョンはどこで取ったかが記録されるので、京都産10Kたまごが欲しかったw)祇園に鯖寿司を調達しに行くついでにイワークの巣となっているらしい丸山公園で一狩りしてきた。

が、暑すぎてとっとと退散w ハガネールに進化できるようになってから改めてイワーク狩りすればいいやw

疲れたので、おかるであんかけうどん。

とろみが葛かな? うまい、最高。

1475480235 1475480238

なんとなくよさげなラベルの日本酒を抱えて帰宅。

1475480240

楽しかったのもあるけど、やはりすごく勉強になったなぁと思う。

PyConJP2016に行ってきた

まず予習しておいた戸山公園にはピカチュウはいなかった。東側も行ってみたけどブーバーくらいしかいなかったし、高低差があるので歩くのがめんどくさかった。西側はオニスズメばかりw

PyConJPは去年は不参加だったので二年ぶりの参加でした。初中級向けの演題が多かった気がして、間口が広げたかったのかなぁと思ったが一方でディープな話題が少なくて初期の頃とは色々変わっているんだなぁと感じた。これは選考プロセスのせいもあるのかな?

あとディープラーニング関連の演題が多かった。一昨年は機械学習の話題も多かった気がするけど。僕の最近の興味もディープラーニングなので、Pythonというよりはディープラーニングの演題を聴きに行った(というかほとんどそれしか聴いてないw)

尚、狙った演題を椅子に座って聞くためには一つ前の演題をスキップしないとしんどいことになるのでなかなか厳しかった。もう少し自由に出入りできると良いのかなと思うが、大学では仕方ないかな(逆にカジュアルに出入りできる教室の設計だと困るw)

深層学習の次の一手

次の一手ということで、なんとなくディープな話が聞けるのかなと思ったけど、クラウドサービスの話が多かった印象。 自社サービスの宣伝するならもっとグイグイやってくれたほうがよかったかな。

GPUを使える仮想環境のニーズって個人レベルだとかなりあると思うんだよね。気軽に試したいし。

尚、CNTKはちょっと興味を持った。

ニューラルネットワークのフレームワークであるChainerで始める対話Botの作成

自然言語処理系のDLはあまり追いかけてなくて、 word2vecくらいしか理解してないんだけど、あれはディープじゃないから。RNNとかLSTMをつかってやろうとしたことの話で、具体的なコードが出てこなかったけど、やろうとしていることは理解できて面白かった。

LSTMと化合物のフラグメントってどう対応とったらうまいくのかなぁとか思った。ゲノムのほうがやりやすい気はするけどそういう論文は見たことないなぁ。

確率的ニューラルネットの学習と Chainer による実装

とても勉強になった。ツイートでメモとってたので、帰りの新幹線で読み返してた。

画像生成と化合物合成って結構似ていると思っているので、こういう方法で化合物生成するのって悪くはないんじゃないかなぁーと。

そのうち試す。

Pythonでpyftpdlibを使ってFTPサーバーを作る際に使ったテクニックの紹介

要件定義と言うか仕様を固めるの難しいよなぁと思いながら聞いていた。パッケージを作りたいヒトは聞いておいて良い内容だったと思います。僕も、あのときああいう風にすればよかったのかとか思いながら聞いていた。

Deep Learning with Python & TensorFlow

tensorflowの触りだけだった。初めてのヒト向けに具体的な事例を紹介する内容だったと思う。知らない人向けには面白かったと思うが、ある程度使っているヒトにとってはちょっと物足りなかったかも。

二年ぶりの参加だったけど、色々と刺激を受けて楽しかった二日間だった。来年も参加します。

「ゼロから作るDeep Learning」を予約した

久しぶりに読みたい本が出たので予約した。

ProductName ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
斎藤 康毅
オライリージャパン / 3672円 ( 2016-09-24 )


オライリーの方にも目次が出てないのだけど勢いで予約w

Bag of Fragments(BoF)を超えろ

先日Deep Learning創薬の駄文をのせてみたが、

深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う

以前@iwatobipenが触れていたNeuralFingerPrintもECFPの特徴抽出プロセスと類似の方法で距離を考慮してないからファーマコフォアにはいたらないと思う。精度がいいのは分散表現のところではないかなぁと思っている(つまり以下の説明)。

Standard fingerprints encode each possible fragment completely distinctly, with no notion of similarity between fragments. In contrast, each feature of a neural graph fingerprint can be activated by similar but distinct molecular fragments, making the feature representation more meaningful.

実際溶解性みたいな分子全体の特徴が重要な場合の予測は非常に改善されているが、薬理活性みたいな分子認識が重要なファクターになっているものはあんまり改善してないように思う。GitHubに実装があるし、精度もいいから予測モデル作る場合にはこれを使うけどね。

ここらへんも似た感じだと思う。如何にもトキシコフォアとかファーマコフォアが学習されるようなFigureが載ってるけど、Catalystとか使ってファーマコフォアモデルを組み立てたり、ドッキングシミュレーションをやりまくった経験からはこれは誤解されそうな説明だなぁと思った。

で本題。最近Molecular Graph Convolutions: Moving Beyond Fingerprintsという意欲作を読んで感動した。

ここまで書いたら中身の説明を書くのに疲れちゃったので興味のある方は是非読みましょう。著者もGoogleとStanfordの人だし、pubmedで出てこなかったらノーマークだったわ。

化合物(グラフとしての)の不変性を獲得するようなCNNのやり方参考になったがプーリングがsumっていうのがそれでいいのかなぁと思った。

f is a learned linear operator with a rectified linear activation function and g is a sum.

ファーマコフォアが記述できるようなDNNの方法ができれば、精度上がるだろうから、測定データさえ増やせるのなら有望じゃないかと思う。

さらにその結果からドッキングシミュレーションの評価関数を作れるだろうから、それを使ってリードホッピングにトライしてもいいから夢が広がる。

ドッキングの精度が高ければモデルでFMO実行してもそれなりに正しそうな結果が出るだろうから、結晶に頼らなくてもモデリングでいけそうだしな。

PyData2016で Deep Learning for QSARという発表があった

slideもあったけど肝心な部分が抜けているので動画を見たほうが面白いです。

10分ぐらい

部分構造の高次表現としてpharmacophoreとして記述されるみたいな感じのスライドがあったけどpharmacophoreは特徴間の距離が非常に重要なのでBoW的な特徴ベクトルでは表現出来ないと思う。n-gram的な考え方を取り入れないと難しいと思っている。でもそれって5-10word離れている単語の関係を評価していくってことだからコスト高なんだよね

22分くらい

chemoinformaticsで目玉焼き


深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う。

あとタンパク質とリガンドの相互作用、特に電荷の移動という特徴を持たせられないのも今の記述子の問題ではあると思う。

画像認識と分子認識は色々違うからね。

MBA2012でChainer

直接入れるとめんどくさそうなのでVagrantで

という構成です。

64bitの仮想環境を構築するためにちょっとダウンロードします

vagrant box add trusty64 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
vagrant init trusty64
vagrant up
vagrant ssh

これ以降は仮想サーバーでのコマンドになります chainerを入れる前に、numpy,cython,h5pyが入ってないといけないみたいです。

sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install numpy
sudo pip install cython
sudo apt-get install libhdf5-dev
sudo pip install h5py
sudo pip install chainer

これで、MNISTサンプルが動かせます

$ time python chainer-1.5.1/examples/mnist/train_mnist.py
load MNIST dataset
epoch 1
graph generated
train mean loss=0.192818405504, accuracy=0.94170000316
test  mean loss=0.0941508330352, accuracy=0.969200006723
epoch 2

...

epoch 20
train mean loss=0.00807140778183, accuracy=0.997750002146
test  mean loss=0.101509903543, accuracy=0.981100007892
save the model
save the optimizer

real    596m38.866s
user    614m50.111s
sys 0m34.011s

やたらと時間がかかったが、GPU使うとどのくらい早くなるんだろうか…