【ごさぎゃくでんぱほう】

誤差逆伝播法 とは?

最終更新:
💡 予測のずれから、調整の手がかりを逆向きに計算

ニューラルネットワークなどの学習で、損失から計算を逆向きにたどり、重みなどに対する勾配を効率よく求める方法。得た勾配を使ってパラメータを更新する処理は、勾配降下法などが担当する。

📌 このページのポイント
逆伝播:計算してから、重みを調整① 入力 → 予測 → 損失を計算入力中間の層予測損失② 損失から逆向きに、勾配を求める③ 最適化手法が重みを更新勾配 + 学習率などを使う逆伝播は、調整の手がかりを計算する役
計算の流れを簡略化した図。逆伝播で勾配を求め、その後にSGDなどの最適化手法で重みを更新します。
ひよこ ひよこ
何を、逆向きに伝えるの?
ペンギン先生 ペンギン先生
予測のずれを表す損失について、重みを少し変えたら損失がどう変わるかを計算するよ。その変化の手がかりが勾配。最初は入力から予測へ進み、次に損失から逆向きに計算をたどるんだ。誰かの責任を決める話ではないよ。
ひよこ ひよこ
重みを直すところまで、この方法?
ペンギン先生 ペンギン先生
逆伝播が主に担当するのは勾配の計算だよ。その勾配を使って重みを更新するのは、SGDなどの最適化手法。PyTorchの例ではloss.backward()で勾配を求め、optimizer.step()で更新する。2つを組み合わせて学習を進めるんだ。
ひよこ ひよこ
連鎖律って、どんなルール?
ペンギン先生 ペンギン先生
つながった計算の微分を、途中の微分を掛け合わせて求めるルールだよ。たとえばu=2x、y=3uなら、xを少し変えた影響は2倍、さらに3倍になり、yの変化は6倍。このように局所の変化をつないで、損失に対する勾配を計算するんだ。
ひよこ ひよこ
重みがたくさんあっても、計算できる?
ペンギン先生 ペンギン先生
順向きの計算で使った値と計算のつながりを利用し、逆向きに勾配を求めるよ。重みを1つずつ少し変えて予測をやり直す方法とは違う。PyTorchの自動微分は、この計算のつながりを追跡してくれる。必要な計算や保存する値に応じて、時間とメモリは使うんだ。
ひよこ ひよこ
勾配が出れば、必ずうまく学習する?
ペンギン先生 ペンギン先生
勾配だけで成功が保証されるわけではないよ。更新の大きさを決める学習率、データ、モデル、最適化手法なども関係する。PyTorchでは勾配が足し合わされるので、通常の反復では適切にリセットする処理も必要。損失だけでなく、別のデータでの予測も確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「誤差逆伝播法」って出てきたら「予測のずれから、重みを調整する手がかりを逆向きに求める方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Backpropagation」 = 逆向きの伝播
💬 出力側の損失から、計算のつながりを逆向きにたどって勾配を求めることを表す名前だよ。

参考資料

← 用語集にもどる