Mirror Descent

我們已經知道梯度下降的每一次迭代可以看作求\(\hat f(x)=f(x_k)+\lang \nabla f(x_k),x-x_k\rang+\dfrac{1}{2\eta}\|x-x_k\|^2\)的最小值,而\(\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))\)。分析可得,如果\(f\)\(D_g\)意義下\(L\)-Lipschitz的, 那麼如果迭代\(T\)輪則可以取\(\eta=\dfrac{2}{L}\sqrt{\dfrac{R}{T}}\),那麼有\(f(x_k)\leq f(x^*)+L\sqrt{\dfrac{R}{T}}\);如果\(f\)\(L\)-smooth且\(g\)\(\sigma\)-強凸的(兩者的範數必須是同一個,但形式可以自選,這是Mirror Descent優勢),那麼假設\(D_g\)有上界\(R\),那麼取\(\eta=\dfrac{\sigma}{L}\)運行\(T\)輪有\(f(x_k)\leq f(x^*)+\dfrac{LR}{\sigma T}\)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章