《机器学习》(周志华)学习笔记(五):神经网络
《机器学习》(周志华)学习笔记(五):神经网络
引言
上一篇学习了决策树这个常见的机器学习方法。首先对其基本概念进行理解,决策树包含根结点、内部结点和也结点,决策树的生成是一个递归过程,有三种情况会导致递归返回。接着讨论决策树如何进行属性划分优先选择,ID3决策树采用信息增益来判断,C4.5决策树采用增益率来判断,CART决策树采用基尼指数来选择。在划分属性时,还需要考虑到学习器过拟合的问题,应对的方法主要有“预剪枝”和“后剪枝”。最后,讨论了对于连续型属性的决策树生成方法(二分法)和缺失值时的处理方法(赋权值)。
本篇继续学习机器学习中另一个非常重要的算法:神经网络算法。
1.基本结构——神经元模型
神经网络是由相互连接的神经元构成的网络,能够模拟生物神经系统方对于外界做出的反应。
在生物神经网络中,每个神经元与其他神经元相连接,当它收到外界刺激时,就会向相连的神经元发送化学物质,从而改变这些神经元的生物电位,当电位超出一定阈值时,这些神经元就会被**,接着向相连的其它神经元发送化学物质。这一生物神经元被抽象为简单的数学模型,即“M-P神经元模型”(M-P为创建模型的两个人)。这个数学模型可以用下图来表示。
神经元收到来自n个相连神经元的输入信号,这些输入信号各自带有权重。神经元接收到的信号的总和与神经元的阈值进行比较,通过**函数处理产生输出,传递到与之相连的其他神经元。
理想的**函数是阶跃函数,但由于其不连续的特性,实际常用Sigmiod函数代替。
2.感知机与多层网络
感知机是由两层神经元组成,输入层接收外界信号传给输出层(M-P神经元)。感知机可实现逻辑与、或、非运算,故又称“阈值逻辑单元”。 有两个输入神经元的感知机网络结构如下图所示。
在上图中,有
假设f是阶跃函数,以下面为例,常见的逻辑运算都可简单地实现。
更一般地,给定训练集,权重wi以及阈值都可以通过学习得到。当输入固定为-1时,阈值可以看做是一个新的连接权重wn+1,这样,可把权重和阈值的学习都归为权重的学习。感知机的学习规则很简单,对于训练集(x, y),若当前感知机的输出为y^,则感知机的权重可以做下面的调整:
上面,n(0~1之间取值)称为学习率。从上面的关系可知,若y=y^,则感知机的权值参数不发生变化,否则将根据错误的纯度进行权值调整。
但是,感知机的输出层神经只拥有一层功能神经单元,其学习能力非常有限。上面的与、或、非问题都是线性可分的,即存在一个超平面能将它们分开。但对于异或这样的简单非线性可分问题。
要解决这样的非线性可分问题,需考虑使用多层功能神经网络。如下图所示,使用简单的两层感知机就能解决。输入层与输出层之间的一层神经元被称为隐层或隐含层,隐含层和输出层神经元都是带有**函数的功能神经元。
更一般地,常见的神经网络如下图所示,每一层神经元与下一层神经元全互联,同层之间无连接,也不存在跨层连接。这样的神经网络称之为多层前馈神经网络。如下图所示
3.误差逆传播算法(BP算法)
多层网络的功能要比单层感知机强得多,但欲训练复杂的多层网络,也需要更为强大的学习算法,BP算法是应用最为成功的。
BP算法的基本流程为:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5 行) ,再将误差逆向传播至隐层神经元(第6 行) ,最后根据隐层神经元的误差来别连接权和|词值进行调整(第7 行)。该法代过程循环进行,直到达到某些停止条件为止。具体如下图:
需注意的是, BP 算法的目标是要最小化训练集D 上的累积误差,而上面介绍的标准BP算法每次仅针对一个训练样例更新连接权和阈值。类似地推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播算法。
4.全局最小与局部极小
参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点;可能存在多个局部极小值,但却只会有一个全局最小值。
在现实任务中,人们常采用以下策略来试图跳出局部极小,从而进一
步接近全局最小:
(1)以多组不同参数值初始化多个神经网络, 按标准方法训练后,取其中误差最小的解作为最终参数;
(2)使用"模拟退火" (simulated annealing) 技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于"跳出"局部极小. 在每步迭代过程中,接受"次优解"的概率要随着时间的推移而逐渐降低,从而保证算法稳定;
(3)使用随机梯度下降。与标准梯度下降法精确计算梯度不同, 随机梯度下降法在计算梯度时加入了随机因素。于是即便陷入局部极小点,它计算出
的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。
此外还有遗传算法也常用于训练更好地逼近最小值。