本文是哥倫比亞大學研究生張威在生成模型上的學習筆記,由畢業於紐西蘭奧克蘭理工大學的燕子石翻譯。機器之心之前曾介紹過張威所寫的吳恩達《機器學習》課程的學習筆記。
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