為什麼梯度下降能找到最小值?
在梯度下降的演算法中,如果只到了局部的最小值,那麼偏導數還是會等於零,就會收聚了,就不會再往外面跳出了.....
首先,這不是找到最小值,而是極小值,有時候甚至是鞍點。
其實梯度下降只是不動點(fixed point)迭代的一種,梯度下降找到的其實是不動點,而不是直接尋找極小值。在可導的區間上,梯度下降迭代的不動點(梯度為0的點)有三類——極大值,極小值,鞍點。對於梯度下降來說,極大值是不穩定的(再小得誤差都可能導致迭代從不動點上逃逸,並且,除非你初始值就是極大值,否則迭代過程幾乎不可能到達極大值),而鞍點不穩定性次之(在某側的誤差會導致逃逸),而極小值是梯度下降過程最穩定的不動點。迭代過程可以參照下雨的時候水的流向,水總是會聚集在坑(極小值)裡面。
並不是所有不動點迭代都是收斂的。對於梯度下降來說,梯度下降只是在點得足夠小的鄰域內,負梯度方向讓函數值減小,如果你的參數不合適,迭代過程總是超過了這個足夠小的鄰域,那迭代可能會發散。
如果函數是凸的,那麼梯度下降會收斂到最小值(因為只有一個極小值,它就是最小值)。
對於一般問題來說,梯度下降能找到最小值是個概率事件。雖然有很多優化方法,但它仍然是個概率事件。有很多概率方法,試圖讓你從不穩定的不動點附近「跳出去」(比如,對迭代的過程增加一些擾動),這樣得到的不動點往往更加穩定。通常,這些穩定的不動點即便不是最優值,性質也足夠好了:) 所以,在很多時候我們也並不是必須要找到最優值。
~ ~ ~
PS:大部分迭代演算法其實都是不動點迭代。構造這個過程的精髓在於——解就是不動點,但不動點未必是解。對於某些特定的問題,不動點就是解(梯度下降之於凸函數)
其實我覺得自己說了一些廢話,因為迭代的過程,如果收斂,那麼結果必然是到了不動點。所以所有能收斂的迭代,都是不動點迭代。你需要關注的是:這些不動點是什麼?它們都是解嗎?它們是不是在迭代過程中足夠穩定?只有在函數為凸的時候才會收斂到最小值
梯度下降法能找到的是極小值...
極小值!=最小值..1.梯度下降能找到函數極小值。2.能找到極小值的原因是負梯度方向是函數值最速下降方向。(泰勒展開)3.想要用梯度下降找到最小值要求是凸函數。
4.1如果不是凸函數,要麼把目標函數近似成凸函數
4.2.或者用一些智能優化演算法例如模擬退火,以一定的概率跳出局部極值,但是這些演算法都不保證能找到最小值。因為:
根據一階泰勒展開,對於一個可微函數,對於任意的x,有:,其中是梯度,如果一維情況就是一階導數。而其中, 是兩向量之間的夾角。當為180度得時候,g(x)*p可取到最小值,即為下降最快的方向。所以,負梯度方向為函數f(x)下降最快的方向。如果f(x)是凸函數,則局部最優解就是全局最優解。按照一本古老的神經網路教材的做法,你要設置一個慣性,讓他掉進小坑的時候衝出來,加大進入最小值的概率。
建議找本最優化教材看看裡面的證明
本來就不保證找到全局最優
梯度下降,梯度上升
函數f 具有一階連續導數,有極小值Xmin,已知Xmin的第k次近似值為Xk , 求Xmin的第k+1次近似值X ?
設Xk沿著單位向量 V 的方向可以到達X ,即|V|=1, X = Xk + ? V(?為步長,?&>0)
對f( X )在處做一階泰勒展開:
f(X ) = f(Xk + ? V) = f(Xk ) + ▽f(Xk ) * ? V +O(?V*?V)
≈ f(Xk ) + ▽f(Xk ) * ? V
所以:f(X ) - f(Xk ) ≈ ▽f(Xk ) * ? V
▽f(Xk ) * ? V = ?* |▽f(Xk )| * |V| * cosθ
θ為▽f(Xk ) 和 V 的夾角,當θ取 180 時, V = - ▽f(Xk ) , ▽f(Xk ) * ? V 取得最小值,f(X ) -
f(Xk )取得最小值
即當Xk沿著 - ▽f(Xk )的方向移動?|▽f(Xk )|距離得到 Xmin 的第 K+1 次近似值X ,
X = Xk - ?▽f(Xk )
▽f(Xk )叫做梯度
梯度下降:函數 f 沿著-▽f(Xk )搜索下去就可以得到一個局部最小值
同理,梯度上升:函數 f沿著▽f(Xk )搜索下去就可以得到一個局部最大值
能找到極小值,不一定能找到最小值
所以你需要將優化問題轉化為凸優化問題
就算找到的是最小值也只是在訓練集上的,所以找到較小的極小值已經可以了,還可以自動避免過擬合,有正則化方法就對應著訓練早結束
首先函數要是凸的並且有界,才存在全局極小點,否則梯度下降找的是局部極小點(不會找到鞍點,因為梯度下降的搜索方向是保證函數值下降的,不會往「上」找);如果從感性認識上看,應該不難理解為什麼下降到局部/全局最小值,所以我猜題主是需要一點理論上的說服力?重點在於理解「下降」一詞,而不是「梯度」,梯度是最快的下降方向這句話沒錯,但對於理解「為什麼能找到」最小值上幾乎沒有幫助= =,看看下降方法的公式吧:隻要新的能保證函數值下降,就是有用的下降方向,隻要每次迭代都是下降的,也即是產生的序列為單調數列,而且有下界,則根據數學分析的數列收斂定理,單調有界數列必定收斂,如果函數不是有界的話,會死循環。。
如果在線性回歸問題應用,因為線性回歸是凸優化問題(損失函數是凸函數),能找到該問題的最小值
極小值就夠了吧...如果你說的是機器學習里的線性回歸應用貌似沒問題,找到全局最優解還是比較費力氣,有時候只能找個還不錯的極小值當做最小值了
, 極小值不等於最小值呀。
推薦閱讀:
※如果要學習並使用深度學習,應該學哪些預備知識?
※MPI 在大規模機器學習領域的前景如何?
※知道美國哪些機器學習和計算機視覺的實驗室有PHD位置么?
※深度學習或者機器學習中有哪些演算法涉及貪心演算法或者動態規劃演算法的思想?
※機器學習在凝聚態(多體、強關聯)的研究現狀如何?