无约束问题的最小化

无约束问题的最小化

最近在看"Machine Learning A Probability Perspective"的逻辑回归,因为算法比较多,一起看书的伙伴们就决定把"Convex Optimization"讲优化算法的内容看一下。

在阅读以下内容之前,要记住问题的出发点,即给定无约束的凸问题该用什么方法求得最优解(这里假设问题是求最小值)?各种方法之间有什么性质。

也许最先想到的方法就是对变量求梯度,让它等于0的变量值就是最优解。没错,这样的方法很简单,但是当求导过程过于复杂的时候该怎么办呢?也许你还知道梯度下降,牛顿法等等。如果你对这些方法没又听说过,或者还想知道更多,那接着阅读下去吧,当然最好还是建议你看一下原书。

强凸及其性质

函数强凸是说在凸集S中,对于xS均有下式成立:

2f(x)mI

其中m>0,将上式带入到函数的泰勒展开式

f(y)=f(x)+f(x)T(yx)+12(yx)T2f(z)(yx)

得到

(1)f(y)f(x)+f(x)T(yx)+m2yx22

当固定x时,等式右边为y的二次项。为了求与y无关仅与x有关的f(y)下界,在等式右边对y求梯度,得到:

yx=1mf(x)

带入得到

(2)f(y)f(x)12mf(x)22

因为(2)对所有的y均成立,令y=x,可以得到

f(x)f(x)12mf(x)22

因此可以得知当x的梯度范数越小时,其与靠近最优点x(2)式子同样可以得到f(x)的下界

f(x)222m(f(x)p)

可以看到,当某一点的梯度较小时,作为其下界2m(f(x)p)也应该很小,因此x越接近最优点,而这与最优点梯度为0的常识相符合。因此也可以用f(x)22ϵ当作收敛条件。

x带入到(1)中,再利用柯西施瓦茨不等式

|f(x)T(xx)|f(x)2xx

带入可得

f(x)f(x)f(x)2xx2+m2xx22

因为f(x)>f(x),故f(x)2xx2+m2xx220,整理得到

xx22mf(x)2

即通过f(x)2可以得到xx的差距上界。

一般而言S被当做是下子集(sublevel sets),是有界的,故存在M>0使得xS满足

2f(x)MI

使用相同的方法,可以得到:

(3)f(y)f(x)+f(x)T(yx)+M2yx22pf(x)12Mf(x)22

定义κ=MmS的condition number,condition number会在之后的收敛性分析中扮演重要的角色。2f(x)是实对称矩阵,可以看出conditionnumber可以看作2f(x)xS中最大特征值和最小特征值的比值。

根据泰勒展开αf(y)f(x)+12(yx)T2f(z)(yx),可以看出y大约在一个以x为中心的椭圆内。我们可以以2f(z)的特征值描述下子集S的形状。下子集最长半轴rmax=1/λmin(2f(z)),最短半轴rmin=1/λmax(2f(z))。根据cond的定义,可见其为rmax2/rmin2。于是可以集合解释为,设凸集合C的沿某一方向上的宽度为

W(C,q)=supzCqTzinfzCqTz

集合C在不同方向上的最大和最小宽度如下:

Wmin=inf|q|2=1W(C,q)Wmax=sup|q|2=1W(C,q)

conditionnumberWmax2/Wmin2,从而可以看出conditionnumber越小说明集合C越圆,反之则其各项异性比较大。

对于α-sublevel子集Cα={y|f(y)α},根据(2)(3)式可得

p+M2xy22f(y)p+m2xy22

再利用αf(y),则αp+m2xy22。当y趋近于x时,p+M2xy22趋近于p,此时αp+M2xy22可以求得部分y的范围。上述两个不等式可以得到:

Binner={y|yx222M(αp)}Bouter={y|yx222m(αp)}

可见α下子集在BinnerBouter之间,则根据几何解释cond(Cα)Mm。这样,conditionnumber和下子集的形状联系了起来。

α趋近于x时,根据泰勒展开,其梯度可以认为是0,得到下子集Cα

Cα={y|(yx)T2f(x)(yx)2(αp)}

可以看到此时的下子集Cα接近为2f(x)的椭球,此时的cond(Cα)=κ2f(x)

下降方法(Descent methods)求解框架

下降方法是一种迭代算法,给定上一部的xk1其通过寻找新的xk来使得f(xk)<f(xk1)xtxk1的一般关系为xk=xk1+tk1Δxk1。可见下降方法的主要内容为寻找Δxk1tk1,以保证f(xk)<f(xk1)

对于凸集合S和凸函数f,当yinSf(xk1)(yxk1)0时,则f(y)f(xk),故要寻找的Δxk1必然与f(xk1)成负角度。

Descent methods的一般流程如下:

  1. 给定初始点x
  2. 重复下列过程
  • 决定搜索方向Δx
  • 决定步长t (Line search)
  • x进行更新
  1. 检查是否收敛,如果收敛则停止迭代

有两个Line Search方法,一个是exact line search另外一个是不精确的backtracting line search。

  • exact line search 即是说,在给定搜索方向Δx后,选择使得f(xk1)+tΔxt1最小的步长t,在上式求解较为简单时该方法可以应用。

  • backtracking line search 相对于exact line search来说应用更为普遍。其算法流程如下

    • 选择0<α<0.5, 0<β<1,以及搜索方向Δx(对于α为什么要小于0.5请看下一节)
    • f(x+tΔx)>f(x)+αtf(x)TΔx时,令t:=βt

    t足够小的时候,f(x+tΔx)f(x)+tf(x)TΔx<f(x)+αtf(x)TΔx,因此上述的过程肯定是收敛的。

    书中关于t和的解释

    上图是书中关于αt的解释:在确定f(x)TΔx后,f(x)+tf(x)TΔx即为关于t的函数,αf(x)TΔx即为斜率,α越小,则直线越平缓。在确定αβ后,从图中可以看出在t0点,f(x)+tf(x)TΔxf(x+tΔx)相交,因此可能的t取值为1或者(βt0,t0],从而tmin{1,βt0}

梯度下降方法

对于下降方法中的搜索方向Δx,一个自然的选择为负梯度方向,即f(x)(将f(x+tΔx)一次展开得到f(x)+tf(x)TΔxΔxf(x)时可以保证f(x+tΔx)f(x))。下面对梯度下降法的收敛速度进行分析。

  • exact line search搜索的收敛速度

    Δx=f(x)带入到(3)式子中,得到

    f(xtf(x))f(x)tf(x)22+M2t2f(x)22

    通过对t求最小值,得到

    f(xtf(x))f(x)12Mf(x)22

    通过(2)式可以得到,f(x)222m(f(x)p),在上式的两边同时减去p得到

    f(xtf(x))p(1mM)(f(x)p)

    通过上式可以看到其为线性收敛,当mM越接近1时,收敛速度越快。而通过cond的几何解释,mMα下子集的形状有关,如果其各方向上差异性较小则越接近1,这也是为什么在优化前先对数据进行归一化处理的原因。

  • backtracting line search

    首先对上一节中α的取值进行说明。在0t1M时,下式成立

    t+M2t212t

    Δx=f(x)带入得到

    f(xtf(x))f(x)tf(x)22+M2f(x)22f(x)t2f(x)22f(x)αtf(x)22

    因此搜索步长t取值为1或tβM。采取跟exact line search一样的分析步骤,在上式两边同时减去p得到

    f(xtf(x))pf(x)pmin{α,αβM}f(x)22(1min{2mα,2mαβM})(f(x)p)

  • 例子

    下面结合书上的一个例子应用exact line search来进行阐述,设一个二次的目标函数为

    f(x)=12(x12+γx22)

    式中γ>0,定义域为R2,目标函数f的Hessian矩阵为常量,其Hessian矩阵的特征根为1γ,因此condition number为max{1,γ}min{1γ}=max{γ,1γ}

    ,选定初始点x0=(γ,1),其负梯度方向为(γγ),通过计算可以得到下降幅度t=2(1+γ),得到x1=(γγ1γ+1,γ1γ+1,通过归纳可以得到xk=(γ(γ1γ+1)k,(γ1γ+1)k,从而

    f(xk)=γ(γ+1)2(γ1γ+1)2k=(γ1γ+1)2kf(x0)

Steepest descent method

不同于[gradient descent](# 梯度下降方法)中使用负梯度作为下降方向,Steepest descent中使用Δx=minvf(x)Tv作为下降方向。定义normolized steepest descent direction Δxnsd=argmin{f(x)Tv|v=1},通过对Δxnsd进行变换并记住对偶范数的定义z=supv{zTv|v1}得到Δxsd=Δxnsdf(x),从而f(x)TΔxsd=f(x)TΔxnsdf(x)=f(x)2

当使用二范数时,Steepest descent的方向为负梯度方向,与gradient descent的方向一致。

  • Steepest descent for quadratic norm

    quadratic norm定义为zP=zTPz,其中PS++n,通过解下述不等式

    minvf(x)Tvs.tvTPv1

    得到

    Δxnsd=(f(x)TP1f(x))12P1f(x)Δxsd=P1f(x)

    根据Δxnsd的定义,可以看出其几何意义如下,图中阴影的椭圆表示vTPv1

    对

    除了上述的集合解释外,还可以通过坐标变换得到Δxnsd

    x¯=P12xf¯(x¯)=f(P12x¯)

    通过这样的变换就将quadratic norm 变换成了二范数了。zTPz=z¯22。此时Δx¯sd=f(x¯)=P12f(x)Δxsd=P12Δx¯sd=P1f(x)

    根据上述变换f¯(x)=f(P12x¯),对x¯进行求Hessian矩阵,得到P122f(x)P12,当P=2f(x)时,变换后的函数有更好的condition number。也就是说,如果{x|xTPx1}如果与sublevel set形状相似的话,descent method在变换后的变量下会取得很好的效果。

  • Steepest descent for l1 norm

    l1 norm下,Δxnsd=min{f(x)Tv|v11},可以得到Δxnsd=(0,,sign(f(x)xi)ei,,0),其中i为其绝对值最大的分量。这样,每次下降的方向只涉及一个分量,该算法有时被称为coordinate descent algorithm。

    可以根据下图对Steepest descent在l1 norm的情况下进行理解

     norm explanation

  • Converge Analysis

    由于任何范数都可以被二范数定界,故假设γ,γ¯(0,1],使得

    xγx2xγx2

    同样根据强凸,得到

    f(x+tΔxsd)f(x)+tf(x)TΔxsd+M2t2Δxsd22f(x)tf(x)2+M2γ2t2f(x)2

    t=γ2M时右式取得最小值,带入得到

    f(x+tΔx)f(x)γ22Mf(x)2

    发现t=γ2M时满足backtracking line search的条件。因此采用backtracking line search的时候,步长t=min{1,βγ2M},因此

    f(x+tΔxsd)f(x)αγ¯2min{1,βγ2M}f(x)22f(x)2mαγ¯2min{1,βγ2M}(f(xp))

    由此可见收敛性。

Newton's method

  • Newton's step

    定义Δxnt=2f(x)1f(x)为newton's step,正定的Hessian矩阵意味着f(x)Δxst0,因此f(x+tΔxsd)f(x)

    对函数f的二阶泰勒展开求最小值,可以发现v=Δxnt时取得。

    minvf(x)+f(x)Tv+12vT2f(x)v

    可以理解为在xf进行二次逼近时,逼近函数在x+Δxst点取到最小值。

    根据[Steepest descent](# Steepest descent method),如果quadratic norm中的P=2f(x),可以得到Δxnt=Δxnsd

    对函数f得到函数进行一阶泰勒展开

    f(x+v)f(x)+2f(x)v

    根据极值条件,在最优点其导函数值为0,此时v=Δxst

    牛顿方法可以理解为对一阶近似的导函数求极值,得到极值点,并在该点再次进行上述过程。

    Newton's step具有仿射不变性,对原变量x左乘非奇异阵T进行变换,令y=Tx,f¯(x)=f(Tx),在f¯(x)中Newton's step为

    Δx¯=T12f(y)1f(y)=T1Δx

    经过变换的函数f¯x的Newton's step为fy点的newton's step再左乘T1

    定义λ(x)=(f(x)T2f(x)1f(x))12为newton decrement。

    可以看到λ(x)2为newton step在2f(x)的quadratic norm,再结合Steepest descent中的Δxnsdλ(x)与其Δxnsd中的单位化部分相一致。

  • Newton's method

    Newton's method 有damped和pure之分,其区别为步长的不同,pure newton method的步长t固定为1,而damped newton method的步长$t为利用Line search确定,其算法流程如下:

    • 确定初始点x(0)和收敛条件ϵ
    • 计算λ(x)并与ϵ进行比较,如果未满足收敛条件则仅需进行
    • 计算Δxst,并根据backtracking line search or exact line search 计算步长t
    • x进行更新,x(new)=x(old)+tΔxst

    Newton's method的收敛性分析比较繁琐,这里不再进行分析。后续会补上quasi-Newton methods。

posted @   Neo_DH  阅读(1037)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示