反向传播算法(back propagation algorithm)
基本概念
BP算法(即反向传播算法)是在有导师指导下,适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。
旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去。
δ(l)j="error"ofnodejinlayerl.
δ
j
(
l
)
="
e
r
r
o
r
"
o
f
n
o
d
e
j
i
n
l
a
y
e
r
l
.
δ δ 代表的是假设 h(x) h ( x ) 的输出和训练集 y y 值之间的差,即
如果把 δ,a,y δ , a , y 都看做向量,则可以用向量化表达式来表示:
δ(l)=al−y
δ
(
l
)
=
a
l
−
y
接下来计算前面几层(隐含层直到输出层)的误差:
δ(l−1)=(Θ(l−1))Tδ(l).∗g′(z(l−1))
δ
(
l
−
1
)
=
(
Θ
(
l
−
1
)
)
T
δ
(
l
)
.
∗
g
′
(
z
(
l
−
1
)
)
...
.
.
.
δ(2)=(Θ(2))Tδ(3).∗g′(z(2))
δ
(
2
)
=
(
Θ
(
2
)
)
T
δ
(
3
)
.
∗
g
′
(
z
(
2
)
)
.∗
.
∗
是两个向量间元素对应相乘,没有
δ(1)
δ
(
1
)
,因为那是我们在训练集所观察到的,不会有误差。
在算法的开始,我们令
Δ(l)ij=0
Δ
i
j
(
l
)
=
0
然后计算出所有的 δ δ 之后,对其在 Δ Δ 上进行累加:
Δ(l)ij:=Δ(l)ij+a(l)jδ(l+1)i
Δ
i
j
(
l
)
:=
Δ
i
j
(
l
)
+
a
j
(
l
)
δ
i
(
l
+
1
)
将其写成向量形式, ij i j 对应矩阵下标,可以得到:
Δ(l):=Δ(l)+δ(l+1)(a(l))T
Δ
(
l
)
:=
Δ
(
l
)
+
δ
(
l
+
1
)
(
a
(
l
)
)
T
接下来,我们分情况计算:
D(l)ij:=1mΔ(l)ij+λΘ(l)ij,ifj≠0
D
i
j
(
l
)
:=
1
m
Δ
i
j
(
l
)
+
λ
Θ
i
j
(
l
)
,
i
f
j
≠
0
D(l)ij:=1mΔ(l)ij,ifj=0
D
i
j
(
l
)
:=
1
m
Δ
i
j
(
l
)
,
i
f
j
=
0
通过证明可以发现:
∂∂Θ(l)ijJ(Θ)=D(l)ij
∂
∂
Θ
i
j
(
l
)
J
(
Θ
)
=
D
i
j
(
l
)
未完…