最优化学习笔记(十三)——基本共轭方向算法(扩张子空间定理)
2016-11-19 11:37
369 查看
由上节我们得出的一个引理:
引理 在共轭方向算法中, 对于所有的k,0≤k≤n−1,0≤i≤k都有 :
g(k+1)Td(i)=0
由上可知:g(k+1)正交于由向量d(0),d(1),…,d(k)张成的子空间中的任意向量。该引理可用于证明共轭方向法的一个很有意思的最优性性质。可以证明f(x(k+1))不仅能够满足f(x(k+1))=minαf(x(k)+αd(k)),而且还能满足
f(x(k+1))=minα0,α1,…,αkf(x(0)+∑i=0kαid(i))
换言之,如果记:
νk=x(0)+span[d(0),d(1),…,d(k)]
则有f(x(k+1))=minx∈νkf(x).随着k的增大,子空间span[d(0),d(1),…,d(k)]不断扩张,直至充满整个Rn(前提是它们是线性无关的)。因此,当k足够大时,x∗将位于νk中。基于此,以上结论有时也称为扩张子空间定理。
定义矩阵D(k)为:
D(k)=[d(0),d(1),…,d(k)]
其中,d(i)为矩阵D(k)的第i列。注意, x(0)+R(D(k))=νk,同时,
x(k+1)=x(0)+∑i=0kαid(i)=x(0)+D(k)α
其中,α=[α0,α1,…,αk]T. 因此,
x(k+1)∈x(0)+R(D(k))=νk
对于任意向量x∈νk, 存在一个向量a,使得x=x(0)+D(k)a.令ϕk(a)=f(x(0)+D(k)a)可知ϕk(a)是一个二次型函数,具有唯一的极小点。由链式法则可得:
Dϕk(a)=∇f(x(0)+D(k)a)D(k)
带入α可得:
Dϕk(α)=∇f(x(0)+D(k)α)TD(k)=∇f(x(k+1))TD(k)=g(k+1)TD(k)
由定理可知, g(k+1)TD(k)=0T. 因此,α能够满足函数ϕk的局部极小点的一阶必要条件,是ϕk的极小点,即:
f(x(k+1))=minaf(x(0)+D(k)a)=minx∈νkf(x)
扩张子空间定理证明完成。
共轭方向法的计算效率很高,但是,前提是必须能够给定一组Q共轭方向。幸运的是,存在一种方法,能够随着迭代进行, 逐一产生Q共轭方向,无需提前指定。
引理 在共轭方向算法中, 对于所有的k,0≤k≤n−1,0≤i≤k都有 :
g(k+1)Td(i)=0
由上可知:g(k+1)正交于由向量d(0),d(1),…,d(k)张成的子空间中的任意向量。该引理可用于证明共轭方向法的一个很有意思的最优性性质。可以证明f(x(k+1))不仅能够满足f(x(k+1))=minαf(x(k)+αd(k)),而且还能满足
f(x(k+1))=minα0,α1,…,αkf(x(0)+∑i=0kαid(i))
换言之,如果记:
νk=x(0)+span[d(0),d(1),…,d(k)]
则有f(x(k+1))=minx∈νkf(x).随着k的增大,子空间span[d(0),d(1),…,d(k)]不断扩张,直至充满整个Rn(前提是它们是线性无关的)。因此,当k足够大时,x∗将位于νk中。基于此,以上结论有时也称为扩张子空间定理。
定义矩阵D(k)为:
D(k)=[d(0),d(1),…,d(k)]
其中,d(i)为矩阵D(k)的第i列。注意, x(0)+R(D(k))=νk,同时,
x(k+1)=x(0)+∑i=0kαid(i)=x(0)+D(k)α
其中,α=[α0,α1,…,αk]T. 因此,
x(k+1)∈x(0)+R(D(k))=νk
对于任意向量x∈νk, 存在一个向量a,使得x=x(0)+D(k)a.令ϕk(a)=f(x(0)+D(k)a)可知ϕk(a)是一个二次型函数,具有唯一的极小点。由链式法则可得:
Dϕk(a)=∇f(x(0)+D(k)a)D(k)
带入α可得:
Dϕk(α)=∇f(x(0)+D(k)α)TD(k)=∇f(x(k+1))TD(k)=g(k+1)TD(k)
由定理可知, g(k+1)TD(k)=0T. 因此,α能够满足函数ϕk的局部极小点的一阶必要条件,是ϕk的极小点,即:
f(x(k+1))=minaf(x(0)+D(k)a)=minx∈νkf(x)
扩张子空间定理证明完成。
共轭方向法的计算效率很高,但是,前提是必须能够给定一组Q共轭方向。幸运的是,存在一种方法,能够随着迭代进行, 逐一产生Q共轭方向,无需提前指定。
相关文章推荐
- 最优化学习笔记(九)——基本的共轭方向算法
- 最优化学习笔记(十二)——基本共轭方向算法(续)
- java之jvm学习笔记十三(jvm基本结构)
- java之jvm学习笔记十三(jvm基本结构)
- java之jvm学习笔记十三(jvm基本结构)
- java之jvm学习笔记十三(jvm基本结构)
- java之jvm学习笔记十三(jvm基本结构)
- java之jvm学习笔记十三(jvm基本结构) 通俗易懂的JVM 文件,没有之一
- OSPF学习笔记1-基本概念
- 黑马程序员——Swift学习笔记:声明与基本类型
- 【Python】学习笔记十三:函数的参数对应
- Python 学习笔记 - 线程(基本概念和创建)
- 算法导论学习笔记-第十四章-数据结构的扩张
- linux 学习笔记2--基本命令
- Lua中关于函数库基本操作学习笔记
- Coursera Machine Learning 学习笔记(十三)
- JSP学习笔记—JSP的基本语法
- [中国剩余定理]【学习笔记】
- 【安全牛学习笔记】Kali Linux基本工具
- STM32学习笔记:通用定时器基本设定