機器學習面試基礎知識 & 擴展-01

視頻教程的總結和一些自行補充的內容,旨在儘量的理解其原理。html

本文持續更新地址:我的博客機器學習面試基礎知識 & 擴展-01面試

訓練/開發/測試集

Tips

  • 訓練/開發/測試集經驗比例 6:3:1
  • 當數據量超過百萬時,測試集只需約1w(也就是不須要嚴格按照比例增加)
  • 嚴格保證分層取樣

誤差(Bias)/ 方差(Variance)

在忽略噪聲的狀況下,泛化偏差可分解爲誤差、方差兩部分。算法

  • 誤差:度量學習算法的指望預測與真實結果的偏離程度,也叫擬合能力。
  • 方差:度量了一樣大小的訓練集的變更所致使的學習性能的變化,即刻畫了數據擾動形成的影響。

---摘自《機器學習》,周志華網絡

參考:Understanding the Bias-Variance Tradeoff機器學習

分類器函數

Train set error 1% 15% 15% 0.5%
Dev set error 10% 16% 30% 1%
status high variance high bias high bias & high variance low bias & low variance
  • 誤差:模型的預測偏差率(訓練集中的準確率越大,誤差越大)
  • 方差:模型的泛化能力(開發集中的表現和訓練集的差距大小,差距越大,表明方差越大)

high Bias 意味着模型的分類效果很差,high Variance 意味着模型每每過擬合,不能很好的泛化。性能

咱們一般這樣利用這兩個參數調整咱們的神經網絡,其中部份內容會在本文的後面進一步探討。學習

梯度消失與梯度爆炸

欠擬合和過擬合

簡單分類器示例

上圖從左到右分別是欠擬合、合適的擬合和過擬合三種狀況。測試

過擬合

過擬合是如何產生的?

  • 根本緣由:參數太多,模型複雜度太高,同時數據相對較少,或噪聲相對較多。

整個訓練過程實際上是模型複雜度和過擬合之間的一個權衡,以下圖優化

如何應對過擬合?我以前的一篇譯文提到過:譯文

如何應對過擬合?

結合前文中提到的誤差和方差,咱們有如下經驗:

也就是:

  • 增大訓練數據量 - 最有效的方案
  • Cross Validation - 數據量不足的狀況下經常使用
  • Early Stopping - 提前結束訓練過程
  • 正則化(regulation)- 主要是L1和L2正則化
  • 採用 Dropout - 隨機將某些神經元的權重初始化爲零

Cross Validation

回到交叉驗證,根據切分的方法不一樣,交叉驗證分爲下面三種:   

簡單交叉驗證

所謂的簡單,是和其餘交叉驗證方法相對而言的。首先,咱們隨機的將樣本數據分爲兩部分(好比: 70%的訓練集,30%的測試集),而後用訓練集來訓練模型,在測試集上驗證模型及參數。接着,咱們再把樣本打亂,從新選擇訓練集和測試集,繼續訓練數據和檢驗模型。最後咱們選擇損失函數評估最優的模型和參數。 

S折交叉驗證

又稱(S-Folder Cross Validation),和第一種方法不一樣,S折交叉驗證會把樣本數據隨機的分紅S份,每次隨機的選擇S-1份做爲訓練集,剩下的1份作測試集。當這一輪完成後,從新隨機選擇S-1份來訓練數據。若干輪(小於S)以後,選擇損失函數評估最優的模型和參數。

留一交叉驗證

又稱(Leave-one-out Cross Validation),它是第二種狀況的特例,此時S等於樣本數N,這樣對於N個樣本,每次選擇N-1個樣原本訓練數據,留一個樣原本驗證模型預測的好壞。此方法主要用於樣本量很是少的狀況。

早停法(Early Stopping)

爲了得到性能良好的神經網絡,網絡定型過程當中須要進行許多關於所用設置(超參數)的決策。超參數之一是定型週期(epoch)的數量:亦即應當完整遍歷數據集多少次(一次爲一個epoch)若是epoch數量太少,網絡有可能發生欠擬合(即對於定型數據的學習不夠充分);若是epoch數量太多,則有可能發生過擬合(即網絡對定型數據中的「噪聲」而非信號擬合)。

早停法背後的原理其實不難理解:

  • 將數據分爲定型集和測試集
  • 每一個epoch結束後(或每N個epoch後):

    • 用測試集評估網絡性能
    • 若是網絡性能表現優於此前最好的模型:保存當前這一epoch的網絡副本
  • 將測試性能最優的模型做爲最終網絡模型

最優模型是在垂直虛線的時間點保存下來的模型,即處理測試集時準確率最高的模型。

其中,中止條件能夠是下面這三條

  • 權重的更新低於某個閾值的時候
  • 預測的錯誤率低於某個閾值
  • 達到預設必定的迭代次數

正則化

正則化 是結構風險最小化策略的實現,是在經驗風險上加一個正則化項(regularizer)或懲罰項(penalty term)
通常來講,監督學習能夠看作最小化下面的目標函數:

  • 做用: 英文是regulation,字面意思是調整修正,也就是調整上圖中出現應對過擬合
  • 常見種類: L0、L一、L2

L0範數

L0範數表示向量中全部非零元素的個數

定義:

L1範數

L2範數

定義:L2範數是指向量各元素的平方和而後求平方根。咱們讓L2範數的規則項||W||2最小,可使得W的每一個元素都很小,都接近於0,但與L1範數不一樣,它不會讓它等於0,而是接近於0。

  • L2範數如何減小過擬合?

使部分神經節點w的權重下降爲零,從而簡化網絡,將上圖中圖3中轉換爲圖1,結果是variance下降,bias增長。

L1 / L2範式的區別

降低速度

模型空間的限制

視頻講解: 2:30

優化問題:把 w 的解限制在黃色區域內,同時使得經驗損失儘量小。

這也致使L2相對較爲穩定,L1能夠產生更多稀疏解。

Dropout

Dropout是指在模型訓練時隨機讓網絡某些隱含層節點的權重不工做,不工做的那些節點能夠暫時認爲不是網絡結構的一部分,可是它的權重得保留下來(只是暫時不更新而已),由於下次樣本輸入時它可能又得工做了。

Experiment in Keras

基於 CIFAR-10 dataset 的實驗
結果演示:


分析:dropout等於0.2的時候效果最佳
代碼: Github

示例演示

代碼演示

100代碼的簡單神經網絡代碼:pycharm
關於激活函數做用的直觀解釋:知乎回答:異或

可視化演示

連接:TensorFlow

參考資料

  1. www.zhihu.com/question/20…
  2. blog.csdn.net/zouxy09/art…
  3. liam0205.me/2017/03/25/…
  4. scott.fortmann-roe.com/docs/BiasVa…
  5. 正則化方法:L1和L2 regularization、數據集擴增、dropout
  6. www.zhihu.com/question/26…
  7. www.cnblogs.com/pinard/p/59…
  8. 梯度消失和梯度爆炸
相關文章
相關標籤/搜索