Chapter5 Neural Network
第五章 神经网络
5.1 神经元模型
定义:神经网络是具有自适应性的简单单元所组成的广泛并行连接的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应
与机器学习交叉的领域称为神经网络学习
神经网络最基本的成分为神经元模型,即上面说的简单单元。
5.2 感知机与多层网络
感知机(Perception)由两层神经元组成,输入层接收外界信号传递给输出层,然后输出层将输入层传递来的带有权重的信号与阈值进行比较,然后通过**函数处理产生神经元的输出。(这样的输出层也可称为M-P神经元)。但由于感知机只拥有一层功能神经元,所以其学习能力非常有限,若问题本身就是线性可分那还好,感知机学习一定会收敛,若不是的话,感知机学习会发生震荡,甚至无法分类。
所以对于非线性可分问题,引入多层功能神经元,利用输入层和输出层之间的隐层增强神经网络的学习能力。
更一般的,若每层神经元与下一层神经元全互连,且神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常被称为多层前馈神经网络(multi-layer feedforward neutral networks)。(前馈:不是说网络只向前单向传播,而是指网络拓扑结构不存在环或回路。)
在神经网络里,通常输入层并不做函数处理,隐层和输出层才包括功能单位元,按照隐层和输出层的数量和n,称其为“n层网络”,仅就隐层数量k,称其为“k隐层网络”。
小结:实际上,神经网络的学习过程就是一个不断调整神经元之间的“连接权”每个神经元的阈值的过程。
5.3 误差逆传播算法(BackPropagation,BP)
一般来说,BP网络就是指BP算法训练的多层前馈神经网络,当然实际上,BP算法还可用于训练其他类型的神经网络,如递归神经网络等。
BP算法是基于梯度下降法和感知机规则之上的一种算法,在学习之前,我们先学习一下梯度下降法。
5.3.1梯度下降法(Gradient descent)
该方法是一种常用的一阶优化方法,具体是指在无约束优化问题,其中连续可微。若能构造一个序列满足:
则不断执行该过程可收敛到局部极小点,根据泰勒展开式:
那么为了满足,可选择:
其中步长是一个小常数,这就是梯度下降法。
注:步长的选择往往来自于自身的一些条件或特点。
若二阶连续可微。可对二阶泰勒展开,这就得到了牛顿法。其迭代轮数小于梯度下降法,但牛顿法涉及到,所以其每轮迭代都涉及到海森矩阵求逆,在高维中几乎不可行。那么在引入拟牛顿法寻找海森矩阵的近似逆矩阵。
BP算法:
综上:
其中:
注:BP算法的目标是要最小化训练集D上的累积误差(),但上述介绍的标准BP算法每次仅针对一个训练样例更新连接权和阈值,类似推导出基于累计误差最小化的更新规则,就得到了累积误差逆传播(Accumulated error backpropagation)。但累积误差下降到一定程度后下降速度会变很慢,这时候再用回标准BP往往更快。
BP神经网络的强大,使其常常遭受过拟合的危险,有两种方法解决这个问题:1)早停:当训练集误差降低但验证集误差提高时停止学习。2)正则化:在误差目标函数中增加一个用于描述网络复杂度的部分,例如,将误差目标函数改为,其中用于对经验误差与网络复杂度这两项进行折中。
5.4 全局最小与局部最小
我们往往用表示误差函数的局部最小值或全局最小值。
当我们寻找的参数不只一个局部极小,那么参数寻优往往就会陷入局部最小,这显然不是我们希望的,为此,人们想出方法跳出局部最小:
- 从多个不同的参数值初始点出发再取误差最小的神经网络
- 模拟退火技术:每一步都以一定概率接受比当前解更差的结果
- 使用随机梯度下降instead of标准梯度下降。(即使到局部最小,梯度依然不为0,还可以继续搜索)
此外还有遗传算法,也可以更好地逼近全局最小。值得说明的是上述方法仍是启发式的,理论上缺乏保证。
5.5 其他常见神经网络
5.5.1RBF网络(径向基函数网络)
是一种单隐层前馈神经网络,以径向基函数作为隐层神经元的**函数。径向基函数:
即输出层实值表示为,其中q为隐层神经元个数,与分别是第i个隐层神经元所对应的中心和权重。
5.5.2ART网络(自适应谐振理论网络)
Winner-take-all! Unsupervised learning!
该网络由比较层,识别层,识别阈值和重置模块构成。比较层接受输入样本并传递给识别层,识别层神经元之间相互竞争(比较向量与神经元代表模式类的代表向量之间的距离,小距离获胜),以产生获胜神经元。
ART网络较好的缓解了可塑性-稳定性窘境,可进行增量学习或在线学习。
5.5.3 SOM网络(自组织映射网络)
5.5.4 级联相关网络
5.5.5 Elman网络
5.5.6 Boltzmann机
5.6 深度学习
典型的深度学习就是很深层的神经网络,但注意,多隐层神经网络往往难以用标准BP算法进行训练,因为在多隐层逆传播时往往会“发散”,而不能收敛。
无监督逐层训练:每次训练一层隐结点,这称为预训练,在预训练全部完成后在对整个网络进行微调训练。
权共享,是CNN里面运动到的一个重要的方法。