正向传播
白话总结:输入
x
x
x与
W
(
1
)
W^{(1)}
W(1)做乘运算得到
z
z
z,
z
z
z经过激活函数得到中间层输入
h
h
h,
h
h
h与
W
(
2
)
W^{(2)}
W(2)做乘运算得到输出结果
o
o
o,到这里如果是预测就结束了,但是如果是训练的话还需要其他步骤。
o
o
o与真值
y
y
y经过损失函数得到损失值
L
L
L,
L
L
L再与正则化项
s
s
s(
W
(
1
)
W^{(1)}
W(1)、
W
(
1
)
W^{(1)}
W(1)得到)相加得到目标函数
J
J
J,我们在学习的时候就知道,我们要做的就是最小化目标函数
J
J
J。
反向传播
反向传播指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。逆推步骤如下:
-
J J J分别对于 L L L和 s s s
-
J J J对于 o o o
-
s s s分别对于 W ( 1 ) W^{(1)} W(1)和 W ( 2 ) W^{(2)} W(2)
-
J J J对于 W ( 2 ) W^{(2)} W(2)
-
J J J对于 h h h
-
J J J对于 z z z
-
J J J对于 W ( 1 ) W^{(1)} W(1)
衰减和爆炸
不只是中间层的结果,中间层的梯度也会出现衰减或者爆炸。假设我们不考虑b并且把激活函数设置为恒等变换,那么中间层的输出为 H ( l ) = X W ( 1 ) W ( 2 ) . . . W ( l ) H^{(l)}=XW^{(1)}W^{(2)}...W^{(l)} H(l)=XW(1)W(2)...W(l)。假设是30层,开始权重为0.2或者5 的时候,会出现0.2 或者 5的30次方。