機械学習における行列 — 重み行列と演算

機械学習での行列の使用方法を探求します:ニューラルネットワークの重み行列、データ前処理の特徴行列、バックプロパゲーションでの行列演算。

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計算に適切な行列レイアウトの選択)、特定のアーキテクチャが機能する理由の理解(例:トランスフォーマーのアテンションメカニズムはクエリ、キー、バリュー行列の行列乗算に基づいている)に不可欠です。

試してみる — Matrix Calculator

フルツールを開く