1. Basic Knowledge of Maths
多元函数的 Taylor Expansion
但是一般来说, 我们展开到二次就完全足够:
where \nabla f(\boldsymbol a) is the gradient of f evaluated at \boldsymbol x= \boldsymbol a and \nabla ^2f(\boldsymbol a) is the Hessian matrix. 也就是说, 对于
有:
这里课件上的符号写的很随便. 我们假设这里的 \nabla^2\not =\nabla\cdot \nabla=\Delta (\text{Laplace} 算子), 而仅仅表示 \text{Hessian} 矩阵
2. Gradient Descent
2.1. Principle
梯度下降法是典型的一阶优化算法. 梯度下降法的终极目标是: 如何在较少的次数下找出局部范围内偏导充分小的区域.
对于 \boldsymbol x=\left\{x_1, x_2, \ldots,x_n\right\}\in \mathbb R, 对于给定的初始点 \boldsymbol x_0 以及定义在 \mathbb R 上的函数 f, 我们定义梯度下降算法的过程如下:
其中, \eta 叫做学习率 (\eta>0)

总的来说, 梯度下降法的过程包括四个部分:
- 目标函数定义
- 初始点选择
- 更新公式
- 结束机制
2.2. optimizations
我们发现上述的梯度下降法有失灵活性. 具体来说, 不管在函数的何种位置, 我们总是给予它相同程度的学习率. 历史上采取了多次优化

它们大致上可以分成如下的两类:
Learning Rate Schedulers (基于学习率的改进机制)
- 将学习率乘以一个常数或者时间因子, 使学习率能适应梯度. 当梯度值很大时, 希望更新小
Gradient Descent Optimizer (基于二阶梯度的改进机制)
- 将学习率乘以一个梯度的因子来进行调整
- 利用到之前的梯度来更好的指导梯度下降, 更近的梯度值获取更高的权重, 因而实现了exponential moving average
2.3. Representative Gradient Descent
Momentum
Nesterov Accelerated Gradient

2.4. Limitations
梯度下降法被发现普遍存在下面的问题:
- 靠近极小值时收敛速度减慢
- 直线搜索时可能会产生一些问题
- 可能会“之字形”地下降
3. Newton’s Method
梯度下降法: 是一次平面去拟合当前点的局部曲面
牛顿法: 用二次曲面去拟合当前点的局部曲面
通常情况下: 二次曲面的拟合优于平面, 所以牛顿法选择的下降路径会更符合真实的最优下降路径.
3.1. Principle
Newton’s Method 同样是解决优化问题的方法. 一般来讲, 对于 d\in\mathbb N, x\in\mathbb R^d, 如果 f 二次可微, 那我们忽略三阶及以上的高阶小量, 也就是注意到:
Newton’s Method 只不过令这里的 \approx 变为 =, 并同时对 \boldsymbol x 求偏导. 有:
最合适的 \boldsymbol x_0 要能够使得 \displaystyle \frac{\partial }{\partial \boldsymbol x_0}f(\boldsymbol x+\boldsymbol x_0)=0, 也就是说
需要计算海森矩阵的逆,计算复杂度为O(n^3)
我们注意到这里的 \boldsymbol x_0 是向量, 因此 \boldsymbol x_0 实际上刻画了下一步迭代前进的大小和方向.
3.2. Steps
- 给定初始值 \boldsymbol x_0 和精度阈值 \varepsilon, 并令 k=0
- 计算 \|\nabla f\|, 如果 \|\nabla f\|\le\varepsilon, 终止迭代; 否则 \Delta\boldsymbol x_k=-(\nabla ^2f(\boldsymbol x_k))^{-1}{\nabla f(\boldsymbol x_k)}
- 得到新的迭代点 \boldsymbol x_{k+1}\leftarrow\boldsymbol x_k+\Delta \boldsymbol x_k
- 令k\leftarrow k+1, 转到第二步
3.3. Improvements
我们发现 Newton’s Method 在精度和效率两方面都可以提升. 对应地, 下面两种方法分别提升了精度和效率
1. Damped Newton Method
对当前步长再做极小化优化.
考虑 \lambda_{k}=\displaystyle \mathop{\operatorname {argmin}}\limits_{\lambda} f\left(\boldsymbol x_{k}+\lambda_{k} \Delta\boldsymbol x_0\right)
- 给定初始值 \boldsymbol x_0 和精度阈值 \varepsilon, 并令 k=0
- 计算 \|\nabla f\|, 如果 \|\nabla f\|\le\varepsilon, 终止迭代; 否则 \Delta\boldsymbol x_k=-(\nabla ^2f(\boldsymbol x_k))^{-1}{\nabla f(\boldsymbol x_k)}
- 计算 \lambda_k, 得到新的迭代点 \boldsymbol x_{k+1}\leftarrow\boldsymbol x_k+\lambda_k\Delta \boldsymbol x_k
- 令k\leftarrow k+1, 转到第二步
2. Quasi Newton Method
Newton’ s Method 每一步都需要求解目标函数的 H 矩阵的逆矩阵, 计算比较复杂. 并且要求目标函数必须二阶可导, H 阵须正定. 这些要求都是非常严苛的. 为此我们设计了 Quasi Newton Method
在拟牛顿法中, 我们用一个容易计算的矩阵 \boldsymbol U 来模拟这个难以计算的 \text{Hesse} 矩阵.
不同的拟牛顿法(DFP, BFGS, Broyden) 采用不同的计算方式
4. Conjugate Gradient
4.1. Principle
共轭梯度法是介于最速下降法与牛顿法之间的一个 方法, 它仅需利用一阶导数信息, 克服了最速下降法收敛慢的缺点, 又避免了牛顿法需要存储和计算 Hesse 矩阵并求逆的缺点.
在代数上, 两个向量 \boldsymbol \alpha_i, \boldsymbol \alpha_j\in \mathbb R^d 共轭, 当且仅当存在半正定的 A\in\mathbb R^{d\times d}, 使得 \boldsymbol \alpha_i^{\mathsf T} A\boldsymbol \alpha_j=0. (这里的 \boldsymbol \alpha_i, \boldsymbol \alpha_j 并不直接正交, 我们称它为 A\text -正交)
同样地,
假设 \boldsymbol x_k 是局部线性的, 则 A\boldsymbol x=\boldsymbol b:
新的共轭方向的确定:
\text{Fletcher-Reeves} 公式:
\text{Polak-Ribiere} 公式:

4.2. Steps
-
计算一个初始的搜索方向 \boldsymbol p_0 (利用梯度下降法)
-
找一个使得目标函数 f(\boldsymbol x_i +\alpha_i \boldsymbol p_i)最小的 \alpha_i
-
计算 \boldsymbol x_{i+1}= \boldsymbol x_{i}+\alpha_i\boldsymbol p_i
-
确定下一个搜索方向 \boldsymbol p_{i+1}=-\nabla f(\boldsymbol x_{i+1})+\beta_{i+1}\boldsymbol p_i
- \beta_{i+1} 由前一个迭代点梯度 \nabla f(\boldsymbol x_i), 当前迭代点梯度 \nabla f(x_{i+1}) 共同决定
- 迭代完所有共轭方向
-
如不满足终止条件, 则回到第一步, 继续确定新的第一个梯度方向
5. Least Squares Method
假设 \boldsymbol r\left(\boldsymbol x)=(r_1(\boldsymbol x),r_2(\boldsymbol x),\ldots,r_m(\boldsymbol x)\right)^{\mathsf T}, \boldsymbol J(\boldsymbol x)=\left[\displaystyle \frac{\partial r_j}{\partial x_i}\right], j=1,2,\ldots,m;i=1,2,\ldots,n.
最小二乘法的目标函数为
不难发现
to be continued…