STEP 5・モデル本体(Transformer)

線形変換(行列×ベクトル)― 配賦・組替の計算

記事で詰まったところ

「線形変換」「重み行列を掛ける」「別の空間へ写す」が、抽象的すぎて像が結べない。

機械学習ではこう言う

y=Wx。入力ベクトルに重み行列を掛けて別の空間へ写す。各出力は、各入力に係数を掛けた合計。

配賦計算/組替表

部門共通費の配賦そのもの。家賃・光熱費といった共通費(入力ベクトル)を、配賦基準(行列)で各部門へ配分する(出力ベクトル)。

行列の各行が「その部門が各共通費をどれだけ引き受けるか」の配賦率。行ごとに入力との積和を取ると、その部門への配賦額が出る。これがまさに行列×ベクトル。

試算表科目を F/S 科目へ組み替える「組替マトリクス」も同じ形。入力科目に組替係数を掛けて出力科目を作る。

言葉の対応表

microGPT(機械学習)
会計・簿記の言葉
y=Wx(行列×ベクトル)
共通費×配賦率=部門別配賦額
重み行列 W の各行
各部門の配賦率(合計100%)
別の空間へ写す
試算表科目→F/S科目の組替

触って確かめる

部門別配賦額(出力 y)
製造部門84
営業部門54
管理部門42
=
配賦率行列 W
家賃光熱費
製造部門0.50.4
営業部門0.30.3
管理部門0.20.3
×
共通費(入力 x)
家賃120
光熱費60
製造部門
84 万円
営業部門
54 万円
管理部門
42 万円

各部門の配賦額 =「配賦率の行 × 共通費」の積和。これが線形変換 y = W·x の正体。 共通費(入力)を、配賦基準(行列)で別の見え方(部門別=出力)へ写しています。合計 180 万円は保存される。

⚠️ NN の重みは負値や任意の値を取り、配賦率のように合計1とは限らない。ここは形の対応の例示。

実際のコード(microgpt.py L94-95)

この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。

def linear(x, w):
    return [sum(wi * xi for wi, xi in zip(wo, x)) for wo in w]

各出力行 wo について「重み×入力」の積和を取る=行列×ベクトル=共通費×配賦率の配賦計算。

出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)