文章目錄
0. 版權聲明
- Machine learning 系列筆記來源於Andrew Ng 教授在 Coursera 網站上所授課程 Machine learning1;
- 該系列筆記不以盈利爲目的,僅用於個人學習、課後複習及交流討論;
- 如有侵權,請與本人聯繫([email protected]),經覈實後即刻刪除;
- 轉載請註明出處;
1. 在大規模數據集上應用梯度下降算法
- 處理大數據集的方法:
- Stochastic gradient descent (隨機梯度下降);
- Map reduce (映射化簡);
1.1 Stochastic gradient descent (隨機梯度下降)
- Q:Batch gradient descent (批量梯度下降,即普通的隨機梯度下降算法)與 Stochastic gradient descent (隨機梯度下降)的區別?
- 批量梯度下降:每次更新梯度值時,需要考慮所有的樣本;
- ,當 m 較大時,計算量較大,因此該方法不適用於大規模數據集;
- 隨機梯度下降:每次更新梯度值時,只需考慮一個樣本,運行速度快;
- 批量梯度下降:每次更新梯度值時,需要考慮所有的樣本;
- 隨機梯度下降算法的步驟:
- Step 1:將所有樣本順序隨機排列,確保按 Step 2 中每次讀取樣本的順序是隨機的,同時有助於加快算法收斂;
- Step 2:
- ;
- 該步驟與普通的隨機梯度下降算法相同;
- 在兩層循環
for i=1:m
、for i=1:n
中,更新梯度 ;- 該式中 ;
- 即每次讀取一個樣本,將所有特徵參數更新一次;
- 該方法在每次迭代時,代價函數不總是在減小,可能有些時候會增大,但最終將以迂迴曲折的路徑接近最小值;
- Step 2 通常需要執行 1次,一般不超過 10 次;
- ;
1.2 Mini-Batch gradient descent (小批量梯度下降)
- Q:Batch gradient descent 、Stochastic gradient descent 與 Mini-batch gradient descent 之間的區別?
A:- Batch gradient descent:每次更新梯度值時,需要考慮所有的樣本;
- Stochastic gradient descent:每次更新梯度值時,只考慮 1 個樣本;
- Mini-batch gradient descent:每次更新梯度值時,只考慮 b 個樣本,;
- ;
- b 表示 batch,需要選擇合適的參數 b,常見的取值範圍爲 2-100;
- 當使用向量化的方法時,小批量梯度下降算法將比隨機梯度下降算法速度更快;
1.3 隨機梯度下降收斂
- 判斷隨機梯度下降是否收斂的步驟:
- ;
- 在使用 更新 之前,計算 ;
- 例如,每 1000 次迭代中,求解 1000 個樣本的 的均值,並將所得值繪圖;
- 增大求均值的樣本數量(即上例中的 1000):
- 優點:使曲線更加平滑,易於觀察代價函數的變化趨勢;
- 缺點:增大求均值的樣本數量,得到的關於算法的反饋信息有些延遲;
- 增大求均值的樣本數量(即上例中的 1000):