面對未知類別你說random seed會造成巨大的差異,這個問題就是這筆資料"未曾/部分"出現在訓練資料內。
簡單說資料有100張吉娃娃資料和5張臘腸狗資料,然後訓練的時候下random,假設batch為20。
1. 結果每一次batch有臘腸的時候,都是19張吉娃娃一張臘腸,這樣的loss換偏向吉娃娃的錯誤。
2. 另一次random seed 的時候,都是15張吉娃娃5張臘腸,這時候就比較能學到臘腸的資料。
所以1再判斷臘腸出錯率高,但2判斷的時候準確度就比較高。
所以我們在評估資料的穩定性(不確定性),除了OOD和你提到的reconstruct loss外,多個模型的一致性也很重要,例如上述的1和2訓練出來的模型,假設兩個模型判斷的結果都一樣,代表這張圖穩定性很高,在訓練集有出現過,但1和2結果不同,代表這張圖穩定性很差,不確定性高,這張圖需要拿來再訓練模型。
或是你在模型部分可以採用ensemble learning方式,讓多個模型的output做decision fusion做到避免你說random seed造成的差異。
上述做法都是解法之一,但最大的問題是「面對未知」,現今深度學習是有本事學出"外差"的結果,但畢竟"外差"依舊是預測的,所以不穩定性本來就高,這類的問題我建議不要用演算法解,演算法都是基於特定問題和類別來解,你今天解掉這個問題,不代表換個資料集後這問題還是能解,最簡單的方式去收資料吧。
這句話很重要「資料決定成效,演算法只是去逼近資料預測/分類結果的上限」。