🔄 STEP 10: 逆伝播(Backpropagation)の理論
ニューラルネットワークが「学習する仕組み」を理解しよう
📋 このステップで学ぶこと
- ニューラルネットワークの学習の全体像
- 勾配降下法の復習
- 連鎖律(Chain Rule)とは?
- 逆伝播アルゴリズムの仕組み
- 計算グラフで理解する逆伝播
- なぜ「逆」伝播と呼ぶのか?
🎯 1. ニューラルネットワークの学習の全体像
1-1. 学習とは何か?
ニューラルネットワークの学習とは、重み(パラメータ)を調整して、予測精度を上げることです。
的当てゲームで、最初は的に当たりません。
試行錯誤:
1回目:右に外れた → 「少し左を狙おう」
2回目:上に外れた → 「少し下を狙おう」
3回目:当たった!
ニューラルネットワークも同じです。
「どのくらいずれたか」を見て、「どう修正すればいいか」を計算します。
1-2. 学習の5つのステップ
以下の図は横スクロールできます。
逆伝播は、各重みが損失にどのくらい影響しているか(勾配)を効率的に計算するアルゴリズムです。
この勾配を使って、重みをどう修正すればいいかが分かります。
📉 2. 勾配降下法の復習
2-1. 勾配とは?
勾配(Gradient)とは、「関数の傾き」のことです。
損失関数の勾配は、「重みを少し変えたとき、損失がどのくらい変わるか」を表します。
勾配 = ∂L/∂w
意味:「重み w を少し増やすと、損失 L がどのくらい増えるか」
2-2. 勾配降下法の式
w_new = w_old – η × ∂L/∂w
w_new:更新後の重み
w_old:更新前の重み
η(イータ):学習率
∂L/∂w:損失関数の重みに対する勾配
2-3. なぜマイナスなのか?
霧の中で山を下りたいとき:
1. 足元の傾きを感じる(勾配を計算)
2. 傾きが下がる方向に進む(勾配の逆方向)
3. 繰り返すと、谷底(損失最小)に到達
これが勾配降下法です。
🔗 3. 連鎖律(Chain Rule)
3-1. 連鎖律とは?
連鎖律(Chain Rule)は、合成関数の微分法則です。
逆伝播アルゴリズムの核心となる数学的な道具です。
y = f(g(x)) のとき
dy/dx = (dy/dg) × (dg/dx)
つまり:
「y の x に対する微分」=「y の g に対する微分」×「g の x に対する微分」
3-2. 連鎖律の具体例
3-3. なぜ連鎖律が必要?
ニューラルネットワークは、たくさんの関数が連なった合成関数です。
🔙 4. 逆伝播アルゴリズム
4-1. 逆伝播とは?
逆伝播(Backpropagation)は、連鎖律を使って、出力側から入力側に向かって勾配を効率的に計算するアルゴリズムです。
順伝播(Forward):入力 → 出力(予測を計算)
逆伝播(Backward):出力 → 入力(勾配を計算)
勾配を計算するとき、出力側から入力側に「逆向き」に進むから「逆伝播」!
4-2. シンプルな例で理解する
2層のシンプルなネットワークで考えてみましょう。
以下の図は横スクロールできます。
4-3. 連鎖律で勾配を計算
4-4. 重みの更新
📊 5. 計算グラフで理解する
5-1. 計算グラフとは?
計算グラフは、計算の流れをグラフ(ノードとエッジ)で表現したものです。
TensorFlowなどの深層学習フレームワークは、内部で計算グラフを作成しています。
以下の図は横スクロールできます。
5-2. 逆伝播の伝播イメージ
5-3. TensorFlowでの自動微分
TensorFlow/Kerasは、自動微分(Automatic Differentiation)機能を持っています。
順伝播を定義するだけで、逆伝播は自動的に計算されます!
→ 理論を理解しておくことは重要ですが、実装時に手計算する必要はありません。
x = 3.0 y = x² = 9.0 dy/dx = 6.0 → TensorFlowが自動で微分を計算してくれる!
⚠️ 6. 勾配消失問題
6-1. 勾配消失とは?
勾配消失(Vanishing Gradient)は、逆伝播で勾配が0に近づいてしまう問題です。
深いネットワークで特に発生しやすいです。
勾配が0に近いと…
→ 重みの更新量も0に近くなる
→ 学習が進まない!
特に入力に近い層(浅い層)で発生しやすい
6-2. なぜ勾配消失が起きる?
6-3. 解決策
- ReLU活性化関数:勾配が0か1なので消失しにくい(STEP 4で学習済み)
- バッチ正規化:各層の出力を正規化(STEP 13で学習)
- 適切な重み初期化:He初期化、Xavier初期化
- 残差接続(ResNet):勾配のショートカット
📝 STEP 10 のまとめ
- 学習は「順伝播→損失計算→逆伝播→重み更新」のサイクル
- 勾配降下法は、勾配の逆方向に重みを更新して損失を減らす
- 連鎖律は、合成関数の微分法則
- 逆伝播は、連鎖律を使って出力から入力に向かって勾配を計算
- 計算グラフで計算の流れを表現できる
- 自動微分でTensorFlowが勾配を自動計算してくれる
- 勾配消失問題は、ReLUやバッチ正規化で解決
逆伝播の本質:
「各重みが損失にどのくらい影響しているか」を、
連鎖律を使って効率的に計算するアルゴリズム
実装時のポイント:
TensorFlow/Kerasが自動で計算してくれるので、
理論を理解した上で、フレームワークを信頼して使おう!
逆伝播の理論を習得したので、次のSTEP 11では最適化アルゴリズムを学びます。
SGD、Momentum、Adamなど、重みをより効率的に更新する方法を学びましょう!
📝 練習問題
学習のサイクル
ニューラルネットワークの学習サイクルとして、正しい順序を選んでください。
- A. 逆伝播 → 順伝播 → 損失計算 → 重み更新
- B. 順伝播 → 損失計算 → 逆伝播 → 重み更新
- C. 重み更新 → 順伝播 → 逆伝播 → 損失計算
- D. 損失計算 → 順伝播 → 重み更新 → 逆伝播
学習サイクルの正しい順序
連鎖律
y = f(g(x)) のとき、dy/dx を求める連鎖律の式として正しいものを選んでください。
- A. dy/dx = dy/dg + dg/dx
- B. dy/dx = dy/dg × dg/dx
- C. dy/dx = dy/dg ÷ dg/dx
- D. dy/dx = dy/dg – dg/dx
連鎖律は「掛け算」
逆伝播の特徴
逆伝播(Backpropagation)について、正しい説明を選んでください。
- A. 入力から出力に向かって勾配を計算する
- B. 出力から入力に向かって勾配を計算する
- C. 勾配の計算は不要で、直接重みを更新する
- D. 順伝播と同じ方向で計算する
逆伝播は「逆向き」に計算
勾配消失問題
勾配消失問題の解決策として適切でないものを選んでください。
- A. ReLU活性化関数を使う
- B. バッチ正規化を使う
- C. sigmoid活性化関数をすべての層で使う
- D. 適切な重み初期化(He初期化など)を使う
sigmoidは勾配消失の原因
勾配降下法の式
勾配降下法の重み更新式 w_new = w_old – η × ∂L/∂w で、マイナスを使う理由として正しいものを選んでください。
- A. 損失を最大化するため
- B. 勾配の方向に進むと損失が増えるから、逆方向に進む
- C. 学習率を負にするため
- D. 計算を簡単にするため
勾配の逆方向に進む理由
学習メモ
ディープラーニング基礎 - Step 10