1. 程式人生 > >結構化機器學習專案_課程筆記_第一、二週

結構化機器學習專案_課程筆記_第一、二週

第一週 機器學習策略_1

這一門課主要介紹了在具體專案實踐中會遇到的一些問題以及採取的策略。所擷取的圖片依然來源於吳恩達老師的相關視訊資源。

1. 正交化(Orthogonalization)

Andrew建議機器學習的調參過程應保持正交化。上圖所示的機器學習的4個流程,每一步的除錯方式舉例見藍色字型。對於每一步的處理應儘量不影響其他步驟。當然你也可以採用例如early stopping這種非正交化的調參方式(因為其一邊增加訓練誤差,一邊減少驗證誤差),但是儘量還是採用正交化的方式進行處理。 

2.設定單實數評價指標的目的是為了更有效率地進行決策。例如評價一個二分類器時,存在著查準率和查全率兩個指標或者多個指標時,很難判斷哪一個分類器更好,此時若採用F1分數(查準率和查全率的調和平均數)這樣一個單一實數指標進行判斷,效率就很高了。還有一種情況是,如果你需要考慮到多個指標,這在實際應用中也常常出現,那麼你可以選擇設定一個優化指標,以及多個滿足指標來進行篩選。

3. 訓練\驗證\測試集的劃分。應滿足驗證集和測試集來自於同一個分佈(全部資料打散然後隨機分配)。百萬級別大資料,98-1-1,這個劃分在上一門課也提到過。

4. 貝葉斯最優誤差:理論可達到的最優誤差。在多數情況下,人類能達到的誤差極限約等於貝葉斯誤差。常利用人類誤差近似代替貝葉斯最優誤差

可避免偏差:貝葉斯最優誤差和訓練誤差的差值。

判斷方差大小的一個指標:驗證誤差和訓練誤差的差值。

二者的權衡,可以理解為偏差與方差的權衡。

感覺這些和之前提到的有些重複,不同之處在於,Andrew在強調,在具體專案之中,常用作比較的基準是人類的誤差而不是貝葉斯最優誤差。

5. human-level performance 人類水平誤差近似估計貝葉斯誤差。合理的選擇人類水平誤差去替代貝葉斯誤差,其實是提供了一個判別偏差與方差的基準。計算機在結構化資料方面已經做得比人類更好了,但是人類更擅長於自然感知資料(影象、音訊、文字),在這些方面,計算機要超越人類還需要一段路。因此,在許多方面使用人類對於誤差的表現來近似代替貝葉斯最優誤差也是合理的。

第二週 機器學習策略_2

還是繼續講述在具體專案中會遇到的一些問題,以及一些解決的思路和策略。

1. 誤差分析:通過給分類錯誤的樣本進行統計,分析錯誤的原因以及更佔的比重,選擇接下來改善的思路。

2. 在訓練集中,深度學習對於隨機誤差(但對於系統性誤差就沒有那麼好的魯棒性了)有著很強的魯棒性,有時候對於少量隨機標記錯誤的標籤不進行更改在最後的結果上也不會存在較大的問題。如果在dev集上也存在標記錯誤的情況,這時,將其納入誤差分析中,分析其是否值得花時間去改進。這裡Andrew給出了三點建議:

(1) 當對dev集做修改時,同樣也應該對test集做修改,這樣保證二者來源於同一個分佈。

(2)不光檢驗錯誤的例子,也應該檢驗正確的例子。

(3)訓練集和驗證集/測試集如果在分佈上有一點差異是可以接受的,但是必須保證驗證集和測試集來源於同一個分佈。

3. 快速建立相對簡單的第一個原型系統,然後開始迭代。

4. 訓練集和開發集/測試集可能會來自於不同的分佈,但是這也沒有關係。明確專案的目標來分配資料,而不是一味的均分。

5. 當訓練集和開發集來自於不同分佈,在判斷偏差/方差上會有一些不同。具體方法是從訓練集中隨機抽取一個數據集,叫做訓練-開發集(train-dev set)。這個資料集不參與訓練,但是參與驗證。通過這個資料集的輔助判斷,幫助決策。具體參見下圖:

人類水平誤差約等於貝葉斯誤差。可避免誤差誤差衡量訓練集誤差和貝葉斯誤差的差異;訓練-開發誤差和訓練誤差當做方差的參照;開發誤差和訓練-開發誤差的差異衡量資料不匹配的程度(這個還沒有系統的方式解決);測試誤差和開發誤差的差異代表的是開發誤差的過擬合程度(若開發集過擬合了,最簡單的方式便是增加開發集資料量來解決)。通過分析這些差異,幫助更好的找到問題。

6. 正如上一點提到的資料不匹配的問題,雖然沒有系統的方式解決,但是仍然有一些思路給以啟發:

 

有一種方式便是人工合成數據來解決資料不匹配的問題。這是一種很好的辦法,但是要注意在人工合成數據的過程中,避免由於選擇特定的模式合成數據而導致的神經網路對於這部分資料造成的過擬合問題。

7.遷移學習:一個簡單的例子。已經訓練好了一個影象識別網路,這時候可以把這個網路應用到放射影象的識別中。此時簡單的做法便是在原有網路的基礎上(此前的操作也稱為預訓練,pre-trainning),將網路的最後一層進行修改並初始化權重為0,再利用放射影象進行訓練。這個操作也稱為微調(fine-tune)。遷移學習應用場景如下所示:

8. 在遷移學習中,涉及到多個任務的學習,但是任務的學習是序列的。並行的多工學習,也稱為多工學習。多工學習應用場景: 

9. 端到端深度學習(end to end):需要大量的資料使網路表現良好。