農林漁牧網

您現在的位置是:首頁 > 林業

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

2022-06-17由 讀芯術 發表于 林業

指數分佈的分佈函式怎麼求出來的

AI

課堂開講,就差你了!

很多人說,看了再多的文章,可是沒有人手把手地教授,還是很難真正地入門AI。為了將AI知識體系以最簡單的方式呈現給你,從這個星期開始,芯君邀請AI專業人士開設“週末學習課堂”——每週就AI學習中的一個重點問題進行深度分析,課程會分為理論篇和程式碼篇,理論與實操,一個都不能少!

來,退出讓你廢寢忘食的遊戲頁面,取消只有胡吃海塞的週末聚會吧。未來你與同齡人的差異,也許就從每週末的這堂AI課開啟了!

全文共

1964

字,預計學習時長

4

分鐘

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

數學準備

伯努利分佈(Bernoulli ):隨機變數只有兩種可能結果{0,1}時,一種結果發生的機率為p,另一種就是1-p,其機率密度為:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

多項分佈(Multinomial ):隨機變數有k個互斥的結果,第i個結果的發生機率為

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

,我們總共需要知道k-1個結果機率,最後一個可以透過機率和為1求得,所以可將伯努利分佈拓展得到:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

其中,I為指示函式,只有當裡面的關係為真時,會返回1,否則返回0。

指數分佈族(Exponential Family):可以表示為指數形式的機率分佈,Bernoulli和Multinomial 都可以屬於指數分佈,機率密度函式的一般形式需要滿足:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

其中

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

為引數向量,

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

為充分統計量,對於第一次接觸這個名詞的同學可以簡單的理解為充分統計量包含了分佈的所有資訊。

廣義線性模型(GLM):顧名思義,有三點要素:廣義要求輸出服從指數分佈族;線性要求特徵和引數線性連線,最簡單的形式可以選擇為

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

;模型要求我們得出輸出和輸入的關係,

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

即後驗機率。

我們已經在前面的課程中介紹了隱藏單元的設計,從表示學習的角度來看,神經網路前面的所有層,都可以看做獲得一個更好的表示,隱藏單元的最大作用是非線性,使得神經網路在最基本的乘法中獲得足夠的複雜性,只有最後一層將表示轉化為輸出,所以只有最後一層可以看作統計學習中的學習器,比如一個沒有隱層的sigmoid感知機,真正執行分類任務的是sigmoid神經元,整個模型事實上就是logistic迴歸。如果我們選擇新增sigmoid作為啟用函式的隱層,那麼從整個神經網路的角度來說,sigmoid函式在隱藏單元的作用只是提供非線性,在輸出單元的作用卻是作為分類器。

我們已經熟悉三種常見的輸出單元:

Linear單元,實際上未進行任何操作,用於迴歸任務

Sigmoid,將用於二分類

Softmax,用於多分類

其中,linear和sigmoid都是較為好理解的,softmax作為一個用於多分類的函式,如果我們只是把softmax看作是sigmoid的多分類推廣,實際上卻本末倒置,sigmoid和softmax函式都有著更為本質的意義,我們將會在這一節對softmax進行詳細討論。

回顧Logistic迴歸

考慮一個二分類問題,我們希望模型可以輸出某個類別的機率,即有

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

,那麼1—,類別標記為{0,1},同時服從伯努利分佈,由sigmoid函式指定:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

利用我們在《基於貝葉斯推斷的迴歸模型》中介紹的極大似然估計,就會得到損失函式,因為此時的

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

就是

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

將的具體形式代入,就可得:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

很多人都會對這些logistic迴歸的基本操作非常熟悉,那麼容易忽略掉一個問題:為什麼要使用sigmoid函式來控制伯努利分佈的事件發生機率呢,畢竟我們還有很多的輸出範圍在[0,1]之間的函式,sigmoid函式到底真正特殊在哪裡?同時,用於多分類的softmax函式是這怎樣得出的?

很多人會把softmax當作sigmoid函式的推廣,但這樣的理解並不是自然的,比如面對多分類問題,softmax函式會輸出每個結果的機率,和為1;但sigmoid函式會對每一個數據輸出屬於該結果和不屬於該結果的機率,這個機率之和為1,但對於每個結果而言,機率之和並不為1,事實上,sigmoid函式的背後有著更為本質的原因,我們可以分別從廣義線性模型的角度來理解softmax函式。

回顧Logistic迴歸

根據廣義線性模型的第一個原理,我們假設target(也就是y)服從伯努利分佈,就有:

我們將此分佈寫成指數分佈族的形式就會得到:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

對應的引數向量就可以被表示為:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

從這個式子出發,用引數表示機率,就可以得到機率的表示式:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

再根據廣義線性模型的第二個原理:

注意,其中的正負號均有意義。這樣就得到了logistic迴歸的基本公式,假如面對從指數分佈族的角度來說,本質意義上不再是利用sigmoid函式給出伯努利分佈的機率,而是面對二分類問題,假設了伯努利分佈,如果放入了廣義線性模型的框架,那麼機率形式必然是sigmoid函式。

廣義線性模型中的sigmoid函式

面對多分類問題,我們假設多項式分佈,仍然延續上述的分析方法,並且利用指示函式的性質,就會得到:

週末AI課堂 理解softmax函式 | 機器學習你會遇到的“坑”

其中,我們注意到這裡得到的形式是和

乘積再求和,與指數分佈族的直接乘積略微不同,但是對應元素乘積求和正好是向量的內積,所以我們只需要將和看作一個k-1維的向量,我們選取的某一元素,就可以被表示為:

同理,我們也可以做簡單的轉換就可以得到機率的表示式,注意到

所以同時將左右兩邊看作自然底數的指數,就可得:

同時利用機率和為1的性質,即有:

所以最終的形式就變為:

這正是softmax函式的形式,我們也可以把它叫做指數歸一化形式。經過這樣的處理,最後的輸出為一個向量,每個元素代表著每一個結果的機率。

如圖,當我們的引數和特徵進入softmax之後,softmax會輸出這三個結果的機率。

我們在程式上也很好實現它:

import math

廣義線性模型中的sigmoid函式

softmax(x):

z_exp = [math。exp(i)

廣義線性模型中的softmax函式

i

廣義線性模型中的softmax函式

z]

sum_z_exp =sum(z_exp)

softmax = [i / sum_z_exp

def

i

for

z_exp]

in

(softmax)

for

in

廣義線性模型是理解softmax函式的一條思路,其中線性連線的形式並不是唯一的,本文采取了最簡單的連線辦法,如果我們更換連線函式,可能會得到不同的形式,此時得到的就不再是sigmoid或者softmax。

理解softmax函式的另外一條思路是利用最大熵原則,我們將在下一節詳細介紹深度學習的損失函式和輸出單元為什麼與熵相關。

return

讀芯君開扒

作者:唐僧不用海飛絲

如需轉載,請後臺留言,遵守轉載規範