簡體   English   中英

通過訓練小數據子集可以驗證深度學習模型嗎?

[英]Is it possible to validate a deep learning model by training small data subset?

我正在尋找訓練人臉識別的大型模型(resnet或vgg)。

在少數面孔(1..3)上進行訓練以驗證模型是否有效?

換句話說,如果一個模型學得好的話,是否可以證明該模型可以很好地完成任務?

這里的意思是我不想花一個星期的GPU昂貴的時間只是為了發現我的模型不好或者數據有錯誤或者我的TF編碼有錯誤

簡短答案:不,因為深度學習在海量數據上運行良好。

長答案:不。問題在於,僅學習一張面孔可能會在特定面孔上使模型過擬合,而沒有學習示例中未提供的功能。 例如,因為該模型學會了檢測到您的面部,這要歸功於該面部中特定的,非常簡單的模式(這稱為過擬合 )。

舉一個愚蠢的簡單例子,您的模型學會了檢測該臉,因為您的右臉頰上有痣,並且學會了識別它。

為了使模型在一般情況下表現良好,您需要大量的數據,從而使模型能夠學習不同類型的模式

建議:由於深度神經網絡的訓練是一項耗時的任務,因此通常不會一次訓練一個神經網絡,而是並行訓練許多神經網絡,並具有不同的超參數(層,節點,激活函數,學習率)等)。

根據以下討論進行編輯:

如果您的數據集很小,則在一般情況下很難獲得良好的性能,因為神經網絡將學習最簡單的模式通常不是一般/更好的模式。

添加數據會迫使神經網絡提取適用於一般情況的良好模式。

這是一個折衷,但是通常在較小的數據集上進行訓練不會導致對一般情況進行良好的分類

edit2:重新整理所有內容以使其更加清晰。 在小型數據集上獲得良好的性能並不能告訴您,在所有數據集上進行訓練后,您的模型是否是好的模型。 這就是為什么要訓練大部分數據集並在較小的數據集上進行測試/驗證的原因

對於臉部識別,通常使用暹羅色或三連體丟失。 這是一種一次性學習的方法。 這意味着在每個班級僅提供幾個示例(此處為人臉)的情況下,它的效果確實很好,但是您仍然需要針對許多示例(不同的人臉)進行培訓。 參見例如:
https://towardsdatascience.com/one-shot-learning-with-siamese-networks-using-keras-17f34e75bb3d

您不會從頭開始訓練模型,但是無論如何都要使用預訓練的模型並針對您的任務進行微調

您還可以查看經過預訓練的人臉識別模型,以獲得更好的結果,例如facenet
https://github.com/davidsandberg/facenet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM