-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2021] Highly accurate protein structure prediction with AlphaFold [paper-reading] #60
Comments
DeepMind のブログ https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology が出てからというものそのモデルの詳細が気になっていた AlphaFold2 (出た当初は AlphaFold2 と読んでいたが、ナンバリングせずに新しいものを AlphaFold と呼ぶようにしているみたい。それに合わせて以降は AlphaFold と書く) だが、遂に論文とコードが公開されたので読んでみることにした。 |
Supplementary Information は 62 ページあり、その密度も高い。読み解くには機械学習だけの知識では不十分で biology の知識も必要になる。 これはちょっと全部読んで論文メモを残すのは大変すぎるので、biology に関する議論はほぼスキップしつつ、モデリングで自分が興味を惹かれた部分のみに着目して書いていくことにする。 |
生物の仕組みの理解や創薬などにおいてタンパク質の構造解析は重要。 物理的な相互作用(熱力学や統計力学)から構造を解き明かすのは理論的には興味深いが、複雑な系なので正確な構造解析が困難というのは想像に難くない。
このような蓄積はあるが、実験で似たような配列のものが同定されていない状況では、どちらの方法を用いても殆どのケースで実験で同定するものより遥かに劣る精度になるという状況だった。 実験に近い精度で構造を同定できる計算機手法を発見しました、というのが AlphaFold になる。 |
モデルの中身に入る前に性能を先に見ておく。 そもそもこの評価指標は何かというと、タンパク質は残基の空間配位が重要で、その残基の空間配位を root-mean-square を計算しているものと思われる。RMSD_{95} の 95 は 95% の残基のカバレッジということらしく、恐らく主要なところを捉えるのが重要で、側鎖でそこだけびよーんと飛び出してるやつは外れ値的な意味もあるので含めずに計算してるのではないかという気がする。 全部の原子を考慮したものも計算していて、その場合 AlphaFold が 1.5 Å RMSD で 2 位が 3.5 Å RMSD であり、やはり AlphaFold の性能が際立ったいる。 一番左が CASP の結果。エラーバーは 10,000 の bootstrap sample を使って検証した時の confidence interval ということだが、この bootstrap sample の作り方はよく知らない。全体の構造はあまり変えずに一部のアミノ酸配列だけ置き換えた、系統が同じタンパク質を引っ張ってきているのだろうか? PDB になければそもそも教師データがないので都合よく見つかるのか?という気もするが、誰か知ってる人がいたら教えてもらおう。 左から二番目はあるタンパク質のドメインに対する結果で、モデル予測が実験結果をよく説明していることが理解できる。 左から三番目は側鎖についてもよくマッチしていることを示している。 一番右は 2180 個もの残基の巨大なタンパク質だが、これくらいの数になっても精度よく当てられているということですごいなぁとなる。 |
モデルの全体像は以下。 問題設定としては 3D 構造が未知のタンパク質のアミノ酸配列(これは一次元情報)を input にして、3D の構造を output にするモデルを構築したいというものとなる。ポイントだけかいつまんで書くと以下のようになる。
|
情報量が多すぎて全部を書いていくのは無理があるので、Evoformer や Structure module で何をしているのか、というところを中心に見ていくことにする。タンパク質の知識とかがないので AlphaFold を理解するのに必要な知識がないので、入力特徴量の細かい話とかモデリングの際に使っているドメイン知識などはいったん諦める。 ドメイン知識をふんだんに使うというのも間違いなく AlphaFold の根幹を成す部分の一つなので、こういうのは詳しい人に聞いてみたいなという気持ちはある。 |
Evoformer や Structure module の説明に入る前に、全体の inference の流れについても supplementary information のものを貼っておく。 ざっくりいうと以下。これは特徴量やモデルの詳細を置いておいて、recycling がどのように取り込まれているかが理解しやすい。
これだけ見ても理解できないところは多いが、入力特徴量の諸々を無視すれば、Evoformer と Structure Module がモデリングの肝であることが分かるので、それを以降見ていこう。 |
Evoformer から。 まずは大雑把な全体像は以下。
MSA の方はモデリング的にまあ新しい観点があるわけでない(どうやって pair representation の情報を bias として足し込むかとかのテクニカルな詳細はあるけど)ので、pair representation の triangle 云々の方を見ていく。 |
まず、残基の pair representation を配列で表現している部分は、残基を node でその間の関係性(これが残基間の特徴量となり、配列の値となる)を edge とする有効グラフとして解釈することができる。 前述のように、残基のペアの特徴量を考えるときに、それらとは別の残基を考えて、三角関係を考慮してモデリングをする。これはペアだけで扱う場合では得られない相互作用を考慮できる。(もちろんもっと複雑な相互作用を考えることはできるが、それはモデルがより複雑になることを意味するので、始めるならまずは三体の関係性ということだろう) 注目するのは $ i \rightarrow j $ の特徴量をどう更新するかという点で、大きく分けて triangle update と triangle self-attention というものを構築している。triangle update に関しては有効グラフなので outgoing/ingoing の二つの場合があり、triangle self-attention の場合は始点 $ i $ に注目するケースと終点 $ j $ に注目するケースがある。どちらのケースも $ k $ という第三の node との関係性の情報を使って更新していることが見て取れる。 まずは triangle update の方から。これは正式には triangular multiplicative update と呼んでいる。 $ i \rightarrow j $ の情報を更新したく、この entry の値を gate として扱いつつ、$ i $ と $ k $ の関係性と $ j $ と $ k $ の関係性(横に長い赤枠の部分)を足し込んでいる。 次に triangular self-attention について。 始点 i に関する edge を更新することを考える($ i \rightarrow j $ を含む $ i \rightarrow $ node のことなので行方向の赤枠が update したい部分)。 supplementary information が実に丁寧に情報を残してくれているので、ちゃんと読めば理解はたやすくできる。 一つ一つを追っていけば全く難しいところはなく、Evoformer の pair representation 部分のモデリングに関しては理解したと言えるレベルまで来た。MSA の方は技術的には axial attention が肝で、MSA と pair representation の特徴量をどう混ぜるかの部分に関しても shape をどう合わせるかで注意は必要だが単に bias として足したり外積をとったりするだけで難しいことはないので、割愛。 |
続いて Structure module の方を見る。 全体の疑似コードは以下。長い。 疑似コードでは学習のことも考慮してるので正解データも含めて loss 計算なども書いているが、一旦それ(と確信度の計算部分)を忘れると大雑把には以下のような手順になっている。
上述の手順についてもう少し詳しく見ていく。 |
まずは Invariant Point Attention (IPA) に関して。 疑似コードで書くと以下のようになる。 よく分からない単語や量がいくつか出てきているが、$ T_i $ が絡む部分は先ほど述べたような構造になっていて、この一連の計算は global なユークリッド変換の元で不変であることが分かる。 概念図は以下のようになる。 local frame の部分が ちょっとめんどくさくなってきたので各計算についてどういう意味かを詳細に記述するのは省くが、pair representation と single representaion と 3D の距離除法などを合わせた特徴量を作った上で、attention を使って特徴量を更新していくというものになっている。 |
次は Backbone update だが、これは特徴を入力にして、3 次元の回転情報と並進を出力とする Linear layer を使うというだけである。 |
次は computeAlAtomCoordinates のところ。 お気持ちとしては、IPA から抽出した特徴量に変換を加えて対象とする残基のねじれ角の情報を取得 → 残基の種類とねじれの自由度でパラメトライズされる ideal literature atom coordinate というもので各原子の相対的配位を獲得(ここがどうやってるか全然追えてない。rigid group という決まったパターンで表現できるものを使っているが、まあ全然分からん) → ねじれ角の情報と local frame の情報を合わせて literature frame という literature atom coordinate から基準となる frame への変換を構築する → ideal literature atom coordinate から基準の frame の配位を得て、欲しかった 3D 配位をゲット、というものになる。 う〜んごちゃごちゃ書いたけど全然分かっていませんと白状しているのと同義な文章だな。 他にも色々な要素がある(180度の回転対称性があるのでその不定性を取り除くとか)のだが、この辺も全然追えてないので諦めて、とにかくお望みの 3D 配位が得られたものとしよう。そうしたらあとは loss を設計して学習しようという話になる。 ここの 3D 配位を求めるところでは、各残基の位置については明示的に制限を加えることなく、自由に位置を探し求めている。本来は構造があるのでその位置関係は化学的な相互作用を反映していて複雑な拘束条件があったりするはずだが、この段階ではそれを無視している。論文ではその相互作用を無視しているということから |
色々なものを無視して強引に進めてきたが、最後に loss function だけ見ておく。 ということで上の loss だけをそれぞれ軽く見る。
loss もかなり色々と工夫して作っていて、ドメイン知識や機械学習の知識の総合格闘技という感じで、いや〜すごいなという感じ。 |
最後に ablation study と recycling の重要性に関する結果を貼っておく。 ablation study では modeling での triangles, biasing, gating が重要であることや、recycling が重要であること、そして論文に含まれてる要素はどれも重要であることが示されている。(CASP14 と PDB test set の結果から見るに。特に PDB test set の結果は顕著。) recycling は青やオレンジの比較的単純な構造に関しては Evoformer block の割と初期に高い精度までいくが、緑のものは複雑らしく、rこれはかなり block を経ないと(モデルの block は 48 なので、それ以上は recycling してることに対応)精度が上がらないことが示されている。これを見ると recycling めっちゃ重要じゃんとなる。 |
ということで抜け落ちてる要素は大量にあるが、自分が興味のある部分を中心に一通り追ってみた。 まだまだ把握してない要素が大量にあるし、コードも Google Colab のものをちょろっと動かしたに過ぎないので、今後も機会があったら少しずつ理解を深めていきたいところだ。 |
Podcast で紹介した: https://anchor.fm/yoheikikuta/episodes/16AlphaFold-e15ubme |
論文リンク
https://www.nature.com/articles/s41586-021-03819-2
(Supplementary Information も同ページにリンクがある)
公開日(yyyy/mm/dd)
2021/07/15
概要
タンパク質の構造予測コンペである CASP14 において他チームを圧倒した精度を達成した AlphaFold2 の詳細を記した論文と supplementary information。
情報量がすごいので一言でまとめを書くというのは難しいので内容は以降のコメントで書いていくとして、とにかくあらゆるドメイン知識や機械学習知識を総動員して、考えられる最高のモデルを構築しましたという感じの論文。
多くのアイデアが詰め込まれてるので追えてない要素が大量にあるが、自分が興味を持ったところを中心に論文を読んでメモを書いていった。いや〜これは凄いなという気持ちにさせてくれる実に珍しい論文であった。
GitHub repository は https://github.com/deepmind/alphafold
The text was updated successfully, but these errors were encountered: