(原創)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example

來源:互聯網
上載者:User

標籤:des   style   blog   class   c   ext   

本欄目來源於Andrew NG老師講解的Machine Learning課程,主要介紹大規模機器學習以及其應用。包括隨機梯度下降法、維批量梯度下降法、梯度下降法的收斂、線上學習、map reduce以及應用執行個體:photo OCR。課程地址為:https://www.coursera.org/course/ml

(一)大規模機器學習

   從前面的課程我們知道,如果我們的系統是high variance的,那麼增加樣本數會改善我們的系統,假設現在我們有100萬個訓練樣本,可想而知,如果使用梯度下降法,那麼每次迭代都要計算這100萬訓練集的誤差,計算代價顯然很大。那麼有沒有什麼辦法來解決呢?

隨機梯度下降(Stochastic gradient descent)

之前的批量梯度下降法定義代價函數為所有訓練樣本的誤差和:

對比在前面的梯度下降法,我們重新定義代價函數為一個單一訓練樣本的誤差:

演算法流程:

首先對訓練集隨機“洗牌”,讓訓練資料亂序;

每次迭代只計算單一誤差,然後更新θ,這樣不是每一步都是“正確”的方向,因此演算法雖然會“走近”全域最小,但可能只是在最小值附近徘徊,如所示:

微批量梯度下降法(Mini‐batch gradient descent)

微批量梯度下降法介於批量梯度下降和隨機梯度下降之間,每次迭代計算b個訓練樣本的誤差。

PS:通常令b介於2-200。

隨機梯度下降收斂(Stochastic gradient descent convergence)

在批量梯度下降中,我們可以通過繪製J與迭代次數的函數來判斷是否收斂。但是在大規模機器學習中,計算代價過大。

在隨機梯度下降中,每次迭代前都計算cost(θ,(x(i),y(i))),比如每進行1000次迭代,繪製cost(θ,(x(i),y(i)))的平均值。

  • 有時,我們會得到一個顛簸但不明顯減少的映像(左),這樣可以通過增加迭代間隔(比如2000次迭代計算平均)來使映像平緩;如果函數圖仍然木有改善,則說明模型存在錯誤。
  • 有時,我們會得到不斷上升的映像(右),這樣可以通過減小學習率α解決。

另外,我們也可以隨迭代次數增加而減小學習率α,可用如下的算式:

這樣在接近最小值點時,通過學習率,我們可以使演算法收斂,如所示:

線上學習(online learning)

    假設我們經營一家物流公司,當使用者詢問從A地到B地的快遞費用時,我們會給出報價,使用者可能會接受(y=1)或拒絕(y=0)。現在我們要建立模型,來預測使用者接受報價的可能性。

在online learning中,許多網站都會有持續不斷的使用者流,在構建模型時,我們對單一執行個體進行學習,一旦該執行個體學習完了,便可以丟棄該資料。這樣我們的模型可以很好適應並更新使用者的傾向。

Map reduce 和 並行運算(data parallelism)

   如果我們有多台電腦(或有一台多核的電腦),讓每台電腦(或電腦的每個cpu)處理資料一個子集,然後再將計算結果求和,這樣可以加速學習演算法。計算流程如下所示:

例如,有400個訓練樣本和4台電腦,我們可以使用批量梯度下降法將資料分給這4台電腦:

(二)應用執行個體(photo OCR)

問題描述:photo OCR的目標是從一張映像中識別文字。

演算法步驟:

  • 文字檢測(Text detection)
  • 字元切分(Character segmentation)
  • 字元分類(Character classification)

其中每一項任務都由單獨的團隊負責,如下流程:

滑動視窗(Sliding windows)

   1. 通過滑動視窗可以從映像中抽取對象,比如要在中識別行人,可以選擇之前訓練得到的行人的圖片尺寸來對該圖進行剪裁,然後對切片進行識別,判斷其是否是行人。

   2. 下面進行文字分割,即將文字分割成單個字元,訓練集是單個字元的圖片和兩個相連字號之間的圖片。

   3. 最後進行字元識別,可以通過我們之前的神經網路、羅吉斯迴歸演算法來實現。

擷取資料(Getting lots of data: Artificial data synthesis)

  對於high variance問題,我們需要擷取更多的訓練資料,那麼怎樣在有限的條件下擷取資料呢?

  在OCR問題中,我們可以下載各種字型,然後搭配不同的背景從而創造一些訓練資料;另外,我們也可以通過利用已有的資料,對其進行修改,如對字元圖片進行變形、旋轉、模糊等處理,從而得到大量訓練資料。

下一步該怎樣做?(Ceiling analysis

在機器學習的一些應用中,通常需要多個步驟來實現最終的預測,那麼我們應該投入精力改善那一部分呢?

OCR問題為例,流程如下:

我們可以選取每個流程的一部分,手動提供100%的正確輸出結果,然後看看整體的提升效果。假設我們的模型整體效果為72%,若Text detection輸出結果正確,模型效果為89%;若另character segmentation的輸出結果正確,模型效果為90%(即只提高了1%)。這就意味著我們應該投入更大的精力在Text detection上面。

練習

這是本課程的最後一節課,沒有作業,下面就羅列一些練習題目吧:

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.