神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
最基本的成分是神经元模型,即“简单单元”
每个神经元与其他神经元相连,当它兴奋时(电位超过阈值),会向相连的神经元发送化学物质,从而改变这些神经元的电位。
理想的激活函数是阶跃函数(1:神经元兴奋 0:神经元抑制),但由于其不连续不光滑,常用Sigmoid函数作为激活函数
许多个神经元按一定的层次结构连接起来就得到了神经网络
神经网络是包含了许多参数的数学模型,是若干个函数相互嵌套而得
感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层
感知机学习规则:
n∈(0,1) 称为学习率(learning rate)
感知机学习能力有限,只有输出层神经元进行激活函数处理,只拥有一层功能神经元
感知机对线性可分问题 一定会收敛 求得适当的权向量
否则会发生震荡 难以稳定 不能求得合适解
多层前馈神经网络(multi-layer feedforward neural networks):
每层神经元与下一层神经元全互联,不存在同层连接和跨层连接。
隐层(hidden layer):输出层与输入层之间的神经元层
“单隐层网络” or “两层网络” (包含隐层都可称为多层网络)
隐含层 和 输出层 神经元都是拥有激活函数的功能神经元
神经网络学到的东西蕴含在连接权与阈值之中
误差逆传播(Error BackPropagation BP)算法: 迭代学习算法训练多层神经网络
基于梯度下降策略,以目标的负梯度方向对参数进行调整
- 输入示例提供给神经网络,产生输出层结果
- 计算输出层误差
- 将误差逆向传播至隐层神经元
- 根据隐层神经元误差对连接权和阈值进行调整
BP算法的目标是要最小化训练集上的累计误差
标准BP算法
- 是针对一个训练样例更新参数,参数更新频繁,需要多次迭代
- 对不同样例,更新效果可能出现“抵消”
累计BP算法
- 读取整个训练集后才进行参数更新,频率低
- 在很多任务中,当累计误差下降到一定程度后,进一步下降非常缓慢
BP神经网络经常会过拟合,训练误差降低但测试误差可能上升
- 早停:当训练集误差降低但测试误差身高时停止训练,返回最小验证集误差的参数
- 正则化:在误差目标函数中增加一个用于描述网络复杂度的部分(e.g. 连接权与阈值的平方和)
“跳出”局部最小,获得全局最小
- 多组不同参数值初始化多个神经网络
- 使用模拟退火,每一步以一定概率(随时间推移而降低)接受比当前解更差的结果
- 使用随机梯度下降,计算梯度时加入随机因素
常见神经网络
深度学习:
无监督逐层训练是多隐层网络训练的有效手段
- 预训练:每次训练一层隐结点。上一层隐结点输出作为输入,本层隐结点输出作为下一次的输入。
-
微调:预训练全部完成后,对整个网络进行微调
E.G. 深度信念网络DBN
或者 -
权共享:让一组神经元使用相同的连接权。
E.G. 卷积神经网络CNN