【机器学习基础】Softmax与交叉熵的数学意义(信息论与概率论视角)
經過我長時間的觀察,發現很多人對人工智能/機器學習的理解只停留在“這是個經典/最新棒槌,我拿這個棒槌敲釘子賊6……”這個level。當然,如果真的敲得很6,那也是一個很厲害的大佬了(我覺得我敲的一點都不6……)
但是,隨著人工智能行業的“爆火”和“過熱”,會掄棒槌的人只會越來越多。因為這個越來越多的人會撰寫文章,告訴你怎么掄棒槌。
但他們很少告訴你這個棒槌是怎么來的
至少現在,知其然不知其所以然不是硬傷,但隨著時間推移,越來越多的人被營銷號/七大姑八大姨連哄帶騙,躊躇滿志地進入這個領域,所謂“算法工程師”這個行業的內卷和競爭只會愈發嚴重。
等到那時,即使企業只想要一個“棒槌敲釘子賊6”的人,他也會通過“棒槌怎么來”這種問題篩除一大批人。
何況棒槌怎么來這個問題本來就應該是基礎……
而且,只會“拿棒槌敲釘子的人”,必然不會滿足大部分工業界的要求。因為終有一天,“人工只能”產業會不能只靠PPT,而要靠“產品”才能活下去。
此時,你必須要是那個可以“造棒槌”的人
——2019.8.18 一個連怎么掄棒槌的不精通的AI小白。
一、什么是Softmax分類器?
Softmax分類器可以理解為邏輯回歸分類器面對多分類問題的一般化歸納。
現在我們假設存在一個多分類器?
ps:如果想簡化一點,那可以直接認為??是個線性分類器?
輸出多分類問題的評分時,除了Softmax外還有SVM,不過SVM不存在直觀解釋,我們只能認為它是個越高越好的分數。
而Softmax的輸出則可以更加直觀地解釋為歸一化概率,并可由此引出一系列解釋,這一點后文會討論。
在Softmax分類器中,函數映射??代表著某種“評分”這個概念保持不變,但將這些評分值視為每個分類的未歸一化的對數概率,并且將折葉損失(hinge loss)替換為交叉熵損失(cross-entropy loss)。公式如下:
或等價的
在上式中,使用??來表示分類評分向量??中的第?j?個元素。
數據集的損失值是數據集中所有樣本數據的損失值??的均值與正則化損失??之和。
函數??被稱作softmax 函數,它的:
輸入一個向量,向量中元素為任意實數的評分值(??中的),函數對其進行縮放.
輸出一個向量,其中每個元素值在0到1之間,且所有元素之和為1。
所以,包含softmax函數的完整交叉熵損失看起唬人,實際上還是比較容易理解的。
二、多視角下的softmax函數
1. 信息論視角:
在機器學習中,有一個經常和softmax捆綁在一起的名詞“交叉熵”損失
在“真實”分布??和估計分布之間的 交叉熵 定義如下:
因此,Softmax就是最小化在估計分類概率??和“真實”分布之間的交叉熵。
證明/解釋
“假設真實”分布就是所有概率密度都分布在正確的類別上(比如:假設輸入屬于第??類,則?在??的位置就有一個單獨的1)。
還有,既然交叉熵可以寫成熵和相對熵(Kullback-Leibler divergence,另一個名字叫KL散度)
且delta函數??的信息熵是0(若不了解請學習信息論/通信原理等課程的內容,了解信息熵的定義) ;
那么,就能訓練一個sotfmax分類器,就等價于對兩個分布之間的相對熵做最小化操作。
換句話說,交叉熵損失函數“想要”預測分布的所有概率密度都在正確分類上。
注:Kullback-Leibler散度(Kullback-Leibler Divergence)也叫做相對熵(Relative Entropy),它衡量的是相同事件空間里的兩個概率分布的差異情況。
2. 概率論解釋
可解釋為給定輸入特征??,以??為參數,分配給正確分類標簽??的歸一化概率。
Softmax分類器將輸出向量??的評分解釋為沒歸一化的對數概率。那么,做指數函數的冪就得到了沒有歸一化的概率,而除法操作則對數據進行了歸一化處理,使得這些概率的和為1。
從概率論的角度來理解,是在最小化正確分類的負對數概率,這可以看做是最大似然估計(MLE)。
該解釋的另一個好處是,損失函數中的正則化部分??可以被看做是權重矩陣??的高斯先驗,進行最大后驗估計(MAP),而不是最大似然估計。
三、彩蛋:令人迷惑的命名規則
SVM分類器使用的是折葉損失(hinge loss),又被稱為最大邊界損失(max-margin loss)。
Softmax分類器使用的是交叉熵損失(corss-entropy loss)。
Softmax分類器的命名是從?softmax函數?那里得來的,softmax函數將原始分類評分變成正的歸一化數值,所有數值和為1,這樣處理后交叉熵損失才能應用。
注意,“softmax損失(softmax loss)”是沒有意義的,因為softmax只是一個壓縮數值的函數。(這個說法常用來做簡稱)
四、SVM和Softmax的比較
下圖有助于區分這 Softmax和SVM這兩種分類器:
兩個分類器都計算了同樣的分值向量?f(本節中是通過矩陣乘來實現)
不同之處在于對?f?中分值的解釋:
SVM分類器將它們看做是分類評分,它的損失函數鼓勵正確的分類(本例中是藍色的類別2)的分值比其他分類的分值高出至少一個邊界值。
Softmax分類器將這些數值看做是每個分類沒有歸一化的對數概率,鼓勵正確分類的歸一化的對數概率變高,其余的變低。
上圖的兩個分類器損失函數值沒有可比性。只在給定同樣數據,在同樣的分類器的損失值計算中,它們才有意義。
Softmax分類器為每個分類提供了“可能性”
SVM的計算是無標定的,而且難以對評分值給出直觀解釋。
Softmax分類器則計算出對于所有分類標簽的可能性。
舉個例子,SVM分類器是[12.5, 0.6, -23.0]對應分類“貓”,“狗”,“船”。
而softmax分類器可以計算出三個標簽的”可能性“是[0.9, 0.09, 0.01],這就讓你能看出對于不同分類準確性的把握。
為什么我們要在”可能性“上面打引號呢?
因為可能性分布的集中或離散程度是由正則化參數λ直接決定的,λ是你能直接控制的一個輸入參數。如果正則化參數 λ 更大,那么權重 W 就會被懲罰的更多,然后他的權重數值就會更小,算出來的分數也會更小,概率的分布就更加分散了。隨著正則化參數?λ?不斷增強,輸出的概率會趨于均勻分布。
softmax分類器算出來的概率最好是看成一種對于分類正確性的自信(貝葉斯學派的觀點)。
看起來很不一樣對吧,但實際上……
在實際使用中,SVM和Softmax經常是相似的:
兩種分類器的表現差別很小。
相對于Softmax分類器,SVM更加“局部目標化(local objective)”,這既可以看做是一個特性,也可以看做是一個劣勢。
考慮一個評分是[10, -2, 3]的數據,其中第一個分類是正確的。那么一個SVM(??)會看到正確分類相較于不正確分類,已經得到了比邊界值還要高的分數,它就會認為損失值是0。
SVM對于數字個體的細節是不關心的:如果分數是[10, -100, -100]或者[10, 9, 9],對于SVM來說沒設么不同,只要滿足超過邊界值等于1,那么損失值就等于0。
softmax分類器則不同。對于[10, 9, 9]來說,計算出的損失值就遠遠高于[10, -100, -100]的。
換句話來說,softmax分類器對于分數是永遠不會滿意的:正確分類總能得到更高的可能性,錯誤分類總能得到更低的可能性,損失值總是能夠更小。
但SVM只要邊界值被滿足了就滿意了,不會超過限制去細微地操作具體分數。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 獲取本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【机器学习基础】Softmax与交叉熵的数学意义(信息论与概率论视角)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【论文解读】深度强化学习基石论文:函数近
- 下一篇: 谷歌浏览器的下载位置如何设置 Chrom