当前位置: 首页 > article >正文

负梯度方法与Newton型方法-数值最优化方法-课程学习笔记-4

今天我们继续来学习数值最优化方法的第三章内容的后续知识

Newton方法

Newton方法是Newton方法的基础, 本节主要讨论的是基本Newton方法, 阻尼Newton方法以及修正Newton方法的构造和特性, 这类方法适合解决中小型最优化问题

基本Newton方法
对于 f ( x ) f(x) f(x)如果有连续的二阶偏导数, 那么 f ( x ) f(x) f(x)在当前迭代点 x k x_k xk处有泰勒展开公式如下:
f ( x k + d ) = f k + g k T d + 1 2 d T G k d + o ( ∣ ∣ d ∣ ∣ 2 ) f(x_k+d)=f_k+g_k^Td+\frac{1}{2}d^TG_kd+o(||d||^2) f(xk+d)=fk+gkTd+21dTGkd+o(∣∣d2)
所以在该迭代点合适的领域内我们用二次函数
q k ( d ) ≜ f k + g k T d + 1 2 d T G k d q_k(d)\triangleq f_k+g_k^Td+\frac{1}{2}d^TG_kd qk(d)fk+gkTd+21dTGkd
来近似 f ( x k + d ) f(x_k+d) f(xk+d)
所以对于问题 min ⁡ f ( x k + d ) \min f(x_k+d) minf(xk+d) 的求解就转化成了对问题 min ⁡ q k ( d ) \min q_k(d) minqk(d)的求解了
这里我们如果假设 G k G_k Gk正定, 则令方程组一阶导为零得: G k d = − g k G_kd=-g_k Gkd=gk
则: d = − G − 1 g k d=-G^{-1}g_k d=G1gk为该问题的唯一解, 我们把公式 G k d = − g k G_kd=-g_k Gkd=gk称作Newton方程
由这个方程得到的方向 d = − G − 1 g k d=-G^{-1}g_k d=G1gk为Newton方向
以这个方向为迭代方向的最优化方法称为Newton方法

而基本Newton方法就是取全步长为固定的 α k = 1 \alpha_k=1 αk=1的Newton方法, 所以基本Newton方法的步骤大致如下:

  1. x 0 ∈ R n , ε > 0 , k : = 0 x_0\in R^n,\varepsilon >0,k:=0 x0Rn,ε>0,k:=0
  2. 若满足终止条件, 输出结果, 停止迭代
  3. 计算 d = − G − 1 g k d=-G^{-1}g_k d=G1gk
  4. x k + 1 = x k + d k , k : = k + 1 x_{k+1}=x_k+d_k,k:=k+1 xk+1=xk+dk,k:=k+1, 转第二步

在不引起混淆的情况下, 我们把基本Newton方法简称为Newton方法
在Newton方法中只要 G k G_k Gk是正定的, Newton方向就是下降的方向, 这是因为 g k T d k = − g k T G k − 1 g k < 0 g_k^Td_k=-g_k^TG_k^{-1}g_k<0 gkTdk=gkTGk1gk<0, 这个不等式表明Newton方向和梯度方向(上升最快的方向)成钝角, 也就是和下降最快的方向成锐角, 根据全微分公式 d z = ∂ f ∂ x d x + ∂ f ∂ y d y = g k T d k < 0 dz=\frac{\partial f}{\partial x} dx+\frac{\partial f}{\partial y} dy=g_k^Td_k<0 dz=xfdx+yfdy=gkTdk<0, 可知这个方向在整个迭代中使得函数值下降

那么接下来我们给出基本Newton方法的收敛性定理

f ( x ) ∈ C 2 f(x)\in C^2 f(x)C2, f ( x ) f(x) f(x)的Hesse矩阵 G ( x ) G(x) G(x)满足: 存在 β > 0 \beta >0 β>0, 对任给的 x x x y y y, 有 ∣ ∣ G ( x ) − G ( y ) ∣ ∣ ≤ β ∣ ∣ x − y ∣ ∣ ||G(x)-G(y)||\leq \beta ||x-y|| ∣∣G(x)G(y)∣∣β∣∣xy∣∣(Lipschitz条件), 若 x 0 x_0 x0充分接近 f ( x ) f(x) f(x)的局部极小点 x ∗ x^* x, 且 G ∗ G^* G正定, 则Newton方法对所有的k有定义, 并以二阶收敛速度收敛

接下来我们给出证明:
首先我们提出几个概念, g ( x ) g(x) g(x)是函数的一阶导函数, 因为原函数是向量函数, 所以其导函数同样是向量函数, 而使用泰勒展开可以得到:
g ( x k + d ) = g k + G k d + O ( ∣ ∣ d ∣ ∣ 2 ) g(x_k+d)=g_k+G_kd+O(||d||^2) g(xk+d)=gk+Gkd+O(∣∣d2)
其中, d = x − x k d=x-x_k d=xxk, 设 g i ( x ) g_i(x) gi(x) g ( x ) g(x) g(x)的分量, G i j ( x ) G_{ij}(x) Gij(x) G ( x ) G(x) G(x)的元素, 我们先来使用一阶泰勒展开来推导上述展开式
首先, g i ( x ) g_i(x) gi(x)的展开式如下:
g i ( x k + d ) = g i ( x k ) + ∑ j = 1 n G i j ( x k + θ i d ) d j g_i(x_k+d)=g_i(x_k)+\sum^{n}_{j=1}G_{ij}(x_k+\theta_i d)d_j gi(xk+d)=gi(xk)+j=1nGij(xk+θid)dj
这里 θ i ∈ ( 0 , 1 ) \theta_i\in (0,1) θi(0,1), θ i d \theta_i d θid表示 x k x_k xk点向方向 d d d的一小步, 近似拟合左边函数值

经过变换得到:
g i ( x k + d ) − g i ( x k ) − ∑ j = 1 n G i j ( x k ) d j = ∑ j = 1 n [ G i j ( x k + θ i d ) − G i j ( x k ) ] d j g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j=\sum^{n}_{j=1}[G_{ij}(x_k+\theta_i d)-G_{ij}(x_k)]d_j gi(xk+d)gi(xk)j=1nGij(xk)dj=j=1n[Gij(xk+θid)Gij(xk)]dj
由定理中提到的Lipschitz条件可得:
∣ G i j ( x ) − G i j ( y ) ∣ ≤ β ∣ ∣ x − y ∣ ∣ |G_{ij}(x)-G_{ij}(y)|\leq \beta ||x-y|| Gij(x)Gij(y)β∣∣xy∣∣
且有: ∣ ∣ θ i d ∣ ∣ ≤ ∣ ∣ d ∣ ∣ , ∣ d j ∣ ≤ ∣ ∣ d ∣ ∣ ||\theta_i d||\leq||d||, |d_j|\leq||d|| ∣∣θid∣∣∣∣d∣∣,dj∣∣d∣∣
则:
∣ g i ( x k + d ) − g i ( x k ) − ∑ j = 1 n G i j ( x k ) d j ∣ ≤ β n ∣ ∣ d ∣ ∣ 2 |g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j|\leq\beta n||d||^2 gi(xk+d)gi(xk)j=1nGij(xk)djβn∣∣d2
这里我们根据大O表示法的定义:
在这里插入图片描述也就是说
∣ g i ( x k + d ) − g i ( x k ) − ∑ j = 1 n G i j ( x k ) d j ∣ = O ( ∣ ∣ d ∣ ∣ 2 ) |g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j|=O(||d||^2) gi(xk+d)gi(xk)j=1nGij(xk)dj=O(∣∣d2)
则可得:
g i ( x k + d ) = g i ( x k ) + ∑ j = 1 n G i j ( x k ) d j + O ( ∣ ∣ d ∣ ∣ 2 ) g_i(x_k+d)=g_i(x_k)+\sum^{n}_{j=1}G_{ij}(x_k)d_j+O(||d||^2) gi(xk+d)=gi(xk)+j=1nGij(xk)dj+O(∣∣d2)
即公式 g ( x k + d ) = g k + G k d + O ( ∣ ∣ d ∣ ∣ 2 ) g(x_k+d)=g_k+G_kd+O(||d||^2) g(xk+d)=gk+Gkd+O(∣∣d2)成立

若取 d = − h k = x ∗ − x k d=-h_k=x^*-x_k d=hk=xxk, 且由一阶必要条件, 则由上式可得: g ∗ = g k − G k h k + O ( ∣ ∣ h k ∣ ∣ 2 ) = 0 g^*=g_k-G_kh_k+O(||h_k||^2)=0 g=gkGkhk+O(∣∣hk2)=0

G ( x ) G(x) G(x)的连续性可知, 存在 x ∗ x^* x的一个邻域, 当 x k x_k xk在此邻域中, 也就是说 ∣ ∣ x k − x ∗ ∣ ∣ < δ ||x_k-x^*||<\delta ∣∣xkx∣∣<δ时, 有 G k G_k Gk正定, G k − 1 G_k^{-1} Gk1有上界, 那么就说明第 k k k次迭代存在, 对 g ∗ = g k − G k h k + O ( ∣ ∣ h k ∣ ∣ 2 ) = 0 g^*=g_k-G_kh_k+O(||h_k||^2)=0 g=gkGkhk+O(∣∣hk2)=0公式左右同时乘以 G k − 1 G_k^{-1} Gk1得:
G k − 1 − h k + O ( ∣ ∣ h k ∣ ∣ 2 ) = − d k − h k + O ( ∣ ∣ h k ∣ ∣ 2 ) = − h k + 1 + O ( ∣ ∣ h k ∣ ∣ 2 ) = 0 G_k^{-1}-h_k+O(||h_k||^2)=-d_k-h_k+O(||h_k||^2)=-h_{k+1}+O(||h_k||^2)=0 Gk1hk+O(∣∣hk2)=dkhk+O(∣∣hk2)=hk+1+O(∣∣hk2)=0
也就是说:
h k + 1 = O ( ∣ ∣ h k ∣ ∣ 2 ) h_{k+1}=O(||h_k||^2) hk+1=O(∣∣hk2)
有: h k + 1 ≤ γ ∣ ∣ h k ∣ ∣ 2 h_{k+1}\leq \gamma||h_k||^2 hk+1γ∣∣hk2
又因为: ∣ ∣ x k − x ∗ ∣ ∣ < δ ||x_k-x^*||<\delta ∣∣xkx∣∣<δ, 则:
h k + 1 ≤ γ ∣ ∣ h k ∣ ∣ 2 ≤ γ δ ∣ ∣ h k ∣ ∣ h_{k+1}\leq \gamma||h_k||^2\leq\gamma\delta ||h_k|| hk+1γ∣∣hk2γδ∣∣hk∣∣
x k x_k xk充分接近 x ∗ x^* x可以保证 γ δ < 1 \gamma\delta<1 γδ<1, 所以:
∣ ∣ x k + 1 − x ∗ ∣ ∣ = ∣ ∣ h k + 1 ∣ ∣ < ∣ ∣ h k ∣ ∣ ≤ δ ||x_{k+1}-x^*||=||h_{k+1}||<||h_k||\leq\delta ∣∣xk+1x∣∣=∣∣hk+1∣∣<∣∣hk∣∣δ
也就是说 x k + 1 x_{k+1} xk+1也在 x ∗ x^* x的这一邻域内, 也就是说第 k + 1 k+1 k+1次迭代有意义, 根据数学归纳法, 我们可以知道方法对所有 k k k次的迭代都有意义, 且 h k + 1 ≤ ( γ δ ) k + 1 ∣ ∣ h k ∣ ∣ , ∣ ∣ h k ∣ ∣ → 0 h_{k+1}\leq (\gamma\delta)^{k+1} ||h_k||,||h_k||\rightarrow 0 hk+1(γδ)k+1∣∣hk∣∣,∣∣hk∣∣0, 基本Newton方法收敛, 且由 h k + 1 ≤ γ ∣ ∣ h k ∣ ∣ 2 h_{k+1}\leq \gamma||h_k||^2 hk+1γ∣∣hk2可知是二阶收敛

但是这个定理只能表明基本Newton方法的局部收敛性, 也就是说需要迭代点足够靠近局部极小点, 对于这个方法, 其二阶收敛性保证其在合适的初始点上会很快得收敛到极小点, 但是当初始点没有充分接近极小点的时候, 二阶导矩阵 G k G_k Gk可能会出现不正定或者是奇异的情况, 使得无法进行迭代, 即使正定, 也不能保证函数单调下降, 而每一步迭代都需要计算二阶导Hesse矩阵, 都需要解一个线性方程组, 计算量为 O ( n 3 ) O(n^3) O(n3), 这算是比较大的开销了


http://www.kler.cn/a/391121.html

相关文章:

  • 阿里巴巴通义灵码推出Lingma SWE-GPT:开源模型的性能新标杆
  • gpu-V100显卡相关知识
  • 【学习笔记】数据结构(七)
  • 在Flutter中,禁止侧滑的方法
  • react 中 FC 模块作用
  • Vue7种组件之间通信方式
  • Spring Boot基础教学:Spring Boot的核心特性
  • sql表的约束练习题
  • git commit 校验
  • 数学建模---利用Matlab快速实现机器学习(上)
  • 技术人,在数字化转型中如何为企业赋能?
  • Vuex 与 Pinia:Vue 状态管理库的选择与对比
  • 基于YOLOv5的人群密度检测系统设计与实现
  • Oracle 数据库创建导入
  • 基于Multisim温度计温度测量温度超限报警电路(含仿真和报告)
  • gitlab 流水线流程简要说明
  • 用于图像识别的判别图正则化技术
  • 《云原生安全攻防》-- K8s安全防护思路
  • Go语言开发基于SQLite数据库实现用户表增删改查项目搭建(一)
  • adb 如何通过wifi连接手机
  • 吴恩达机器学习笔记(3)
  • 机器学习——特征工程、正则化、强化学习
  • 软件测试项目实战
  • Playwright 自动化测试与爬虫快速入门指南
  • 华为云软件开发生产线(CodeArts)10月新功能特性
  • MySQL 高性能优化规范建议总结