凸優化學習筆記 15:梯度方法

前面的章節基本上講完了凸優化相關的理論部分,在對偶原理以及 KKT 條件那裏我們已經體會到了理論之美!接下來我們就要進入求解算法的部分,這也是需要濃墨重彩的一部分,畢竟我們學習凸優化就是爲了解決實際當中的優化問題。我們今天首先要接觸的就是大名鼎鼎的梯度方法。現在人工智能和人工神經網絡很火,經常可以聽到反向傳播,這實際上就是梯度下降方法的應用,他的思想其實很簡單,就是沿着函數梯度的反方向走就會使函數值不斷減小。
xk+1=xktkf(xk),k=0,1,... x_{k+1}=x_{k}-t_k \nabla f(x_k),\quad k=0,1,...
上面的式子看起來簡單,但是真正應用時你會發現有各種問題:

  1. 下降方向怎麼選?f(xk)\nabla f(x_k) 嗎?選擇其他方向會不會好一點呢?
  2. 如果 f(x)f(x) (在某些點)不可導又怎麼辦呢?
  3. 步長 tkt_k 怎麼選呢?固定值?變化值?選多大比較好?
  4. 收斂速度怎麼樣呢?我怎麼才能知道是否達到精度要求呢?

1. 凸函數

前面講凸函數的時候我們提到了很多等價定義:Jensen’s 不等式、“降維打擊”、一階條件、二階條件。這裏我們主要關注其中兩個:

  1. Jensen’s 不等式:f(θx+(1θ)y)θf(x)+(1θ)f(y)f(\theta x+(1-\theta) y) \leq \theta f(x)+(1-\theta) f(y)
  2. 一階條件等價於梯度單調性(f(x)f(y))T(xy)0 for all x,ydomf(\nabla f(x)-\nabla f(y))^{T}(x-y) \geq 0 \quad \text { for all } x, y \in \operatorname{dom} f

也就是說凸函數的梯度 f:RnRn\nabla f: R^n\to R^n 是一個單調映射

2. Lipschitz continuity

函數 ff 的梯度滿足**利普希茨連續(Lipschitz continuous)**的定義爲
f(x)f(y)Lxy for all x,ydomf \|\nabla f(x)-\nabla f(y)\|_{*} \leq L\|x-y\| \quad \text { for all } x, y \in \operatorname{dom} f
也被稱爲 L-smooth。有了這個條件,我們可以推出很多個等價性質,這裏省略了證明過程
在這裏插入圖片描述

也就是說下面的式子都是等價的
f(x)f(y)Lxy for all x,ydomf \|\nabla f(x)-\nabla f(y)\|_{*} \leq L\|x-y\| \quad \text { for all } x, y \in \operatorname{dom} f

(f(x)f(y))T(xy)Lxy2 for all x,ydomf (\nabla f(x)-\nabla f(y))^{T}(x-y) \leq L\|x-y\|^{2} \quad \text { for all } x, y \in \operatorname{dom} f

f(y)f(x)+f(x)T(yx)+L2yx2 for all x,ydomf f(y) \leq f(x)+\nabla f(x)^{T}(y-x)+\frac{L}{2}\|y-x\|^{2} \quad \text { for all } x, y \in \operatorname{dom} f

(f(x)f(y))T(xy)1Lf(x)f(y)2 for all x,y (\nabla f(x)-\nabla f(y))^{T}(x-y) \geq \frac{1}{L}\|\nabla f(x)-\nabla f(y)\|_{*}^{2} \quad \text { for all } x, y

g(x)=L2x22f(x)  is convex g(x)=\frac{L}{2}\Vert x\Vert_2^2-f(x) \ \text{ is convex}

Remarks 1

上面的第 3 個式子
f(y)f(x)+f(x)T(yx)+L2yx2 for all x,ydomf f(y) \leq f(x)+\nabla f(x)^{T}(y-x)+\frac{L}{2}\Vert y-x\Vert^{2} \quad \text { for all } x, y \in \operatorname{dom} f
實際上定義了一個二次曲線,這個曲線是原始函數的 Quadratic upper bound

Quadratic upper bound

並且由這個式子可以推導出
12Lf(z)2f(z)f(x)L2zx2 for all z \frac{1}{2 L}\Vert\nabla f(z)\Vert_{*}^{2} \leq f(z)-f\left(x^{\star}\right) \leq \frac{L}{2}\left\Vert z-x^{\star}\right\Vert^{2} \quad \text { for all } z
這個式子中的上界 L2zx2\frac{L}{2}\left\|z-x^{\star}\right\|^{2} 帶有 xx^\star 是未知的,而下界只與當前值 zz 有關,因此在優化過程中我們可以判斷當前的 f(z)f(z) 與最優值的距離至少爲 12Lf(z)2\frac{1}{2 L}\|\nabla f(z)\|_{*}^{2},如果這個值大於0,那麼我們一定還沒得到最優解。

Remarks 2

上面的最後一個式子
(f(x)f(y))T(xy)1Lf(x)f(y)2 for all x,y (\nabla f(x)-\nabla f(y))^{T}(x-y) \geq \frac{1}{L}\|\nabla f(x)-\nabla f(y)\|_{*}^{2} \quad \text { for all } x, y
被稱爲 f\nabla fco-coercivity 性質。(這其實有點像 f\nabla f 的反函數的 L-smooth 性質,所以它跟 f\nabla f 的 L-smooth 性質是等價的)

3. 強凸函數

滿足如下性質的函數被稱爲 **m-強凸(m-strongly convex)**的
f(θx+(1θ)y)θf(x)+(1θ)f(y)m2θ(1θ)xy2 for all x,ydomf,θ[0,1] f(\theta x+(1-\theta) y) \leq \theta f(x)+(1-\theta) f(y)-\frac{m}{2} \theta(1-\theta)\|x-y\|^{2} \quad \text { for all } x, y\in\text{dom}f,\theta\in[0,1]
m-強凸跟前面的 L-smooth 實際上非常像,只不過一個定義了上界,另一個定義了下界。

類似上面的 L-smooth 性質,我們課可以得到下面幾個式子是等價
f is m-strongly convex f \text{ is m-strongly convex}

(f(x)f(y))T(xy)mxy2 for all x,ydomf (\nabla f(x)-\nabla f(y))^{T}(x-y) \geq m\|x-y\|^{2} \quad \text { for all } x, y \in \operatorname{dom} f

f(y)f(x)+f(x)T(yx)+m2yx2 for all x,ydomf f(y) \geq f(x)+\nabla f(x)^{T}(y-x)+\frac{m}{2}\|y-x\|^{2} \quad \text { for all } x, y \in \operatorname{dom} f

g(x)=f(x)m2x2  is convex g(x) = f(x)-\frac{m}{2}\Vert x\Vert^2 \ \text{ is convex}

注意上面第3個式子不等號右遍實際上又定義了一個二次曲線,這個二次曲線是原函數的下界。與前面的二次上界類比可以得到

Quadratic lower bound Quadratic upper bound
Quadratic lower bound Quadratic upper bound
f(y)f(x)+f(x)T(yx)+m2yx2f(y) \geq f(x)+\nabla f(x)^{T}(y-x)+\frac{m}{2}\Vert y-x\Vert^{2} f(y)f(x)+f(x)T(yx)+L2yx2f(y) \leq f(x)+\nabla f(x)^{T}(y-x)+\frac{L}{2}\Vert y-x\Vert^{2}
m2zx2f(z)f(x)12mf(z)2\Longrightarrow \frac{m}{2}\left\Vert z-x^{\star}\right\Vert^{2} \leq f(z)-f\left(x^{\star}\right) \leq \frac{1}{2 m}\Vert\nabla f(z)\Vert_{*}^{2} 12Lf(z)2f(z)f(x)L2zx2\Longrightarrow \frac{1}{2 L}\Vert\nabla f(z)\Vert_{*}^{2} \leq f(z)-f\left(x^{\star}\right) \leq \frac{L}{2}\left\Vert z-x^{\star}\right\Vert^{2}

例子:如果函數 ff 既是 m-強凸的,又是(關於2範數) L-smooth 的,那麼

  1. 函數 h(x)=f(x)m2x2h(x)=f(x)-\frac{m}{2}\Vert x\Vert^2(L-m)-smooth
  2. 函數 hh 的 co-coercivity 可以寫爲

(f(x)f(y))T(xy)mLm+Lxy22+1m+Lf(x)f(y)22 for all x,ydomf (\nabla f(x)-\nabla f(y))^{T}(x-y) \geq \frac{m L}{m+L}\|x-y\|_{2}^{2}+\frac{1}{m+L}\|\nabla f(x)-\nabla f(y)\|_{2}^{2} \quad \text { for all } x, y \in \operatorname{dom} f

4. 梯度方法收斂性分析

下面給出一些常見梯度下降方法的分析。先回顧一下梯度方法的一般表達式
xk+1=xktkf(xk) x_{k+1}=x_{k}-t_k \nabla f(x_k)
首先有一些假設

  1. ff convex 且可導,domf=Rn\text{dom}f=R^n
  2. f\nabla f 關於2範數 L-Lipschitz continuous
  3. 最優解有限且可取

4.1 固定步長

固定步長爲 tt,則 x+=xtf(x)x^+=x-t\nabla f(x),根據 L-smooth 性質有
f(xtf(x))f(x)t(1Lt2)f(x)22 f(x-t \nabla f(x)) \leq f(x)-t\left(1-\frac{L t}{2}\right)\|\nabla f(x)\|_{2}^{2}
如果 0<t1/L0 < t \leq 1/L,則有
f(x+)f(x)t2f(x)22 f\left(x^{+}\right) \leq f(x)-\frac{t}{2}\|\nabla f(x)\|_{2}^{2}
這表明(只要步長 tt 比較小)函數值總是在不斷減小的。從上面的式子結合凸函數性質我們還可以得到
f(x+)ff(x)T(xx)t2f(x)22=12t(xx22xxtf(x)22)=12t(xx22x+x22) \begin{aligned} f\left(x^{+}\right)-f^{\star} & \leq \nabla f(x)^{T}\left(x-x^{\star}\right)-\frac{t}{2}\|\nabla f(x)\|_{2}^{2} \\ &=\frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x-x^{\star}-t \nabla f(x)\right\|_{2}^{2}\right) \\ &=\frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}\right) \end{aligned}
從這個式子可以得到我們到最優點 xx^\star 的距離在不斷減小。那麼可以得到下面的式子
i=1k(f(xi)f)12ti=1k(xi1x22xix22)=12t(x0x22xkx22)12tx0x22f(xk)f1ki=1k(f(xi)f)12ktx0x22 \begin{aligned} \sum_{i=1}^{k}\left(f\left(x_{i}\right)-f^{\star}\right) & \leq \frac{1}{2 t} \sum_{i=1}^{k}\left(\left\|x_{i-1}-x^{\star}\right\|_{2}^{2}-\left\|x_{i}-x^{\star}\right\|_{2}^{2}\right) \\ &=\frac{1}{2 t}\left(\left\|x_{0}-x^{\star}\right\|_{2}^{2}-\left\|x_{k}-x^{\star}\right\|_{2}^{2}\right) \\ & \leq \frac{1}{2 t}\left\|x_{0}-x^{\star}\right\|_{2}^{2} \end{aligned} \\ \Longrightarrow f(x_k)-f^\star\leq\frac{1}{k}\sum_{i=1}^{k}\left(f\left(x_{i}\right)-f^{\star}\right) \leq \frac{1}{2 kt}\left\|x_{0}-x^{\star}\right\|_{2}^{2}
因此普通的固定步長的梯度下降有以下收斂性質

  1. f(xk+1)<f(xk)f(x_{k+1}) < f(x_k)
  2. xk+1x<xkx\Vert x_{k+1}-x^\star\Vert < \Vert x_{k}-x^\star\Vert
  3. f(xk)f12ktx0x22f(x_k)-f^\star\leq \frac{1}{2 kt}\left\|x_{0}-x^{\star}\right\|_{2}^{2},要想滿足精度 f(xk)fϵf(x_k)-f^\star \leq \epsilon 需要的迭代次數爲 O(1/ϵ)O(1/\epsilon)

4.2 線搜索

線搜索就是每步都要計算合適的步長,計算方法爲不斷地迭代 tk:=βtk,0<β<1t_k:=\beta t_k,0<\beta<1 直到 tkt_k 滿足下面的條件
f(xktkf(xk))<f(xk)αtkf(xk)22 f\left(x_{k}-t_{k} \nabla f\left(x_{k}\right)\right)<f\left(x_{k}\right)-\alpha t_{k}\left\|\nabla f\left(x_{k}\right)\right\|_{2}^{2}
形象理解就是下面這幅圖,一開始我們的 tkt_k 可能很大,表示梯度下降的步長過大,不能使函數值減小,那我們就減小步長 tk=βtkt_k=\beta t_k,直到進入綠線與藍線交點左側這部分,我們就可以保證一定有 f(xk+1)<f(xk)f(x_{k+1})<f(x_k),這時就是我們要取的 tkt_k,這也是線搜索的含義,線搜索實際上就是在搜索合適的步長 tkt_k

line search

主要到上面的式子中有一個參數 α\alpha 會影響我們的搜索結果,比如上圖中 α\alpha 越大,則綠線的斜率越大,那麼最終搜索到的 tkt_k 應該就越小,表示我們每一步的步長都會更小。實際中往往取 α=1/2\alpha=1/2,此時理想的搜索結果實際上就是 quadratic upper bound 的最小值點。也就是說我們用二次上界曲線來近似待優化的函數,而二次上界的最小值點對應的步長就是 t=1/Lt=1/L,但由於我們是線搜索,實際得到的 tkt_k 一般會比這個值略小一點。

line search

另一方面爲了保證線搜索在有限步能夠終止,還需要滿足 tktmin=min{t^,β/L}t_k\ge t_{min} =\min\{\hat{t},\beta/L\},其中 t^\hat{t} 是預先指定的一個參數。

那麼線搜索的收斂性怎麼樣呢?首先根據線搜索的定義一定有
f(xi+1)f(xi)ti2f(xi)22f+f(xi)T(xix)ti2f(xi)22=f+12ti(xix22xi+1x22) \begin{aligned} f\left(x_{i+1}\right) & \leq f\left(x_{i}\right)-\frac{t_{i}}{2}\left\|\nabla f\left(x_{i}\right)\right\|_{2}^{2} \\ & \leq f^{\star}+\nabla f\left(x_{i}\right)^{T}\left(x_{i}-x^{\star}\right)-\frac{t_{i}}{2}\left\|\nabla f\left(x_{i}\right)\right\|_{2}^{2} \\ &=f^{\star}+\frac{1}{2 t_{i}}\left(\left\|x_{i}-x^{\star}\right\|_{2}^{2}-\left\|x_{i+1}-x^{\star}\right\|_{2}^{2}\right) \end{aligned}
這表明 f(xi+1)<f(xi),xix2>xi+1x2f(x_{i+1})<f(x_i),\left\|x_{i}-x^{\star}\right\|_{2}>\left\|x_{i+1}-x^{\star}\right\|_{2},類似前面固定步長的分析,可以得到
f(xk)f1ki=1k(f(xi)f)12ktminx0x22 f(x_k)-f^\star\leq\frac{1}{k}\sum_{i=1}^{k}\left(f\left(x_{i}\right)-f^{\star}\right) \leq \frac{1}{2 kt_{min}}\left\|x_{0}-x^{\star}\right\|_{2}^{2}
因此對於線搜索的方法,我們可以得到如下的收斂性質

  1. f(xi+1)<f(xi)f(x_{i+1})<f(x_i)
  2. xix2>xi+1x2\left\|x_{i}-x^{\star}\right\|_{2}>\left\|x_{i+1}-x^{\star}\right\|_{2}
  3. f(xk)f12ktminx0x22f(x_k)-f^\star\leq \frac{1}{2 kt_{min}}\left\|x_{0}-x^{\star}\right\|_{2}^{2}

所以線搜索實際上並不能提高收斂速度的階,他與固定步長的方法都是 O(1/k)O(1/k) 的,爲 sublinear 收斂

4.3 一階方法的收斂極限

不管是固定步長還是線搜索,前面的方法都是一階方法,即
xk+1x0+span{f(x0),f(x1),,f(xk)} x_{k+1}\in x_{0}+\operatorname{span}\left\{\nabla f\left(x_{0}\right), \nabla f\left(x_{1}\right), \ldots, \nabla f\left(x_{k}\right)\right\}
而理論上也證明一階方法的收斂速度存在極限。

定理(Nesterov): for every integer k(n1)/2k ≤ (n−1)/2 and every x0x_0, there exist functions in the problem class such that for any first-order method
f(xk)f332Lx0x22(k+1)2 f\left(x_{k}\right)-f^{\star} \geq \frac{3}{32} \frac{L\left\|x_{0}-x^{\star}\right\|_{2}^{2}}{(k+1)^{2}}
也就是說收斂速度最多也就是 O(1/k2)O(1/k^2)

4.4 強凸函數的梯度方法

對於強凸函數,即使採用固定步長的梯度方法,也可以得到線性收斂速度!這就是強凸性帶來的好處。

考慮 0<t<2/(m+L)0<t<2/(m+L),我們有
x+x22=xtf(x)x22=xx222tf(x)T(xx)+t2f(x)22(1t2mLm+L)xx22+t(t2m+L)f(x)22(1t2mLm+L)xx22 \begin{aligned} \left\|x^{+}-x^{\star}\right\|_{2}^{2} &=\left\|x-t \nabla f(x)-x^{\star}\right\|_{2}^{2} \\ &=\left\|x-x^{\star}\right\|_{2}^{2}-2 t \nabla f(x)^{T}\left(x-x^{\star}\right)+t^{2}\|\nabla f(x)\|_{2}^{2} \\ & \leq\left(1-t \frac{2 m L}{m+L}\right)\left\|x-x^{\star}\right\|_{2}^{2}+t\left(t-\frac{2}{m+L}\right)\|\nabla f(x)\|_{2}^{2} \\ & \leq\left(1-t \frac{2 m L}{m+L}\right)\left\|x-x^{\star}\right\|_{2}^{2} \end{aligned}
也就是說可以得到
xkx22ckx0x22,c=1t2mLm+Lf(xk)fL2xkx22ckL2x0x22 \left\|x_{k}-x^{\star}\right\|_{2}^{2} \leq c^{k}\left\|x_{0}-x^{\star}\right\|_{2}^{2}, \quad c=1-t \frac{2 m L}{m+L} \\ f\left(x_{k}\right)-f^{\star} \leq \frac{L}{2}\left\|x_{k}-x^{\star}\right\|_{2}^{2} \leq \frac{c^{k} L}{2}\left\|x_{0}-x^{\star}\right\|_{2}^{2}
注意到前面是反比例下降,這裏變成了指數下降。如果要打到精度 f(xk)fϵf(x_k)-f^\star \leq \epsilon 需要的迭代次數爲 O(log(1/ϵ))O(\log(1/\epsilon))

5. BB 方法

Barzilai-Borwein (BB) method 也是梯度下降方法的一種,他主要是通過近似牛頓方法來實現更快的收斂速度,同時避免計算二階導數帶來的計算複雜度。

如果我們記 g(k)=f(x(k)) and F(k)=2f(x(k))\boldsymbol{g}^{(k)}=\nabla f\left(\boldsymbol{x}^{(k)}\right) \text { and } \boldsymbol{F}^{(k)}=\nabla^{2} f\left(\boldsymbol{x}^{(k)}\right),那麼一階方法就是 x(k+1)=x(k)αkg(k)\boldsymbol{x}^{(k+1)}=\boldsymbol{x}^{(k)}-\alpha_{k} \boldsymbol{g}^{(k)},其中步長 αk\alpha_k 可以是固定的,也可以是線搜索獲得的,一階方法簡單但是收斂速度慢。牛頓方法就是 x(k+1)=x(k)(F(k))1g(k)\boldsymbol{x}^{(k+1)}=\boldsymbol{x}^{(k)}-\left(\boldsymbol{F}^{(k)}\right)^{-1} \boldsymbol{g}^{(k)},其收斂速度更快,但是海森矩陣計算代價較大。而 BB方法就是用 αkg(k)\alpha_{k} \boldsymbol{g}^{(k)} 來近似 (F(k))1g(k)\left(\boldsymbol{F}^{(k)}\right)^{-1} \boldsymbol{g}^{(k)}

怎麼近似呢?假如定義 s(k1):=x(k)x(k1) and y(k1):=g(k)g(k1)s^{(k-1)}:=x^{(k)}-x^{(k-1)} \text { and } y^{(k-1)}:=g^{(k)}-g^{(k-1)},那麼海森矩陣實際上就是
F(k)s(k1)=y(k1) \boldsymbol{F}^{(k)}s^{(k-1)}=y^{(k-1)}
現在的想法就是用 (αkI)1(\alpha_k I)^{-1} 來近似 F(k)\boldsymbol{F}^{(k)},那麼應該有
(αkI)1s(k1)=y(k1) (\alpha_k I)^{-1}s^{(k-1)}=y^{(k-1)}
這個問題用最小二乘就可以解決了,下面兩種選擇都可以
αk1=argminβ12s(k1)βy(k1)2αk1=(s(k1))Ts(k1)(s(k1))Ty(k1)αk=argminα12s(k1)y(k1)α2αk2=(s(k1))Ty(k1)(y(k1))Ty(k1) \alpha_{k}^{-1}=\underset{\beta}{\arg \min } \frac{1}{2}\left\|s^{(k-1)} \beta-\boldsymbol{y}^{(k-1)}\right\|^{2} \Longrightarrow \alpha_{k}^{1}=\frac{\left(s^{(k-1)}\right)^{T} s^{(k-1)}}{\left(s^{(k-1)}\right)^{T} \boldsymbol{y}^{(k-1)}} \\\alpha_{k}=\underset{\alpha}{\arg \min } \frac{1}{2}\left\|s^{(k-1)}-\boldsymbol{y}^{(k-1)} \alpha\right\|^{2} \Longrightarrow \alpha_{k}^{2}=\frac{\left(\boldsymbol{s}^{(k-1)}\right)^{T} \boldsymbol{y}^{(k-1)}}{\left(\boldsymbol{y}^{(k-1)}\right)^{T} \boldsymbol{y}^{(k-1)}}
這兩個解有一個微妙的不同點在於 αk1\alpha_k^1 的分母 (s(k1))Ty(k1)\left(s^{(k-1)}\right)^{T} \boldsymbol{y}^{(k-1)} 有可能等於 0,這會給計算帶來麻煩,而 αk2\alpha_k^2 則不會。

BB方法主要有以下幾個特點:

  1. 幾乎不需要額外的計算量,但是往往會帶來極大的性能增益;
  2. 實際應用中這兩個表達式用哪個都可以,甚至還可以交換使用,用哪個更好一般與具體的問題有關;
  3. 收斂性很難證明,沒有收斂性的保證。比如下面的例子,他甚至不是單調下降的。

BB method> 最後給我的博客打個廣告,歡迎光臨

https://glooow1024.github.io/
https://glooow.gitee.io/

前面的一些博客鏈接如下
凸優化專欄
凸優化學習筆記 1:Convex Sets
凸優化學習筆記 2:超平面分離定理
凸優化學習筆記 3:廣義不等式
凸優化學習筆記 4:Convex Function
凸優化學習筆記 5:保凸變換
凸優化學習筆記 6:共軛函數
凸優化學習筆記 7:擬凸函數 Quasiconvex Function
凸優化學習筆記 8:對數凸函數
凸優化學習筆記 9:廣義凸函數
凸優化學習筆記 10:凸優化問題
凸優化學習筆記 11:對偶原理
凸優化學習筆記 12:KKT條件
凸優化學習筆記 13:KKT條件 & 互補性條件 & 強對偶性
凸優化學習筆記 14:SDP Representablity
凸優化學習筆記 15:梯度方法

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