1.

線形代数とは?AI に必要な行列・ベクトル・固有値・SVD の基礎

編集
この記事の要点
  • 線形代数はベクトルと行列を扱う数学。AI の世界では「データもモデルも行列演算」と言い切れるほど基礎
  • ディープラーニングの計算は巨大な行列の積に集約される(GPU 最適化の対象)
  • 最低限押さえるべき概念: ベクトル / 内積 / 行列積 / 転置 / 固有値・固有ベクトル / SVD / ノルム
  • 実装ライブラリ: NumPy(CPU)/ PyTorch・TensorFlow・JAX(GPU/TPU)

 

本稿は AI / 機械学習に必要な線形代数 の入門です。難しく聞こえる線形代数ですが、AI ではほぼ 「ベクトル / 行列を計算する」 という 1 点に集約されます。

なぜ AI に線形代数が必要なのか

現代の AI、特にディープラーニングは 大量の数値を行列としてまとめて計算 することで動いています。

場面線形代数の役割
画像入力ピクセルは行列(白黒)またはテンソル(RGB は 3 階)
テキスト入力単語をベクトルに変換(Embedding)して扱う
ニューラルネット 1 層本質は 「入力ベクトル × 重み行列 + バイアス」(アフィン変換)
畳み込み (CNN)カーネル行列をスライドさせて行列積を取る
Attention (Transformer)Q × K^T を計算しスコアを得る — まさに行列積
GPU が速い理由行列積を 並列計算 するのに最適化されているから

最低限おさえる概念

概念意味AI での使われ方
スカラー / ベクトル / 行列 / テンソル0 / 1 / 2 / N 次元の数値配列データもパラメータも全部これ
内積 (dot product)2 つのベクトルの要素積の和類似度計算 / Attention スコア
行列積 (matmul)行列同士の積NN の各層の計算
転置 (transpose)行と列を入れ替えるAttention の K^T、バックプロパゲーション
ノルム (norm)ベクトルの「長さ」(L1 / L2)正則化 / 損失関数 / コサイン類似度
逆行列 (inverse)A × A^(-1) = I になる行列線形回帰の閉形式解
固有値・固有ベクトルA·v = λ·v を満たす v と λPCA、グラフ解析
SVD (特異値分解)任意の行列を A = U·Σ·V^T に分解次元削減 / 推薦システム / LSA
固有値分解正方行列を P·D·P^(-1) の形に分解PCA、共分散行列の対角化
ランク (rank)独立な行・列の数過学習・データの本質的次元の判定

具体的にどう使われているか

手法本質
線形回帰y = X·w + b の w を最小二乗で解く(正規方程式 = 行列計算)
PCA (主成分分析)共分散行列の 固有値分解(または SVD)で次元削減
ニューラルネット各層は 「行列積 + 非線形関数」 の繰り返し
Word Embedding単語を 低次元ベクトル に圧縮 (Word2Vec / GloVe)
推薦システム行列因子分解 (Matrix Factorization) でユーザ×アイテム行列を分解
Transformer / AttentionQ (Query), K (Key), V (Value) の 行列積でスコア計算

実装で出てくる典型コード

import numpy as np

# ベクトルと行列
v = np.array([1, 2, 3])
A = np.array([[1, 2], [3, 4]])

# 内積
dot = np.dot(v1, v2)

# 行列積
C = A @ B  # Python 3.5+ の @ 演算子
C = np.matmul(A, B)

# 転置
A_T = A.T

# 逆行列
A_inv = np.linalg.inv(A)

# 固有値・固有ベクトル
eigvals, eigvecs = np.linalg.eig(A)

# SVD
U, S, V = np.linalg.svd(A)

学習のステップ

段階学ぶ内容
1. 計算ができるベクトル・行列の足し算・かけ算・転置・逆行列を手で計算できる
2. 幾何的に分かる行列を「空間の変換 (回転・拡大・射影)」として理解する
3. 固有値が分かる「変換しても向きが変わらない方向 = 固有ベクトル」「その伸び率 = 固有値」が腹落ちする
4. SVD まで進むSVD が「データの主軸を見つける万能ツール」と分かる
5. AI 実装で使えるNumPy / PyTorch で行列演算を読める・書ける

つまずきやすいポイント

  • 行列積は順序が重要: A·B ≠ B·A(可換ではない)
  • 形 (shape) を常に意識する: (m, n) × (n, k) = (m, k) のように内側の次元が一致しないとエラー
  • 逆行列は「正方行列」かつ「ランクが完全」でないと存在しない — 一般のデータ行列には使えないので疑似逆行列 (Moore-Penrose) や SVD を使う
  • 固有値分解は正方行列限定、SVD は任意の行列に使える(より汎用)
  • 大規模行列の固有値・SVD は計算量が大きいので、PCA でも一部の主成分のみ計算する近似手法を使う

使える教材・ライブラリ

種類名前
教科書(日本語)世界基準MIT教科書 Strang: 線形代数イントロダクション」 / 「ヨビノリ たくみ: 大学線形代数」
教科書(英語)Gilbert Strang「Introduction to Linear Algebra」/「Linear Algebra Done Right」(Axler)
動画3Blue1Brown 「Essence of Linear Algebra」(幾何的に圧倒的に分かりやすい)
計算ライブラリNumPy(基礎)/ PyTorch / TensorFlow / JAX(自動微分つき)
可視化matplotlib / seaborn

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 線形代数
  2. 微積分
  3. 確率統計
  4. 情報理論
  5. 最適化

最近更新/作成されたページ