1. 程式人生 > >《Python 深度學習》第四章 機器學習基礎

《Python 深度學習》第四章 機器學習基礎

主要內容:

  1. 機器學習形式
  2. 評估機器學習模型的規範流程
  3. 為深度學習準備資料
  4. 特徵工程
  5. 解決過擬合
  6. 處理機器學習問題的通過流程

機器學習核心難題:過擬合


4.1  機器學習的四個分支

  1. 監督學習:分類、迴歸、序列生成(sequence generation)、語法樹預測(syntax tree prediction)、目標預測(object detection)、影象分割(image segmentation)
  2. 無監督學習:降維(dimensionality reduction)、聚類(clustering)
  3. 自監督學習:自編碼器(autoencoder)
  4. 強化學習:選擇使獎勵最大化的行動

相關術語:

樣本(sample)或輸入(input)

預測(predict)或輸出(output)

目標(target)

預測誤差(prediction error)

類別(class)

標籤(label)

真值(ground-truth)或標註(annotation)

二分類(binary classification)

多分類(multiclass classification)

多標籤分類(multilabel classification)

標量回歸(scalar regression)

向量迴歸(vector regression)

小批量(mini-batch)或批量(batch):通常是2的冪次。8~128


4.2  評估機器學習模型

機器學習目的:得到好的泛化(generalize)模型

4.2.1  訓練集、驗證集和測試集

驗證模型時,有可能會發生訊息洩露(information leak)

評估方法:

  1. 簡單的留出驗證(hold-out validation)
  2. K折驗證(K-fold validation)
  3. 帶打亂資料的重複K折驗證(iterated K-fold validation with shuffling)

4.2.2  評估模型的注意事項

  1. 資料代表性(data representativeness):隨機打亂資料
  2. 時間箭頭(the arrow of time):預測與時間相關,不能隨機打亂;且確保測試集資料晚於訓練集資料
  3. 資料冗餘(redundancy in your data):確保訓練集和資料集沒有交集

4.3  資料預處理、特徵工程和特徵學習

4.3.1  神經網路的資料預處理

預處理目的:使原始資料更適合於神經網路處理,向量化、標準化、處理缺失值和特徵處理

  1. 向量化:輸入和預測值必須是浮點數張量。資料向量化(data vectorization)
  2. 值標準化:取值較小,同質化(homogeneous)平均值為0,標準差為1。   x-=x.mean(axis=0)   x/=x.std(axis=0)
  3. 處理缺失值:缺失值設為0,讓網路學到,0意味著缺失值。當測試集有缺失值,而訓練集沒有時,要手動給訓練集加缺失值。

4.3.2  特徵工程(feature engineering)

特徵工程:將資料輸入模型前,利用人對資料的認識,先對資料進行處理。

本質:更簡單的方式表述問題,是問題變得簡單。

例:鐘錶識別

良好的特徵可以用較少的資源解決問題。


4.4  過擬合與欠擬合

優化(optimization)

泛化(generalization)

4.4.1  減小網路大小

4.4.2  新增權重正則化

奧卡姆剃刀(Occam/s razor)

成本(cost)

L1正則化:係數絕對值

L2正則化:係數平方

懲罰只在訓練時有,所以測試誤差會小很多。

4.4.3  新增dropout正則化

訓練過程中隨機把改層輸出特徵捨棄

dropout比率:通常0.2~0.5

測試時沒有單元捨棄,層輸出需要按dropout比率縮小。

 

防止過擬合:

  1. 更多資料
  2. 減小網路容量
  3. 新增正則化
  4. 新增dropout

4.5  機器學習的通用工作流程

4.5.1  定義問題,收集資料集

假設:

  1. 輸出可由輸入進行預測
  2. 資料包含足夠資訊,能夠學習輸入和輸出的關係

非平穩問題(nonstationary problem):如隨季節變化問題

4.5.2  選擇衡量成功的指標

平衡分類問題:精度和接受者操作特徵曲線下面積(area under the receiver operating characteristic curve,ROC AUC)

非平衡分類問題:準確率和召回率

排序和多標籤分類:平均準確率均值(mean average precision)

4.5.3  選擇評估方法

  1. 簡單的留出驗證(hold-out validation):資料量大
  2. K折驗證(K-fold validation):資料量小,無法保證準確性
  3. 帶打亂資料的重複K折驗證(iterated K-fold validation with shuffling):資料量小,準確性要求高

4.5.4  準備資料

張量

較小值,[-1,1],[0,1]

標準化

缺失值

特徵工程

4.5.5  開發比基準好的模型

統計功效(statistical power)

純隨機基準(dumb baseline)

  1. 最後一層的啟用
  2. 損失函式
  3. 優化配置

ROC AUC不可直接優化,用交叉熵替代。兩者成逆相關。

問題型別 最後一層啟用函式 損失函式
二分類 sigmoid binary_rossentropy
多分類、單標籤 softmax catrgorical_crossentropy
多分類、多標籤 sigmoid binary_crossentropy
迴歸 mse
迴歸,0~1取值 sigmoid mse或binary_crossentropy

4.5.6  擴大模型規模:開發過擬合的模型

使模型過擬合:

  1. 新增更多層
  2. 讓每一層變得更大
  3. 訓練更多輪次

4.5.7  模型正則化與調節超引數

  1. 新增dropout
  2. 嘗試不同的架構:增加或減少層數
  3. 新增L1和L2正則化
  4. 嘗試不同的超引數
  5. 做特徵工程