みんなのAI
機械学習プレイグラウンド
読み込み中…

学ぶ

Ch.09

ヤコビ行列:多変数ベクトル関数の1次微分

チャプター別 数学図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。中級数学の流れを一覧で確認できます。

ヤコビアン: 入力が動くと出力は?

Ch.08 勾配は結果 1つ、Ch.09 ヤコビアン JJJ は 複数。左入力→右出力。まず 曲がる(fff)、次に 直線近似(JJJ)。

1. 入力格子2. f: 曲がる3. 小さな ▱4. J: 直線近似
入力 / Input出力 / OutputfJ→ 遠く: 格子が曲がる (非線形 f)

赤格子=座標、緑矢印=変換、橙 ▱=fff の小領域、紫 ▱=JJJ の近似。▱ が似ていれば f≈JΔxf\approx J\Delta\mathbf{x}f≈JΔx。

巨大な工場の機械を想像してください。ダイヤル(入力)が複数あり、計器盤(出力)の針も複数あります。1番と2番のダイヤルを同時にほんの少し回すと、3番と4番の針はそれぞれどれだけ動くでしょうか?
前章の 勾配(Gradient) が、結果(誤差)が1つだけのとき「最も急な上り坂」を示す 単独のコンパス だったとすれば、今回の ヤコビアン行列(Jacobian Matrix, JJJ) は、結果が複数あるとき、すべての入力とすべての出力の微細な相互作用を1枚の大きな表にまとめた 「究極の感度総合ダッシュボード」 です。
私たちが扱う世界や深層学習モデルは、遠くから見るとくねくねと予測しにくい非線形曲面(f\mathbf{f}f)です。しかしどんなに複雑な曲面でも、一点を拡大してその近傍だけ見れば、まるで真っ直ぐな直線や平面のように見えます。ヤコビアン行列はこの一瞬を平行四辺形格子(局所線形近似)で再現し、巨大なニューラルネットが誤差を追跡し自分自身を調整できる 奇跡の数学的道具 です。

ヤコビアン行列: 複数の入力が動くと出力は?

① 勾配 vs ヤコビアン — 答えが1つと複数
Ch.08 勾配は答えが 1つ のとき。「勉強を10分増やすと点数は何点上がる?」 ヤコビアンは答えが 複数 のとき。例: ロボット腕で肩·肘を少し動かすと、手の X と Y が それぞれ どれだけ変わるかを 1枚の表 にまとめたもの。Ch.08=コンパス1個、Ch.09=ダイヤルと計器をつなぐ 大きな表。
② 表の1マス JijJ_{ij}Jij​ — 「ダイヤル j → 針 i」
JijJ_{ij}Jij​ は難しく見えても、「jjj 番目の入力を少し回すと、iii 番目の出力はどれだけ動く?」 だけ。行=出力、列=入力。2×2 なら1行目は「1番目の結果が x, y にどう反応するか」。
③ Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx — 「少し動かすとだいたいこんなに」
入力を ほんの少し 動かす(Δx\Delta\mathbf{x}Δx)と、出力も ほんの少し 変わる(Δy\Delta\mathbf{y}Δy)。出力の変化 ≈ ヤコビアン × 入力の変化。遠くでは曲がった道でも、一点の近く では 短い直線 のように見える——上の図(曲線)と下の図(直線)の違いです。
④ 逆伝播 — 誤差を逆方向に送るとき表を掛ける
層が何段も重なっています。最後に「間違い」と出たら、前の層へ逆流 させて直す場所を探します。各層に小さな ヤコビアン表 があり、掛け合わせ ます(Jtotal=JL⋯J1J_{\text{total}}=J_L\cdots J_1Jtotal​=JL​⋯J1​)。表×表×表 と覚えれば十分です。
⑤ det⁡J\det JdetJ — 面積が何倍になったか · ロボット腕の警告灯
小さな 正方形 が 平行四辺形 に変形したとき、面積が何倍 かを示すのが det⁡J\det JdetJ(Ch.05)。∣det⁡J∣=6|\det J|=6∣detJ∣=6 → 6倍。腕が 完全に伸びる と det⁡J=0\det J=0detJ=0 — ある方向には 1mmも動けない 特異点(マヒ) の 警告 です。
1. ベクトル値関数: 複数の入力スティックと複数の出力スクリーン
これまでの関数は、ダイヤルをいくつ回しても結果(誤差)が1つだけ出る機械(スカラー関数)でした。しかしカメラのピクセル座標や、深層学習の中間層にある数百のニューロン値のように、結果そのものが ベクトル として出てくる場合の方がはるかに多いです。nnn 個の入力から mmm 個の出力が一斉に出る機械を ベクトル値関数 f:Rn→Rm\mathbf{f}:\mathbb{R}^n\to\mathbb{R}^mf:Rn→Rm と呼びます。入力スティックを少し触ると、数十の出力スクリーンが同時に揺れます。
2. 局所線形化: 拡大すれば丸い地球も平ら
上段ビジュアルのように、現実の変化は格子が曲がりくねる複雑な曲線(非線形)です。しかしある一点の近くを数万倍ズームインすると、曲線は短い直線のように、曲面は平面のように扱えます。微積分学の核心はこの狭い 局所 領域にあり、ヤコビアンはその平らに広げた写像の 傾き総合表 です。
3. ヤコビアン行列の定義: 究極の変化量要約
Jij=∂fi∂xjJ_{ij}=\frac{\partial f_i}{\partial x_j}Jij​=∂xj​∂fi​​ は複雑に見えますが、意味は単純です。「jjj 番目のダイヤルを1目盛り回すと、iii 番目の針は何目盛り動くか?」 を iii 行 jjj 列に書いた表です。多くのダイヤルを同時に少し回した Δx\Delta\mathbf{x}Δx に対し、出力の変化 Δy\Delta\mathbf{y}Δy を Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx という一行の行列積で予測できます。
4. 勾配(Ch.08)との関係: コンパスを積み上げた塔
出力が1つなら表は1行の 勾配 コンパス。出力が3つなら、各出力の勾配を3行積み上げた表になります。ヤコビアンは 各出力が持つ勾配を行として並べた巨大なコンパス集 と理解すれば完璧です。
5. 幾何学的魔法: つぶれた面積の倍率 (det⁡J\det JdetJ)
小さな正方形の入力データがヤコビアン変換を通ると、傾いた平行四辺形に変形します。面積が元の何倍になった(または縮んだ)かを示すのが行列式 det⁡J\det JdetJ です。∣det⁡J∣=6|\det J|=6∣detJ∣=6 なら、粘土のように伸びて単位面積が 6倍 になったことを意味します(Ch.05)。
一行: ヤコビアン JJJ は複数ダイヤルと複数計器の変化を完璧にまとめた 究極の感度表 です。狭い領域では Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx で複雑な変化を直線化し、深層学習が巨大な層を越えて誤差を逆流追跡(逆伝播)できる 最も重要な数学的心臓部 です。
深層学習は、数多くのヤコビアン行列が蜘蛛の巣のように絡み合った巨大工場 です。ReLU や Sigmoid などでデータが曲がっても、逆伝播(Backpropagation)は 局所線形化 の魔法で各層の ヤコビアン行列 を求めます。Ch.08 勾配が最終誤差だけのコンパスだったなら、層と層の間では数千のニューロンが互いに与える影響を表す巨大なヤコビアンが不可欠です。
結局、ネットワークの学習とは連鎖律(Chain Rule)に従いヤコビアン行列を次々と掛け合わせていく数学的過程にすぎません。人間の顔のような画像を生む GAN 生成器や、データを圧縮するオートエンコーダも「入力した潜在ノイズをほんの少しねじると、目の前の画像はどう歪んで変わるか?」をヤコビアン JJJ で読み取り、学習の方向を決めます。
1. 逆伝播(Backpropagation): 誤差が逆流する川
誤差を減らすには、最終層の誤差を入力層まで逆流させる必要があります。数十層(Layer)が積み上がっていても、各層の 局所ヤコビアンを踏み石のように掛ける (Jtotal=JL⋯J1J_{\text{total}}=J_L\cdots J_1Jtotal​=JL​⋯J1​) だけで、巨大なモデルでも全体の感度を一度に計算し重みを更新できます。
2. 確率密度の伸縮(正規化フロー / Normalizing Flows)
生成型 AI では、単純な粘土(正規分布)をこね伸ばして精緻な彫刻(複雑なデータ分布)にする技法があります。空間を2倍に広げれば密度は半分に。体積変化に伴う確率密度の歪みを log⁡∣det⁡J∣\log|\det J|log∣detJ∣ で精密補正します(Ch.05 行列式)。
3. ロボット腕の微細制御と特異点(マヒ状態)
肩と肘の関節を持つロボット腕を想像してください。ヤコビアンは「関節モーターを1°回すと、手先の X, Y 座標はそれぞれどれだけ動くか?」に答えます。腕が完全に伸びると det⁡J=0\det J=0detJ=0 — 特定方向に 1mmも動けない 数学的 特異点(マヒ) を警告する、実戦で重要な信号です。
解くときはこの順番だけ
① 表のサイズ — 出力はいくつ? 入力はいくつ?
出力 mmm 個・入力 nnn 個なら JJJ は mmm 行 × nnn 列 の表。行=出力、列=入力 (計器番号 / ダイヤル番号)。
② マスを埋める — 「ダイヤル j → 針 i」
(i,j)(i,j)(i,j) マスには 「jjj 番入力を少し動かすと、iii 番出力はどれだけ動く?」 を入れます。正式名称は偏微分(JijJ_{ij}Jij​)ですが、反応の大きさ1つ と考えれば十分です。
③ 小さな動き — 入力を少し → 出力も少し
入力を ほんの少し 変える(Δx\Delta\mathbf{x}Δx)とき、出力の変化(Δy\Delta\mathbf{y}Δy)はだいたい JJJ × 入力の変化: Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx。
④ 出力1個なら Ch.08 勾配
結果が1つ(m=1m=1m=1)だけなら、JJJ は Ch.08 勾配 ∇f\nabla f∇f を横に寝かせたもの(∇fT\nabla f^\mathsf{T}∇fT)と同じです。
手順3ステップ:
① サイズ確認 →
② 偏微分を埋める →
③ 合成なら JgJfJ_g J_fJg​Jf​ を掛ける
  • 言葉ヤコビアン
  • 意味Jij=∂fi/∂xjJ_{ij}=\partial f_i/\partial x_jJij​=∂fi​/∂xj​, m×nm\times nm×n
  • 言葉局所近似
  • 意味Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx
  • 言葉勾配
  • 意味m=1m=1m=1 のとき J=∇fTJ=\nabla f^\mathsf{T}J=∇fT
  • 言葉連鎖
  • 意味Jg∘f=JgJfJ_{g\circ f}=J_g J_fJg∘f​=Jg​Jf​
  • 言葉det J
  • 意味面積·体積倍率 (Ch.05)
  • 言葉逆伝播
  • 意味∂L/∂x=JT(∂L/∂f)\partial L/\partial\mathbf{x}=J^\mathsf{T}(\partial L/\partial\mathbf{f})∂L/∂x=JT(∂L/∂f)
言葉意味
ヤコビアンJij=∂fi/∂xjJ_{ij}=\partial f_i/\partial x_jJij​=∂fi​/∂xj​, m×nm\times nm×n
局所近似Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx
勾配m=1m=1m=1 のとき J=∇fTJ=\nabla f^\mathsf{T}J=∇fT
連鎖Jg∘f=JgJfJ_{g\circ f}=J_g J_fJg∘f​=Jg​Jf​
det J面積·体積倍率 (Ch.05)
逆伝播∂L/∂x=JT(∂L/∂f)\partial L/\partial\mathbf{x}=J^\mathsf{T}(\partial L/\partial\mathbf{f})∂L/∂x=JT(∂L/∂f)
① 行=出力、列=入力.
② 線形 f=Axf=Axf=Ax なら J=AJ=AJ=A.
③ 小さな Δx\Delta\mathbf{x}Δx.
④ 特異(det=0=0=0)は一方向に潰れる.

解き方の例

例1 — 2×2 J
問題: f(x,y)=(x+y,  x−y)\mathbf{f}(x,y)=(x+y,\;x-y)f(x,y)=(x+y,x−y) の JJJ は?
解: f1=x+y⇒(1,1)f_1=x+y\Rightarrow(1,1)f1​=x+y⇒(1,1), f2=x−y⇒(1,−1)f_2=x-y\Rightarrow(1,-1)f2​=x−y⇒(1,−1). J=(111−1)J=\begin{pmatrix}1&1\\1&-1\end{pmatrix}J=(11​1−1​).

例2 — 一点で
問題: f(x,y)=(x2,  y)\mathbf{f}(x,y)=(x^2,\;y)f(x,y)=(x2,y), (1,0)(1,0)(1,0) の JJJ?
解: ∂f1/∂x=2x=2\partial f_1/\partial x=2x=2∂f1​/∂x=2x=2, 他は0; ∂f2/∂y=1\partial f_2/\partial y=1∂f2​/∂y=1. J=(2001)J=\begin{pmatrix}2&0\\0&1\end{pmatrix}J=(20​01​).

例3 — 線形
問題: f(x)=Ax\mathbf{f}(\mathbf{x})=A\mathbf{x}f(x)=Ax の JJJ?
解: AAA (どこでも同じ).

例4 — 連鎖
問題: f(x)=xf(x)=xf(x)=x, g(u)=2ug(u)=2ug(u)=2u の Jg∘fJ_{g\circ f}Jg∘f​ (1×1)?
解: Jf=1J_f=1Jf​=1, Jg=2J_g=2Jg​=2, Jg∘f=JgJf=2J_{g\circ f}=J_g J_f=2Jg∘f​=Jg​Jf​=2.

例5 — det J
問題: J=(2003)J=\begin{pmatrix}2&0\\0&3\end{pmatrix}J=(20​03​) の単位正方形面積?
解: ∣det⁡J∣=∣6∣=6|\det J|=|6|=6∣detJ∣=∣6∣=6 → 6倍.

例6 — 線形層
問題: z=Wx+b\mathbf{z}=W\mathbf{x}+\mathbf{b}z=Wx+b の JJJ?
解: 線形変換なので WWW.

演習

m=1m=1m=1 のときヤコビアン JJJ は勾配 ∇f\nabla f∇f を 行ベクトルにしたものと同じ。
1 / 5