深度模型擁有很多超參:
- 學習步長:alpha
- momentum 梯度下降參數:beta
- Adam 梯度下降參數:beta1, beta2, epsilon
- 網絡層數layers
- 每層隱藏層的神經元的數量hidden units
- learning rate decay
- mini-batch size
- activation functions
超參優化的優先級
- 學習步長alpha最重要
- momentum參數beta,默認=0.9; mini-batch; hidden units;
- layers; learning rate decay;
- beta1, 默認=0.9; bera2, 默認=0.999; epsilon, 默認=pow(10, -8)
train/dev/test sets
所有的數據將被劃分為 training set/development set/test set
首先在training set上訓練很多模型,然后在dev set上驗證(可以cross validation)一個最好的模型,最后在test set上測試模型的性能。
數據集劃分
在傳統的機器學習算法中,數據集通常劃分為70%的training set和30%的test set,或者60% training set, 20%dev set, 20%test set。當數據集的總量在10000量級以內,這種劃分方法最合適不過了。
當如果數據總量很大,比如在百萬集的量級時,我們也許需要重新思考數據的劃分策略了。通常,我們會傾向與劃分更小比例的數據到dev set和test set。劃分dev set的目標是校驗模型并且調整以及選擇一個最佳的模型,同樣,劃分test set的目標是評估最優模型的性能。
所以,不必要劃分太多的數據到這兩個數據集上。如果,擁有一百萬量級的數據,那么,分別劃分10000條數據到dev set和test set就足夠了。
此外,為了讓模型擁有更好的泛化能力,training set/dev set/test set的數據分布比例必須大致相同。
Bias & Variance
Bias和Variance代表訓練出來的模型往往是偏執的,為了更好地解釋這個概念,本人認為偏執一般與泛化相對。其中,Bias指的是訓練偏執,Variance是測試偏執。如何降低模型的偏執,增強泛化能力呢?
首先,如果模型在訓練數據上擬合不足,我們認為模型已經Bias了;相反,如果模型在訓練集上過度擬合,認為模型Variance,并且出現了overfitting。這兩種情況都不是理想的訓練結果。
下面解釋Bias和Variance的判斷依據:
偏執類型 | Bayes optimal error | Training set error | Dev set error |
---|---|---|---|
High Bias | 0.01% | 12.00% | 12.10% |
High Variance | 0.01% | 0.50% | 12.10% |
High Bias & High Variance | 0.01% | 12.00% | 20.10% |
Low Bias & Low Variance | 0.1% | 0.50% | 0.80% |
Bayes optimal error 指的是由于數據本身的規律性和合理性的限制(數據質量不夠),理論上最理想的最小識別誤差值的大小。這個值往往是由相關專業人士識別數據所推導出來的誤差極限(計算機算法很難達到)。Training set error指的是算法在訓練集上訓練出來的識別誤差。Dev set error指驗證集上的識別誤差。
優化high Bias & high Variance
優化策略如下:
High Bias
- Bigger network
- Trains longer
- Uses more advanced optimization algorithms
- Finds a better suited network architecture
High Variance
- get more data
- Dropout
- regulariztion
- Finds a better suited network architecture
好的模型判斷方法
機器學習模型算法訓練的好或是不好,可以通過以下兩個方面判斷:
- 模型在訓練集上數據擬合的好,可以認為此時模型的Bias error很低,數據擬合的好
- 模型在訓練集上的優勢依然體現在驗證集和測試集上,在這兩個數據集上有很好的擬合效果
此外,還有一些情況,模型在測試集上擬合的很好,性能表現優越,但在現實使用情況下表現幷不盡人意,此時需要考慮的是數據集的選擇出現了偏差,需要根據現實情況合理調整數據的分布了。
正所謂,模型好壞的極限是由數據的質量決定的,而算法的性能只能讓模型無限逼近這個極限。由此,數據質量的重要性可見一斑。