非线性优化算法-牛顿法_DFP_BFGS_L-BFGS_共轭梯度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 算法也就完成了。