Chapter 10 大規模機器學習 (reading notes)

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 (隨機梯度下降)的區別?
    • 批量梯度下降:每次更新梯度值時,需要考慮所有的樣本;
      • θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j,當 m 較大時,計算量較大,因此該方法不適用於大規模數據集;
    • 隨機梯度下降:每次更新梯度值時,只需考慮一個樣本,運行速度快;
  • 隨機梯度下降算法的步驟:
    • Step 1:將所有樣本順序隨機排列,確保按 Step 2 中每次讀取樣本的順序是隨機的,同時有助於加快算法收斂;
    • Step 2:
      • cost(θ,(x(i),y(i)))=12(hθ(x(i))y(i))2,Jtrain=1mi=1mcost(θ,(x(i),y(i)))cost(\theta,(x^{(i)},y^{(i)}))=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2,J_{train}=\frac{1}{m}\sum_{i=1}^mcost(\theta,(x^{(i)},y^{(i)}))
        • 該步驟與普通的隨機梯度下降算法相同;
      • 在兩層循環for i=1:mfor i=1:n中,更新梯度 θj:=θjα(hθ(x(i))y(i))xj(i)\theta_j:=\theta_j-\alpha(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j
        • 該式中 θj=cost(θ,(x(i),y(i)))\frac{\partial}{\partial \theta_j}=cost(\theta,(x^{(i)},y^{(i)}))
        • 即每次讀取一個樣本,將所有特徵參數更新一次;
        • 該方法在每次迭代時,代價函數不總是在減小,可能有些時候會增大,但最終將以迂迴曲折的路徑接近最小值;
        • 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 個樣本,1<b<m1<b<m
      • θj:=θjα1bk=1b(hθ(x(k))y(k))xj(k)\theta_j:=\theta_j-\alpha\frac{1}{b}\sum_{k=1}^b(h_\theta(x^{(k)})-y^{(k)})x^{(k)}_j
      • b 表示 batch,需要選擇合適的參數 b,常見的取值範圍爲 2-100;
      • 當使用向量化的方法時,小批量梯度下降算法將比隨機梯度下降算法速度更快;

1.3 隨機梯度下降收斂

  • 判斷隨機梯度下降是否收斂的步驟:
    • cost(θ,(x(i),y(i)))=12(hθ(x(i))y(i))2cost(\theta,(x^{(i)},y^{(i)}))=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2
    • 在使用 (x(i),y(i))(x^{(i)},y^{(i)}) 更新 θ\theta 之前,計算 cost(θ,(x(i),y(i)))cost(\theta,(x^{(i)},y^{(i)}))
    • 例如,每 1000 次迭代中,求解 1000 個樣本的 cost(θ,(x(i),y(i)))cost(\theta,(x^{(i)},y^{(i)})) 的均值,並將所得值繪圖;
      • 增大求均值的樣本數量(即上例中的 1000):
        • 優點:使曲線更加平滑,易於觀察代價函數的變化趨勢;
        • 缺點:增大求均值的樣本數量,得到的關於算法的反饋信息有些延遲;

n. Reference


  1. https://www.coursera.org/learn/machine-learning/home/welcome ↩︎

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