1 梯度下降法
1.1 目的
求解无约束最优化问题的极小值
1.2 方法
通过不断的迭代,进行目标函数的极小化,直到收敛
1.3 泰勒一阶展开
1.4 思想
极小化 $f(x)$ ,则 $x-x_0 = -f’(x_0) * \lambda$ ,其中 $\lambda > 0 $
1.5 结论
$ x = x_0 - \lambda * f’(x_0)$ ,其中学习率 $\lambda > 0 $
1.6 应用
- 数学问题中,求解极小值
- 机器学习中,求解目标函数最优解
2 牛顿法
2.1 简介
牛顿法,又称牛顿迭代法,主要是迭代的方法用于求解方程的根。后应用于无约束问题的最优化。
2.2 解方程
利用泰勒公式一阶展开,$f(x) = f(x_0) + (x-x_0) f’(x_0)$
求解方程 $f(x) = 0$, 则 $f(x_0) + (x-x_0) f’(x_0) = 0$
推出,$x = x_0 - \frac{f(x_0)}{f’(x_0)}$
算法流程:
不断迭代 $x_{k+1} = x_k - \frac{f(x_k)}{f’(x_k)}$,
直至 $f(x_{k+1}) = 0$
举例如下:
求解$\sqrt2$ , 保留 5位小数
思路:设计 $y = f(x)$, 将$x = \sqrt2$ 代入,$y = 0$, 故 $f(x) = x^2 -2$
1 | class Solution: |
2.3 求解无约束最优化问题
利用泰勒公式二阶展开
函数$f(x)$ 在 $x_0$有极值的必要条件是 $f’(x_0) = 0$
2.4 最优化问题应用至高维
引入Hessian矩阵
其中,$g_k$ 是一阶导(梯度),$H_k$ 是Hessian矩阵
3 拟牛顿法
避免每次都要计算Hessian矩阵,采用正定矩阵近似方法实现
4 结论
4.1 速记
- 梯度下降时,迭代 $ x = x_0 - \lambda * f’(x_0)$ 直至收敛,其中学习率 $\lambda > 0 $
- 牛顿法解方程时,迭代 $ x = x_0 - \frac{f(x_0)}{f’(x_0)} $,直至收敛
- 牛顿法最优化时,迭代 $ x = x_0 - \frac{ f’(x_0)}{ f’’(x_0)}$ 直至收敛
4.2 对比
- 梯度下降法靠近极小值,收敛速度慢;通过步长控制,极值点震荡
- 牛顿法是二阶收敛,梯度下降法是一阶收敛,牛顿法收敛速度快
- 牛顿法容易陷入局部最优
- 牛顿法要同时求出梯度和Hessian矩阵,计算量大且不好计算;当输入向量维度$N$较大时,Hessian矩阵的大小时 $N*N$,需要内存和显存非常大