网络优化和正则化
1、将神经网络应用于机器学习的难点:
- 优化问题:神经网络模型是一个非凸函数,再加上在深度网络中的梯度消失问题,很难进行优化;另外,深层神经网络模型一般参数比较多,训练数据也比较大,会导致训练的效率比较低。
- 泛化问题:因为神经网络的拟合能力强,反而容易在训练集上产生过拟合。因此,在训练深层神经网络时,同时也需要通过一定的正则化方法来改进网络的泛化能力。
2、网络优化
- 优化的难点:
- 网络结构多样:结构多样、参数多
- 高维变量的非凸优化:如何初始化参数、局部最优点
3、优化算法
- 主要使用梯度下降算法寻找最优值,又可分为:
- 批量梯度下降
- 随机梯度下降
- 小批量梯度下降
- 上述三种方法共同的问题是:
- 如何初始化参数
- 如何预处理数据
- 如何选择合适的学习率,避免陷入局部最优值
3.1、小批量梯度下降
- 特点:每次迭代选取的批量样本数越多,下降效果越明显,并且下降曲线越平滑。当每次选取一个样本时(相当于随机梯度下降),损失整体是下降趋势,但局部看会来回震荡。如果按整个数据集上的迭代次数的来看损失变化情况,则是批量样本数越小,下降效果越明显。
- 学习率衰减:学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回震荡。$
-
逆时衰减:
-
指数衰减:
-
自然指数衰减:
-
自适应学习率调整算法
- AdaGrad
- RMSSprop
- AdaDelta
-
- 梯度方向优化
- 动量法
- Nesterov 加速梯度
- 自适应动量估计(Adaptive Moment Estimation, Adam)
- 总结:上述几种优化方法大体上可以分为两类:一是调整学习率,使得优化更稳定;二是调整梯度方向,优化训练速度。
4、参数初始化
- 一般而言,参数初始化的区间应该根据神经元的性质进行差异化的设置。如果一个神经元的输入连接很多,它的每个输入连接上的权重就应该小一些,以避免神经元的输出过大(当激活函数为 ReLU时)或过饱和(当激活函数为 sigmoid函数时)。
- 常用的初始化方式:
- Gaussian 分布初始化
- 均匀分布初始化
5、数据预处理
- 一般而言,原始的训练数据中,每一维特征的来源以及度量单位不同,会造成这些特征值的分布范围往往差异很大。当我们计算不同样本之间的欧氏距离时,取值范围大的特征会起到主导作用。另外,不同特征的取值范围相差较大还会影响梯度下降算法的效率。
- 常用的归一化方法:
-
缩放归一化
-
标准归一化
-
白化:白化(Whitening)是一种重要的预处理方法,用来降低输入数据特征之间的冗余性。输入数据经过白化处理后,特征之间相关性较低,并且所有特征具有相同的方差。
- 白化的一个主要实现方式是使用主成分分析(Principal Component Analysis, PCA)方法去除掉各个成分之间的相关性。
-
6、网络正则化
- 正则化(Regularization)是一类通过限制限制模型复杂度,从而避免过拟合,提高泛化能力的方法,包括引入一些约束规则,增加先验、提前停止等。
- ℓ1 和 ℓ2 正则化
- 权重衰减
- 提前停止
- 丢弃法
- 数据增强
- 主要应用于图像处理上
- 图像数据的增强主要是通过算法对图像进行转变,引入噪声等方法来增加数据的多样性。增强的方法主要有几种:
- 旋转
- 翻转
- 缩放
- 平移
- 加噪声
- 标签平滑