Closed2

AttentionのKernel関数について

bilzardbilzard

Softmax

\kappa _ s = D _ s^ {-1} \exp \left( QK^\top \right), \\ D _ s = \mathrm{diag} \left\lbrace \sum _ j \exp(q _ i k _ j ^\top) \right\rbrace _ i

Exponential

\kappa _ e = \exp \left( QK^\top \right)

正規化なしのsoftmax。

Gaussian

\kappa _ g = \left\lbrace \exp \left(- \frac{\vert\vert q _i - k _ j \vert\vert^2}{2\sigma} \right) \right\rbrace _ {ij}

Exponential KernelはGaussian Kernelと以下の関係がある。

\exp(q _ i k _ j ^\top) = \exp \left( -\frac{\vert\vert q _ i - k _ j \vert\vert ^2}{2} \right) \exp\left( \frac{\vert\vert\ q_i \vert\vert^2}{2} \right) \exp\left( \frac{\vert\vert\ k_j \vert\vert^2}{2} \right)

つまり、Exponential Kernelは \sigma=1 のGaussian Kernelに個々の行ベクトルを定数倍したもの。つまり、行列表記では対角行列をかけたものに相当する。

\kappa _ g = D _ Q^{-1} \kappa _ e D _ K^{-1}, \\ D _ Q = \mathrm {diag} \left\lbrace \exp\left(\frac{\vert\vert q_i \vert\vert^2}{2}\right) \right\rbrace _i, \\ D _ K = \mathrm {diag} \left\lbrace \exp\left(\frac{\vert\vert k_i \vert\vert^2}{2}\right) \right\rbrace _i.

QK normalized[1]

\kappa _ n = D _ s^ {-1} \exp \left( g \tilde{Q}\tilde{K}^\top \right), \\ D _ s = \mathrm{diag} \left\lbrace \sum _ j \exp \left( g \cdot \tilde{q} _ i \tilde{k} _ j ^\top \right) \right\rbrace _ i, \\

Reference

  1. Query-Key Normalization for Transformers
bilzardbilzard

定理

  1. 対角行列 D を左から作用させた場合、行列の i 番目の行ベクトルを d _ i 倍したものと等価になる。
  2. 対角行列 D を右から作用させた場合、行列の i 番目の列ベクトルを d _ i 倍したものと等価になる。

証明(n=2の場合)

DA = \begin{pmatrix} d_1 & 0 \\ 0 & d_2 \end{pmatrix} \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} = \begin{pmatrix} a_{11} \cdot d_1 & a_{12} \cdot d_1 \\ a_{21} \cdot d_2 & a_{22} \cdot d_2 \end{pmatrix}
AD = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} \begin{pmatrix} d_1 & 0 \\ 0 & d_2 \end{pmatrix} = \begin{pmatrix} a_{11} \cdot d_1 & a_{12} \cdot d_2 \\ a_{21} \cdot d_1 & a_{22} \cdot d_2 \end{pmatrix}
このスクラップは2024/08/23にクローズされました