防止過擬合(三) 資料增強(增加訓練樣本)

2021-10-03 21:12:49 字數 1608 閱讀 4105

深度學習筆記:欠擬合、過擬合

防止過擬合(一):正則化

防止過擬合(二):dropout

增加資料集大小是解決過擬合最重要的途徑。但是收集樣本資料和標註往往是代價昂貴的,在有限的資料集上,通過資料增強技術可以增加訓練的樣本數量,獲得一定程度上的效能提公升。

**資料增強(data augmentation)**是指在維持樣本標籤不變的條件下,根據先驗知識改變樣本的特徵,使得新產生的樣本也符合或者近似符合資料的真實分布。

常見的資料增強方式:旋轉、縮放、平移、裁剪、改變視角、遮擋某區域性區域,這樣都不會改變的類別標籤。

tensorflow 中提供了常用的處理函式,位於 tf.image 子模組中。

1.縮放

通過tf.image.resize 函式可以實現的縮放功能。

# 將輸入x縮放到224*224

x = tf.image.resize(x,

[224

,224

])

2.旋轉

通過 tf.image.rot90(x, k=1)可以實現按逆時針方式旋轉 k 個 90 度。

# 逆時針旋轉180度

x = tf.image.rot90(x,

2)

3.翻轉

可以通過 tf.image.random_flip_left_right 和 tf.image.random_flip_up_down 實現在水平方向豎直方向的隨機翻轉操作

# 水平方向翻轉(左右顛倒,映象)

x = tf.image.random_flip_left_right(x)

# 豎直方向翻轉(上下顛倒)

x = tf.image.random_flip_up_down(x)

4.裁剪

通過在原圖的左右或者上下方向去掉部分邊緣畫素,可以保持主體不變,同時獲得新的樣本。

在實際裁剪時,一般先將縮放到略大於網路輸入尺寸的大小,再進行裁剪到合適大小,例如網路的輸入大小為 224x224,那麼我們先通過 resize 函式將縮放到 244x244 大小,再隨機裁剪到 224x224 大小。

# 先縮放到稍到尺寸

x = tf.image.resize(x,

[224

,224])

# 再隨機裁剪到合適尺寸

x = tf.image.random_crop(x,

[224

,224,3

])

5.其他方法,比如:新增雜訊,變換視角、隨機遮擋等。

下圖展示了上述不同資料增強方法後的效果:

除此之外,還可以通過條件生成對抗網路(conditional gan, cgan)可以生成帶標籤的樣本資料。

通過生成模型在原有資料上學習到資料的分布,從而生成新的樣本,這種方式也可以在一定程度上提公升網路效能。

防止過擬合以及解決過擬合

過擬合 為了得到一致假設而使假設變得過度複雜稱為過擬合。乙個過配的模型試圖連誤差 噪音 都去解釋 而實際上噪音又是不需要解釋的 導致泛化能力比較差,顯然就過猶不及了。這句話很好的詮釋了過擬合產生的原因,但我認為這只是一部分原因,另乙個原因是模型本身並不能很好地解釋 匹配 資料,也就是說觀測到的資料並...

過擬合以及如何防止過擬合

過擬合即模型在訓練過程中對模型引數進行擬合的過程中,由於訓練資料集存在抽樣誤差 雜訊 複雜的模型在訓練的過程中會將抽樣誤差也一同進行擬合。這就導致訓練好的模型在訓練集上的表現很好,在測試集上的表現很差的原因。導致過擬合的主要原因有兩個 資料量太少和模型過於複雜 因為機器學習演算法在擬合出正確的規則後...

SVM防止過擬合

過擬合 overfitting 表現為在訓練資料上模型的 很準,在未知資料上 很差。過擬合主要是因為訓練資料中的異常點,這些點嚴重偏離正常位置。我們知道,決定svm最優分類超平面的恰恰是那些佔少數的支援向量,如果支援向量中碰巧存在異常點,那麼我們傻傻地讓svm去擬合這樣的資料,最後的超平面就不是最優...