机器学习——神经网络初探

一、神经网络概述
神经网络是机器学习中一种重要的算法。神经网络中最基本的成分是神经元模型,即上述定义中的“简单单元”。在生物神经网络中,每个神经元与其他神经元相连,当他“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么他就会被激活,即“兴奋”起来,向其他神经元发送化学物质。将这个情形抽象成一个简单的模型,就是“M-P”神经元模型:
这里写图片描述
在这个模型中,神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(active function) 处理以产生神经元的输出。(这里使用Sigmoid函数作为阶跃函数)
Sigmoid函数:连续、光滑、严格单调、且关于(0,0.5)中心对称,是一个非常好的阈值函数,亦称为“挤压函数”。
这里写图片描述

二、神经网络结构

比较经典的神经网络是一个包含三个层次的神经网络:
这里写图片描述
包括输入层、隐藏层和输出层三个层次。
注意:
1. 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
2. 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
3. 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表”神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。

三、BP算法(误差逆传播,或反向传播算法)
在训练多层网络时,我们需要更强大的学习算法,BP算法是迄今为止最成功的神经网络学习算法。现实任务中使用神经网络时,大多是在使用BP算法进行训练。值得指出的是,BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络。但通常说“BP网络”时,一般是指用BP算法训练的多层前馈神经网络。
这里写图片描述
图是BP算法。给定训练集D={(X1,Y1),(X2,Y2),……(Xm,Ym)},这里写图片描述 即输入示例由d个属性描述,输出l维实值向量。例如,图中给了一个拥有d个输入神经元、l个输出神经元、q个隐藏神经元的多层前馈网络结构,其中输出层第j个神经元的阈值用这里写图片描述表示,隐层第h个神经元的阈值用这里写图片描述表示,输入层第I个神经元与隐层第h个神经元之间的连接权为这里写图片描述,隐层第h个神经元与输出层第j个神经元之间的连接权为这里写图片描述,记隐层第h个神经元接收到的输入为这里写图片描述 ,输出层第j个神经元接收到的输入为这里写图片描述,其中这里写图片描述 为隐层第h个神经元的输出。假设隐层和输出层神经元都使用了上面介绍的Sigmoid函数。

对训练例(Xk,Yk),假定神经网络的输出为这里写图片描述 ,即 这里写图片描述
则网络在(Xk,Yk)上的均方误差为
这里写图片描述
BP算法图的网络中有 (d+l+1)q+l 个参数需要确定: 输入层到隐层的d*q个权值、隐层到输出层的q * l、q个隐层神经元的阈值、l个输出层神经元的阈值。BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,即与这里写图片描述 (wi 是权重)
任意参数V的更新估计式为这里写图片描述
紧接着,我们队隐层到输出层的连接权这里写图片描述 为例进行推导。
BP算法基于梯度下降(gradient descent)策略,以目标的父梯度方向对参数进行调整。对式这里写图片描述 中的误差这里写图片描述 ,给定的学习率这里写图片描述 ,有
这里写图片描述
注意到 这里写图片描述 先影响到第j个输出层神经元的输入值这里写图片描述 ,再影响到其输出值 这里写图片描述 ,然后影响到这里写图片描述 ,有
这里写图片描述
根据这里写图片描述 的定义,显然有
这里写图片描述
其中,Sigmoid函数有一个很好的性质:
这里写图片描述
于是,根据式子(5.4)和(5.3),有
这里写图片描述
将式(5.10)和(5.8)代入式(5.7),再代入式式(5.6),就得到了BP算法中关于这里写图片描述 的更新公式
这里写图片描述 类似可得
这里写图片描述
式(5.13)和(5.14)中
这里写图片描述
这里写图片描述
学习率这里写图片描述 控制着算法每一轮迭代中的更新长大,若太大则容易振荡,太小则收敛速度又会过慢。
有时候为了做精细调节,可令式(5.11)与(5.12)使用这里写图片描述 ,式(5.13)与(5.14)使用这里写图片描述 ,两者未必相等。

四、BP算法的工作流程
先将输入示例提供输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行),最后根据隐层神经元的误差来对连接权和阈值进行调整(第7行)。该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已达到一个很小的值。
这里写图片描述

参考: 《机器学习》 周志华著

猜你喜欢

转载自blog.csdn.net/u011641865/article/details/80064707