機械学習における行列 — 重み行列と演算
機械学習での行列の使用方法を探求します:ニューラルネットワークの重み行列、データ前処理の特徴行列、バックプロパゲーションでの行列演算。
Applications
詳細な説明
機械学習における行列
行列は機械学習の基本的なデータ構造です。データ表現からモデル計算まで、ほぼすべての操作に行列演算が関わります。
データとしての行列
m個のサンプルとn個の特徴を持つデータセットは m x n行列 Xとして表現されます:
X = | x11 x12 ... x1n | ← サンプル1
| x21 x22 ... x2n | ← サンプル2
| ... ... ... ... |
| xm1 xm2 ... xmn | ← サンプルm
ニューラルネットワークの重み行列
ニューラルネットワークの各層には重み行列 Wとバイアスベクトル bがあります。フォワードパスは以下を計算します:
output = activation(W * input + b)
784入力(28x28画像をフラット化)と128ニューロンの層の場合、Wは100,352個の学習可能なパラメータを含む 128 x 784行列 です。
MLでの主要な行列演算
- 行列乗算: フォワードパスとバックワードパス
- 転置: 勾配の計算(バックプロパゲーション)
- 逆行列: 線形回帰の閉形式解(正規方程式)
- 固有分解: 次元削減のためのPCA
- SVD: 潜在意味分析、推薦システム
バッチ処理
複数のサンプルを一度に処理するのは行列乗算です:
バッチ出力 (32x128) = バッチ入力 (32x784) * W^T (784x128)
これがGPU(行列乗算に最適化)がML学習を劇的に加速する理由です。
勾配計算
バックプロパゲーション中、勾配は行列演算を使用して計算されます:
dW = input^T * d_output (重みの勾配)
d_input = d_output * W (伝搬する勾配)
学習ループ全体は本質的に行列乗算、加算、要素ごとの演算の連続です。
ユースケース
行列演算の理解はニューラルネットワークをスクラッチから実装する場合、モデルアーキテクチャのデバッグ、パフォーマンスの最適化(GPU計算に適切な行列レイアウトの選択)、特定のアーキテクチャが機能する理由の理解(例:トランスフォーマーのアテンションメカニズムはクエリ、キー、バリュー行列の行列乗算に基づいている)に不可欠です。