Attentionを勉強する過程でKernel smoothingと等価なことをやっているのでは?!と思い,調べてみたら英語の文献1は出てきたのですが日本語で言及されているものを見たことなかったので,雑メモですが投稿します.
結論
BERTやTransformerで利用されるAttention(注意機構)ですが,もっとも素朴なAttentionはKernel Smoothing(Nadaraya-Watson kernel estimatorとも呼ばれる.日本語だとカーネル平滑化.)という回帰の古典的な手法と等価な処理をしていると言えます.以降はそれを示すために,2つがどう対応しているの,またどんな処理をしているのか見ていきます.
AttentionとKernel smoothingの対応
AttentionはNeural Networkで用いられるアーキテクチャです.ベクトルの系列2$\{q_1,\dots,q_J\}, q_j\in\mathbb{R}^M$が与えられたときに,対応する出力$\{f_1,\dots,f_J\}\in\mathbb{R}^{J\times D}$を返す仕組みです.この入力はQueryと呼ばれます.この出力を計算するのに用いるのがKeyとValueのペアの集合$\left\{(k_i, v_i)\right\}_{i=1}^I, k_i\in\mathbb{R}^M, v_i\in\mathbb{R}^D$です.
一方で,Kernel smoothingの目的は回帰問題を解くことです.すなわち,教師データとして入力と出力のペアが複数与えられたときに,その関係をうまく表現する関数を推定し,未知の入力集合に対しての出力を予測するわけです.ここで登場する変数をAttentionに合わせる形で定義したのが以下の表です.
変数 | Attentionにおける呼び方 | Kernel Smoothingにおける呼び方 |
---|---|---|
$k_i, v_i$ | KeyとValueのペア | 観測された入力と出力のペア |
$q_j$ | Query | 入力を予測したい未知の入力 |
$f_j$ | Queryに対応する出力 | 予測値 |
$\alpha(k_i, q_j)$ | 関連度,類似度 | カーネル |
この変数を用いて両者の目的を一般化するならば,与えられている$\{(k_i, v_i)\}$を利用することで$\{q_j\}$に対応する出力$\{f_j\}$を得ようということです.それをAttentionとKernel Smoothingでは,以下のように実現します.ここからはAttentionもしくはKernel Smoothingをご存じの方は「そうですね」と思いながら読んでいただければと思います.
まず,$k_i$と$q_j$の類似度を$\alpha(k_i,q_j)$としておきます.この類似度を求めるのには標準内積などがよく用いられます.Attentionにおいてはこれを関連度(のようなもの)と呼ぶこともあるようですし,Kernel smoothingにおいてはこれをカーネルと呼びます.
この時$q_j$に対応する出力$f_j$は次のように求められます.
$$f_j=\sum_i \tilde{\alpha}(q_j,k_i)v_i$$
ここで$\tilde{\alpha}$は$$\tilde{\alpha}(q, k_i)=\frac{\alpha(q, k_i)}{\sum_l\alpha(q,k_l)}$$
と$\sum_i\tilde{\alpha}(q,k_i)=1$となるように正規化された類似度です.つまり,AttentionとKernel smoothingでやっていることは$\{q_j\}$と$\{k_i\}$の全ての組み合わせの類似度を利用して$\{v_i\}$の重み付き平均を出力としましょうということです.
最後に
私はAttentionに元々明るくなかったので,このように回帰手法と関連づけられると処理をスッキリ理解することができました.Kernel Smoothingは1964年に発表されているので3,Attentionというのは意外と古典的な仕組みなんだなーということがここからわかります.逆にKernel smoothingを利用する際には,Attentionを高速化するアプローチ4が使えるかもしれません.
-
AttentionとKernel smoothingの等価性に言及している文献をいくつか挙げておきます.Transformer Dissection: A Unified Understanding of Transformer's Attention via the Lens of KernelはAttentionをKernel Smoothingの観点から再解釈した上で新しいAttentionのバリエーションを提案しています.An Attentive Survey of Attention ModelsはAttentionを利用したモデルのサーベイ論文です.DIVE INTO DEEP LEARNING 10.2. Attention Pooling: Nadaraya-Watson Kernel RegressionはAttentionを実装するチュートリアルで,Kernel smoothingと絡めて説明されています. ↩
-
厳密には順序関係は考慮されないので集合と見た方が良さそうです.参考:Attention might be something you need ↩