「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
コチラが一般的であるが、
ココでは、コチラを使用して視覚的に理解した上で実装する。
合成関数の微分についての性質。
合成関数(関数Aと関数B)
2 z = t t = x + y
dz ─ = 2t dt
dt ─ = 1 dx
dz dz dt ─ = ─ ─ = 2t * 1 = 2t = 2(x + y) dx dt dx
によって表現される。
100 200 220 (リンゴ)--->(*2)--->(*1.1)--->(支払い)
100 200 220
(リンゴ)--->(*)--->(*)--->(支払い)
↑2 ↑1.1
(リンゴの個数)(消費税)
100 200 650 715
(リンゴ)--->(*)--------->(+)--->(*)--->(支払い)
↑2 ↑ ↑1.1
(リンゴの個数) │ (消費税)
│
150 450 │
(ミカン)--->(*)-----------┘
↑3
(ミカンの個数)
100 200 4,200 4,620
(リンゴ)--->(*)------------->(+)--->(*)--->(支払い)
↑2 ↑ ↑1.1
(リンゴの個数) │ (消費税)
│
│
(沢山の買い物)--->(複雑な計算)┘4000
100(1x) 200(2x) 220(2.2x)
(リンゴ)--->(*)---->(*)---->(支払い)
↑2 ↑1.1
(リンゴの個数) (消費税)
100(1x) 200(2x) 220(2.2x)
(リンゴ)--->(*)---->(*)---->(支払い)
<--- ↑ <---- ↑ <----
2.2 │ 1.1 │ 1.0
│2 │1.1
(リンゴの個数) (消費税)
順方向と逆向きに局所的な微分を乗算。
x y ---->(f)----> <---- <---- dy E ─ E dx
x t z
--------->(+)---->(^2)---->
<--------- ↑ <---- <----
dz dz dt │ dz dz dz
-- -- -- │ -- -- -- = 1
dz dt dx │ dz dt dz
│
y
dz dz dt ─ = 1, ─ = 2t, ─ = 1 dz dt dx
x t z
--------->(+)---->(^2)---->
<--------- ↑ <---- <----
│
1*2t*1 │ 1*2t
= 2(x+y) │ = 2(x+y)
│
y
z = x + y
dz ─ = 1 dx
dz ─ = 1 dy
x ──┐dL dL dz
│─ ─ ─
│dL dz dx
↓ z L
(+) <-------------(何らかの計算)<------
↑ dL dL
│dL dL dz ─ ─
│─ ─ ─ dz dL
y ──┘dL dz dxdL dL dL dz dL dL ─ = ─ ─ ─ = 1 ─ 1 = ─ dx dL dz dx dz dz dL dL dL dz dL dL ─ = ─ ─ ─ = 1 ─ 1 = ─ dy dL dz dy dz dz
z = x * y
dz ─ = y dx
dz ─ = x dy
x ──┐dL dL dz
│─ ─ ─
│dL dz dx
↓ z L
(*) <-------------(何らかの計算)<------
↑ dL dL
│dL dL dz ─ ─
│─ ─ ─ dz dL
y ──┘dL dz dxdL dL dL dz dL dL ─ = ─ ─ ─ = 1 ─ x = ─ x dx dL dz dx dz dz dL dL dL dz dL dL ─ = ─ ─ ─ = 1 ─ y = ─ y dy dL dz dy dz dz
計算グラフの逆伝播で得られる値は、
を表している。
100(1x) 200(2x) 220(2.2x)
(リンゴ)---->(*)------>(*)---->(支払い)
<----↑│ <------ ↑│<----
2.2 ││ 1.1 ││ 1.0
││ ││
2│↓110 1.1│↓200
(リンゴの個数)(消費税)
100 200 650 715
(リンゴ)--->(*)--------->(+)--->(*)--->(支払い)
<---↑│ <--------- ↑│<---↑│ <---
2.2 ││ 1.1 ││1.1 ││ 1
2│↓110 ││ ││
(リンゴの個数) ││ 1.1││650
││ │↓
150 450 ││ (消費税)
(ミカン)--->(*)-----------┘│
<---↑│ <------------┘
3.3 ││ 1.1
3│↓165
(ミカンの個数)