Documentos de Académico
Documentos de Profesional
Documentos de Cultura
on说明
之前对backpropaga!on通过vector/matrix calculus做的说明,其实也可以通过对
vector/matrix中单个元素分别求gradient,然后再这些单个元素的gradient拼接为
vector/matrix,对初学者这样理理解起来可能更更容易易。
单个数据点x(k) 的计算
z(k) = Wx(k) + b
其中W是p × n的matrix
x(k) 是n × 1的vector
b是p × 1的vector
z(k) 是p × 1的vector
也就是
另外
L(k) = f (z(k) )
这⾥里里L(k) 是scalar。
(k)
上⾯面是计算各个zi 再得到L(k) 的computa!on graph。
δ (k) 的定义
为了了⽅方便便表述,我们定义
∂L(k) (k)
(k)
= δi
∂zi
以及
⎡δ1 ⎤
(k)
⎢ ⋮ ⎥
⎢ ⎥
⎢ (k) ⎥
δ (k) = ⎢δi ⎥
⎢ ⎥
⎢ ⎥
⎢ ⋮ ⎥
⎣δp(k) ⎦
W的gradient ∇W
(k)
∂L(k) ∂L(k) ∂zi (k) (k)
= (k) = δi xj
∂wi,j ∂zi ∂w i,j
求W的gradient,可以将W中每个元素各⾃自对应的gradient按照W的shape来排列列组合
起来:
⎡ ∂w1,1 ∂w1,n ⎤
∂L(k) ∂L(k) ∂L(k)
⋯ ∂w1,j ⋯
⎢ ⎥
⎢ ⋮ ⋮ ⎥
⎢ ∂L(k) ⎥
⋮ ⋱ ⋮
∇W =⎢
⎢ ∂wi,1 ⋯ ∂L(k)
⋯ ∂L(k) ⎥
∂wi,n ⎥
⎢ ⎥
∂wi,j
⎢ ⋮ ⋮ ⎥
⎢ ⋮ ⋱ ⋮ ⎥
⎣ ∂L ∂L ⎦
(k) (k) (k)
∂L
∂w p,1
⋯ ∂wp,j ⋯ ∂w p,n
⎡δ1 x1 δ1 xn ⎤
(k) (k) (k) (k) (k) (k)
⋯ δ1 xj ⋯
⎢ ⋮ ⋮ ⎥
⎢ ⎥
⎢ (k) (k) ⎥
⋮ ⋱ ⋮
= ⎢δi(k) x(k) δi xn ⎥
(k) (k)
⎢ ⎥
⋯ δi xj ⋯
⎢ ⎥
1
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣δp(k) x(k) ⋯
(k) (k)
δp xj ⋯ δp xn ⎦
(k) (k)
1
⎡δ1 ⎤
(k)
⎢ ⋮ ⎥
⎢ ⎥
⎢ (k) ⎥ (k)
= ⎢δi ⎥ [x1 xn ]
(k) (k)
⎢ ⎥
⋯ xj ⋯
⎢ ⎥
⎢ ⋮ ⎥
⎣δp(k) ⎦
T
= δ (k) x(k)
b的gradient ∇b
(k)
∂L(k) ∂L(k) ∂zi (k)
= (k) ∂b = δi
∂bi ∂zi i
求b的gradient,可以将b中每个元素各⾃自对应的gradient按照b的shape来排列列组合起
来:
⎡ ∂b1 ⎤
⎡δ1 ⎤
∂L(k) (k)
⎢ ⎥
⎢ ⋮ ⎥ ⎢ ⋮ ⎥
⎢ ∂L(k) ⎥ ⎢ (k) ⎥
⎢
∇b = ⎢ ⎥ = ⎢δ ⎥ ⎥
⎢ ∂bi ⎥ ⎢ i ⎥
(k)
=
⎢ ⎥
δ
⎢ ⋮ ⎥ ⎢ ⎢
⎥
⎥
⎢ (k) ⎥ ⋮
⎣ ∂L ⎦ ⎣δp(k) ⎦
∂bp
(k)
⽽而从xj 和L(k) 之间则有p条path,所以
p (k) p
∂L(k) ∂L(k) ∂zi
=∑ = ∑ δi wi,j
(k)
(k) (k) (k)
∂xj i=1 ∂zi ∂xj i=1
⎡ ∂x(k) ⎤
∂L(k)
⎡ ∑i=1 δi wi,1 ⎤
p (k)
⎢ ⎥
1
⎢ ⋮ ⎥ ⎢ ⎥
⎢ (k) ⎥ ⎢ ⎥
⎢ ∂L ⎥ ⎢ p ⎥
⋮
= ⎢ ∂x(k) ⎥ = ⎢ ∑i=1 δi(k) wi,j ⎥ = WT δ (k)
⎢ j ⎥ ⎢ ⎥
∇x(k)
⎢ ⎥ ⎢ ⎥
⎢ ⋮ ⎥ ⎢ ⎥
⎢ ⎥
⋮
⎣∑p δ (k) wi,n ⎦
⎣ ⎦
(k)
∂L i=1 i
∂x(k)
n
m个数据点的计算
可以进⼀一步扩展到每次输⼊入m个数据点的情况:
Z = WX + B
其中Z是p × m的matrix
W依然是p × n的matrix
X是n × m的matrix
B是p × m的matrix,其中每个column都相同,都是由同⼀一个p × 1的vector b通过
broadcast得到的。
也就是
⎡z1 z1 ⎤
(1) (k) (m)
⋯ z1 ⋯
⎢ ⋮ ⋮ ⎥
⎢ ⎥
⎢ (1) (m) ⎥
⋮ ⋱ ⋮
⎢zi zi ⎥
(k)
⎢ ⎥
⋯ zi ⋯
⎢ ⎥
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣zp(1) ⋯ zp(k) ⋯ zp ⎦
(m)
另外
m
1
L = F (Z) = ∑ L(k)
m
k=1
Δ的定义
为了了⽅方便便后续的表达,可以定义:
其中
⎡ ∂z (1) ∂z1(m) ⎤
∂L(1) ∂L(k) ∂L(m)
⋯ ⋯
∂z1(k)
⎢ ⎥
1
⎢ ⋮ ⋮ ⎥
⎢ (1) ⋮ ⋱ ⋮ ⎥
⎢ ∂L ∂L(m) ⎥
Δ = ⎢ ∂z (1) ⎥
∂L(k)
⎢ i ∂zi(m) ⎥
⋯ ⋯
⎢ ⎥
∂zi(k)
⎢ ⋮ ⋮ ⎥
⎢ (1) ⋮ ⋱ ⋮ ⎥
⎣ ∂L(1) ⋯ ∂L(k)
⋯ (m) ⎦
∂L(m)
∂zp ∂zp(k) ∂zp
⎡δ1 δ1 ⎤
(1) (k) (m)
⋯ δ1 ⋯
⎢ ⋮ ⋮ ⎥
⎢ ⎥
⎢ (m) ⎥
⋮ ⋱ ⋮
= ⎢δi(1) δi ⎥
(k)
⎢ ⎥
⋯ δi ⋯
⎢ ⎥
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣δp(1) ⋯
(k)
δp ⋯ δp ⎦
(m)
W的gradient ∇W
根据上图的计算图可知,从L有m条路路径到W。
m
∂L ∂L ∂L(k) ∂z(k)
=∑
∂wi,j ∂L(k) ∂z(k) ∂wi,j
k=1
m
1 ∂L(k) ∂z(k)
= ∑ (k)
m ∂z ∂wi,j
k=1
m
1
∑ δi xj
(k) (k)
=
m
k=1
其中
1 m
∂L ∂m ∑k=1 L(k) 1
= =
∂L(k) ∂L(k) m
求W的gradient,可以将W中每个元素各⾃自对应的gradient按照W的shape来排列列组合
起来:
⎡ ∂w1,1 ∂w1,n ⎤
∂L ∂L ∂L
⋯ ∂w1,j ⋯
⎢ ⋮ ⋮ ⎥
⎢ ⎥
⎢ ∂L ∂L ⎥
⋮ ⋱ ⋮
= ⎢ ∂w ∂wi,n ⎥
∂L
⎢ i,1 ⎥
∇W ⋯ ⋯
⎢ ⎥
∂wi,j
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣ ∂w
∂L
⋯ ∂L
⋯ ∂L ⎦
p,1 ∂wp,j ∂w p,n
⎡ k=1 1 x1 ∑k=1 δ1 xn ⎤
m (k) (k) m (k) (k) m (k) (k)
∑ δ ⋯ ∑k=1 δ1 xj ⋯
⎢ ⎥
1 ⎢ ⎥
⋱
⎢ (k) (k) ⎥
⋮ ⋮ ⋮ ⋮
= ⎢∑m (k) (k) (k) (k)
∑k=1 δi xn ⎥
m ⎢ k=1 i 1 ⎥
m m
δ x ⋯ ∑k=1 δi xj ⋯
⎢ ⎥
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣∑m δp(k) x(k) ⋯
m (k) (k)
∑k=1 δp xj ⋯ ∑k=1 δp xn ⎦
m (k) (k)
k=1 1
⎡δ1 δ1 ⎤ ⎡ x1 xn ⎤
(1) (k) (m) (1) (1) (1)
⋯ δ1 ⋯ ⋯ xj ⋯
⎢ ⋮ ⋮ ⎥ ⎢ ⋮ ⎥
1 ⎢ ⎥⎢ ⋮ ⎥
⋱ ⋱
⎢ (m) ⎥ ⎢ (k) (k) ⎥
⋮ ⋮ ⋮ ⋮
= ⎢δi(1) (k)
δi ⎥ ⎢ x1
(k)
xn ⎥
m⎢ ⎥⎢ ⎥
⋯ δi ⋯ ⋯ xj ⋯
⎢ ⎥⎢ ⎥
⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥⎢ ⋮ ⋮ ⋱ ⋮ ⋮ ⎥
⎣δp(1) ⋯
(k)
δp ⋯ δp ⎦ ⎣x(m)
(m)
⋯
(m)
xj ⋯ xn ⎦
(m)
1
1
= ΔXT
m
b的gradient ∇b
根据上图的计算图可知,从L有m条路路径到b。
m
∂L ∂L ∂L(k) ∂z(k)
=∑
∂bi ∂L(k) ∂z(k) ∂bi
k=1
m
1 ∂L(k) ∂z(k)
= ∑ (k)
m ∂z ∂bi
k=1
m
1 ∂L(k)
= ∑ (k)
m ∂z k=1
m
1
= ∑ δi
(k)
m
k=1
⎡m ⎤
1 m ∂L(k)
⎡ m ∑k=1 δ1 ⎤
∑k=1 1 m (k)
∂z(k)
⎢ ⎥
1
⎢ ⎥ ⎢ ⎥
⎢ ⋮ ⎥ ⎢ ⎥
⎢ 1 ∑m ∂L(k) ⎥ ⎢ 1 m (k) ⎥
⋮ m
∇b = ⎢ m k=1 ∂z(k) ⎥ = ⎢ m ∑k=1 δi ⎥ =
1
∑ δ (k)
⎢ i ⎥ ⎢ ⎥ m
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
k=1
⎢ ⎥
⋮ ⋮
⎣ 1 ∑m δp(k) ⎦
⎣ m ∑k=1 (k) ⎦
1 m ∂L(k)
m k=1
∂zp
上⾯面的步骤实际是将Δ的列列相加再求平均。
∇x 的定义
实际程序