日本語では、誤差逆伝播法(Propagationを、伝搬とも)
«講義動画»
ニューラルネットでは、重み \( w \) を(適当な初期値からはじめて)更新式\[ w^{(l)}_{ij} \leftarrow w^{(l)}_{ij} - \eta\frac{\partial E}{\partial w^{(l)}_{ij}} \]により更新し、繰り返し計算により近似的に求める
ここで、\( (l) \) は、ネットワークの \( l \) 層目(べき乗ではない)を表す。添字の \( i, j \) は、前の層(第 \( l - 1 \) 層)の \( j \) 番目から、現在の層の \( i \) 番目のニューロンへの重みとする(※いろいろな表記がある)
\( E \) は、損失関数(Cost functionとも)。この目的関数 \( E \) が最小になるように重み \( w \) を更新する
\( \eta \) は、学習率(\( \eta \) を具体的に決定するために、様々な工夫がある)
(実際には、確率勾配降下法(SGD)が用いられる。実務では、ミニバッチ法で行われる)
そのために、偏微分 \( \frac{\partial E}{\partial w^{(l)}_{ij}} \) を(式、再掲)\[ w^{(l)}_{ij} \leftarrow w^{(l)}_{ij} - \eta \boxed{\frac{\partial E}{\partial w^{(l)}_{ij}}} \]具体的に求める必要がある
\( z \) を重み付き和(厳密には線形和ではない。バイアス項を含むので)、\( a \) をニューロンの活性化とする\[ z^{(l)}_i = \sum_{j = 1} \left( w^{(l)}_{ij} a^{(l - 1)}_j \right) + b^{(l)}_i \]ここで、\( b \) はバイアス項。バイアス項を、重み \( w^{(l)}_{i0} \) として表現\[ z^{(l)}_i = w^{(l)}_{i0} + \left( w^{(l)}_{i1} a^{(l - 1)}_1 + w^{(l)}_{i2} a^{(l - 1)}_2 + \cdots \right) \](\( a_0 = 1 \) があると考えて)\[ z^{(l)}_i = w^{(l)}_{i0}\cdot 1 + \left( w^{(l)}_{i1} a^{(l - 1)}_1 + w^{(l)}_{i2} a^{(l - 1)}_2 + \cdots \right) \]式を整理\[ z^{(l)}_i = \sum_{j = 0} \left( w^{(l)}_{ij} a^{(l - 1)}_j \right) \qquad (a^{(l - 1)}_0 \equiv 1) \]
活性化関数を \( g() \) とする\[ a^{(l)}_i = g(z^{(l)}_i) = g(\sum_j w^{(l)}_{ij} a^{(l - 1)}_j) \]
ネットワークへの入力 \( \mathbf x = \begin{pmatrix} x_1 \\ x_2 \\ \vdots \end{pmatrix} \) は、第1層へ\[ a^{(1)}_i = g(\sum_j w^{(1)}_{ij} x_j) \qquad (x_0 \equiv 1) \]入力される。ネットワークの層数は \( L \)。第 \( L \) 層が出力層になり、第1層から第 \( L - 1 \) 層までが隠れ層(中間層とも)
つまり\[ \mathbf x \to \mathbf a^{(1)} \to \mathbf a^{(2)} \to \cdots \to \mathbf a^{(L - 1)} \to \mathbf a^{(L)} \]ここで \( \mathbf a^{(l)} = \begin{pmatrix} a^{(l)}_1 \\ a^{(l)}_2 \\ \vdots \end{pmatrix} \)。最後に、ネットワークの出力を \( \mathbf y := \mathbf a^{(L)} \) とおいて\[ \mathbf x \to \mathbf a^{(1)} \to \mathbf a^{(2)} \to \cdots \to \mathbf a^{(L - 1)} \to \mathbf a^{(L)} = \mathbf y \]となる。ここで \( \mathbf y = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \end{pmatrix} \)
(構成は、「入力 → 隠れ層 → 出力層」となっている。この順で計算するのが、順伝播)
これで、ネットワーク全体\[ \mathbf y = f(\mathbf x) \]
(なお、\( \mathbf t \) を、教師信号(教師データ)とする)
出力層の活性化関数と損失関数の決定\[ g^{(L)}(z) = z, \qquad E = \frac{1}{2}\sum_i(y_i - t_i)^2 \](ここでも、ラベル \( (L) \) は、活性化関数 \( g \) が出力層のものであるという意味。ここでは、\( g^{(L)} \) は恒等関数)
合成関数の微分《数学を復習》
対象 \( \frac{\partial E}{\partial w^{(l)}_{ij}} \)。連鎖律より\[ \begin{aligned} \frac{\partial E}{\partial w^{(l)}_{ij}} &= \sum_k \frac{\partial E}{\partial z^{(l)}_k} \boxed{\frac{\partial z^{(l)}_k}{\partial w^{(l)}_{ij}}} \\ &= \frac{\partial E}{\partial z^{(l)}_i} \frac{\partial z^{(l)}_i}{\partial w^{(l)}_{ij}} \end{aligned} \]シグマ記号を外せる\[ \because \frac{\partial z^{(l)}_k}{\partial w^{(l)}_{ij}} = 0 \quad (k \ne i)\]
続けて、\[ \begin{aligned} \frac{\partial E}{\partial w^{(l)}_{ij}} &= \frac{\partial E}{\partial z^{(l)}_i} \boxed{\frac{\partial z^{(l)}_i}{\partial w^{(l)}_{ij}}} \\ &= \frac{\partial E}{\partial z^{(l)}_i} \frac{\partial \left( \cdots + w^{(l)}_{ij} a^{(l - 1)}_j + \cdots \right)}{\partial w^{(l)}_{ij}} = \frac{\partial E}{\partial z^{(l)}_i} \frac{\partial}{\partial w^{(l)}_{ij}}\left( \cdots + w^{(l)}_{ij} a^{(l - 1)}_j + \cdots \right) \\ &= \frac{\partial E}{\partial z^{(l)}_i} a^{(l - 1)}_j \end{aligned} \]と偏微分できる\[ \because \frac{\partial z^{(l)}_k}{\partial w^{(l)}_{ij}} = \begin{cases} a^{(l - 1)}_j & (k = i) \\ 0 & (k \ne i) \end{cases} \]
ここで、\( \delta \) の文字を導入して、式の、全体を見通すための準備をする\[ \frac{\partial E}{\partial w^{(l)}_{ij}} = \delta^{(l)}_i a^{(l - 1)}_j \qquad \left( \delta^{(l)}_i \equiv \frac{\partial E}{\partial z^{(l)}_i} \right) \]この \( \delta^{(l)}_i \) のことを誤差と名付ける。右側の \( a^{(l - 1)}_j \) は、ネットワークの順伝播により計算済みの値
残る、誤差を求める。同じく、連鎖律より\[ \begin{aligned} \delta^{(l)}_i = \frac{\partial E}{\partial z^{(l)}_i} &= \sum_k \frac{\partial E}{\partial a^{(l)}_k} \frac{\partial a^{(l)}_k}{\partial z^{(l)}_i} = \sum_k \frac{\partial E}{\partial a^{(l)}_k} \frac{\partial g(z^{(l)}_k)}{\partial z^{(l)}_i} \\ &= \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} \end{aligned} \]同様に、シグマ記号は外せる\[ \because \frac{\partial a^{(l)}_k}{\partial z^{(l)}_i} = \frac{\partial g(z^{(l)}_k)}{\partial z^{(l)}_i} = 0 \quad (k \ne i) \](定義の \( a^{(l)}_i = g(z^{(l)}_i) \) より)
よって\[ \begin{aligned} \delta^{(l)}_i &= \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} \\ &= \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial g(z^{(l)}_i)}{\partial z^{(l)}_i} \\ &= \frac{\partial E}{\partial a^{(l)}_i} g^{\prime}(z^{(l)}_i) \end{aligned} \]
戻って、一連を通して\[ \begin{aligned} \frac{\partial E}{\partial w^{(l)}_{ij}} &= \sum_k \frac{\partial E}{\partial z^{(l)}_k} \frac{\partial z^{(l)}_k}{\partial w^{(l)}_{ij}} \\ &= \frac{\partial E}{\partial z^{(l)}_i} \frac{\partial z^{(l)}_i}{\partial w^{(l)}_{ij}} \\ &= \frac{\partial E}{\partial z^{(l)}_i} \left( \frac{\partial}{\partial w^{(l)}_{ij}}\left( \cdots + w^{(l)}_{ij} a^{(l - 1)}_j + \cdots \right) \right) \\ &= \boxed{\frac{\partial E}{\partial z^{(l)}_i}} a^{(l - 1)}_j = \delta^{(l)}_i a^{(l - 1)}_j \\ &= \left( \sum_k \frac{\partial E}{\partial a^{(l)}_k} \frac{\partial a^{(l)}_k}{\partial z^{(l)}_i} \right) a^{(l - 1)}_j = \left( \sum_k \frac{\partial E}{\partial a^{(l)}_k} \frac{\partial g(z^{(l)}_k)}{\partial z^{(l)}_i} \right) a^{(l - 1)}_j \\ &= \left( \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} \right) a^{(l - 1)}_j = \left( \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial g(z^{(l)}_i)}{\partial z^{(l)}_i} \right) a^{(l - 1)}_j \\ &= \left( \frac{\partial E}{\partial a^{(l)}_i} g^{\prime}(z^{(l)}_i) \right) a^{(l - 1)}_j \end{aligned} \]これで、結論の式\[ \therefore \frac{\partial E}{\partial w^{(l)}_{ij}} = \left( \frac{\partial E}{\partial a^{(l)}_i} g^{\prime}(z^{(l)}_i) \right) a^{(l - 1)}_j = \delta^{(l)}_i a^{(l - 1)}_j \]を得る
(ここまでは、どの層 \( l \) でも一般に)
出力層(\( l = L \))から考える。設定(と定義)より\[ \begin{aligned} \delta^{(l)}_i &= \frac{\partial E}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} = \frac{\partial E}{\partial a^{(l)}_i} g^{\prime}(z^{(l)}_i) \\ \delta^{(L)}_i &= \frac{\partial E}{\partial a^{(L)}_i} \frac{\partial a^{(L)}_i}{\partial z^{(L)}_i} = \frac{\partial E}{\partial a^{(L)}_i} \left( \left( g^{(L)} \right)^{\prime}(z^{(L)}_i) \right) = \frac{\partial E}{\partial a^{(L)}_i} \cdot 1 \\ &= \frac{\partial E}{\partial a^{(L)}_i} \\ &= \frac{\partial E}{\partial y_i} = \frac{\partial}{\partial y_i} \frac{1}{2}\sum_k(y_k - t_k)^2 = \frac{\partial}{\partial y_i} \frac{1}{2} \left\{ \cdots + (y_i - t_i)^2 + \cdots \right\} \\ &= y_i - t_i \end{aligned} \]となる(まさに、「誤差 = 出力 - 教師信号」となっている)\[ \because \frac{\partial}{\partial y_i} (y_k - t_k)^2 = 0 \quad (k \ne i) \]
よって\[ \therefore \frac{\partial E}{\partial w^{(L)}_{ij}} = (y_i - t_i) a^{(L - 1)}_j = \delta^{(L)}_i a^{(L - 1)}_j \]
(※ここで、すべてが計算可能な値になっている)
次に、隠れ層(\( l < L \))を考える
(既出の式)\[ \frac{\partial E}{\partial w^{(l)}_{ij}} = \frac{\partial E}{\partial z^{(l)}_i} \frac{\partial z^{(l)}_i}{\partial w^{(l)}_{ij}} = \delta^{(l)}_i a^{(l - 1)}_j \]
《この式変形は、天下り》計算を進めて\[ \begin{aligned} \delta^{(l)}_i = \frac{\partial E}{\partial z^{(l)}_i} &= \sum_k \frac{\partial E}{\partial z^{(l + 1)}_k} \frac{\partial z^{(l + 1)}_k}{\partial z^{(l)}_i} \\ &= \sum_k \frac{\partial E}{\partial z^{(l + 1)}_k} \left( \sum_j \frac{\partial z^{(l + 1)}_k}{\partial a^{(l)}_j} \frac{\partial a^{(l)}_j}{\partial z^{(l)}_i} \right) \\ &= \sum_k \frac{\partial E}{\partial z^{(l + 1)}_k} \frac{\partial z^{(l + 1)}_k}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} \end{aligned} \]ここまで、内側のシグマ記号を外せる\[ \because \frac{\partial a^{(l)}_j}{\partial z^{(l)}_i} = 0 \quad (j \ne i)\]
続けて\[ \begin{aligned} \delta^{(l)}_i = \frac{\partial E}{\partial z^{(l)}_i} &= \sum_k \frac{\partial E}{\partial z^{(l + 1)}_k} \frac{\partial z^{(l + 1)}_k}{\partial a^{(l)}_i} \frac{\partial a^{(l)}_i}{\partial z^{(l)}_i} \\ &= \sum_k \delta^{(l + 1)}_k \frac{\partial z^{(l + 1)}_k}{\partial a^{(l)}_i} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \\ &= \sum_k \delta^{(l + 1)}_k \left\{ \frac{\partial}{\partial a^{(l)}_i} \left( z^{(l + 1)}_k \right) \right\} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \\ &= \sum_k \delta^{(l + 1)}_k \left\{ \frac{\partial}{\partial a^{(l)}_i} \left( \sum_j w^{(l + 1)}_{kj} a^{(l + 1 - 1)}_j \right) \right\} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \\ &= \sum_k \delta^{(l + 1)}_k \left\{ \frac{\partial}{\partial a^{(l)}_i} \left( \sum_j w^{(l + 1)}_{kj} a^{(l)}_j \right) \right\} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \\ &= \sum_k \delta^{(l + 1)}_k \left\{ \frac{\partial}{\partial a^{(l)}_i} \left( \cdots + w^{(l + 1)}_{ki} a^{(l)}_i + \cdots \right) \right\} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \\ &= \sum_k \delta^{(l + 1)}_k w^{(l + 1)}_{ki} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \end{aligned} \]と、偏微分できる\[ \because \frac{\partial a^{(l)}_j}{\partial a^{(l)}_i} = \begin{cases} 1 & (j = i) \\ 0 & (j \ne i) \end{cases} \]
これで、すべて計算可能な値となっている(\( \left( g^{(l)} \right)^{\prime} \) は、活性化関数の導関数)
得られた式の意味を理解\[ \delta^{(l)}_i = \sum_k \delta^{(l + 1)}_k w^{(l + 1)}_{ki} \left( \left( g^{(l)} \right)^{\prime}(z^{(l)}_i) \right) \](このシグマ記号は残る。)ある層の誤差 \( \delta^{(l)} \) は、次の層の誤差 \( \delta^{(l + 1)} \) から求められる。そして、出力層では簡単に求まっている\[ \delta^{(L)}_i = y_i - t_i \]
そのため、誤差を、出力層側から逆向きに伝えてくれば、\[ \delta^{(1)} \leftarrow \delta^{(2)} \leftarrow \cdots \leftarrow \delta^{(L - 1)} \leftarrow \boxed{\delta^{(L)}} \]勾配 \( \frac{\partial E}{\partial w^{(l)}_{ij}} = \delta^{(l)}_i a^{(l - 1)}_j \) を計算することができる
これが、誤差逆伝播(伝搬)法。Backpropagation
… W.I.P. …
… W.I.P. …
… W.I.P. …
⟦only for the placeholder⟧
⟦only for the placeholder⟧
© 2026 Tadakazu Nagai