四、牛顿法
- 梯度下降法有个缺陷:它未能利用海森矩阵的信息。 当海森矩阵的条件数较大时,不同方向的梯度的变化差异很大。 在某些方向上,梯度变化很快;在有些方向上,梯度变化很慢。 梯度下降法未能利用海森矩阵,也就不知道应该优先搜索导数长期为负或者长期为正的方向。 本质上应该沿着负梯度方向搜索。但是沿着该方向的一段区间内,如果导数一直为正或者一直为负,则可以直接跨过该区间。前提是:必须保证该区间内,该方向导数不会发生正负改变。 当海森矩阵的条件数较大时,也难以选择合适的步长。 步长必须足够小,从而能够适应较强曲率的地方(对应着较大的二阶导数,即该区域比较陡峭)。 但是如果步长太小,对于曲率较小的地方(对应着较小的二阶导数,即该区域比较平缓)则推进太慢。
- 下图是利用梯度下降法寻找函数最小值的路径。该函数是二次函数,海森矩阵条件数为 5,表明最大曲率是最小曲率的5倍。红线为梯度下降的搜索路径。
牛顿法结合了海森矩阵。 考虑泰勒展开式:![四、牛顿法 - 图2] 处的海森矩阵。 如果 ![四、牛顿法 - 图7] 。
当
当
一维情况下,梯度下降法和牛顿法的原理展示:
梯度下降法:下一次迭代的点
对于一维的情况,可以固定 ![四、牛顿法 - 图14] 越小。
牛顿法:目标是
在一维情况下就是求解 ![四、牛顿法 - 图18] 。 推广到多维情况下就是:![四、牛顿法 - 图24] 。
当位于一个极小值点附近时,牛顿法比梯度下降法能更快地到达极小值点。 如果在一个鞍点附近,牛顿法效果很差,因为牛顿法会主动跳入鞍点。而梯度下降法此时效果较好(除非负梯度的方向刚好指向了鞍点)。
仅仅利用了梯度的优化算法(如梯度下降法)称作一阶优化算法,同时利用了海森矩阵的优化算法(如牛顿法)称作二阶优化算法。
牛顿法算法: 输入:
目标函数
梯度
海森矩阵
精度要求
输出:
算法步骤:
选取初始值
迭代,停止条件为:梯度收敛。迭代步骤为:
计算
若
若
计算
置
置
梯度下降法中,每一次 ![四、牛顿法 - 图42] 决定,若跨度过大容易引发震荡。 而牛顿法中,每一次 ![四、牛顿法 - 图45] 中(也可以乘以学习率作为幅度的系数)。
深度学习中的目标函数非常复杂,无法保证可以通过上述优化算法进行优化。因此有时会限定目标函数具有
Lipschitz
连续,或者其导数Lipschitz
连续。Lipschitz
连续的定义:对于函数
Lipschitz
连续的意义是:输入的一个很小的变化,会引起输出的一个很小的变化。
与之相反的是:输入的一个很小的变化,会引起输出的一个很大的变化
- 凸优化在某些特殊的领域取得了巨大的成功。但是在深度学习中,大多数优化问题都难以用凸优化来描述。 凸优化的重要性在深度学习中大大降低。凸优化仅仅作为一些深度学习算法的子程序。
文章列表
- AI算法工程师手册-一、基本知识
- AI算法工程师手册-一、数值稳定性
- AI算法工程师手册-一、概率与分布
- AI算法工程师手册-一、蒙特卡洛方法
- AI算法工程师手册-七、信息论
- AI算法工程师手册-三、MCMC 采样
- AI算法工程师手册-三、二阶导数与海森矩阵
- AI算法工程师手册-三、大数定律及中心极限定理
- AI算法工程师手册-三、矩阵运算
- AI算法工程师手册-二、向量操作
- AI算法工程师手册-二、期望和方差
- AI算法工程师手册-二、梯度下降法
- AI算法工程师手册-二、马尔可夫链
- AI算法工程师手册-五、常见概率分布
- AI算法工程师手册-五、拟牛顿法
- AI算法工程师手册-八、其它
- AI算法工程师手册-六、 约束优化
- AI算法工程师手册-六、先验分布与后验分布
- AI算法工程师手册-四、牛顿法
- AI算法工程师手册-四、特殊函数