來源商業新知網,原標題:函數分類大PK:Sigmoid和Softmax,分別怎麼用?php
設計模型執行分類任務(如對胸部X光檢查到的疾病或手寫數字進行分類)時,有時須要同時選擇多個答案(如同時選擇肺炎和膿腫),有時只能選擇一個答案(如數字「8」)。本文將討論如何應用Sigmoid函數或Softmax函數處理分類器的原始輸出值。算法
神經網絡分類器網絡
分類算法有不少種,但本文討論的內容只限於神經網絡分類器。分類問題可經過不一樣神經網絡進行解決,如前饋神經網絡和卷積神經網絡。svg
神經網絡分類器最終結果爲某一貫量,即「原始輸出值」,如[-0.5, 1.2, -0.1, 2.4],這四個輸出值分別對應胸部X光檢查後發現的肺炎、心臟肥大、瘤和膿腫。但這些原始輸出值是什麼意思?函數
將輸出值轉換爲機率可能更容易理解。比起看似隨意的「2.4」,患有糖尿病的可能性爲91%,這種說法更便於患者理解。設計
Sigmoid函數或Softmax函數能夠將分類器的原始輸出值映射爲機率。3d
下圖顯示了將前饋神經網絡的原始輸出值(藍色)經過Sigmoid函數映射爲機率(紅色)的過程:blog
而後採用Softmax函數重複上述過程:ip
如圖所示,Sigmoid函數和Softmax函數得出不一樣結果。get
緣由在於,Sigmoid函數會分別處理各個原始輸出值,所以其結果相互獨立,機率總和不必定爲1,如圖0.37 + 0.77 + 0.48 + 0.91 = 2.53。
相反,Softmax函數的輸出值相互關聯,其機率的總和始終爲1,如圖0.04 + 0.21 + 0.05 + 0.70 = 1.00。所以,在Softmax函數中,爲增大某一類別的機率,其餘類別的機率必須相應減小。
胸部X光片 :一張胸部X光片可以同時顯示多種疾病,所以胸部X射線分類器也須要同時顯示多種病徵。下圖爲一張顯示肺炎和膿腫的胸部X光片,在右側的標籤欄中有兩個「1」:
入院 :目標是根據患者的健康檔案,判斷該患者未來入院的可能性。所以,分類問題可設計爲:根據診斷可能致使患者將來入院的病症(若是有的話),對該患者現有的健康檔案進行分類。致使患者入院的疾病可能有多種,所以答案可能有多個。
圖表 :下面兩個前饋神經網絡分別對應上述問題。在最後計算中,由Sigmoid函數處理原始輸出值,得出相應機率,容許多種可能性並存——因胸部X射線可能反映出多種異常狀態,則患者入院的病因可能不止一種。
手 寫數字 :在區別手寫數字(MNIST數據集:https://en.wikipedia.org/wiki/MNIST_database)時,分類器應採用Softmax函數,明確數字爲哪一類。畢竟,數字8只能是數字8,不能同時是數字7。
Iris :Iris數據集於1936年引入(https://en.wikipedia.org/wiki/Iris_flower_data_set),一共包含150個數據集,分爲山鳶尾、雜色鳶尾、維吉尼亞鳶尾3類,每類各有50個數據集,每一個數據包含花萼長度、花萼寬度、花瓣長度、花瓣寬度4個屬性。
如下9個示例摘自Iris數據集:
數據集中沒有任何圖像,但下圖的雜色鳶尾(https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_versicolor_3.jpg),可供你欣賞:
Iris數據集的神經網絡分類器,要採用Softmax函數處理原始輸出值,由於一朵鳶尾花只能是某一個特定品種——將其分爲幾個品種毫無心義。
要理解Sigmoid和Softmax函數,應先引入 「e」。在本文中,只需瞭解e是約等於2.71828的數學常數。
下面是關於e的其餘信息:
• e的十進制表示永遠存在,數字出現徹底隨機——相似於pi。
• e經常使用於複利、賭博和某些機率分佈的研究中。
• 下面是e的一個公式:
但e的公式不止一個。其計算方法有多種。
有關示例:https://www.intmath.com/exponential-logarithmic-functions/calculating-e.php
• 2004年,谷歌公司首次公開募股達2,718,281,828美圓,即「e百萬美圓」。
• 維基百科中人類歷史上著名的十進制數字e的演變
(https://en.wikipedia.org/wiki/E_%28mathematical_constant%29#Bernoulli_trials),從1690年的一位數字開始,持續到1978年的116,000位數字:
Sigmoid函數和Softmax函數
Sigmoid =多標籤分類問題=多個正確答案=非獨佔輸出(例如胸部X光檢查、住院)
• 構建分類器,解決有多個正確答案的問題時,用Sigmoid函數分別處理各個原始輸出值。
• Sigmoid函數以下所示(注意e):
在該公式中,σ表示Sigmoid函數,σ(zj)表示將Sigmoid函數應用於數字Zj。 「Zj」表示單個原始輸出值,如-0.5。 j表示當前運算的輸出值。若是有四個原始輸出值,則j = 1,2,3或4。在前面的例子中,原始輸出值爲[-0.5,1.2,-0.1,2.4],則Z1 = -0.5,Z2 = 1.2,Z3 = -0.1,Z4 = 2.4。
因此,
Z2,Z三、Z4 的計算過程同上。
因爲Sigmoid函數分別應用於每一個原始輸出值,所以可能出現的輸出狀況包括:全部類別機率都很低(如「此胸部X光檢查沒有異常」),一種類別的機率很高可是其餘類別的機率很低(如「胸部X光檢查僅發現肺炎」),多個或全部類別的機率都很高(如「胸部X光檢查發現肺炎和膿腫」)。
下圖爲Sigmoid函數曲線:
https://en.wikipedia.org/wiki/Sigmoid_function#/media/File:Logistic-curve.svg
Softmax =多類別分類問題=只有一個正確答案=互斥輸出(例如手寫數字,鳶尾花)
• 構建分類器,解決只有惟一正確答案的問題時,用Softmax函數處理各個原始輸出值。
• Softmax函數的分母綜合了原始輸出值的全部因素,這意味着,Softmax函數獲得的不一樣機率之間相互關聯。
• Softmax函數表述以下:
除分母外,爲綜合全部因素,將原始輸出值中的e ^ thing相加,Softmax函數與Sigmoid函數差異不大。換言之,用Softmax函數計算單個原始輸出值(例如Z1)時,不能只計算Z1,分母中的Z1,Z2,Z3和Z4也應加以計算,以下所示:
Softmax函數的優點在於全部輸出機率的總和爲1:
區分手寫數字時,用Softmax函數處理原始輸出值,如要增長某一示例被分爲「8」的機率,就要下降該示例被分到其餘數字(0,1,2,3,4,5,6,7和/或9)的機率。
• 若是模型輸出爲非互斥類別,且能夠同時選擇多個類別,則採用Sigmoid函數計算該網絡的原始輸出值。
• 若是模型輸出爲互斥類別,且只能選擇一個類別,則採用Softmax函數計算該網絡的原始輸出值。