深度學習筆記:欠擬合、過擬合
防止過擬合(一):正則化
防止過擬合(二):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去擬合這樣的資料,最後的超平面就不是最優...