過擬合,指的是模型在訓練集上表現的很好,但是在交叉驗證集合測試集上表現一般,也就是說模型對未知樣本的**表現一般,泛化(generalization)能力較差。通俗一點地來說過擬合就是模型把資料學習的太徹底,以至於把雜訊資料的特徵也學習到了。在機器學習演算法中,我們常常將原始資料集分為三部分:training data、validation data,testing data。其中validation data就是用來避免過擬合的,在訓練過程中,我們通常用它來確定一些超引數(比如根據validation data上的accuracy來確定early stopping的epoch大小、根據validation data確定learning rate等等)。那為啥不直接在testing data上做這些呢?因為如果在testing data做這些,那麼隨著訓練的進行,我們的網路實際上就是在一點一點地overfitting我們的testing data,導致最後得到的testing accuracy沒有任何參考意義。
early stopping便是一種迭代次數截斷的方法來防止過擬合的方法,即在模型對訓練資料集迭代收斂之前停止迭代來防止過擬合。對模型進行訓練的過程即是對模型的引數進行學習更新的過程,這個引數學習的過程往往會用到一些迭代方法,如梯度下降(gradient descent)學習演算法。這樣可以有效阻止過擬合的發生,因為過擬合本質上就是對自身特點過度地學習。
指的是在目標函式後面新增乙個正則化項,一般有l1正則化與l2正則化。l1正則是基於l1範數,即在目標函式後面加上引數的l1範數和項,即引數絕對值和與引數的積項
l2正則是基於l2範數,即在目標函式後面加上引數的l2範數和項,即引數的平方和與引數的積項:
個人感覺這是一種對過度學習的懲罰,增加了一些雜訊就減小了過度學習。
在神經網路中,資料增強只意味著增加資料規模
是一種通過讓有限的資料產生更多的等價資料來人工擴充套件訓練資料集的技術。它是克服訓練資料不足的有效手段,目前在深度學習的各個領域中應用廣泛。但是由於生成的資料與真實資料之間的差異,也不可避免地帶來了雜訊問題。
下面列舉了一些nlp中資料增強的方法
同義詞詞典(thesaurus):zhang xiang等人提出了character-level convolutional networks for text classification,通過實驗,他們發現可以將單詞替換為它的同義詞進行資料增強,這種同義詞替換的方法可以在很短的時間內生成大量的資料。
隨機插入(randomly insert):隨機選擇乙個單詞,選擇它的乙個同義詞,插入原句子中的隨機位置,舉乙個例子:「我愛中國」 —> 「喜歡我愛中國」。
隨機交換(randomly swap):隨機選擇一對單詞,交換位置。
隨機刪除(randomly delete):隨機刪除句子中的單詞。
語法樹結構替換:通過語法樹結構,精準地替換單詞。
加噪(noisemix) (類似於影象領域的加噪,noisemix提供9種單詞級別和2種句子級別的擾動來生成更多的句子,例如:這是一本很棒的書,但是他們的運送太慢了。->這是本很棒的書,但是運送太慢了。
情境增強(contextual augmentation):這種資料增強演算法是用於文字分類任務的獨立於域的資料擴充。通過用標籤條件的雙向語言模型**的其他單詞替換單詞,可以增強監督資料集中的文字。
generating text via adversarial training
gans for sequences of discrete elements with the gumbel-softmax distribution
seqgan: sequence generative adversarial nets with policy gradient
回譯技術(back translation):回譯技術是nlp在機器翻譯中經常使用的乙個資料增強的方法。其本質就是快速產生一些翻譯結果達到增加資料的目的。回譯的方法可以增加文字資料的多樣性,相比替換詞來說,有時可以改變句法結構等,並保留語義資訊。但是,回譯的方法產生的資料嚴重依賴於翻譯的質量。
擴句-縮句-句法:先將句子壓縮,得到句子的縮寫,然後再擴寫,通過這種方法生成的句子和原句子具有相似的結構,但是可能會帶來語義資訊的損失。
無監督資料擴增(unsupervised data augmentation):通常的資料增強演算法都是為有監督任務服務,這個方法是針對無監督學習任務進行資料增強的演算法,uda方法生成無監督資料與原始無監督資料具備分布的一致性,而以前的方法通常只是應用高斯雜訊和dropout雜訊(無法保證一致性)。(
此外,這個倉庫(中介紹了一些自然語言處理中的資料增強技術。
總結資料增強是增大資料規模,減輕模型過擬合的有效方法,但是,資料增強不能保證總是有利的。在資料非常有限的域中,這可能導致進一步過度擬合。因此,重要的是要考慮搜尋演算法來推導增強資料的最佳子集,以便訓練深度學習模型。
在神經網路中,有一種方法是通過修改神經網路本身結構來實現的,其名為dropout。該方法是在對網路進行訓練時用一種技巧(trick),對於如下所示的三層人工神經網路:
對於上圖所示的網路,在訓練開始時,隨機得刪除一些(可以設定為一半,也可以為1/3,1/4等)隱藏層神經元,即認為這些神經元不存在,同時保持輸入層與輸出層神經元的個數不變,這樣便得到如下的ann:
然後按照bp學習演算法對ann中的引數進行學習更新(虛線連線的單元不更新,因為認為這些神經元被臨時刪除了)。這樣一次迭代更新便完成了。下一次迭代中,同樣隨機刪除一些神經元,與上次不一樣,做隨機選擇。這樣一直進行下去,直至訓練結束。
個人感覺這是對模型的簡化,過擬合可能因為模型太過複雜,通過這種方式化簡模型的複雜度。
過擬合及解決方法
在機器學習演算法中,我們經常將原始資料集分為三部分 訓練集 training data 驗證集 validation data 測試集 testing data 1.validation data是什麼?它事實上就是用來避免過擬合的。在訓練過程中,我們通經常使用它來確定一些超引數 比方,依據vali...
過擬合的解決方法
overfitting就是過擬合,其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大 因為訓練出來的網路過擬合了訓練集,對訓練集外的資料卻不work,這稱之為泛化 generalization 效能...
欠擬合 過擬合及其解決方法
在我們機器學習或者訓練深度神經網路的時候經常會出現欠擬合和過擬合這兩個問題,但是,一開始我們的模型往往是欠擬合的,也正是因為如此才有了優化的空間,我們需要不斷的調整演算法來使得模型的表達能拿更強。但是優化到了一定程度就需要解決過擬合的問題了,這個問題也在學術界討論的比較多。之前搜了很多有的部落格,講...