我正在嘗試通過微調VGG16網絡(預先在ImageNet上進行訓練)在一個相當小的數據集(11000張圖像,200個類別)上進行圖像分類來進行轉移學習。實際上我只是在修改VGG16網絡的最後3個FC層。我在3個FC層中的兩個上添加了丟失概率爲0.5的丟失。損失與驗證準確度之間的關係是什麼?
所以,當我在這個網絡上進行訓練時,除了用原作者給出的VGG_MEAN值減去圖像中的每個通道外,我沒有做任何奇特的預處理。
因此,事情是培訓似乎進行得很好,損失大幅下降並穩定在一定的價值附近,並且我正在監控網絡對驗證集(20%的數據)的預測準確性,具體數目爲批次已經過培訓。 我注意到平均驗證的準確性沒有顯示出任何改進的趨勢 - 並且平均驗證準確性在整個培訓過程中波動,當時我實際上希望它逐漸增加。在推斷時,我確保不要拖動驗證數據。
我試圖降低學習速度,微調較少的層次,但無濟於事。如果損失是代表模型是實際學習的代理人,那麼爲什麼驗證準確性的差異?
(1)這是因爲我只有很少的訓練數據開始? (2)最初的Imagenet數據集有1000個類,但是我的分類任務更加細化,並且具有原始數量的ImageNet類的1/5(考慮對鳥的種類或不同的靈長類進行分類)。這可能是一個問題嗎? 我想從一些有這方面問題的工作經驗的人員那裏得到一些意見和反饋。
如果我理解的很好,你的損失函數正在減少,但你的驗證損失不再下降,這表明你正在過度適合你的訓練集。如果是這種情況,請嘗試懲罰您的參數以避免過度擬合。 – Feras
向FC7和FC6層添加0.5的丟失不會改善任何事情。事實上,驗證的準確性很差,我只是難倒了。 – user1050648