前言
这一节主要是讲了四种理解反向传播的角度或者说方法,个人认为最好还是在公式推导上理解,这样更踏实。当然,其他的方法也是不错的思路,本质上还是一样的。
四种解释
多层神经网络
从上一节的单层神经网络扩展到多层神经网络
由上一节的推导可以知道,对于单层神经网络的梯度下降有
∂
s
∂
W
i
j
=
δ
i
x
j
\begin{aligned} \frac{\partial s}{\partial W_{ij}}=\delta_i x_j \end{aligned}
∂Wij∂s=δixj
所以对于两层的求导:
∂
s
∂
W
i
j
(
2
)
=
δ
i
(
3
)
a
j
(
2
)
\begin{aligned} \frac{\partial s}{\partial W_{ij}^{(2)}}=\delta_i^{(3)} a_j^{(2)} \end{aligned}
∂Wij(2)∂s=δi(3)aj(2)
其中
δ
i
(
3
)
=
U
i
f
′
(
z
i
(
3
)
)
\delta_i^{(3)}=U_if'(z_i^{(3)})
δi(3)=Uif′(zi(3))
对应上一节的矩阵大小:
U
:
8
∗
1
U:8*1
U:8∗1
f
:
8
∗
1
f : 8*1
f:8∗1
δ
:
8
∗
1
\delta:8*1
δ:8∗1
矩阵形式:
∂
s
∂
W
(
2
)
=
δ
(
3
)
a
(
2
)
T
\frac{\partial s}{\partial W^{(2)}}=\delta^{(3)} a^{(2)^T}
∂W(2)∂s=δ(3)a(2)T
同时,
∂
s
∂
W
(
1
)
=
δ
(
2
)
a
(
1
)
T
\frac{\partial s}{\partial W^{(1)}}=\delta^{(2)} a^{(1)^T}
∂W(1)∂s=δ(2)a(1)T
其中,
δ
(
2
)
=
(
W
(
2
)
T
δ
(
3
)
)
o
f
′
(
z
(
2
)
)
\delta^{(2)}=(W^{(2)^T}\delta^{(3)})of'(z^{(2)})
δ(2)=(W(2)Tδ(3))of′(z(2)) o代表对应相乘
推广到一般形式:
∂
s
∂
W
(
l
)
=
δ
(
l
+
1
)
a
(
l
)
T
\frac{\partial s}{\partial W^{(l)}}=\delta^{(l+1)} a^{(l)^T}
∂W(l)∂s=δ(l+1)a(l)T
δ
(
l
)
=
(
W
(
l
)
T
δ
(
l
+
1
)
)
o
f
′
(
z
(
l
)
)
\delta^{(l)}=(W^{(l)^T}\delta^{(l+1)})of'(z^{(l)})
δ(l)=(W(l)Tδ(l+1))of′(z(l))
电路解释
f
(
x
,
y
,
z
)
=
(
x
+
y
)
z
f(x,y,z)=(x+y)z
f(x,y,z)=(x+y)z可以用下图表示,其中
q
=
x
+
y
、
f
=
q
z
q=x+y、f=qz
q=x+y、f=qz
所以f分别对自身,对z、q求导得到3和-4,进而对x、y求导得到-4,-4。
比如对x的求导:
这种思想就是反向传播的过程。
流程图
利用有向无环流程图理解
多条路径:
更复杂的流程图:
神经网络看做流程图:
误差信号
假设最后一层对
z
(
3
)
z^{(3)}
z(3)的误差是
δ
(
3
)
\delta^{(3)}
δ(3)
所以对
W
(
2
)
W^{(2)}
W(2)的导数是
δ
(
3
)
a
(
2
)
T
\delta^{(3)}a^{(2)^T}
δ(3)a(2)T
通过线性加法器。可以得到对
a
(
2
)
a^{(2)}
a(2)的导数是
W
(
2
)
T
δ
(
3
)
W^{(2)^T}\delta^{(3)}
W(2)Tδ(3)
经过激活函数,对
z
(
2
)
z^{(2)}
z(2)的导数是
最后经过线性乘法器,得到对
a
(
1
)
a^{(1)}
a(1)的导数
于是对
W
(
1
)
W^{(1)}
W(1)的导数是
δ
(
2
)
a
(
1
)
T
δ^{(2)}a^{(1)^T}
δ(2)a(1)T。
项目建议
课程中提到了一些做项目的建议,总结来说的话就是两部分:
- 确定项目实验要素(输入输出、数据集、评价方法)
- 脚踏实地、仰望星空(简单模型做一做,再去调整改进)