Day71-正確的使用損失函數?
老師您好~
雖然類似問題有許多人問過了
但是還是充滿疑問...
我的疑問來源是:
1.是否在不同的問題上面
應該就會有其相對應的loss function來評估模型
如在cifar10中是分類問題
所以使用categorical_crossentropy是相當直觀的
但在這種例子中使用binary_crossentropy/MSE就是不太正確的行為?
(不過如果只有兩類就可以使用binary_crossentropy?)
2.對cifar10做二元分類是怎麼分的呢?
其中的2元只是單純不是0就是1嗎?
這部分是否可以稍微再講解一下
謝謝老師
回答列表
-
2019/07/31 上午 11:22Jimmy贊同數:2不贊同數:0留言數:1
Hi 浩倫!
1. 是的。更準確地來說,應該是你希望模型的輸出是什麼樣,就要給相對應 Loss function 來訓練,模型才會往你想的方向前進。用 MSE 其實也是可以,但是相較於 Cross entropy,MSE 常會遇到難以優化的問題,所以分類問題才多以 cross entropy 來解決。
2. 對多類別做二元分類就會轉變為獨立的 "是非問題"。以 Cifar-10 的 10 個類別為例,假設一張圖片送進模型,模型會問他十個問題,
(1) 是不是"狗"? 是為1,不是為0
(2) 是不是 "貓“? 是為1,不是為0
(3) 是不是 "船"? 是為1,不是為0
...
做了十次的二元分類,其實就可以做到多元分類的效果。但是這邊有點要特別註意的是,問題之間彼此是獨立的!因此,如果模型訓練得不好,一張圖片很有可能,狗跟貓的答案皆為 "是"!這樣就會無法更精準的分類,但如果是使用 categorical_crossentropy 訓練,則不會有這個問題,因為十個類別的機率加總要是 1,各類別之間並不是獨立的。