從抽象角度,先好好解釋一下優化演算法
每乙個機器學習模型都有乙個目標函式,而學習的目標,就是最小化目標函式
直觀而言,當我們已經獲得了乙個函式,最小化該函式其實就是,在其自變數取值範圍內,找到使得因變數最小的那個自變數取值點。
注意的訓練模型涉及兩個函式,乙個是模型函式、乙個是目標函式,這裡說的是目標函式
是不是所有目標函式都能夠在自變數引數取值範圍內找到因變數引數的最小值呢?顯然不是。
比如,這個多項式函式:y=x,x 屬於實數——這樣的函式就沒有最小值。
因為,x 的取值範圍是整個實數域,x 越小 y 也就越小,x 取值可以無限小下去,一直 到負無窮,y 同樣可以到負無窮。可惜負無窮並不是乙個數值,y 實際上是沒有最小值的。
一般使用梯度下降法進行優化的模型的目標函式,或者其他一些經典的機器學習模型的目標函式都是凸函式,函式的凸性保證了其最小值。
什麼是凸函式:
定義:某個向量空間的凸子集(區間)上的實值函式,如果在其定義域上的任意兩點 ,有 f(tx + (1-t)y) <= tf(x) + (1-t)f(y),則稱其為該區間上的凸函式。(凸是使用的外文定義,在國內一般為凹)
已經知道了學習的目標就是最小化目標函式的取值,而目標函式又是凸函式,那麼學習的目標自然轉化成了尋找某個凸函式的最小值
因為本課都是講解經典機器學習模型,所以,前人的工作已經保證我們用到的目標函式都是凸函式。如果未來在應用中構建自己的目標函式,那麼千萬記得在直接應用任何優化演算法之前,應該先確定它是凸函式。
1.隨機取乙個自變數的值x0
2.對應求出因變數值:f(x0)
3.計算f(x0)出目標函式發f(x)的導數
4.從f(x0)開始,沿著該處目標函式導數的反方向,按一定步長α向前走一步,走到的位置對應於自變數的取值為x1
5.繼續重複2-3-4,達到指定迭代次數或近似收斂到最優解,退出迭代。
上面講了梯度下降法,其中的 α,又叫做步長,它決定了為了找到最小值點而嘗試在目標函式上前進的步伐到底走多大。
步長是演算法自己學習不出來的,它必須由外界指定。
這種演算法不能學習,需要人為設定的引數,就叫做超引數。
不過大步伐也不是沒有優點。步伐越大,每一次前進得越多。步伐太小,雖然不容易「跨過」極值點,但需要的迭代次數也多,相應需要的運算時間也就越多。
為了平衡大小步伐的優缺點,也可以在一開始的時候先大步走,當所到達點斜率逐漸下降——函式梯度下降的趨勢越來越緩和——以後,逐步調整,縮小步伐
梯度下降的難點
那是不是只要步伐合適,就一定能找到最小值點呢?也不一定。
如果目標函式有多個極小值點(多個向下的「彎兒」),那麼如果開始位置不妥,很可能導致最終是走到了乙個區域性極小值就無法前進了。比如下圖的 postion1 和 position2。
這種情況確實很難克服,是梯度下降演算法的一大挑戰。
如果目標函式不能確定只有乙個極小值,而獲得的模型結果又不令人滿意時,就該考慮是否是在學習的過程中,優化演算法進入了區域性而非全域性最小值。
這種情況下,可以嘗試幾個不同的起始點。甚至嘗試一下大步長,說不定反而能夠跨出區域性最小值點所在的凸域。
第09課 最常用的優化演算法 梯度下降法
在這裡,我們有必要從抽象角度,先好好解釋一下優化演算法。在前面,我們講到,每乙個機器學習模型都有乙個目標函式,而學習的目標,就是最小化目標函式。直觀而言,當我們已經獲得了乙個函式,最小化該函式其實就是,在其自變數取值範圍內,找到使得因變數最小的那個自變數取值點。是不是所有函式都能夠在自變數取值範圍內...
最優化 梯度下降法
最優化問題就是求解函式極值的問題,包括極大值和極小值,幾乎所有機器學習演算法歸根到底都是在求解最優化問題。在高等數學 微積分中有求極值統一的思路 找函式導數等於0的點,只要函式可導我們就可以用這種方法。在機器學習中我們一般求函式的極小值,若求極大值我們只需要整體加負號。有些時候我們會對優化變數x有約...
數值優化 梯度下降法
ng的課件1,引出常用的優化方法梯度下降法 gradient descent 對於ordinary least squares regression,cost function為 求最小值,意味著求導數為0的位置 考慮只有乙個樣本 這叫做lms update rule least mean squa...