「誤差を逆伝播する」「連鎖律で勾配を掛けながら遡る」が、何をしているのか分からない。
出力の誤差を、出力側→入力側へ各段の局所勾配を掛け合わせながら遡る手続き。末端の入力が最終出力にどれだけ効いたかを求める。
予実差異分析のドリルダウンそのもの。「営業利益が予算割れ → 売上総利益が割れ → 原価率が悪化 → 材料単価が高騰」と、上位の結果から原因を一段ずつ遡る。
各段の「効き」を掛け合わせると、末端の材料単価が最終利益にどれだけ影響したかが出る。これが連鎖律=局所勾配の積。
上から下へ原因を辿り、各段の寄与を掛け算でつないでいく。途中に「効きゼロ」の段があれば、そこで影響は遮断される。
これが連鎖律=バックプロパゲーション。差異分析のドリルダウン(営業利益→粗利→原価→材料単価)を逆にたどり、各段の寄与を掛け合わせて末端の影響を出している。
⚠️ 実際は多変数で勾配が枝分かれ・合流する。ここは一本道の連鎖に単純化した例示。
この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。
self.grad = 1
for v in reversed(topo):
for child, local_grad in zip(v._children, v._local_grads):
child.grad += local_grad * v.grad出力の grad=1 から逆順に、各段の local_grad を v.grad に掛けて子へ足し込む(+=)=連鎖律=差異ドリルダウン。
出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)