付録
線形代数的構造の補足
内積は方程式の別表現
ベクトルの内積は、一次関数や多項式の式を行列形式で表現する手段として捉えることができる。以下の2つの式は、見た目は異なるが、同じ意味を持っている。
一次関数の例:
$$
y = ax + b
$$
これは、次のようにベクトルの内積として表現できる:
$$
y=\begin{bmatrix} a & b \end{bmatrix} \begin{bmatrix} x \\ 1 \end{bmatrix}
$$
二次関数の例:
$$
y=ax^2+bx+c
$$
これも同様に、次のように書き換えられる:
$$
y = \begin{bmatrix} a & b & c \end{bmatrix} \begin{bmatrix} x^2 \\ x \\ 1 \end{bmatrix}
$$
このように、多項式の係数ベクトルと入力ベクトルの内積として関数を表現することで、数式の構造がより明確になる。
入力・変換・出力の分離による構造化
次のような2変数の連立一次方程式を考える:
\begin{cases}
x’ = ax + by \\
y’ = cx + dy
\end{cases}
この式は、入力・変換係数・出力の3つの要素に分解して、以下のように行列形式で表現できる:
$$
\begin{bmatrix}
x’ \\
y’
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
$$
さらに、出力から元の入力を求めたい場合は、逆行列を用いて次のように表現できる:
$$
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}^{-1}
\begin{bmatrix}
x’ \\
y’
\end{bmatrix}
$$
これは、連立方程式を解く操作と数学的に同等である。
入出力の拡張とバッチ処理の構造
上記の変換を複数の入力に対して同時に適用する場合、列ベクトルの集合として扱うことで、行列演算によるバッチ処理が可能になる。
2組の入力・出力の場合:
$$
\begin{bmatrix}
x_1′ & x_2′ \\
y_1′ & y_2′
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 \\
y_1 & y_2
\end{bmatrix}
$$
一般化してn組の入力・出力の場合:
$$
\begin{bmatrix}
x_1′ & x_2′ & \cdots & x_n’ \\
y_1′ & y_2′ & \cdots & y_n’
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 & \cdots & x_n \\
y_1 & y_2 & \cdots & y_n
\end{bmatrix}
$$
このように、入力ベクトルを列方向に並べることで、複数のデータに対して一括で変換を適用でき、GPUなどによる並列処理にも自然に対応できる。
抽象構造理解のための圏論的補足
圏とは何か?(構造的直感の補足)
圏論は、数学における「構造とその変換」を抽象的に捉える理論である。圏とは、ざっくり言えば「もの(対象)と、それらをつなぐ変換(射)を集めた世界」のこと。たとえば、集合と写像、型と関数、空間と変換など、何かしらの“構造”と“構造を変える操作”があれば、それは圏としてみなすことができる。
圏の基本構成は以下の通り:
- 対象(object):構造そのもの。集合、型、空間など。
- 射(morphism):対象間の変換。関数、写像、構造保存操作など。
- 合成(composition):射を連続して適用する操作。関数合成や行列積に対応。
- 恒等射(identity):各対象に対して定義される「何もしない」変換。
このような構造は、集合論的な「ものの集まり」と、群論的な「変換の組み合わせ方」の両方を抽象化しており、関数型プログラミングやAIモデルの設計にも応用される。
さらに、圏と圏の間の対応関係を記述するのが関手(functor)である。関手は、ある圏の対象と射を、別の圏の対象と射に対応させる操作であり、変換の構造(合成や恒等性)を保ったまま写像する。これは、抽象的な構造を別の文脈に翻訳する装置として機能する。
「カテゴライズ」と圏論の違い(補足)
日常的に使われる「カテゴライズ(categorize)」という言葉は、一般には「分類する」「グループに分ける」といった意味で用いられる。これは、集合論的な視点に近く、対象の属性や条件に基づいて静的に整理する操作である。
一方、圏論における「カテゴリ(圏)」は、単なる分類ではなく、対象間の変換や構造の関係性そのものを記述する枠組みである。圏論は「分類」ではなく、「構造の写像と合成」を扱う。
つまり、「カテゴライズ」は構造の“中”での整理であり、圏論は構造の“間”をつなぐ視点である。
思考スタイルと数学的構造の対応(補足)
思考のスタイルもまた、数学的構造と対応させることでその性質が見えてくる:
- ロジカルシンキング
- 集合論的な「要素の関係性」に基づく思考。前提とルールに従って、順を追って結論を導く。
- クリティカルシンキング
- 群論的な「構造の整合性」を問う思考。前提や論理の妥当性を検証し、反例や矛盾を探る。
- ラテラルシンキング
- 圏論的な「構造間の写像と再構成」によって新たな視点を得る思考。枠組みそのものを変えて、異なる構造の間を横断する。
このように、圏論は「構造の中で考える」のではなく、「構造をまたいで考える」ための視点を提供する。本文で扱う抽象モデル(OOP、Attention、関数型など)を統一的に捉えるための補助線として、圏論的な理解は有効である。
参考文献・リンク
- 斎藤康毅 (2016). 『ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装』 , オライリー・ジャパン.
- Vaswani, A. et al. (2017). Attention is All You Need. [arXiv:1706.03762] https://arxiv.org/abs/1706.03762
- Jay Alammar(2018). The Illustrated Transformer. https://jalammar.github.io/illustrated-transformer/
- 斎藤康毅 (2018). 『ゼロから作るDeep Learning ②―自然言語処理編』, オライリー・ジャパン.
予備校のノリで学ぶ線形代数~単位も安心 速習テスト対策5講義付き! (ヨビノリ)
ゼロから学ぶ線形代数
ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装
ゼロから作るDeep Learning ②―自然言語処理編
コメント