深层模型优化与训练

一、梯度下降

最简单的梯度下降算法——固定学习率

x -= grad*lr

步长的选择:

步长太小对局部极小值的逼近慢,训练时间长

步长太大,模型容易震荡,结果不收敛

二、Adam法梯度下降

动量法梯度下降:(当前更新量+之前值 )的平滑

冲量的“惯性”

pre_grad = pre_grad*discount + grad*lr

x -= pre_grad

目的:积累梯度方向(分量)会逐步增强,帮助目标穿越“狭窄山谷”形状的优化曲面;从而加快了训练速度

比如Nesterov

自适应法:自适应确定更新量,使得更新量更加均衡,不随梯度显著变化;即参数的优化更加均衡

“启动快”,善于处理“爬坡”

x -= lr * f(grad)

比如Adagrad

Adam法融合以上两种思路的优点

三、局部最优与全局最优

The Loss Surfaces of Multilayer Networks

Deep Learning without Poor Local Minima

以上两篇论文结论:随着模型复杂度上升,局部最优点的目标函数值和全局最优点的函数值的差距在不断缩小。

这样即使模型参数收敛到一个局部最优值上,模型表现依然很好。

 

对上述结论一种简化的理解(不定方程理论):如果把神经网络抽象成一个线性变换的过程,那么这个问题相当于求解一个参数数量多于方程数量的方程组。这样的问题是很可能有多于一个解的。

如果模型变得复杂,相当于参数数量进一步增加,那么解的数量也会变得更多。所以在深层网络中存在参数不同但结果相近的现象是很有可能的。

 

优化中的一对矛盾:

a) 模型复杂度:随着参数数量增大和模型深度加深,求解模型的全局最优值变得越来越困难。

b) 模型优化满意度:模型复杂度越高,局部最优点效果越逼近全局最优点。

 

四、正则化

左为L1范数,右为L2范数

可见L1正则约束下,目标函数最优值更容易出现在坐标轴上。

优化目标公式: Obj(w) = Loss(w) + L1/L2(w) 

L1即参数平均值,此正则约束下,最优参数具有稀疏性;相应参数规模会减小L

 求解:

L1正则在原点处不可导,求解L1正则使用的是“次梯度下降算法”

L2正则是求参数w的平方值,用于防止过拟合。一般采用L2正则。

五、深层模型泛化

深层模型的复杂度很难用传统机器学习中的量化指标(比如VC维)来衡量。

通过过拟合来提高深层模型的泛化能力:

1、前提:模型的输入空间在某个领域内具备泛化能力。

2、手段:

a)补充足够多的数据,覆盖更大的样本输入空间

b)让局部泛化的范围变大——比如L2限制了参数大小,可以让模型在局部表现得比较平滑,从而起到一些效果;Batch Norm也限制了模型,所以也能起到一些效果。

原文地址:https://www.cnblogs.com/eniac1946/p/8039256.html