最优化梯度法和共轭梯度法
最优化方法-共轭方向和共轭梯度法
PkT1QPk
PkT1Q f
(X k
)
f
( X k )T QPk 1 PkT1QPk 1
Pk 1 0
且对j 0,1 , k 2, 有
2020/3/6
21
Biblioteka Baidu
3.共轭梯度法
证明
PjT QPk PjT Q f ( X k ) P k1 k1
共轭方向和共轭梯度法
2020/3/6
1
本节主要内容
1 共轭方向法的基本原理 2 共轭方向(定义+性质+方法) 3 共轭梯度法 4 例题 5 小结
2020/3/6
2
基本原理
2020/3/6
3
1.共轭方向法的基本原理
先看一个无约束极小化问题:
min f (x) 1 X T QX bT X c,Q为正定矩阵 2
P1应该满足的条件:X2=X1+λ1P1 (λ1为最优步长)
∵X2是无约束极小值点 ∴▽f(X2)=0 即QX2+b=0
P1要如何求呢?
(▽f(X)=QX+b)
有 f ( X 1 ) QX1 b
Q( X 2 1P1 ) b (QX 2 b) Q1P Q1P
与10是正交的,但是它们不是Q的共轭向量。而向量11与-11既是正交的, 又是Q的共轭。
共轭梯度法和梯度下降法
共轭梯度法和梯度下降法
共轭梯度法和梯度下降法是两种常用的优化算法,它们在解决最优化问题时具有重要的作用。本文将分别介绍共轭梯度法和梯度下降法的原理、优势和应用领域,并对它们进行比较和总结。
一、共轭梯度法
共轭梯度法是一种迭代算法,用于求解线性最小二乘问题或者解线性方程组。它的核心思想是通过迭代求解一系列的共轭方向,从而不断逼近最优解。
共轭梯度法的优势在于它能够充分利用问题的特殊结构,避免不必要的计算。相比于梯度下降法,共轭梯度法通常收敛更快,并且对于大规模问题的求解效果更好。
共轭梯度法主要应用于求解线性方程组、最小二乘问题以及特定的优化问题,如信号处理、图像处理和机器学习等领域。
二、梯度下降法
梯度下降法是一种基于梯度的迭代优化算法,用于求解无约束最优化问题。它的核心思想是沿着负梯度方向不断迭代,直至达到最优解或者满足停止条件。
梯度下降法的优势在于它的简单性和易于实现性。它不需要求解二阶导数,只需要计算一阶导数,因此对于大规模问题的求解也比较
高效。
梯度下降法广泛应用于机器学习中的参数优化问题,如线性回归、逻辑回归和神经网络等。此外,它还可以用于函数拟合、特征选择和降维等领域。
三、共轭梯度法与梯度下降法的比较
共轭梯度法和梯度下降法都是常见的优化算法,它们的选择取决于具体的问题和需求。
1. 收敛速度:共轭梯度法通常比梯度下降法收敛更快。共轭梯度法在每次迭代时利用了前面所有迭代步骤的信息,可以更快地逼近最优解。
2. 内存消耗:梯度下降法只需要存储当前的梯度信息,而共轭梯度法需要存储一系列的共轭方向。因此,对于大规模问题,梯度下降法在内存消耗方面更具优势。
最优化方法
由于牛顿法是基于当前位置的切线来确定下一 次的位置,所以牛顿法又被很形象地称为是" 切线法"。
牛顿法搜索动态示例图
关于牛顿法和梯度下降法的效率对比
从本质上去看,牛顿法是二阶收敛,梯度下降 是一阶收敛,所以牛顿法就更快。如果更通俗 地说的话,比如你想找一条最短的路径走到一 个盆地的最底部,梯度下降法每次只从你当前 所处位置选一个坡度最大的方向走一步,牛顿 法在选择方向时,不仅会考虑坡度是否够大, 还会考虑你走了一步之后,坡度是否会变得更 大。所以,可以说牛顿法比梯度下降法看得更 远一点,能更快地走到最底部。(牛顿法目光 更加长远,所以少走弯路;相对而言,梯度下 降法只考虑了局部的最优,没有全局思想。)
牛顿法的优缺点总结:
优点: 二阶收敛,收敛速度快; 缺点: 牛顿法是一种迭代算法,每一步都需要 求解目标函数的Hessian矩阵的逆矩阵,计算比 较复杂。
拟牛顿法(Quasi-Newton Methods)
拟牛顿法是求解非线性优化问题最有效的方法 之一 。 拟牛顿法的本质思想是改善牛顿法每次需要求 解复杂的Hessian矩阵的逆矩阵的缺陷,它使用 正定矩阵来近似Hessian矩阵的逆,从而简化了 运算的复杂度。 拟牛顿法和最速下降法一样只 要求每一步迭代时知道目标函数的梯度。通过 测量梯度的变化,构造一个目标函数的模型使 之足以产生超线性收敛性。
优化设计梯度法和共轭梯度法
优化设计梯度法和共轭梯度法梯度法和共轭梯度法是常用的数值优化算法,用于求解非线性优化
问题。它们在工程领域中的应用广泛,能够有效解决很多实际问题。
本文将对优化设计梯度法和共轭梯度法进行介绍,并比较它们的优劣。
1. 优化设计梯度法
优化设计梯度法是一种通过调整设计变量来最小化给定目标函数的
方法。它基于梯度下降的思想,每一步都会更新设计变量的取值,使
得目标函数在设计变量的邻域内最小化。
优化设计梯度法的具体步骤如下:
1)初始化设计变量;
2)计算目标函数在当前设计变量取值下的梯度;
3)根据梯度方向和步长因子更新设计变量;
4)重复步骤2和步骤3,直到满足收敛条件。
优化设计梯度法的优点是简单易用,容易实现。但是它也存在一些
问题,比如容易陷入局部最小值,收敛速度慢等。
2. 共轭梯度法
共轭梯度法是一种通过迭代算法求解线性方程组的方法,也可以用
于非线性优化问题。它的特点是每一步迭代都要寻找一个新的搜索方向,使得每一次迭代都能够有效利用之前的搜索历史。
共轭梯度法的具体步骤如下:
1)初始化设计变量和搜索方向;
2)计算目标函数在当前设计变量取值下的梯度;
3)根据搜索方向和步长因子更新设计变量;
4)计算新的搜索方向,使其与上一次的搜索方向共轭;
5)重复步骤2到步骤4,直到满足收敛条件。
共轭梯度法的优点是能够在较少的迭代次数内收敛到最优解,且具有较好的数值稳定性。然而,共轭梯度法在非精确线搜索时有一定局限性,并且对于非二次凸函数可能陷入非全局最小值。
3. 优化设计梯度法与共轭梯度法的比较
在实际应用中,选择合适的优化算法对于问题的解决和效率的提高至关重要。下面对优化设计梯度法和共轭梯度法进行比较。
共轭方向与共轭梯度法-最优化方法
min f ( X k Pk ),为最优步长,是个数值.
(3) X k1 X k k Pk ;
(4)若X
k
满足迭代终止准则,
1
输出X k1, 计算停止,
否则转下一步;
(5)根据某种共轭方向的构造方法获得搜索方向Pk 1 ,
令k k 1, 再次循环计算.
三、共轭梯度法
min f X 1.5x12 0.5x22 x1x2 2x1
解 f X 3x1 x2 2, x2 x1 T
X0 2, 4T , P0 f
X0
12, 6T , f
X0
2
180
f X0 P0
k
)]
, (f
(X
k 1 )
f
(X
k
)代QPk
)
f ( X k1 )T f ( X k1 ) f ( X k1 )T f ( X k ) Pk T f ( X k1 ) Pk T f ( X k )
由于X k1是沿Pk 方向进行一维搜索所得极小点, 所以有Pk T f ( X k1 ) 0
如果Q取单位向量,那么Q共轭向量就是相互正交的向量。
所以可认为共轭的概念是正交概念(
xiT x j 0 )的推广。
定理3.31 组。
最优化梯度法和共轭梯度法
三. 共轭梯度法
1. 共轭方向和共轭方向法
R 定义 设 A 是 n n 的对称正定矩阵,对于 n中的两个非零向量d 1 和 d 2,
若有 d
1T
Ad 2 0 ,则称 d 1和d 2关于A共轭。
设 d 1 , d 2 ,, d k 是 Rn 中一组非零向量,如果 它们两两关于A
( ) f ( x ( k ) d ( k ) )T d ( k ) 0,
[ A ( x ( k ) d ( k ) ) b ]T d ( k ) 0,
令
g k f ( x ( k ) ) Ax ( k ) b,则有 [ g k Ad ( k ) ]T d ( k ) 0,
共轭,即 d i Ad j 0 , i j , i , j 1 , 2 ,, k 。
T
则称这组方向是关于 共轭的,也称它们是一 A共轭方向。 A 组
注:如果A是单位矩阵,则
d
1T
I d 0d
2
1T
d2 0
d1 d 2
共轭是正交的推广。
d 定理 1. 设 A是 n阶对称正定矩阵, 1 , d 2 ,, d k 是 k 个 A 共轭的非零
处的梯度方向构造一组共轭方向,并沿此方向进行搜索,求出
最优化共轭梯度法
最优化共轭梯度法
最优化共轭梯度法(Conjugate Gradient Method)是一种迭代求解线性方程组或优化问题的方法。它的特点是对于二次正定函数,可以在有限次迭代内精确地求出最优解。在非二次函数的优化问题中,共轭梯度法表现出了较好的收敛性和全局能力。
共轭梯度法的核心思想是通过选择适当的方向,使得每一次方向的梯度互相“共轭”,从而加快收敛速度。当目标函数为二次函数时,共轭梯度法能够在有限次迭代中得到精确解;而对于非二次函数的优化问题,共轭梯度法通过先验条件选择合适的方向,最大程度地减小目标函数值。
共轭梯度法的基本步骤如下:
1.初始化参数:设置初始点的位置和方向,对于非二次函数,通常选取梯度方向作为方向。
2. 计算步长:通过线方法(如Armijo准则、Wolfe准则等)定位到目标函数上降速度最快的点,并计算目标函数在该点的梯度。
3.更新方向:利用“共轭”梯度法,根据先验条件计算新的方向。
4.判断终止条件:判断目标函数值是否满足设定的终止条件,若满足则停止迭代,否则返回步骤2
对于二次函数,最优化共轭梯度法表现出了优良的性能。当目标函数是非二次函数时,共轭梯度法的表现会有所下降,但仍然比一般的梯度下降法更具有优势。因此,共轭梯度法常被用于求解大规模线性方程组、信号处理、数字滤波、机器学习等领域。
最优化共轭梯度法的优点在于:收敛速度较快,全局能力较强,不需要存储海量信息。然而,该方法也存在一些缺点。首先,共轭梯度法对目标函数的性质有一定的要求,例如目标函数必须是光滑的,并且梯度向量必须是有效的。其次,共轭梯度法对初始点的选择较为敏感,不同的初始点可能导致不同的解。
共轭梯度法和梯度下降法
共轭梯度法和梯度下降法
共轭梯度法和梯度下降法是两种常用的优化算法,它们在解决最小化目标函数的问题上具有重要作用。本文将介绍这两种算法的原理、应用场景以及优缺点。
一、共轭梯度法
共轭梯度法是一种迭代优化算法,用于求解线性方程组或非线性优化问题。它的核心思想是通过迭代的方式寻找下降最快的搜索方向,并在每一次迭代中保证搜索方向互相正交,从而有效地加速优化过程。
共轭梯度法的优势在于对于大规模线性方程组或非线性优化问题,可以在有限的迭代次数内找到精确解。这是由于它能够利用问题的特殊结构,充分利用历史信息,避免了重复计算。因此,共轭梯度法在图像处理、机器学习、信号处理等领域得到广泛应用。
二、梯度下降法
梯度下降法是一种基于负梯度方向进行搜索的优化算法。它的核心思想是通过迭代的方式沿着目标函数梯度的反方向更新参数,从而逐步逼近最优解。
梯度下降法的优势在于简单易懂、易于实现,并且在许多优化问题中都能取得不错的效果。它的应用范围非常广泛,包括线性回归、逻辑回归、神经网络等机器学习算法中的参数优化,以及函数逼近、
图像处理等领域。
三、共轭梯度法与梯度下降法的区别和联系
共轭梯度法和梯度下降法都是迭代优化算法,但它们之间存在一些重要的区别和联系。
1. 方向选择:
共轭梯度法在每一次迭代中选择的搜索方向是互相正交的,这使得每一步的搜索方向都是全局最优的。而梯度下降法只利用了当前位置的梯度信息,选择的搜索方向是当前位置的负梯度方向。
2. 收敛速度:
共轭梯度法通常比梯度下降法收敛速度更快。这是因为共轭梯度法充分利用了历史信息,避免了重复计算,从而加速了优化过程。而梯度下降法通常需要更多的迭代次数才能达到相同的精度。
最优化方法-共轭方向和共轭梯度法PPT共36页
最优化方法-共轭方向和共轭梯度法
21、静念园林好,人间良可辞。 22、步步寻往迹,有处特依依。 23、望云惭高鸟,临木愧游鱼。 24、结庐在人境,而无车马喧;问君 何能尔 ?心远 地自偏 。 25、人生归有道,衣食固其端。
谢谢
11、越是没有本领的就越加自命不凡。——邓拓 12、越是无能的人,越喜欢挑剔别人的错儿。——爱尔兰 13、知人者智,自知者明。胜人者有力,自胜者强。——老子 14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。——歌德 15、最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特利
数据科学优化方法 第7章 共轭梯度方法
则称向量组 {d1,d2,,dm} 是 Q的两两共轭方向,简称 Q共轭的.
共轭的定义及性质
如果Q 0 ,则任意两个 n 维非零向量是Q 共轭的. 如 果 Q I,则共轭就是通常所说的正交. 设 Q 为 n n 的对称正定矩阵,如果d1,d2,,dm 是 Q 共轭 的,则它们是线性无关的. 设 Q 为 n n 的对称正定矩阵,如果d1,d2,,dm 是 Q 共轭 的,则 m最大为n.
一个很自然的想法是构造一种介于负梯度方法和牛 顿方法之间的方法,使其既可以比负梯度方法的收 敛速度快,又可以避免牛顿方法高昂的计算成本. 本章介绍的共轭梯度方法正是这样一种方法.
第7章 共轭梯度方法
7.1 共轭方向方法 7.2 针对正定二次函数的共轭梯度方法 7.3 非线性共轭梯度方法 7.4 数值实验
+
8
f (x) 1 2
x - 2,1T
T2
0
0
8
x - 2,1T
图7.1 沿负梯度方向的迭代路径 (实 线)和沿坐标轴方向的迭代路径 (虚线)
方法的引入
当正定二次函数问题中的 Q 不再是对角阵时,依次 沿何种方向作精确线搜索能得到相同结果呢?
定理 7.1. 谱定理 设 A 是 nn 实对称矩阵,则 A 具有如下性质
显式表达式 为
k
最优化方法3-5共轭梯度法和共轭方向法
当 gk 0时,构造下一个共轭方向 pk ,沿 pk 进行精确 一维搜索得 xk1。
构造 pk 与 p0, p1,L , pk1都共轭,并且
k 1
pk gk kj p j j0
现在来确定kj ( j 0,1,L L , k 1)。由定理 3.4.3
(gk
g
k 1)
1
k 1
g
g T
k 1 k
1
(2)Polak-Ribiere-Polyak 公式
故
k 1
g
T k
(
gk
g
k 1)
gkT1gk 1
此式是 Polak 和 Ribiere 以及 Polyak 分别于 1969
年提出的,故称 Polak-Ribiere-Polyak 公式,简称 PRP
称 Fletcher-Reeves 公式,简称 FR 公式。
k 1
gkT Gpk1 pkT1Gpk 1
Gpk 1
1
k 1
(gk
g
k 1 ) ,
gkT Gpk1
1
k 1
gkT
(gk
g
k 1)
,
共轭梯度法matlab最优化问题
共轭梯度法是一种在求解最优化问题时常用的算法。下面是一个
在MATLAB 中实现共轭梯度法的简单示例。请注意,这个示例是为
了教学目的而编写的,可能不适用于所有最优化问题。
首先,假设我们有一个目标函数f(x),我们需要找到使得f(x) 最小化的x。假设f(x) 是一个二次函数,形式为f(x) = x^T Ax + b^T x + c,其中A 是对称正定矩阵,b 和c 是常数向量和标量。
以下是一个使用MATLAB 实现共轭梯度法的示例代码:
```matlab
function [x, iter] = conjugate_gradient(A, b, x0, tol, max_iter)
% A -目标函数的系数矩阵
% b -目标函数的常数向量
% x0 -初始解
% tol -容忍的误差
% max_iter -最大迭代次数
x = x0;
r = b - A*x;
p = r;
iter = 0;
while (norm(r) > tol) && (iter < max_iter)
Ap = A*p;
alpha = (p'*r) / (p'*Ap);
x = x + alpha*p;
r = r - alpha*Ap;
beta = (r'*r) / (p'*r);
p = r + beta*p;
iter = iter + 1;
end
end
```
这个函数接受一个对称正定矩阵A,一个常数向量b,一个初始解x0,一个容忍的误差tol,和一个最大迭代次数max_iter 作为输入,并返回最优解x 和迭代次数iter。注意,这个函数没有包括一些可能的特殊情况处理,例如如果A 是奇异的或者接近奇异的,那么这个函数可能无法正确地收敛。在使用这个函数之前,你可能需要根据你的具体问题对其进行一些修改和增强。
最优化课程练习-共轭梯度法
无约束优化方法—共轭梯度法
1.共轭梯度法
共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算海赛矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。其基本思想是利用负梯度方向,构造一共轭方向,使其尽快达到最优点。共轭梯度法迭代过程如图1所示。
1
X 2
图1 共轭梯度法迭代过程
()k 1x +点是沿()k x 点负梯度方向
()
()K k S
g =-搜索到的极值点。如果
接着从()
k 1x +点出发,不是按着其负梯度方向()k
g -搜索,而是沿着通过*
x 点的方向()
1K S +搜索,显然立即就能搜索到极值点*
x 。根据共轭理论,它们应
当满足
()
()(1)
1k T
k S
AS
+=
即()K
S 与()1K S +是互为共轭方向,新构造的共轭方向(
)
1K S +,可由矢量合成,
()
(1)
(1)
()
()
2k k k k S
g
S
β++=-+
()k β值可根据在极值点附近目标函数等值线近似为二次型函数的道理,推
到出:
()
(1)(1)(1)
2
()
()()()2
||||3||||
k T k k k k T k k g
g g g g g β
+++==
利用两个点的梯度()
k g
和(1)
k g
+,就可以构造一个与梯度矢量为共轭的矢量
(
)
1K S +,沿着该方向搜索,即可求得极值点。共轭梯度法程序框图如图2所示。
图2 共轭梯度法程序框图
2. 共轭梯度法的应用
用共轭梯度法计算22
机器学习常见的最优化算法
机器学习常见的最优化算法
1. 梯度下降法(Gradient Descent)
梯度下降法是最早最简单,也是最为常⽤的最优化⽅法。梯度下降法实现简单,当⽬标函数是凸函数时,梯度下降法的解是全局解。⼀般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是⽤当前位置负梯度⽅向作为搜索⽅向,因为该⽅向为当前位置的最快下降⽅向,所以也被称为是”最速下降法“。最速下降法越接近⽬标值,步长越⼩,前进越慢。
在机器学习中,基于基本的梯度下降法发展了两种梯度下降⽅法,分别为随机梯度下降法和批量梯度下降法。
⽐如对⼀个线性回归(Linear Logistics)模型,假设下⾯的h(x)是要拟合的函数,J(theta)为损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了。其中m是训练集的样本个数,n是特征的个数。
批梯度下降 BGD(Batch Gradient Descent)
或者把1/m ⽤步长a代替
(3)从上⾯公式可以注意到,它得到的是⼀个全局最优解,但是每迭代⼀步,都要⽤到训练集所有的数据,如果m很⼤,那么可想⽽知这种⽅法的迭代速度会相当的慢。所以,这就引⼊了另外⼀种⽅法。
随机梯度下降(stochastic gradient descent) or 增量梯度下降(incremental gradient descent)
(3)随机梯度下降是通过每个样本来迭代更新⼀次,如果样本量很⼤的情况(例如⼏⼗万),那么可能只⽤其中⼏万条或者⼏千条的样本,就已经将theta迭代到最优解了,对⽐上⾯的批量梯度下降,迭代⼀次需要⽤到⼗⼏万训练样本,⼀次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的⼀个问题是噪⾳较BGD要多,使得SGD并不是每次迭代都向着整体最优化⽅向。
最优化问题共轭梯度法法代码
最优化问题共轭梯度法法代码
x
本文介绍了最优化问题共轭梯度法法的代码实现,以及如何使用代码解决最优化问题。
一、共轭梯度法简介
共轭梯度法是一种常用的最优化算法,它是一种经典的迭代方法,用于求解凸函数的极值问题。其基本思想是:在每一步,沿着梯度下降的方向迭代,直到梯度为零就停止迭代。
共轭梯度法的迭代公式为:
$$x_{k+1}=x_k+alpha_k p_k$$
其中,$alpha_k$ 是步长参数,$p_k$ 是当前搜索方向,$x_k$ 是当前点的位置。
二、代码实现
1.函数定义
```python
# 共轭梯度法
# 入参:函数func,梯度函数grad,初始点x0,步长参数alpha,精度epsilon
# 出参:求解的最优点x
def conjugate_gradient_method(func, grad, x0, alpha, epsilon):
```
2.初始化搜索方向
```python
# 初始化搜索方向
p_k = -grad(x_k)
```
3.更新迭代点
```python
# 更新迭代点
x_k = x_k + alpha * p_k
```
4.更新搜索方向
```python
# 更新搜索方向
beta_k = (grad(x_k) * grad(x_k)) / (grad(x_k_prev) * grad(x_k_prev))
p_k = -grad(x_k) + beta_k * p_k_prev
```
5.检查终止条件
```python
# 检查终止条件
if np.linalg.norm(grad(x_k)) < epsilon:
第三次梯度法和共轭梯度法39页PPT
梯度法(最速下降法)
迭代公式: xk1xkkdk
如何选择下降最快的方向?
f (xk ) 函数值增加最快的方向
xk 函数值下降的方向
f (xk)函数值下降最快的方向
梯度法(最速下降法):
1.搜索方d向 k : f(xk),也称为最速下降方向;
设有二次函数
f(x)1(xx)TA (xx) 2
其中A是nn对称正定矩x 阵 是一, 个定点。
则函数 f(x)的等值面 1(xx)TA(xx)c 2
是以x 为中心的椭球面。
由于 f(x )A (xx ) 0 ,
而 2f(x)A,
因 A 正 为 所 定 2 f以 (x , ) A 0 ,
x
因此x是f(x)的极小点。
2 .搜:索 k 取 步 , 最 即 f 长 ( x 优 k 满 k d k ) m 步 足 f ( x k i 长 d n k ) 。
梯度法算法步骤:
1 .给定 x 1 初 R n ,允 始 许 点 0 ,令 误 k 1 。 差
2.计算搜索 dk方 f向 (xk);
3.若 |d |k| |,则停x 止 k为计 所算 求 否 , 极 则值 ,点 求 k ; 最
证明: 令()f(xkdk), 所以
() f(x kd k )T d k.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数的极小点。
以下分析算法的具体步骤。
(1) 任取初始点 x (1),第一个搜索方向取为 d (1) f ( x (1) ) ;
( 2) 设已求得点 x ( k 1) , 若f ( x ( k 1) ) 0 , 令 g k 1 f ( x ( k 1) ) ,
注: 因为梯度法的搜索方向 d k 1 f ( x k k d k ), 所以
(d k 1 )T d k 0 d k 1 d k 。
锯齿现象
在极小点附近,目标函数可以用二次函数近似,其等值面近似
椭球面。
x2 x3
x*
x1
注
最速下降方向反映了目 标函数的一种局部性质 。 它只是
( k 1) (k ) (k ) x x d k f ( x ( k ) d ( k ) ) min f ( x ( k ) d ( k ) ) k
直到某个 x ( k ) 满足 f ( x ( k ) ) 0。
注 由定理2可知,利用共轭方向法 求解上述极小化问题, 至多经过
d (1)T Ad ( 2) 0,
即等值面上一点处的切 向量与由这一点指向极小点的向量关于A 共轭。
1 T x Ax bT x c , 2 其中 A 是 n 阶对称正定矩阵。 d (1) , d ( 2 ) ,, d ( k ) 是 一组A共轭向量。
定理 2. 设有函数
f ( x)
解得 k d ( k ) A g k 1 d
( k )T T
T
T
T
Ad
(k )
( 2)
(3) 搜索步长的确定 :
已知迭代点 x ( k )和搜索方向d ( k ) , 利用一维搜索确定最优步长 k ,
即求解
记 令 即有
min
f ( x ( k ) d ( k ) ) 。
( ) f ( x ( k ) d ( k ) ) ,
共轭,即 d i Ad j 0 , i j , i , j 1 , 2 ,, k 。
T
则称这组方向是关于 A共轭的,也称它们是一 组A共轭方向。
注:如果A是单位矩阵,则
d
1T
I d 0d
2
1T
d2 0
d1 d 2
共轭是正交的推广。
d 1 , d 2 ,, d k 是 k 个 A 共轭的非零 定理 1. 设 A是 n阶对称正定矩阵,
jT
因为d 0 , 而 A是正定矩阵,所以 d
所以
Ad j 0,
j 0 , j 1 , 2 , , k 。
因此 d 1 , d 2 ,, d k 线性无关。
几何意义
设有二次函数
1 f ( x ) ( x x )T A( x x ) 2 其中 A 是 n n 对称正定矩阵,x 是一个定点。 1 ( x x )T A( x x ) c 则函数 f ( x ) 的等值面 2
T (i ) T 2 (3) 由定理3的(3)可知, g i d g i g i || g i || 0 ,
所以 d ( i )是迭代点 x ( i ) 处的下降方向。
(4) 由定理3 , FR算法中 i的计算公式可以简化。
i
d ( i ) A g i 1 d
( i )T
解得 k
T (k ) gk d
d
( k )T
Ad
(k )
( 3)
定理 3 对于正定二次函数 f ( x )
( i )T
1 T x Ax bT x c , FR算法在 m n次 2 一维搜索后即终止,并 且对所有的( i 1 i m),下列关系成立
(1) d
Ad ( j ) 0 , j 1 , 2 ,, i 1;
梯度法和共轭梯度法
1. 无约束最优化问题 2. 梯度法 3. 共轭梯度法
一. 无约束最优化问题
无约束最优化问题 min
f ( x) x Rn
s.t .
其中f ( x ) 有一阶连续偏导数。
解析方法:利用函数的解析性质构造迭代公式使之收敛到最优解。
二. 梯度法(最速下降法) 迭代公式:
x k 1 x k k d k
T
Ad
(i )
g i 1T A d ( i ) d
( i )T
Ad ( i )
g i 1T A[ ( x ( i 1) x ( i ) ) / i ] d
( i )T
A [ ( x ( i 1) x ( i ) ) / i ]
g i f ( x ( i ) ) A x ( i ) b .
d 1 f ( x 1 ) ( 4 , 6 )T . x 1 d 1 ( 2 4 , 1 6 )T . 令 ( ) f ( x 1 d 1 ) ( 2 4 ) 2 3 ( 1 6 ) 2 ,
求解
miБайду номын сангаас ( )
局部目标函数值下降最快的方向。 最速下降法是线性收敛的算法。
三. 共轭梯度法
1. 共轭方向和共轭方向法
Rn中的两个非零向量d 1 和 d 2, 定义 设 A 是 n n 的对称正定矩阵,对于
若有 d
1T
Ad 2 0 ,则称 d 1和d 2关于A共轭。
设 d 1 , d 2 ,, d k 是 Rn 中一组非零向量,如果 它们两两关于A
如何选择下降最快的方向?
f ( x k ) 函数值增加最快的方向
xk
函数值下降的方向
f ( x k ) 函数值下降最快的方向
梯度法(最速下降法):
1. 搜索方向: d k f ( x k ) , 也称为最速下降方向;
2. 搜索步长: k 取最优步长 , 即满足 f ( x k k d k ) min f ( x k d k ) 。
是以 x 为中心的椭球面。
由于 f ( x ) A( x x ) 0 , 而
2 f ( x ) A,
因为A 正定,所以 2 f ( x ) A 0 ,
x
因此 x 是 f ( x ) 的极小点。
设 x ( 0 ) 是在某个等值面上的一点,d (1) 是 R n中的一个方向, x ( 0 )沿着 d (1) 以最优步长搜索得到点 x (1) 。 则 d (1)是点 x (1)所在等值面的切向量。
该等值面在点x(1) 处的法向量为
f ( x (1) ) A( x (1) x ) . 则 d (1) 与 f ( x (1) ) 正交,
x2
x ( 0)
d (1)
x
即 d
(1)T
f ( x ) 0,
( 1)
d
( 2)
x (1 ) x1
o
令 d ( 2) x x(1) ,
所以
( ) f ( x ( k ) d ( k ) )T d ( k ) 0,
[ A ( x ( k ) d ( k ) ) b ]T d ( k ) 0,
令
g k f ( x ( k ) ) Ax ( k ) b,则有 [ g k Ad ( k ) ]T d ( k ) 0,
向量,则这个向量组线性无关。
证明
设存在实数 1 , 2 ,, k ,使得
i 1
id 0,
T
k
i
上式两边同时左乘 d j A ,则有
i 1 k
id
k
jT
Ad i 0 ,
因为 d 1 , d 2 ,, d 是 k 个 A 共轭的向量,所以上式可化简为
jd
j
jT
Ad j 0 .
则下一个搜索方向 d ( k 1)按如下方式确定:
令 d ( k 1) g k 1 k d ( k )
(1)
如何确定 k?
要求 d ( k 1) 和 d ( k ) 关于 A共轭。
则在( 1)式两边同时左乘 d ( k ) A ,得
T
0 d ( k ) Ad ( k 1) d ( k ) Agk 1 k d ( k ) A d ( k )
则有 f ( x k k d k )T d k 0 。
令 ( ) f ( x k d k ), 所以 证明:
( ) f ( x k d k )T d k .
f ( x k k d k ) min f ( x k d k )
( k ) f ( x k k d k )T d k 0 .
i 1
k
是由 d (1) , d ( 2 ) ,, d ( k ) 生成的子空间。特别地, 当 k n时, x ( n 1 )是 f ( x )在R n上的唯一极小点。
推论
在上述定理条件下,必有
f ( x ( k 1) )T d ( i ) 0 , i 1 , 2 , , k 。
n 次迭代必可得到最优解 。
如何选取一组共轭方向?
2. 共轭梯度法
Fletcher R eeves 共轭梯度法:
1 T x Ax bT x c 2 其中 x R n , A是对称正定矩阵, b R n, c 是常数。 min f ( x)
基本思想: 将共轭性和最速下降方 向相结合,利用已知迭 代点
梯度法算法步骤:
1. 给定初始点 x 1 R n , 允许误差 0 , 令k 1 。 2. 计算搜索方向 d k f ( x k ) ;
3. 若 || d k || , 则停止计算, x k 为所求极值点; 否则,求最优步长 k
使得 f ( x k k d k ) min f ( x k d k )。
(2) gi T g j 0 , j 1 , 2 ,, i 1;
( 3) g iT d ( i ) g iT g i 。
注 (1)由定理3 可知搜索方向d (1) , d ( 2 ) ,, d ( m ) 是 A 共轭的。
(2) 算法中第一个搜索方向 必须取负梯度方向,否 则构造的搜索 方向不能保证共轭性。
以任意的 x (1) R n为初始点,依次沿 d (1) , d ( 2 ) ,, d ( k ) 进行搜索,
得到点 x ( 2) , x ( 3) ,, x ( k 1) , 则 x ( k 1) 是函数 f ( x )在 x (1) Bk 上的
极小点,其中
Bk { x | x i d ( i ) , i R }
共轭方向法
对于极小化问题
1 T x Ax bT x c , 2 其中A是正定矩阵,称下述算 法为共轭方向法 : min f ( x)
(1) 取定一组 A 共轭方向d (1) , d ( 2 ) ,, d ( n ) ; ( 2) 任取初始点 x (1) , 依次按照下式由 x ( k )确定点 x ( k 1) ,
令 ( ) 8 ( 2 4 ) 36( 1 6 ) 0 1
36 8 T x x 1d ( , ) 31 31
2 1 1
13 62
收敛性
步长 k 满足 性质. 设 f ( x) 有一阶连续偏导数,若
f ( x k k d k ) min f ( x k d k )
4. 令 x k 1 x k k d k , 令 k : k 1 , 转2。
2 2 例. 用最速下降法求解 : min f ( x ) x1 3 x2 , 设初始点为 x 1 ( 2 , 1 )T ,
求迭代一次后的迭代点 x 2 。
解: f ( x ) ( 2 x1 , 6 x 2 )T ,
i
g i 1T ( g i 1 g i ) d
( i )T
( g i 1 g i )
2
|| g i 1 || 2 d
( i )T
gi
|| gi 1 || 2 || g i ||
( 4)
FR算法步骤:
1. 任取初始点 x (1) , 精度要求 ,令 k 1。
2. 令g1 f ( x (1) ) , 若 || g1 || , 停止, x (1)为所求极小点; 否则,令d (1) g1 , 利用公式(3)计算1 , 令x ( 2) x (1) 1 d (1)。 3. 令g k 1 f ( x ( k 1) ) , 若 || g k 1 || , 停止, x ( k 1)为所求极小点; 否则,令d ( k 1) g k 1 k d ( k ) , 其中 k 用公式(4)计算。