深度学习中的验证集和超参数简介
大多數機器學習算法都有超參數,可以設置來控制算法行為。超參數的值不是通過學習算法本身學習出來的(盡管我們可以設計一個嵌套的學習過程,一個學習算法為另一個學習算法學出最優超參數)。
在多項式回歸示例中,有一個超參數:多項式的次數,作為容量超參數。控制權重衰減程度的λ是另一個超參數。
有時一個選項被設為學習算法不用學習的超參數,是因為它太難優化了。更多的情況是,該選項必須是超參數,因為它不適合在訓練集上學習。這適用于控制模型容量的所有超參數。如果在訓練集上學習超參數,這些超參數總是趨向于最大可能的模型容量,導致過擬合。
和訓練數據相同分布的樣本組成的測試集,它可以用來估計學習過程完成之后的學習器的泛化誤差。其重點在于測試樣本不能以任何形式參與到模型的選擇中,包括設定超參數。基于這個原因,測試集中的樣本不能用于驗證集。因此,我們總是從訓練集中構建驗證集。特別地,我們將訓練數據分成兩個不相交的子集。其中一個用于學習參數。另一個作為驗證集,用于估計訓練中或訓練后的泛化誤差,更新超參數。用于學習參數的數據子集通常仍被稱為訓練集,盡管這會和整個訓練過程用到的更大的數據集相混。用于挑選超參數的數據子集被稱為驗證集(validation set)。通常,80%的訓練數據用于訓練,20%用于驗證。由于驗證集是用來”訓練”超參數的,盡管驗證集的誤差通常會比訓練集誤差小,驗證集會低估泛化誤差。所有超參數優化完成之后,泛化誤差可能會通過測試集來估計。
交叉驗證:將數據集分成固定的訓練集和固定的測試集后,若測試集的誤差很小,這將是有問題的。一個小規模的測試集意味著平均測試誤差估計的統計不確定性,使得很難判斷算法A是否比算法B在給定的任務上做的更好。當數據集有十萬計或者更多的樣本時,這不會是一個嚴重的問題。當數據集太小時,也有替代方法允許我們使用所有的樣本估計平均測試誤差,代價是增加了計算量。這些過程是基于在原始數據上隨機采樣或分離出的不同數據集上重復訓練和測試的想法。最常見的是k-折交叉驗證過程。將數據集分成k個不重合的子集。測試誤差可以估計為k次計算后的平均測試誤差。在第i次測試時,數據的第i個子集用于測試集,其它的數據用于訓練集。帶來的一個問題是不存在平均誤差方差的無偏估計,但是我們通常會使用近似來解決。
目前超參數往往只能人工基于經驗來設置,以及采用暴力枚舉的方式來嘗試以尋求最優的超參數。
所謂超參數,就是機器學習模型里面的框架參數,比如聚類方法里面類的個數,或者話題模型里面話題的個數等等,都稱為超參數。它們跟訓練過程中學習的參數(權重)是不一樣的,通常是手工設定,不斷試錯調整,或者對一系列窮舉出來的參數組合一通枚舉(叫做網格搜索)。
常用的超參數:
(1)、learning rate:學習率決定了權值更新的速度,設置得太大會使結果超過最優值,太小會使下降速度過慢。學習率是指在優化算法中更新網絡權重的幅度大小。學習率可以是恒定的、逐漸降低的、基于動量的或者是自適應的,采用哪種學習率取決于所選擇優化算法的類型,如SGD、Adam、Adgrad、AdaDelta、RMSProp等算法。
(2)、weight decay(權值衰減):在實際應用中,為了避免網絡的過擬合,必須對價值函數(cost function)加入一些正則項。在機器學習或者模式識別中,會出現overfitting,而當網絡逐漸overfitting時網絡權值逐漸變大,因此,為了避免出現overfitting,會給誤差函數添加一個懲罰項,常用的懲罰項是所有權重的平方乘以一個衰減常量之后。其用來懲罰大的權值。weight decay的使用既不是為了提高收斂精確度也不是為了提高收斂速度,其最終目的是防止過擬合。在損失函數中,weight decay是放在正則項(regularization)前面的一個系數,正則項一般指示模型的復雜度,所以weight decay的作用是調節模型復雜度對損失函數的影響,若weight decay很大,則復雜的模型損失函數的值也越大。
(3)、momentum(動量):動量來源于牛頓定律,基本思想是為了找到最優加入”慣性”的影響。mementum是梯度下降法中一種常用的加速技術。總能得到更好的收斂速度。
(4)、learing rate decay:每次迭代的時候減少學習率的大小。
(5)、迭代次數:迭代次數是指整個訓練集輸入到神經網絡進行訓練的次數。當測試錯誤率和訓練錯誤率相差較小時,可認為當前的迭代次數是合適的,否則需繼續增大迭代次數,或調整網絡結構。
(6)、權重初始化:在網絡中,通常會使用小隨機數來初始化各網絡層的權重,以防止產生不活躍的神經元,但是設置過小的隨機數可能生成零梯度網絡。一般來說,均勻分布方法效果較好。
(7)、Dropout方法:作為一種常用的正則化方式,加入Dropout層可以減弱深層神經網絡的過擬合效應。該方法會按照所設定的概率參數,在每次訓練中隨機地不激活一定比例的神經單元。該參數的默認值為0.5.
自動超參數優化算法:
(1)、網格搜索:如果有三個或更少的超參數時,常見的超參數搜索方法是網格搜索。對于每個超參數,使用者選擇一個較小的有限值集去探索。然后,這些超參數笛卡爾乘積得到一組組超參數,網格搜索使用每組超參數訓練模型。挑選驗證集誤差最小的超參數作為最好的超參數。
(2)、隨機搜索:如果超參數較多,首先,我們為每個超參數定義一個邊緣分布,在這些邊緣分布上進行搜索。
以上內容主要摘自:《深度學習中文版》?和 網絡資料整理。
GitHub:?https://github.com/fengbingchun/NN_Test
總結
以上是生活随笔為你收集整理的深度学习中的验证集和超参数简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习中的欠拟合和过拟合简介
- 下一篇: C++/C++11中头文件iterato