「局所勾配」「微分」「勾配が大きい/小さい」と言われても、数式の話としてはピンとこない。
勾配(微分)とは「入力を少し動かすと出力がどれだけ動くか」という感応度のこと。各演算ノードが持つ局所的な感応度を局所勾配と呼ぶ。
会計人が毎期やっている感応度分析そのもの。「売上を1円増やすと営業利益はいくら増えるか」を考える。
変動費率が30%なら、売上1円増は利益を0.70円増やす。この 0.70 が勾配。固定費はいくら売上が動いても変わらないので、固定費の勾配はゼロ=利益に効かない。
勾配が大きい変数=利益への効きが大きいレバー、勾配が小さい変数=動かしても効かない変数、と読み替えられる。
固定費は売上が動いても変わらないので、勾配(効き)はゼロ。だから上のバーにも出てきません。
⚠️ あくまで直感の橋渡し。実際の勾配は多変数の偏微分で、ここは1変数の例示。
この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。
class Value:
def __init__(self, data, children=(), local_grads=()):
self.data = data # 順方向で決まる数値(金額)
self.grad = 0 # 損失に対する効き=感応度
self._children = children # 上流ノード(計算グラフの子)
self._local_grads = local_grads # 子への局所勾配data が金額、grad が「1動かすと損益がいくら動くか」の感応度。順方向で data が、逆方向(backward)で grad が埋まる。
出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)