【咱們的目標】系列演算法講解旨在用最簡單易懂的故事情節幫助大家掌握晦澀無趣的機器學習,適合對數學很頭疼的同學們,小板凳走起!
今天咱們的故事繼續上一次線性回歸來說,還不熟悉的小夥伴機票在這!機票直達-線性回歸
當時咱們怎麼嘮的,是不是很多情況下要求解的目標沒辦法直接求呀!那該怎麼辦呢?咱們來用機器學習中最常用的套路-優化求解,也就是一步一步朝著最優解的方向前進!
首先給出目標函式(還記得線性回歸中的目標函式嗎?)也就是我們要達到的目標是使得目標函式最小(最小對應著梯度下降問題,也就是下山,那麼最大也就是梯度上公升,求極大值)可以把我們的優化目標看成一座山,山是由我們兩個引數組成的,從上圖可以看出在山中有乙個山谷的最低點,這個最低點所對應的引數就是我們要求解的值!
那該怎麼求解呢?下山要一步一步來,第一步要找到合適的下山方向,也就是引數所對應的梯度方向(偏導)因為我們要沿著最快的方向去下山,所以梯度的方向是最合適的(多個引數的時候需要各自求其偏導)。找到方向之後我們就該實際的去走啦,那一次走多大呢?經驗表明一次走那麼一小小小小步是比較合適的,因為如果步伐太大容易偏離全域性最優解只得到區域性最優解。方向與步長都搞定了,接下來按著我們設計好的路線更新引數就可以啦!
下山的方式也有很多種,我們來對比一下。
批量梯度下降:如上式需要綜合考慮所有養那本,這就太慢了,但是效果還是蠻好的。
隨機梯度下降:觀察發現,每一次進行引數更新,只選擇了乙個樣本,這樣速度極快,但是代價就是一旦樣本有瑕疵,會對結果產生很大的干擾!所以隨機梯度下降會產生很大的浮動。
小批量梯度下降:這個就友好多了,綜合了上面兩位的優缺點,在迭代的時候選擇一批(32,64,128比較常見)個樣本來平均計算梯度的更新方向,這個就是現在應用最廣的梯度下降方法啦!乙個字,實用!
接下來我們再來研究一下步長(學習率)對結果產生的影響,從圖中可以看到很多條線並且它們之間有著明顯的差異,為啥模型不收斂!效果不好!沒達標!罪魁禍首就是學習率了,它對我們結果會產生非常大的影響,一般情況下我們都是用較小的學習率,較多的迭代次數來滿足它!
這張圖是乙個在真實資料集下使用邏輯回歸進行迭代的目標函式變化情況,可以看到當我們使用梯度下降的時候目標函式最終達到了乙個收斂狀態,現在已經最好了嗎?我們可以再增大些迭代次數再看看!
繼續增大迭代次數,發現目標函式又發生了變化,所以要讓模型更完美,需要更多輪次的訓練!我們再來對比下不同的梯度下降策略!
這張圖看起來有點亂呀,沒有達到熟練狀態,損失函式值還在亂蹦躂,這個就是隨機梯度下降的結果,可以看出來這樣的模型是不好的,只用乙個樣本來更新引數是不夠的!所以現在我們很少使用隨機梯度下降來解決實際問題。(那真的沒辦法用它了嗎?也可以代價就是用極小的學習率配上極大的迭代次數,那為啥不用小批量的呢?)
最後的這張圖就是收尾圖啦,首先觀察只用了4000次迭代就比之前的效果要好很多!這裡做了如下兩個工作。
(1):對資料進行了標準化,讓資料各個特徵均值為0方差為(資料預處理的常規套路)
(2):使用了小批量梯度下降進行迭代(保證了收斂性同時也加快了速度)
兩個簡單的操作就使得我們的模型效果快速達到了收斂狀態,請記住這倆套路,你會一直沿用下去的!
機器學習 梯度下降
參照 機器學習 這本書的第4.4.3節。一.解決目標及情景假設 當給定一些資料,輸入x向量已知,輸出y也已知,設計乙個線性函式y h x 去擬合這些資料。既然是線性函式,在此不妨設為h x w0 x0 w1 x1。此時我們遇到的問題就是如何確定w0和w1這兩個引數,即w w0,w1 這個向量。既然是...
機器學習 梯度下降
梯度下降法 如果讀者對方向導數和梯度的定義不太了解,請先閱讀上篇文章 方向導數與梯度 前些時間接觸了機器學習,發現梯度下降法是機器學習裡比較基礎又比較重要的乙個求最小值的演算法。梯度下降演算法過程如下 1 隨機初始值 2 迭代 在這裡,簡單談一下自己對梯度下降法的理解。首先,要明確梯度是乙個向量,是...
機器學習 梯度下降
1.引數要同時更新 2.初始化不同,獲得的最小值也不同,即得到的引數也不同,演算法收斂到不同的區域性最優解。凸函式只有全域性最優解,無論如何初始化,不必擔心陷入區域性最優解 3.越接近最小值時,收斂的速度最逐漸減慢,在學習率不變的情況下,越接近最小值 最優解 偏導數的絕對值會越來越小,所以演算法收斂...