💡
誤差逆伝播法を使ったニューラルネットワークの学習を具体的な数値でステップ実行してみた
はじめに
この記事では、**誤差逆伝播法(バックプロパゲーション)**を用いたニューラルネットワークの学習を、実際の数値例に基づいて手順を追って解説します。
誤差逆伝播法(バックプロパゲーション)が何をしているのかを計算例を用いてみやすい形にしました。
誤差逆伝播法(バックプロパゲーション)とは
**誤差逆伝播法(ごさぎゃくでんぱほう、Backpropagation)**は、ニューラルネットワークの学習において中心的な役割を果たすアルゴリズムです。主に「深層学習(ディープラーニング)」で用いられており、ネットワークの出力と正解との誤差をもとに、ネットワーク内部のパラメータ(重みやバイアス)を効率的に修正するための方法です
仕組みの概要
- ニューラルネットワークは、入力層から隠れ層を経て出力層まで情報を伝播させ、予測結果を出します。
- その予測と正解データを比較し、「誤差(損失)」を計算します。
- この誤差を、出力層から入力層へと「逆方向」に伝播させ、各層のパラメータがどれだけ誤差に影響したかを計算します。
その影響度合い(勾配)に基づいて、パラメータを少しずつ修正し、次回はより正しい予測ができるようにします
🔧 ネットワークの構成
最小構成のネットワークを使います:
- 入力層(2ノード)
- 隠れ層(2ノード)
- 出力層(1ノード)
- 活性化関数:シグモイド関数
-
\sigma(z) = \frac{1}{1 + e^{-z}} -
\sigma'(z) = \sigma(z)(1 - \sigma(z))
-
- 損失関数:平均二乗誤差(MSE)
🧮 初期の設定
入力データと教師ラベル
- 入力:
\mathbf{x} = \begin{bmatrix} 1 \\ 0 \end{bmatrix} - 教師データ:
y = 1
重み・バイアスの初期値
-
W^{(1)} = \begin{bmatrix} 0.1 & 0.2 \\ 0.3 & 0.4 \end{bmatrix} -
\mathbf{b}^{(1)} = \begin{bmatrix} 0.1 \\ 0.1 \end{bmatrix} -
W^{(2)} = \begin{bmatrix} 0.5 & 0.6 \end{bmatrix} -
b^{(2)} = 0.1 - 学習率:
= 0.1eta
✅ ステップ1: 順伝播
隠れ層への入力
隠れ層の出力(シグモイド関数)
出力層の入力
出力層の出力
✅ ステップ2: 損失の計算
✅ ステップ3: 誤差逆伝播
出力層の誤差(デルタ)
隠れ層の誤差
✅ ステップ4: パラメータ更新
出力層の重み・バイアス
隠れ層の重み・バイアス
✅ 最終更新後のパラメータ
パラメータ | 更新後の値 |
---|---|
📝 まとめ
- 1ステップごとの処理で、ニューラルネットワークの重みがどのように更新されるかが見えてくると思います。
- こうした地道な学習の繰り返しで、ニューラルネットワークは精度を高めていきます。
Discussion