在一個二分類中,無論預測結果正確與否,一般都會輸出一個比較大的概率,對於模型來說不確定的東西不應該是概率在0.5附近嗎?


因為訓練的時候你沒有跟網路說什麼樣的東西應該不確定。

你只給了確定的label,要麼是[0,1]要麼是[1,0],那網路就只會出接近這兩個值的輸出。

-----------------分界線------------------

當然這背後是有數學原理的,二分類的softmax其實等價於sigmoid,如果一直給one-hot的標籤,在訓練集幾乎都能分正確的前提下,網路趨向於將feature的norm無限拉長,sigmoid越來越接近0-1的階躍函數,幾乎所有樣本的輸出就都在接近0和接近1的位置,中間態幾乎沒有。

注意這裡引入了一個假設,即「訓練集幾乎都能分正確」。如果你的訓練集擬合得不好,你會發現輸出0.3、0.5之類的樣本的機會會大大增加。

-----------------分界線------------------

怎麼告訴網路不確定性呢?

有兩種方式:一種是soft label,即你直接就給部分樣本[0.5, 0.5]的label;一種是noise label,就是你覺得不確定的東西,一會給0的label,一會給1的label。

這兩種方式都可以起作用,當然第一種效果更好一些,網路有比較明確的目標,第二種方式在batch training下其實也是有效的,只是看起來比較奇怪。


輸出的是confidence而不是實際的概率,比如你把所有輸出為0.8的樣本放在一起來看,可能為真的概率多半不是0.8。這個confidence和實際概率的吻合程度,就叫做calibration。calibrated的模型未必就是準確率高的,但對於醫療之類的問題,我們希望confidence要能反應實際的概率。

如果你是做deep learning的,可以看看這篇On Calibration of Modern Neural Networks。這篇文章里經驗性地發現resnet之類的結構其實是不calibrated的


會啊,前面relu的話輸出是【0,0】,那softmax就會是兩個0.5


這跟softmax 沒啥關係吧,softmax 只不過做了概率歸一化,影響預測概率分布的是模型,以及測試集。


softmax所使用的exp形式具有類似「馬太效應」的作用,對於給定的一組C維向量,經過softmax概率化後,小的值會變得相對更小,大的值會變得相對更大。

若是想讓網路輸出能夠表示不確定性樣本的某種指標,可以在傳統分類網路中引入不確定性估計。


概率要想是0.5, 前面的回歸結果必須是0。這就像是扎飛鏢一樣,扎到正中圓心,當然難了。


其實我覺得這個問題的關鍵在於「對於模型來說不確定的東西」。如果這個標準成立,那可能概率確實應該是0.5左右。但是這個「不確定」是你認為的「不確定」,而不是模型認為的。

可能由於訓練樣本的不均衡,讓他覺得拋硬幣「正面」的概率要遠高於「反面」。而你由於你的先驗知識,認為拋硬幣就是五五開的概率。

除了樣本的不均衡,也有可能有很多其他情況,我覺得最重要還是具體問題具體分析,不要想當然。


第一次回答問題.... 我猜是因為訓練時候用的是Maximize Likelihood,所以網路predict的概率是不靠譜的 普遍趨向於overconfident,即使是錯的預測 也不會出現類似uniform的,因為entropy太高了


神將網路中分類器最後一層(softmax之前一層)輸出的數量級往往都大於1,而softmax中各個類預測的概率之比都是隱層輸出之差的指數次,例如不是很確定是哪個類,一個類的輸出12,一個類的輸出10,但預測的概率只比就是e^(12-10),差不多是0.9與0.1,你就算輸入白雜訊,它都能信誓旦旦地給你分個類出來。

神經網路根本就不是在學什麼概率,只是大家缺少理論支持,只好硬是套了個概率的皮上去罷了。統計中對模型合理性的假設檢驗一概沒有,數據服從什麼分布從來沒有深入研究過,只是聲稱神經網路表示了其概率分布罷了,實際上根本就說不通,自欺欺人罷了。

如果想要用概率與統計解釋深度學習,還需要更多更細緻更深入的研究。現階段深度學習、神經網路論文里提到的概率、貝葉斯推斷等概念其實只是看著漂亮的公式罷了,完全不能切合實際。


  1. sigmoid和softmax都會有飽和(saturate)的問題,所以在不加或正則項很小的情況下容易過擬合,使得輸出偏向於0或1(沒驗證過:即使訓練集中同樣的X的label=0和1各出現了100,101次,只要訓練得足夠久,預測P(label=1)還是會接近1)
  2. 即使沒有過擬合,不確定的東西也不是只有50-50這一種可能(伯努利分布了解一下),根據不同的輸入,考慮到模型本身應該是個連續的函數,假設二分類,所以輸出可能是在(0,1)之間的任意值


推薦閱讀:
相关文章