線性搜尋下降演算法
常用的終止準則:\(\left\|\nabla f\left(x^\right)\right\| \leq \epsilon\)基本思想:給定初始點\(x^0\),依次沿著座標軸\(e_1,\dots e_n\)進行搜尋選擇步長:基於區間的直接搜尋法、非精確搜尋準則;
下降方向:不同的下降方向選取方式就有了不同的演算法
收斂性、收斂速度
給定初始點\(x^0\),\(k=0\);
判斷是否滿足\(\left\|\nabla f\left(x^\right)\right\| \leq \epsilon\),滿足則終止;
記\(y_0=x^k\),令\(y_i=y_+\alpha_ie_i\),其中\(\alpha_=\arg \min f\left(y_+\alpha e_\right), i=1, \cdots, n\)
令\(x^=y_n\),\(k=k+1\),轉到第2步
當變數之間的交叉程度較小時非常有效,比如:
\[\min f(x)=f_1(x_1)+f_2(x_2)+\dots+f_n(x_n)
\]基本思想:選擇\(x^k\)處負梯度作為搜尋方向,即\(d^=-\nabla f\left(x^\right)\)
若迭代步長\(\alpha_k\)是\(\phi(\alpha)=f(x^k+\alpha_k d^k)\)的精確最小點,則\(\phi^(\alpha_k)=0\),即:
\[\phi^(\alpha_k)=-\nabla f\left(x^\right)^\nabla f\left(x^\right)=0
\]例:\(\min f(x)=0.5x_1^2+2x_2^2\),設初始點\(x^0=(2,1)^t\)
缺點:基本思想:對\(x^k\)處的二次逼近函式進行最小化:
\[\min f\left(x^\right)+\nabla f\left(x^\right)^\left(x-x^\right)+1 / 2\left(x-x^\right)^ \nabla^ f\left(x^\right)\left(x-x_\right)
\]對二次近似函式進行求導:
\[\nabla f\left(x^\right)+\nabla^2 f\left(x^\right)\left(x-x^\right)=0
\]進行移項可得:
\[x^=x^k-[\nabla^2 f\left(x^\right)]^\nabla f\left(x^\right)
\]牛頓法步驟:
給定初始點\(x^0\),\(k=0\);
判斷是否滿足\(\left\|\nabla f\left(x^\right)\right\| \leq \epsilon\),滿足則終止;
計算\(d^k=-[\nabla^2 f\left(x^\right)]^\nabla f\left(x^\right)\),步長\(\alpha_k=1\)
\(x^=x^k+d^k\)
優缺點:
考慮\(f(x)\)在當前點\(x^k\)處的二次近似函式
\[m_k(x)=f\left(x^\right)+\nabla f\left(x^\right)^\left(x-x^\right)+1 / 2\left(x-x^\right)^ b_k\left(x-x_\right)
\]其中\(b_k\succ 0\),這個\(b_k\)就是為了代替\(\nabla^2 f\left(x^\right)\)的,因為hesse矩陣不好求
利用\(\min m_k(x)\)得到搜尋方向\(d^k=-b_k^\nabla f\left(x^\right)\)
擬牛頓法步驟:
給定初始點\(x^0\),\(b_0\succ 0\),\(k=0\);
判斷是否滿足\(\left\|\nabla f\left(x^\right)\right\| \leq \epsilon\),滿足則終止;
計算方向\(d^k=-b_k^\nabla f\left(x^\right)\)
確定步長\(\alpha_k\)
令\(x^=x^k+d^k\),確定\(b_\),\(k=k+1\),轉到第2步
在\(x^\)這個點確定\(b_\)有多種方法,如何簡便獲取矩陣\(b_\)?
在\(x^\)點處已知\(\nabla f\left(x^\right)\)和\(b_k\),此時剛得到\(x^\)點,可以計算出該點的梯度\(\nabla f\left(x^\right)\),待求的為\(b_\)。根據中值定理可知:
\[\nabla f\left(x^\right)-\nabla f\left(x^\right)=\nabla^2 f\left(\xi \right)(x^-x^k), \quad \xi=\lambda x^+(1-\lambda)x^,\lambda\in(0,1)
\]這個hesse矩陣\(\nabla^2 f\left(\xi \right)\)不好算,所以用\(b_\)來代替,所以基本要求是:
\[\nabla f\left(x^\right)-\nabla f\left(x^\right)=b_(x^-x^k)
\]這個就是擬牛頓方程,滿足擬牛頓方程的矩陣有很多。
基於已有資訊\(y_k,s_k,b_k\)獲取\(b_\)有幾種方法:
共軛方向:考慮正定矩陣\(q\)及非零向量\(d^i,d^j\)。若\((d^i)^tqd^j=0\),則稱\(d^i,d^j\)關於矩陣\(q\)共軛。
對於問題:
\[\min f(x)=1 / 2 x^ q x+c^ x, \quad q \succ 0
\]給定初始點\(x^0\)及一組關於\(q\)共軛方向\(d^0,d^1,\cdots,d^\),令\(x^=x^k+\alpha_kd^k, \quad k=0,\cdots ,n-1\)
其中\[\alpha_=\arg \min \phi(\alpha)=f\left(x^+\alpha d^\right)
\]對\(\phi(\alpha)\)求導可得到
\[\alpha_=-\frac+c\right)^ d^}\right)^ q d^}=-\frac\right)^ d^}\right)^ q d^}
\]共軛方向法為一類方法,共軛梯度法是其中一種。
幾何解釋:
對於問題
\[\min f(x)=1 / 2 x^ q x+c^ x, \quad q \succ 0
\]
在迭代下降過程中,借助當前點\(x^k\)的梯度資訊構造共軛方向\(d^k\)共軛梯度法步驟:
給定初始點\(x^0\),記\(d^0=-\delta f(x^0)\),\(k=0\)
判斷是否滿足\(\left\|\nabla f\left(x^\right)\right\| \leq \epsilon\),滿足則終止;
利用線性搜尋計算步長\(\alpha_k\)(上面有計算公式);
令\(x^=x^k + \alpha_k d^k\),並計算方向
\[d^=-\delta f(x^)+\beta_kd^k
\]其中
\[\beta_=\frac\right)^ \nabla f\left(x^\right)}\right)^ \nabla f\left(x^\right)}
\]令\(k=k+1\),轉第2步
無約束優化問題(二)
在演算法框架中我們提到,不同的方式確定搜尋方向或搜尋步長,就會得到不同的演算法,而梯度法就是用負梯度方向作為搜尋方向,即dk f xk 那麼,為什麼要用負梯度方向作為搜尋方向?因為負梯度方向是當前點的最速下降方向 就是說在xk 的某個鄰域內,在這個方向上往前走,函式值一定是下降最快的 下面我們給出數...
優化演算法 無約束優化
無約束優化問題可以表示為 min l theta 其中目標函式 l cdot 是光滑的。如何針對不同的目標函式,不同的應用場景求解乙個無約束優化問題是機器學習領域的關注點。經典的優化演算法可以分為直接法和迭代法兩大類。直接法,就是能夠直接給出優化問題的最優解的方法,這種方法能夠通過乙個解析式直接求出...
無約束優化問題 線搜尋
註明 本文的向量均取為列向量。本文嘗試通過線搜素的方法解決無約束優化問題 線搜尋方法是在每一步迭代中先計算乙個線性方向p k,然後決定乙個步長alpha k。具體迭代點變化如下所示 因此,線搜尋方法的關鍵在於怎樣確定搜尋方向以及每一次迭代的步長應取多大。對於搜尋方向p k,乙個最基本的要求就是該方向...