【PR】この記事には楽天アフィリエイト・Amazonアソシエイトの広告リンクが含まれます。商品やサービスは公式の仕様・条件と販売情報を確認して選んでおり、実機テストによる評価ではありません。 Amazonのアソシエイトとして、PROBEFOLIOは適格販売により収入を得ています。
誤差逆伝播法(バックプロパゲーション)は、ニューラルネットワークが出した答えの間違いから、各重みをどちらにどれだけ直せばよいかを、出口から入口に向かって順に計算する方法です。
この記事では、2026年9月25日に確認したGoogleの機械学習の教材と1986年の論文をもとに、数式を追わずに、手で計算できる数字の例で説明します。
この記事の目次
結論:出口の間違いから、各重みの責任を後ろ向きに計算する方法
ニューラルネットワークは、入口から出口に向かって計算し、答えを出します。答えが間違っていたら、どの重みをどう直せばよいかを知る必要があります。
誤差逆伝播法は、出口の間違いから入口に向かって、1層ずつ「各重みがどれだけ間違いに関わったか」を計算する方法です。Googleの教材は、層の多いネットワークで勾配降下法を使えるようにする、最も一般的な学習の方法だと説明しています。
出てくる用語は、表「誤差逆伝播法の用語」のとおりです。
| 用語 | 意味 | たとえ |
|---|---|---|
| 順伝播 | 入口から出口へ計算して答えを出す | 作業を前から順に進める |
| 誤差(損失) | 答えと正解のずれ | 仕上がりの失敗の大きさ |
| 逆伝播 | 出口から入口へ傾きを計算する | 失敗の原因を後ろからたどる |
| 傾き(勾配) | その重みを動かすと損失がどれだけ変わるか | その人の責任の大きさ |
| 連鎖律 | 途中の傾きを掛け算でつなぐ決まり | 責任を順に受け渡す |
たとえ:流れ作業の失敗の原因を、後ろからたどる
3人が順番に作業する流れ作業で、最後に出てきた製品の大きさが、注文より小さかったとします。原因を探すとき、まずは最後の人から確かめるはずです。
最後の人の作業がどれだけずれに関わったかが分かれば、その前の人から受け取った部品のずれも分かります。こうして、後ろから前へ順に「どれだけ責任があったか」を分けていきます。
誤差逆伝播法も同じです。出口の間違いから始めて、前の層へ前の層へと、各重みの責任(傾き)を計算していきます。
学習の1回分の流れ
誤差逆伝播法は、学習の1回分の流れの中の、1つの段階です。全体は、図「学習の1回分の流れ」のとおりです。
前向きの計算(順伝播)と後ろ向きの計算(逆伝播)を1往復し、最後に重みを直します。これを、たくさんの例で何千回、何万回と繰り返します。
学習の1回分の流れ
- 順伝播
入口から出口へ計算して答えを出し、途中の値を覚えておく
- 損失を測る
答えと正解のずれを1つの数字にする
- 逆伝播
出口から入口へ、各重みの傾きを掛け算でつないで求める
- 重みを直す
傾きを使い、勾配降下法で重みを少しだけ動かす
1番目で覚えた途中の値が、3番目の計算で使われます。
2つの方法の役割分担を、この図で確かめておくと混ざりにくくなります。
なぜ必要なのか:重みが多いと1つずつ試せない
各重みの傾きは、その重みだけを少し動かして、損失がどれだけ変わるかを見れば求められます。ただ、この方法では、重み1つにつき1回、ネットワーク全体を計算し直す必要があります。
ニューラルネットワークの重みは、数千から数千億個もあります。1つずつ動かして試していたら、1回直すだけで膨大な時間がかかります。
誤差逆伝播法なら、出口から入口へ1回さかのぼるだけで、すべての重みの傾きをまとめて計算できます。これが、深いネットワークを現実的な時間で学習できる理由です。
身近な計算で「連鎖」をつかむ:おにぎりの合計
1個150円のおにぎりを3個買い、消費税1.1倍をかけると、合計は150×3×1.1=495円です。このとき、「値段が1円上がると、合計はいくら増えるか」を考えます。
値段が1円上がると、3個分で3円増え、さらに1.1倍されるので、合計は3×1.1=3.3円増えます。同じように、個数が1個増えると150×1.1=165円、税率が0.1上がると450×0.1=45円増えます。
ポイントは、合計への影響を、後ろの計算の傾き(1.1倍)と、その前の計算の傾き(3個)の掛け算で求めたことです。これが、誤差逆伝播法の中心にある「連鎖律」の考え方です。
| 動かすもの | 合計への影響(傾き) | 計算 |
|---|---|---|
| 値段を1円上げる | 3.3円増える | 個数3 × 税1.1 |
| 個数を1個増やす | 165円増える | 値段150 × 税1.1 |
| 税の倍率を0.1上げる | 45円増える | 値段150 × 個数3 × 0.1 |
掛け算で責任をつなぐ:連鎖律
連鎖律は、「途中の計算の傾きを、順に掛け算していけば、入口の変化が出口にどれだけ影響するかが分かる」という決まりです。
ニューラルネットワークは、層ごとの計算が何段もつながったものです。出口の損失から見た各重みの傾きも、層ごとの傾きを後ろから順に掛け算して求められます。
逆から計算するのは、出口の損失に近い層の傾きを先に求めておけば、その前の層の計算に使い回せるからです。この使い回しが、誤差逆伝播法が効率よく計算できる理由です。
小さなネットワークで数字を追う:準備
重みが2つだけの、とても小さなネットワークで計算を追ってみます。入力xに重みw1を掛けて中間の値hを作り、hに重みw2を掛けて答えyを出します。
数字は、入力x=2、w1=3、w2=0.5、正解は4とします。損失は、答えと正解の差を2乗した(y−4)²で測ります。
ここでは分かりやすくするため、活性化関数を省いています。活性化関数がある場合の考え方は、後の節で説明します。紙と鉛筆を用意して、一緒に計算してみてください。
| もの | 計算 | 値 |
|---|---|---|
| 入力 x | — | 2 |
| 中間の値 h | w1 × x | w1=3 |
| 答え y | w2 × h | w2=0.5 |
| 損失 | (y − 正解)² | 正解=4 |
順伝播:前から計算して答えを出す
まず、入口から出口へ順に計算します。h=3×2=6、y=0.5×6=3です。正解は4なので、答えは1足りません。
損失は(3−4)²=1です。この「1」を小さくするのが、学習の目標です。
順伝播では、途中の値(h=6など)を覚えておきます。後ろ向きに傾きを計算するときに、この値を使うためです。
| 段 | 計算 | 結果 |
|---|---|---|
| 中間の値 h | 3 × 2 | 6 |
| 答え y | 0.5 × 6 | 3 |
| 損失 | (3 − 4)² | 1 |
逆伝播:後ろから傾きを計算する
次に、出口から入口へさかのぼって傾きを計算します。最初は、損失を答えyで見た傾きです。(y−4)²の傾きは2×(y−4)なので、2×(3−4)=−2です。
w2の傾きは、「yの傾き−2」に「w2を動かしたときのyの変わり方(h=6)」を掛けて−12です。hの傾きは、−2にw2=0.5を掛けて−1です。
最後に、w1の傾きは、「hの傾き−1」に「w1を動かしたときのhの変わり方(x=2)」を掛けて−2です。hの傾き−1を使い回して、w1の傾きを求めたところが大事な点です。
| 求めるもの | 計算 | 傾き |
|---|---|---|
| 答え y の傾き | 2 ×(3 − 4) | −2 |
| w2 の傾き | −2 × h(6) | −12 |
| h の傾き | −2 × w2(0.5) | −1 |
| w1 の傾き | −1 × x(2) | −2 |
傾きを使って重みを直す:勾配降下法の出番
傾きが分かったら、勾配降下法で重みを直します。「今の重み − 学習率 × 傾き」で、学習率を0.01にします。
w2は0.5−0.01×(−12)=0.62、w1は3−0.01×(−2)=3.02になりました。もう一度順伝播すると、y=0.62×(3.02×2)=3.7448で、損失は1から約0.065に減りました。
1回直しただけで、答えが正解の4にぐっと近づきました。実際の学習では、これをたくさんの例で何度も繰り返します。勾配降下法の詳しい動きは、勾配降下法をわかりやすくで説明しています。
| もの | 直す前 | 直した後 |
|---|---|---|
| w1 | 3 | 3.02 |
| w2 | 0.5 | 0.62 |
| 答え y | 3 | 3.7448 |
| 損失 | 1 | 約0.065 |
途中の値を覚えておく理由
逆伝播の計算では、順伝播のときの途中の値を使いました。w2の傾きを求めるときにh=6を、w1の傾きを求めるときにx=2を使ったのがその例です。
そのため、学習のときは、順伝播の途中の値をすべて覚えておく必要があります。答えを出すだけのときより多くのメモリを使うのは、このためです。
大きなモデルの学習に、たくさんのメモリを積んだ計算機が必要になる理由の1つでもあります。
たくさんの例でまとめて計算する
この記事では1つの例だけで計算しましたが、実際の学習では、数十〜数百の例をまとめて(ミニバッチで)計算します。
例ごとに逆伝播で傾きを求め、それらを平均した傾きで重みを直します。1つの例だけに合わせて大きく動くことを防ぎ、全体としてうまくいく向きに進みやすくなります。
まとめて計算すると、計算機がたくさんの計算を同時に進められるので、学習も速くなります。
答え合わせ:少し動かして傾きを確かめる
逆伝播で求めた傾きが正しいかは、重みをほんの少し動かして、損失の変わり方を見れば確かめられます。w1を3から3.001にすると、損失の変わり方から求めた傾きは約−1.999でした。
w2も同じように確かめると約−11.96で、逆伝播で求めた−12とほぼ一致します。少し動かす方法は、重みが多いと時間がかかりますが、答え合わせには使えます。
実際の開発でも、作った逆伝播の計算が正しいかを、この方法で確かめることがあります。
活性化関数があるとき
実際のニューラルネットワークでは、各層に活性化関数が入ります。逆伝播では、活性化関数の傾きも掛け算の列に加わります。
ReLUなら、入力がプラスのときの傾きは1、マイナスのときは0です。傾きが0の場所では、それより前に責任が伝わりません。Googleの教材は、出力がずっと0になって傾きが流れなくなる「死んだReLU」にも触れています。
活性化関数の役目は、活性化関数はなぜ必要かで説明しています。
層が深いと起きる問題:勾配消失と勾配爆発
逆伝播は傾きの掛け算なので、層が深いと問題が起きることがあります。Googleの教材は、小さな値をたくさん掛けると入口に近い層の傾きがとても小さくなる「勾配消失」を挙げています。
反対に、重みが大きいと傾きが大きくなりすぎて学習がまとまらない「勾配爆発」も起きます。対策として、勾配消失にはReLUを使うこと、勾配爆発にはバッチ正規化や学習率を下げることが挙げられています。
どちらも、「掛け算で責任をつなぐ」という誤差逆伝播法の性質から生まれる問題です。
今は自動で計算してくれる
Googleの教材は、多くの機械学習のライブラリが誤差逆伝播法を自動で行うため、使う人が計算をすべて自分でする必要はない、と説明しています。
それでも、流れを理解しておくと、学習がうまく進まないときに原因を考えられます。損失が下がらない、入口に近い層の重みが動かない、といったときに、勾配消失や学習率を疑えるようになります。
ライブラリの設定画面や説明に出てくる「勾配」「逆伝播」「学習率」といった言葉の意味が分かれば、設定を変えたときに何が起きるかも予想しやすくなります。
1986年の論文で広く知られるようになった
誤差逆伝播法は、1986年にネイチャー誌に載ったラメルハート氏、ヒントン氏、ウィリアムズ氏の論文で広く知られるようになりました。
論文は、ネットワークの実際の出力と望む出力の差が小さくなるように、重みを繰り返し調整する学習の手順だと説明しています。その結果、隠れ層が課題の大事な特徴を表すようになる、とも書かれています。
役に立つ新しい特徴を自分で作れることが、それまでの単純な方法との違いだとされています。今のディープラーニングも、この考え方の上に成り立っています。
ChatGPTなどのLLMの学習でも同じ
ChatGPTのもとになる大規模言語モデルも、学習の基本は同じです。文章の次に来る言葉を予測し、正解とのずれを損失にして、誤差逆伝播法で全部の重みの傾きを計算し、勾配降下法で直します。
違うのは規模で、重みは数十億から数千億個にもなります。1つずつ動かして傾きを求めていたら、学習は終わりません。誤差逆伝播法の効率のよさがあってこそ、大きなモデルを学習できます。
つまずきやすい3つの点
- 誤差逆伝播法が重みを直すと思う:誤差逆伝播法が求めるのは傾きまで。重みを直すのは勾配降下法。
- 「逆」は答えを逆算することだと思う:逆なのは計算の向きで、出口から入口へ傾きを計算するという意味。
- 数式が分からないと理解できないと思う:中身は「傾きの掛け算を後ろからつなぐ」こと。おにぎりの例のような身近な計算で追える。
この3つを押さえると、教科書の数式を読むときにも、何を計算しているかを見失いにくくなります。
資格の勉強で押さえたい点
JDLAのE資格の出題範囲では、「深層学習の基礎」に順伝播型ネットワークや最適化が含まれ、誤差逆伝播法はその中心になる考え方です。
勉強では、順伝播と逆伝播の向き、連鎖律で傾きを掛け算でつなぐこと、勾配消失が起きる理由と対策を、自分の言葉で説明できるようにしておくと安心です。
この記事の小さなネットワークの計算を、紙に書いて一度追ってみると、選択肢の言いかえにも迷いにくくなります。
よくある疑問を、ここで。
使い始める前に、気になるところから。
誤差逆伝播法を一言でいうと?
出口の間違いから入口に向かって、各重みが間違いにどれだけ関わったか(傾き)を、層ごとの傾きの掛け算で効率よく計算する方法です。
勾配降下法との違いは?
誤差逆伝播法は、各重みの傾きを計算する方法です。勾配降下法は、その傾きを使って重みを直す方法です。「誤差逆伝播法で傾きを求め、勾配降下法で直す」と組み合わせて使います。
なぜ後ろから計算するのですか?
出口に近い層の傾きを先に求めておくと、その結果を前の層の計算に使い回せるからです。1回さかのぼるだけで、すべての重みの傾きをまとめて計算できます。
数学が苦手でも理解できますか?
考え方は、掛け算で影響をつなぐことなので、この記事のおにぎりの例や小さなネットワークの計算で追えます。詳しく学ぶときは、微分と連鎖律の数式が出てきます。
自分で計算する必要はありますか?
ふだんは必要ありません。多くの機械学習のライブラリが自動で行います。ただ、流れを知っていると、学習がうまく進まないときに、勾配消失や学習率などの原因を考えられます。
この記事を共有する
商品情報の提供:Supported by Rakuten Developers
出典と、この記事について
公式資料や、記事で参照した発表・報道をまとめています。仕様や料金は、利用する前に最新の案内をご確認ください。
- Google Machine Learning Crash Course:Training using backpropagation(新しいタブで開きます)
- Google Machine Learning Crash Course:Gradient descent(新しいタブで開きます)
- Google Machine Learning Crash Course:Activation functions(新しいタブで開きます)
- Rumelhart・Hinton・Williams「Learning representations by back-propagating errors」(Nature、1986年)(新しいタブで開きます)
- JDLA:E資格(エンジニア資格)試験概要(新しいタブで開きます)
確認した内容と条件は本文に記載しています。結果や使い勝手は、資料や環境によって異なります。編集方針を読む




ぜひコメントください