吴恩达机器学习——反向传播算法
前言:反向传播算法是用来求偏导数的,即 σ J ( θ ) σ θ i j ( 2 ) \frac{\sigma{J(\theta)}}{\sigma{\theta^{(2)}_{ij}}} σθij(2)σJ(θ),有了这个偏导数,就可以使用梯度下降算法或其他高级算法得出 θ \theta θ
1.误差 δ ( 3 ) \delta^{(3)} δ(3), δ ( 2 ) \delta^{(2)} δ(2)的推导
反向传播算法中误差的计算过程:
首先,这里没有使用线性回归中的平方差来计算,而是直接定义了
δ
(
4
)
=
a
(
4
)
−
y
,
即预测值减去实际值
\delta^{(4)}=a^{(4)}-y,\text{即预测值减去实际值}
δ(4)=a(4)−y,即预测值减去实际值
接下来我们看一下
δ
(
3
)
\delta^{(3)}
δ(3)的推导过程:
1.代价函数(这里我们考虑最简单的情况,k=1,并且只考虑一个训练样本(
x
(
i
)
x^{(i)}
x(i),
y
(
i
)
y^{(i)}
y(i))):
c
o
s
t
(
i
)
=
−
y
(
i
)
∗
l
o
g
(
h
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
(
x
(
i
)
)
)
cost(i)=-y^{(i)}*log(h(x^{(i)}))-(1-y^{(i)})log(1-h(x^{(i)}))
cost(i)=−y(i)∗log(h(x(i)))−(1−y(i))log(1−h(x(i)))
2.误差计算公式:
δ
j
(
l
)
=
σ
c
o
s
t
(
i
)
σ
z
j
(
l
)
\delta^{(l)}_{j}=\frac{\sigma{cost(i)}}{\sigma{z^{(l)}_j}}
δj(l)=σzj(l)σcost(i).
这里的误差计算公式为什么和
δ
(
4
)
\delta^{(4)}
δ(4)不一样呢?我们先看一下等式右边的偏导数等于多少。
【说明:上图中的
y
(
i
)
y^{(i)}
y(i)是实数而不是向量,因为我们这里暂时只考虑了k=1的情况。】
可以看到和
δ
(
4
)
\delta^{(4)}
δ(4)的定义是一样的。网上也看到其他说法:?是代价函数关于所计算出的中间项 z 的偏导数,它所衡量的是:为了影响这些中间值,我们所需要改变神经网络中的权重的程度。
3.
δ
(
3
)
,
δ
(
2
)
\delta^{(3)},\delta^{(2)}
δ(3),δ(2)的推导
2.反向传播算法的计算过程
Δ
i
j
(
l
)
\Delta^{(l)}_{ij}
Δij(l)的推导过程: