05-無約束優化演算法

二十三歲的有德發表於2021-06-22

05-無約束優化演算法

凸優化從入門到放棄完整教程地址:https://www.cnblogs.com/nickchen121/p/14900036.html

一、無約束最小化問題

[無約束最小化問題] 使 \(f(x)\) 最小化, \(f:R^n\rightarrow R\)的,且二次可微(意味著 \(domf\) 是開集)。

假設這個問題是可解的,也就是存在最優點 \(x^*\) ,最優值 \(inf_xf(x)=f(x^*)\) ,記為 \(p^*\) .

[最優充要條件] 因為 \(f\) 是可微且凸的,點 \(x^*\) 是最優點的充要條件

\(\nabla f(x^*)=0\) .

注:其實可以從二維的影像去理解

因此解決無約束最小化問題等同於尋找上式的解,是含有 \(n\) 個未知數的 \(n\) 個方程的集方程組。有時我們是用遞迴演算法來解決這個問題,也就是依次計算 \(x^{(0)},x^{(1)},...\in domf\) , 有 \(f(x^{(k)})\rightarrow p^*,\)\(k\rightarrow \infty\) 。這樣的序列叫做問題的最小化序列 (minimizing sequence)。演算法的停止條件\(f(x^{(k)})-p^*\leq \epsilon\)\(\epsilon \geq 0\) 是可容許的誤差值。

[初始點,下水平集] 初始點 \(x^{(0)}\) 必須在 \(domf\) 中,並且下水平集

\(S=\{x\in domf| f(x)\leq f(x^{(0)})\}\) 必須是閉的。注:下水平集是閉的,其實就是對函式做了水平切割,然後水平切割下的影像是封閉的

如果函式 \(f\) 是閉的(也就是它的所有下水平集都是閉的)那麼以上條件都能滿足。

  • 定義在 \(domf=R^n\) 上的連續函式是閉的,所以如果 \(domf=R^n\) ,那麼初始下水平集條件對於任何 \(x^{(0)}\) 都滿足 。
  • 另一種閉函式:定義域是開集,當 \(x\) 趨近於 \(bd\;domf\) 時, \(f(x)\) 趨近於無限。

[強凸] 一個函式在 \(S\) 上是強凸的,如果存在 \(m>0\) ,使得對於所有的 \(x\in S\) ,有

\(\nabla^2 f(x)\succeq mI.\)

注:強凸的性質,其實就是保證函式的 \(\nabla^2 f(x)\gt 0\) ,也就是確保只有一個最優解,而弱凸是最優解有多個,如下圖所示。

05-無約束優化演算法
  • 對於 \(x,y\in S\) 我們有

\(f(y)=f(x)+\nabla f(x)^T(y-x)+\frac{1}{2}(y-x)^T\nabla^2f(z)(y-x)\) , for some \(z\in [x,y]\)

根據強凸的假設,最後一項大於等於 \((m/2)\|y-x\|^2_2, \forall x,y\in S\) ,也就是:

\(f(y)\geq f(x)+\nabla f(x)^T(y-x)+(m/2)\|y-x\|^2_2\) .

\(m=0\) 時,我們得到了描述凸性的基本不等式。
\(m>0\) 時,我們得到了更好的 \(f(y)\) 的下界。

由於上式中 \(f(x)+\nabla f(x)^T(y-x)+(m/2)\|y-x\|^2_2\) 為 \(y\) 的二次凸函式,因此可以直接令其關於 \(y\) 的導數為 0,即當 \(y=x-(1/m)\nabla f(x)\) 時,上式右側取最小值,帶入可以得到:

  • \(p^*\geq f(x)-\frac{1}{2m}\|\nabla f(x)\|^2_2\) . 注:由此可以看到,任何梯度足夠小的點都是近似最優解,因為只要有梯度,則可以找到一個更小的 \(p^*\)
  • \(\|x-x^*\|_2\leq \frac{2}{m}\|\nabla f(x)\|_2\) .

[次優性條件]:通過 \(p^*\geq f(x)-\frac{1}{2m}\|\nabla f(x)\|^2_2\),我們進行推廣,假設存在一個 \(\epsilon \geq \frac{1}{2m} \| \nabla f(x) \|^2_2\),即 \(\| \nabla f(x) \|_2 \leq (2m\epsilon)^{1/2}\),進而推出 \(f(x) - p^* \leq \epsilon\),這就是次優性條件。

[Hessian矩陣的上界] 由於 \(S\) 本身作為一個封閉的下水平集,它不僅有有下界,也會有上界。而且由於 \(\nabla^2f(x)\) 的最大特徵值是 \(x\)\(S\) 上的連續函式,因此 \(\nabla^2 f(x)\)\(S\) 上有上界,即存在常數 \(M\) 使得

\(\nabla^2 f(x)\preceq MI,\forall x\in S\) .

  • 由此可以得到 \(p^*\leq f(x)-\frac{1}{2M}\|\nabla f(x)\|^2_2\) .

[下水平集的條件數] 對於任意的 \(x\in S\)\(mI\preceq \nabla^2 f(x)\preceq MI\) . 因此 \(\nabla^2f(x)\) 的條件數是比值 \(k=M/m\) 的上界。注:\(M\)\(m\)\(\nabla^2 f(x)\) 的最大特徵值和最小特徵值

[凸集的寬度] 對於任意範數為1的方向向量 \(q\) ,定義凸集 \(C\subseteq R^n\)寬度為:

\(W(C,q)=\underset{z\in C}{sup}\; q^T z-\underset{z\in C}{inf}\; q^Tz.\)

  • 最小寬度: \(W_{min}=\underset{\|q\|_2=1}{inf}\, W(C,q).\)
  • 最大寬度: \(W_{max}=\underset{\|q\|_2=1}{sup} \, W(C,q).\)

[凸集的條件數] 凸集 \(C\) 的條件數定義為最大寬度和最小寬度的比值:

\(cond(C)= \frac{W^2_{max}}{W^2_{min}}.\)

  • \(C\) 的條件數給出了各向異性離心率的一種測度——條件數小,意味著集合個方向上寬度近似,接近球體;否則集合在某些方向上的寬度遠比其他方向上的寬度大。

二、下降法

[下降法 Desent methods] 這種演算法給出一個最小化序列 \(x^{(k)}, k=1,...,\)

\(x^{(k+1)}=x^{(k)}+t^{(k)}\Delta x^{(k)}\) ,
\(t^{(k)}>0.\)

  • \(\Delta x\) 是一個 \(R^n\) 上的向量,叫做搜尋方向(search direction),
  • \(t^{(k)}>0\)步長 (step length), \(k=0,1,...\) 是迭代數。
  • 這個方法稱為下降法,意味著 \(f(x^{(k+1)})<f(x^{k})\) ,除非 \(x^{(k)}\) 是最優點。

上式可以簡寫為 \(x^+=x+t\Delta x\) ,或 \(x:= x+t\Delta x\) .

[下降方向] 由凸性可知,如果 \(\nabla f(x^{(k)})^T(y-x^{(k)})\geq 0\) ,那麼 \(f(y)\geq f(x^{(k)})\) ,所以搜尋方向必須使 \(\nabla f(x^{(k)})^T\Delta x^{(k)}<0\) ,也就是說搜尋方向必須和負梯度成銳角,我們稱這樣的方向為下降方向

注:\(y\) 是我們搜尋的下一個值,相當於 \(x^{(k+1)}\),前面說過如果 \(\nabla f(x^{(k)})^T(y-x^{(k)})\geq 0\),則它們之間形成了一個鈍角,那麼 \(y\)\(x\) 的等高線和 \(\nabla f(x)\) 之內,即 \(f(y) \geq f(x^{(k)})\)

[演算法]:給定一個初始點 \(x\in domf\) . 重複:

  1. 決定下降方向 \(\Delta x\) .
  2. 直線搜尋: 選擇步長 \(t\) , \(t>0\)
  3. 迭代 \(x:=x+t\Delta x\) .

直到滿足停止條件。

  • 停止條件一般是 \(\|\nabla f(x)\|_2\leq \eta\)\(\eta\) 是一個小的正數。

注:這裡可以參考次優性條件,通過 \(p^*\geq f(x)-\frac{1}{2m}\|\nabla f(x)\|^2_2\),我們進行推廣,假設存在一個 \(\epsilon \geq \frac{1}{2m} \| \nabla f(x) \|^2_2\),即 \(\| \nabla f(x) \|_2 \leq (2m\epsilon)^{1/2}\),進而推出 \(f(x) - p^* \leq \epsilon\)

[直線搜尋 line search] 有幾種方法:

  • 精確直線搜尋(Exact line search):

沿著射線 \(\{x+t\Delta x| t\geq 0\}\) 尋找使 \(f\) 取最小值的 \(t\) :

\(t=\underset{s\geq 0}{argmin}\, f(x+s\Delta x)\) .

注:其實這裡就是尋找一個下降最多的方向,確保每次都有下降

  • 回溯直線搜尋(Backtracking line search):

在每一步,從單位步長開始,不斷嘗試減小步長 (用小於1大於零的係數乘 \(t\) ),直到

\(f(x+t\Delta x)\leq f(x)+\alpha t \nabla f(x)^T \Delta x\)

注:回溯直線從單位步長開始按比例減小,並且只要求最後滿足停止條件即可,而且當 \(t\) 足夠小的時候,一定是可以滿足停止條件的。

如圖,回溯搜尋最終要使 f 落在兩個虛線之間。注:注意該圖的橫軸是 \(t\),不是 \(x\)

img


三、梯度下降法

注:梯度下降法就是在下降法的角度上明確了下降的方向為 \(- \nabla f(x)\)

[梯度下降法] 關於搜尋方向,一種自然的選擇是 \(\Delta x=-\nabla f(x)\) . 這種演算法叫做梯度下降法。

[演算法] 給定一個初始點 \(x\in domf\) . 重複:

  1. \(\Delta x:= -\nabla f(x)\) .
  2. 直線搜尋:用exact/backtracking 搜尋方法選擇步長 \(t\) .
  3. 迭代, \(x:=x+t\Delta x\) .

直到滿足停止條件。

  • 停止條件一般是 \(\|\nabla f(x)\|_2\leq \eta\) , \(\eta\) 是一個小的正數。在第一步之後檢查停止條件而不是迭代之後。

[收斂性分析]

直觀講,梯度法收斂速度很大取決於函式等值線的形狀,如果比較圓(各向寬度均勻)那麼從任一點開始都更快到達中心注:圓的話,直接往圓心走就行了,這就是未來牛頓法想要做到的,比較扁的話,就需要很多步才能到達。等值線的形狀用集合最大寬度和最小寬度的比值來衡量,因此這個比值很關鍵,以下是推導:

  • 對於函式 \(f\) ,存在常數 \(L \geq 0\) 使得 \(h^T\nabla^2 f(x)h\leq L\|h\|^2 , \forall y\)

\(\begin{equation}\begin{split}f(x+\alpha h)-f(x) &=\int^{\alpha}_{0} \nabla f^T(x+\tau h)h\; d\tau \\ &= \alpha \nabla f^T(x)h+\int^{\alpha}_0 (\nabla f^T(x+\tau h)-\nabla f^T(x))h\;d\tau\\&=\alpha\nabla f^T(x)h+ \int^{\alpha}_0 [\int^{\tau}_0 h^T \nabla^2 f(x+sh)h \; ds]\;d\tau\\ &\leq \alpha \nabla f^T(\alpha)h + L\|h\|^2\int^{\alpha}_0 \tau\; d\tau \end{split} \end{equation}\)

\(h=-\nabla f\) 得,

\(\begin{equation}f(x+\alpha h)-f(x) \leq -\alpha\|\nabla f(x)\|^2 + \frac{\alpha^2L}{2}\|\nabla f(x)\|^2 = (\frac{\alpha^2L}{2} -\alpha)\|\nabla f(x)\|^2 \end{equation}\)

為了使右邊最小,令其關於 $\alpha $ 的導數為0 ,得到 \(\alpha^* =\frac{1}{L}\) ,代回不等式,

\(\begin{equation}\begin{split}f(x+\alpha h)-f(x) &\leq -\frac{1}{2L}\|\nabla f\|^2\end{split} \end{equation}\) .

注:此處用的不是書上的推導,但是從上可以看出,最後 \(\begin{equation}\begin{split}f(x+\alpha h)-f(x) &\leq -\frac{1}{2L}\|\nabla f\|^2\end{split} \end{equation} \leq 0\),也就是說 $ f(x+ \alpha h) \leq f(x)$

  • 非凸函式收斂性:

\(\sum ^M_{k=0} (f(x^{k+1})-f(x^{k}))\leq -\frac{1}{2L}\sum^M_0\|\nabla f(x^{k})\|^2\)

不等式左邊等於 \(f(x^{M}-f(x^0))\) ,根據上一步得到的不等式有

\(\frac{1}{2L} \sum^M_{k=0} \|\nabla f(x^k)\|^2\leq f(x^0)-f(x^M)\leq C\)

因此當 \(k\rightarrow \infty,\) 梯度 \(\|\nabla f(x^k)\|\rightarrow 0\) ,收斂速度線性 \(\|\nabla f(x^k)\|^2\sim O(\frac{1}{k})\)

  • 凸函式收斂性:

\(f\) 是凸函式: \(\forall x,y\in R^n 有 f(y)-f(x)\geq \nabla f^T(x)(y-x).\) 最優點 \(x^*\)

\(\begin{equation}\begin{split} \|x^{k+1}-x^*\|^2 &= \|x^k -\alpha \nabla f(x^k)-x^* \|^2\\ &= \|x^k -x^*\|^2 -2\alpha \nabla f^T(x^k)(x^k-x^*)+\alpha^2\|\nabla f(x^k)\|^2\\ &\leq \|x^k-x^*\|^2+2\alpha(f(x^*)-f(x^k))+\alpha^2\|\nabla f(x^k)\|^2 \end{split}\end{equation}\)

兩邊求和從 \(k=0\) 加到 \(k=M\)

$ |xM-x|^2\leq |x0-x|^2+2\alpha \sumM_{k=0}(f(x*)-f(xk))+\alpha2\sum^M_{k=0}|\nabla f(xk)|2.$

因為是凸函式 \(f(x^*)-f(x^k)\geq \nabla f^T(x^k)(x^*-x^k)\) ,所以有

\(\sum^M_{k=0}f(x^k)-f(x^*)\leq \infty\) ,函式收斂, \(f(x^k)-f(x^*)\sim O(\frac{1}{k})\) 收斂速度為線性。

  • 強凸函式收斂性:

\(f\) 是強凸函式: \(\exists \lambda>0, \forall x : h^T\nabla^2 f(x)h\geq \lambda \|h\|^2.\)

由強凸函式的定義有

\(f(y)-f(x)\geq \nabla f(x)^T(y-x)+\frac{\lambda}{2}\|y-x\|^2.\)

記函式最小值為f^*,

\(f^*-f(x)\geq \underset{y\in R^n}{min} (\nabla f(x)^T(y-x)+\frac{1}{2}\lambda\|y-x\|^2).\)

對右邊求導 \(\nabla f(x)+\lambda(y-x)=0\) , 得 \(y-x=-\frac{\nabla f(x)}{\lambda}\)

帶回得,

\(f^*-f(x)\geq -\frac{\|\nabla f(x)\|^2}{\lambda} + \frac{\lambda\|\nabla f(x)\|^2}{2\lambda^2} = -\frac{\|\nabla f(x)\|^2}{2\lambda}\)

\(2\lambda(f^*-f(x))\geq -\|\nabla f(x)\|^2\)

因此有,

\(f(x+\alpha h)-f(x)\leq -\frac{1}{2L}\|\nabla f(x)\|^2\leq \frac{\lambda}{L}(f^*-f(x))\)

$\begin{equation}\begin{split} f(x+\alpha h)-f^* &\leq f(x)-f*-\frac{\lambda}{L}(f(x)-f) \ & = (1-\frac{\lambda}{L})(f(x)-f^)\ & \leq (1-\frac{\lambda}{L})(f(x0)-f*)\end{split}\end{equation} $

由此,線性收斂,收斂快慢(步數)取決於 \(\frac{\lambda}{L}\) :

如果 \(\frac{\lambda}{L}\sim 1\) ,那麼 \(1-\frac{\lambda}{L} << 1\) ,迭代次數少。

如果 \(\frac{\lambda}{L} << 1\) ,那麼 \(1-\frac{\lambda}{L} \sim 1\) ,迭代次數多。

  • 幾何解釋

注:上述推導公式有興趣的可以琢磨,我這裡就說說最後推導除了什麼。回顧第1節提到的:凸集最大寬度 \(M\) 和最小寬度 \(m\) ,可以把強凸係數 \(\lambda\) 看作是最小寬度 \(m\) ,而利普希茲常數 \(L\) 看作是最大寬度 \(M\) . 他們的比值反映了凸集的形狀。也就是說條件數對梯度下降的收斂性影響非常大,因為條件數控制了函式等高線的形狀

如果 \(\lambda\)\(L\) 數值相近,也就是最大最小寬度差不多 ,函式等值線接近圓(球),那麼任一點的下降方向都比較接近中心,因此不論使用精確直線搜尋還是回溯直線搜尋都能沿著比較直的路更快下降到中心。

注:怎麼去看下面三張圖呢,牢記,三張圖畫的都是函式的等高線。也就是說,梯度下降只是沿著當前點 \(x_0\) 的負梯度方向 \(-\nabla f(x)\) 找比自己當前點更小的點 \(x_1\),如果函式等高線更接近圓,負梯度方向指向圓心(圓邊上的任意點的支撐超平面也就是 \(-\nabla f(x)\) 都指向圓心),那麼無論步長 \(\alpha\) 怎麼設定,都是往最小值(圓心)方向走過去;如果函式等高線接近橢圓,負梯度方向就不一定指向最小值,如果步長再設定大點,那麼往往會偏離最小值,這也是為什麼初始點設定的重要性,而接下來的最速下降方法和牛頓法就是為了解決這個問題。

img

反之如果大小寬度相差較多,那麼函式等值線更不均勻,比如一個很扁的橢球,此時某些點上的下降方向非常偏離中心(起始點的選取變得重要),因此下降的道路會比較曲折,例如下面第一張圖。但有時用精確直線搜尋會改善這種情況,見第二張圖。

img

img

[結論]

  • 梯度下降法一般是線性收斂的(linear convergence) ,誤差 \(f(x^{(l)})-p^*\) 收斂到 \(0\) 近似於一個幾何級數。
  • 如果用回溯直線搜尋的話, \(\alpha,\beta\) 對收斂效果有影響但沒有非常大,精確直線搜尋有時能夠改善收斂,但是效果不是很大。
  • 收斂速度極大地取決於Hessian矩陣或下水平集的條件數。
  • 梯度下降法的主要優勢在於簡單,劣勢是收斂速度依賴於Hessian矩陣或下水平集的條件數。

四、最速下降法

[方向導數 directional derivative] \(f(x+v)\)\(x\) 附近的一階泰勒展開式: \(f(x+v)\approx \hat{f}(x+v)=f(x)+\nabla f(x)^Tv.\)

注:依據泰勒展開式,\(v = x+v - v\)

第二項 \(\nabla f(x)^Tv\) 叫做 \(f\)\(x\) 處以 \(v\) 為方向的方向導數

注:它給出了走一小步 \(v\) 之後 \(f\) 的近似,這一步 \(v\) 是下降的方向,如果方向導數是負的。問題是如何選擇 \(v\) 使得方向導數儘可能地負(小)。我們可以讓 $v $ 充分大,但為了讓問題有意義,我們還是必須得限制 \(v\) 的大小,這也就是後面範數的由來。

[規範化最速下降方向 normalized steepest descent direction]

\(\|\cdot\|\)\(R^n\) 上的任意範數,我們定義一個規範化的最速下降方向為: \(\Delta x_{nsd}=argmin\{\nabla f(x)^Tv \;| \; \|v\|=1\}\) .

規範化最速下降方向 \(\Delta x_{nsd}\) 是單位長度的一步,使得 \(f\) 的線性近似下降最多

幾何解釋:注:這是理解未來影像的重要知識點,最速下降方向是,在單位球 \(\|\cdot\|\) 內的所有方向中,在向量 \(-\nabla f(x)\) 上投影最長的那個方向。

[最速下降方向] 縮放規範化最速下降方向,得到一個未規範化的最速下降方向:

\(\Delta x_{sd}=\|\nabla f(x)\|_* \Delta x_{nsd}\)
\(\|\cdot\|_*\) 是對偶範數(dual norm),注:其中對偶範數 \(\| \nabla f(x) \|_* \nabla x_{nsd}\) 是一個特殊的比例因子,讓其非規範化。

[最速下降的量]

\(\nabla f(x)^T \Delta x_{sd}=\|\nabla f(x)\|_* \nabla f(x)^T \Delta x_{nsd}=-\|\nabla f(x)\|^2_*\) .

[最速下降法] 最速下降法使用最速下降方向為搜尋方向。

[演算法] 給定一個初始點 \(x\in domf\) ,重複:

  1. 計算最速下降方向 \(\Delta x_{sd}\) .
  2. 直線搜尋:通過backtracking/exact 直線搜尋方法選擇 \(t\) .
  3. 迭代 \(x:=x+t\Delta x_{sd}\) .

直到滿足停止條件。

  • 當使用精確直線搜尋時,下降方向的縮放沒有效果,所以可以用規範化的下降方向或者非規範化的下降方向。

[關於歐幾里得範數(l2 範數)的最速下降] 如果使用歐幾里得範數, \(\Delta x_{sd}=-\nabla f(x)\) ,所以此時最速下降法就是梯度下降法。

注:一個單位向量與梯度內積的最小值是當單位向量的方向為負梯度方向。

[關於二次-P範數的最速下降] 考慮二次範數 \(\|z\|_P=(z^TPz)^{1/2}=\|P^{1/2}_z\|_2\) , \(P\in S^n_{++}.\) 那麼規範化的最速下降方向是:

\(\Delta x_{nsd}=-(\nabla f(x)^TP^{-1}\nabla f(x))^{-1/2} P^{-1}\nabla f(x)\) .

對偶範數 \(\|z\|_*=\|P^{-1/2}z\|_2\) ,所以最速下降方向為:

\(\Delta x_{sd}=-P^{-1}\nabla f(x).\)

注:二次-P 範數下的最速下降方向可以理解為對原問題進行座標變換 \(x = P^{1/2} x\) 後的梯度方向。

注:下圖中橢圓中的所有向量中, \(\Delta x_{nsd}\) 是在 \(-\nabla f(x)\) 方向上投影最長的向量。

img

[關於 \(l_1\) -範數的最速下降] 關於 \(l_1\) -範數的,規範化最速下降方向為:

\(\Delta x_{nsd}=argmin\{\nabla f(x)^T v \;| \|v\|_1\leq 1\}\) .

\(i\) 為任意index, \(\|\nabla f(x)\|_{\infty} = |(\nabla f(x))_i|\) ,那麼規範化的最速下降方向:

\(\Delta x_{nsd}=-sign(\frac {\partial f(x)}{\partial x_i})e_i\) .

\(e_i\) 是第 \(i\) 個標準基向量,那麼一個非規範化的最速下降方向為:

\(\Delta x_{sd} = \Delta x_{nsd}\|\nabla f(x)\|_{\infty}=-\frac{\partial f(x)}{\partial x_i} e_i\) .

注:於是關於 \(l_1\) 範數的最速下降步總是一個標準基向量,是使 \(f\) 下降最多的座標軸的方向。如下圖:

img

\(l_1\) 最速下降的解釋:梯度在所有座標軸上投影的最大值所對應的座標軸的反方向。每個迭代中,選擇 \(\nabla f(x)\) 中具有最大絕對值的元素(分量),然後根據 \((\nabla f(x))_i\) 的符號,增加或減少 \(x\) 中對應的元素。這種演算法有時也稱為座標下降,因為每次只更新 \(x\) 的一個元素(分量)。

[收斂性] 有著和梯度方法一樣的線性收斂性。

五、牛頓法

[牛頓步程 newton step] 對於 \(x\in domf\) , 向量

\(x_{nt}=-\nabla^2 f(x)^{-1}\nabla f(x)\)

叫做牛頓步程 ( \(f\) 在點 \(x\) 處的)。

因為 \(\nabla ^2 f(x)\) 是非負的,所以

\(\nabla f(x)^T\Delta x_{nt}= -\nabla f(x)^T \nabla^2f(x)^{-1}\nabla f(x)<0.\)除非 \(\nabla f(x)=0\) ,

所以牛頓步程是下降的方向(除非 \(x\) 是最優點)。

注:牛頓步程可以區別於最速梯度下降法的下降方向

[解釋]

  • 牛頓步程使得 \(f\)\(x\) 附近的二次泰勒近似最小化。\(\hat{f}(x+v)=f(x)+\nabla f(x)^T v+\frac{1}{2}v^T \nabla ^2 f(x)v\) .

注:對上述關於 \(v\) 的二次凸函式求導,可以發現在 \(v=\Delta x_{nt}\) 時取最小值。

如圖,虛線表示函式的二次近似,它在越接近最低點的地方誤差越小。

img

注:牛頓法其實就是函式 \(f\) 的二階近似後求近似解

  • 牛頓步程也是由Hessian矩陣 \(\nabla ^2 f(x)\) 定義的二次範數,也就是

\(\|u\|_{\nabla^2 f(x)}=(u^T \nabla^2 f(x)u)^{1/2}\) 的最速下降方向。

\(x\) 接近 \(x^*\) 時,牛頓步程是搜尋方向的好選擇。

如圖,圖中箭頭表示負梯度 \(-\nabla f(x)\) ,實線橢圓是 ${x+v| vT\nabla2 f(x)v\leq 1} $ ,代表了點 \(x\) 處在 \(\nabla^2f(x)\) 定義的範數下的所有可選方向,而其中在 $-\nabla f(x) $ 上投影最長的方向是最速下降方向。

img

  • 牛頓步程是線性最優條件的解。如果我們把最優條件 $\nabla f(x^*) $ 線性化 得到,

\(\nabla f(x+v)\approx \nabla f(x)+\nabla^2 f(x)v=0.\)

這是關於 \(v\) 的線性方程,它的解是 \(v=\Delta x_{nt}.\) 如圖(注:橫軸是 0 軸,函式 \(f\) 的二階泰勒展開的函式 \(\hat f\) 導數為 0 的值和函式 \(f\) 的值近似):

img

[牛頓減量] 在點 \(x\) 處的牛頓減量定義為

\(f(x)- \inf_y \hat f (y) = f(x) - \hat f(x+\nabla x_{nt})=\frac{1}{2}\lambda(x)^2\) .

\(\lambda(x)= (\nabla f(x)^T\nabla^2f(x)^{-1}\nabla f(x))^{1/2} .\)

\(\nabla f(x)^T \nabla x_{nt} = -\lambda(x)^2\)

[牛頓法] 純牛頓法步長固定為 \(t=1\) ,以下介紹阻尼牛頓法( damped Newton method or guarded Newton method)。

[阻尼牛頓法演算法] 給定起始點 \(x\in domf\) ,容許誤差 \(\epsilon >0\) ,

  1. 計算牛頓步程 \(\Delta x_{nt}\) 和牛頓減量 \(\lambda^2\)
  2. 停止條件:如果 \(\lambda^2/2<\epsilon\) 則退出。
  3. 直線搜尋:用回溯直線搜尋選擇步長 \(t\)
  4. 迭代: \(x:=x+t\Delta x_{nt}\) .

六、牛頓法收斂性分析

設函式 \(f\) 滿足條件:

  • 二次可微.
  • 強凸, \(h^T\nabla^2f(x)\geq m \|h\|^2\)\(\forall x\in S\) .
  • 存在 \(M>0\) , \(\forall x\in S\) .
  • \(f\) 的Hessian矩陣在 \(S\) 上滿足 Lipschitz 連續:存在常數 \(L\) 使得 \(\|\nabla^2 f(x)-\nabla^2f(y)\|\leq L\|x-y\|.\) (也可看作 \(f\) 的三階導數的界,其中 \(L\) 是對 \(f\) 與其二次模型之間近似程度的一種度量)

阻尼階段

此階段所有步長 \(\alpha<1\) ,稱為阻尼階段。

\(\begin{equation}\begin{split}f(x+\alpha \Delta x_{nt}) &\leq f(x)+\alpha \nabla f(x)^T \Delta x_{nt} + \frac{\alpha^2M}{2}\| \Delta x_{nt}\| \\ &\leq f(x)=\alpha \lambda ^2 + \frac{\alpha^2 M}{2} \frac{1}{m} \Delta x_{nt}^T \nabla^2f(x)\Delta x_{nt}\\&=f(x)=\alpha\lambda^2 + \frac{\alpha^2M}{2m}\lambda^2\\&= f(x)-\lambda^2(\alpha -\frac{\alpha^2M}{2m})\end{split}\end{equation}\)

\((\alpha -\frac{\alpha^2M}{2m})\) 關於 \(\alpha\) 的導數為零,得 \(\alpha^*=\frac{m}{M}\) ,代回,

\(f(x+\alpha \Delta x_{nt})\leq f(x)-\frac{m}{2M}\lambda^2.\)

二次收斂階段

此階段每步步長都為 \(\alpha=1\) , 是純牛頓法階段, 收斂很快,所以叫二次收斂階段。

\(\xi\in (x,x+\alpha \Delta x_{nt})\)

\(\begin{equation}\begin{split} f(x+\alpha \Delta x_{nt})&\leq f(x)-\alpha\lambda^2 +\frac{\alpha^2}{2}\Delta x_{nt}^T \nabla^2 f(\xi) \Delta x_{nt}\\&= f(x)-\alpha \lambda^2 +\frac{\alpha^2}{2}\lambda^2 + \frac{\alpha^2}{2}\Delta x_{nt}^T(f(\xi)-\nabla^2f(x))\Delta x_{nt} \\&\leq f(x)-\alpha\lambda^2 + \frac{\alpha^2}{2} + \frac{\alpha^3}{2}L\|\Delta x_{nt}\|^3 \end{split}\end{equation}\)

由於強凸性和 \(\lambda^2\) 的定義有: \(\lambda^2\geq m\|\Delta x\|^2\) . 所以 \(\|\Delta x\|^3\leq \frac{\lambda^3}{m^{3/2}}\) .

再令 \(\alpha=1\) 得,

\(f(x+ \Delta x_{nt}) \leq f(x)-\lambda^2(\frac{1}{2}-\frac{L\lambda}{2m^{3/2}})\leq f(x)-\frac{\lambda^2}{4}\) .

注:上述沒有詳細解釋為什麼收斂會極其迅速,這裡通過書中的一段公式來做一個介紹,設有迭代次數 \(l\)\(k\),且 \(l \geq k\),則會有一個公式 P466 公式 9.35 \(f(x^{(l)}) - p^* \leq \frac{1}{2m} \|\nabla f(x^{(l)}) \|^2_2 \leq \frac{{2m}^3}{L^2}(\frac{1}{2})^{2^{l-k+1}}\),從上式中可以看出,在足夠多的迭代以後,每次迭代都能使正確數字的位數翻番,也就是說收斂速度是極其迅速的。

在這篇文章裡,我們介紹了Newton Method,證明了Newton Method是一個收斂非常快的方法。那是不是Newton Method的收斂時間就要小於Gradient Descent呢?No!因此Newton Method每一步要計算 \({\nabla^2 f(x)}^{-1}\),這顯然是一個非常耗時的操作!

參考文獻:Stephen Boyd, Lieven Vandenberghe: Convex Optimization

參考資料:https://www.zhihu.com/column/c_1174389256402771968

相關文章