神经元模型
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实外界物体所作出的交互反应。
在机器学习中谈论到的神经网络一般指神经网络学习。
模拟生物神经网络中神经元的最基本模型被称为“M-P神经元模型”,在这个模型中:
- 神经元接收到来自
个其他神经元传递过来的输入信号
;
- 输入信号通过带权重
的连接进行传递;
- 神经元接收到总输入值并与神经元的阈值
进行比较;
- 通过激活函数
处理以产生输出
。
以上的步骤可形式化为 。
理想的激活函数是阶跃函数:
将任意值映射为1或0,分别对应于神经元的激活或抑制。然而阶跃函数具有不连续、不光滑等不好的性质,因此实际中常用Sigmoid函数作为激活函数。
感知机与多层网络
感知机由两层神经元组成,
- 输入层接收外界信号传递给输出层
- 输出层是M-P神经元
令样本 ,权重
,其中
。
可改写为
。
感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限。
要解决非线性可分问题,需要使用多层功能神经元。输入层和输出层之间的神经元被称为隐含层。隐含层和输出层神经元都是有激活函数的功能神经元。
神经网络的学习过程就是通过训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值,即 。
误差逆传播算法
现实任务中,大多是神经网络是通过误差逆传播(BP)算法进行训练的。
误差逆传播算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。对任意参数 ,BP算法在每一轮迭代的更新为
其中, 为学习率,
为
对目标误差的偏导数。
给定训练集 ,其中
;
。
简单起见,这里讨论一个拥有 个输入神经元、
个输出神经元、
个隐层神经元的多层前馈神经网络:
- 输入层第
个神经元与隐层第
个神经元之间的连接权为
- 隐层第
个神经元与输出层第
个神经元之间的连接权为
- 隐层第
个神经元的阈值用
表示
- 输出第
个神经元的阈值用
表示
- 隐层和输出层的激活函数为Sigmoid函数
对训练例 ,
隐层中第 个神经元接收到的输入为
隐层中第 个神经元的输出为
输出层第 个神经元接收到的输入为
输出层第 个神经元的输出为
假设以上网络的输出为 ,整个网络在
上的均方误差为
下面,我们根据BP算法来计算神经网络中的参数更新。
对隐层第 个神经元与输出层第
个神经元之间的连接权
,
注意到, 先影响到输出层第
个神经元的输入
,在影响到其输出值
。根据求导的脸时法则,有
其中
令
因此
对输出第 个神经元的阈值
,
其中,
因此,
对输入层第 个神经元与隐层第
个神经元之间的连接权
,
注意到, 先影响到隐层层第
个神经元的输入
,并影响到其输出值
,随后影响到输出层所有的神经元的输入
,最后影响到其所有输出值
。因此,
其中,
令
因此,
同理,可推导出
对每个训练样例,BP算法执行以下操作:
- 先将输入示例提供给输入层神经元;
- 逐层将信号向前传播,直到产生输出层结果;
- 计算输出层误差;
- 将误差逆向传播到隐层神经元;
- 根据隐层神经元的误差来对连接权和阈值进行调整
完整的BP算法如下图所示。
输入:训练集 |
---|
过程 |
1:在 |
2:repeat |
3: |
4: |
5: |
6: |
7: |
8: |
9:until 达到停止条件 |
输出:连接权和阈值确定的神经网络 |
BP算法的目标是最小化训练集上的累积误差
,
然而,标准BP算法仅针对一个样例更新连接权和阈值。利用累积误差更新参数的算法被称为累积误差逆传播。
理论上,若前馈神经网络有一个包含足够多神经元的隐层,该网络能够以任意精度逼近任意复杂的连续函数。
BP神经网络经常遭遇过拟合,解决BP网络过拟合的通用方法为:
- 早停:若训练集误差下降,而验证集误差上升,则停止
- 正则化:在误差目标函数中增加一个用于描述网络复杂程度的部分,如
,其中
表示网络中的所有连接权和阈值,
用于对经验误差和网络复杂度进行折中。