Reformer: The Efficient Transformer②(Locality-Sensitive Hashing Attention)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #40

f:id:lib-arts:20200131184442p:plain

言語処理へのDeepLearningの導入をご紹介するにあたって、#3〜#8においては、Transformer[2017]やBERT[2018]について、#9~#10ではXLNet[2019]について、#11~#12ではTransformer-XL[2019]について、#13~#17ではRoBERTa[2019]について、#18~#20ではWord2Vec[2013]について、#21~#24ではALBERT[2019]について、#26〜#30ではT5[2019]について、#31〜#32ではERNIEについて、#33〜#34ではELMo[2018]について、#35〜#36ではself-attention、#37〜#38ではDecomposable Attentionについて取り扱ってきました。

XLNet②(事前学習におけるAutoRegressiveとPermutation)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #10 - Liberal Art’s diary

RoBERTa(論文の詳細④ RoBERTa、Related Work、Conclusion)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #17 - Liberal Art’s diary

ALBERT③(The Elements of ALBERT)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #23 - Liberal Art’s diary

T5(Text-toText Transfer Transformer)③(Section2_Setup)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #28 - Liberal Art’s diary

#39以降ではTransformerの効率化について試みた研究であるReformerを確認するにあたって"Reformer: The Efficient Transformer"について取り扱います。

[2001.04451] Reformer: The Efficient Transformer

#39ではAbstractとIntroductionの確認を行いました。

#40ではSection2のLocality-Sensitive Hashing Attentionの確認を行います。
以下目次になります。
1. Locality-Sensitive Hashing Attention(Section2)
1-1. Analysis on a Synthetic Task(Section2-1)
2. まとめ


1. Locality-Sensitive Hashing Attention(Section2)
1節ではLocality-Sensitive Hashing Attentionについて見ていきます。

f:id:lib-arts:20200202173533p:plain

まず冒頭部ではTransformerで用いられているDot-product attentionやMulti-head attentionについて紹介されています。Dot-product attentionはQuery、Key、Valueの三つの行列を用いますが、self-attentionの一つの実現方法として利用する場合はQuery、Key、Valueを三つとも前のレイヤーのアウトプットを用いることでモデルをシンプルにすることが可能になっています。Multi-head attentionはモデルの隠れ層の次元であるd_{model}(Transformerでは512)をいくつか(Transformerではh=8とされていた)に分割し計算した上で最終的にconcatを行う演算です。Transformer論文ではd_{k}=d_{v}=d_{model}/h=64とされています。

f:id:lib-arts:20200202174954p:plain

次に、メモリ効率のよいattentionを考えるにあたり、まず問題を明確化した上でattentionの計算をメモリに全て載せないようにするにはという議論を行っています。QK^{T}の行列のサイズが[batch_size,length,length]になることから64K(64,000)のように文章が長くなるとこの行列が非常に大きくなってしまいます。この際にQに関連する単語をq_{i}のように一つずつ取り扱うことで、メモリに載せるデータをlengthのオーダーで考えることができるとされています(非効率だとは言及されていますが、lengthを大きくして実施するReformerでの実験においてはこちらの方法をベースラインに用いたとされています)。

f:id:lib-arts:20200202175113p:plain

f:id:lib-arts:20200202175129p:plain
"Where do Q, K, V come from?"ではQ、K、Vのそれぞれの用意についてやQとKのシェアリングについて言及されています。また、次のHashing attentionではLSH attention(Locality-Sensitive Hashing Attention)に向けて、クエリのq_{i}に近しいキーをKから集中的に用いるアイデアについて記載されています。系列の長さを意味するlengthが大きい際にattentionの演算は疎(sparse)な演算になるので、最も近しい32や64のkeyにのみ集中することで効率よく計算できるとされています。パラグラフの最終文として、このアプローチは効率的である一方どうやって実現するのかと記載し、次のパラグラフにつなげています。

f:id:lib-arts:20200202204437p:plain

前パラグラフで言及があった効率の良いattentionのアイデアとして、Locality-Sensitive Hashingが紹介されています。

f:id:lib-arts:20200202205427p:plain

Locality-Sensitive HashingのアイデアはFigure1で示されており、これは二つの位置ベクトル(two points)のxとyをランダムに回転させた際に同じ領域に入るかで類似度を計算することを意味しているようです。

f:id:lib-arts:20200202204455p:plain

f:id:lib-arts:20200202204530p:plain

Locality sensitive hashingを用いたattentionとしてLSH attentionについて記載されています。

f:id:lib-arts:20200202210524p:plain

処理の概要については上記のFigure2で示されており、(a)のNormalでは通常通り計算するものの、attentionを考えるにあたって疎行列(sparse matrix)の形状になっているものを生かせていないことについて言及されています。

f:id:lib-arts:20200202212502p:plain

Locality sensitive hasshingは似たitems(単語に対応)を異なる分類(different buckets)に分類する可能性が少々存在する一方で、それを減らすためにmultiple rounds of hashingを用いることができるとされています。n_{rounds}の回数hashingを行うことでアンサンブル学習が安定するのと同様に、ここでの結果を安定させることができるとされています。


1-1. Analysis on a Synthetic Task(Section2-1)

f:id:lib-arts:20200202213048p:plain

Section2-1のAnalysis on a Synthetic TaskではLSH attentionのパフォーマンスを計測するにあたって簡単なタスクを解くことを試みています。

f:id:lib-arts:20200202213510p:plain

計測結果はTable2で比較されています。


2. まとめ
#40では"Reformer: The Efficient Transformer"のSection2のLocality-Sensitive Hashing Attentionの確認を行いました。
#41ではSection3のReversible Transformer以降について取り扱っていきます。