数值最优化
2016-03-15 17:48
351 查看
0. 数学基础
多元函数1. 设多元函数 f:Rn→R 二次连续可微,则 f 在 x 处的梯度和Hessian矩阵为:∇f(x)=(∂f(x)∂x1,∂f(x)∂x2,⋯,∂f(x)∂xn)T∇2f(x)=⎛⎝⎜⎜⎜⎜⎜⎜⎜∂f(x)∂x21⋮∂f(x)∂xn∂x1⋯⋯∂f(x)∂x1∂xn⋮∂f(x)∂x2n⎞⎠⎟⎟⎟⎟⎟⎟⎟
2. 多元函数的Taylor展开式:一阶:f(x)=f(y)+∇f(y)T(x−y)+o(||x−y||)二阶:f(x)=f(y)+∇f(y)T(x−y)+12(x−y)T∇2f(y)(x−y)+o(||x−y||2)
一元函数与多元函数
对给定的x,y∈Rn,定义一元函数ϕ:R→R 如下: ϕ(t)=f[y+t(x−y)] ,经计算可得:
ϕ′(t)=∇f[y+t(x−y)]T(x−y)ϕ′′(t)=(x−y)T∇2f[y+t(x−y)](x−y)
1. 最优化的一般性
数值最优化的一般方法是,初始选取一个点x1,通过导数等信息得到当前的一个下降方向dk(k=1,2,⋯),在这个方向的基础上,计算步长αk,得到新的点xk+1=xk+αkdk,这样的迭代始终能保证f(xk+1)<f(xk),从而得到极小值点(非最小值)。因此,数值最优化无非就是围绕方向d和步长α的选取。再进一步地,对于步长α的搜索,基本方法主要有精确线性搜索和非精确线性搜索。其中精确线性搜索有公式法和黄金分割法,非精确线性搜索主要有Armijo型线性搜索和Wolfe-Powell型线性搜索,都是比较简单的一元函数知识,因为步长α是一元的。
由此,数值最优化的各种算法的主要不同之处就在于下降方向d的选取了,d的构造方式确定了各种不同的算法。关于构造的d如何保证是下降方向呢,只要保证向量d满足∇f(x)Td<0,证明如下:
证明:利用Taylor展开式,不难得到:当α>0充分小时f(x+αd)=f(x)+α∇f(x)d+o(α)<f(x) 即d是f在x处的一个下降方向。
夹带私货:
∇f(x)Td<0的几何理解:∇f(x)表示在x的各个分量xi上每增加一个单位,相应的函数值分量yi增加∂f∂xi个单位,∇f(x)Td<0是∇f(x)和d对应元素相乘之和,也就是说,在各分量xi上增加了di个单位(在各个方向上前进了这么多步),那么,∇f(x)Td<0的意义就是在各个方向上增加的函数值之和,也就是近似的函数值增加量了。只要一个单位量足够逼近0,近似值也就逼近真实值,直至收敛。
2. 步长(待更)
2.1 精确线性搜索
2.1.1 公式法
2.1.2 黄金分割法
2.2 非精确线性搜索
2.2.1 Armijo型线性搜索
2.2.2 Wolfe-Powell型线性搜索
3. 方向(待更)
3.1 最速下降法
3.2 Newton法
牛顿法的基本思想是,在离点xk足够近的距离,f(x)可以近似看作一个二次函数。即,在xk附近使用f(x)的二次近似来寻找比xk处函数值更小的点。由泰勒公式,将f(x)在固定点比xk处展开,则有:f(xn+Δx)≈f(xn)+ΔxT∇f(xn)+12ΔxT(∇2f(xn))Δx当||Δx||→0时,上面的近似展开式是成立的。
对Δx求导取0,得:Δx∗=−H−1ngn
3.3 拟Newton法–BFGS
基本思想先看一下拟牛顿法的基本框架
QuasiNewton(f,x0,H−10,QuasiUpdate):For n=0,1,… (until converged):// Compute search direction and step-size d=H−1ngnα←minα≥0f(xn−αd)xn+1←xn−αd// Store the input and gradient deltas gn+1←∇f(xn+1)sn+1←xn+1−xnyn+1←gn+1−gn// Update inverse hessian H−1n+1←QuasiUpdate(H−1n,sn+1,yn+1)
初始时,给了一个参数H−10,之后每一次迭代通过QuasiUpdateQuasiUpdate方法加上输入变量与梯度的差值(sn和yn)作为参数,产生出下一个H−1的估计。
可以发现,若QuasiUpdateQuasiUpdate每次都返回单位矩阵,则拟牛顿法退化为梯度下降方法(每一次都沿着梯度方向搜索)。
若QuasiUpdateQuasiUpdate能够返回∇2f(xn+1),则拟牛顿法与牛顿法就等价了。
从上述伪代码中可以看出,拟牛顿法仅仅需要函数值和梯度信息,并不需要二阶导信息。
参考
L-BFGS的原理及在回归分析中的应用梯度-牛顿-拟牛顿优化算法和实现
理解L-BFGS算法
牛顿法与拟牛顿法学习笔记(四)BFGS 算法
逻辑回归模型及LBFGS的Sherman Morrison(SM) 公式推导
相关文章推荐
- 用批处理解决数学问题的代码第1/4页
- php常用数学函数汇总
- 用Python从零实现贝叶斯分类器的机器学习的教程
- 无限循环小数
- My Machine Learning
- 机器学习---学习首页 3ff0
- 数学书籍备忘
- 反向传播(Backpropagation)算法的数学原理
- 也谈 机器学习到底有没有用 ?
- 如何用70行代码实现深度神经网络算法
- 建立以人为本的数学课程观
- 文兴小学2008-2009学年度第一学期数学科教学计划
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- MySql函数大全<二>
- 一生受用的数学公式
- oracle中行列转换
- 数学猜想
- 世界第一数学强校的背后