生成模型学习笔记:从高斯判别分析到朴素贝叶斯
機器之心專欄
作者:張威
翻譯:燕子石
本文是哥倫比亞大學研究生張威在生成模型上的學習筆記,由畢業于新西蘭奧克蘭理工大學的燕子石翻譯。機器之心之前曾介紹過張威所寫的吳恩達《機器學習》課程的學習筆記。
英文原版地址:https://wei2624.github.io/MachineLearning/sv_generative_model/
中文翻譯地址:https://air-yan.github.io/machine%20learning/Generative-Learning-Algorithm/
1 判別模型
判別模型是一種對觀測數據進行直接分類的模型,常見的模型有邏輯回歸和感知機學習算法等。此模型僅對數據進行分類,并不能具象化或者量化數據本身的分布狀態,因此也無法根據分類生成可觀測的圖像。
定義上,判別模型通過構建條件概率分布 p(y|x;θ) 預測 y,即在特征 x 出現的情況下標記 y 出現的概率。此處 p 可以是邏輯回歸模型。
2 生成模型
與判別模型不同,生成模型首先了解數據本身分布情況,并進一步根據輸入 x,給出預測分類 y 的概率。該模型有著研究數據分布形態的概念,可以根據歷史數據生成新的可觀測圖像。
貝葉斯分類就是一個典型的例子。在這個例子中,我們有一個先驗分類,根據這個先驗分類,我們可以使用貝葉斯原理計算每個分類的概率,然后取概率最高的概率。同時,我們還可以根據特定的先驗生成特征。這就是一個生成過程。
3 高斯判別分析
高斯判別分析(GDA)是一個生成模型,其中 p(x|y) 是多元高斯正態分布。
3.1 多元高斯正態分布
在多元正態分布中,一個隨機變量是一個在維度為 n 的 Rn 空間中的矢量值。因此,多元高斯的均值向量 μ∈Rn,協方差矩陣Σ∈Rn x n,其中$ \ Sigma 是對稱的半正定矩陣。其概率密度函數為:
?
如上所述,μ是期望值。
向量值隨機變量 Z 的協方差為:
?
下圖顯示了均值為零但不同協方差的幾個密度函數。
?
以下為上圖的協方差(從左到右):
?
4 高斯判別分析和邏輯回歸
4.1 高斯判別分析
我們再來談談二元分類的問題,我們可以用多元高斯模型對 p(x|y) 進行建模。總的來講,我們有:
?
其中φ,μ0,μ1,Σ是我們想要找出的參數。請注意,雖然我們對不同的類有不同的均值,但我們在不同的類之間有著共享的協方差。
為什么它是一個生成模型?簡而言之,我們有一個類的先驗概率,這個類是伯努利分布。生成過程是(1)從伯努利分布中抽樣。(2)基于類標簽,我們從相應的分布中抽取 x。
所以,該數據的對數似然函數值是:
?
在上面的等式中,我們插入各個分布而不指明任何類,我們僅將它們抽象為 k。所以我們有:
?
現在,我們需要對每個參數進行取導,然后將它們設為零找到 argmax(函數值最大時對應的輸入值 x)。一些可能對推導有用的公式列舉如下:
(如果 A 是對稱的并且與 x 相互獨立)
?
證明: 矩陣 A 是對稱矩陣,所以 A= AT 并假設空間維度為 n。
?
雅可比公式:
?
證明:
?
證明:
這個證明有些復雜。你應該事先了解克羅內克函數和 Frobenius 內部乘積。對于矩陣 X,我們可以寫成:
?
你可以將 H 視為 Frobenius 內積的標識元素。在開始證明之前,讓我們準備好去找逆矩陣的導數。也就是說,?X-1/?X。
?
所以我們可以這么解:
?
接著,讓我們回到正題:
?
其中 F 表示 Frobenius 內積。
接著,帶回到原始公式:
?
現在,我們已經有足夠的準備去找到每個參數的梯度了。
對?取導并設為 0:
?
對 μk 取導并設為 0:
?
對 Σ 取導并設為 0:
?
結果如圖所示:
?
請注意,由于有著共享協方差,因此上圖兩個輪廓的形狀是相同的,但均值則不同。在邊界線上(自左上到右下的直線),每個類的概率為 50%。
4.2 高斯判別分析(GDA)和邏輯回歸
高斯判別分析是如何與邏輯回歸相關聯的呢?我們可以發現如果上述 p(x|y) 是具有共享協方差的多元高斯,我們就可以計算 p(x|y) 然后發現它是遵循邏輯函數的。要證明這一點,我們可以:
?
由于高斯屬于指數族,我們最終可以將分母中的比率轉換為 exp(θTx),其中 θ 是φ,μ0,μ1,Σ的函數。
同樣的,如果 p(x|y) 是具有不同 λ 的泊松分布,則 p(x|y) 也遵循邏輯函數。這意味著 GDA 模型本身有一個強假設,即每個類的數據都可以用具有共享協方差的高斯模型建模。但是,如果這個假設是正確的話,GDA 將可以更好并且更快地訓練模型。
另一方面,如果不能做出假設,邏輯回歸就不那么敏感了。因此,你可以直接使用邏輯回歸,而無需接觸高斯假設或 Possion 假設。
5 樸素貝葉斯
在高斯判別分析中,隨機變量應使用具有連續值特征的數據。而樸素貝葉斯則用于學習離散值隨機變量,如文本分類。在文本分類中,模型基于文本中的單詞將文本標記為二進制類,單詞被向量化并用于模型訓練。一個單詞向量就像一本字典一樣,其長度是字典中單詞儲存的數量,其二進度值則代表著是否為某個詞。一個單詞在單詞向量中由 1 表示「是」,而單詞向量中的其他位置則是 0。
然而,這可能并不起作用。比方說,如果我們有 50,000 個單詞并嘗試將其建模為多項式,則參數的維數為 250,000-1,250,000-1,這太大了。因此,為了解決這個問題,我們做出了
樸素貝葉斯假設:
基于給定分類下,每個詞彼此間條件獨立。
于是,我們有:?
我們對第一步應用概率論中的鏈式法則,對第二步應用樸素貝葉斯假設。
找到對數似然函數值的最大值:
其中 ?j|y=1 = P (xj=1|y=1),? j|y=1 = P(xj=1|y=1), ?j|y=0 = P(xj=1|y=0) 并且 ?y= p(y=1)。這些是我們需要訓練的參數。
我們可以對其求導:
?
為了預測新樣本,我們可以使用貝葉斯法則來計算 P(y = 1 | x)并比較哪個更高。
?
延伸: 在這種情況下,因為 y 是二進制值(0,1),我們將 P(xi | y)建模為伯努利分布。也就是說,它可以是「有那個詞」或「沒有那個詞」。伯努利將類標簽作為輸入并對其概率進行建模,前提是它必須是二進制的。如果是處理非二進制值 Xi,我們可以將其建模為多項式分布,多項式分布可以對多個類進行參數化。
總結: 樸素貝葉斯適用于離散空間,高斯判別分析適用于連續空間。我們任何時候都能將其離散化。
6 拉普拉斯平滑處理
上面的示例通常是好的,不過當新郵件中出現過去訓練樣本中不存在的單詞時,該模型將會預測失敗。在這種情況下,它會因為模型從未看到過這個詞而導致兩個類的φ變為零,以至于無法進行預測。
這時我們則需要另一個解決方案,其名為拉普拉斯平滑,它將每個參數設置為:
?
其中 k 是類的數量。在實際操作中,拉普拉斯平滑并沒有太大的區別,因為我們的模型中通常包含了所有的單詞,但有一個備用計劃總是極好的!
本文為機器之心專欄,轉載請聯系本公眾號獲得授權。
?------------------------------------------------
加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com
投稿或尋求報道:content@jiqizhixin.com
廣告 & 商務合作:bd@jiqizhixin.com
總結
以上是生活随笔為你收集整理的生成模型学习笔记:从高斯判别分析到朴素贝叶斯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keepalived lvs
- 下一篇: 在测试集上训练,还能中CVPR?这篇IE