本节主要是介绍神经网络的反向传播算法。
深度学习中文讲义
1、代价函数(Cost function)
令k为输出层的个数,当k>=3时,使用多元表达。所以,神经网络的代价函数一般形式,需要对k个输出求和,如下
注意到正则化项,由j=1开始,因为类似
x0之类的项,通常都不做正则化。
2、选择神经网络框架
1、输入和输出都是确定的。
2、一般采用一个隐藏层,如果有多个隐藏层,其维度一般一样多。
3、隐藏单元和隐藏层越多越好,但是计算量变大。
3、随机初始化
随机初始化权重,不能为了0,也不能一样。
比如一般可以使用在0附近正态分布的值
N(0,0.1)
在实践中,会有一种比随机值初始化更好的方法。叫做Xavier/He 初始化,对权重(weights)进行的初始化如下
4、前向传播(forward propagation)
1、从左至右,一步一步,计算所有
hΘ(x(i)
2、计算代价函数
J(Θ)n
5、反向传播(back propagation)
由前面计算的
hΘ(x(i),与
y(i)之间的差误差
δ(i)
然后一步一步从右往左反向计算所有的
δ:
δ(3)、
δ(2),不计算
δ(1)
δ(4)=a(4)−y
δ(3)=(Θ(3))δ(4).∗g′(z(3)) 其中
g′(z(3))=a(3).∗(1−a(3))
δ(2)=(Θ(2))δ(3).∗g′(z(2)) 其中
g′(z(2))=a(2).∗(1−a(2))
而,
∂Θij(l)∂J(Θ)=aj(l)δi(l+1)
写成向量的形式是:
例如:
∂Θ(4)∂J(Θ)=a(3)δ(4)=(a(4)−y)(a(3))T
6、梯度检测
第一次计算出偏导数(梯度)之后,要对计算值进行验算,验证算法是否正确。
通过对
θ增加微小量
ϵ进行近似。
验证之后,记得将验证算法关闭。
7、优化
例如使用梯度下降算法(或其他算法),对权重进行优化。