机器学习(三):神经网络

来源:互联网 发布:太原知达常青藤中学校 编辑:程序博客网 时间:2024/06/08 10:11

一、神经网络

考虑一个监督学习问题,我们有一些有标签的数据()。神经网络经证明可以表示任意复杂的、非线性的决策空间,可以近乎完美的与输入数据相拟合。

为了表示一个神经网络,我们从描述一个最简单的神经网络,即单个神经元开始。一个神经元如下图所示:


一个神经元类似于一个计算单元,在上图中,其输入为x1,x2,x3和一个+1常数项,而输出为:


其中,f()函数为:


因此,对于单个神经元来说,其输入输出是相当于一个logistic regression的。

尽管在激发时选择使用了sigmoid函数,但这并没有什么特别的用意,也可以是tanh函数,如:



最近的研究给出了新的激活函数模型,the rectified linear function,在深度神经网络中表现比较好。这个函数与sigmoid和tanh的区别在于其不是严格有界或连续可微的。其表示为:



以下是sigmoid,tanh和rectified linear函数的图像:



一个浅层的神经网络模型如下图所示:



图中分为三个部分,分别是输入层,隐藏层和输出层。+1代表的是偏置的bias项。

神经网络的前向传播算法很简单,就此略过,重点看神经网络的反向传播算法(BP)。

对于总计L层的神经网络,从第L层往前推,第L层的误差为:



这个误差就是输出的估计和实际结果之间的误差。

向前传播:



其中,是经过sigmoid函数处理后的。现在要通过sigmoid gradient 去除这样一个影响:



下一步是误差积累:



然后在每层之间使用梯度下降算法进行修改。

其实,基本思路是这样的:

1、 先计算最后一层的误差

2、 通过上一层的误差计算前一层的误差

3、 将前一层的误差作为输入,通过梯度下降思路,由链式法则推导,调整两层之间的参数矩阵,使得下一层的误差减小

4、 循环2,3两步直到收敛

在此就不详细推导BP算法的细节了。
0 0
原创粉丝点击