はじめに
前回の記事では、勾配ベクトル $\nabla f$ と関数の変化量 $\Delta f$ の違いを整理し、$\Delta f \approx \nabla f(\mathbf{a}) \cdot \Delta \mathbf{x}$ という近似式について解説しました。
しかし、実際のニューラルネットワークでは、出力が1つだけ(スカラー)ということはありません。入力も出力もベクトルとなる複数次元の変換を扱います。ここで登場するのが「ヤコビ行列(Jacobian Matrix)」です。
本記事では、ヤコビ行列の具体的な計算例と、深層学習における最適化の最大の壁である「局所的最適解」と「鞍点(Saddle Point)」について数学的に解説します。
ヤコビ行列とは何か?
ヤコビ行列を一言で言えば、「複数の出力を持つ関数において、すべての偏微分をまとめた行列」です。
入力ベクトルを $\mathbf{x} = [x_1, x_2]^\mathsf{T}$、出力ベクトルを $\mathbf{y} = [y_1, y_2]^\mathsf{T}$ としたとき、微小な入力の変化 $\Delta \mathbf{x}$ が、出力の変化 $\Delta \mathbf{y}$ にどう影響するかは、以下の式で近似できます。
$$\Delta \mathbf{y} \approx \mathbf{J}_f(\mathbf{x}) \Delta \mathbf{x}$$
この $\mathbf{J}_f(\mathbf{x})$ がヤコビ行列です。
前回の $\Delta f \approx \nabla f(\mathbf{x}) \cdot \Delta \mathbf{x}$ が、そのまま行列とベクトルの掛け算に拡張された形になっています。
具体例で計算してみる
抽象的なままだと分かりにくいので、具体的な関数でヤコビ行列を作り、予測値を計算してみましょう。
$$y_1 = x_1^2 + x_2$$
$$y_2 = 3x_1 x_2$$
この関数のヤコビ行列 $\mathbf{J}$ は、それぞれの出力を $x_1, x_2$ で偏微分して並べたものです。
$$\mathbf{J}(\mathbf{x}) = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} \ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 & 1 \ 3x_2 & 3x_1 \end{bmatrix}$$
現在地が $\mathbf{x} = [1, 2]^\mathsf{T}$ (つまり $x_1=1, x_2=2$)だとします。これを代入すると、この地点でのヤコビ行列が確定します。
$$\mathbf{J} = \begin{bmatrix} 2 & 1 \ 6 & 3 \end{bmatrix}$$
ここから、$\Delta \mathbf{x} = [0.1, 0.05]^\mathsf{T}$ だけ移動したときの出力の変化量 $\Delta \mathbf{y}$ を予測してみましょう。
$$\begin{bmatrix} \Delta y_1 \ \Delta y_2 \end{bmatrix} \approx \begin{bmatrix} 2 & 1 \ 6 & 3 \end{bmatrix} \begin{bmatrix} 0.1 \ 0.05 \end{bmatrix} = \begin{bmatrix} 0.25 \ 0.75 \end{bmatrix}$$
このように、ヤコビ行列を使えば「入力の微小な変化が、複数の出力にどう波及するか」を一発の行列計算で導き出すことができます。深層学習の誤差逆伝播法(バックプロパゲーション)は、まさにこのヤコビ行列の連続的な掛け算(連鎖律)によって計算されています。
深層学習の地形と最適化の罠
勾配が計算できるようになったら、あとは勾配降下法で谷底を下るだけです。しかし、深層学習の損失関数は非常に複雑な地形をしており、単純には下れません。
1. 凸関数と非凸関数(局所的最適解)
線形回帰のようなシンプルなモデルの損失関数は「凸関数(Convex)」になり、谷底(大域的最適解)は1つしか存在しません。しかし、ReLUなどの非線形な活性化関数を多層に重ねたディープラーニングの損失関数は「非凸関数(Non-Convex)」になります。
非凸関数では、一番深い谷底(大域的最適解)とは別に、中腹にある浅い窪み「局所的最適解(Local Minimum)」が生まれます。勾配降下法は「足元の傾き」しか見えないため、この局所的最適解に落ちると $\nabla f = \mathbf{0}$ となり、学習がストップしてしまいます。
2. 数億次元の最大の罠「鞍点(Saddle Point)」
「じゃあ深層学習は局所的最適解にハマりまくって失敗するのか?」というと、実はそうではありません。パラメータ数が数百万〜数億にもなる超高次元空間では、すべての次元の方向が「上り坂」になる完全な窪み(局所的最適解)ができる確率は天文学的に低くなります。
代わりに無限に発生するのが「鞍点(Saddle Point)」です。
代表的な鞍点の数式 $f(x, y) = x^2 - y^2$ を見てみましょう。
原点 $(0, 0)$ において、偏微分(勾配)を計算します。
- $\frac{\partial f}{\partial x} = 2x = 0$
- $\frac{\partial f}{\partial y} = -2y = 0$
つまり、原点では $\nabla f = [0, 0]^\mathsf{T}$ となり、勾配が完全に消失します。
$x$ 軸方向から見ると谷底(極小)ですが、$y$ 軸方向から見ると頂上(極大)になっています。勾配降下法は $\nabla f = \mathbf{0}$ になるとアップデートを止めてしまうため、この「平らな部分」に捕まって学習が停滞するのが、高次元の最適化における最も厄介な罠なのです。
まとめ
- ヤコビ行列:複数の出力に対する勾配ベクトルをまとめた行列。微小変化の線形変換($\Delta \mathbf{y} \approx \mathbf{J} \Delta \mathbf{x}$)を司る。
- 局所的最適解:非凸関数に存在する、真の正解ではない窪み。
- 鞍点(Saddle Point):ある方向には極小、別の方向には極大となる点。超高次元ではこれが無数に発生し、勾配消失(学習の停滞)を引き起こす原因となる。
現在主流のAdamなどのオプティマイザは、単純な勾配だけでなく「過去の勾配の勢い(Momentum)」などを数式に組み込むことで、この鞍点からスムーズに抜け出せるように工夫されています。

