2016-12-31 290 views
1

在與對象檢測和語義分割相關的深度學習實現中,我看到了使用sigmoid或softmax的輸出層。我不是很清楚什麼時候用哪個?在我看來,他們都可以支持這些任務。有這個選擇的指導方針嗎?softmax和sigmoid函數輸出層

回答

3

softmax()有助於當你想要一個概率分佈,總結爲1 sigmoid當你想輸出將範圍從0到1時,但不必總和爲1

在你的情況,你想分類和選擇兩種選擇。我會建議使用softmax(),因爲您會得到一個可以應用交叉熵損失函數的概率分佈。

+0

嗨,我認爲我的問題很普通。當我閱讀一些論文或深度學習實現時,我發現作者使用sigmoid或softmax。我沒有看到與這種選擇背後的邏輯有關的解釋。例如,如果我們正在研究語義分割問題,則應將每個像素預測爲第1類或第2類(假設此語義分割是兩類標籤)。那麼我認爲softmax和sigmoid都可以使用。但哪一個更好,哪個應該給予更多的偏好。 – user288609

+0

查看已更新的答案 – martianwars

1

對象檢測是在圖像中的滑動窗口上使用的對象分類。在分類中,重要的是在某些類別空間中找到正確的輸出。例如。你會發現10個不同的物體,你想知道哪個物體最有可能在那裏。然後softmax是好的,因爲它的整體層總和爲1。

另一方面,語義分割以某種方式分割圖像。我已經完成了語義醫學分割,並且輸出是二進制圖像。這意味着您可以將sigmoid作爲輸出來預測此像素是否屬於此特定類,因爲對於每個輸出類,sigmoid值都介於0和1之間。

+0

http://stackoverflow.com/help/someone-answers –

2

一般來說,當有'n'個類別存在時,使用Softmax(Softmax分類器)。 Sigmoid或softmax都可用於二進制(n = 2)分類。

乙狀結腸: S(X)= 1 /(1+(E ^( - X)))

使用SoftMax:

  σ(x)j = e /**Σ**{k=1 to K} e^zk for(j=1.....K) 

使用SoftMax是一種多級的乙狀結腸,但如果看到Softmax的功能,所有softmax單位的總和應該是1.在sigmoid中,它並不是真的有必要。

挖深,你也可以使用sigmoid進行多級分類。當你使用softmax時,基本上你可以得到每個類的概率(聯合分佈和多項式可能性),其總和必定爲1。如果你使用sigmoid進行多類分類,它會像一個邊緣分佈和伯努利似然,p(y0/x),p(y1/x)等。