5.19学习总结
最优化基础理论与方法第三章 无约束规划方法
无约束规划问题
无约束规划问题的数学模型:
min┬x∈R^nf(x), f∈C^l,
其中C^l表示一阶连续可微函数的全体。
无约束规划问题的解决方法是优化方法中的基本组成部分,约束规划问题可以通过转化为无约束规划问题进行求解。
3.1 最速下降法
考虑:从任意一个点出发,找一个方向,沿着该方向得到另一个点,使得目标函数值下降,直至得到最优解。
1、沿着什么方向目标函数值会下降?
负梯度方向下降最快
2、沿着选定的方向前进多少最合适?
选一个合适的步长
3、最优解的刻画
最优解的更新公式
基本思想 最度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。
当∇f(x^k)^Td^k<0时, d^k是 f (x)在x^k 处的下降方向。
算法步骤 1)选定初始点x^1和给定的精度要求ϵ>0,令k=1. 2)若||∇f(x^k)||<ε,则停,x^∗=x^k;否则,令d^k=−∇f(x^k). 3)在x^k处沿方向d^k作线性搜索,得x^k+1=x^k+α_kd^k, k=k+1,转步骤2). 若在第3步中,采用精确线性搜索,即 α_k=argminf(x^k+αd^k), 就有 ├ df(x^k+αd^k)/dα|_α=α_k=(d^k)^T∇f(x^k+1)=0. 这表明d^k与d^k+1是正交的.
(4)例题 用最速下降法求解无约束问题 min{f(x)=x_1^2/2+x_2^2}, 取初始点x^1=(2,1)^T. 解:由于 ∇f(x)=(x_1,2x_2)^T, 因此,∇f(x^1)=(2,2)^T,取d^1=−∇f(x^1)=(−2,−2)^T,作一维搜索:构造一元函数: φ(α)=f(x^1+αd^1)=2(1−α)^2+(1−2α)^2, 求导得 φ^‘(α)=−4(1−α)−4(1−2α). 解方程 φ^‘(α)=0,得最优步长 α_1=2/3, 从而 x^2=x^1+α_1d^1=(2,1)^T+2/3(−2,−2)^T=(2/3,−1/3)^T. 再进行下一次迭代,得到 x^3=(2/3^2,−(−1)^2/3^2)^T. 如此作下去,可得 x^k+1=(2/3^k,(−1)^k/3^k)^T. 当k→∞时,x^k→(0,0)^T,得到无约束问题的最优解.
算法总结 (1)特点 程序简单,对初始点要求不严格,能收敛。 (2)缺点 1) 收敛速度慢(线性收敛); 2) Zigzag现象:最速下降法向极小点逼近是曲折前进的,这种现象称为锯齿现象,锯齿现象会影响收敛速度; 3) 不具备二次终止性(即在有限步内求得凸二次函数最优解)。
3.2 Newton法
Newton法也叫牛顿迭代法或牛顿-拉弗森方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。Newton法是一种线性化方法,其基本思想是将非线性方程逐步归结为某种线性方程来求解.
考虑求解无约束问题min f(x),x∈R^n,其中f(x)是二次可微的。
设x^∗是该式的局部解,则x^∗满足∇f(x)=0
解方程组即可求得优化问题的解,但是该方程组一般是非线性方程组,不易求解
解决思路:利用泰勒公式对上述方程组的解做线性近似
选取初始点x^1(作为x^∗的第一次近似),在 x^1处按泰勒级数展开,取二次近似多项式
f(x)≈f(x^1)+∇f(x^1)^T(x−x^1)+1/2(x−x^1)^T∇^2f(x^1)(x−x^1).
局部解x^∗满足∇f(x)=0,因此对上式中的x求导=0,可得:
∇f(x^1)+∇^2f(x^1)(x−x^1)=0
当∇^2f(x^1)时非奇异矩阵时,求解上式可得
x^2=x^1-[∇^2f(x^1)]^−1∇f(x^1)
x^2可作为对x^∗的第二次近似
注意:该方法只有f(x)在展开点处的Hesse矩阵非奇异时才可以使用
非奇异矩阵是行列式不为0的矩阵,也就是可逆矩阵。
如果x^2不满足终止条件,可以在x^2处将f (x)展开,求出近似二次函数的极值点x^3, 如此下去,可以得到点列x^k,并且满足迭代公式
x^k+1=x^k−[∇^2f(x^k)]^−1∇f(x^k).
牛顿迭代公式
为了方便计算,可以将上式改写为:
x^k+1=x^k+d^k.
d^k是线性方程组
∇^2f(x^k)d=−∇f(x^k)的解向量
牛顿方程
算法何时停止? 按照Newton算法,得到的点处的梯度的长度逐渐趋于零,以至于到数步后,满足精度要求。
Newton法就是利用切线是曲线的线性逼近的思想。
随便找一个曲线上的A点(为什么随便找,根据切线是切点附近的曲线的近似,应该在根点附近找,但是很显然我们现在还不知道根点在哪里) 做一个切线,切线的根(就是和x轴的交点)与曲线的根,还有一定的距离。
从这个切线的根出发,做一根垂线,和曲线相交于B点,继续重复刚才的工作。
只要不停的迭代下去,直到得到的x值与零点的距离足够小,满足阈值,即|Xn-X|<ε,即可将Xn当做函数的零点,也就是目标函数的极小值点。
算法步骤 1)取初始点x^1,置精度要求ε,置k=1. 2)如果||∇f(x^k) ||≤ε,则停止计算(x^k作为无约束问题的解);否则,求 解线性方程组 ∇^2f(x^k)d=−∇f(x^k), 得到d^k. 3)置 x^k+1=x^k+d^k,k:=k+1, 转步骤2).
例题1 用Newton法求解无约束问题 min{f(x)=x_1^2+x_2^2+x_1x_2+2x_1−3x_2}, 取初始点x^1=(0,0). 解 f(x)在初始点处的梯度为: ∇f(x^1)=(2,−3)^T; f(x)在初始点处的海塞矩阵为: ∇^2f(x^1)=(■8(2&1@1&2)). 解线性方程组∇^2f(x^1)d=−∇f(x^1),即 (■8(2&1@1&2))(■8(d_1@d_2))=(■8(−2@3)) d^1=(d_1,d_2)^T=(−7/3,8/3)^T, 所以x^2=x^1+d^1=(0,0)^T+(−7/3,8/3)^T. 因为||∇f(x^2)||=0,所以(−7/3,8/3)^T为无约束问题的解。
优点:收敛速度快
牛顿法不仅利用了一阶偏导数,也用到了的二阶偏导数,即梯度变化的趋势,因此比梯度下降法更快的确定合适的搜索方向,具有二阶收敛速度。 梯度下降法时选择下一步能迈出的最大步长,而牛顿法是在选择下一步能迈出的最大步长的基础上,同时也考虑了下下步的选择方向。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具