完整的xmind脑图
本文的参考书《神经网络与深度学习》PDF
1、网络优化
1.1、高维变量的非凸优化
1.2、神经网络优化的改善方法
-
使用更有效的优化算法来提高梯度下降优化方法的效率和稳定性。比如:动态学习调整、梯度估计修正
-
使用更好的参数初始化方法、数据预处理方法来提高优化效率
-
修改网络结构来得到更好的优化地形,比如使用ReLU激活函数、残差连接、逐层归一化
- 优化地形:在高维空间中损失函数的曲面形状。好的优化地形通常比较平滑
-
使用更好的超参数优化方法
2、优化算法
(1)调整学习率,使得优化更稳定,(2)梯度估计修正,优化训练速度
2.1小批量梯度下降(MBGD)
2.2随机梯度下降法
-
随机梯度下降法(SGD)
- 每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数
-
批量梯度下降法(BGD)
- 批量梯度下降法在每次迭代时都需要计算每个样本上损失函数的梯度并求和
- 当训练样本数N很大时,空间复杂度比较高,每次迭代的计算开销也很大
2.3批量大小选择
2.4学习率的调整
-
2.4.1学习率衰减(学习率退火)
-
分段常数衰减(阶梯衰减)
- 即每经过T1,T2,…Tm次迭代将学习率衰减为原来的a1,a2,…,am倍,其中Tm和am<1,Tm和am为根据经验设置的超参数
-
逆时衰减
-
指数衰减
-
自然指数衰减
-
余弦衰减
-
2.4.2 学习率预热
-
2.4.3周期性学习率调整
-
2.4.4 AdaGrad算法
-
它根据自变量在每个维度的梯度值得大小来调整各个维度上得学习率,从而避免统一的学习率难以适应所有维度得问题
-

-
如果目标函数有关自变量中某个元素的偏导数一直比较大,那么该元素的学习率将下降较快
- 反之,如果目标函数有关自变量中的某个元素的偏导数一直都较小,那么该元素的学习率将下降较慢
-
学习率在迭代早期下降比较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率国小,可能比较难找到一个有用的解
-
2.4.5 RMSprop算法
-
2.4.6 AdaDelta算法
- AdaDelta算法没有学习率这一超参数

2.5 梯度估计修正
2.6 优化算法小结
3、参数初始化
当使用梯度下降发来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力。
3.1 预训练初始化
- 预训练初始化通常会提升模型泛化能力的一种解释是预训练任务起到一定的正则化
- 不同的参数初始化值会收敛到不同的局部最优解
- 通常情况下,一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值,这种初始化方法称为预训练初始化
- 预训练模型在目标任务上的学习过程也称为精调
3.2 随机初始化
3.3 固定值初始化
-
对于一些特殊的参数,可以根据经验用一个特殊的固定值来进行初始化。
- 比如偏置(Bias)通常用0来初始化,但是有时可以设置某些经验以提高优化效率。
-
在LSTM网络的遗忘门在,偏置通常初始化为1或2,使得时序上的梯度变大
-
对于使用ReLU的神经元,有时偏置设为0.01,使得ReLU神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播。
4、数据预处理
如果一个机器学习算法在缩放全部或部分特征后不影响他的学习和预测,我们就称为该算法具有尺度不变性
- 比如线性分类器是尺度不变性,而邻近分类器就是尺度敏感的
归一化方法泛指把数据特征转换为相同尺度的方法
-
最小最大值归一化
- 是一种非常简单的归一化方法,通过缩放将每一个特征的取值范围归一到[0,1]或[-1,1]之间
-
标准化
- 也叫做Z值归一化,来源于统计上的标准分数。将每一个维特征都调整为均值为0,方差为1.
-
白化
- 是一种重要的预处理方法,用来降低输入数据特征之间的冗余性。输入数据经过百花处理后,特征之间的相关性较低,并且所有特征具有相同的方差
5、逐层归一化
逐层归一化可以有效提高训练效率的原因有
-
(1)更好的尺度不变性
- 把每个神经层的输入分布都归一化为标准正太分布,可以使得每个神经层对其输入具有更好得尺度不变性,
-
(2)更平滑得优化地形
- 逐层归一化一方面可以使得大部分神经层得输入处于不饱和区域,从而让梯度变大,避免梯度消失问题
- 另一方面还可以使得神经网络得优化地形更加平滑,以及使梯度变得更加稳定,从而允许我们使用更大的学习率
尺度不变性可以使得我们更加高效地进行参数初始化以及超参数选择
5.1 批量归一化
- 具体看书《神经网络与深度学习》p175
- 批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计系统
5.2 层归一化
- 具体看书《神经网络与深度学习》p177
- 是和批量归一化非常类似的方法,和批量归一化不同的是,层归一化是对一个中间层的所有神经元进行归一化
5.3 权重归一化
- 对神经网络的连接权重进行归一化,通过在参数化方法,将连接权重分解为长度和方向上两种参数
- 由于在神经网络中权重经常是共享的,权重数量往往比神经元数量少,因此权重归一化的开销会比较小
5.4 局部相应归一化
6、超参数优化
常见的超参数有以下三类
- (1) 网络结构包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等
- (2)优化参数,包括优化方法、学习率、小批量的样本数量
- (3) 正则化系数
超参数优化存在的困难
- (1)超参数优化是一个组合优化问题,无法像一般参数那样通过梯度下降方法来优化,也没有一种通用有效的优化方法
- (2)评估一组超参数配置的时间代价高,导致一些优化方法在超参数优化中难以应用
6.1 网格搜索
- 一种通过尝试所有超参数的组合来寻址合适一组超参数配置的方法
- 网格搜索根据这些超参数的不同组合分别训练一个模型,然后测试这些模型在开发集上的性能,选取一组性能最好的配置
6.2 随机搜索
- 一种在实践中比较有效的改进方法是对超参数进行随机组合,然后选取一个性能最好的配置。
6.3贝叶斯优化
- 贝叶斯优化是一种自适应的超参数优化方法,根据当前已经实验的超参数组合,来预测下一个可能带来最大收益的组合
- 一种比较常用的贝叶斯优化方法为时序模型优化 具体看书p180
6.4 动态资源分配 p181
6.5 神经架构搜索
- 是一个新的比较有前景的研究方向,通过神经网络自动实现网络架构的设计。
- 一个神经网络的架构可以用一个变长的字符串来描述.利用元学习的思想,神经架构搜索利用一个控制器来生成另一个子网络的架构描述
- 控制器可以由一个循环神经网络来实现.控制器的训练可以通过强化学习来完成,其奖励信号为生成的子网络在开发集上的准确率
## 7 、网络正则化 p183
正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,比如引入约束、增加先验、提前停止等
7.1 ℓ1 和ℓ2 正则化
- 一种折中的正则化方法是同时加入ℓ1 和ℓ2 正则化 ,称为弹性网络正则化

7.2 权重衰减
7.3提前停止
- 提前停止对于深度神经网络来说是一种简单有效的正则化方法.
- 由于深度神经网络的拟合能力非常强,因此比较容易在训练集上过拟合.
- 使用梯度下降法进行优化时,我们可以使用一个和训练集独立的样本集合,称为验证集,并用验证集上的错误来代替期望错误.当验证集上的错误率不再下降,就停止迭代.
7.4 丢弃发(dropout)
7.5 数据增强
- (1) 旋转(Rotation):将图像按顺时针或逆时针方向随机旋转一定角度.
- (2) 翻转(Flip):将图像沿水平或垂直方向随机翻转一定角度.
- (3) 缩放(Zoom In/Out):将图像放大或缩小一定比例.
- (4) 平移(Shift):将图像沿水平或垂直方法平移一定步长.
- (5) 加噪声(Noise):加入随机噪声.
7.6 标签平滑
- 在数据增强中,我们可以给样本特征加入随机噪声来避免过拟合.同样,我们也可以给样本的标签引入一定的噪声.
- 假设训练数据集中有一些样本的标签是被错误标注的,那么最小化这些样本上的损失函数会导致过拟合
- 一种改善的正则化方法是标签平滑,即在输出标签中添加噪声来避免模型过拟合
8、优化问题
神经网络的损失函数是一个非凸优化问题,找到全局最优解比较困难
参数非常多,训练数据大
存在梯度消失和梯度爆炸的问题,导致基于梯度的优化方法经常失效
9、泛化问题
由于深度神经网络的复杂度比较高,并且拟合能力很强,很容易在训练集上产生过拟合。
因此,通过一定的正则化来改进网络的泛化能力