精华内容
下载资源
问答
  • 共轭梯度法共轭梯度原理共轭梯度原理共轭梯度原理共轭梯度原理
  • 共轭梯度.py
  • 共轭梯度共轭梯度
  • 使用非线性共轭梯度求解优化问题,使用matlab编程求解,是最优化方向的基本代码
  • 共轭梯度
  • (FR)共轭梯度是介于最速下降和牛顿之间的一个方法,相比最速下降收敛速度快,并且不需要像牛顿一样计算Hesse矩阵,只需计算一阶导数 共轭梯度共轭方向的一种,意思是搜索方向都互相共轭 共轭...

    (FR)共轭梯度法是介于最速下降法和牛顿法之间的一个方法,相比最速下降法收敛速度快,并且不需要像牛顿法一样计算Hesse矩阵,只需计算一阶导数

     

    共轭梯度法是共轭方向法的一种,意思是搜索方向都互相共轭

    共轭的定义如下:

     

     

    共轭梯度法是一种典型的共轭方向法,它的搜索方向是负梯度方向和上一次搜索方向的一个组合

    关于βk-1,有两种常用的计算公式

    (PRP公式)

    (PRP公式)

     

    预处理共轭法改善了G的条件数,使算法的收敛速度加快

    预处理的方法是寻找一个非奇异矩阵C,使得C-TGC-1的条件数小于G的条件数

     

    再开始共轭梯度法是满足某一条件后重新使用最速下降方向作为搜索方向,这个条件包括迭代n步,或共轭梯度方向是上升方向

     

    下面给出这几种方法的python实现

    FR共轭梯度法:

    # coding=utf-8
    # FR-CG共轭梯度法
    from linear_search.Function import *
    from linear_search.wolfe import *
    import numpy as np
    
    
    def conjugate(_f, _x):
        fun = Function(_f)
        x = array(_x)
        d = -fun.grad(x)
        while fun.norm(x) > 0.01:
            alpha = wolfe(_f, x, d)
            g = np.mat(fun.grad(x))
            beta = 1 / np.dot(g, g.T)
            x = x + alpha * d
            g = np.mat(fun.grad(x))
            beta = beta * np.dot(g, g.T)
            d = array(-g + beta * d)[0]
        return x

     再开始共轭梯度法:

    # coding=utf-8
    # 再开始共轭梯度法
    from linear_search.Function import *
    from linear_search.wolfe import *
    import numpy as np
    
    
    def restart_conjugate(_f, _x, n):
        fun = Function(_f)
        x = array(_x)
        while True:
            d = -fun.grad(x)
            k=0
            if(np.linalg.norm(d)<0.01):
                break
            while fun.norm(x) > 0.01:
                g = np.mat(fun.grad(x))
    
                alpha = wolfe(_f, x, d)
                x = x + alpha * d
                k=k+1
    
                g1= np.mat(fun.grad(x))
    
                if np.dot(g1,g.T)/np.dot(g1,g1.T)>0.1 or k>=n:
                    if np.linalg.norm(g1)<0.01:
                        return x
                    break
                else:
                    beta = np.dot(g1, g1.T) / np.dot(g, g.T)
                    d = array(-g + beta * d)[0]
                    if np.dot(mat(d),g1.T)>0:
                        break
        return x

     

    转载于:https://www.cnblogs.com/kisetsu/p/9159783.html

    展开全文
  • 用精确线搜索的共轭梯度问题的极小点
  • 典型的最优化问题,用最速下降法、牛顿法、共轭梯度法求最小值。
  • 共轭方向共轭梯度

    万次阅读 多人点赞 2017-11-16 15:18:46
    共轭方向是介于最速下降和Newton之间的一种方法。克服了最速下降的锯齿...同时,共轭方向的迭代公式比较简单,不必目标函数的Hesse矩阵,比Newton减少了计算量和存储量。是一种比较实用而且有效的方法。

    共轭方向法是介于最速下降法和Newton法之间的一种方法。克服了最速下降法的锯齿现象,从而提高了收敛速度;同时,共轭方向法的迭代公式比较简单,不必求目标函数的Hesse矩阵,比Newton法减少了计算量和存储量。是一种比较实用而且有效的方法。
    在讲共轭方向法和共轭梯度法之前,先对共轭向量进行说明。

    共轭向量及其性质

    定义1:(共轭方向) Q n×n 对称正定矩阵,若 n 维向量空间中的非零向量 p0p1pm1 满足

    pTiQpj=0     ij=01m1(ij)(1)
    则称 p0p1pm1 Q 共轭向量或称向量p0p1pm1 Q 共轭的(简称共轭),称p0p1pm1的方向是 Q 共轭方向
    Q=I()时,公式(1)变为
    pTipj=0     ij=01m1(ij)(2)
    即向量 p0p1pm1 互相正交。由此可见,正交是共轭的一种特殊情况,共轭是正交的推广。
    定理1: 若非零向量 p0p1pm1 Q 共轭的,则他们是线性无关的。
    推论1: 在n维的向量空间中,非零的共轭向量个数不超过n。
    定义2:p0p1pm1 Rn 中线性无关向量, x0Rn ,那么由形式为
    z=x0+i=0m1αipi    α1α2αm1
    的向量构成的集合为由点 x0 和向量 p0p1pm1 所生成的 线性流行。记为 L[x0;p0,p1,,pm1]

    基本思想

    在考虑普通函数之前,我们首先用2元正定二次函数进行讲解。首先考虑如下的正定二次函数

    f(x)=12xTQx+bTx+c(3)
    要求的目标函数 f(x) 的最优值,根据最速下降法的思想,我们首先选定一个初始点 x0 ,然后沿着该点的最速下降方向 p0=f(x0) 做直线搜索,得到点 x1 ,由最速下降法的性质可知
    f(x1)Tp0=0(4)
    p0 与点 x1 出的等值线相切。
    在第二次迭代过程中我们不适用 f(x1) 作为这次迭代的搜索方向,我们想直在第二次迭代之后能直接到达最优点 x ,那么这次的迭代方向 p1 应该满足什么条件呢?
    首先根据迭代公式我们有
    x=x1+t1p1(5)
    其中t_1是最优步长因子,显然在未到达最优点 x 之前, t1 是不等于0的。对目标函数求梯度,有
    f(x)=Qx+b(6)
    对于极小点 x ,我们有
    f(x)=Qx+b=0=Q(x1+t1p1)+b=Qx1+b+Qt1p1=f(x1)+Qt1p1=0
    f(x1)+Qt1p1=0
    在上式两边同乘以 pT0 ,由于公式(4),并且 t10 我们可以得到
    pT0f(x1)+t1pT0Qp1=>t1p0Qp1==pT000(7)
    由公式(7)我们知道, p0 p1 Q 的共轭向量。
    现在我们假设
    p1=f(x1)+α0p0(8)
    在上式两侧同时乘以 pT0Q ,得到
    pT0Qf(x1)+α0pT0Qp0=pT0Qp1=0
    解得
    α0=pT0Qf(x1)pT0Qp0
    带入到公式(8)得到
    p1=f(x1)+pT0Qf(x1)pT0Qp0p0(9)

    综上所述,对于n元正定二次函数,我们可以从任意点出发,然后沿着这n个共轭方向最多做n次直线搜索(原因将在下一小节进行讲解),就可以求的目标函数的最优点。

    共轭方向法

    定理2: 假设:
    (1) Q n×n对称正定矩阵;
    (2)非零向量 p0,p1,,pm1 Q 共轭向量;
    (3)对二次目标函数(3)顺次进行m次直线搜索

    xi+1=1s(xipi)   i=01m1
    其中 x0Rn 是任意选定的初始点。则
    i) pTif(xm)=0   0j<m
    ii) xm 是二次函数(3)在线性流行 L[x0;p0,p1,,pm1] 上的极小点。

    (个人理解,如有错误,请指正)前面已经说过,共轭是正交的推广,对于 n 维空间,我们可以把n(不超过 n )个共轭向量作为n为空间的基,只不过这个基不再是正交的,那么共轭向量法就是对于定义在n为空间中的函数,沿着每一个基的方向做直线搜索,那么最多做 n 次搜索就能得到最优值。对于线性流行L[x0;p0,p1,,pn1],其实可以认为是经过点 x0 由基$$p_0,p_1,···,p_{m-1}]$构成的超平面。对于定理2,他所指出的就是最后一个迭代点$x_m$处的梯度与之前的搜索方向垂直。根据定理2我们可以得到如下的推论。

    推论2: 在定理2中,当 m=n 时, xn 是正定二次函数在 Rn 中的极小点。
    推论3: 在定理2中, p0,p1,,pm1 的任意线性组合 i=0m1βipi 都与 f(xm) 正交。

    对于正定二次函数(3),从任意点出发,顺次沿 n Q共轭方向做直线搜索,最多经过 n 次就可以到达极小点。
    下面是对于正定二次函数的共轭方向法的算法描述。

    已知:正定二次目标函数f(x)=12xTQx+bTx+c和终止限 ϵ
    (1)选定初始点 x0 和下降方向 p0 ;置 k=0
    (2)做直线搜索 xk+1=1s(xk,pk)
    (3)判别 ||f(xk+1)||<ϵ 是否满足:若满足,输出 xk+1 ;否则转(4)
    (4)提供共轭方向 pk+1 ,使得

    pTjQpk+1=0   j=01k

    (5)置 k=k+1 ,转(2)

    对于正定二次函数,第(2)步可以采取如下显示计算公式

    xk+1=xkpTkf(xk)pTkQpkpk
    公式推导如下。
    xk+1QXk+1+bf(xk+1)pTkf(xk+1)0tk=xk+tkpk=Qxk+tkQpk+b=f(xk)+tkQpk=pTkf(xk)+tkpTkQpk=pTkf(xk)+tkpTkQpk=pTkf(xk)pTkQpk(10)

    在第4步中,只是说要求得共轭方向,并没有说明如何求共轭方向,不同求共轭方向的方法对应了不同的共轭方向法。

    共轭梯度法

    共轭梯度法是一种共轭方向法,在求每一个迭代点的搜索方向时,与改点的梯度有关,故叫做共轭梯度法。共轭梯度法:在初始点 x0 的搜索方向 p0 为初始点 x0 的负梯度方向 f(x0) ;之后迭代点 xk 的搜索方向 pk 为该点的负梯度方向 f(xk) 与已经得到的搜索方向 pk1 的线性组合(即 pk=gk+αk1pk1 )。
    首先对正定二次函数做说明。

    用于正定二次函数的共轭梯度法

    对于目标函数为(3)的正定二次函数来说。我们规定 gk=f(xk)
    * 第一个迭代点
    我们可以任意指定一个初始点 x0 ,那么初始点处的搜索方向 p0=g0(11) ,从 x0 出发沿着 p0 方向做直线搜索

    x1=x0+t0p0
    ,可以求得(可以参照公式(10)的推导)时的推导)
    t0=pT0g0pT0Qp0=gT0g0pT0Qp0
    x1=x0+gT0g0pT0Qp0p0
    由此我们便得到了第一个迭代点。
    * 第二个迭代点
    由直线搜索的特性我们可以知道 p0g1=0 (可以想一下最速下降法中的锯齿现象),故 p0 g1 是线性无关的。根据共轭梯度法的特性我们可以得到在点 x1 处的搜索方向 p1
    p1=g1+α0p0(12)
    。再由共轭方向法的特性我们知道 p1p1 Q 共轭方向。故
    pT1Qp0=gT1Qp0+α0pT0Qp0=0
    便可以得到
    α0=gT1Qp0pT0Qp0
    由此我们便确定了迭代点 x1 处的搜索方向 p1 ,之后便是从 x1 开始沿搜索方向 p1 做直线搜索 x2=x1+t1p1 ,根据公式(10)和(12),可以得到
    t1=pT1g1pT1Qp1=gT1g1+α0p0g1pT1Qp1=gT1g1pT1Qp1
    由此我们便得到了第二个迭代点 x2
    * 第三个迭代点
    同理,我们可以得到 p1g2=0 ,可以得到点 x2 处的搜索方向为
    p2=g2+α1p1(13)
    同理, p2 p1 Q 共轭方向,故能够得到
    pt2Qp1=gT2Qp1+α1pT1Qp1=0
    便可得到
    α0=gT2Qp1pT1Qp1
    至此,我们便得到了点 x2 处的搜索方向 p2 ,然后从 x2 开始沿 p2 方向做直线搜索,与上相同便可得到 x3=x2+t2p2 ,求得
    t2=gT2g2pT2Qp2
    至此我们便得到了第三个迭代点 x3
    但是上面在求第三个迭代点时有一个小小的问题便是,以上求得 p3 的方法能保证 p2 p0 共轭吗?即 p0p1p2 Q 共轭向量(根据共轭向量定义我们知道共轭向量之间需要亮亮共轭)吗?答案是肯定的,接下来推导pT2Qp0=0,如下。
    pT2Qp0=gT2Qp0+α1pT1Qp0=gT2Qp0=gT2(g1g0)t0=gT2g1gT2g0t0
    由于 g0 g1 都可以表示成 p0 p1 的线性组合,故有 gT2g1=gT2g0=0 (因为可以把 g0 g1 看作是由 p0 p1 确定的超平面上线,由于 gT2p1=0 ,故有 gT2g1=gT2g0=0 )。
    关于为什么 Qp0=(g1g0)t0 ,可以参考公式(10)的推导过程,有 f(xk+1)=f(xk)+tkQpk ,由此得到。
    * 第 k+1 个迭代点
    与前面相似,我们可以得到
    pk=gk+αk1pk1(14)
    可以得到
    αk1=gkQpk1ptk1Qpk1
    ,我们便能得到 xk 处的搜索方向 pk ,在 xk 处沿 pk 方向做直线搜索,同理我们能得到
    tk=gTkgkptkQpk
    同理我们能够证出 p0p1pk Q 共轭向量。

    所以可以按照上述方法,依次构造出共轭向量,最多经过n次迭代就能找到最优点 x
    共轭梯度法的算法描述如下。

    已知:二次函数公式(3),终止限 ϵ
    (1)选定初始点 x0 ;计算 p0=f(x0) ;置 k=0
    (2)做直线搜索 xk+1=1s(xk,pk) ,或者采用如下公式计算

    tk=f(xk)Tf(xk)pTkQpk(15)
    xk+1=xk+tkpk(16)

    (3)判断 ||f(xk+1||<ϵ) 是否满足要求。满足则输出 xk+1 停止;否则转(4)
    (4)计算
    αk=f(xk+1)TQpkpTkQpk(17)
    pk+1=f(xk+1)+αkpk(18)

    (5)置 k=k+1 ,转(2)

    用于非二次函数的共轭梯度法

    上面所讲的迭代公式要想适用于非二次函数,就要将迭代公式(17)中的 Q 去掉,那么根据的推到我们可以得到

    Qpk=f(xk+1)f(xk)tk
    ,由此,我们能得到迭代公式

    αk=gTk+1(gk+1gk)pTk(gk+1gk)(19)
    在公式(14)两边同时乘以 gk+1 ,得
    pTkgk+1=gTkgk+1+αk1pTk1gk1(20)
    由直线搜索的性质,我们知道
    pTkgk+1=0(21)
    于是,公式(19)变为
    gTk+1gk=0(21)
    另外
    pTkgk=gTkgk+αk1pk1gk=gTkgk(22)

    * 将公式(20)(21)(22)带入到公式(19)之后,我们得到
    αk=gTk+1gk+1gTkgk=||gk+1||2||gk||2(23)
    这个公式称为 Fletcher-Reeves公式
    * 将公式(21)(22)带入到公式(19)后得到
    αk=gTk+1gk+1pTkpk(24)
    这个公式称为 Dixon-Myers公式
    * 将公式(21)(23)带入到公式(19)后得到
    αk=gTk+1(gk+1gk)gTkgk(25)
    这个公式称为 Polak-Ribiere公式
    将公式(23)(24)(25)替换公式(17)对应了不同的共轭梯度法。共轭梯度法不要求精确的直线搜索,但是不精确的直线搜索可能会造成之后迭代出来的向量不再是共轭的,这将会降低共轭梯度法的效能,解决方法就是重设初始点,即经过 n+1 次迭代后得到的 xn+1 作为初始点,开始新一轮的迭代。
    用于一般函数的Fletcher-Reeves共轭梯度法描述如下。

    已知:目标函数 f(x) 以及梯度函数 g(x) ,问题的维数 N 以及H终止准则的终止限ϵ1ϵ2ϵ3以及终止限 ϵ
    (1)选定初始点 x0 ;计算 p0=f(x0) ;置 k=0(2)线 x_{k+1}=1s(x_k,p_k) f_{k+1}=f(x_{k+1}),g_{k+1}=g(x_{k+1})$

    (2)进行直线搜索 xk+1=1s(xkpk) ,计算 fk+1=f(xk+1)gk+1=g(xk+1)
    (3)判断H终止准则是否满足。满足:输出 xk+1 ,停止;否则:转(4)
    (4)判断 k=n 是否成立,即是否已经迭代了 n+1 次。是:重置 x0=xk+1f0=fk+1g0=gk+1p0=g0k=0 ,然后转(2);不是:转(5)
    (5)按照Fletcher-Reeve公式计算

    αk=||gk+1||2||gk||2
    pk+1=gk+αkpk

    (6)判断 pTk+1gk+10 是否成立(检查 pk+1 是不是下降方向,由于实际计算中无法精确求解,可能会出现不是下降方向的情况;在精确求解中, pk+1 一定是下降法向)。做三种情况处理:i)若 pTk+1gk+1>ϵ ,这时则改取 pk+1 作为搜索方向,并置 k=k+1 ,转(2);ii)若 |pTk+1gk+1|ϵ| ,则重置 x0=xk+1f0=fk+1g0=gk+1p0=g0k=0 ,转(2);iii)若 pTk+1gk+1<ϵ ,则 pk+1 就作为搜索方向,并置 k=k+1 ,转(2)

    展开全文
  • 最优化方法中的共轭梯度
  • 共轭梯度是最优化常用的方法之一,希望对大家有用
  • 使用非线性共轭梯度求解优化问题,使用matlab编程求解,是最优化方向的基本代码
  • 应用于正定对称稀疏系数矩阵的方程求解,对特定类型方程求解进行加速
  • MATLAB实现共轭梯度

    2018-04-17 21:17:59
    MATLAB实现共轭梯度MATLAB实现共轭梯度MATLAB实现共轭梯度
  • 非线性共轭梯度,非线性共轭梯度实例,matlab源码
  • 共轭梯度

    千次阅读 2019-11-28 09:35:21
    方向是在出梯度方向的前提下,添加正则项,使得前后两次方向互为共轭所得出的方向向量。 步长是使得该次下降达到最深位置的步长 代码如下,贴出最速下降和共轭梯度的 matlab 代码,可以比较...

    共轭梯度法

    我们知道最速下降法和共轭梯度法的目的都是一致的,那就是通过变分法求解线性方程组。

    大前提是该线性方程组的系数矩阵必须是对称正定矩阵

    我们做用迭代法解线性方程组的时候只关注两件事情
    1.方向
    2.步长

    方向是在求出梯度方向的前提下,添加正则项,使得前后两次方向互为共轭所得出的方向向量。

    步长是使得该次下降达到最深位置的步长

    代码如下

    function [ X ] = conjugateGradient( A, b, X0, e )
    %conjugateGradient: conjugate gradient method
    %Input   -     A: coefficient matrix
    %        -     b: constant term
    %        -    X0: X0 is the initial value of item
    %        -     e: e is the termination condition of iteration
    %Output  -     X: the solution of equations
    X = X0;
    % r 为剩余向量
    r = b-A*X;
    % d 为下降方向
    %0 步的下降方向为负的梯度方向
    d = r;
    %更新第0步的步长
    alpha = (r.*d)/(d'*A*d);
    %完成第一次迭代
    X = X + alpha.*d;
    %以后的搜索方向都是共轭的方向
    while(norm(r)>e)
        %更新新的梯度方向
        r = b-A*X;
        %更新方向
        %更新上一次的方向在这一次方向的表达式上的系数
        beta = -(r'*A*d)/(d'*A*d);%这里的d是上一次的下降方向
        d = r + beta.*d;
        %方向上的更新完成
        %更新步长
        alpha = (r.*d)/(d'*A*d);
        X = X + alpha.*d;
    end
    
    end

    测试

    输入参数:
    X0 = [0;0;0]
    b = [1;1;1]
    e = eps
    挑一个对角占优的矩阵
    在这里插入图片描述
    结果如下:
    在这里插入图片描述

    验证一下:
    在这里插入图片描述
    测试成功!

    展开全文
  • 非线性共轭梯度,非线性共轭梯度实例,matlab源码.rar
  • 共轭方向共轭梯度方向。 我们在关注共轭时,主要关注共轭的配对规律,共轭的性质,以及取共轭可以带来什么样的数学或应用优势。 共轭复数 配对规律:在复数中,实部相等,虚部互为相反数的两个复数互为...

    目录

    1. 共轭复数

    2. 傅里叶变换的共轭对称性

    3. 共轭根式(radical conjugates)

    4. 共轭矩阵(自共轭矩阵、Hermitian(埃尔米特)矩阵)

    5. 共轭方向

    6. 共轭方向法

    7. 共轭梯度法

    8. 共轭分布(conjugacy)

    9. 共轭函数(对偶函数、极化函数)


    共轭(conjugate )的概念在数学、物理、化学、地理等学科中都有出现。 本意:两头牛背上的架子称为轭,轭使两头牛同步行走。扩展到数学等领域,共轭即为按一定的规律相配的一对或一组。

    在数学中常见的共轭有:共轭复数,共轭根式,共轭矩阵,共轭转置,共轭分布,共轭先验,共轭函数, 共轭方向,共轭方向法,共轭梯度

    法。

    我们在关注共轭时,主要关注共轭的配对规律,共轭的性质,以及取共轭可以带来什么样的数学或应用优势。


    1. 共轭复数

    配对规律:在复数中,实部相等,虚部互为相反数的两个复数互为共轭复数。

    公式描述:z=a+ib 与 \widetilde{z}=a-ib 互为复数

    共轭性质:1)加和为实数

                      2)在复平面上,共轭复数所对应的点关于实轴对称


    2. 傅里叶变换的共轭对称性

    说明:这里的共轭就是上面介绍的复数共轭,不是指傅里叶变换与傅里叶反变换是一对共轭。

    定义:


    3. 共轭根式(radical conjugates)

    配对规律:两个不等于零的根式A、B,若它们的积AB不含根式,则称A、B互为共轭根式

    共轭性质:通过相乘能把根式去掉。

    描述:对根式的模式没有要求,只要满足配对规律的就都是共轭根式。


    4. 共轭矩阵(自共轭矩阵、Hermitian(埃尔米特)矩阵)

    描述:一般共轭矩阵是一个复数矩阵,实对称阵是Hermite阵的特例。

    配对规律:矩阵中第i行第j列的元素与第j行第i列的元素互为共轭复数,的矩阵称为共轭矩阵。

    公式描述:对于一个复数矩阵 A=(a_{ij}),如果a_{ij}=\widetilde{a_{ji}},则称A为共轭矩阵。

                      若用H表示矩阵的旋转取共轭操作(称为共轭转置操作),则满足A^{H}=A的矩阵是共轭矩阵。

    性质:1)主对角线上的元素全是实数。

               2)若A 和B 是Hermite阵,那么它们的和A+B 也是Hermite阵

               3)若A 和B 是Hermite阵,如果满足AB=BA,那么AB与BA也是Hermite阵

               4)更多性质可参考《矩阵分析与应用(张贤达 第2版)》第101页。拥有很多很好的性质。


    5. 共轭方向

    组配对规律:对于一组n维的非零(列)向量\{v_1,v_2,v_3,...v_i,...v_j,...\}和一个n*n的对称正定矩阵 Q,若 v_{i}^{T}Qv_j=0,则称这组向量关于矩阵Q是互相共轭的。因为每个向量都可以表示一个方向,所以称为共轭方向。

    描述:由定义可知,在高维空间中,一个方向向量的共轭方向不是唯一的,而是一组。

    特例:Q为单位矩阵时,v_{i}^{T}v_j=0,此时这组向量是正交的。由此可见,正交是共轭的一种特殊情况,共轭是正交的推广。

    性质:1)互为共轭的一组向量,线性无关

               2)n维空间中,关于任何一个n*n的对称正定矩阵 Q 非零的共轭向量个数不超过n


    6. 共轭方向法

    描述:共轭方向法(conjugate direction method)一种沿着共轭方向寻找无约束最优化问题极小点的一类方法。

    对于一个二次型函数f(\vec{x})=\frac{1}{2}\vec{x}^TG\vec{x} + \vec{b} ^T\vec{x} + c, 其中\vec{x}\in R^n,Q是一个正定对称矩阵,

    给定关于 Q 的一组包含k(k<=n)个共轭向量的共轭向量组 \{ \vec{d^1},\vec{d^2},...,\vec{d^i},...,\vec{d^k} \} ,与一个初始搜索点\vec{x}^{(1)},可以通过k次迭代,在\vec{x}^{(1)}\{ \vec{d^1},\vec{d^2},...,\vec{d^i},...,\vec{d^k} \}张成的k维子空间中找到f(\vec{x})的极小值。每一次迭代都沿着一个新的共轭方向更新,沿该共轭方向的更新步长是一个解析解。

    以下是来自共轭方向法 的摘抄。

    其中\alpha_k是沿 \vec{d}^{(k)} 方向的更新步长。\vec{d}^{(k)}是提前已知的。具体的公式证明可参考:《最优化方法(赖炎连 贺国平 主编)》的第三章,3.3节。


    7. 共轭梯度法

    描述:共轭梯度法可以看作一类特殊的共轭方向法,不同的是,共轭方向法在使用时需要预先定义好一组共轭方向向量。共轭梯度法克服这一缺点,共轭方向向量是随着迭代过程,当场生成下一次迭代的共轭方向。以下摘抄自:共轭梯度法

    其中\beta_{k}也是解析解,具体推论与证明可参考 《最优化方法(赖炎连 贺国平 主编)》的第三章,3.3节。。


    8. 共轭分布(conjugacy)

    配对规律:如果两个分布满足同样的分布律(形式相同,参数不同),那么这两个分布互称为共轭分布。

    性质:分布的表达式相同,参数不同

    描述:共轭分布概念通常出现在贝叶斯概率理论中,如果后验概率P(θ|X)和先验概率P(θ)满足同样的分布律(形式相同,参数不同)。那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验(分布)


    9. 共轭函数(对偶函数、极化函数)

    定义:设函数 f:R^n\rightarrow R, 定义函数f^*:R^n\rightarrow R为:

                                                           f^*(y)=\sup_{x\in dom f} (y^Tx-f(x)),

    则函数f^*是函数f的共轭函数。其中dom f表示函数f的定义域。sup表示函数的上确界,即最小上界。y是共轭函数f^*的变量。

    使f^*上确界有限(即 y^Tx-f(x) 在dom f 上有上确界)的所有的y\in R^n构成共轭函数f^*的定义域。下图描述了此定义。

    特点:无论原函数f是否是凸函数,它的共轭函数f^*都是凸函数。

    性质:1)凸函数的共轭函数的共轭函数是原函数,f^{**}=f

               2)更多具体性质可参考《凸优化(王书宁 译)》第85页

    相关:可微函数的共轭函数称为函数的Legendre变换。为了区分一般情况和可微情况下所定义的共轭,一般函数的共轭有时称为Fenchel共轭


     

    参考:[1] 连续时间傅里叶变换的共轭与共轭对称性(详细推导)

               [2]【机器学习之数学】02 梯度下降法、最速下降法、牛顿法、共轭方向法、拟牛顿法

               [3]《凸优化(王书宁 译)》

               [4]《最优化方法(赖炎连 贺国平 主编)》的第三章

    展开全文
  • 利用DSC方法进行共轭梯度计算函数最优解,可运行。
  • 共轭梯度法求函数极小值,其中用进退法求步长区间,用黄金分割法求最佳步长。
  • 共轭方向

    2013-03-17 21:24:25
    共轭方向内容齐全包括例题和制作的ppt,不可多得一份好资料
  • 机械优化设计的三种方法: 鲍威尔共轭梯度、阻尼牛顿 的matlab程序。
  • FR共轭梯度的实现,可完美运行,适合数值计算及毕业设计。
  • python实现共轭梯度

    2021-01-20 06:05:02
    共轭梯度是介于最速下降与牛顿之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降收敛慢的缺点,又避免了牛顿需要存储和计算Hesse矩阵并逆的缺点,共轭梯度不仅是解决大型线性方程组最有用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,244
精华内容 4,497
关键字:

共轭求法