非线性优化算法-牛顿法_DFP_BFGS_L-BFGS_共轭梯度算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

统计学梯度下降法(SGDs)易于实现,然而它有两个主要的缺陷。第一个缺陷是它需要手动调谐大量的参数,比如学习速率和收敛准则。第二个缺陷是它本质上是序列方法,不利于并行计算或分布式计算。(然而,在计算资源如RAM受限的情况下,序列方法倒是一个不错的选择。)

这里介绍一些非线性优化算法:牛顿算法,伪牛顿算法和共轭梯度法。其中,伪牛顿算法包括DFP、BFGS和L-BFGS算法。

考虑如下的无约束最小化问题:

min x f(x)(1)

其中x=(x1,…,x N)T∈ℝN. 为简便起见,这里假设f是凸函数,且二阶连续可导。记(1)的解为x∗.

牛顿算法(Newton‘s Method)

基本思想:在现有的极小点估计值的附近对f(x)做二阶泰勒展开,进而找到下

其中g(k)=∇f(x)|

x(k)是梯度矩阵,H(k)=∇2f(x)|

x(k)

是海森矩阵。

牛顿算法是一种具有二次收敛性的算法。对于非二次函数,若函数的二次性态较强,或迭代点已进入极小点的领域,则其收敛速度也是很快的,这是牛顿算法的主要优点。但牛顿算法由于迭代公式中没有步长因子,而是定步长迭代,所以对于非二次函数,有时会出现f(x(k+1))>f(x(k))的情况,这表明牛顿算法不能保证函数值稳定地下降。由此,人们提出了阻尼牛顿算法,在原始牛顿算法的第4步中,采用一维搜索(line search)算法给d(k)加一个步长因子λ(k),其中:

λ(k)=arg minλ∈ℝf(x(k)+λd(k))(2)一维搜索算法将另作介绍。

拟牛顿算法(Quasi-Newton Methods)

基本思想:不直接计算二阶偏导数,而是构造出近似海森矩阵(或海森矩阵的逆)的正定对称阵,在拟牛顿条件下优化目标函数。

下文中,用B表示对H的近似,用D表示对H−1的近似,并令s(k)=x(k+1)−x(k),y(k)=g(k+1)−g(k).

⒈拟牛顿条件(割线条件)

对f(x)做二阶泰勒展开可得:

y(k)≈H(k+1)×s(k)(3)或

s(k)≈(H(k+1))−1×y(k)(4)⒉DFP算法

核心:通过迭代的方法,对(H(k+1))−1做近似。迭代的格式为:

D(k+1)=D(k)+∇D(k)(5)其中,D(0)通常取为单位矩阵I.

校正矩阵∇D(k)的构造为:

∇D(k)=s(k)(s(k))T

(k)T(k)−D(k)y(k)(y(k))

T

D(k)

(k)T(k)(k)

(6)

⒊BFGS算法

核心:通过迭代的方法,对H(k+1)做近似。迭代的格式为:

B(k+1)=B(k)+∇B(k)(5)其中,B(0)通常取为单位矩阵I.

校正矩阵∇B(k)的构造为:

∇B(k)=y (k)(y(k))T

(k)T(k)

−B

(k)s(k)(s(k))T B(k)

(k)T(k)(k)

(6)

6步中直接给出(B(k+1))−1和(B(k))−1的关系:

(B(k+1))−1=(I−s(k)(y(k))T

(y(k))s(k))(B(k))−1(I−y(k)(s(k))

T

(y(k))s(k)

)+s(k)(s(k))

T

(y(k))s(k)

(7)

()−1

⒋L-BFGS算法

在BFGS 算法中,需要用一个N ×N 的矩阵R (k )。当N 很大时,存储这个矩阵很浪费资源。L-BFGS 算法对BFGS 算法做出了改进,其基本思想是:不存储完整的矩阵R (k ),而是存储计算过程中的向量序列{s (i )}, {y (i )},需要矩阵R (k )时,利用向量序列{s (i )}, {y (i )}的计算来代替。而且,向量序列{s (i )}, {y (i )}也只存储m 个最新值。由(7)得:

R (k+1)

=(I −s (k )(y (k ))T (y (k ))T s (k ))R (k )

(I −y (k )(s (k ))T (y (k ))T s (k ))+s (k )(s (k ))T

(y (k ))T s (k )

令ρ(k )=

1(y (k ))T

s

(k ),V (k )=I −ρ(k )s (k )(y (k ))T

,则上式可以写成: R

(k+1)

=(V

(k ))T

R

(k )

V

(k )

(k )s (k )

(s

(k ))T

(8)

当k +1≤m 时:

R (k+1)=[∏(V (j ))T

0j=k ]R (0)[∏V (j )

k j=0]+

∑{[∏(V (j ))T

i+1j=k ](ρ(i )s (i )(s (i ))T

)[∏V (j )k j=i+1]}k−1i=0+ρ

(k )s (k )(s (k ))T

(9) 当k +1>m :

R (k+1)=[∏(V (j ))T

k−(

m−1)

j=k ]R (0)[∏V (j )k−(

m−1)

j=0

]+∑{[∏(V (j ))T

i+1j=k ](ρ(i )s (i )(s (i ))T

)[∏V (j )k j=i+1]}k−1i=k−(m−1)+ρ

(k )s (k )(s (k ))T

(10) 事实上,R (k )仅用来计算R (k )g (k )获取搜索方向,因此,若能利用(9)(10)给出一种快速计算R (k )g (k )的方法,L-BFGS 算法也就完成了。

相关文档
最新文档