【LaTeX】内積・外積の書き方まとめ|cdot・langle・転置・timesの使い分けを図解で解説

「LaTeX で内積ってどう書くんだっけ?」「角括弧の $\langle x, y \rangle$ は <> じゃダメ?」「外積のクロス記号 $\times$ は?」——内積・外積はベクトルを扱う数式の中核でありながら、LaTeX では記法の選択肢が多く、意外と迷いやすいポイントです。同じ内積でも、物理は $\bm{a} \cdot \bm{b}$、数学は $\langle \bm{a}, \bm{b} \rangle$、機械学習の論文は $\bm{a}^\top \bm{b}$ と、分野によって主流の書き方が違います。

この記事は、そんな「内積・外積を LaTeX でどう書くか」を一気に解決するための逆引きリファレンスです。内積の3大記法(\cdot\langle \rangle・転置)の使い分け、\left\langle による自動サイズ調整、外積(クロス積)の \times、テンソル積の \otimes、ノルム \| との組み合わせ、量子力学のブラケット記法(physics / braket パッケージ)、さらに機械学習論文での頻出パターンまで、コピペできる実例を大量に載せて網羅します。

内積はコサイン類似度・カーネル法・Attention などの機械学習、仕事やエネルギーの物理計算、関数解析の $L^2$ 内積まで、理工系のあらゆる文書で毎日のように登場します。本記事で「迷ったらここを見れば書ける」状態を作っておきましょう。

本記事の内容

  • まず結論:内積・外積の LaTeX コマンド逆引き早見表(コピペ用)
  • 内積の3大記法(\cdot\langle \ranglex^\top y)と分野別の使い分け
  • 角括弧記法の詳細(< > がNGな理由、\left\langle の自動サイズ)
  • 外積(クロス積)\times と「外積(outer product)」$\bm{a}\bm{b}^\top$ の区別
  • テンソル積 \otimes・ウェッジ積・アダマール積
  • 内積とノルム \| の組み合わせ(コサイン類似度・コーシー・シュワルツ)
  • ディラックのブラケット記法(physics / braket パッケージと KaTeX の \braket
  • 機械学習論文でよく使う内積まわりの数式集(コピペ用)

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

ベクトルの積の全体マップ

「積」と呼ばれる演算はいくつもありますが、結果が何になるか(スカラー・ベクトル・行列)で分類すると混同しなくなります。内積はスカラー、外積はベクトル、outer product は行列を返します。記号を選ぶときは「自分が欲しい結果の型は何か」から逆算するのが確実です。

まず結論:内積・外積のLaTeXコマンド逆引き早見表

細かい解説の前に、「やりたいこと」から逆引きできる早見表を置いておきます。急いでいる人はここからコピペしてください。各セクションで意味と使い分けを詳しく説明します。

やりたいこと LaTeX コード 表示
内積(ドット積) \bm{a} \cdot \bm{b} $\bm{a} \cdot \bm{b}$
内積(角括弧記法) \langle \bm{a}, \bm{b} \rangle $\langle \bm{a}, \bm{b} \rangle$
内積(転置記法・機械学習) \bm{a}^\top \bm{b} $\bm{a}^\top \bm{b}$
角括弧を中身に合わせて大きく \left\langle \frac{a}{b}, c \right\rangle $\left\langle \frac{a}{b}, c \right\rangle$
外積(クロス積) \bm{a} \times \bm{b} $\bm{a} \times \bm{b}$
外積(outer product・行列を作る) \bm{a} \bm{b}^\top $\bm{a} \bm{b}^\top$
テンソル積(クロネッカー積) \bm{a} \otimes \bm{b} $\bm{a} \otimes \bm{b}$
アダマール積(要素ごとの積) \bm{a} \odot \bm{b} $\bm{a} \odot \bm{b}$
ウェッジ積(微分形式) dx \wedge dy $dx \wedge dy$
ノルム(内積から定まる大きさ) \|\bm{x}\| $\|\bm{x}\|$
ノルムの2乗=自分との内積 \|\bm{x}\|^2 = \langle \bm{x}, \bm{x} \rangle $\|\bm{x}\|^2 = \langle \bm{x}, \bm{x} \rangle$
コサイン類似度 \frac{\bm{a} \cdot \bm{b}}{\|\bm{a}\| \|\bm{b}\|} $\frac{\bm{a} \cdot \bm{b}}{\|\bm{a}\| \|\bm{b}\|}$
$L^2$ 内積(関数の内積) \langle f, g \rangle_{L^2} $\langle f, g \rangle_{L^2}$
エルミート内積(複素) \bm{u}^\dagger \bm{v} $\bm{u}^\dagger \bm{v}$
ケット(量子力学) \ket{\psi} または |\psi\rangle $|\psi\rangle$
ブラ(量子力学) \bra{\phi} または \langle\phi| $\langle\phi|$
ブラケット(量子力学の内積) \braket{\phi|\psi} または \langle\phi|\psi\rangle $\langle\phi|\psi\rangle$
期待値 \langle\psi|\hat{A}|\psi\rangle $\langle\psi|\hat{A}|\psi\rangle$

早見表だけで用が足りることも多いですが、「<x, y> と書くとなぜ崩れるのか」「クロス積と outer product のどちらを『外積』と呼ぶか」「\braket はどの環境で動くか」など、知らないとハマるポイントがあります。ここから先で一つずつ丁寧に見ていきましょう。

内積の3大記法と使い分け

内積とは何を測る量か

内積の幾何的意味(射影)

内積 $\bm{a}\cdot\bm{b} = \|\bm{a}\|\|\bm{b}\|\cos\theta$ は、「$\bm{b}$ を $\bm{a}$ の向きに射影した長さ」に「$\bm{a}$ の長さ」を掛けた量です。図の例では $\bm{a} = (3, 1)^\top$、$\bm{b} = (1.6, 2.4)^\top$ で、なす角は $37.9^\circ$、$\bm{b}$ の射影の長さは $2.277$、そして内積は $3.162 \times 2.884 \times 0.789 = 7.2$ です。成分で計算しても $3 \times 1.6 + 1 \times 2.4 = 7.2$ で一致します。

この見方をすると、内積がゼロになるのは射影の長さがゼロ(=直交)のときだと即座に分かります。「内積は2つのベクトルがどれだけ同じ向きを向いているかの指標」というのが直感的な理解です。

内積は2つのベクトルの「方向の一致度」をスカラー1個に圧縮する演算です。物理なら、力のベクトルと移動のベクトルの内積が「仕事」になります。力が移動方向に沿っているほど仕事は大きく、直交していれば仕事はゼロ——内積はこの「どれだけ同じ向きを向いているか」を数値化します。機械学習で2つの文書ベクトルの内積が大きいほど「似ている」と判定するのも、まったく同じ発想です。

同じ内積という演算に対して、LaTeX では大きく3つの書き方が使われています。まず全体像を比較表で押さえましょう。

記法 LaTeX 主に使う分野 ニュアンス
$\bm{a} \cdot \bm{b}$ \bm{a} \cdot \bm{b} 物理・工学・高校〜学部数学 幾何ベクトルのドット積
$\langle \bm{a}, \bm{b} \rangle$ \langle \bm{a}, \bm{b} \rangle 数学(線形代数・関数解析) 抽象的な内積空間の内積
$\bm{a}^\top \bm{b}$ \bm{a}^\top \bm{b} 機械学習・統計・最適化 行列演算としての内積

記法1:ドット記法 \cdot(物理・工学の標準)

最も広く通じるのが、中央の点(ドット)を使う記法です。

$$ \bm{a} \cdot \bm{b} = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n = \sum_{i=1}^{n} a_i b_i $$

$$
\bm{a} \cdot \bm{b} = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n = \sum_{i=1}^{n} a_i b_i
$$

ポイントは \cdot(中央の点)を使うことです。キーボードのピリオド .* で代用すると、ベースライン上の点や別の記号になってしまい、内積には見えません。\cdot は「centered dot」の意味で、乗算の点とまったく同じコマンドです。

幾何学的な定義もドット記法でよく書かれます。

$$ \bm{a} \cdot \bm{b} = \|\bm{a}\| \|\bm{b}\| \cos\theta $$

$$
\bm{a} \cdot \bm{b} = \|\bm{a}\| \|\bm{b}\| \cos\theta
$$

$\theta$ は2つのベクトルのなす角です。$\theta = 90°$ なら $\cos\theta = 0$ なので内積はゼロ——「直交=内積ゼロ」という、内積の最重要性質がこの式から読み取れます。ノルム記号 $\|\cdot\|$ の書き方は後のセクションで扱います。

記法2:角括弧記法 \langle \rangle(数学の標準)

線形代数や関数解析の教科書では、内積を山形の角括弧で囲む記法が標準です。

$$ \langle \bm{a}, \bm{b} \rangle $$

$$
\langle \bm{a}, \bm{b} \rangle
$$

\langle が左の山括弧 $\langle$、\rangle が右の山括弧 $\rangle$ です。不等号の < > で代用してはいけません(理由は次のセクションで詳しく説明します)。

角括弧記法の強みは、「ベクトルの矢印」のイメージを離れた抽象的な内積——たとえば関数同士の内積——を自然に書けることです。

$$ \langle f, g \rangle_{L^2} = \int_a^b f(x)\, g(x) \, dx $$

$$
\langle f, g \rangle_{L^2} = \int_a^b f(x)\, g(x) \, dx
$$

下付きの $L^2$ で「$L^2$ 空間の内積」だと明示しています。関数 $f$ と $g$ の「掛けて足す(積分する)」が、ベクトルの「成分ごとに掛けて足す」の連続版になっている——角括弧はこの一般化を1つの記号で受け止めます。フーリエ解析やカーネル法の文書ではこの記法が主役です。

記法3:転置記法 \bm{a}^\top \bm{b}(機械学習・統計の標準)

内積は「行ベクトル × 列ベクトル」の行列積としても書けます。機械学習・統計・最適化の論文ではこの記法が圧倒的に多く使われます。

$$ \bm{a} \cdot \bm{b} = \bm{a}^\top \bm{b} $$

$$
\bm{a} \cdot \bm{b} = \bm{a}^\top \bm{b}
$$

$\bm{a}^\top$ は $1 \times n$ の行ベクトル、$\bm{b}$ は $n \times 1$ の列ベクトルなので、積は $1 \times 1$、つまりスカラーです。転置記号は \top($\top$)が定番で、\mathrm{T} を使う流儀(\bm{a}^\mathrm{T} \bm{b})もあります。x^T と普通のイタリック T で書くと「変数 $T$ の累乗」と紛らわしいので避けましょう。

転置記法の強みは、行列が混ざる式にそのまま拡張できることです。たとえば重み行列 $\bm{W}$ を挟んだ重み付き内積は、行列積の文法のまま書けます。

$$ \langle \bm{a}, \bm{b} \rangle_{\bm{W}} = \bm{a}^\top \bm{W} \bm{b} $$

$$
\langle \bm{a}, \bm{b} \rangle_{\bm{W}} = \bm{a}^\top \bm{W} \bm{b}
$$

$\bm{W}$ を単位行列にすると通常の内積に戻ります。マハラノビス距離($\bm{W} = \bm{\Sigma}^{-1}$)やガウス分布の指数部はまさにこの形です。

複素ベクトルの内積(エルミート内積)

複素ベクトル空間では、片方の引数に複素共役を取る「エルミート内積」を使います。転置+複素共役はダガー記号 \dagger で書きます。

$$ \langle \bm{u}, \bm{v} \rangle = \sum_{i=1}^{n} \bar{u}_i v_i = \bm{u}^\dagger \bm{v} $$

$$
\langle \bm{u}, \bm{v} \rangle = \sum_{i=1}^{n} \bar{u}_i v_i = \bm{u}^\dagger \bm{v}
$$

$\bar{u}_i$(\bar{u}_i)が複素共役、$\bm{u}^\dagger$(\bm{u}^\dagger)がエルミート転置(共役転置)です。共役を取らないと $\langle \bm{u}, \bm{u} \rangle$ が負や複素数になり得て、「自分との内積=長さの2乗」が壊れてしまいます。量子力学や信号処理で複素ベクトルを扱うときの必須知識です。

内積の3つの記法

3つの記法はどれも同じ量を表しますが、使われる分野が分かれています。物理・工学ではドット記法、数学(特に関数解析や抽象的な内積空間)では角括弧記法、機械学習・統計では転置記法が標準です。

論文を読むときは「この分野ならこの記法」と当たりをつけられますし、書くときは読者の分野に合わせて選ぶのが親切です。いずれにせよ1つの文書内では統一するのが原則です。

どの記法を使うべきか

迷ったら次の指針で選べば、読者の期待を裏切りません。

  • 物理・工学のレポート → $\bm{a} \cdot \bm{b}$(\cdot
  • 数学的な文書・関数の内積 → $\langle \bm{a}, \bm{b} \rangle$(\langle \rangle
  • 機械学習・統計の論文 → $\bm{a}^\top \bm{b}$(^\top
  • 複素ベクトル・量子力学 → $\bm{u}^\dagger \bm{v}$ かブラケット記法(後述)

どれを選んでも、1つの文書内では統一することが大切です。3大記法の全体像を押さえたところで、検索者が最もつまずく角括弧記法の落とし穴を次に見ていきます。

角括弧記法の詳細:< > がNGな理由と自動サイズ調整

不等号 < > で代用してはいけない

「内積の山括弧くらい、キーボードの < > でいいのでは?」と思うかもしれません。実際に並べて比較してみます。

$$ <\bm{a}, \bm{b}> \quad \text{と} \quad \langle \bm{a}, \bm{b} \rangle $$

% NG: 不等号として組版される
$<\bm{a}, \bm{b}>$

% OK: 専用コマンド
$\langle \bm{a}, \bm{b} \rangle$

左の < > 版は、記号の前後に「二項関係(不等号)用の広いスペース」が入り、形も開き気味で、内積には見えません。LaTeX は < を「$a < b$ のような比較演算子」として扱うため、スペーシングが完全に崩れるのです。\langle \rangle は「括弧(開き・閉じ)」として正しく組版されます。見た目の問題だけでなく、HTML に変換する環境ではタグと誤認されるリスクもあります。内積の山括弧は必ず \langle \rangle——これがこのセクションの結論です。

山括弧の書き方と自動サイズ

1行目のように < > で書くと、LaTeX はこれを不等号(二項関係子)として扱います。関係子は前後に空白を入れる規則なので、$<\bm{a}, \bm{b}>$ のように余分な隙間が空いて締まりのない見た目になります。2行目の \langle \rangle は括弧として登録されているので、正しい間隔で組まれます。

3行目と4行目は、中身に分数が入った場合の比較です。\left\langle \right\rangle を使えば括弧が中身の高さまで伸びますが、素の \langle だと背が足りず、中身からはみ出したように見えます。

\left\langle \right\rangle で中身に合わせて自動サイズ

中身に分数や総和が入ると、固定サイズの \langle では括弧が中身より低くなって不格好です。\left\langle\right\rangle のペアで囲むと、括弧が中身の高さに合わせて自動で伸びます。

$$ \langle \frac{\partial f}{\partial x}, \frac{\partial g}{\partial x} \rangle \quad \text{と} \quad \left\langle \frac{\partial f}{\partial x}, \frac{\partial g}{\partial x} \right\rangle $$

% NG: 括弧が分数より低い
\langle \frac{\partial f}{\partial x}, \frac{\partial g}{\partial x} \rangle

% OK: 中身の高さに自動調整
\left\langle \frac{\partial f}{\partial x}, \frac{\partial g}{\partial x} \right\rangle

左は山括弧が偏微分の分数に埋もれていますが、右は中身全体をきちんと包んでいます。\left\right は必ずペアで使う必要があり、片方だけだとエラーになります。片側だけ伸ばしたい場合は \left\langle ... \right.(ピリオドで「見えない括弧」)と書きます。

サイズを手動で指定したい場合は \bigl\langle\Bigl\langle\biggl\langle\Biggl\langle(閉じ側は \bigr\rangle など)が使えます。\left\right は中身によっては大きくなりすぎることがあるので、微調整したいときの選択肢として覚えておくと便利です。

角括弧の扱いをマスターしたところで、内積とペアで検索されるもう1つの主役——外積に進みます。

外積(クロス積)\times の書き方

「外積」という言葉の注意点

先に用語の整理をしておきます。日本語の「外積」は文脈によって2つの別物を指します。

日本語 英語 記号 結果
外積(クロス積) cross product $\bm{a} \times \bm{b}$ 3次元ベクトル
外積(直積・テンソル積) outer product $\bm{a} \bm{b}^\top$ または $\bm{a} \otimes \bm{b}$ 行列

高校〜学部の物理で「外積」といえばクロス積、機械学習の文脈で「outer product」といえば $\bm{a}\bm{b}^\top$ 型の行列を作る演算です。このセクションではクロス積を扱い、outer product は次のテンソル積のセクションで扱います。

基本:\times

クロス積は \times で書きます。掛け算の「×」とまったく同じコマンドです。

$$ \bm{a} \times \bm{b} $$

$$
\bm{a} \times \bm{b}
$$

アルファベットの x で代用するのは厳禁です(イタリックの変数 $x$ になってしまいます)。クロス積は3次元ベクトルに対して定義され、結果は $\bm{a}$ にも $\bm{b}$ にも直交する新しいベクトルになります。

行列式による定義

クロス積の成分は、基底ベクトルを並べた行列式で書くのが定番です。vmatrix 環境(縦線付き行列)を使います。

$$ \bm{a} \times \bm{b} = \begin{vmatrix} \bm{e}_x & \bm{e}_y & \bm{e}_z \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix} = \begin{pmatrix} a_y b_z – a_z b_y \\ a_z b_x – a_x b_z \\ a_x b_y – a_y b_x \end{pmatrix} $$

$$
\bm{a} \times \bm{b} = \begin{vmatrix}
\bm{e}_x & \bm{e}_y & \bm{e}_z \\
a_x & a_y & a_z \\
b_x & b_y & b_z
\end{vmatrix}
= \begin{pmatrix}
a_y b_z - a_z b_y \\
a_z b_x - a_x b_z \\
a_x b_y - a_y b_x
\end{pmatrix}
$$

\begin{vmatrix} で両側に縦線の付いた行列式、\begin{pmatrix} で丸括弧の列ベクトルになります。行の区切りは \\、列の区切りは & です。行列環境の詳細は行列の書き方の記事を参照してください。

外積の幾何的意味

左が3次元での外積です。$\bm{a} \times \bm{b}$(緑)は $\bm{a}$ と $\bm{b}$ の両方に垂直な向きを持ちます。向きは右手系で決まり、右手の人差し指を $\bm{a}$、中指を $\bm{b}$ に向けたときの親指の向きです。

右は同じものを真上から見た図です。$\bm{a} = (2,\ 0.4,\ 0)$、$\bm{b} = (0.7,\ 1.8,\ 0)$ のとき、外積の $z$ 成分は $2 \times 1.8 – 0.4 \times 0.7 = 3.32$ です。そしてこの $3.32$ が、2本のベクトルが張る平行四辺形(紫)の面積とぴったり一致します。外積の大きさは面積、という関係が数値でも確認できます。

大きさと反交換性

クロス積の大きさは、2つのベクトルが張る平行四辺形の面積に等しくなります。

$$ \|\bm{a} \times \bm{b}\| = \|\bm{a}\| \|\bm{b}\| \sin\theta $$

$$
\|\bm{a} \times \bm{b}\| = \|\bm{a}\| \|\bm{b}\| \sin\theta
$$

内積の $\cos\theta$ に対してクロス積は $\sin\theta$——平行なら($\theta = 0$)クロス積はゼロベクトル、直交なら最大、と内積とちょうど相補的な関係です。

また、クロス積は順序を入れ替えると符号が反転します(反交換性)。

$$ \bm{a} \times \bm{b} = -\,\bm{b} \times \bm{a} $$

$$
\bm{a} \times \bm{b} = -\,\bm{b} \times \bm{a}
$$

物理での頻出例:ローレンツ力とスカラー三重積

クロス積が主役の物理式の代表がローレンツ力です。コピペ用に載せておきます。

$$ \bm{F} = q(\bm{E} + \bm{v} \times \bm{B}) $$

$$
\bm{F} = q(\bm{E} + \bm{v} \times \bm{B})
$$

速度 $\bm{v}$ と磁場 $\bm{B}$ のクロス積が磁気力の項です。さらに、内積とクロス積を組み合わせたスカラー三重積は、3つのベクトルが張る平行六面体の体積を与えます。

$$ \bm{a} \cdot (\bm{b} \times \bm{c}) = \begin{vmatrix} a_x & a_y & a_z \\ b_x & b_y & b_z \\ c_x & c_y & c_z \end{vmatrix} $$

$$
\bm{a} \cdot (\bm{b} \times \bm{c}) = \begin{vmatrix}
a_x & a_y & a_z \\
b_x & b_y & b_z \\
c_x & c_y & c_z
\end{vmatrix}
$$

\cdot\times が1つの式に同居する好例です。クロス積を押さえたので、もう1つの「外積」——行列を作る outer product とテンソル積に進みましょう。

テンソル積・outer product・その他の積

outer product:$\bm{a}\bm{b}^\top$

列ベクトル × 行ベクトルの順で掛けると、スカラーではなく行列ができます。これが outer product(直積、外積)です。

$$ \bm{a} \bm{b}^\top = \begin{pmatrix} a_1 \\ a_2 \end{pmatrix} \begin{pmatrix} b_1 & b_2 \end{pmatrix} = \begin{pmatrix} a_1 b_1 & a_1 b_2 \\ a_2 b_1 & a_2 b_2 \end{pmatrix} $$

$$
\bm{a} \bm{b}^\top = \begin{pmatrix}
a_1 b_1 & a_1 b_2 \\
a_2 b_1 & a_2 b_2
\end{pmatrix}
$$

内積 $\bm{a}^\top \bm{b}$ と outer product $\bm{a} \bm{b}^\top$ は、転置の位置が逆なだけでまったく別物(スカラー vs 行列)です。「転置が先なら内積(inner)、後なら外積(outer)」と覚えると混同しません。共分散行列 $\bm{\Sigma} = \mathbb{E}[(\bm{x}-\bm{\mu})(\bm{x}-\bm{\mu})^\top]$ など、統計・機械学習で頻出の形です。

内積・外積の対比

左のグラフが本質的な違いです。内積は $\cos\theta$ に比例するので平行のとき最大・直交でゼロ、外積の大きさは $\sin\theta$ に比例するので直交で最大・平行でゼロになります。ちょうど正反対の振る舞いです。

右の表に違いをまとめました。特に最後の「次元」に注目してください。内積は何次元でも定義できますが、外積($\times$)は3次元でしか定義できません。「両方に垂直な向き」が一意に決まるのが3次元だけだからです(2次元では垂直な向きは平面から出てしまい、4次元以上では垂直な方向が2つ以上あって決まりません)。一般次元へ拡張したいときは、次に出てくるウェッジ積や外積代数を使います。

テンソル積(クロネッカー積):\otimes

テンソル積は丸に×を入れた記号 \otimes で書きます。

$$ \bm{a} \otimes \bm{b}, \qquad A \otimes B $$

$$
\bm{a} \otimes \bm{b}, \qquad A \otimes B
$$

ベクトル同士のテンソル積は outer product と同一視でき($\bm{a} \otimes \bm{b} = \bm{a}\bm{b}^\top$)、行列同士の場合はクロネッカー積(ブロック行列を作る演算)を表します。量子力学の合成系($|\psi\rangle \otimes |\phi\rangle$)や有限要素法、量子計算の文書で頻出です。

アダマール積(要素ごとの積):\odot\circ

行列・ベクトルの「同じ位置の要素同士を掛ける」演算はアダマール積と呼ばれ、\odot(丸に点)か \circ(白丸)で書きます。

$$ \bm{a} \odot \bm{b} = \begin{pmatrix} a_1 b_1 \\ a_2 b_2 \end{pmatrix}, \qquad \bm{A} \circ \bm{B} $$

$$
\bm{a} \odot \bm{b} = \begin{pmatrix} a_1 b_1 \\ a_2 b_2 \end{pmatrix}, \qquad \bm{A} \circ \bm{B}
$$

LSTM のゲート機構($\bm{f}_t \odot \bm{c}_{t-1}$)など、深層学習の論文では \odot が主流です。\circ は関数合成 $f \circ g$ と紛れやすいので、機械学習の文脈では \odot を推奨します。

ウェッジ積(微分形式):\wedge

微分形式や外積代数で使うウェッジ積は \wedge です。

$$ dx \wedge dy = -\,dy \wedge dx $$

$$
dx \wedge dy = -\,dy \wedge dx
$$

クロス積と同じ反交換性を持ち、実はクロス積の一般化(任意次元版)にあたります。物理の解析力学や微分幾何で出会ったら \wedge を思い出してください。

積の記号が出揃いました。内積を語るうえで切り離せない相棒——ノルムとの組み合わせを次に見ていきます。

内積とノルム \| の組み合わせ

ノルム記号の書き方

ベクトルの大きさ(ノルム)は二重の縦線で囲みます。LaTeX では \|(バックスラッシュ+縦線)か \Vert を使います。

$$ \|\bm{x}\|, \qquad \|\bm{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2} $$

$$
\|\bm{x}\|, \qquad \|\bm{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2}
$$

縦線2本 || を並べる書き方は、間隔が不自然になるため非推奨です。下付きの $2$ は「ユークリッドノルム($L^2$ ノルム)」であることの明示で、機械学習では $\|\cdot\|_1$(L1ノルム)との対比でよく付けます。詳細はノルム・絶対値の記事で扱っています。

積の種類と結果の形

同じ「積」でも、結果のサイズがまったく違います。$3\times1$ と $3\times1$ から $1\times1$(スカラー)を作るのが内積、$3\times1$ と $1\times3$ から $3\times3$ を作るのが outer product です。アダマール積はサイズが変わらず、クロネッカー積はサイズが掛け算になります。

記号を取り違えたときに気づく一番簡単な方法は、「結果は何行何列になるか」を確かめることです。式の左右でサイズが合わなければどこかで記号を間違えています。

ノルムは「自分との内積」から生まれる

内積とノルムの関係を1本の式で書くと、こうなります。

$$ \|\bm{x}\| = \sqrt{\langle \bm{x}, \bm{x} \rangle}, \qquad \|\bm{x}\|^2 = \bm{x}^\top \bm{x} $$

$$
\|\bm{x}\| = \sqrt{\langle \bm{x}, \bm{x} \rangle}, \qquad \|\bm{x}\|^2 = \bm{x}^\top \bm{x}
$$

「自分自身との内積の平方根が長さ」——内積が定まればノルムも自動的に定まる、という数学的な事実がそのまま記法になっています。

ノルムは自分との内積

左が具体例です。$\bm{x} = (3, 4)^\top$ のとき $\langle \bm{x}, \bm{x}\rangle = 9 + 16 = 25$ なので、$\|\bm{x}\| = \sqrt{25} = 5$ になります。ピタゴラスの定理そのもので、内積が「長さの2乗」を与えていることが分かります。

右がノルム記号の書き分けです。縦線1本 $|x|$ は絶対値、2本 $\|\bm{x}\|$ がノルムです。ベクトルに縦線1本を使うのはよくある間違いなので注意してください。中身が高い場合は \left\| \right\| で自動サイズにし、ノルムの種類を明示したいときは \|\bm{x}\|_2 のように添字を付けます。

コサイン類似度(機械学習で最頻出)

内積とノルムの組み合わせで最も書く機会が多いのが、コサイン類似度です。

$$ \cos\theta = \frac{\bm{a} \cdot \bm{b}}{\|\bm{a}\| \|\bm{b}\|} = \frac{\bm{a}^\top \bm{b}}{\|\bm{a}\|_2 \|\bm{b}\|_2} $$

$$
\cos\theta = \frac{\bm{a} \cdot \bm{b}}{\|\bm{a}\| \|\bm{b}\|}
$$

分子が内積、分母が両ベクトルのノルムの積です。幾何学的定義 $\bm{a} \cdot \bm{b} = \|\bm{a}\|\|\bm{b}\|\cos\theta$ を $\cos\theta$ について解いただけ、という見方をすると覚えやすいはずです。

コーシー・シュワルツの不等式

内積とノルムをつなぐ最重要不等式も、コピペ用に載せておきます。

$$ |\langle \bm{a}, \bm{b} \rangle| \leq \|\bm{a}\| \, \|\bm{b}\| $$

$$
|\langle \bm{a}, \bm{b} \rangle| \leq \|\bm{a}\| \, \|\bm{b}\|
$$

外側が絶対値の縦線1本 |、ノルムが縦線2本 \| という使い分けに注目してください。この不等式はコサイン類似度が必ず $[-1, 1]$ に収まることの根拠でもあります。

ベクトル・関数の内積はここまでで網羅できました。最後の記法体系として、量子力学で使われるブラケット記法を見ていきましょう。

ディラックのブラケット記法(physics・braketパッケージ)

コサイン類似度と角度の対応

左が基準ベクトルとの角度、右がそのときのコサイン類似度です。$0^\circ$ で $1.000$、$30^\circ$ で $0.866$、$60^\circ$ で $0.500$、$90^\circ$ でちょうど $0$、$120^\circ$ で $-0.500$、$180^\circ$ で $-1.000$ と、$[-1, 1]$ の範囲を滑らかに動きます。

内積そのものはベクトルの長さに依存してしまいますが、両方のノルムで割ることで長さの影響を取り除き、向きだけを比較できるのがコサイン類似度です。文書ベクトルや埋め込みベクトルの比較で標準的に使われるのは、この「長さに依存しない」性質があるからです。

ブラケット記法とは

量子力学では、状態ベクトルと内積をディラック考案の「ブラ・ケット」で書きます。内積 $\langle\phi|\psi\rangle$ を bracket(括弧)に見立てて、左半分 $\langle\phi|$ を「ブラ(bra)」、右半分 $|\psi\rangle$ を「ケット(ket)」と呼ぶ、という言葉遊びが由来です。

素朴な書き方:|\rangle を組み合わせる

パッケージなしでも、縦線と山括弧の組み合わせで書けます。

$$ |\psi\rangle, \qquad \langle\phi|, \qquad \langle\phi|\psi\rangle $$

$$
|\psi\rangle, \qquad \langle\phi|, \qquad \langle\phi|\psi\rangle
$$

左からケット(|\psi\rangle)、ブラ(\langle\phi|)、両者を合わせた内積(\langle\phi|\psi\rangle)です。この素朴な書き方は KaTeX を含むあらゆる環境で動くので、まずこれを覚えておけば困りません。

演算子を挟んだ期待値や、ケットとブラの outer product(射影演算子)も同じ要領です。

$$ \langle\psi|\hat{A}|\psi\rangle, \qquad \hat{P} = |\psi\rangle\langle\psi| $$

$$
\langle\psi|\hat{A}|\psi\rangle, \qquad \hat{P} = |\psi\rangle\langle\psi|
$$

$\langle\psi|\hat{A}|\psi\rangle$ は演算子 $\hat{A}$ の期待値、$|\psi\rangle\langle\psi|$ は状態 $|\psi\rangle$ への射影演算子です。ブラケット記法でも「ケット×ブラ=行列(演算子)」という構図は、先ほどの $\bm{a}\bm{b}^\top$ とまったく同じです。

physics パッケージ:\bra\ket\braket

LaTeX 文書で量子力学の数式を多く書くなら、physics パッケージの専用コマンドが便利です。

% プリアンブルに \usepackage{physics}
\ket{\psi}          % ケット
\bra{\phi}          % ブラ
\braket{\phi}{\psi} % 内積(physicsは引数2つ)
\ev{\hat{A}}{\psi}  % 期待値 <ψ|A|ψ>
\dyad{\psi}{\phi}   % 射影 |ψ><φ|

中身が分数などで背が高くなっても自動でサイズ調整されるのが、手書きの |\psi\rangle に対する利点です。

braket パッケージ:\Braket の自動サイズ

braket パッケージも定番で、こちらは \braket{\phi|\psi} のように縦線ごと1引数で書きます。

% プリアンブルに \usepackage{braket}
\braket{\phi|\psi}          % 内積
\Braket{\psi | \hat{H} | \psi}  % 大文字版は中身に合わせて自動サイズ
\Set{ x \in \mathbb{R} | x > 0 }  % おまけ:集合の内包記法にも使える

physics と braket で \braket の引数の取り方が違う(physics は {\phi}{\psi}、braket は {\phi|\psi})点だけ注意してください。両方読み込むと衝突するので、どちらか一方に決めるのが安全です。

KaTeX での対応

本ブログを含む KaTeX 環境では、パッケージの読み込みなしで \bra\ket\braket(および大型版の \Bra\Ket\Braket)がそのまま使えます。

$$ \braket{\phi|\psi}, \qquad \Braket{\psi | \frac{\hat{p}^2}{2m} | \psi} $$

$$
\braket{\phi|\psi}, \qquad \Braket{\psi | \frac{\hat{p}^2}{2m} | \psi}
$$

\Braket は中身の分数に合わせて括弧と縦線が伸びていることがわかります(braket パッケージ互換の文法です)。MathJax では physics 拡張を有効にすれば \bra\ket が使えますが、既定では未定義のことが多いため、環境を選ばず確実に動かしたいなら素朴な \langle\phi|\psi\rangle 方式が無難です。

記法の引き出しはこれで全部揃いました。仕上げに、機械学習の論文・記事でそのまま使える内積まわりの数式をまとめます。

機械学習論文でよく使う内積の数式集(コピペ用)

線形モデル

$$ \hat{y} = \bm{w}^\top \bm{x} + b $$

$$
\hat{y} = \bm{w}^\top \bm{x} + b
$$

重みベクトルと特徴ベクトルの内積+バイアス。機械学習で最も基本的な内積です。$\bm{w} \cdot \bm{x} + b$ と書く流儀もありますが、論文では転置記法が主流です。

カーネル関数(カーネルトリック)

$$ k(\bm{x}, \bm{x}’) = \langle \phi(\bm{x}), \phi(\bm{x}’) \rangle $$

$$
k(\bm{x}, \bm{x}') = \langle \phi(\bm{x}), \phi(\bm{x}') \rangle
$$

「カーネルは特徴写像 $\phi$ で飛ばした先の内積」という、カーネル法の核心の式です。抽象的な(しばしば無限次元の)特徴空間の内積なので、ここは転置記法より角括弧記法が好まれます。プライム記号は \bm{x}' で出せます。

Scaled Dot-Product Attention(Transformer)

$$ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left( \frac{QK^\top}{\sqrt{d_k}} \right) V $$

$$
\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left( \frac{QK^\top}{\sqrt{d_k}} \right) V
$$

Transformer の心臓部です。$QK^\top$ は「クエリとキーの全ペアの内積」を一括計算する行列積で、名前のとおり dot product(内積)が主役です。関数名の \mathrm{softmax} は立体(ローマン体)にするのが論文の流儀です。

勾配との内積(テイラー展開・方向微分)

$$ f(\bm{x} + \Delta\bm{x}) \approx f(\bm{x}) + \nabla f(\bm{x})^\top \Delta\bm{x} $$

$$
f(\bm{x} + \Delta\bm{x}) \approx f(\bm{x}) + \nabla f(\bm{x})^\top \Delta\bm{x}
$$

1次のテイラー展開です。勾配 $\nabla f$ と変位 $\Delta\bm{x}$ の内積が関数の増分を近似する——最適化の収束証明などで頻繁に登場する形です。\langle \nabla f(\bm{x}), \Delta\bm{x} \rangle と角括弧で書く論文も多く、どちらも同じ意味です。

実例まで揃ったところで、環境差で困らないように KaTeX での対応状況を整理しておきます。

LaTeX vs KaTeX の対応状況

コマンド KaTeX対応 備考
\cdot 対応 ドット積
\langle\rangle 対応 角括弧
\left\langle\right\rangle 対応 自動サイズ
\times 対応 クロス積
\otimes 対応 テンソル積
\odot\circ 対応 アダマール積
\wedge 対応 ウェッジ積
\top\dagger 対応 転置・エルミート転置
\|(ノルム) 対応 \Vert も可
\bra\ket\braket 対応 KaTeX組み込み(パッケージ不要)
\Braket(自動サイズ) 対応 braketパッケージ互換
physicsパッケージの \ev\dyad 非対応 \langle...\rangle で代用

主要コマンドはすべて KaTeX で動きます。LaTeX 文書側では、\bm\usepackage{bm}\braket\usepackage{braket}(または physics)が必要な点だけ注意してください。

ブラケット記法の構造

$\langle \phi |$ をブラ(bra)、$| \psi \rangle$ をケット(ket)と呼び、並べると括弧(bracket)になって内積 $\langle \phi | \psi \rangle$ を表します。中央の縦線が1本に融合するのが記法のミソです。ディラックが bracket を bra と ket に割った洒落から来ています。

間に演算子を挟めば期待値 $\langle \phi | \hat{A} | \psi \rangle$ になり、逆順に並べれば $| \psi \rangle\langle \psi |$ で射影演算子(行列)になります。順序を入れ替えるとスカラーから行列に変わる点は、前に見た内積と outer product の関係とまったく同じ構造です。

よくある間違いとTips

つまずきやすい4点を先に並べておきます。

内積・外積でよくある4つの間違い

上2つは記号の選択ミス、下2つは位置と本数のミスです。特に3番目の転置の位置は、$\bm{a}^\top\bm{b}$(スカラー)と $\bm{a}\bm{b}^\top$(行列)で結果の型が変わってしまうので、式の意味そのものが壊れます。以下、それぞれを詳しく見ていきます。

間違い1:山括弧を < > で書く

% NG: 不等号扱いでスペーシングが崩れる
$<\bm{a}, \bm{b}>$

% OK: 専用コマンド
$\langle \bm{a}, \bm{b} \rangle$

本記事で最も強調したいポイントです。内積の山括弧は \langle \rangle 一択です。

間違い2:内積とクロス積の記号を取り違える

% 内積(結果はスカラー)
$\bm{a} \cdot \bm{b}$

% クロス積(結果はベクトル)
$\bm{a} \times \bm{b}$

$\cdot$ と $\times$ は日常の掛け算では同じ意味ですが、ベクトルでは結果の型まで変わる別演算です。スカラーが欲しい文脈で \times を書いていないか、見直す癖をつけましょう。

間違い3:転置の位置で内積と外積が入れ替わる

% 内積(スカラー): 転置が先
$\bm{a}^\top \bm{b}$

% 外積(行列): 転置が後
$\bm{a} \bm{b}^\top$

たった1文字の位置の違いで、結果がスカラーから行列に変わります。「inner は転置が inner 側(先頭)、outer は転置が outer 側(末尾)」と覚えるのも一案です。

間違い4:ノルムを縦線1本で書く

% あいまい: 絶対値に見える
$|\bm{x}|$

% 明確: ベクトルのノルム
$\|\bm{x}\|$

スカラーの絶対値は縦線1本 |x|、ベクトルのノルムは縦線2本 \|\bm{x}\| と使い分けると、読者が型を誤解しません。

Tips:内積の記号をマクロで統一する

長い文書では、内積の記法をマクロにしておくと、後から一括で流儀を変えられます。

% プリアンブルで定義
\newcommand{\inner}[2]{\langle #1, #2 \rangle}
% 使うとき: \inner{\bm{a}}{\bm{b}}

% 転置流儀に変えたくなったら定義を1行直すだけ
% \newcommand{\inner}[2]{#1^\top #2}

共著論文などで記法の統一が問題になりがちなので、最初にマクロを切っておくのが実務的なベストプラクティスです。

まとめ

本記事では、LaTeX で内積・外積を書く方法を逆引きできる形で網羅しました。

  • 内積の3大記法: 物理・工学は \cdot、数学は \langle \bm{a}, \bm{b} \rangle、機械学習は \bm{a}^\top \bm{b}。文書内で統一する
  • 角括弧は専用コマンド: < > は不等号扱いで崩れる。\langle \rangle を使い、背の高い中身には \left\langle ... \right\rangle
  • 外積(クロス積): \times。行列式は vmatrix、大きさは $\|\bm{a}\|\|\bm{b}\|\sin\theta$
  • outer product と転置の位置: $\bm{a}^\top\bm{b}$ はスカラー(内積)、$\bm{a}\bm{b}^\top$ は行列(外積)
  • テンソル積系: \otimes(クロネッカー積)、\odot(アダマール積)、\wedge(ウェッジ積)
  • ノルムとの組合せ: $\|\bm{x}\|^2 = \langle\bm{x},\bm{x}\rangle$、コサイン類似度、コーシー・シュワルツ
  • ブラケット記法: 素朴には \langle\phi|\psi\rangle。KaTeX なら \braket\Braket がそのまま使える。LaTeX では physics / braket パッケージ

ベクトルの積の記法は分野ごとの方言が強い領域です。迷ったら本記事の早見表と分野別の使い分け表に戻れば、すぐ正しいコマンドにたどり着けるはずです。

次のステップとして、以下の記事も参考にしてください。

関連記事:LaTeX数式記法シリーズ

LaTeX数式記法 完全ガイド(実用チートシート)
記号・環境・コマンドを一覧で引けるチートシート
画像なし
LaTeXで行列を書く(pmatrix・転置・逆行列)
pmatrix・bmatrix・転置・逆行列の実例集
画像なし
LaTeXで太字ベクトル(bm・boldsymbol・vec)
bm・boldsymbol・mathbfの違いと使い分け
画像なし
LaTeXで絶対値・ノルム(|x|・lVert)
縦線1本と2本の使い分けとサイズ調整
LaTeXで勾配∇・ベクトル解析記号
nabla・発散・回転・ラプラシアンの書き方