• Mirror Descent


    文章整理了Mirror Descent相关的概念、基本定理,主要参考资料为[1]

    Mirror Descent

    Mirror Descent可以看做Proximal的推广,其迭代流程如下

    [egin{align*} x^{t+1} &= argmin_{xin mathcal{C}}{f(x^t)+langle abla f(x^{t}), x-x^t angle+frac 1 eta_t D_varphi(x, x^{t})}\ &=argmin_{xin mathcal{C}}{langleold{g}, x-x^t angle+frac 1 eta_t D_varphi(x, x^{t})} end{align*} ]

    如果( abla f(x^t))不存在的话可以用次梯度(partial f(x^{t})=old{g}),如果对于proximal gradient descent不熟悉,可以查看部分[6](也可以看一下我之前的博文优化整理)。

    式子中(D_varphi(x,x^t))表示的是一种距离度量,称为Bregman divergence。相对于Proximal中的近端算子,Mirror Descent中也会用到投影的方法,Bregman Projection。我们希望我们选择的距离度量具有以下三个特点

    • 拟合(f)函数的局部曲率
    • 在几何上与约束集合(mathcal{C})想匹配
    • Bregman projection操作尽量简单

    Bregman Divergence

    要先说清楚Mirror Descent就先得说清楚bregman divergenceBregman divergence是一种广义的距离度量,定义如下

    对于一个在定义域(mathcal{C})上强凸且可微的函数(varphi),定义Bregman divergence如下

    [D_{varphi}(x,y)=varphi(x)-varphi(y)- ablavarphi(y)^T(x-y) ]

    Bregman divergence的详细含义和图示化的理解可以参看[2],简单来说,其表示的是(x)(f)函数上在其(y)切线上插值,如图中蓝色的线段

    sKDtXR.png

    关于为什么说Bregman divergence是一种广义的度量以及详细的例子,可以参看[5]

    sKymXd.png

    Bregman divergence有如下几条简单的性质

    • (D_varphi(x,y)geq 0),根据(varphi)的强凸性
    • (D_varphi(x,y))对于(x)来说也是凸函数
    • (D_varphi(x,y) eq D_varphi(y,x))
    • (D_{varphi_1+lambdavarphi_2}(x,y)=D_{varphi_1}(x,y)+lambda D_{varphi_2}(x,y))
    • ( abla_xD_varphi(x,y)= ablavarphi(x)- ablavarphi(y))
    • 如果(varphi)(lambda)-strongly convex,那么(D_{varphi}(x, y)geq frac{lambda}{2}Vert x-yVert^2)

    Three-point lemma

    对于(x,y,zin mathcal C),有下式成立

    [D_varphi(x,z)=D_varphi(x,y)+D_varphi(y,z)-langle abla varphi(z)- ablavarphi(y), x-y angle ]

    这个定理证明将Bregman Divergence展开就可以得到,详细过程[1]

    sKy7ge.png

    Bregman Projection

    Bregman Projection的定义如下

    给定点(x),其在约束集合(mathcal{C})上的Bregman projection为

    [mathcal{P}_{mathcal{C},varphi}(x)=argmin_{zinmathcal{C}}D_varphi(z,x) ]

    Generalized Pythagorean Theorem

    (x_{mathcal{C},varphi}=mathcal{P}_{mathcal{C},varphi}(x)),则

    [D_varphi(z,x)geq D_varphi(z,x_{mathcal{C},varphi})+D_varphi(x_{mathcal{C},varphi},x) ]

    上面的定理说的就是在bregman divergence上定义的勾股定理,证明需要用到(x_{mathcal{C},varphi})的性质,即

    [egin{align*} & 0 in abla D_{varphi}(z,x)vert_{z=x_{mathcal{C},varphi}}\ & = ablavarphi(x)- abla varphi(x_{mathcal{C},varphi})=old{g} end{align*} ]

    再利用凸函数的性质,可以得到

    [langle old{g}, z-x_{mathcal{C}, varphi} anglegeq 0 ]

    再利用上面的Three-point lemma,即可得到上面的广义勾股定理,详细证明过程可以参看[1]

    Alternative form of Mirror Descent

    回到最开始的mirror descent更新公式,

    [egin{align*} x^{t+1} &= argmin_{xin mathcal{C}}{f(x^t)+langle abla f(x^{t}), x-x^t angle+frac 1 eta_t D_varphi(x, x^{t})}\ &=argmin_{xin mathcal{C}}{langleold{g}, x-x^t angle+frac 1 eta_t D_varphi(x, x^{t})} end{align*} ]

    现在我们(langle mathbf g^t, x-x^t angle+frac{1}{eta_t}D_{varphi}(x,x^t)=0),可以得到:

    [ abla varphi(y^{t+1})= ablavarphi(x^t)-eta_t old{g}^t ]

    因为这是我们没用在约束集(mathcal C)上进行投影,就先用(y^{t+1})来表示未投影的(x^{t+1})(y^{t+1})可以看作为未进行bregman projection之前的解,那么

    [x^{t+1}in mathcal{P}_{mathcal{C},varphi}(y^{t+1})=argmin_{zinmathcal{C}}D_varphi(z, y^{t+1}) ]

    第一个式子可以通过,假设我们没有假设(mathcal{C})的假设,求原始问题的极小值,令其导数为(old{0})得到。第二个式子是我们实际上是由约束的,所以我们要进行一步bregman projection。

    上述方法求解原始问题的证明如下(( extit{5.3a那一行少了一个} abla)):

    sKxS0A.png

    进一步的,如果(mathcal{C}=R^n),可以都得到

    [egin{align*} x^{t+1}&= abla varphi^*( ablavarphi(x^{t})-eta old{g}^t)\ &=( abla varphi)^{-1}( ablavarphi(x^{t})-eta old{g}^t)\ end{align*} ]

    ( abla^*varphi=( abla varphi)^{-1})(varphi^*)表示共轭。

    证明需要一些次梯度的理论,可以参看[3]的前几页内容。

    详细证明过程推荐看原资料[1](x^{t+1}=( abla varphi)^{-1}( ablavarphi(x^{t})-eta old{g}^t))只需要对(argmin_{zinmathcal{C}}D_varphi(z, y^{t+1}))(z)求导即可。

    Convergence Analysis

    凸且连续的问题

    对于(f)是凸且Lipschitz连续的函数,次梯度对偶范数满足(Vert gVert_*leq L_f),如果(varphi)对于特定的范数空间是( ho)强凸函数,则有

    [f^{ ext{best},t}-f^{ ext{opt}}leqfrac{sup_{xinmathcal{C}}D_varphi(x,x^0)+frac{L_f^2sum_{k=0}^teta_k^2}{2 ho}}{sum_{k=0}^teta_k} ]

    如果(eta_t=frac{sqrt{2 ho R}}{L_f}frac{1}{sqrt{t}}),其中(R:=sup_{xinmathcal{C}}D_varphi(x, x^0)),则

    [f^{ ext{best},t}-f^{ ext{opt}}leq O(frac{L_fsqrt{R}}{sqrt{ ho}}frac{log t}{sqrt{t}}) ]

    在上面的式子中,除去(f)本身的(L_f)( ho)以外,它的upper bound只跟如何选择(varphi),即度量(D_varphi)有关。在[1]中,也拿一个distribution的simplex例子对比了bregman divergence作为欧氏距离和KL divergence时收敛上届的差别。

    在看收敛速度,虽然这里写的是(frac{log t}{sqrt t})但是如果假定(eta_t)是恒定恒定的话,结果应该是(mathcal{O}(frac{1}{sqrt{t}}))的收敛速度

    要证明上面的收敛性,需要先证明下面式子

    [eta_t(f(x^t)-f^{ ext{opt}})leq D_varphi(x^*, x^t)-D_varphi(x^*,x^{t+1})+frac{eta_t^2L_f^2}{2 ho} ]

    [egin{align*} f(x^t)-f(x^*) & leq langleold{g},x^t-x^* angle\ &=frac 1eta_tlangle ablavarphi(x^t)- ablavarphi(y^{t+1}), x^t-x^* angle\ &= frac 1eta_tlangle ablavarphi(y^{t+1}) - ablavarphi(x^t), x^*-x^t angle\ &=frac 1eta_t(-D_varphi(x^*, y^{t+1})+D_varphi(x^*,x^{t})+D_varphi(x^t,y^{t+1}))\ &leqfrac 1eta_t(D_varphi(x^*,x^{t})+D_varphi(x^t,y^{t+1})-D_varphi(x^*,x^{t+1})-D_varphi(x^{t+1},y^{t+1}))\ &=frac 1eta_t(D_varphi(x^*,x^{t})-D_varphi(x^*,x^{t+1}))+frac 1eta_t(D_varphi(x^t,y^{t+1})-D_varphi(x^{t+1},y^{t+1}))\ end{align*} ]

    现在只需要证明(D_varphi(x^t,y^{t+1})-D_varphi(x^{t+1},y^{t+1})leqfrac{eta_t^2L_f^2}{2 ho})即可

    [egin{align*} &quad D_varphi(x^t,y^{t+1})-D_varphi(x^{t+1},y^{t+1})\ &=varphi(x^t)-varphi(y^{t+1})-langle ablavarphi(y^{t+1}), x^t-y^{t+1} angle-varphi(x^{t+1})+varphi(y^{t+1})+langle ablavarphi(y^{t+1}), x^{t+1}-y^{t+1} angle\ &=varphi(x^t)-varphi(x^{t+1})-langle ablavarphi(y^{t+1}), x^t-x^{t+1} angle\ &leq langle ablavarphi(x^t), x^t-x^{t+1} angle-frac{ ho}{2}Vert x^t-x^{t+1}Vert^2-langle ablavarphi(y^{t+1}), x^t-x^{t+1} angle\ &=eta_tlangle old g^t, x^t-x^{t+1} angle-frac{ ho}{2}Vert x^t-x^{t+1}Vert^2\ &leq eta_tL_fVert x^t-x^{t+1}Vert-frac{ ho}{2}Vert x^t-x^{t+1}Vert^2\ &leqfrac{eta_t^2L_f^2}{2 ho} end{align*} ]

    现在我们有(D_varphi(x^*, x^{t}))(D_varphi(x^*,x^{t+1}))的递推关系,只需要累加起来就可以得到最开始的证明了。

    除了上述的证明外,还可以参考一下[7],在阅读之前请先阅读Fenchel dual内容

    这里,将( heta^t= abla varphi(x^t))表示对偶空间的向量,那么

    [egin{align*} D_{varphi^*}( heta^{t+1}, heta^*)&=D_{varphi^*}( heta^{t+1}, heta^t)+D_{varphi^*}( heta^t, heta^*)+langle ablavarphi^*( heta^t)- ablavarphi^*( heta^*), heta^{t+1}- heta^t angle\ &=D_{varphi^*}( heta^{t+1}, heta^t)+D_{varphi^*}( heta^t, heta^*)-langle x^t-x^*, eta_t {mathbf g}^t angle\ & leq =D_{varphi^*}( heta^{t+1}, heta^t)+D_{varphi^*}( heta^t, heta^*)+eta_t(f(x^*)-f(x^t)) end{align*} ]

    Gradient Descent & Fenchel dual

    要讲清楚Gradient Descent和Mirror Descent区别到底在哪里,首先要讲一讲Fenchel dual。

    首先(f)的共轭函数(即Fenchel dual),(f^*)定义如下

    [f^{*}(y) = sup_{x}{y^Tx-f(x)} ]

    接下来我们讲一讲这个共轭函数的性质

    • (f^{**}=f), 当(f)是凸且闭的函数
    • (langle y, x angleleq f^{*}(y)+f(x))
    • (f)是convex and closed,(xin partial f^{*}(y) Leftrightarrow yin partial f(x)Leftrightarrow langle x,y angle=f(x)+f^*(y))

    我们可以看到,(f(x))的导数(次梯度)是其对偶空间的一个向量,在进行梯度下降时,我们实际上是将两个空间的向量进行运算[8]。这里强烈建议阅读一下原文,在P7。因此实际上,Mirror Descent做的就是将在对偶空间的梯度再次通过( abla f^{*})这样的操作,映射会原本的参数空间。

    参考资料

    1. Priceton ELE522
    1. Meet the Bregman Divergences
    1. MIT 253
    1. Mirror descent: 统一框架下的first order methods
    1. 覃含章: 如何理解Bregman divergence
    1. Xinyu Chen: 近端梯度下降法
    1. EE364b, Convex optimizatio, stanford
    1. CPSC 531H, Machine learning theory, ubc
  • 相关阅读:
    Linux Shell的18条常用命令整理
    git branch 命令查看分支、删除远程分支、本地分支
    比Xshel更好用的 FinalShell
    Centos7的目录结构
    准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
    代码托管仓库之码云
    包管理工具之Pipenv
    Python的垃圾回收机制
    Django之Models操作
    Python操作数据库实战
  • 原文地址:https://www.cnblogs.com/DemonHunter/p/14253998.html
Copyright © 2020-2023  润新知