[知乎作答]·關於在Keras中多標簽分類器訓練准確率問題
本文來自知乎問題 關於在CNN中文本預測sigmoid分類器訓練准確率的問題?中筆者的作答,來作為Keras中多標簽分類器的使用解析教程。
一、問題描述
關於在CNN中文本預測sigmoid分類器訓練准確率的問題?
對於文本多標簽多分類問題,目標標簽形如[ 0 0 1 0 0 1 0 1 0 1 ]。在CNN中,sigmoid分類器訓練、測試的准確率的判斷標准是預測准確其中一個標簽即為預測准確還是怎樣。如何使sigmoid分類器的准確率的判斷標准為全部預測准確即為預測准確。有什么解決方案?
二、問題回復
問題中提出的解決多標簽多分類問題的解決方法是正確的。但是要注意幾點,keras里面使用這種方式的acc是二進制acc,會把多標簽當做單標簽計算。
什么意思呢?舉個例子,輸入一個樣本訓練,共有十個標簽,其中有兩個為1,而你預測結果為全部是0,這時你得到准確率為0.8。最后輸出的ac是所有樣本的平均。可以看出這個准確率是不可信的。
解決方法如下:重寫acc評價指標,筆者自己寫了一個多標簽分類的acc,一個樣本里,只有全部標簽都對應上才acc為1,有一個不對就為0。
acc是keras輸出acc,my_acc是多標簽acc,因為使用了數據增強,valacc更高。
由於每個label的比例不同,又測試不同權重重寫loss來對比。發現通過調整合適權重可以,相同參數下可以達到更優效果。
設置合適的權重值,val_acc上升了,val多標簽acc也達到了更高。


