1.過擬合定義+處理
1.1 過擬合概述(低偏差,高方差)
定義 :過擬合簡單的描述就是在訓練集上的表現很好,但在未見過的測試集上的表現卻較差。專業一點的定義就是:給定一個假設空間H,一個假設h屬于H,如果存在其他的假設h'也屬于H,使得在訓練樣例上h的錯誤率小于h',但是在整個實例分布上h'比h的錯誤率小,那么則稱假設h過度擬合訓練數據。
危害 :一個過擬合的模型試圖連“誤差”都去解釋,而實際上噪音是不需要解釋的,這個解釋的過程導致模型的泛化能力較差,模型在預測集上的效果較差,因為誤差是不能夠代表整體數據的特性的。
1.2 過擬合處理
獲取使用更多的數據集 :
解決過擬合的一個比較有效的方法是為模型提供更多的數據,使得數據能盡可能的反應整體的全貌,讓模型在數據上充分的學習并不斷的修正。但是,現實當中受限于數據搜集成本等多方面因素,搜集無限多的數據集似乎是不可能的,因此,常用的辦法是調整已有的數據集,通過添加“噪音”、圖像銳化、圖像旋轉、圖像明暗度調節等方法增大數據量。之所以可以這樣處理,是因為卷積神經網絡在圖像識別的過程中有強大的“不變性”規則,即待辨識的物體在圖像中的形狀、姿勢、位置、明暗度都不會影響分類結果。
進一步的數據清洗
導致過擬合的其中一個原因也有可能是數據不純導致的, 如果出現了過擬合就需要我們重新清洗數據。
采用合適的模型(降低模型復雜度) :
不同的模型對過擬合的返回能力是不同的,一般來說,深度學習中網絡深度越大,模型越容易產生過擬合現象
采用模型集成的方式
模型集成即基于現有數據集訓練多個模型并進行組合。但是,問題在于模型訓練與測試非常耗時,并且,模型組合的方式也非常重要。
使用dropout函數 :
dropout的思想是:(1)訓練階段:在前向傳播的過程中, 讓某個神經元的激活值以一定的概p繼續工作(1-p)的概率停止工作 ,這種方式可以有效的減少隱層節點之間的相互作用,檢測器相互作用是指某些檢測器依賴其他檢測器才能發揮作用。通過這種方式,在每一次“前向傳播+后向反饋”過程中,相當于訓練了不同的模型并集合了不同的模型,思想上類似于“模型集成”。
(2)測試階段:權重系數w要乘p,即:pw。原因為:某一隱藏層的一個神經元在dropout之前的輸出為x, dropout之后的期望輸出為:E=p*x+(1-p)*0=px 。而在測試中,每個神經元都是存在的,因此,為保持同樣的數學期望并使得下一層也得到同樣的結果,需要調整w→pw. 其中p是Bernoulli分布(0-1分布)中值為1的概率。但是,上邊這種方式需要在在激勵函數的輸入數據計算中在權重w上乘以p進行縮放,這樣需要對測試的代碼進行更改并增加了測試時的計算量,非常影響測試性能。通常為了提高測試的性能(減少測試時的運算時間),可以將縮放的工作轉移到訓練階段,而測試階段與不使用dropout時相同,稱為?inverted dropout?:將前向傳播dropout時保留下來的神經元的權重乘上1/p(看做懲罰項,使權重擴大為原來的1/p倍,這樣測試時不用再縮小權重)。
未進行dropout時的計算:
?進行dropout時的計算:
權重衰減
在擬合產生的時候,模型因為要對所有的特征進行擬合,因此在一個原本平滑的擬合曲線上會產生大量的急劇變化的突起或者凹陷,即這些點的導數非常大,且過大的導數值從擬合的模型上來看,數學模型的系數會非常大,即權重也會非常大。而權重衰減(正則化)問題在一定程度上緩解了這個問題,通過對權重值在一定范圍內的修正,使其不再偏離一個均值太大,從而降低過擬合的程度。權重衰減的具體做法為:
?實際中的使用分為L1和L2正則,即:
?公式(1)中C0為損失函數,后半部分為L2正則化相,系數λ為權重衰減系數η為模型學習速率,公式(1)分別對權重ω和誤差項b求導可得:
從求導結果中可見,添加了L2正則化項的損失函數不會對誤差項b產生影響,而ω的偏導數則多了一項,由此可知,在權值更新的過程當中ω的計算公式變成如下形式:
?上式中ωij為對象的第i個特征所對應的第j個權重,δj表示誤差反向傳播時第j個神經元對應的誤差,n為樣本總數,xi為對象第i個特征的特征值。從最終的結果中可以看出,n、δj、λ和n均為正數,所以ωij之前的系數必定小于1,因此,起到了對ωij的縮小作用。
Early Stopping
基本思想是判斷單簽模型的損失值(loss)或者準確率(accuracy)不在發生變化時就停止模型訓練。但是,實際情況下模型的loss或者accuracy是在不斷的波動中的,因此,可以設定某一個范圍,若連續k次出現在這個認為設定的可接受的范圍內時,則認為模型已較好的收斂。
學習速率衰減
學習率過大,在算法優化的前期會加速學習,使得模型更容易接近局部或全局最優解。但是在后期會有較大波動,甚至出現損失函數的值圍繞最小值徘徊,波動很大,始終難以達到最優。學習速率過小,會嚴重提升模型的訓練成本,收斂速度較慢。所以引入學習率衰減的概念,直白點說,就是在 模型訓練初期,會使用較大的學習率進行模型優化 ,隨著迭代次數增加, 學習率會逐漸進行減小,保證模型在訓練后期不會有太大的波動 ,從而更加接近最優解。
學習速率衰減的類型分為:線性衰減、非線性衰減(tf.train. exponential_decay (learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
Batch_Normalization
該方法的思想是在數據經過卷積層之后,真正進入激活函數之前需要對其進行一次Batch_Normalization,分批對輸入的數據求取均值和方差之后重新對數據進行一次 歸一化 處理。這樣做的好處是對數據進行了一定程度上的預處理,使得無論是訓練數據集還是測試數據集都在一定范圍內進行分布與波動,對數據中包含的誤差進行掩蓋話處理,從而增大模型的泛化能力。
2.欠擬合定義+處理
2.1 欠擬合概述(高偏差,低方差)
定義 :欠擬合表示模型未較好的捕捉到數據的特征不能夠很好的擬合數據。
2.2 欠擬合處理
增強數據表達能力
模型出現欠擬合的時候是因為特征項不夠導致的,可以添加其他特征項來很好地解決。例如,“ 組合 ”、“ 泛化 ”、“ 相關性 ”三類特征是特征添加的重要手段,除此之外,“ 上下文特征 ”、“ 平臺特征 ”等等,都可以作為特征添加的首選項。
模型復雜化
包括兩種思路:(1)現有模型復雜化:線性模型->多項式模型、增加神經網絡的深度等;(2)換更加復雜的模型
調整參數或超參
超參數包括:(1)神經網絡中:學習率、學習衰減率、隱藏層數、隱藏層的單元數、Adam優化算法中的β1和β2參數、batch_size數值等;(2)其他算法中:隨機森林的樹數量,k-means中的cluster數,正則化參數λ等
降低正則化約束
正則化約束是為了防止模型過擬合,如果模型壓根不存在過擬合而是欠擬合了,那么就考慮是否降低正則化參數λ或者直接去除正則化項
【注意】 :
一般來說,進一步的增加數據量是沒有效果的,欠擬合的本質實際上是模型本身的學習能力不足,此時,增加再多的數據也于事無補。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
