テーマ
第2章 数学の準備(2)— ベクトルと行列
この章で学ぶこと
- ベクトルとは何か — 「数の並び」であり「矢印」でもある、という2つの見方
- ベクトルの足し算とスカラー倍
- 内積(dot product) — 本書で最も重要な演算。計算方法と幾何的な意味
- 「内積 = 類似度」という考え方 — 第8章のAttentionを理解する鍵(本書全体の最重要ポイント)
- ノルム(ベクトルの長さ)とコサイン類似度
- 行列とは何か — 数の表であり、ベクトルの束でもある
- 行列 × ベクトル、行列 × 行列の計算方法(手計算で完全に)
- なぜ行列の掛け算はあんな定義なのか — 「行列はベクトルを変換する機械、行列積は変換の合成」
- 転置
- 「
個の 次元ベクトルは 行列にまとめられる」— 文章の数値表現の形(第6章への布石)
この章の前提
- 第1章 数学の準備(1)— 関数と記号に慣れる
- 関数
の読み方、添字 、 記法、関数の合成 を使います
- 関数
2.1 ベクトルとは何か — 「数の並び」と「矢印」
2.1.1 「数の並び」としてのベクトル
ベクトル(vector) には2つの見方があります。1つめの見方は、とても単純です。
IMPORTANT
ベクトルとは、数を順番に並べたもの(数のリスト)である。
たとえば、ある人の健康診断の結果を「身長170cm、体重60kg」とまとめたとします。この2つの数をセットにして
(読み下し: ベクトル
と書いたもの、これがベクトルです。並んでいる数の個数を 次元(dimension) と呼びます。上の例は 2次元ベクトル です。
記法の約束を確認します。
- ベクトルは 太字の小文字 で書きます:
(ただの数 と区別するため) - 中身の1つ1つを 成分(component) と呼び、添字で指します:
なら 、 - 本書では縦に並べる(縦ベクトル)を基本にしますが、紙面の都合で
と横に書くこともあります。中身は同じです - ベクトルでないただの1個の数(3 とか −0.5 とか)は スカラー(scalar) と呼びます
3次元なら数が3個、100次元なら数が100個並びます。「100次元」と聞くとSFめいて怖いですが、実体は「数が100個並んだリスト」にすぎません。怖がる必要はまったくありません。
2.1.2 「矢印」としてのベクトル
2つめの見方では、ベクトルは矢印です。2次元ベクトル
(図: 原点 (0,0) から点 (3,2) へ伸びる線分が、ベクトル
矢印には「向き」と「長さ」があります。この幾何的なイメージこそが、このあと学ぶ「内積 = 類似度」という見方を支えます。
TIP
2つの見方の使い分け: 計算するときは「数の並び」として、意味を考えるときは「矢印」として見る。この行き来が自由にできることが、ベクトルに慣れるということです。
2.1.3 なぜ本書にベクトルが必要なのか
先回りして言ってしまいます。
IMPORTANT
Transformerの中では、単語1つ1つがベクトル(数の並び)で表されます。
たとえば「猫」という単語が
IMPORTANT
意味が似ている単語は、似た向きの矢印(ベクトル)になるように作られます。
「猫」と「犬」の矢印は近い向きを向き、「猫」と「銀行」の矢印はバラバラの向きを向く。だとすると、「2つの矢印がどれくらい同じ向きを向いているか」を数で測れれば、「2つの単語がどれくらい意味的に近いか」を計算できることになります。その測る道具が、この章の主役 内積 です。
2.2 ベクトルの足し算とスカラー倍
内積に進む前に、ベクトルの基本操作を2つだけ押さえます。どちらも拍子抜けするほど簡単です。
2.2.1 足し算: 成分ごとに足すだけ
(読み下し: ベクトルの足し算は、同じ位置の成分どうしを足すだけ。1番目どうし 3+1=4、2番目どうし 2+2=4)
矢印として見ると、足し算は「矢印をつなげて進む」ことに対応します。
(図: 途中で折れている線が「まず
Transformerの中では「単語の意味ベクトル + 位置の情報ベクトル」(第9章)や「元の入力 + 変換結果」(残差接続、第9章)のように、ベクトルの足し算が「情報を合流させる」操作として頻繁に登場します。
2.2.2 スカラー倍: 全成分を同じ数で伸び縮み
ベクトルにスカラー(ただの数)を掛けることを スカラー倍(scalar multiplication) といいます。全成分にその数を掛けるだけです。
(読み下し: 2倍すれば各成分が2倍、0.5倍すれば各成分が半分になる)
矢印として見ると、スカラー倍は「向きを変えずに長さだけ伸び縮みさせる」操作です(負の数を掛けると向きが真逆になります)。
第8章のAttentionでは「各単語のベクトルに重み(0.7 とか 0.1 とかのスカラー)を掛けて足し合わせる」= 重み付き平均 という操作が中核になります。その部品は、いま学んだ「スカラー倍」と「足し算」だけです。
具体例(重み付き平均の先取り):
(読み下し:
「配合率を変えてベクトルをブレンドする」。このイメージは、第8章まで持っていてください。
2.3 内積 — 本書で最も重要な演算
いよいよ本書全体の最重要ポイントに入ります。ここから先の数節は、特に丁寧に読んでください。ここでつかむ考え方が、第8章のAttention(Transformerの中核)を理解できるかどうかを左右します。
2.3.1 計算方法: 成分どうしを掛けて、足す
内積(ないせき、dot product / inner product) は、同じ次元の2つのベクトルから、1つのスカラー(ただの数)を作る演算です。計算ルールはこうです。
同じ位置の成分どうしを掛けて、全部足す。
(読み下し: ベクトル
具体例1:
(読み下し: 1番目どうし 3×1、2番目どうし 2×4 を掛けて、足す。答えは 11 という「ただの数」)
具体例2(4次元でも同じこと):
(読み下し: 4組の掛け算をして全部足すと 4)
計算自体は小学生の算数です。ベクトル2本を入れると、数が1個出てくる。実はこの「出てきた1個の数」から、2本のベクトルの関係について多くのことが読み取れます。それを次の節で見ていきます。
なお、内積には2つの書き方があります。
(読み下し: 「エー・ドット・ビー」と「エー・転置・ビー」。どちらも同じ内積を表します。
2.3.2 幾何的な意味: 内積は「向きの揃い具合 × 長さ」
さて、この「掛けて足すだけ」の計算が、矢印の世界では何を意味するのか。結論から言います。
IMPORTANT
内積は、2つの矢印の「向きがどれくらい揃っているか」を(長さも加味して)測る数である。
- 同じ向きを向いているほど → 内積は大きな正の数
- 直角(無関係な向き)なら → 内積はちょうど 0
- 逆向きなら → 内積は負の数
まずこの3パターンを図で見比べ、続いて1つずつ数値で確かめます。

パターン1: 向きが揃っている → 内積は大きい
(読み下し: 似た向きの2本の内積は 7 という大きめの正の数)
パターン2: 直角 → 内積は 0
(読み下し: 直角に交わる2本の内積はちょうど 0)
パターン3: 逆向き → 内積は負
(読み下し: 正反対を向いた2本の内積は −5 という負の数)
まとめの表にします。
| 2本の矢印の関係 | 内積の符号・大きさ | イメージ |
|---|---|---|
| ほぼ同じ向き | 大きな正の数 | 「仲間」「似ている」 |
| やや同じ向き | 小さめの正の数 | 「ちょっと似ている」 |
| 直角 | 0 | 「無関係」 |
| やや逆向き | 小さめの負の数 | 「ちょっと反対」 |
| 正反対 | 大きな負の数 | 「正反対」 |
2.3.3 なぜ「掛けて足す」と向きの揃い具合が測れるのか
「計算ルールと幾何的意味がなぜ結びつくのか」を、腑に落ちる形で確認しておきましょう(厳密な証明ではなく、イメージの確認です)。
内積
- 2本が同じ向きなら、
成分の符号も 成分の符号も揃います(両方プラス、または両方マイナス)。すると各項 はどれも正になり、足すとどんどん大きくなる。 - 2本が逆向きなら、成分の符号がことごとく食い違い、各項は負になり、足すと大きな負になる。
- 2本が直角だと、「一方がプラスに効く分を、もう一方の食い違いが打ち消す」形になり、正の項と負の項がちょうど相殺して 0 になる。
具体例で相殺を確認:
(読み下し:
「方向ごとの一致度を集計している」。これが内積の計算の正体です。
2.3.4 【本書最重要】内積 = 類似度
以上を、本書全体を貫く合言葉としてまとめます。本書で何度も立ち戻る大事な一文です。
IMPORTANT
内積は、2つのベクトルの「類似度」を測るものさしである。内積が大きい = 似ている。内積が 0 に近い = 無関係。負 = 逆方向。
そして2.1.3節の予告を思い出してください。単語はベクトルで表され、意味が似た単語は似た向きのベクトルになるのでした。つなげると、こうなります。
単語ベクトルどうしの内積を計算すれば、「単語どうしの意味の近さ」が1個の数として手に入る。
ミニチュアの例で体感しましょう。いま、仮に単語たちが次の2次元ベクトルで表されているとします(値は説明用に作ったものです)。
| 単語 | ベクトル | イメージ |
|---|---|---|
| 猫 | 動物っぽい方向 | |
| 犬 | 動物っぽい方向 | |
| 魚 | 動物(食べ物寄り)方向 | |
| 銀行 | まったく別の方向 |

(図: 単語ベクトルの配置の例。猫・犬・魚は近い向きを向き、銀行だけ別の向きを向いている)
内積(=類似度)を計算してみます。
(読み下し: 猫と犬の類似度は 6。高い)
(読み下し: 猫と魚の類似度は 4。そこそこ高い)
(読み下し: 猫と銀行の類似度は −3。むしろ逆方向)
| ペア | 内積 | 解釈 |
|---|---|---|
| 猫・犬 | 6 | とても似ている |
| 猫・魚 | 4 | まあまあ似ている |
| 猫・銀行 | −3 | 似ていない(逆方向) |
「掛けて足す」だけの計算で、意味の近さがランキングできてしまいました。 これが内積の力です。
2.3.5 第8章への予告 — Attentionは内積でできている
なぜここまで内積にこだわるのか。種明かしをします。
Transformerの中核である Attention(注意機構) は、「文中のある単語が、他のどの単語に注目すべきか」を決める仕組みです。そして、その「注目度」の計算方法が、まさに ベクトルどうしの内積をとる ことなのです。第8章で学ぶ式
- 内積の計算ができて(2.3.1節)
- 内積 = 類似度という意味が分かっていれば(2.3.4節)
Attentionの核心はもう半分理解できたも同然です。「第2章で学んだ内積が、第8章で効いてくる」。これが本書でいちばん大事な伏線だと、ここではっきり宣言しておきます。
(図: この章の内積が第8章へつながる道筋。本書最重要の伏線)
2.4 ノルム — ベクトルの「長さ」
2.4.1 定義と計算
矢印には向きだけでなく長さがあります。ベクトルの長さを ノルム(norm) と呼び、
(読み下し: ノルムは、各成分を2乗して全部足し、最後にルート(平方根)をとったもの)
具体例:
(読み下し: 右に3、上に4進む矢印の長さは5。3:4:5の直角三角形でおなじみの値)

(図: 右に3、上に4進むベクトルの長さは、底辺3・高さ4の直角三角形の斜辺 = 5)
ちなみに、自分自身との内積をとると
2.4.2 内積の弱点: 長さに引きずられる
内積を「類似度」として使うとき、1つ注意があります。内積の値は向きの揃い具合だけでなく、矢印の長さにも比例するのです。
具体例:
(読み下し: 向きは同じでも、相手が10倍長いと内積も10倍になる)
「向きの近さ」だけを純粋に測りたい場合、長さの影響が邪魔になることがあります。そこで登場するのが次のコサイン類似度です。
2.5 コサイン類似度 — 長さの影響を消した類似度
2.5.1 定義
コサイン類似度(cosine similarity) は、内積を両者のノルムで割ったものです。
(読み下し: コサイン類似度は、内積を「
この値は必ず −1 から +1 の間 に収まり、次のように読めます。
| コサイン類似度 | 意味 |
|---|---|
| 1 | 完全に同じ向き |
| 0.7前後 | かなり似た向き |
| 0 | 直角(無関係) |
| −1 | 正反対 |
名前の由来は、この値が2本の矢印のなす角度
2.5.2 手計算してみる
2.3.4節の単語ベクトルで、猫と犬のコサイン類似度を計算します。
- 猫
、ノルムは - 犬
、ノルムは - 内積は
(計算済み)
(読み下し: 猫と犬のコサイン類似度は約0.95。ほぼ同じ向き=とても似ている)
同様に猫と銀行(
(読み下し: 猫と銀行は −0.6。向きがかなり食い違っている)
さらに、さきほどの「10倍に伸ばした犬
2.5.3 内積とコサイン類似度の使い分け
| 内積 | コサイン類似度 | |
|---|---|---|
| 値の範囲 | 制限なし | −1 〜 +1 |
| 長さの影響 | 受ける | 受けない |
| 計算コスト | 掛けて足すだけ(軽い) | ノルム計算と割り算が追加 |
| 本書での主な登場場面 | 第8章 Attention のスコア計算 | 第6章 単語の意味の近さの測定 |
Transformerの内部(Attention)では、シンプルで高速な内積がそのまま使われます(長さの影響が暴れる問題には、第8章で「
2.6 行列 — 数の表、そしてベクトルの束
2.6.1 行列とは
行列(matrix) とは、数を長方形の表の形に並べたものです。
(読み下し: 行列
- 横の並びを 行(row)、縦の並びを 列(column) と呼びます。「行は横、列は縦」。漢字の形で覚えるなら「行の字は横棒が並び、列の字は縦棒(リ)で終わる」
- 上の
は「3行2列の行列」「 行列」と言います(行 × 列 の順。縦の段数が先) - 行列は 大文字イタリック(
など)で書きます - 成分は
(「 行 列目」)と添字2つで指します。上の例では 、 です(第1章の「座席番号」の話がここで回収されました)
2.6.2 行列の2つの見方
行列には、機械的な「数の表」以上の見方が2つあります。
見方1: ベクトルを束ねたもの
(読み下し: 行列は「ベクトルの束」。各行が1本のベクトル)
この見方が、本章の最後(2.8節)で「文章 = 単語ベクトルを積んだ行列」という形で具体化します。
見方2: ベクトルを変換する機械
もう1つは「行列は、ベクトルを入れると別のベクトルが出てくる変換機械」という見方です。これは次の2.6.3節と2.6.5節でじっくり説明します。第1章の「関数 = 機械」の、ベクトル版だと思ってください。
2.6.3 行列 × ベクトル — 「行と列の内積を並べる」
行列とベクトルの掛け算を定義します。ここは手を動かすのがいちばんの近道です。
(読み下し: 結果の1番目の成分は「行列の1行目とベクトルの内積」、2番目の成分は「2行目とベクトルの内積」)
計算手順を分解します。
TIP
手順: 行列の各行を1本のベクトルとみなし、入力ベクトルとの内積を上から順に計算して並べる。
text
A = [ 1 2 ] x = [ 5 ]
[ 3 4 ] [ 6 ]
1行目 (1,2) と (5,6) の内積: 1x5 + 2x6 = 17
2行目 (3,4) と (5,6) の内積: 3x5 + 4x6 = 39
Ax = [ 17 ]
[ 39 ](図: 行列×ベクトルは「各行との内積を並べる」作業。内積がここでも主役)
つまり、行列 × ベクトルとは「内積の詰め合わせ」 です。2.3節で内積をマスターした皆さんは、もう行列の掛け算の本質を知っていることになります。
もう1つ具体例(
(読み下し: 3次元ベクトルを入れると2次元ベクトルが出てきた。
この例から大事なルールが見えます。
行列は「 次元ベクトルを入れると 次元ベクトルが出る機械」 - 行列の列の数と、入力ベクトルの次元が一致していないと掛けられない(機械の投入口のサイズが合わない)
2.6.4 「変換機械」としての行列を目で見る
行列がベクトルを「変換」するとはどういうことか、2次元の例で目に見せます。使う行列は次の
この
(読み下し: 「右向き」の矢印を入れると「上向き」が出てくる。「右上向き」を入れると「左上向き」が出てくる)

この
そしてこれが、Transformerを理解する上で決定的に重要な見方につながります。
IMPORTANT
Transformerの内部にある
2.6.5 行列 × 行列 — 小さい例で全要素を手計算
次は行列どうしの掛け算です。ルールは行列×ベクトルの自然な拡張です。
結果の
(読み下し: 行列
1つずつ計算します。
- 結果の (1行, 1列):
の1行目 と の1列目 の内積 - 結果の (1行, 2列):
の1行目 と の2列目 の内積 - 結果の (2行, 1列):
の2行目 と の1列目 の内積 - 結果の (2行, 2列):
の2行目 と の2列目 の内積
(読み下し: 結果も
text
[ 5 6 ] <- 右上: 行列 B(1列目は 5,7、2列目は 6,8)
[ 7 8 ]
[ 1 2 ] [ 19 22 ] <- 上の行: A の1行目 (1,2) と B の各列の内積
[ 3 4 ] [ 43 50 ] <- 下の行: A の2行目 (3,4) と B の各列の内積
例: 左上のマス 19 は、A の1行目 (1,2) と B の1列目 (5,7) の内積 1x5 + 2x7(図: 行列積の各マスの埋め方。「左から行を、右から列を持ってきて内積」の総当たり表)
サイズのルールも押さえます:
IMPORTANT
ここで気づいてほしいこと: 行列積の正体は「内積の総当たり表」です。第8章に登場する
2.6.6 なぜこんな定義なのか — 行列積は「変換の合成」
「行と列の内積を並べる」という一見ややこしい定義には、ちゃんと理由があります。
行列
第1章の関数の合成
(読み下し: 「
具体例で検証します。使う行列とベクトルは次のとおりです。
経路1: 2段階で変換
まず
続けて、この結果を
経路2: 先に合成してから一発変換
さきほど計算した合成行列
(読み下し: 経路1と経路2の結果が
一致しました。行列積の定義は、「変換の合成が行列1個にまとまる」ように逆算して作られているのです。「行と列の内積」という手順は、そのための必然だったわけです。
(図: 2段変換と合成行列による一発変換は同じ結果になる。第1章の「関数の合成」の行列版)
なお、関数の合成と同じく、行列積も順番を入れ替えると結果が変わります(
となり、さきほど求めた
この「行列 = 変換機械、行列積 = 変換の合成」という見方は、第5章で「ニューラルネットの層を重ねる」ことの意味を理解するときの土台になります(そこでは「行列を何個掛けても1個の行列にまとまってしまう=線形だけでは深くする意味がない」という重要な話につながります)。
2.7 転置 — 行と列をひっくり返す
転置(てんち、transpose) は、行列の行と列を入れ替える操作です。記号は右肩の
(読み下し:
text
X (3x2) X^T (2x3)
[ 1 2 ]
[ 3 4 ] ==> [ 1 3 5 ]
[ 5 6 ] [ 2 4 6 ]
斜めの対角線でパタンと折り返すイメージ(図: 転置は表の縦横をひっくり返す操作)
規則として、
(読み下し: 縦に並んでいた 3 と 2 が、転置すると横並びになる)
ここで、2.3.1節で予告した記法の約束を回収します。横ベクトル
(読み下し: 1×2 行列と 2×1 行列の積は 1×1、つまりただの数。そして中身は内積の計算と完全に同じ)
つまり
2.8 文章を行列にする — 「 個の 次元ベクトル = 行列」
この章の総仕上げとして、本書の後半につながる最重要の「形」を導入します。
2.8.1 単語がベクトルなら、文は行列
2.1.3節で「単語1つ = 1本のベクトル」になると予告しました。では、単語が5個並んだ文はどうなるでしょうか?
通し例の文「猫は魚が好き」をトークン列 [猫, は, 魚, が, 好き] に分け、各単語が
| トークン | ベクトル(4次元) |
|---|---|
| 猫 | |
| は | |
| 魚 | |
| が | |
| 好き |
この5本の行ベクトルを、上から順に縦に積み重ねると、
(読み下し: 文「猫は魚が好き」の数値表現。
一般化すると、次のようになります。
IMPORTANT
トークン数
text
[ 1 0 2 -1 ] <- 1行目 = 「猫」のベクトル
[ 0 1 0 0 ] <- 2行目 = 「は」のベクトル
X = [ 2 0 1 -1 ] <- 3行目 = 「魚」のベクトル
[ 0 1 0 1 ] <- 4行目 = 「が」のベクトル
[ 1 2 0 1 ] <- 5行目 = 「好き」のベクトル
縦方向: 行の数 = トークン数 n = 5
横方向: 列の数 = 意味を表す次元 d_model = 4
文 = ベクトルを縦に積んだ n x d 行列 X(図: 本書で最も頻繁に登場する「形」。Transformerの中を流れるデータは、常にこの形の行列)
(図: 文が行列になるまでの流れ。この行列
2.8.2 なぜ「行列にまとめる」ことがそんなに嬉しいのか
単なる整理整頓に見えるかもしれませんが、これには計算上の決定的な利点があります。
5個のトークン全部に同じ変換(行列
そしてGPU(画像処理装置)というハードウェアは、まさにこの「大きな行列積を一発で計算する」ことが桁外れに得意です。
IMPORTANT
文を行列にまとめる → 全単語の処理が行列積1回になる → GPUで一気に並列計算できる。
実はこれこそが、Transformerが以前の技術(RNN、第7章)に取って代わった大きな理由の1つです。RNNは単語を1個ずつ順番に処理するしかありませんでしたが、Transformerは文全体を1つの行列として同時に処理できるのです。この伏線は第7章・第8章で回収します。
2.9 この章の記号一覧(チートシート)
| 記号 | 読み方 | 意味 | 例 |
|---|---|---|---|
| ベクトル(太字小文字) | 数の並び/矢印 | ||
| エー・アイ | ベクトルの第 | ||
| エー・ドット・ビー | 内積 = 掛けて足す = 類似度 | ||
| ノルム | ベクトルの長さ | ||
| コサイン類似度 | 長さの影響を消した類似度(−1〜1) | 猫と犬で約0.95 | |
| 行列(大文字) | 数の表/ベクトルの束/変換機械 | ||
| エー・アイ・ジェー | 行列の | 座席番号 | |
| 行列積 | 内積の総当たり表/変換の合成 | 順番を変えると別物 | |
| エックス・転置 | 行と列の入れ替え | ||
| — | 文「猫は魚が好き」= |
この章のまとめ
- ベクトルは「数の並び」であり「矢印」でもある。計算は数の並びで、意味は矢印で考える。単語はベクトルで表される(詳細は第6章)
- 足し算は「成分ごと」、スカラー倍は「全成分を伸縮」。組み合わせると「重み付き平均(ブレンド)」ができる — 第8章Attentionの部品
- 内積は「同じ位置の成分を掛けて全部足す」演算で、ベクトル2本から数1個を作る。幾何的には「向きの揃い具合」を測っている
- 【本書最重要】内積 = 類似度。大きい=似ている、0=無関係、負=逆方向。第8章のAttentionは、この内積で「単語どうしの注目度」を計算する
- ノルムはベクトルの長さ。コサイン類似度は内積をノルムで割って長さの影響を消した、−1〜+1の純粋な「向きの類似度」
- 行列は数の表であり、「ベクトルの束」とも「ベクトルの変換機械」とも見られる
- 行列 × ベクトルは「各行との内積を並べる」。行列 × 行列は「内積の総当たり表」で、意味は「変換の合成」(第1章の関数合成の行列版)。順番を変えると結果が変わる
- 転置
は行と列の入れ替え。 は内積と同じもの 個の 次元ベクトル = 行列。文はこの形の行列 になり、行列積1回で全単語を同時処理できる(GPU並列化、Transformerの強みの源泉)
次の章へ
次の章では、数学の準備の最終回として微分・勾配・確率を学びます。「機械が学習する」とは、損失(間違い度合い)という関数の谷底を、傾きを頼りに下っていくことです。その「傾き」を教えてくれるのが微分と勾配。そして「次に来る単語を確率で予測する」という、本書全体の核心となるものの見方も、この次の章で手に入れます。