【AI学習の全サイクル解説】順伝播から最適化まで計算例で学ぶ
AIが予測を立て、間違いを反省し、賢くなっていく――その学習の全サイクルを、一つの記事で追いかけます。「順伝播」「損失計算」「誤差逆伝播法」「最適化」という一連の流れを、具体的な計算例を通して、ステップバイステップで解き明かしていきましょう。
シナリオ設定
- ネットワーク: 入力(1) - 隠れ層(1) - 出力(1) の単純な構造
- 活性化関数: 隠れ層ではシグモイド関数
を使用
- 損失関数: 平均二乗誤差 (MSE) を使用
- 入力と正解: 入力
のとき、正解
であるとします。
- 初期パラメータ: 重みとバイアスを適当に決めます。
- 学習率:
(どれくらい学習を進めるかの歩幅)
ステップ1:順伝播 (Forward Propagation) - まずは予測してみる
入力 を使って、ネットワークの最終的な予測値
を計算します。
隠れ層の計算:
出力層の計算:
AIは「0.425」と予測しました。正解は「1」なので、かなりズレていますね。
ステップ2:損失の計算 - どれくらい間違えたか?
平均二乗誤差(MSE)で損失 を計算します。
現在の損失は「0.33」です。この数値を0に近づけるのが目標です。
ステップ3:誤差逆伝播法 - 間違いの【原因】を探る
ここでの目的は、損失 の原因が、どのパラメータにあるのかを突き止めることです。その「責任の大きさ」を数学的に表現したものが勾配(Gradient)です。出力側から入力側へ遡って計算していきます。
3-1. 出力層の重み
の責任(勾配)
連鎖律を使い、 が損失
にどれだけ影響を与えたか(勾配
)を計算します。
3-2. 隠れ層の重み
の勾配を計算する
同様に、 の勾配
も計算します。
これで、最終的な間違いに対する各重みの責任の大きさ(勾配)がすべて計算できました。
ステップ4:最適化 - パラメータを【微調整】する
ステップ3で特定した「間違いの原因(勾配)」に基づき、いよいよパラメータを修正してAIを賢くする「最適化」のステップに入ります。
世の中にはAdamなど高度な手法もありますが、ここでは最も基本的な勾配降下法というアルゴリズムで重みを更新します。そのルールは非常にシンプルです。
なぜ、ここでは「引き算」をするのか?
勾配は、関数の値が最も急に増加する方向を指します。つまり「損失が一番大きくなる坂道の方向」です。私たちの目的は損失を減らすことなので、勾配が示す方向とは真逆の方向へ進む必要があります。だから、勾配を「引く」ことで、最も効率よく損失の谷底へ下っていくことができるのです。
4-1. 重み
の微調整
重み は 0.3 から 0.38625 に更新されました。
4-2. 重み
の微調整
重み は 0.5 から 0.5129 に更新されました。
ステップ5:検証 - 学習の成果を確認する
最適化によって、AIは本当に賢くなったのでしょうか? ステップ4で更新された新しい重みを使って、もう一度「順伝播」から計算を行い、損失が減少したかを確認します。
更新後の重み:
再計算:隠れ層の出力
再計算:最終予測値
再計算:新しい損失
結論:学習は成功し、損失は減少した
計算の結果、損失は以下のように変化しました。
- 学習前の損失:
0.33
- 学習後の損失:
0.2584
見事に損失が減少しました! このように、たった1回の学習サイクルで、損失が確かに減少したことが確認できました。以上のcを何度も行うことで、学習後の損失を0に近づけていきます。