AI資格ドリル
資格を選ぶ↓

出題範囲:ディープラーニングの概要

G検定の誤差逆伝播法(連鎖律で勾配を求める手順と計算例)

G検定の出題範囲には、ディープラーニングの概要の項目として、誤差逆伝播法があります。連鎖律はその計算の土台です。このページは、入力1つ・重み2個の小さなネットワークを実際に計算し、誤差が出力側から入力側へ戻りながら、各重みの勾配が求まる流れを数字で確認します。

誤差逆伝播法と勾配降下法の役割分担が曖昧な人、順伝播と逆伝播の違いを手順で説明できるようになりたい人向けの内容です。

出題を予想するものではありません。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. 誤差逆伝播法は、損失を各重みで微分した勾配を、連鎖律で効率よく計算する方法
  2. 順伝播で出力と損失を求め、逆伝播で出力側から順に勾配を求める
  3. 重みの更新は、求めた勾配を使う勾配降下法などが行う。逆伝播法そのものは更新しない
  4. 計算例では、w1・w2がともに0.5から0.5061・0.5321に変わり、損失が0.0894から0.0873に下がる
  5. シグモイドの微分は最大0.25なので、層を戻るたびに誤差が小さくなる。これが勾配消失の原因の1つ

誤差逆伝播法とは何か

Rumelhart・Hinton・Williamsが1986年にNature誌に発表した論文『Learning representations by back-propagating errors』の抄録は、この手順を、ネットワーク内の接続の重みを繰り返し調整し、実際の出力ベクトルと望ましい出力ベクトルの差の尺度を最小にするものと説明しています。

同じ抄録は、重みの調整の結果、入力でも出力でもない内部の「隠れユニット」が課題の重要な特徴を表すようになり、課題の規則性がそれらの相互作用で捉えられると述べています。隠れ層の重みにも、出力の誤差を戻して学習させられる点が、逆伝播の価値です。

数学の道具は連鎖律です。『Deep Learning』第6章6.5節は、連鎖律を、すでに微分がわかっている関数を合成した関数の微分を計算するために使うものと説明し、逆伝播は連鎖律を、非常に効率のよい特定の順序で計算するアルゴリズムだとしています。

計算例の設定

このページの計算例は、仕組みが見えるように最小の形にしています。公式の例題ではなく、このページ用に作ったものです。

  • 入力 x = 1、正解 t = 1
  • 隠れ層は1ユニット、出力層も1ユニット。どちらの活性化関数もシグモイド σ(z) = 1 / (1 + e^(−z))
  • 重みは w1(入力から隠れ層)と w2(隠れ層から出力層)の2個で、初期値はどちらも0.5。バイアスは省略
  • 損失は L = ½(y − t)²。学習率は0.5

順伝播で損失を求める

まず入力から出力へ向かって計算します。a1 = 0.5 × 1 = 0.5 で、隠れ層の出力は h = σ(0.5) = 0.6225 です。次に a2 = 0.5 × 0.6225 = 0.3112 で、出力は y = σ(0.3112) = 0.5772 になります。正解が1なので、損失は ½ × (0.5772 − 1)² = 0.0894 です。

ここで求めた h と y は、逆伝播の計算で使うため、保存しておきます。

逆伝播で勾配を求める

次に、出力側から入力側へ戻りながら勾配を求めます。各層の「誤差の信号」δ(デルタ)を使うと、手順が揃います。シグモイドの微分は y(1 − y) の形になります。

向き計算値
順伝播隠れ層の入力 a1 = w1 × x0.5 × 1 = 0.5000
順伝播隠れ層の出力 h = σ(a1)0.6225
順伝播出力層の入力 a2 = w2 × h0.5 × 0.6225 = 0.3112
順伝播出力 y = σ(a2)0.5772
順伝播損失 L = ½(y − t)²½ × (0.5772 − 1)² = 0.0894
逆伝播出力の誤差 ∂L/∂y = y − t−0.4228
逆伝播出力層のδ2 = ∂L/∂y × y(1 − y)−0.4228 × 0.2440 = −0.1032
逆伝播w2の勾配 ∂L/∂w2 = δ2 × h−0.1032 × 0.6225 = −0.0642
逆伝播隠れ層へ戻る誤差 δ2 × w2−0.1032 × 0.5 = −0.0516
逆伝播隠れ層のδ1 = (δ2 × w2) × h(1 − h)−0.0516 × 0.2350 = −0.0121
逆伝播w1の勾配 ∂L/∂w1 = δ1 × x−0.0121 × 1 = −0.0121

隠れ層のδ1は、出力層のδ2に重みw2を掛けて戻し、隠れ層自身の微分 h(1 − h) を掛けて求めています。出力側の計算結果を再利用しているので、隠れ層が何層に増えても、同じ手順を1層ずつ繰り返すだけで済みます。

この計算が正しいかは、重みをごく小さく動かして損失の変化を測る数値微分で確かめられます。このページの値は、数値微分でも dL/dw1 = −0.01212、dL/dw2 = −0.06423 となり、逆伝播の結果と一致しました。

勾配降下法で重みを更新する

勾配が求まったら、学習率0.5で重みを更新します。新しい重みは「古い重み − 学習率 × 勾配」です。

  • w2:0.5 − 0.5 × (−0.0642) = 0.5321
  • w1:0.5 − 0.5 × (−0.0121) = 0.5061

更新後の重みで順伝播をやり直すと、y は0.5772から0.5822に近づき、損失は0.0894から0.0873に下がります。勾配が負なので、重みが増える向きに動いたことになります。

『Deep Learning』第6章は、逆伝播を学習アルゴリズム全体の意味だと誤解されやすいと述べたうえで、実際には勾配の計算方法を指すだけで、その勾配を使って学習するのは確率的勾配降下法のような別のアルゴリズムだと明記しています。試験では「勾配を求める役が誤差逆伝播法、重みを動かす役が勾配降下法」と分けて覚えると、選択肢の誤りを見分けられます。

勾配消失との関係

計算例では、出力層のδ2は−0.1032、1つ戻った隠れ層のδ1は−0.0121でした。1層戻るだけで、約0.12倍(0.5 × 0.2350)に小さくなっています。

シグモイドの微分 y(1 − y) は、y が0.5のときの0.25が最大です。層を戻るたびにこの値が掛かるので、深いネットワークでは入力側の層の勾配がほとんど0になります。これが勾配消失問題の仕組みで、逆伝播の途中で誤差が弱まることが原因です。対策の考え方は、勾配消失問題のページで整理しています。

問題文から読み取る

このページの内容から導いた読み方です。出題を予想するものではありません。

  • 「出力の誤差を出力層から入力層へ向かって伝える」とあれば、誤差逆伝播法
  • 「連鎖律で各層の勾配を求める」とあれば、誤差逆伝播法の計算の説明
  • 「求めた勾配を使って重みを少しずつ更新する」とあれば、勾配降下法(学習率が出てくる)
  • 「入力から出力へ向かって計算する」とあれば、順伝播
  • 「層を戻るほど勾配が小さくなる」とあれば、勾配消失問題

よくある質問

誤差逆伝播法は、学習のアルゴリズム全体のことですか?

違います。誤差逆伝播法は、損失を各重みで微分した勾配を効率よく計算する方法です。重みを実際に更新するのは、確率的勾配降下法などの別のアルゴリズムです。『Deep Learning』第6章は、この点が誤解されやすいと明記しています。

なぜ『逆』方向に計算するのですか?

損失は出力側の値から決まり、各層の勾配は後ろの層の勾配に前の層の局所的な微分を掛けて求まるからです。出力側のδを先に求めておけば、1つ手前の層はそれを再利用して計算できます。連鎖律の計算を、同じ部分を何度も計算し直さない順序で進めるのが逆伝播です。

順伝播の値を残しておく必要があるのはなぜですか?

順伝播で求めた各層の値が、逆伝播の計算に必要だからです。この計算例でも、w2の勾配には順伝播で求めたh、δ1には h(1 − h) が必要でした。各層の出力を保存しておくと、微分の計算で同じ値を計算し直さずに済みます。

シグモイド関数の微分が y(1 − y) になるのはなぜですか?

シグモイド関数 σ(z) = 1 / (1 + e^(−z)) を微分すると σ(z)(1 − σ(z)) になる性質があるためです。出力 y がわかっていれば、微分の値は y(1 − y) だけで求まります。この値は最大でも0.25なので、層を重ねると勾配が小さくなります。

誤差逆伝播法の代表的な論文は何ですか?

このページが一次情報として確認できたのは、Rumelhart・Hinton・Williamsが1986年にNature誌に発表した論文『Learning representations by back-propagating errors』です。この論文の抄録は、ニューロンに似たユニットのネットワーク向けの新しい学習手順として逆伝播を紹介しています。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)