概述
深度學習是一個廣闊的領域催式,但我們大多數人在構建模型時都面臨著一些共同的挑戰(zhàn)
在這里函喉,我們討論4個這樣的挑戰(zhàn)和技巧,以提高您的深度學習模型的性能
這是一篇以代碼為中心的實踐文章荣月,因此準備好 Python IDE 并改進您的深度學習模型管呵!
介紹
在過去的兩年里,我大部分時間都只在深度學習領域工作哺窄。這是一個相當的經驗 - 工作在多個項目捐下,包括圖像和視頻數據相關的項目账锹。
在那之前,我一直徘徊在深度學習概念的邊緣坷襟,如物體檢測和人臉識別一直到2017年末才深入探討奸柬。在這段時間里,我遇到了各種各樣的挑戰(zhàn)婴程。我想談談最深入的學習實踐者和愛好者在旅途中面對的四個非常常見的一個廓奕。
如果你以前在一個深度學習項目中工作過,你將會與我們后面所提到的困難產生共鳴档叔。好消息是桌粉,克服這些困難并不像你想象的那么困難!
在本文中衙四,我們將采取非常實際的方法铃肯。首先,我們將確定我上面提到的四個共同挑戰(zhàn)传蹈。然后押逼,我們將直接深入到Python代碼中,學習關鍵的技巧和技巧來應對和克服這些挑戰(zhàn)惦界。這里有很多東西要拆挑格,讓我們開始吧!
目錄
- 深度學習模式的共同挑戰(zhàn)
- 車輛分類案例研究概述
- 了解每一個挑戰(zhàn)以及如何克服這些挑戰(zhàn)以提高深度學習模型的性能
- 案例研究:改進我們的車輛分類模型的性能
深度學習模式的共同挑戰(zhàn)
深度學習模型通常在大多數類型的數據上都有很好的表現(xiàn)表锻。尤其是在圖像數據方面恕齐,深度學習模型,特別是卷積神經網絡(CNNs)的性能幾乎優(yōu)于所有其他模型瞬逊。
這種方法很有效显歧,但也有CNN或其他深度學習模型無法執(zhí)行的情況。我遇到過好幾次确镊,數據很好士骤,模型的架構也沒有問題,損失函數和優(yōu)化器也設置好了蕾域,但是模型一直沒有達到我的預期拷肌。
這是我們大多數人在使用深度學習模式時面臨的共同挑戰(zhàn):
- 可用于培訓的數據不足(Paucity of Data available for training)
- 過度擬合(Overfitting)
- 欠擬合(Underfitting)
- 高訓練時間(High training time)
深度學習挑戰(zhàn)1:可用于培訓我們模型的數據不足
深度學習模型通常需要大量的數據進行訓練。一般來說旨巷,數據越多巨缘,模型的性能就越好。缺乏數據的問題是采呐,我們的深度學習模型可能無法從數據中學習模式或函數若锁,因此它可能無法在看不見的數據上提供良好的性能。
如果你看看車輛分類的案例研究斧吐,我們只有大約1650幅圖像又固,因此模型無法在驗證集上很好地執(zhí)行仲器。在使用計算機視覺和深度學習模型時,數據較少的挑戰(zhàn)非常普遍仰冠。
正如您所想象的乏冀,手動收集數據是一項繁瑣且耗時的任務。因此洋只,我們可以使用數據增強技術辆沦,而不是花費數天時間來收集數據。
對于圖像數據有多種數據增強技術木张,您可以參考這篇文章众辨。 常用的增強技術有旋轉端三、剪切舷礼、翻轉等。
這是一個非常廣泛的話題郊闯,這篇文章中介紹了這些技術及其在PyTorch中的實現(xiàn)妻献。
深度學習挑戰(zhàn)2:模型過度擬合
我相信你以前聽說過過擬合。這是有抱負的數據科學家在剛接觸機器學習時所面臨的最常見的挑戰(zhàn)(和錯誤)之一团赁。但這個問題實際上超越了領域——它也適用于深度學習育拨。
例如,假設我們有一個培訓和一個驗證集欢摄。我們利用訓練數據對模型進行訓練熬丧,并在訓練集和驗證集上檢查其性能(評估指標是準確性)。訓練準確率為95%怀挠,驗證準確率為62%析蝴。聽起來很熟悉?
由于驗證精度遠低于訓練精度绿淋,我們可以推斷該模型是過度擬合的闷畸。下圖將使您更好地了解什么是過度擬合:
由于訓練誤差很小,測試誤差很大吞滞,所以上圖中藍色部分為過擬合模型佑菩。過度擬合的原因是該模型從訓練數據中學習不必要的信息,因此在訓練集上表現(xiàn)得非常好裁赠。
但當引入新數據時殿漠,它就無法執(zhí)行。我們可以在模型的體系結構中引入dropout來解決這個過擬合的問題佩捞。
使用dropout绞幌,我們需要關閉神經網絡中的一些神經元。假設我們在一個原本有20個神經元的層上加上一個0.5的脫落失尖。因此啊奄,這20個神經元中的10個將被移除渐苏,我們最終得到一個不那么復雜的結構。
因此菇夸,模型不會學習復雜的模式琼富,我們可以避免過度擬合。如果你想了解更多關于輟學的信息庄新,請閱讀本文鞠眉。
深度學習挑戰(zhàn)3:模型擬合不足
深度學習模式也可能會欠擬合,盡管聽起來不太可能择诈。
欠擬合是指模型不能從訓練數據中學習模式械蹋,因而訓練集的性能較低。
這可能是由于多個原因造成的羞芍,例如沒有足夠的數據進行訓練哗戈,架構過于簡單,模型的訓練周期較少等荷科。
為了克服欠擬合唯咬,您可以嘗試以下解決方案:
- 增加訓練數據
- 做一個復雜的模型
- 增加訓練時間
因此對于我們來說欠擬合并不是一個大問題,因此我們將前進到下一個方法來改善一個深度學習模型的性能畏浆。
深度學習挑戰(zhàn)4:訓練時間太長
有時你可能會發(fā)現(xiàn)你的神經網絡需要很長時間才能收斂胆胰。這背后的主要原因是神經網絡各層輸入分布的變化。
在訓練過程中刻获,神經網絡各層的權重都發(fā)生了變化蜀涨,從而激活函數也發(fā)生了變化。現(xiàn)在蝎毡,這些激活函數是下一層的輸入厚柳,因此分布隨每個連續(xù)迭代而變化。由于分布的這種變化顶掉,每一層都必須適應變化的輸入——這就是為什么訓練時間增加的原因草娜。
為了解決這個問題,我們可以應用批標準化(batch normalization)痒筒,其中我們規(guī)范化隱藏層的激活函數宰闰,并嘗試使其分布相同。您可以在參考這篇文中有關批處理規(guī)范化的更多信息簿透。
尾注
在本文中移袍,我們研究了使用CNNs等深度學習模型時可能面臨的不同挑戰(zhàn)。我們還學習了所有這些挑戰(zhàn)的解決方案老充。以下是一些你可以嘗試的東西:
- 調整 dropout 率
- 增加或減少卷積層數
- 增加或減少密集層的數量
- 調整隱藏層中的神經元數量等葡盗。
歡迎關注【數據小鹽罐兒】一個很“咸”的數據科學公眾號,不定期分享有趣好玩的項目以及大量的學習資源