本記事では、Transformerの位置エンコーディング手法であるRoPE(Rotary Position Embedding)を深く理解するために必要な、フーリエ変換の数学的背景を解説します。直感的な理解と数学的な厳密さの両方を大切にしながら進めていきます。
フーリエ変換の基本アイデア
フーリエ変換の核心は、次の一文に集約されます:
「どんな複雑な波も、単純な波(sin/cos)の重ね合わせで表現できる」
例えば、ピアノの「ド」の音は、基本周波数の波と、その整数倍の周波数を持つ倍音が重ね合わさって作られています。異なる楽器で同じ「ド」を弾いても音色が違うのは、含まれる周波数成分の比率(スペクトル)が異なるからです。
数学的定式化:フーリエ級数
周期 $2\pi$ を持つ任意の関数 $f(x)$ は、以下のフーリエ級数で表現できます:
$$ f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n \cos(nx) + b_n \sin(nx) \right) $$ここで、フーリエ係数 $a_n$, $b_n$ は以下の積分で求められます:
$$ a_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) \cos(nx) \, dx $$ $$ b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) \sin(nx) \, dx $$なぜこの形で表現できるのか:直交性
sin関数とcos関数がフーリエ級数の基底として選ばれる理由は、その直交性にあります。関数の内積を以下のように定義したとき:
$$ \langle f, g \rangle = \int_{-\pi}^{\pi} f(x) g(x) \, dx $$sin関数とcos関数は以下の直交関係を満たします:
$$ \int_{-\pi}^{\pi} \cos(mx) \cos(nx) \, dx = \begin{cases} \pi & (m = n \neq 0) \\ 0 & (m \neq n) \end{cases} $$ $$ \int_{-\pi}^{\pi} \sin(mx) \sin(nx) \, dx = \begin{cases} \pi & (m = n \neq 0) \\ 0 & (m \neq n) \end{cases} $$ $$ \int_{-\pi}^{\pi} \cos(mx) \sin(nx) \, dx = 0 \quad (\forall m, n) $$この直交性により、各周波数成分を独立に抽出でき、異なる周波数同士が干渉しません。これは、3次元空間でx軸・y軸・z軸が直交していることで、各座標成分を独立に扱えることと本質的に同じです。
オイラーの公式と複素指数関数表現
フーリエ変換をより簡潔に扱うために、オイラーの公式を導入します:
$$ e^{i\theta} = \cos\theta + i\sin\theta $$この公式を使うと、sin と cos を統一的に扱えます:
$$ \cos\theta = \frac{e^{i\theta} + e^{-i\theta}}{2}, \quad \sin\theta = \frac{e^{i\theta} - e^{-i\theta}}{2i} $$フーリエ級数は複素指数関数を使って以下のように書き換えられます:
$$ f(x) = \sum_{n=-\infty}^{\infty} c_n e^{inx} $$ここで複素フーリエ係数は:
$$ c_n = \frac{1}{2\pi} \int_{-\pi}^{\pi} f(x) e^{-inx} \, dx $$複素平面での解釈
$e^{i\theta}$ は複素平面上の単位円周上の点を表し、$\theta$ が増加すると反時計回りに回転します。これが後述するRoPEの「回転」と直接つながります。
周波数の役割:マルチスケール表現
フーリエ級数で複数の周波数を使う理由は、異なるスケールの情報を同時に捉えるためです。
| 周波数 | 捉える情報 | 例 |
|---|---|---|
| 低周波(nが小さい) | 大域的な傾向 | 文章全体の流れ |
| 中周波 | 中程度の構造 | 段落レベルの関係 |
| 高周波(nが大きい) | 局所的な変動 | 隣接単語の関係 |
これらを組み合わせることで、あらゆるスケールの情報を同時に表現できます。
RoPEとフーリエ変換の数学的対応
RoPE(Rotary Position Embedding)は、位置情報をベクトルの回転として埋め込む手法です。フーリエ変換との対応を見ていきましょう。
RoPEの回転行列
RoPEでは、位置 $m$ において、ベクトルの各2次元ペア $(x_{2i}, x_{2i+1})$ に対して以下の回転行列を適用します:
$$ R_m^{(i)} = \begin{pmatrix} \cos(m\theta_i) & -\sin(m\theta_i) \\ \sin(m\theta_i) & \cos(m\theta_i) \end{pmatrix} $$ここで $\theta_i$ は各ペアに固有の周波数パラメータで、以下のように定義されます:
$$ \theta_i = 10000^{-2i/d} $$$d$ はモデルの次元数です。$i$ が大きくなると $\theta_i$ は小さくなり、低周波の回転となります。
複素数表現との対応
2次元ベクトル $(x, y)$ を複素数 $z = x + iy$ と見なすと、回転行列の適用は複素数の乗算に対応します:
$$ z' = z \cdot e^{im\theta_i} = (x + iy)(\cos(m\theta_i) + i\sin(m\theta_i)) $$これはまさにオイラーの公式の形であり、RoPEがフーリエ変換と同じ数学的構造を持つことを示しています。
相対位置の内積表現
RoPEの重要な性質として、位置 $m$ のクエリと位置 $n$ のキーの内積が、相対位置 $(m-n)$ のみに依存するという点があります:
$$ \langle R_m q, R_n k \rangle = \langle R_{m-n} q, k \rangle $$これは回転行列の性質 $R_m^T R_n = R_{n-m}$ から導かれます。各ペアについて:
$$ (R_m^{(i)})^T R_n^{(i)} = R_{n-m}^{(i)} $$内積に寄与する各ペアの成分は $\cos((m-n)\theta_i)$ の形となり、これはフーリエ級数における周波数成分と同じ構造です。
一意性の保証
複数の周波数を組み合わせることで、任意の位置差を一意に区別できます。これを具体例で見てみましょう。
位置差1と位置差7の区別
3つの周波数ペアで位置差を比較します:
| 位置差 | $\theta_0 = 1.0$ | $\theta_1 = 0.1$ | $\theta_2 = 0.01$ |
|---|---|---|---|
| 1 | $\cos(1.0) \approx 0.54$ | $\cos(0.1) \approx 0.995$ | $\cos(0.01) \approx 0.99995$ |
| 7 | $\cos(7.0) \approx 0.75$ | $\cos(0.7) \approx 0.765$ | $\cos(0.07) \approx 0.998$ |
高周波ペア($\theta_0$)では値が似ていますが、中・低周波ペア($\theta_1$, $\theta_2$)では明確に異なります。全てのペアを組み合わせることで、一意の識別が可能になります。
住所システムとの類似
この仕組みは住所システムと似ています:
- 国(低周波):大きな範囲を区別
- 都道府県(中周波):中程度の範囲を区別
- 番地(高周波):最も細かい位置を区別
RoPEも同様に、低周波ペアは「だいたい1000トークン以内か否か」、高周波ペアは「隣接トークンか2つ離れているか」といった異なるスケールの位置関係を捉えます。
まとめ
フーリエ変換とRoPEの数学的なつながりを整理すると:
| フーリエ変換 | RoPE |
|---|---|
| $e^{inx}$ による周波数分解 | $e^{im\theta_i}$ による位置エンコーディング |
| 複数周波数の重ね合わせ | 複数の $\theta_i$ ペアの組み合わせ |
| 直交基底による一意表現 | 回転角の組み合わせによる一意な位置表現 |
| 低周波:大域的構造 | 小さい $\theta_i$:遠距離位置関係 |
| 高周波:局所的構造 | 大きい $\theta_i$:近距離位置関係 |
RoPEは、フーリエ変換の「複数の周波数成分を組み合わせて任意の情報を表現する」という本質的なアイデアを、Transformerの位置エンコーディングに応用した手法と言えます。
参考文献
- Su, J., Lu, Y., Pan, S., Murtadha, A., Wen, B., & Liu, Y. (2021). RoFormer: Enhanced Transformer with Rotary Position Embedding. arXiv:2104.09864.
- 3Blue1Brown. But what is the Fourier Transform? A visual introduction. YouTube.