5.1神经元模型
(1)神经网络:是具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。(适应性表现为训练出的数学模型可以根据需求来自动的调整自己的参数)
(2)M-P神经元模型
1. 在生物神经网络中,每个神经元都与其他神经元相连,该神经元兴奋时,会向相邻神经元转递化学物质,如果含量超过了它相邻神经元的“阈值”,则表现为“兴奋”,否则处于“抑制”状态。
2. 数学表示:
其中指对应神经元的输入,
是第i个神经元连接的权重,
为人为设定的“阈值”,如果该差值满足对应激活函数的条件,则输出
。
3. 的选择:
- 阶跃函数
若,则表示对应神经元“兴奋”;若
,则表示对应神经元“抑制”。然而,该函数是分段函数,不连续,不光滑,无法求导,不具备良好的数学运算性质,因此我们常采用Sigmoid函数作为激活函数。
- Sigmoid函数
可以看出,该函数把较大范围内变化的输入值挤压到了(-1,1)范围内,具备良好的数学性质。
把多个这样的神经元按一定层次结构连接起来,就得到了神经网络。
5.2感知机与多层网络
一、感知机——激活函数为阶跃函数的神经元
(1)组成:感知机由两层神经元组成,输入层(非M-P神经元)接受外界信号传递给输出层,输出层是“M-P神经元”。
(2)数学模型:
其中,是样本的特征向量,是感知机模型的输入;
是感知机模型的参数,
为权重,
为阈值。
(3)学习策略:
随机初始化,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为
,对任意一个误分类样本
来说,以下公式恒成立:
因此,给定数据集,其损失函数可以定义为:
该损失函数非负,最小值为0,且误分类点越少,离超平面越近,损失函数值越小。
若将阈值看作为一个固定值为-1的“哑节点”,即,则可将该问题进一步化简为:
(4)学习算法:随机梯度下降法
用矩阵的求导公式可求得该损失函数的梯度为:
则权重的更新公式为:
(学习率)通常设置为一个小正数,如0.1;若感知机对训练样例预测正确,即
,则说明感知机预测正确,不变化,否则则根据“错误的程度”对参数进行调整。
(5)适用范围:只拥有一层功能神经元,学习能力有限,只能解线性可分问题(存在一个线性超平面能将数据分割开),学习过程中会收敛而求得适当的权向量。
而诸如“异或”问题,是非线性可分的,感知机模型无法解决。
改进:增加感知机的层数,或每层神经元的个数,考虑多层神经元。
除输入层外,中间的“隐层”和输出层全部为M-P神经元,拥有激活函数。
二、多层网络
多层前馈神经网络:每层神经元与下一层全互连,神经元之间不存在同层连接,不存在跨层连接。
命名时,只需“包含隐层”,即可称为“多层网络”。(如包含两层隐层,则称为“双隐层网络”)
5.3误差逆传播算法(BP算法)
(1)概览:将神经网络(记为NN)看作一个特征加工函数,给定训练集,即输入示例由
个属性描述,输出
维实值向量,有:
假设隐层和输出层全使用Sigmoid函数,且要完成的任务为(多输出)回归任务,则其结构如下图:
对于某个训练样本,其中
,假定其多层前馈神经网络的输出为
,则单个样本的均方误差为:
(1/2是为了求导后消去常数)
(2)参数确定:该网络中有个参数需要确定:
1. 输入层到隐层的个权值
2. 隐层到输出层的个权值
3. 个隐层神经元的阈值
4. 个输出层神经元的阈值
(3)梯度下降方法:该算法是一个梯度下降算法,以目标的负梯度方向对参数进行调整。如:
此处举例输入层第i个神经元与隐层第h个神经元之间的连接权为例子进行推导:
,
又
所以原式
以此类推,最终得到的更新公式为:
其中:
(4)工作流程:
1. 将所有参数随机初始化
2. 将输入数据提供给输入层神经元
3. 逐层将信号前传,直到产生输出层的结果
4. 计算输出层的误差
5. 将误差逆向传播至隐层神经元
6. 根据隐层神经元的误差对连接权和阈值进行调整
7. 循环迭代2-6过程,直至误差达到一个很小的值
(5)标准BP算法和累计BP算法:
- 标准BP算法是针对“单个样例”的误差
来更新连接权和阈值,更新次数非常频繁,需要多次迭代
-
累积BP算法是针对“整个数据集
”的“累积误差”
,再根据“累积误差”对参数进行更新
标准BP算法每次更新参数只针对单个样例,参数更新频繁,不同样例之间会出现“抵消”现象,因此需要消耗更多的迭代次数达到累计误差极小值点。
累计BP算法读取整个训练集之后才进行一次参数更新,因此更新参数频率更低,但若数据集D数据量过大,当累计误差下降到某一程度时,进一步下降来达到极小值点的速度会更缓慢。
(6)通用近似定理:只需要一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。
然而,如何设置隐层神经元的个数是未知问题。实际应用中采取“试错法”遍历调整。
(7)如何预防过拟合:由于BP神经网络强大的表现力,因此常常出现过拟合的问题——训练误差持续降低,但测试误差持续上升。
解决方法:
- 早停
时刻关注训练误差和测试误差,若训练集误差降低但验证集误差升高,则停止训练,并返回具有最小验证集误差的连接值和阈值。
- 正则化
在误差目标函数中增加一个描述网络复杂度的部分,如连接权与阈值的平方和。则误差目标函数改变为:
,
用于对“经验误差”和“网络复杂度”这两项进行折中,常通过交叉验证法进行估计。
本文参考资料:
《机器学习》周志华著,清华大学出版社。