吳恩達機器學習訓練祕籍整理四十四到五十二章(七)優化測試和端到端
第四十四章
優化驗證測試
假設你正在構建一個語音識別系統,該系統通過輸入一個音訊片段A,併為每一個可能的輸出句子S計算得分ScoreA(S) 。例如,你可以試著估計 ScoreA(S) = P(S|A) ,表示句子S是正確輸出的轉錄的概率,其中 A 是給定的輸入音訊。
假設有一個音訊片段記錄著某人說的:“我愛機器學習。”但你的系統輸出的卻是不正確的 “我愛機器人。”,它沒能夠輸出正確的轉錄。造成該誤差的可能原因有兩種:
-
搜尋演算法存在問題。 近似搜尋演算法沒能夠找到最大化ScoreA(S)的那個S.
-
目標(得分函式)存在問題。 我們對ScoreA(S
對應不同的失敗原因,你需要優先考慮的工作方向也將很不一樣。如果原因 1 導致了問題,你應該改進搜尋演算法。如果原因 2 導致了問題,你應該在評估學習演算法的函式ScoreA(S) 上面多花些心思。
為了搞清楚上面的 1 或 2 是否存在問題,你可以執行 優化驗證測試(Optimization Verification test): 首先計算ScoreA(S*) 和 ScoreA(Sout) ,接著比較他們的大小。有兩種可能:
情況1:ScoreA(S*) > ScoreA(Sout)
在這種情況下,你的學習演算法正確地給了S* 一個比Sout 更高的分數。儘管如此,我們的近似搜尋演算法選擇了Sout而不是S* . 則表示你的近似搜尋演算法沒能夠找到最大化ScoreA(S
情況2:ScoreA(S*) ≤ ScoreA(Sout)
在這種情況下,計算ScoreA(.) 的方式是錯誤的:它沒有給正確的輸出S* 比實際輸出Sout 一個相同或更高的分數。優化驗證測試告訴你,目標(得分函式)存在問題。因此,你應該專注於改進你的演算法對不同的句子S學習或近似出得分ScoreA(S) 的方式。
第四十五章:
優化驗證測試的一般形式
在人工智慧領域,這是一種非常常見的 “設計模式”,首先要學習一個近似的得分函式Scorex(.) ,然後使用近似最大化演算法。如果你能夠發現這種模式,就能夠使用優化驗證測試來理解造成誤差的來源。
第四十六章:
強化學習
第四十七章:
端到端學習的興起
神經網路通常用於端到端學習系統,“端到端” 這個術語指的是我們要求學習演算法直接從輸入得到期望的輸出,即學習演算法將系統的 “輸入端” 連線到 “輸出端” 。
第四十八章
端到端學習的例子
1. 端到端系統可能會輸入一個音訊片段,並嘗試直接輸出文字記錄:
2. 這是一個自動駕駛汽車的簡單流水線架構:傳統演算法有三個元件構成,端到端只需要學習演算法就可以
端到端:
第四十九章:
端到端學習的優缺點
缺點:這個系統缺乏人工設計知識,因此當訓練集很小的時候,它的表現可能比人工設計的流水線更加糟糕。
優點:然而當訓練集很大時,它不會收到頻譜系數或者語音表示方法的限制。如果學習演算法是一個足夠大的神經網路,且喂進去許多的訓練資料,就有可能做得更好,甚至達到最優錯誤率。
第五十章:
流水元件的選擇:資料可用性
你可以使用機器學習演算法進行車輛和行人的檢測,另外要獲取這些資料也並非難事——如今有許多含有大量帶車輛和行人標記的計算機視覺資料集。
為了訓練這樣一個系統,我們需要一個包含 <影象,操縱方向> 資料對的大型資料集。然而讓人們在駕駛汽車時收集汽車的操縱方向的資料是非常費時費力的,你需要一輛特殊配置的汽車,且需要巨大的駕駛量來涵蓋各種可能的場景。這就使得端到端系統難以進行訓練,獲得大量帶標記的行人或者是汽車影象反而要容易得多。
第五十一章:
流水線元件的選擇:任務簡單性
如果你能夠完成一個複雜的任務,並將其分解為更簡單的子任務,然後顯式編寫子任務步驟程式碼,那麼你就會給演算法一些先驗知識,從而幫助它更有效地學習任務。
假設你正在構建一個暹羅貓檢測器。下面是一個純粹的端到端架構:
流水線元件,將任務分為貓咪檢測+分類問題:
與僅僅使用標籤 0/1 來訓練一個純粹的端到端分類器相比,流水線中的兩個元件——貓咪檢測器和貓種類分類器——似乎更容易進行學習,而且需要更少的資料。
第五十二章:
直接學習更為豐富的輸出。
這體現了深度學習的高速變化趨勢:當你有正確的(輸入,輸出)標籤對的時候,有時可以進行端到端學習,即使輸出是一個句子、影象、音訊,或者其它的比一個數字更豐富的輸出形式。