Loading [MathJax]/jax/element/mml/optable/GeneralPunctuation.js

Mirror Descent

我们已经知道梯度下降的每一次迭代可以看作求ˆf(x)=f(xk)+f(xk),xxk+12η的最小值,而\hat f(x)的选取其实并不是唯一的,换言之我们不一定要选取二次函数。二次函数的特殊性(例如对称性)有时并不能很好的刻画原函数f(x)的几何特性,这可能使得梯度下降算法表现得不那么优秀。假设我们选取另一个函数g(注意必须是凸函数),当然我们还是希望保证其线性部分是不变的,因此实际上我们关注的是g(x)-g(x_k)-\lang \nabla g(x_k),x-x_k\rang这一项。这一项称为Bregman divergence(布雷格曼散度),记为D_g(x,x_k),表示一个函数与自己线性近似的误差。我们的新算法要求f(x_k)+\lang \nabla f(x_k),x-x_k\rang+\dfrac{1}{\eta}D_g(x,x_k)的最小值,也就是等价地要求\lang \nabla f(x_k),x\rang+\dfrac{1}{n}D_g(x,x_k)的最小值。注意到\nabla^2_x D_g(x,y)=\nabla^2 _x g(x),既然g是凸函数,因此D_g(x,y)关于x也是凸函数。而\lang \nabla f(x_k),x\rang是仿射项,因此\lang \nabla f(x_k),x\rang+\dfrac{1}{n}D_g(x,x_k)整个函数是凸函数,其最小值点x_{k+1}应当满足梯度为0,因此\nabla f(x_k)+\dfrac{1}{\eta}\nabla_x D_g( x_{k+1},x_k)=0,其中根据定义\nabla _x D_g(x,x_k)=\nabla g(x)-\nabla g(x_k),化简得到\nabla g(x_{k+1})=\nabla g(x_k)-\eta \nabla f(x_k)​。这就是我们做梯度下降的新方法。

如果选定g\nabla g(x_k)是容易求出的,但得到了右边的结果\nabla g(x_{k+1})以后,怎么反过来求出x_{k+1}呢?这意味着我们要能够求出梯度的逆映射(\R^n\to \R^n)。这要用一个称为Convex conjugate(凸共轭)的方法。我们对于凸函数f定义它的共轭函数f^*(v)=\max\limits_{y} \{\lang v,y\rang-f(y)\},下面我们证明(\nabla f)^{-1}(v)=\nabla f^*(v)始终成立:注意到\lang v,y\rang关于v是仿射的,f是凸的,而对凸函数逐点求最大值依然是凸函数,因此f^*是凸函数。如果v\nabla f(x),那么由凸函数的一阶条件有f(y)\geq f(x)+\lang v,y-x\rang,整理得到\lang v,y\rang-f(y)\leq \lang v,x\rang-f(x),也即f^*(v)=\max\limits_{y} \{\lang v,y\rang-f(y)\}\leq \lang v,x\rang-f(x),而当且仅当y=x时取到等号,因此有f(x)+f^*(v) = \lang v,x\rang对任意x成立。而根据共轭函数的定义,对于任何的v都有f^*(v)\geq \lang v,x\rang-f(x),而当v\neq \nabla f(x)时等号不成立。因此f(x)+f^*(v) = \lang v,x\rang这个等式成立当且仅当v=\nabla f(x)。现在我们发现f^{**}=f始终成立,任何一个函数共轭两次就会回到本身,因为f^{**}(x)=\max\limits_{v}\{\lang v,x\rang-f^*(v)\}=\max\limits_{v}\{\lang v,x\rang+\min\limits_{v'}\{-\lang v',v\rang+f(v')\}\}\leq\max\limits_{v}\{\lang v,x\rang-\lang x,v\rang+f(x)\}=f(x)f^{**}(x)=\max\limits_{v}\{\lang v,x\rang-f^*(v)\}\geq\lang \nabla f(x),x\rang-f^*(\nabla f(x))=f(x),因此f^{**}(x)=f(x)。那么依然取v=\nabla f(x),那么f(x)+f^*(v) = \lang v,x\rang可以写作f^{**}(x)+f^*(v) = \lang v,x\rang,把这看作上式关于f^*的结论写作f^*(v)+f^{**}(x)=\lang v,x\rang,根据取等条件必须是梯度得到x=\nabla f^*(v),也即(\nabla f^{-1})(v)=\nabla f^*(v)

我们把以上这个方法称为镜像下降法(Mirror Descent)。“镜像”其实是从高观点来看上面的算法:我们发现,梯度下降并不是一个仿射不变的算法,这本质上是由于x_{k+1}=x_k-\eta \nabla f(x_k)本身就不是一个“合理”的表达式——梯度并不完全是一个“向量”,因为梯度是微分,而微分是线性映射。只不过在有限维欧氏空间中我们可以用矩阵来表示线性映射,但这种表示是非常依赖于坐标选取的。一个线性空间\R^n中所有的线性映射(泛函)\R^n\to \R构成了对偶空间,梯度本质上是对偶空间中的向量。通过上面“镜像下降”的方法,我们实际上把x_{k+1}=x_k-\eta \nabla f(x_k)换作了\nabla g(x_{k+1})=\nabla g(x_k)-\eta \nabla f(x_k),这样的递推式就显得合理了,因为一切都是在对偶空间这一“镜像”中完成了。我们要做的就是通过\nabla g这一从原空间到对偶空间的映射把x_k投影到镜像,在对偶空间中做一步下降,然后再用逆映射还原到原空间。

如何选取凸函数g呢?我们希望D_g是容易求最小值的,并且能比较好地反应f的几何性质。如果g是严格凸的,那么根据凸函数的一阶条件D_g(x,y)>0当且仅当x \neq y,同时D_g(x,x)=0。可见Bregman divergence很像是在描述一种“距离平方”。而恰恰,我们现在正是要用它来代替原来的\dfrac{1}{2\eta}\|x-x_k\|^2这一项。我们有Bregman divergence意义下的余弦定理D_g(x,y)+D_g(x,z)=D_g(x,z)+\lang \nabla g(z)-\nabla g(y),x-y\rang。利用距离平方和可以描述钝角,在Bregman divergence意义下就是D_g(y,x_0)\geq D_g(y,x^*)+D_g(x^*,x_0)。这个结论附加上一个凸函数也依然是正确的,因此L(y)+D_g(y,x_0)\geq L(x^*)+D_g(y,x^*)+D_g(x^*,x_0)。结合f(y)>f(x_k)+\lang \nabla f(x_k),y-x_k\rang得到f(y)-f(x_k)\geq\dfrac{1}{\eta}(D_g(y,x_{k+1})-D_g(x_k,x_{k+1})-D_g(y,x_k))。分析可得,如果fD_g意义下L-Lipschitz的, 那么如果迭代T轮则可以取\eta=\dfrac{2}{L}\sqrt{\dfrac{R}{T}},那么有f(x_k)\leq f(x^*)+L\sqrt{\dfrac{R}{T}};如果fL-smooth且g\sigma-强凸的(两者的范数必须是同一个,但形式可以自选,这是Mirror Descent优势),那么假设D_g有上界R,那么取\eta=\dfrac{\sigma}{L}运行T轮有f(x_k)\leq f(x^*)+\dfrac{LR}{\sigma T}

posted @   行而上  阅读(283)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示