Enformerの紹介

#はじめに

DeepLearningを使ったバイオインフォマティクス分野のキラーアプリというと[AlphaFold2](https://qiita.com/chanfuku18/items/5460f1aed5a698966eb2)が一世を風靡していますが、AlphaFold2を作ったDeepMind社が同じく作成した[Enformer](https://doi.org/10.1038/s41592-021-01252-x)というアプリ、当然ながらDeepLearningを使っているわけですが、AlphaFold2に比べるとほどんどガン無視な状態です。この記事ではそんな可哀そうなEnformerについて解説したいと思います。

#Enformerって何？

一言でいうと「[BERT](https://qiita.com/omiita/items/72998858efc19a368e50)の入力にゲノムの塩基配列を使ったもの」ということになります(以下では基本的にBERTの内容は理解できているという前提で書いていますのでBERTのアーキテクチャーが解ってないという人はまずはBERTを勉強してから読んで下さい)。実のところただこれだけだったら先行研究もあり[DNABERT](https://doi.org/10.1101/2020.09.17.301879)などもそれにあたります。じゃあ、Enformerは何が新しいかというとゲノム上の長距離相互作用を考慮するため入力する塩基配列の長さを非常に長くとった、という点にあると思われます。[^1]

[^1]:「Enformerは穴埋め問題を解いているわけではないのでBERTと呼ぶにはふさわしくないのでは」という指摘を受けました。これはその通りですので、そういう意味でBERTと類似しているという意味ではありませんでした。お詫びして訂正します。


自然言語処理系としてのBERTはむしろ、長い文章の入力を排して、比較的短い文章の穴埋め問題と、2文連結問題に特化することで、長い文章の処理系としても有効（例えば長文読解問題）だということを示したことが画期的でした。このことは、逆に言えば単語の連関が一文を越えることは稀だ、という事実と関係していると言えます。勿論、指示代名詞（あれ、それ、これ）を使うことで、一文を越えた単語の連携を組み込むことは可能ですが、一般に、一文の外の事物を指示代名詞で連携させることは文意を不明解にするとされ推奨されません。このことがたかだが一文程度の長さの単語列内の連関だけを考えたBERTが自然言語処理系として大成功を納めた秘密であったと言っても過言ではないでしょう。

しかし、ゲノムはエンハンサー領域に転写因子が結合することでループを形成するのでかなり長距離の相互作用を考えないと転写制御機構を正しくとらえることができませんし、インスレーターの様にゲノム領域をお互いに独立に分けるような特別な配列も持っています。従って、これらの領域を全てカバーできるような長い塩基配列を入力にすることでより正確な転写制御機構を把握することができます。

Enformerは一言でいうと今までで最も長距離の相互作用が考慮できるBERTベースのDeepLearningを用いて様々な転写制御機構を表現することに成功した研究である、と言ってよいでしょう。その際に、副産物としていわゆるSelf Attentionがまんまゲノム領域間の（すなわち生物学的な）相互作用になっているということが分かったという、結構ベタな結果が得られたのも注目に値すると思われます。

#Enformerのアーキテクチャ

有体に言ってただのBERTのアーキテクチャです。まず、塩基配列をトークンに分けます。通常のBERTではトークンとして単語を想定し、単語をone hotで０１に変換してから入力しますが、Enformerでは一塩基一トークンとして扱うので、入力はATGCをone hotにした01の4次元ベクトルです。上述の様に長い塩基領域のself attentionを考慮するので、4×196,608（塩基）の行列が入力です。これをStemとConvTowerと名付けられている二段の畳みこみ層で変換し、分散表現を作成します（[原書論文Extended Fig 1](https://www.nature.com/articles/s41592-021-01252-x/figures/5))。しかしこの部分まではオリジナルではなく先行研究である[Basenji2](https://github.com/calico/basenji)でも行われています。

この後、先行研究であるBasenji2とは異なってEnformerでは分散表現をTransformer層に入力します（上述の原書論文Extended Fig 1参照）。ここが先行研究と違うところです。先行研究では畳みこみ層しか使ってなかったので後述のSelf Attentionを得ることができないので、Self Attentionをゲノム領域の相互作用（エンハンサーやインスレーター）と関係づけることはできませんでした。これが出来るようになったところがEnformerと先行研究の違いです。Enformerは入力の塩基長を長くすることとTransformer層の採用の２つを同時に新規機構として入れてしまったので、先行研究に対する性能の向上が、Transformer層の導入によるものなのか、それとも、入力の塩基配列長を長くしたせいなのか、わからなくなってしまったところが、研究としてはちょっともにょるところです。

Transformer層の出力はpointwiseと呼ばれる畳み込み層に入力されて処理されます。この辺りのStem,ConvTower,pointwiseあたりの畳み込み層の構造の部分は先行研究であるBasenji2と同じらしく詳述されていません。その意味でもTransformerを使ったことと入力塩基長を長くしたことと以外、本当に先行研究であるBasenji2から何も変わってないので、この２つが性能の革新に有効だったことは明らかです。

先行研究であるBasenji2と異なってEnformerではこの先にヒトとマウスの予測別に更に畳み込み層が結合されています。この辺りのことは上述の原書論文Extended Fig 1にまとめられていますし、アークテクチャの大部分は先行研究であるBasenji2の丸パクリですので説明は省略します（僕もBasenji2の内容は理解できてないので）。

最終的にそれぞれが、114,688塩基長の領域を128塩基長の896ブロックに分けたゲノム領域がヒトの場合は５３１３種類の学習データ（後述）、マウスの場合は１６４３種類の学習データ（後述）に対して得られた、と書かれています。

#学習

学習は遺伝子発現プロファイル、転写因子やヒストン修飾のChIP-seq、ATAC-seqなど、について行われました。その種類数が前述の5313種類と1643種類ということなのでとにかく膨大な種類数です(内訳の詳細は原著論文のSupplementary Table 2及び3参照)。196,608塩基長の入力塩基配列は、ヒトの場合、34,021個の学習用セットで学習して2,213個の検証セットで最適化された後、最終的に1,937個のテストセットでパフォーマンスが測定されました。マウスの場合はそれぞれ、 29,295個、 2,209個、 2,017個だということでした。これだと最後の1937個と2017個でしか、議論できないので生物学的な議論がゲノム領域のごく一部でしかできないのでちょっと問題なのでは、と思いました。テストセットを替えて何度も学習すればいいのかもしれませんが、一回の学習に時間がかかりすぎるのでちょっと問題な気がします。この辺りDeepLearningを使うことの限界なのでしょうか。

#結果

##遺伝子発現プロファイルやChIP-seqとの比較

主な結果は[原著論文Fig.1](https://www.nature.com/articles/s41592-021-01252-x/figures/1)にまとめられています。遺伝子発現プロファイル、ChIP-seqやATAC-seqなどすべてに渡って先行研究のBasenji2を上回っています。ただ、実験との相関係数換算で多くの場合改善は0.1以下であり、あまり劇的なものではありません。計算自体は上述のとおり膨大なのですが、その割に改善は劇的というわけには行かなかったようです。これだけだったら、僕もあんまり紹介しようと思わなかったかな、と思います。

##エンハンサーの影響

ここがこの論文の一番面白いところかな、と思うのですが、実験的に確認されたエンハンサーの影響をある程度再現しているという点です([原著論文Fig. 2](https://www.nature.com/articles/s41592-021-01252-x/figures/2))。エンハンサーの効果は僕が注目しているSelf Attention以外に、エンハンサー部位と標的部位の関係性と、エンハンサー領域の配列をミュートした時の標的部位の発現量変化のあわせて３種類の方法で調べられました。当たり前ですがBasenji2はEnformerより入力配列が短いのでパフォーマンスは劣ります。面白いのはEnformerはHi-Cデータを直接用いた先行研究であるABC componentsとほぼ同等の性能を出しているという点です。Hi-Cデータは実際にDNAがどのようなコンタクトをしてるかのデータですから、それを使わないEnformerが同等の成果を出していること、特に直接には生物学的な意味を付与されていないSelf Attentionにエンハンサーの情報が反映されていることは非常に面白いと言えます。

この辺り、遺伝子発現プロファイルの予測などでは先行研究であるBasenji2から大幅な改善は無かった以上、このようなエンハンサーの影響の把握が直接役にたったということはないでしょう。むしろ、Enformerを使うことでエンハンサーの影響を検出できた、と考えるのが妥当な様に思います。

思い返せば、BERTは穴埋め問題と２文連結問題しか解いていないのに、文中の単語間の関係（例えば、代名詞が文中のどの単語を表現しているか）をある程度正確に再現できていました。直接、単語間の関係を正しく予測しろ、というタスクを課せられていないにも関わらず。この点でEnformerが遺伝子発現プロファイルを正しく再現しろというタスクを課せられただけで、エンハンサーの情報をSelf Attentionに取り込んだことと共通性を感じます。

機械学習は再現はできるけど、理解には役立たない、と言われてきましたが、相応しいモデルを使うことで理解にも役立つ可能性を見出してくれたという意味でSelf Attentionの活用はもっと注目されてもよいのかな、と感じました（性能だけだったら畳み込みネットワークだけで構成されている先行研究であるBasenji2と大してかわってないのですから）。

##インスレーターの影響

更にEnformerはインスレーターの影響も取り込んでいました（[原著論文Fig. 2](https://www.nature.com/articles/s41592-021-01252-x/figures/2)）。Self Attentionはインスレーターで区切られたtopologically associating domain (TAD)内の方がTAD間より有意に大きかったです。つまり、インスレーターを越えてDNAの領域間では影響を与えにくいという点が反映されていると理解できます。Self AttentionにはKeyとQueryというトークン間の関係の非対称性を表現するベクターがトークンに付与されます（今の場合、トークンは１塩基です）。TAD境界においてKeyという受け側（参照される方）の値が有意に大きいことも解りました。これはTAD境界を越えて影響を与えれないため、境界にエンハンサーの影響（標的）領域が固まってしまったという風にも考えられると思います。Self Attentionが自動的に生物学的な情報を取り込んだと考えられるもう１つの傍証と考えてもいいでしょう。

##配列変異による遺伝子発現プロファイルへの影響

すでにエンハンサー領域の人工的なミューテーションでエンハンサーの効果がある程度予測できたことはのべたので([原著論文Fig. 2](https://www.nature.com/articles/s41592-021-01252-x/figures/2)）驚くには値しませんが、配列変異による発現変異、いわゆるeQTLの予測が先行研究であるBasenji2に比べて大きく改善していました([原著論文 Fig 3](https://www.nature.com/articles/s41592-021-01252-x/figures/3))。学習自体はeQTLを使ったわけじゃないので、それでeQTLの予測が大きく向上したことはTransformerを使い、長距離の配列の入力を行うことで配列と発現量の関係をより正しく把握できた、と言えるのかもしれません。この点でも、単に畳み込み層だけで構成されたBasenji2に比べてEnformerの方がより生物学的に妥当な、つまり、本当の理解をもたらしてくれたといえるのかもしれません。

単に発現量の予測だけならEnformerはBasenji2に比べて大して改善しなかったのだから、この様な学習と直接関係ないタスクにもよい影響を与えていることは非常に注目に値するのでは、と思いました。

#議論

Self Attentionがエンハンサーやインスレーターと関係していることを発見したと言っても、DNABERTのような先行研究でも塩基配列を入力にしたBERTベースの深層学習アーキテクチャーによる研究があったのだから、新しくないのでは、と思われるかもしれません。それはそうなのですが、DNABERTは入力の塩基配列長がたったの５１２塩基しかありません。なんで、と思うかもしれませんが、元々、自然言語処理系としてBERTの利点は短い文章の穴埋め問題と、二文連結問題を学習するだけで長文読解まで出来るようになる、ということが売りだったのですから、入力が短い塩基長でもうまくいくのでは、というのは比較的自然な発想です。その意味ではDNABERTの方がBERTの元の発想に忠実であり、あえて長い配列を入力長にしてBERTに入れてみたEnformerの発想は地味ではありますが、他分野でうまく行った機械学習の方法をただ右から左にバイオインフォマティクス分野に使ってみましたという以上の、ドメイン（この場合はバイオインフォマティクス分野）に適用した最適化が為された研究といえるでしょう。同時に、長い配列長の採用と、Transformerの採用を同時に行ったため、性能の上昇がどっちに起因したのかはよくわからなくなりました。ただSelf Attentionとエンハンサーやインスレーターの関係はそもそもSelf Attentionという機構の無い通常の畳み込みニューラルネットワークではやりようがありませんので仕方ないともいえるでしょう。

#結論

とかく応用的な側面が強調され、理解には役立たないと揶揄される機械学習ですが、Enformerはデータから理解を取り出せるアーキテクチャーなのかな、と感じました。そういう意味では性能は非常によくてもタンパク質の配列と立体構造の因果関係になんの理解ももたらさなかった（様に見える）AlphaFold2よりEnformerの方が僕には好ましく感じられました。

#参考文献

[1] Avsec, Ž., Agarwal, V., Visentin, D. et al. Effective gene expression prediction from sequence by integrating long-range interactions. Nat Methods 18, 1196–1203 (2021). https://doi.org/10.1038/s41592-021-01252-x

[2] Kelley DR (2020) Cross-species regulatory sequence activity prediction. PLoS Comput Biol 16(7): e1008050. https://doi.org/10.1371/journal.pcbi.1008050

[3] Yanrong Ji, Zhihan Zhou, Han Liu, Ramana V Davuluri, DNABERT: pre-trained Bidirectional Encoder Representations from Transformers model for DNA-language in genome, Bioinformatics, Volume 37, Issue 15, 1 August 2021, Pages 2112–2120, https://doi.org/10.1093/bioinformatics/btab083