天天看點

過拟合和欠拟合_文本分類中的過拟合與欠拟合

過拟合和欠拟合_文本分類中的過拟合與欠拟合

我的筆記裡是有關于過拟合和欠拟合的内容的,但是在專欄裡是不是也寫過就不确定了。

對于線性模型以及深度學習模型來說,都會有訓練過拟合和欠拟合的問題,換句話說,凡是需要疊代訓練的模型,都會涉及過拟合與欠拟合。地所謂

過拟合

就是指分類模型過度學習了訓練執行個體。如果你的訓練集标注得不夠準确,過拟合就會導緻模型在預測時準确率低。可以通過在損失函數中加入

正則化罰項

來避免模型過拟合,在神經網絡模型中的

Dropout層

的作用也是為了避免過拟合。還可以通過

停止訓練

來避免過拟合,具體做法是:在訓練疊代過程中,如果訓練集上的損失繼續減小,而驗證集上的損失不再改變,則停止訓練。所謂

欠拟合

就是指分類模型沒有學習到真正的分類判據。比如你的

訓練資料是線性不可分

的,而你的

分類器卻隻能拟合線性可分資料

,那麼不管你有多少訓練資料,準确率都不可能提高。舉一個例子的話,就是用感覺機預測異或門電路的輸出。還有一種情況導緻欠拟合就是

訓練資料不夠完備

。比如你的預測文本中含有一個在訓練集中從未出現過的詞A,而這個詞又是類目核心詞,那分類器一定無法準确預測這條文本了,要麼就是預測為“其他”,要麼就是根據句子中A以外的詞錯誤預測。最後一種導緻欠拟合的情況是

訓練疊代次數不夠

,也就是說訓練集上的損失還可以随着疊代地進行繼續減小卻停止訓練。

綜上,避免過拟合與欠拟合應該做到

  1. 資料完備
  2. 資料标注準确
  3. 訓練疊代次數應該綜合考慮訓練集損失和驗證集損失

春節假期即将結束,大家玩兒得怎麼樣?利用這個假期,把感覺機、邏輯回歸(二分類、多分類)、多層感覺機3種最基本的神經網絡模型的Theano實作代碼整理出來了,當然全部參考的官網文檔以及官網的教程,想說抄襲的,少來。嚴格說起來,隻要你用開源庫,就是抄襲。剛剛看了《深度學習Keras快速開發入門》涉嫌抄襲的文章,我隻想說且不論翻譯官網文檔是不是抄襲,如果非要指别人出書是抄襲,那就别挂着開源翻譯為大家服務的大旗,原被告之間的糾紛,别扯大家,一涉及利益,就全急了,還是古人聰明,從不署自己的名字。後續把重點轉移到序列神經網絡上來,前邊的這些非序列的神經網絡,對于自然語言處理應用來說,與傳統機器學習方法沒什麼差別。CNN網絡能表示出特征,但是特征是什麼就沒法往回追溯。而通過隐藏層帶來的非線性模型對于文本分類來說,更是沒什麼作用,這一點大家在使用liblinear的時候就已經意識到了。想起一次面試的内容,A問:”fastText的分類效果比起liblinear的分類效果有改進嗎?“答:”沒什麼作用。“A說:”是的,都是線性分類器。”fastText确實是線性分類器沒錯,但是A的意思是,非線性分類器效果要好。這就是看不到問題的本質。我還是那句話,分類準不準,最核心的不是能不能線性可分,而是機器能不能提取出核心詞、詞組(連續、不連續),更進一步,選擇出核心詞的意義。凡是在那兒讨論資料可分性的,肯定平時就用這種基于距離優化的模型的,要不就是用非序列神經網絡的。還有那些做知識圖譜的,且不論圖譜增删改查,也不論你怎麼建構,你能讓機器用嗎。經過這個假期,總算把非序列神經網絡的内容過了一遍,總算快要可以看語義修正的情感分析那篇論文的代碼了,很好。