論文を読んでいると、同じ「積」を表す記号なのに $\otimes$、$\oplus$、$\odot$、$\times$ とさまざまな記号が登場して困ったことはありませんか。これらは見た目が似ていますが、意味もLaTeXコマンドも全く異なります。「行列のテンソル積をどう書くか」「LSTMのゲート演算の⊙は何コマンドか」「量子コンピュータの論文でよく見る⊗の書き方は」といった疑問に、この記事はひとまとめで答えます。
なぜ記号の使い分けが重要なのかを例で示します。機械学習の論文で
$$ \bm{h}_t = \bm{o}_t \times \tanh(\bm{C}_t) $$
と書くと「$\bm{o}_t$ と $\tanh(\bm{C}_t)$ のベクトル外積」に見えてしまいます。正しくはアダマール積(要素ごとの積)を意図しているので、
$$ \bm{h}_t = \bm{o}_t \odot \tanh(\bm{C}_t) $$
と書かなければなりません。記号一つ違うだけで意味が変わるのです。
応用先は二つあります。ひとつは量子コンピュータ・線形代数の論文。テンソル積 $\otimes$ とクロネッカー積は量子ビットの合成や多体系の記述に不可欠です。もうひとつは機械学習の実装論文。LSTMやGRUのゲート演算、バッチ正規化のアダマール積 $\odot$ は ML 論文で最頻出の記号の一つです。
本記事の内容
- やりたいことから引ける逆引き早見表
- $\otimes$(\otimes)の使い方:テンソル積・クロネッカー積・量子状態の合成
- $\oplus$(\oplus)の使い方:直和と XOR
- $\odot$(\odot)の使い方:アダマール積と機械学習のゲート演算
- $\times$(\times)の3つの意味:直積・外積・掛け算
- $\circ$(\circ)と $*$(\ast):写像の合成と畳み込み
- 大型演算子 \bigotimes・\bigoplus・\bigodot
- 使い分け実戦ガイド(行列の積はどれ?)
- KaTeX互換表とよくある間違い

この図が記事全体の地図です。「積」を表す記号は用途によって8種類以上あり、それぞれ別のコマンドを使います。図の左上 $\otimes$ から右下 $\cdot$ まで、各記号の意味とコマンドを対応させてあります。記事を読み進める前に、まずここで全体像をつかんでおきましょう。
逆引き早見表:やりたいことからコマンドを引く
| やりたいこと | コマンド | 表示 | 条件・備考 |
|---|---|---|---|
| テンソル積・クロネッカー積 | \otimes |
$\otimes$ | KaTeX対応。標準コマンド |
| 量子状態の合成 $\|0\rangle\otimes\|1\rangle$ | \otimes |
$\otimes$ | 同上 |
| 直和(ベクトル空間の合成) | \oplus |
$\oplus$ | KaTeX対応。標準コマンド |
| XOR(排他的論理和) | \oplus |
$\oplus$ | 情報科学の慣習 |
| アダマール積(要素ごとの積) | \odot |
$\odot$ | KaTeX対応。MLで頻出 |
| 集合の直積 $A\times B$ | \times |
$\times$ | KaTeX対応。標準コマンド |
| ベクトルの外積 | \times |
$\times$ | 同上 |
| 写像の合成 $f\circ g$ | \circ |
$\circ$ | KaTeX対応 |
| 畳み込み $(f*g)(t)$ | \ast |
$\ast$ | KaTeX対応 |
| くさび積(微分形式) | \wedge |
$\wedge$ | KaTeX対応 |
| 内積(ドット積) | \cdot |
$\cdot$ | KaTeX対応 |
| 大型テンソル積(総積) | \bigotimes |
$\bigotimes$ | KaTeX対応 |
| 大型直和(総和) | \bigoplus |
$\bigoplus$ | KaTeX対応 |
| 大型アダマール積 | \bigodot |
$\bigodot$ | KaTeX対応 |
細かい説明に入る前に、全コマンドをここから引けるようにしました。各行の詳細と使い分けの根拠は以降のセクションで丁寧に解説します。
1. ⊗(テンソル積・クロネッカー積):\otimes
直感:「2つの空間を組み合わせて大きな空間を作る」
$\otimes$ の直感は「2つの数学的対象を組み合わせて、より大きな対象を作る演算」です。ベクトルのテンソル積なら、$m$ 次元と $n$ 次元のベクトルを合わせて $mn$ 次元の空間を作ります。行列のクロネッカー積なら、$A \otimes B$ は $A$ の各要素に $B$ をまるごとかけた「ブロック行列」になります。
KaTeXでの書き方はシンプルです。
$$ A \otimes B $$
$$
A \otimes B
$$
インラインなら $A \otimes B$ と書くだけです。\otimes は KaTeX の標準コマンドで追加パッケージは不要です。
クロネッカー積の具体的な計算
クロネッカー積 $A \otimes B$ は「$A$ の $(i,j)$ 要素に $B$ をまるごとかけたものを $(i,j)$ ブロックに置く」ブロック行列です。$2 \times 2$ 行列で具体的に計算してみましょう。
$A$ が $m \times n$ 行列、$B$ が $p \times q$ 行列のとき、$A \otimes B$ は $mp \times nq$ 行列になります。一般的な定義式は次の通りです。
$$ A \otimes B = \begin{pmatrix} a_{11}B & a_{12}B & \cdots & a_{1n}B \\ a_{21}B & a_{22}B & \cdots & a_{2n}B \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}B & a_{m2}B & \cdots & a_{mn}B \end{pmatrix} $$
$A$ の各要素 $a_{ij}$ の位置にそのスカラー倍の $a_{ij}B$ を置いた構造が一目でわかります。
$$ \begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix} \otimes \begin{pmatrix}0 & 5 \\ 6 & 7\end{pmatrix} = \begin{pmatrix} 0 & 5 & 0 & 10 \\ 6 & 7 & 12 & 14 \\ 0 & 15 & 0 & 20 \\ 18 & 21 & 24 & 28 \end{pmatrix} $$
左上ブロック(1行目・1列目のブロック)が $1 \cdot B$、右上が $2 \cdot B$、左下が $3 \cdot B$、右下が $4 \cdot B$ になっています。

図を見ると、右の $4 \times 4$ 行列が2色のブロックに分かれているのがわかります。青ブロックが $A$ の偶数番インデックスの要素に対応し、橙ブロックが奇数番インデックスに対応しています。クロネッカー積の「ブロック構造」が視覚的に確認できます。
量子状態の合成
量子コンピュータの論文でよく見る $|0\rangle \otimes |1\rangle$ は、2つの量子ビットの状態を合成する記法です。1量子ビットの状態空間はそれぞれ2次元ですが、2量子ビットの合成空間は $2 \times 2 = 4$ 次元になります。
$$ |0\rangle = \begin{pmatrix}1 \\ 0\end{pmatrix}, \quad |1\rangle = \begin{pmatrix}0 \\ 1\end{pmatrix} $$
テンソル積を計算すると、
$$ |0\rangle \otimes |1\rangle = \begin{pmatrix}1 \cdot |1\rangle \\ 0 \cdot |1\rangle\end{pmatrix} = \begin{pmatrix}1 \cdot 0 \\ 1 \cdot 1 \\ 0 \cdot 0 \\ 0 \cdot 1\end{pmatrix} = \begin{pmatrix}0 \\ 1 \\ 0 \\ 0\end{pmatrix} = |01\rangle $$
という4次元ベクトルになります。テンソル積は「状態空間を合成して次元を拡大する」演算なのです。

図からわかるように、$|0\rangle=(1,0)^T$ と $|1\rangle=(0,1)^T$ をテンソル積すると、4次元の結果 $(0,1,0,0)^T$ が得られます。「1量子ビットが 2 次元なら、2量子ビットは 4 次元」という次元の拡大が、テンソル積の核心です。
$\otimes$ の省略形:\ket と Dirac記法
物理の論文では $|0\rangle \otimes |1\rangle$ を単に $|0\rangle|1\rangle$ または $|01\rangle$ と省略することが多いです。LaTeXで $|0\rangle$ を書くには次のようにします。
% 角かっこ記法(最もシンプル)
$|0\rangle$
$|0\rangle \otimes |1\rangle$
% langle/rangle を使う場合(内積との対比)
$\langle 0 | 1 \rangle$
\rangle と \langle は KaTeX で標準対応しています。> や < をそのまま使うとスペーシングが崩れるので、専用コマンドを使いましょう。
ここまでで「積んで大きくする」$\otimes$ の用法を押さえました。次は「2つの空間を並べて合成する」$\oplus$ に進みます。
2. ⊕(直和・XOR):\oplus
直感:「2つのものを独立に並べて1つにする」
$\oplus$ は「2つの数学的対象を独立に組み合わせる」演算です。$\otimes$ が「かけて拡大する」のに対し、$\oplus$ は「並べて合わせる」イメージです。
数学(線形代数)では 直和、情報科学では XOR(排他的論理和) を表します。どちらも同じ \oplus コマンドを使いますが、文脈によって意味が全く異なります。
% ベクトル空間の直和
$V \oplus W$
% XOR(排他的論理和)
$a \oplus b$
$$ V \oplus W \qquad a \oplus b $$
ベクトル空間の直和
ベクトル空間 $V$ と $W$ の直和 $V \oplus W$ は、2つの空間を「独立に」合わせた空間です。$V$ が $x$ 方向の 1 次元空間で、$W$ が $y$ 方向の 1 次元空間なら、$V \oplus W$ は $xy$ 平面という 2 次元空間になります。
直和の次元は加法的です。
$$ \dim(V \oplus W) = \dim V + \dim W $$
$\otimes$ との重要な違いは次の点です。
- $V \otimes W$(テンソル積): 次元は $\dim V \times \dim W$(掛け算)
- $V \oplus W$(直和): 次元は $\dim V + \dim W$(足し算)
XOR(排他的論理和)
情報科学での $a \oplus b$ は「$a$ と $b$ が異なれば 1、同じなら 0」という演算です。
| $a$ | $b$ | $a \oplus b$ |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR の重要な性質として $a \oplus a = 0$(自分自身と XOR すると消える)があり、暗号・誤り訂正符号・ビット操作で活用されます。
$$ a \oplus b \oplus a = b $$
という等式は「$a$ で暗号化したものを再び $a$ で XOR すると元に戻る」という一時暗号パッドの原理です。

左パネルが線形代数の直和($V$ 軸方向と $W$ 軸方向を合わせて平面になる)、右パネルが XOR の真理値表です。同じ $\oplus$ 記号が全く異なる2つの文脈で使われていることがわかります。どちらの意味かは文脈から判断する必要があります。
ニューラルネットワークの残差接続(スキップ接続)でも $\oplus$ が使われることがあります。
$$ \bm{h}^{(l+1)} = \bm{h}^{(l)} \oplus F(\bm{h}^{(l)}) $$
この場合は「直和」ではなく「要素ごとの加算(ベクトルの和)」として $+$ の代わりに $\oplus$ を使っているケースが多く、文脈の確認が必要です。
$\oplus$ の使い方を押さえたところで、機械学習で頻出する $\odot$(アダマール積)に進みましょう。
3. ⊙(アダマール積・要素ごとの積):\odot
直感:「同じ場所の要素同士を掛ける」
アダマール積(Hadamard product)$A \odot B$ は、同じサイズの行列やベクトルの対応する位置の要素同士を掛ける演算です。行列積 $AB$ が「行と列の内積」を計算するのに対し、アダマール積は「位置が同じ要素のスカラー掛け算」です。
$$ \begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix} \odot \begin{pmatrix}2 & 0 \\ 1 & 3\end{pmatrix} = \begin{pmatrix}1 \times 2 & 2 \times 0 \\ 3 \times 1 & 4 \times 3\end{pmatrix} = \begin{pmatrix}2 & 0 \\ 3 & 12\end{pmatrix} $$
% アダマール積
$A \odot B$
$$
A \odot B
$$
入力行列と同じ $2 \times 2$ のサイズが保たれている点に注目してください。行列積では $2 \times 2$ 同士なら結果も $2 \times 2$ になりますが、クロネッカー積では $4 \times 4$ に拡大されます。3種類の「積」の違いを並べた比較図を見てみましょう。

3つのパネルを見ると、入力が同じ $A$ と $B$ でも、演算によって結果のサイズが全く異なることがわかります。アダマール積 $\odot$ は $2 \times 2$ のまま、行列積 $AB$ も $2 \times 2$(ただし値が違う)、クロネッカー積 $\otimes$ は $4 \times 4$ に拡大されます。
機械学習でのアダマール積:LSTMゲート演算
アダマール積 $\odot$ は機械学習の論文で特に頻出します。LSTMの各ゲート演算が代表例です。
$$ \bm{f}_t = \sigma(\bm{W}_f \cdot [\bm{h}_{t-1}, \bm{x}_t] + \bm{b}_f) $$
$$ \bm{C}_t = \bm{f}_t \odot \bm{C}_{t-1} + \bm{i}_t \odot \tilde{\bm{C}}_t $$
$$ \bm{h}_t = \bm{o}_t \odot \tanh(\bm{C}_t) $$
ここで $\odot$ は「要素ごとに $\bm{f}_t$(0〜1の値)を掛けて情報を取捨選択する」ゲート操作です。$\bm{f}_t$ の各要素が「どの情報をどの程度通すか」を決めるマスクとして機能します。

左のパネルからわかるように、アダマール積は対応する位置の要素を独立に掛け算するだけです。右パネルの LSTM の更新式(紫枠の2行)を見ると、$\odot$ がゲートとして機能し、セル状態 $\bm{C}_{t-1}$ のうちどの次元を「忘れるか」($\bm{f}_t$ で制御)、どの次元を「追加するか」($\bm{i}_t$ で制御)を要素ごとに決めていることが読み取れます。
\odot と \cdot の混用に注意
一部の論文では内積に \cdot を、アダマール積に \odot を使い分けずに混用することがあります。どちらもドット系の記号なので混乱しがちですが、区別は重要です。
% アダマール積(要素ごとの積、行列)
$A \odot B$ % ← \odot を使う
% 内積(スカラーを返す)
$\bm{a} \cdot \bm{b}$ % ← \cdot を使う
% スカラーの掛け算
$2 \cdot x$ % ← \cdot を使う
\odot と \cdot では見た目(丸の大きさ)も意味も違います。論文を書くときは必ず使い分けましょう。
3つの大きな「丸積記号」を整理しました。次は最もポピュラーだが最も曖昧な \times の使い分けに進みます。
4. ×(直積・外積・掛け算):\times
直感:文脈で3つの顔を持つ万能記号
\times は LaTeX で最もよく使われる積記号の一つです。しかし同じ \times コマンドを使っていても、文脈によって意味が全く変わります。
% 集合の直積
$\mathbb{R} \times \mathbb{R}$
% ベクトルの外積
$\bm{a} \times \bm{b}$
% 掛け算の記号
$2 \times 3 = 6$
$$ \mathbb{R} \times \mathbb{R} \qquad \bm{a} \times \bm{b} \qquad 2 \times 3 = 6 $$
集合の直積
集合 $A$ と $B$ の直積 $A \times B$ は、$A$ の要素と $B$ の要素の全ての組み合わせからなる順序対の集合です。
$$ A \times B = \{(a, b) \mid a \in A,\, b \in B\} $$
例えば $A = \{0, 1\}$、$B = \{a, b, c\}$ なら
$$ A \times B = \{(0,a),\, (0,b),\, (0,c),\, (1,a),\, (1,b),\, (1,c)\} $$
の 6 要素になります。$|A \times B| = |A| \times |B|$ という関係が成り立ちます。
機械学習では $\mathbb{R}^m \times \mathbb{R}^n$ のように特徴空間の次元を指定するときに使います。
$$ f: \mathbb{R}^m \times \mathbb{R}^n \to \mathbb{R} $$
これは「$m$ 次元ベクトルと $n$ 次元ベクトルを入力にとる関数」という意味です。
ベクトルの外積
3 次元ベクトル $\bm{a}$ と $\bm{b}$ の外積(クロス積)$\bm{a} \times \bm{b}$ は、両方のベクトルに直交する新しいベクトルを返します。
$$ \bm{a} \times \bm{b} = \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}| = |\bm{a}||\bm{b}|\sin\theta$($\theta$ は $\bm{a}$ と $\bm{b}$ のなす角)です。電磁気学のローレンツ力 $\bm{F} = q(\bm{v} \times \bm{B})$ や角運動量 $\bm{L} = \bm{r} \times \bm{p}$ で頻出します。
外積は3次元専用です。2次元では $\bm{a} \times \bm{b}$ はスカラー($z$ 成分のみ)を返します。一般次元での外積の一般化は楔積(wedge product) $\bm{a} \wedge \bm{b}$ を使います(後述)。

左パネルが集合の直積(格子点として表現)、中央パネルが外積($\bm{a}$ と $\bm{b}$ に直交するベクトルが紙面方向に出る)、右パネルが3つの意味の対比表です。3つの意味は全て \times で書きますが、記号のすぐ周りにある文脈(集合か、ベクトルか、数値か)で意味が決まります。
\times の使い方を整理しました。次は写像の合成と畳み込みに使う \circ と \ast に進みます。
5. ∘(合成)と ∗(畳み込み):\circ と \ast
写像の合成:\circ
$f \circ g$ は「$g$ を先に適用し、その結果に $f$ を適用する」写像の合成です。
$$ (f \circ g)(x) = f(g(x)) $$
$f \circ g$
$$
(f \circ g)(x) = f(g(x))
$$
機械学習ではニューラルネットワークの層を合成として記述するときに使います。
$$ F = f^{(L)} \circ f^{(L-1)} \circ \cdots \circ f^{(1)} $$
これは「第1層から第 $L$ 層まで順番に適用する」という多層ネットワークの定義です。
注意点として、合成の順序は右から左です。$f \circ g$ は「$g$ が先、$f$ が後」です。これは関数の記法 $f(g(x))$ と一致しています。
畳み込み:\ast と \star
信号処理や確率論での畳み込み $(f * g)(t)$ は \ast を使います。
$$ (f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t – \tau)\, d\tau $$
$(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t - \tau)\, d\tau$
\star($\star$)は星形の記号で、群の演算や特殊な積に使われます。\ast($\ast$)より線が多く、より目立ちます。
$f \ast g$ % 畳み込み(アスタリスク形)
$f \star g$ % 星形(より目立つ、グループ演算など)
楔積(微分形式):\wedge
微分形式や外積代数での楔積は \wedge($\wedge$)を使います。
$$ \omega = dx \wedge dy $$
$$
\omega = dx \wedge dy
$$
楔積は外積の一般化であり、$n$ 次元空間での体積要素や向きを表します。
これらの「2引数の積」を押さえたところで、大きな $\Sigma$ のように「多数の要素の積」を取る大型演算子を見ましょう。
6. 大型演算子:\bigotimes・\bigoplus・\bigodot
総テンソル積:\bigotimes
$\bigotimes$ は「テンソル積を多数の要素に適用する」大型演算子です。$\sum$ が足し算の大型版なら、$\bigotimes$ はテンソル積の大型版です。
$$ \bigotimes_{k=1}^{n} V_k = V_1 \otimes V_2 \otimes \cdots \otimes V_n $$
$$
\bigotimes_{k=1}^{n} V_k
$$
量子コンピュータでは $n$ 量子ビットの状態空間を表すのによく使います。
$$ \mathcal{H} = \bigotimes_{k=1}^{n} \mathcal{H}_k $$
総直和:\bigoplus
$\bigoplus$ は複数のベクトル空間の直和を表す大型演算子です。
$$ V = \bigoplus_{k=0}^{n} V_k = V_0 \oplus V_1 \oplus \cdots \oplus V_n $$
$$
V = \bigoplus_{k=0}^{n} V_k
$$
表現論や代数学で,直既約成分への分解を表すときに使います。
大型版のサイズ比較
インライン数式内($...$)と display数式内($$...$$)では自動的にサイズが変わります。
% インライン:小さめ
$\bigotimes_{k=1}^{n} V_k$
% ディスプレイ:上下に添字が来て大きい
$$
\bigotimes_{k=1}^{n} V_k
$$
インライン: $\bigotimes_{k=1}^{n} V_k$(添字が右側に来る)、ディスプレイ: 添字が上下に来て見やすくなります。
\prod($\prod$)はスカラーの掛け算の総積記号です。テンソル積とは別物なので混用しないよう注意してください。
$\bigotimes$ と \prod の使い分けは次の通りです。
| 演算子 | 適用対象 | 例 |
|---|---|---|
\prod |
スカラー・数の積 | $\prod_{k=1}^{n} a_k = a_1 a_2 \cdots a_n$ |
\bigotimes |
ベクトル空間・行列のテンソル積 | $\bigotimes_{k=1}^{n} V_k$ |
\bigodot |
行列のアダマール積 | $\bigodot_{k=1}^{n} A_k$ |
大型演算子の使い分けを押さえました。次は実際の論文を書くときに「どの記号を使うか」を一瞬で判断できる使い分けガイドに進みます。
7. 使い分け実戦ガイド:「行列の積はどれ?」
機械学習論文で最も悩む「行列の積はどの記号を使うべきか」を対応表にまとめます。
| 演算 | 記号 | コマンド | NumPy での対応 |
|---|---|---|---|
| 行列積(線形変換) | $AB$(並置)/ $\bm{A}\bm{B}$ | 記号不要 | A @ B |
| クロネッカー積(ブロック行列) | $A \otimes B$ | \otimes |
np.kron(A, B) |
| アダマール積(要素ごと) | $A \odot B$ | \odot |
A * B |
| 外積(ベクトル→行列) | $\bm{u} \bm{v}^T$(並置) / $\bm{u} \otimes \bm{v}$ | \otimes |
np.outer(u, v) |
| ベクトルの外積(3D) | $\bm{a} \times \bm{b}$ | \times |
np.cross(a, b) |
| 内積(スカラー) | $\bm{a} \cdot \bm{b}$ | \cdot |
np.dot(a, b) |
特に混乱しやすいのは「外積」という語の多義性です。
- ベクトルの外積(クロス積):$\bm{a} \times \bm{b}$。3次元専用で結果はベクトル。
\times - 外積(テンソル積としての列×行):$\bm{u} \otimes \bm{v} = \bm{u}\bm{v}^T$。結果は行列。
\otimes - 楔積(微分形式):$\bm{u} \wedge \bm{v}$。結果は2-ベクトル。
\wedge
機械学習論文では「外積積(outer product)」を $\bm{u} \otimes \bm{v}$ または $\bm{u}\bm{v}^T$ と書くことが多く、\times を使うのは間違いです。

フローチャートを読み解くと、判断の順序は「ブロック行列への拡大か → 要素ごとの積か → 空間の合成か → 集合の直積/外積か → 写像合成/畳み込みか」という5段階です。それぞれ \otimes、\odot、\oplus、\times、\circ/\ast に対応します。「どれを使うべきかわからない」ときはこのフローを参照してください。
8. KaTeX互換表
本ブログ(KaTeX使用)での各記号の対応状況をまとめます。
| コマンド | 表示 | KaTeX対応 | 備考 |
|---|---|---|---|
\otimes |
$\otimes$ | 対応 | テンソル積・クロネッカー積 |
\oplus |
$\oplus$ | 対応 | 直和・XOR |
\odot |
$\odot$ | 対応 | アダマール積 |
\times |
$\times$ | 対応 | 直積・外積・掛け算 |
\circ |
$\circ$ | 対応 | 写像の合成 |
\ast |
$\ast$ | 対応 | 畳み込み |
\star |
$\star$ | 対応 | 星形演算子 |
\wedge |
$\wedge$ | 対応 | 楔積・論理積 |
\cdot |
$\cdot$ | 対応 | 内積・ドット積 |
\bigotimes |
$\bigotimes$ | 対応 | 大型テンソル積演算子 |
\bigoplus |
$\bigoplus$ | 対応 | 大型直和演算子 |
\bigodot |
$\bigodot$ | 対応 | 大型アダマール積演算子 |
\otimes with \limits |
$\bigotimes\limits_{k=1}^{n}$ | 対応 | \limits で添字位置を強制変更 |
全てのコマンドが KaTeX で問題なく動作します。LaTeX(PDF出力)との互換性の面では、全て amsmath/amssymb または標準パッケージで対応しており、追加パッケージなしで使えます。
9. よくある間違いと修正
間違い1:テンソル積に \times を使う
最も多い間違いはテンソル積に \times を使ってしまうことです。
% NG:行列のクロネッカー積に \times は使わない
$A \times B$ % 「外積」または「直積」に見える
% OK:テンソル積・クロネッカー積には \otimes を使う
$A \otimes B$
物理・量子力学の論文で「テンソル積」と言えば \otimes が標準です。
間違い2:アダマール積に \cdot を使う
% NG:\cdot は「内積」や「スカラー積」に見える
$A \cdot B$ % アダマール積を意図しているのに曖昧
% OK:アダマール積(要素ごとの積)には \odot を使う
$A \odot B$
ML論文では \odot が「アダマール積」の事実上の標準です。\circ(合成記号)をアダマール積に使う論文もありますが混乱を招くので避けましょう。
間違い3:\bigotimes と \otimes のサイズ混同
% インライン内で大きな演算子を使いたいとき
$\otimes_{k=1}^{n}$ % ← \otimes を総積に使うのは NG(サイズが小さい)
$\bigotimes_{k=1}^{n}$ % ← 大型演算子の \bigotimes を使う
% ディスプレイ数式では自動的に大きくなる
$$
\bigotimes_{k=1}^{n} V_k
$$
\otimes は2項演算子用($A \otimes B$ の形)、\bigotimes は総積演算子用($\bigotimes_{k=1}^n V_k$ の形)です。
間違い4:\oplus を足し算として使う
% NG:\oplus は加算の + の代わりではない
$\bm{h}^{(l)} \oplus F(\bm{h}^{(l)})$ % 直和なのか加算なのか曖昧
% OK:ベクトルの加算には + を使う
$\bm{h}^{(l)} + F(\bm{h}^{(l)})$
% OK:直和を意図するなら \oplus でもよいが、意味を明示する
$\bm{h}^{(l)} \oplus F(\bm{h}^{(l)})$ % ← 直和の意味を文中に明記する
一部の論文では残差接続を $\oplus$ で書きますが、読者に直和(別空間の合成)と加算(同空間の足し算)を区別させるためには本文での説明が必要です。
間違い5:\cdot を外積に使う
% NG:ベクトルの外積(クロス積)に \cdot は NG(内積になる)
$\bm{a} \cdot \bm{b}$ % 内積(スカラーを返す)
% OK:3次元のベクトルの外積には \times を使う
$\bm{a} \times \bm{b}$ % 外積(ベクトルを返す)
内積 $\bm{a} \cdot \bm{b}$ は「スカラーを返す」、外積 $\bm{a} \times \bm{b}$ は「ベクトルを返す」という結果の型の違いも覚えておきましょう。
10. 選択フローのまとめ表
「どのコマンドを使うか」を一目で判断できる要約表です。
| 状況 | 使う記号 | コマンド |
|---|---|---|
| 量子ビットの合成 | $\otimes$ | \otimes |
| クロネッカー積(ブロック行列) | $\otimes$ | \otimes |
| ベクトル空間の直和 | $\oplus$ | \oplus |
| XOR(ビット演算) | $\oplus$ | \oplus |
| 要素ごとの積(LSTMゲートなど) | $\odot$ | \odot |
| 集合の直積 $A \times B$ | $\times$ | \times |
| ベクトルの外積(3次元) | $\times$ | \times |
| 掛け算 $2 \times 3$ | $\times$ | \times |
| 写像の合成 $f \circ g$ | $\circ$ | \circ |
| 畳み込み $(f * g)$ | $*$ | \ast |
| 楔積(微分形式) | $\wedge$ | \wedge |
| 多数のテンソル積 | $\bigotimes$ | \bigotimes |
迷ったときの三原則:
1. テンソル積・クロネッカー積なら \otimes
2. 要素ごとの積(アダマール積)なら \odot
3. 空間の合成(直和)か XOR なら \oplus
この3つを覚えれば、機械学習・量子コンピュータ・線形代数の主要な「積」の 90% はカバーできます。
まとめ
本記事では、LaTeX/KaTeX で「積」を表す記号の書き方と使い分けをリファレンス形式で解説しました。
| 記号 | コマンド | 一言説明 |
|---|---|---|
| $\otimes$ | \otimes |
テンソル積・クロネッカー積・量子状態の合成 |
| $\oplus$ | \oplus |
直和・XOR |
| $\odot$ | \odot |
アダマール積・要素ごとの積(機械学習のゲート) |
| $\times$ | \times |
直積・外積・掛け算(3つの意味を文脈で使い分け) |
| $\circ$ | \circ |
写像の合成 |
| $\ast$ | \ast |
畳み込み |
| $\bigotimes$ | \bigotimes |
総テンソル積(大型演算子) |
記号の選択に迷ったら、まず「結果のサイズはどうなるか」を考えましょう。クロネッカー積 $\otimes$ は行列サイズが拡大する、アダマール積 $\odot$ は入力と同サイズ、行列積 $AB$ は行数・列数で決まる——この違いを意識することで自然に正しい記号に辿り着けます。
また、同じ \times が「集合の直積・外積・掛け算」に使われる多義性のように、記号の意味は必ず文脈とセットで判断してください。論文を書く際は、初出時に「ここで $\odot$ はアダマール積を表す」と明記する習慣をつけると読者に親切です。