机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法

机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法

前言

上篇博文已经详细解释了什么是神经网络,以及如何理解一个神经网络模型的计算过程,并利用反向传播算法实现了神经网络模型中预测函数的获得。那么和逻辑回归以及线性回归一样,得到了预测函数,下一步就是利用梯度下降法求解预测函数中的参数,来使得预测函数尽可能的接近样本数据,最终得到完整的预测函数hθ(x),那么在使用梯度下降法时,我们需要完成两步操作,首先是获得代价函数,之后是求解代价函数的偏微分,进而执行梯度下降法。本文将讲解神经网络中的代价函数,以及对代价函数求偏微分的方法–向后传播算法。

一、神经网络模型的代价函数

1、假设对于多分类问题的一种神经网络模型如下:
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第1张图片
2、假设针对上面神经网络的训练样本为{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
3、符号定义
L:代表神经网络模型的总层数,比如上图神经网络模型中L=4;
Sl:第l层神经元的个数(不包括偏差单元),比如上图神经网络模型中S1=3,S2=5,S3=5,S4=SL=4;
4、逻辑回归中带正则项的代价函数如下:
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第2张图片
5、与上面逻辑回归中带正则项的代价函数类似,我们可以得到神经网络中带正则项的神经网络代价函数如下:
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第3张图片
其中,hθ(x)为矢量,(hθ(x))i代表第i个输出神经元;

二、反向传播算法

1、神经网络模型的代价函数得到后,我们需要根据代价函数执行梯度下降法求得预测函数中的参数,对于梯度下降法,如果想要求得minJ(θ),我们需要求J(θ),以及θij关于J(θ)的偏导数。而反向传播算法就是用来求取θij关于J(θ)的偏导数。对于本文中的神经网络模型,假设只有一个训练样本,具体算法如下:
A:利用向前传播算法求出每层的激活函数值向量a(i)
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第4张图片
B:利用向后传播算法求出每层的误差向量δ(i),进而求出θij关于J(θ)的偏导数。
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第5张图片
C、上面B步骤是对于只有一个训练样本的特色情况的推算,对于普遍情况的向后传播算法如下:
训练集:{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第6张图片
求出θij关于J(θ)的偏导数后,便可以执行梯度下降法了。

三、反向传播计算结果是否正确的检验

1、反向传播计算的是θij关于J(θ)的偏导数,这个反向传播的过程确实比较复杂,为了保证你写的反向传播代码是正确的,我们可以采用另一种过程比较简单但效率远不及反向传播的方法计算θij关于J(θ)的偏导数,然后将两者进行对比,来估算自己的反向传播代码是否正确。
对于如下的J(θ)图形,如果我们求θ关于J(θ)的偏导数,我们可以通过极限的方式进行计算
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第7张图片
通过上图我们可以求得机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第8张图片,其中ε为趋向于0的无穷小
.
.
.

2、对于神经网络中的参数θ={θ1,θ2,θ3,…,θn},可以求的θj对J(θ)的偏导数如下
机器学习(十一)神经网络模型之代价函数及利用反向传播算法实现梯度下降算法_第9张图片
之后对比该数学方法得到的偏导数与向后传播得到的偏导数结果,如果基本相等,则证明你的向后传播算法是正确的,一旦验证完成,立刻注释上面数学方法计算偏导数的代码,因为这种方法效率很低,会大幅度拖慢算法效率,仅仅用它来测试一次你的向后传播算法是否正确就可以了。

四、神经网络参数初始值的选择

对于逻辑回归和线性回归我们可以直接将参数θ全部初始化为0,但是对于神经网络我们不能把参数全部初始化为0,具体原因不再解释,对于神经网络参数的初始化我们可以使用选取[-ε,ε]之间的随机数,ε是趋向于0的极小值

五、神经网络训练过程总结

1、选择神经网络模型:输入的神经元个数就是分类问题的特征要素个数,输出神经元的个数就是待分类的个数;
2、随机初始化权重(参数)θ
3、向前传播算法得到预测函数hθ(x)
4、得到hθ(x)的代价函数J(θ)
5、向后传播计算每个参数对J(θ)的偏导数
6、梯度检验向后传播计算的偏导数是否正确
7、关闭梯度检验
8、用梯度下降法或者其它高级算法求的最小化J(θ)的参数值

你可能感兴趣的:(机器学习)