神经网络的概念来源于生物学(仿生),并受其启发,但神经网络的发展早已摆脱了仿生物学的思路。 该领域现在研究的热门方向为深度神经网络。
“标准BP算法”并不“标准”,真正使用的是累计BP算法(目标为最小化训练集上的累计误差)。
BP算法是梯度下降法的应用。
梯度下降算法:在参数寻优的过程中需要避免目标函数陷入局部极小。生活中的例子:盲人下山很有可能下到半山上的一个深坑中,这个“坑”就是局部极小。 梯度下降法的每一步只能感觉当前下降最快的方向,这一点很像盲人,没有全局视野,“入坑”难免。
模拟退火法:不是防止“入坑”而是考虑如何“跳出坑”,策略是加入“碰运气”成份(随机扰动)
在梯度下降算法中每次随机地从训练集中取小批量进行训练,这种方法称为随机梯度下降法。
神经元模型
【西瓜书图5.1】所示为神经元模型的一种(M-P神经元模型)。
设激活函数为,则该神经元的数学模型为
其中,式(5.1)变为式(5.2)是将阈值作为,对应为固定输入,即将扩一维后公式变简洁了,参考3.1 线性回归中式(5)的推导。
因生物学中的神经元的状态为兴奋与抑制,以1和0表示,故取标记为,对应的神经元输出为符号函数【西瓜书图5.2(a)】,然而,函数(也叫函数)的数学性质不好(不连续),通常以函数逼近它【西瓜书图5.2(b)】,即式(5.1)与式(5.2)中取激活函数为。
注意调整字母:设数据集,其中,样本,二分类中对应的标记(或),这时,由样本在上述神经元中产生的输出值通常不记为,而是记为,因为,已被标记所占用,即标记为(这是二元素的集合),神经元输出值为(这是区间)。
另外,回顾3.2 对数几率回归(逻辑回归)【西瓜书式(3.18)(3.19)】就可用这里的神经元模型(【西瓜书图5.1】右上角公式及【西瓜书图5.2(b)】的公式)来表达, 比较二者知:公式是一致的(记)。 即实际上对数几率回归是一个激活函数为的神经元模型。 然而,二者的解释意义反映不同的侧面:一个是从概率角度,一个是从神经元角度。 结合二者就是:神经元的输出可以视为样本为正例的概率。
感知机与多层网络
感知机实际上就是一个神经元【西瓜书图5.3】所示,只不过是将样本输入用一组结点表示(一个属性对应一个结点),形成输入层,而神经元(一个)充当了输出层。
设数据集,取阶跃函数,现在我们对感知机进行训练:
(1)先任意初始化参数(含的),记为;
(2)任取一样本,将其输入到感知机(代入式(5.2))得到,比较与,若不符,则调整参数为;
(3)再任取一样本,将其输入到感知机(代入式(5.2))得到,比较与,若不符,则再调整参数为;
(4)以此类推,直到收敛。
上述调整的迭代式为【西瓜书式(5.1)(5.2)】,如果是线性可分的问题,则迭代式是收敛的,即经过足够的“时间步”之后,会(趋于)保持不变,其数学证明从略。 感知机视为两层(输入层和输出层)神经网络或一层功能层神经网络(输入层不运算),它适用于线性可分情况。
如果不是线性可分的问题,则迭代式不收敛,但可以构造含隐层的网络来解决(【西瓜书p.106】指出只需含足够多结点的单隐层即可)。 只要有隐层即称为多层,有足够多的层则称为深度学习网络。
误差逆传播算法
标准BP算法
【西瓜书图5.7】描述的是只含一个隐层(最简单的情况)的BP网络,除输入结点外,其余每个结点均为一个神经元。 为便于理解下面补充如下描述,一些约定俗成的知识可供读者作神经网络图时参照。
我们先改造样例的表示:设数据集,将个类别标识对应成维向量:类1对应为(第1位为1,其余全为0),类2对应为(第2位为1,其余全为0),,类对应为(第位为1,其余全为0),这组向量记为:,其中表是第行为1其余全为0的“独1”列向量。 这里为明确区别,将标记改为上标表示,即表示类别的标识向量,表示样本的标记向量。 在此改造下,数据集变为
。 即样本是向量,标记也是向量(且为“独1”向量),对应到神经网络即是:输入是向量,输出也是向量。
再看图形特征:
(1)网络结构
- 输入层对应于样本向量,即输入层的结点数对应于样本的属性数,每个属性对应一个结点,用属性标识该结点;
- 输出层对应于输出向量,即输出层的结点数对应于上述类别向量的维度数,用对应的类别标识代表该结点数;
- 只有一个隐层,隐层的结点数没有限制,通常大于输入层和输出层结点;
- 从图形上看,层的编号是从底往上数的,输入层画在最底层。
(2)网络结点
- 不同层用不同的字母表示:输入层用,输出层用,隐层用;
- 下标表示结点的序号;
- 下标变量也依层而异:对应到。
(3)网络连线
- 同层内没有连线;
- 邻层间“全连接”,且为有向连接线(从低层指向高层,常省略箭头);
- 每条连线上都有权重,如,第一层线的权重用字母表示,第二层线的权重用字母表示;
- 权重字母下标标识连接线的起点与终点,如,表示到的有向连线上的权重。
(4)神经元
- 除输入结点外,每个结点都为一个神经元;
- 神经元的输入:从有向连线的视角来看,结点的输入为每条入线之和,而每条入线的值为该线的起点值乘以该线的权重。 即每个神经元都有一个加权输入:如,的加权输入为,【西瓜书图5.7右上角】记为;
- 神经元的阈值:同层的神经元的阈值用同一字母,如,隐层的为,输出层的为,阀的下标与该结点的下标一致,如,表示结点的阈值,表示结点的阈值;
- 神经元的输出:神经元依输入(加权和)、阈值经过激活函数产生输出【西瓜书图5.1右上角公式】,所有神经元的激活函数均使用对数几率函数【西瓜书图5.2(b)】。
前述我们知道:样本向量的标记为向量,神经网络的输出(一组神经元的输出)也是向量,那么,这个向量有什么要求?
由于所有神经元的激活函数均使用对数几率函数,故为连续值,训练的目标就是希望以连续型向量式(5.3)预测离散型的“独1”向量,由此构造均方误差【西瓜书式(5.4)】。 将中的视为“时间步”,希望足够的“时间步”后,达到最小值。
注:(1)这里将视为样本的真值,而不是观察值;(2)前面以分类导出为“独1”向量,其实推广到了一般情形:,参见3.3 线性判别分析LDA中的多分类LDA。
在实际训练中,亦可为样本的编号,当样本足够多时,依样本的次序对进行训练,直至收敛到最小值即可。 然而,通常样本数小于训练所需的“时间步”数,这就要重复使用样本了。
用训练的基本思路即为误差逆向传播(BP算法),要点为:
(1)用梯度下降法寻找目标的负梯度方向(下降最快的方向),即【西瓜书式(5.6)】,参见【西瓜书第B.4节梯度下降法】,其中为学习率,它控制更新的步长:步子太大可能会越过最优点,步子太小则收敛速度太慢;
(2)利用偏导数的链式法则,将上述梯度化为沿“逆向路径”的偏导数。
(3)利用对数几率函数求导的良好性质,得到更新公式【西瓜书式(5.11)(5.14)】。
我们重点推导【西瓜书式(5.10)】:
综上,得到“标准BP算法”【西瓜书图5.8】。
神经网络的输入为数字特征,然而,有时数据集(如,【西瓜书表4.3】中,“色泽”)包含有非数字特征,需要进行数字化。 我们将这种“数据字典式”的特征改造为“判断式”(1表示是,0表示不是),即以(1,0,0)、(0,1,0)、(0,0,1)分别表示这三种色泽,这样,特征“色泽”由一维扩展成了三维,实现了数字化。 相应地增加输入层的结点数 。
累计BP算法
其实,“标准BP算法”并不“标准”,因为,训练的真正目标应是最小化训练集上的累计误差,即目标函数为
对网络训练时,每一时间步用全体数据(批量),这显然与“标准BP算法”每一时间步使用中一个样本(编号为的)不同。 即“标准BP算法”是一个变通做法。
这里,我们推导和讨论累计BP算法。
【西瓜书式(5.7)】与有关,为不丢失这个特点,可将【西瓜书式(5.10)】中的改记为(为样本编号,不是指数。另外,这里涉及样本编号标识、网络结点编号标识,如,其实,还有参数训练的轮次标识,这个通常省略),这样就有:
用同样方法去推导。 由此即可得到相关的迭代更新公式。 公式中的表示使用完训练集中的全部数据之后,才做一次参数更新,称为“一轮”(epoch),算法需要一轮一轮地使用训练集,直至参数迭代式收敛。
另外,也可以每轮并不使用训练集的全量数据,而仅从训练集中随机地取固定大小的小批量数据进行训练,在训练集非常大时常这样做。
正则化
为避免过拟合问题,常将式(5.5)进行正则化,得到目标函数【西瓜书式(5.17)】,进一步可将其第二项改为在一轮中的平均值()。
比较式(5.8)与式(5.5),知的地位等同于的地位,如是可以将前述“标准BP算法”改造为正则化的“标准BP算法”:
(1)对应于【西瓜书式(5.4)】的, 为二次式的求导方便,将的式子配上,则
其中,为超参数,是针对所有权重,即为,其中表示并入了。
(2)将梯度下降从应用于改为应用于,类似地得到各网络参数的迭代更新公式。
(3)用上述迭代更新公式取代BP算法【西瓜书图5.8】中对应的迭代式,其中,除学习率外,新增超参数。
为确定超参数,取若干不同的值,视为不同的模型,记为,使用第2章的评估方法(如,交叉验证法),对各进行性能评估,从而找出最优的,则网络即为所求。
“跳出”局部极小
在参数寻优的过程中需要避免目标函数陷入局部极小。
生活中的例子:盲人下山很有可能下到半山上的一个深坑中,这个“坑”就是局部极小。 梯度下降法的每一步只能感觉当前下降最快的方向,这一点很像盲人,没有全局视野,“入坑”难免,因此,不是防止“入坑”而是考虑如何“跳出坑”,策略是加入“碰运气”成份(随机扰动):
- 让多个盲人各自从不同的点下山(即不同的随机起点),有一人到达山脚即可。 这就是对参数进行不同的初始化,依每个初始化训练出不同的神经网络模型实例(不同的盲人),然后比较各自的最优目标函数值,找到最小者(到达山脚的盲人);
- 每一步以一定的概率接受比当前更差的结果,即盲人本来是下山,但在每一步以一定的概率“上山”(在下山过程中偶尔“斜上”走一步),不时地改变一下路径,借用冶炼中的术语“退火法”,叫它为“模拟退火法”;
- 在计算梯度时,加入随机因素,在大方向的指引下,每步都被“干扰”地走偏,曲折地前行。 如,在梯度下降算法中每次随机地从训练集中取小批量进行训练,这种方法称为随机梯度下降法。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权