在二分類問題中,准確率一直處於50%上下的解決方法


最近在 貓狗識別 項目中,不知為何准確率(訓練集准確率和驗證集准確率)一直處於0.5左右,這說明網絡根本沒有學習。后來查閱了許多他人的經驗,並做了總結。

首先談談我的是如何解決的:

  • 網絡結構:AlexNet
  • 優化器:Adam (這里正是問題所在)
  • 框架:PyTorch

關於優化器,我最開始使用的的是 torch.optim.Adam(),但是訓練100個Epoch后,准確率始終在 49% ~ 50%。

解決方法: 換個優化器!我使用的是 torch.optim.SGD(),其他的或許也行,但我還沒有嘗試。

Note:

出現以上問題時,我們會發現 loss 是 0.69,這是因為輸出 0, 1 的概率都是0.5,而 \(-\ln 0.5=0.69\)


網絡上也有一些解決方法,可以對照檢查自己的代碼:

  1. 訓練數據需要打亂,要檢查每此batch是否都是一個類別,如果是,則沒有辦法優化;
  2. 檢查網絡是不是沒有回傳梯度,而是只做了前向運算;
  3. 檢查輸入數據是否有做標准化,可能直接傳入 \(0 \sim 255\) 像素進去了;
  4. 二分類問題中 0.5 的 acc 接近隨機猜測的值,可以檢查下標簽是否標錯;
  5. 檢查參數有沒有初始化;
  6. 檢查第一層的卷積輸出是否正常,是不是全 0 之類的;
  7. 嘗試不同的 Learning Rate;
  8. 檢查是否在 logit 那層加了激活函數,導致 logits 有問題,例如全為 0,經過 softmax 后就是 0.5了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM