前向传播神经网络的目标函数
对于一系列的训练样本 X,期望的输入为
t
=
(
t
1
,
.
.
.
,
t
c
)
t=(t_1,...,t_c)
t=(t1,...,tc),网络的实际输出
z
=
(
z
1
,
.
.
.
,
z
c
)
z=(z_1,...,z_c)
z=(z1,...,zc),定义目标函数为
J
(
w
)
=
1
2
∣
∣
t
−
z
∣
∣
2
=
1
2
∑
k
=
1
c
(
t
k
−
z
k
)
2
J(w)=\frac{1}{2}||t-z||^2=\frac{1}{2}\sum^c_{k=1}(t_k-z_k)^2
J(w)=21∣∣t−z∣∣2=21k=1∑c(tk−zk)2
即各输出误差的平方的累加,由此产生的问题是:如何计算目标函数的最小值?
常用的方法为 梯度下降法
梯度下降
如图表示的是参数
w
w
w 与目标函数
J
(
w
)
J(w)
J(w) 的关系图,红色部分表示目标函数有着较高的取值,需要使目标函数的值尽量的低,也就是深蓝色的部分,
w
1
,
w
2
w_1,w_2
w1,w2 表示
w
w
w
向量的两个维度。
梯度下降 的步骤是:先确定一个初始点,将
w
w
w 按照梯度下降的方向进行调整,就会使得
J
(
w
)
J(w)
J(w) 往更低的方向进行变化,算法的结束将是在
w
w
w 下降到无法继续下降为止。
w
(
m
+
1
)
=
w
(
m
)
+
Δ
w
(
m
)
=
w
(
m
)
−
η
∂
J
∂
w
w(m+1)=w(m)+\Delta w(m)=w(m)-\eta\frac{\partial J}{\partial w}
w(m+1)=w(m)+Δw(m)=w(m)−η∂w∂J
输出层权重改变量
由链式求导法则,目标函数
J
(
w
)
J(w)
J(w) 对
w
k
j
w_{kj}
wkj(对应隐藏层与输出层之间的权重) 求偏导为
其中
f
′
(
n
e
t
k
)
f'(net_k)
f′(netk) 对应输出层激活函数的导数,
如 Sigmoid 函数,
z
k
=
f
(
n
e
t
k
)
=
S
i
g
m
o
i
d
(
n
e
t
k
)
z_k=f(net_k)=Sigmoid(net_k)
zk=f(netk)=Sigmoid(netk)
隐藏层权重改变量
由目标函数
J
J
J 对
w
j
i
w_{ji}
wji(输入层与隐藏层之间的权重)求导可得
其中
n
e
t
j
=
∑
m
=
1
d
W
j
m
X
m
net_j = \sum^d_{m=1}W_{jm}X_m
netj=∑m=1dWjmXm 表示隐藏层单元的总输入
由此计算隐藏层权重改变量,其中
误差传播迭代公式
输出层和隐藏层的误差传播公式可统一为:
- 权重增量 = -1 × \times × 学习步长 × \times × 目标函数对权重的偏导数
- 目标函数对权重的偏导数 = -1 × \times × 残差 × \times × 当前层的输入
- 残差 = 当前层激励函数的导数 × \times × 上层反传来的误差
- 上层反传来的误差 = 上层残差的加权和
隐藏层误差反向传播示意
反向传播算法举例
假定输入样本的自变量为 (0.35, 0.9),因变量为 0.5,初始的权重函数如上图所示
AP = 0.1; AQ = 0.4; PO = 0.3
BP = 0.8; BQ = 0.6; QO = 0.9
三个神经元都使用 Sigmoid 函数作为激活函数
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1,X 等于输入的权重和。
将 P 上的函数记为 p,Q 上的函数记为 q,O 上的函数记为 o,例如
P
(
A
,
B
)
=
1
1
+
e
−
(
A
P
∗
A
+
B
P
∗
B
)
=
1
1
+
e
−
(
0.1
∗
0.35
+
0.9
∗
0.8
)
=
0.68
P(A, B)=\frac{1}{1+e^{-(AP*A+BP*B)}}=\frac{1}{1+e^{-(0.1*0.35+0.9*0.8)}}=0.68
P(A,B)=1+e−(AP∗A+BP∗B)1=1+e−(0.1∗0.35+0.9∗0.8)1=0.68
同理计算:
P
(
A
,
B
)
=
0.68
;
Q
(
A
,
B
)
=
0.6637
;
O
(
P
,
Q
)
=
0.69
\mathrm{P}(\mathrm{A}, \mathrm{B})=0.68 ; \quad \mathrm{Q}(\mathrm{A}, \mathrm{B})=0.6637 ; \quad \mathrm{O}(\mathrm{P}, \mathrm{Q})=0.69
P(A,B)=0.68;Q(A,B)=0.6637;O(P,Q)=0.69
计算目标损失函数
ξ
=
1
2
e
2
=
1
2
(
0.69
−
0.5
)
2
=
0.01805
\xi=\frac{1}{2} e^{2}=\frac{1}{2}(0.69-0.5)^{2}=0.01805
ξ=21e2=21(0.69−0.5)2=0.01805,我们希望通过调节 PO,QO 使其变小。
使用梯度下降法
∂
ξ
∂
P
O
=
∂
ξ
∂
e
∗
∂
e
∂
o
∗
∂
o
∂
P
O
=
{
e
}
∗
{
O
∗
(
1
−
O
)
}
∗
{
P
}
\frac{\partial \xi}{\partial \mathrm{PO}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{P} \mathrm{O}}=\{\mathrm{e}\} *\{O *(1-O)\} *\{\mathrm{P}\}
∂PO∂ξ=∂e∂ξ∗∂o∂e∗∂PO∂o={e}∗{O∗(1−O)}∗{P}
=
(
0.69
−
0.5
)
∗
0.69
∗
(
1
−
0.69
)
∗
0.68
=
0.02763
=(0.69-0.5) * 0.69 *(1-0.69) * 0.68=0.02763
=(0.69−0.5)∗0.69∗(1−0.69)∗0.68=0.02763
∂
ξ
∂
Q
O
=
e
∗
f
(
x
)
(
1
−
f
(
x
)
)
∗
Q
=
(
0.69
−
0.5
)
∗
0.69
∗
(
1
−
0.69
)
∗
0.6673
=
0.02711
\frac{\partial \xi}{\partial Q O}=e * f(x)(1-f(x)) * Q=(0.69-0.5) * 0.69 *(1-0.69) * 0.6673=0.02711
∂QO∂ξ=e∗f(x)(1−f(x))∗Q=(0.69−0.5)∗0.69∗(1−0.69)∗0.6673=0.02711
更新隐藏层与输出层权重
P
O
PO
PO 与
Q
O
QO
QO
P
O
∗
=
P
O
−
∂
ξ
∂
P
O
=
0.2723
PO^*=PO-\frac{\partial\xi}{\partial PO}=0.2723
PO∗=PO−∂PO∂ξ=0.2723
Q
O
∗
=
Q
O
−
∂
ξ
∂
Q
O
=
0.8730
QO^*=QO-\frac{\partial\xi}{\partial QO}=0.8730
QO∗=QO−∂QO∂ξ=0.8730
∂
ξ
∂
A
P
=
∂
ξ
∂
e
∗
∂
e
∂
o
∗
∂
o
∂
p
∗
∂
p
A
P
=
{
e
}
∗
{
O
(
1
−
O
)
}
∗
{
P
O
∗
}
∗
{
(
1
−
P
)
∗
P
}
∗
{
A
}
\frac{\partial \xi}{\partial \mathrm{AP}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{p}} * \frac{\partial \mathrm{p}}{\mathrm{AP}}=\{\mathrm{e}\} *\{\mathrm{O}(1-O)\} *\left\{\mathrm{PO}^{*}\right\} *\{(1-\mathrm{P}) * \mathrm{P}\} *\{\mathrm{A}\}
∂AP∂ξ=∂e∂ξ∗∂o∂e∗∂p∂o∗AP∂p={e}∗{O(1−O)}∗{PO∗}∗{(1−P)∗P}∗{A}
更新输入层与隐藏层权重
A
P
,
B
P
,
A
Q
,
B
Q
AP,BP,AQ,BQ
AP,BP,AQ,BQ
A
P
∗
=
A
P
−
∂
ξ
∂
A
P
=
0.09916
AP^*=AP-\frac{\partial\xi}{\partial AP}=0.09916
AP∗=AP−∂AP∂ξ=0.09916
B
P
∗
=
B
P
−
∂
ξ
∂
B
P
=
0.7978
BP^*=BP-\frac{\partial\xi}{\partial BP}=0.7978
BP∗=BP−∂BP∂ξ=0.7978
A
Q
∗
=
A
Q
−
∂
ξ
∂
A
Q
=
0.3972
AQ^*=AQ-\frac{\partial\xi}{\partial AQ}=0.3972
AQ∗=AQ−∂AQ∂ξ=0.3972
B
Q
∗
=
B
Q
−
∂
ξ
∂
B
Q
=
0.5928
BQ^*=BQ-\frac{\partial\xi}{\partial BQ}=0.5928
BQ∗=BQ−∂BQ∂ξ=0.5928