最优化算法总结

最优化算法是建立神经网络模型后,求解模型参数的算法

牛顿法

收敛速度快 靠近极小值时收敛速度减慢,求解Hessian矩阵的逆矩阵复杂,容易陷入鞍点 不适用于高维数据

拟牛顿法

收敛速度快,不用计算二阶导数,低运算复杂度 存储正定矩阵,内存消耗大 不适用于高维数据

批量梯度下降

目标函数为凸函数时,可以找到全局最优值 收敛速度慢,需要用到全部数据,内存消耗大 不适用于大数据集,不能在线更新模型

随机梯度下降

避免冗余数据的干扰,收敛速度加快,能够在线学习 更新值的方差较大,收敛过程会产生波动,可能落入极小值,选择合适的学习率比较困难 适用于需要在线更新的模型,适用于大规模训练样本情况

小批量梯度下降

降低更新值的方差,收敛较为稳定 选择合适的学习率比较困难

Momentum

能够在相关方向加速SGD,抑制振荡,从而加快收敛 需要人工设定学习率 适用于有可靠的初始化参数

Nesterov

梯度在大的跳跃后,进行计算对当前梯度进行校正 需要人工设定学习率

Adagrad

不需要对每个学习率手工地调节 仍依赖于人工设置一个全局学习率,学习率设置过大,对梯度的调节太大。中后期,梯度接近于0,使得训练提前结束 需要快速收敛,训练复杂网络时;适合处理稀疏梯度

Adadelta

不需要预设一个默认学习率,训练初中期,加速效果不错,很快,可以避免参数更新时两边单位不统一的问题。 训练后期,反复在局部最小值附近抖动 需要快速收敛,训练复杂网络时

RMSprop

解决 Adagrad 激进的学习率缩减问题 依然依赖于全局学习率 需要快速收敛,训练复杂网络时;适合处理非平稳目标 - 对于RNN效果很好

Adam

对内存需求较小,为不同的参数计算不同的自适应学习率 需要快速收敛,训练复杂网络时;善于处理稀疏梯度和处理非平稳目标的优点,也适用于大多非凸优化 - 适用于大数据集和高维空间

你可能感兴趣的:(最优化算法总结)