第二周记录:
1.XOR问题
线性不可分问题:无法进行线性分类。
解决方法:使用多层感知机
• 在输入和输出层间加一或多层隐单元,构成多层感知器(多层前馈神经网络)。
• 加一层隐节点(单元)为三层网络,可解决异或(XOR)问题由输入得到两个隐节点、一个输层节点的输出
2.多层前馈网络:
多层感知机是一种多层前馈网络,由多层神经网络构成,每层网络将输出传递给下一层网络。神经元间的权值连接仅出现在相邻层之间,不出现在其他位置。如果每一个神经元都连接到上一层的所有神经元除输入层外),则成为全连接网络。
多层前馈网络的反向传播(BP)学习算法,简称BP算法,是有导师的学习,它是梯度下降法在多层前馈网中的应用。
网络结构:见下图,𝐮(或𝐱 )、𝐲是网络的输入、输出向量,神经元用节点表示,网络由输入层、隐层和输出层节点组成,隐层可一,也可多层(图中是单隐层),前层至后层节点通过权联接。由于用BP学习算法,所以常称BP神经网络。
BP
学习算法由正向传播和反向传播组成:
①
正向传播是输入信号从输入层经隐层,传向输出层,若输出层得到了期望的输出,则学习算法结束;否则,转至反向传播。
②
反向传播是将误差
(
样本输出与网络输出之差)按原联接通路反向计算,由梯法调整各层节点的权值和阈值,使误差减小。
3.BP算法评述
优点:学习完全自主;可逼近任意非线性函数。
缺点:算法非全局收敛;收敛速度慢;学习速率α选择; 神经网络设计方法(层数、节点数)
4.常用技巧
(1)模型初始化
简单考虑,把所有权值在[-1,1]区间内按均值或高斯分布进行初始化。
Xavier初始化:为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等。因此需要实现下面的均匀分布:
(2)训练数据
数据包括:训练数据 、验证数据 、测试数据。通常三者比例为70%,15%,15%或60,20,20
当数据很多时,训练和验证数据可适当减少。
K折
交叉验证:
原始训练数据被分成K个不重叠的子集。 然后执行K次模型训练和验证,每次在K−1个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后, 通过对K次实验的结果取平均来估计训练和验证误差。
原始训练数据被分成K个不重叠的子集。 然后执行K次模型训练和验证,每次在K−1个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后, 通过对K次实验的结果取平均来估计训练和验证误差。
(3)权重
欠拟合指误差一直比较大,过拟合指在训练数据集上误差小而在测试数据集上误差大。
为防止过拟合和权值震荡,加入新的指标函数项:
第二项约束了权值不能过大。在梯度下降时,导数容易计算。
(4)
Dropout(暂退)
在整个训练过程的每一次迭代中,标准暂退法包括在计算下 一层之前将当前层中的一些节点置零。
5.动量方法
SDG问题:病态曲率
如果把原始的SGD想象成一个纸团在重力作用向下滚动,由于质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为0,导致无法离开这块平地。动量方法相当于把纸团换成了铁球;不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。
动量法更新公式如下:
6 自适应梯度算法
具有较大偏导的参数相应有一个较大的学习 率,而具有小偏导的参数则对应一个较小的学习率。这就是参数的自适应变化。具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根。
AdaGrad是最基础的自适应梯度算法。它的问题在于学习率是单调递减的,训练后期学习率过小会导致训练困难, 甚至提前结束。因此需要设置一个全局的初始学习率。
RMSProp能解决AdaGrad方法中学习率过度衰减的问题。它使用指数衰减平均以丢弃遥远的历史,使其能够快速收敛;此外,RMSProp还加入了超参数𝜌控制衰减速率。
Adam在RMSProp方法的基础上更进一步。除了加入历史梯度平方的指数衰减平均(𝑟)外,还保留了历史梯度的指数衰减平均(𝑠),相当于动量。Adam行为就像一个带有摩擦力的小球,在误差面上倾向于平坦的极小值。