最優化方法問題總結

最近在學習得過程中感悟很大,即通過OKR的方法來形成自己學習內容中最小的閉環。另外對所謂學過的知識經常忘有了新的認識,所要做的不是以前的那套–所謂和遺忘作鬥爭不斷去重複,而是思考清楚爲什麼會遺忘,一是自己沒有真正理解,二是沒有將知識點相互關聯串起來。

一定要找到所學習內容中最小的閉環,然後,慢下來

Q: 解釋梯度下降法和牛頓法原理:

梯度下降法:泰勒展開到一次項,忽略二次以上的項,用一次函數來線性代替,最後通過移項來得到迭代式;

牛頓法:把函數展開未二次,忽略二次以上的項,用二次函數來近似代替,最後通過對二次的函數求梯度,讓梯度爲0來得到迭代式;

Q: 一句話解釋下梯度下降及牛頓法:

梯度下降法是沿初始點梯度向量的反方向進行迭代,進而得到函數的極值點,參數迭代公式爲:

xk+1=xkγf(xk)x_{k+1} = x_k - \gamma \nabla f(x_k)

牛頓法是直接使用駐點處導數爲零,推導處參數迭代公式:

xk+1=xkγHk1gkx_{k+1} = x_k - \gamma H_k^{-1} g_k

Q: 梯度下降法的優缺點,如何改進?

  1. 梯度下降沿着負梯度方向走,向目標函數梯度爲零的點收斂,因此迭代可能停止在鞍點處;

    什麼是鞍點?->目標函數在此點上的梯度(一階導數)值爲 0,但從該點出發的一個方向是函數的極大值點,而在另一個方向是函數的極小值點。

    判斷鞍點標準:函數在一階導數爲0處(駐點)的海森矩陣爲不定矩陣;

    判斷矩陣正定:對於n階矩陣A,若有任意的非0向量X: $ X^{T} A X > 0 $

  2. 梯度下降法只會收斂到極小值點,而不一定是最小值點。當目標函數存在多個極小值點時,初始點x0x_0的選擇就非常重要;

  3. 梯度下降法的學習率是人爲設置的一個參數,當學習率較小時,達到收斂的迭代次數比較大。當學習率較大時,會存在極小值點處震盪無法收斂的情況。

改進方法:初始值的設定,步長的選擇,迭代終止的判定規則;

Q: 梯度下降法中,爲什麼要沿着負梯度方向走?

由多元函數的泰勒公式:

f(x)=f(x0)+Tf(x0)(xx0)+(xx0)f(x) = f(x_0)+\nabla ^ T f(x_0)(x-x_0)+\circ(|x-x_0|)

當x在x0x_0的鄰域內,則可以將高階無窮小忽略,得到:

f(x)f(x0)Tf(x0)(xx0)f(x)-f(x_0)\approx \nabla^T f(x_0)(x-x_0)

因爲目的是從f(x0)f(x_0)找更小的f(x),所以f(x)f(x0)f(x)-f(x_0)小於等於0,即:Tf(x0)(xx0)\nabla^T f(x_0)(x-x_0)小於等於0;

解釋一:湊法

Tf(x0)(xx0)\nabla^T f(x_0) (x-x_0)可以看作是兩個向量做內積,我們可以令xx0=Tf(x0)x-x_0= -\nabla^T f(x_0),
代入得:

Tf(x0)Tf(x0)-\nabla^T f(x_0) \nabla^T f(x_0),其一定小於等於0,故x=x0f(x0)x = x_0-\nabla f(x_0)

解釋二:向量內積

根據向量得內積公式,得:XTY=XYcosθX^TY = ||X|| ||Y|| cos\theta
θ\theta爲鈍角時即可保證函數是往降低得方向來進行移動,當取負方向時,即是梯度下降的最快的方向。

從原理解釋,梯度下降中步長的作用?

梯度下降優化的基本理論是採用迭代法近似求解,逐步求精。

在近似求解的過程中,我們把無窮小量忽略掉了,而忽略了無窮小量的前提是x與x0x_0離得充分近,才能忽略泰勒展開中一次以上的項。而步長的作用就是和x0x_0的梯度相乘後,控制讓x與x0x_0離得充分近。

Q: 牛頓法的優缺點,如何改進?

  1. 牛頓法不能保證每次迭代時函數值都下降,故當步長的值沒取好的話可能會不收斂。所以解決的方法是直線搜索,即搜索最優步長,具體的做法是讓步長取一些離散值:如->0.0001,0.001,0.01等,比較取哪個值時函數值下降最快,作爲最優步長;
  2. 牛頓法的推導中,要求Hessian矩陣可逆,所以當Hessian矩陣不可逆時,牛頓法會失效;
  3. 當變量個數多,海森矩陣的規模大時,求解方程組會很消耗時間;(擬牛頓法對此進行了優化)
  4. 局部極小值和鞍點問題;

Q: 爲什麼說目標函數是二次函數時,無論初始點在什麼位置,牛頓法就可以一步到位?

牛頓法的基本方法仍然是採用迭代法近似求解,逐步求精。和梯度下降法不同的是,其直接找
f(x)\nabla f(x)等於0,採用迭代法向着梯度爲0的點靠近。

多元函數的泰勒展開公式展開到二階得到:

f(x)=f(x0)+Tf(x0)(xx0)+12(xx0)TH(xx0)+(xx02)f(x) = f(x_0)+\nabla ^ T f(x_0)(x-x_0) + \frac{1}{2}\quad(x-x_0)^TH(x-x_0) + \circ(|x-x_0|^2)

如果x在x0x_0的鄰域內,可以將無窮小給忽略掉,得到:

f(x)f(x0)+Tf(x0)(xx0)+12(xx0)TH(xx0)f(x)\approx f(x_0)+\nabla^T f(x_0)(x-x_0)+\frac{1}{2}\quad(x-x_0)^TH(x-x_0)

在這裏我們爲了湊出f(x)\nabla f(x),對兩邊的x分別求梯度,由兩個推導公式推得:

WTx=W\nabla W^Tx = W

XTAX=(A+AT)X\nabla X^T A X = (A+A^T)X

f(x)0+f(x0)+H(xx0)\nabla f(x)\approx 0+\nabla f(x_0)+H(x-x_0)

令梯度值爲0,得:

f(x0)+H(xx0)=0\nabla f(x_0)+H(x-x_0) = 0

因爲f(x0)f(x_0)已知,記爲g,那麼:H(xx0)=gH(x-x_0)=-g,如果海森矩陣可逆,則兩邊同時乘上H1H^{-1},有:
XX0=H1gX-X_0 = -H^{-1}g

X=X0H1gX = X_0 - H^{-1}g

同樣,因爲X需要在X0X_0的鄰域內,所以也給加上步長,得:

xk+1=xkγHk1gkx_{k+1} = x_k-\gamma H_k^{-1}g_k

所以,當目標函數爲二次函數時,海森矩陣爲一個數,當步長爲1時,可以直接得到最優的X

Q: 牛頓法中要求Hessian矩陣可逆在哪一步中體現?

在令f(x)=0\nabla f(x)=0後,需要對兩邊化簡得出X時;

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