Processing math: 100%


Optimization and Search

1. Basic Knowledge of Maths

多元函数的 Taylor Expansion

T(x)=|α|0(xa)αα!(αf)(a),

但是一般来说, 我们展开到二次就完全足够:

T(x)=f(a)+(xa)Tf(a)+12!(xa)T(2f(a))(xa)+,

where f(a) is the gradient of f evaluated at x=a and 2f(a) is the Hessian matrix. 也就是说, 对于

x={x1,x2,,xn}

有:

f(x)=f(x)x=(f1(x)x1,f1(x)x2,,f1(x)xn)2f(x)=xif(x)xj=(2f(x)x212f(x)x1x22f(x)x1xn2f(x)xnx12f(x)xnx2fn(x)x2n)

这里课件上的符号写的很随便. 我们假设这里的 2=Δ (Laplace 算子), 而仅仅表示 Hessian 矩阵

2. Gradient Descent

2.1. Principle

梯度下降法是典型的一阶优化算法. 梯度下降法的终极目标是: 如何在较少的次数下找出局部范围内偏导充分小的区域.

对于 x={x1,x2,,xn}R, 对于给定的初始点 x0 以及定义在 R 上的函数 f, 我们定义梯度下降算法的过程如下:

x(i+1)1=x(i)1ηfx1(x(i)),x(i+1)n=x(i)nηfxn(x(i))}x(i+1)=x(i)ηf(x)

其中, η 叫做学习率 (η>0)

总的来说, 梯度下降法的过程包括四个部分:

  • 目标函数定义
  • 初始点选择
  • 更新公式
  • 结束机制

2.2. optimizations

我们发现上述的梯度下降法有失灵活性. 具体来说, 不管在函数的何种位置, 我们总是给予它相同程度的学习率. 历史上采取了多次优化

它们大致上可以分成如下的两类:

Learning Rate Schedulers (基于学习率的改进机制)

  • 将学习率乘以一个常数或者时间因子, 使学习率能适应梯度. 当梯度值很大时, 希望更新小

Gradient Descent Optimizer (基于二阶梯度的改进机制)

  • 将学习率乘以一个梯度的因子来进行调整
  • 利用到之前的梯度来更好的指导梯度下降, 更近的梯度值获取更高的权重, 因而实现了exponential moving average

2.3. Representative Gradient Descent

Momentum

{Wt+1=WtαVtVt=βVt1+(1β)LWt

Nesterov Accelerated Gradient

2.4. Limitations

梯度下降法被发现普遍存在下面的问题:

  • 靠近极小值时收敛速度减慢
  • 直线搜索时可能会产生一些问题
  • 可能会“之字形”地下降

3. Newton’s Method

梯度下降法: 是一次平面去拟合当前点的局部曲面

牛顿法: 用二次曲面去拟合当前点的局部曲面

通常情况下: 二次曲面的拟合优于平面, 所以牛顿法选择的下降路径会更符合真实的最优下降路径.

3.1. Principle

Newton’s Method 同样是解决优化问题的方法. 一般来讲, 对于 dN, xRd, 如果 f 二次可微, 那我们忽略三阶及以上的高阶小量, 也就是注意到:

f(x+x0)f(x0)+xTf(x0)+12!xT2f(x0)x

Newton’s Method 只不过令这里的 变为 =, 并同时对 x 求偏导. 有:

x0f(x+x0)=f(x0)+2f(x0)x0

最合适的 x0 要能够使得 x0f(x+x0)=0, 也就是说

x0=(2f(x0))1f(x0)=H1G

需要计算海森矩阵的逆,计算复杂度为O(n3)

我们注意到这里的 x0 是向量, 因此 x0 实际上刻画了下一步迭代前进的大小和方向.

3.2. Steps

  1. 给定初始值 x0 和精度阈值 ε, 并令 k=0
  2. 计算 f, 如果 fε, 终止迭代; 否则 Δxk=(2f(xk))1f(xk)
  3. 得到新的迭代点 xk+1xk+Δxk
  4. kk+1, 转到第二步

3.3. Improvements

我们发现 Newton’s Method 在精度和效率两方面都可以提升. 对应地, 下面两种方法分别提升了精度和效率

1. Damped Newton Method

对当前步长再做极小化优化.

考虑 λk=argminλf(xk+λkΔx0)

  1. 给定初始值 x0 和精度阈值 ε, 并令 k=0
  2. 计算 f, 如果 fε, 终止迭代; 否则 Δxk=(2f(xk))1f(xk)
  3. 计算 λk, 得到新的迭代点 xk+1xk+λkΔxk
  4. kk+1, 转到第二步

2. Quasi Newton Method

Newton’ s Method 每一步都需要求解目标函数的 H 矩阵的逆矩阵, 计算比较复杂. 并且要求目标函数必须二阶可导, H 阵须正定. 这些要求都是非常严苛的. 为此我们设计了 Quasi Newton Method

在拟牛顿法中, 我们用一个容易计算的矩阵 U 来模拟这个难以计算的 Hesse 矩阵.

f(x+x0)f(x0)+xTf(x0)+12xTUx

不同的拟牛顿法(DFP, BFGS, Broyden) 采用不同的计算方式

4. Conjugate Gradient

4.1. Principle

共轭梯度法是介于最速下降法与牛顿法之间的一个 方法, 它仅需利用一阶导数信息, 克服了最速下降法收敛慢的缺点, 又避免了牛顿法需要存储和计算 Hesse 矩阵并求逆的缺点.

在代数上, 两个向量 αi,αjRd 共轭, 当且仅当存在半正定的 ARd×d, 使得 αTiAαj=0. (这里的 αi,αj 并不直接正交, 我们称它为 A-正交)

同样地,

f(x+x0)f(x0)+xTf(x0)

假设 xk 是局部线性的, 则 Ax=b:

αi=pTibpTiApi=pTi(f(xi1))pTiApi

新的共轭方向的确定:

pk=f(xk1)+k1i=0βkipi

Fletcher-Reeves 公式:

βi+1=f(xi+1)Tf(xi+1)f(xi)Tf(xi)

Polak-Ribiere 公式:

βi+1=f(xi+1)T(f(xi+1)f(xi))f(xi)Tf(xi)
common optimization methods

4.2. Steps

  1. 计算一个初始的搜索方向 p0 (利用梯度下降法)

  2. 找一个使得目标函数 f(xi+αipi)最小的 αi

  3. 计算 xi+1=xi+αipi

  4. 确定下一个搜索方向 pi+1=f(xi+1)+βi+1pi

    1. βi+1 由前一个迭代点梯度 f(xi), 当前迭代点梯度 f(xi+1) 共同决定
    2. 迭代完所有共轭方向
  5. 如不满足终止条件, 则回到第一步, 继续确定新的第一个梯度方向

5. Least Squares Method

假设 r(x)=(r1(x),r2(x),,rm(x))T, J(x)=[rjxi], j=1,2,,m;i=1,2,,n.

最小二乘法的目标函数为

f(x)=12mi=1ri(x)2=12r(x)2

不难发现

f(x)=JT(x)r(x)2f(x)=JT(x)J(x)+mj=1rj(x)2rj(x)

to be continued…