はじめに
ディープラーニングを学んでいると、「重み行列 $W$ を掛ける」「アテンションの重みを計算する」といった処理が無限に登場します。
数式として計算を追うことはできても、「AIの内部でデータに何が起きているのか」を直感的にイメージするのは難しいですよね。
この記事では、行列の掛け算を「空間全体をゴムシートのように歪ませる操作(線形変換)」として捉え直します。
さらに、現代のAI(大規模言語モデルなど)の心臓部であるアテンション機構が、実は「凸結合(パーセンテージでのブレンド)」というシンプルな図形で説明できることを解き明かします。
1. 行列の正体は「案内標識の引っ越し業者」
ベクトルと行列の掛け算は、「空間の基準となる軸(案内標識)を別の場所に立て直す」という操作です。
以下の図を見てください。顔文字のような図形が、行列によってどう変化するでしょうか。
元の世界(左図)
私たちがよく知る方眼紙の世界です。基準となるのは「右に進む $w_1$」と「上に進む $w_2$」です。
ここにある図形(目や口)は、絶対的な座標ではなく「$w_1$ の方向に〇歩、$w_2$ の方向に〇歩」という相対的なルールで存在しています。
変換後の世界(右図)
ここで行列 $W$ を掛けるということは、引っ越し業者に「$w_1$ と $w_2$ の標識を斜めの新しい位置に移してね」と指示を出すことです。
標識が斜めに移動したことで、背後にある方眼紙のグリッド全体が斜めに引っ張られて歪みます。空間が歪んでも、図形たちは「$w_1$ と $w_2$ からの相対的な距離」というルールを頑なに守るため、結果として顔全体がグニャッと歪む(線形変換される)のです。
ニューラルネットワークの「全結合層」は、データが上手く分類できないとき、この「空間の歪ませ方(行列 $W$)」を何度も学習・調整し、境界線を引きやすい都合の良い空間を作り出しています。
2. なぜ実装では「縦(Wx)」ではなく「横(xW)」を使うのか?
数学の教科書では、ベクトルは基本的に「縦向き(列ベクトル)」であり、行列は左から掛けます($Wx$)。
しかし、実際のAI開発(PyTorchなど)では、ベクトルが「横向き(行ベクトル)」になり、行列を右から掛ける($xW$)形が標準です。
まずは、この2つが「数学的には全く同じ結果(転置の関係)」になることを、具体的な数式で確認してみましょう。
元の縦ベクトルを $\boldsymbol{x} = \begin{bmatrix} x_1 \ x_2 \end{bmatrix}$、重み行列を $W = \begin{bmatrix} a & b \ c & d \end{bmatrix}$ とします。
① 縦ベクトル(数学の基本)での計算:$W\boldsymbol{x}$
$$ W\boldsymbol{x} = \begin{bmatrix} a & b & c & d \end{bmatrix} \begin{bmatrix} x_1 & x_2 \end{bmatrix} = \begin{bmatrix} ax_1 + bx_2 & cx_1 + dx_2 \end{bmatrix} $$
② 横ベクトル(AIの実装)での計算:$\boldsymbol{x}^\top W^\top$
ベクトルを横向きに寝かせたもの(転置:$\boldsymbol{x}^\top$)に、行列も転置したもの($W^\top$)を右から掛けます。
$$ \boldsymbol{x}^\top W^\top = \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} a & c & b & d \end{bmatrix} = \begin{bmatrix} x_1 a + x_2 b & x_1 c + x_2 d \end{bmatrix} $$
結果を見比べると、縦に並んでいるか横に並んでいるかの違いだけで、計算されている中身($ax_1 + bx_2$ など)は完全に一致していますよね。これを数式では $(W\boldsymbol{x})^\top = \boldsymbol{x}^\top W^\top$ と表します。
結果が同じなら、なぜAIの実装の世界ではわざわざ「横向き」が覇権を握ったのでしょうか?最大の理由は「コンピュータの物理メモリとキャッシュの都合」です。
3. アフィン結合と凸結合:アテンション(LLM)の心臓部
行列による「線形結合」は、空間をどこへでも自由に移動できる操作でした。
ここにいくつかの「縛りルール」を追加すると、AIの文脈理解に欠かせない強力なツールに進化します。
-
アフィン結合(足して1縛り): $x_1 + x_2 = 1$
図の点線のように、移動できる範囲が「2つのベクトルの先端を結んだ無限の直線」に限定されます。 -
凸結合(足して1 + マイナス禁止縛り): $x_1, x_2 \geq 0$
図の青い太線のように、範囲が「2つのベクトルの間の線分」に完全に閉じ込められます。
凸結合の正体は「ブレンド(配合)」
凸結合(図の $0.7w_1 + 0.3w_2$)を直感的に言うと、「成分 $w_1$ を70%、成分 $w_2$ を30%でブレンドする」ということです。
実はこれこそが、大規模言語モデル(LLM)のアテンション機構そのものです!
アテンションでは、ある単語(例:Bank)の意味を文脈に合わせて確定させるため、周囲の単語のベクトルをパーセンテージで混ぜ合わせます。
もしここで何の縛りもない線形結合を使ってしまうと、元の単語の意味から遠く離れた宇宙の彼方へ飛んでいってしまい、意味(アイデンティティ)が崩壊してしまいます。
しかし「凸結合」という縛りがあるおかげで、ブレンド後のベクトル(中間表現)は必ず元の単語たちの内側に安全に収まり、「元の意味を保ちつつ、文脈のニュアンスを帯びた新しい意味」を作り出すことができるのです。
まとめ
- 線形変換: 空間全体を歪ませて、データを処理しやすい形に変える(全結合層)。
- 横ベクトル($xW$): コンピュータのメモリ構造に最適化し、計算を爆速にするエンジニアリングの知恵。
- 凸結合: 複数のデータをパーセンテージでブレンドし、意味の崩壊を防ぎながら文脈を理解する(アテンション機構)。
数学の幾何学的なイメージと、システム実装の泥臭い最適化。この2つが繋がると、AIの複雑な論文やコードも、ずっと身近で面白いものに見えてくるはずです!

