1、神经网络model
先介绍个三层的神经网络,如下图所示
输入层(input layer)有三个units(为补上的bias,通常设为1
)
所以可以得到:
2、代价函数
与逻辑回归的代价函数差不多,就是累加上每个输出(共有K个输出)
3、正则化
共有L-1
层,然后是累加对应每一层的theta矩阵,注意不包含加上偏置项对应的theta(0)
4、反向传播BP
上面正向传播可以计算得到J(θ)
,使用梯度下降法还需要求它的梯度
BP反向传播的目的就是求代价函数的梯度
因为S型函数的导数为:,所以上面的和可以在前向传播中计算出来
反向传播计算梯度的过程为:
for i=1-m:
-
-正向传播计算(l=2,3,4...L)
-反向计算、...;
-
-
5、BP可以求梯度的原因
实际是利用了链式求导
法则
因为下一层的单元利用上一层的单元作为输入进行计算
大体的推导过程如下,最终我们是想预测函数与已知的y
非常接近,求均方差的梯度沿着此梯度方向可使代价函数最小化。可对照上面求梯度的过程。
6、梯度检查
检查利用BP
求的梯度是否正确,
求出来的数值梯度应该与BP求出的梯度非常接近
验证BP正确后就不需要再执行验证梯度的算法了。
7、权重的随机初始化
神经网络不能像逻辑回归那样初始化theta
为0
,因为若是每条边的权重都为0,每个神经元都是相同的输出,在反向传播中也会得到同样的梯度,最终只会预测一种结果。
所以应该初始化为接近0的数。