《Python 深度學習》第四章 機器學習基礎
主要內容:
- 機器學習形式
- 評估機器學習模型的規範流程
- 為深度學習準備資料
- 特徵工程
- 解決過擬合
- 處理機器學習問題的通過流程
機器學習核心難題:過擬合
4.1 機器學習的四個分支
- 監督學習:分類、迴歸、序列生成(sequence generation)、語法樹預測(syntax tree prediction)、目標預測(object detection)、影象分割(image segmentation)
- 無監督學習:降維(dimensionality reduction)、聚類(clustering)
- 自監督學習:自編碼器(autoencoder)
- 強化學習:選擇使獎勵最大化的行動
相關術語:
樣本(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)
評估方法:
- 簡單的留出驗證(hold-out validation)
- K折驗證(K-fold validation)
- 帶打亂資料的重複K折驗證(iterated K-fold validation with shuffling)
4.2.2 評估模型的注意事項
- 資料代表性(data representativeness):隨機打亂資料
- 時間箭頭(the arrow of time):預測與時間相關,不能隨機打亂;且確保測試集資料晚於訓練集資料
- 資料冗餘(redundancy in your data):確保訓練集和資料集沒有交集
4.3 資料預處理、特徵工程和特徵學習
4.3.1 神經網路的資料預處理
預處理目的:使原始資料更適合於神經網路處理,向量化、標準化、處理缺失值和特徵處理
- 向量化:輸入和預測值必須是浮點數張量。資料向量化(data vectorization)
- 值標準化:取值較小,同質化(homogeneous)平均值為0,標準差為1。 x-=x.mean(axis=0) x/=x.std(axis=0)
- 處理缺失值:缺失值設為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比率縮小。
防止過擬合:
- 更多資料
- 減小網路容量
- 新增正則化
- 新增dropout
4.5 機器學習的通用工作流程
4.5.1 定義問題,收集資料集
假設:
- 輸出可由輸入進行預測
- 資料包含足夠資訊,能夠學習輸入和輸出的關係
非平穩問題(nonstationary problem):如隨季節變化問題
4.5.2 選擇衡量成功的指標
平衡分類問題:精度和接受者操作特徵曲線下面積(area under the receiver operating characteristic curve,ROC AUC)
非平衡分類問題:準確率和召回率
排序和多標籤分類:平均準確率均值(mean average precision)
4.5.3 選擇評估方法
- 簡單的留出驗證(hold-out validation):資料量大
- K折驗證(K-fold validation):資料量小,無法保證準確性
- 帶打亂資料的重複K折驗證(iterated K-fold validation with shuffling):資料量小,準確性要求高
4.5.4 準備資料
張量
較小值,[-1,1],[0,1]
標準化
缺失值
特徵工程
4.5.5 開發比基準好的模型
統計功效(statistical power)
純隨機基準(dumb baseline)
- 最後一層的啟用
- 損失函式
- 優化配置
ROC AUC不可直接優化,用交叉熵替代。兩者成逆相關。
問題型別 | 最後一層啟用函式 | 損失函式 |
---|---|---|
二分類 | sigmoid | binary_rossentropy |
多分類、單標籤 | softmax | catrgorical_crossentropy |
多分類、多標籤 | sigmoid | binary_crossentropy |
迴歸 | 無 | mse |
迴歸,0~1取值 | sigmoid | mse或binary_crossentropy |
4.5.6 擴大模型規模:開發過擬合的模型
使模型過擬合:
- 新增更多層
- 讓每一層變得更大
- 訓練更多輪次
4.5.7 模型正則化與調節超引數
- 新增dropout
- 嘗試不同的架構:增加或減少層數
- 新增L1和L2正則化
- 嘗試不同的超引數
- 做特徵工程