1、定義
從機率分布的角度考慮,對于一堆樣本資料,每個均有特征 X i X_i Xi對應分類标記 y i y_i yi。
生成模型:學習得到聯合機率分布P(x,y),即特征x和标記y共同出現的機率,然後求條件機率分布。能夠學習到資料生成的機制。(生成模型就是要學習x和y的聯合機率分布 P ( x , y ) P(x,y) P(x,y),然後根據貝葉斯公式來求得條件機率 P ( y ∣ x ) P(y|x) P(y∣x),預測條件機率最大的y)
判别模型:學習得到條件機率分布P(y|x),即在特征x出現的情況下标記y出現的機率。(判别模型就是直接學習條件機率分布 P ( y ∣ x ) P(y|x) P(y∣x)。)
資料要求:生成模型需要的資料量比較大,能夠較好地估計機率密度;而判别模型對資料樣本量的要求沒有那麼多。
2 生成模型為啥叫生成模型?
生成模型之是以叫生成模型,是因為,它背後的思想是,x是特征,y是标簽,什麼樣的标簽就會生成什麼樣的特征。好比說,标簽是大象,那麼可能生成的特征就有大耳朵,長鼻子等等。
當我們來根據x來判斷y時,我們實際上是在比較,什麼樣的y标簽更可能生成特征x,我們預測的結果就是更可能生成x特征的y标簽。
3 常見的判别模型與生成模型
常見的生成模型有:樸素貝葉斯、隐馬爾可夫模型、高斯混合模型、文檔主題生成模型(LDA)、限制玻爾茲曼機
常見的判别模型有:K近鄰、SVM、決策樹、感覺機、線性判别分析(LDA)、線性回歸、傳統的神經網絡、邏輯斯蒂回歸、boosting、條件随機場
3.1 生成模型:以統計學和Bayes作為理論基礎
生成模型對聯合機率 p ( x , y ) p(x, y) p(x,y)模組化,根據它,我們可以得到類後驗機率 p ( y ∣ x ) p(y|x) p(y∣x)。事實上,這種做法不僅僅局限于分類問題,如果将 x x x看做可以觀測的變量, y y y看做不可觀測到的變量,隻要具有這種特征的問題,我們都可以建立生成模型。
3.1.1 樸素貝葉斯
通過學習先驗機率分布 P ( Y = c k ) P(Y=c_k) P(Y=ck)和條件機率分布 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=x∣Y=ck),得到聯合機率分布,然後對相應分類時的後驗機率為:
P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k ( X = x ∣ Y = c k ) P ( Y = c k ) \mathrm{P}\left(\mathrm{Y}=c_{\mathrm{k}} \mid \mathrm{X}=x\right)=\frac{P\left(X=x \mid Y=c_{k}\right) P\left(Y=c_{k}\right)}{\sum_{k}\left(X=x \mid Y=c_{k}\right) P\left(Y=c_{k}\right)} P(Y=ck∣X=x)=∑k(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
使用極大似然估計(使用樣本中的資料分布來拟合資料的實際分布機率) 得到先驗機率。
3.1.2 混合高斯模型
P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) ϕ ( y ∣ θ k ) = 1 2 π σ k exp ( − ( y − μ k ) 2 2 σ k 2 ) \begin{array}{c} \mathrm{P}(\mathrm{y} \mid \theta)=\sum_{k=1}^{K} \alpha_{k} \phi\left(y \mid \theta_{k}\right) \\ \phi\left(y \mid \theta_{k}\right)=\frac{1}{\sqrt{2 \pi \sigma_{k}}} \exp \left(-\frac{\left(y-\mu_{k}\right)^{2}}{2 \sigma_{k}^{2}}\right) \end{array} P(y∣θ)=∑k=1Kαkϕ(y∣θk)ϕ(y∣θk)=2πσk
1exp(−2σk2(y−μk)2)
3.1.3 隐馬爾可夫模型 (HMM)
由隐藏的馬爾可夫鍊随機生成觀測序列,是生成模型。HMM是關于時序的機率模型,描述由一個隐藏的馬爾可夫鍊随機生成不可觀測的狀态随機序列,再由各個狀态生成一個觀測而産生觀測随機序列的過程。包含三要素:初始狀态機率向量pie,狀态轉移機率矩陣A,觀測機率矩陣B。
3.1.4 受限玻爾茲曼機(RBM)
這是一種随機性的神經網絡,由兩類神經元組成(每一類為一個層),量個層之間有連接配接關系,第一種神經元為可見變量,即可以直接觀測到的值v,如圖像的每個像素。第二類為隐含變量h,是不能直接觀測到的變量,如圖像的特征。v和h的聯合機率服從玻爾茲曼分布:
p ( v , h ) = 1 Z θ exp ( − E θ ( v , h ) ) = 1 Z θ exp ( v T W h + b T v + d T h ) p(\mathrm{v}, \mathrm{h})=\frac{1}{Z_{\theta}} \exp \left(-E_{\theta}(\mathrm{v}, \mathrm{h})\right)=\frac{1}{Z_{\theta}} \exp \left(\mathrm{v}^{\mathrm{T}} \mathrm{Wh}+\mathrm{b}^{\mathrm{T}} \mathrm{v}+\mathrm{d}^{\mathrm{T}} \mathrm{h}\right) p(v,h)=Zθ1exp(−Eθ(v,h))=Zθ1exp(vTWh+bTv+dTh)
根據這個聯合機率,我們可以很容易得到條件機率 p ( x ∣ y ) p(x|y) p(x∣y)和 p ( y ∣ x ) p(y|x) p(y∣x)。例如為了得到 p ( y ∣ x ) p(y|x) p(y∣x),可以先求邊緣機率 p ( x ) p(x) p(x),對于離散型随機變量,對 y y y的機率求和,對于連續型随機變量,則為求積分,然後有: p ( y ∣ x ) = p ( x , y ) p ( x ) p(y \mid \mathrm{x})=\frac{p(x, y)}{p(\mathrm{x})} p(y∣x)=p(x)p(x,y)
生成模型最顯著的一個特征是假設樣本向量x服從某種機率分布,如正态分布,均勻分布。
3.2 判别模型
已知輸入變量 x x x,它直接對目标變量y的條件機率 p ( y ∣ x ) p(y|x) p(y∣x)模組化。即計算樣本 x x x屬于 每一類的機率。注意,這裡和生成模型有一個本質的差別,那就是沒有假設 x x x服從何種機率分布,而是直接估計出條件機率 p ( y ∣ x ) p(y|x) p(y∣x)。
這類模型的典型代表是logistic回歸和softmax回歸,它們直接對 p ( y ∣ x ) p(y|x) p(y∣x)模組化,而不對 p ( x , y ) p(x, y) p(x,y)模組化,即每一假設 x x x服從何種機率分布。logistic回歸用于二分類問題,它直接根據樣本 x x x估計出它是正樣本的機率:
3.2.1 邏輯斯蒂回歸模型(logistic回歸)
使用條件機率分布表示:
P ( Y = 1 ∣ x ) = exp ( w x + b ) 1 + exp ( w x + b ) P ( Y = 0 ∣ x ) = 1 1 + exp ( w x + b ) \begin{array}{l} P(Y=1 \mid x)=\frac{\exp (w x+b)}{1+\exp (w x+b)} \\ P(Y=0 \mid x)=\frac{1}{1+\exp (w x+b)} \end{array} P(Y=1∣x)=1+exp(wx+b)exp(wx+b)P(Y=0∣x)=1+exp(wx+b)1
可以使用極大似然估計估計模型參數,對優化目标使用梯度下降法或者牛頓法。
注意,這裡隻是直接猜測出了這個機率,而沒有假設每個類的樣本服從何種機率分布,即沒有對 p ( x ∣ y ) p(x|y) p(x∣y)或者 p ( x , y ) p(x, y) p(x,y)模組化。
3.2.2 softmax回歸
softmax回歸是logistic回歸的多分類版本,它直接估計出一個樣本向量x屬于k個類中每一個類的機率:
h θ ( x ) = 1 ∑ i = 1 k e θ i T x [ e θ 1 T x … e θ k T x ] h_{\theta}(\mathrm{x})=\frac{1}{\sum_{i=1}^{k} e^{\theta_{i}^{\mathrm{T}} \mathrm{x}}}\left[\begin{array}{c} e^{\theta_{1}^{\mathrm{T}} \mathrm{x}} \\ \ldots \\ e^{\theta_{k}^{\mathrm{T}} \mathrm{x}} \end{array}\right] hθ(x)=∑i=1keθiTx1⎣⎡eθ1Tx…eθkTx⎦⎤
這裡預測出的是一個向量,每個分量為樣本屬于每個類的機率。和logistic回歸一樣,它是直接預測出了這個條件機率,而沒有假設每個類的樣本 x x x所服從的機率分布。
3.3 第三類(是非機率模型,也稱為判别模型)
第三種做法最直接,分類器根本就不建立機率模型,而是直接得到分類結果,這種是非機率模型,也稱為判别模型。它直接根據樣本向量x預測出類别編号y。
這類模型的典型代表是決策樹,支援向量機,随機森林,kNN算法,AdaBoost算法,xgboost,标準的人工神經網絡(包括全連接配接神經網絡,卷積神經網絡,循環神經網絡等)。如果神經網絡的最後一層是softmax變換,即softmax回歸,則可以歸到第二種情況裡,如果沒有使用,則是這第三種情況。
3.3.1 感覺機 (線性分類模型)
輸入空間為 X X X, 輸出空間為 y ∈ { + 1 , − 1 } , \mathrm{y} \in\{+1,-1\}, y∈{+1,−1}, 使用的映射函數為 f ( x ) = sign ( w ⋅ x + b ) \mathrm{f}(\mathrm{x})=\operatorname{sign}(w \cdot x+b) f(x)=sign(w⋅x+b), 其中sign為符号函數 (輸入大 于等于1時輸出為1; 否則為0)。使用的損失函數為誤分類點到超平面的總距離,即:
− 1 ∥ w ∥ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{\|w\|} \sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) −∥w∥1xi∈M∑yi(w⋅xi+b)
其中 M M M為所有誤分類點的集合, ||w||可以不考慮。可以使用随機梯度下降得到最後的分類超平面。
3.3.2 k近鄰法
基于已知樣本,對未知樣本進行預測時,找到對應的K個最近鄰,通過多數表決進行預測。沒有顯式的學習過程。
3.3.3 決策樹
決策樹在每個單元定義一個類的機率分布,形成一個條件機率分布。決策樹中遞歸地選擇最優特征,所謂最優特征即分類 效果最好的特征, 算法中使用資訊增益 (information gain)來衡量, 對應公式為:
g ( D , A ) = H ( D ) − H ( D ∣ A ) \mathrm{g}(\mathrm{D}, \mathrm{A})=\mathrm{H}(\mathrm{D})-\mathrm{H}(\mathrm{D} \mid \mathrm{A}) g(D,A)=H(D)−H(D∣A)
其中 D D D為訓練集, A A A為待測試的特征, H ( D ) H(D) H(D)為熵(經驗熵), H ( D ∣ A ) H(D|A) H(D∣A)為條件熵, 兩者的計算為
H ( D ) = − ∑ i = 1 n p i log 2 p i , H ( D ∣ A ) = ∑ i = 1 n p i H ( D ∣ A = a i ) \mathrm{H}(\mathrm{D})=-\sum_{i=1}^{n} p_{i} \log _{2} p_{i}, \mathrm{H}(\mathrm{D} \mid \mathrm{A})=\sum_{i=1}^{n} p_{i} H\left(D \mid A=a_{i}\right) H(D)=−i=1∑npilog2pi,H(D∣A)=i=1∑npiH(D∣A=ai)
但是以資訊增益為劃分,存在偏向于選擇取值較多的特征,是以使用資訊增益比來校正,
g R ( D , A ) = g ( D , A ) H A ( D ) , H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log 2 ∣ D i ∣ ∣ D ∣ \mathrm{g}_{\mathrm{R}}(D, A)=\frac{g(D, A)}{H_{A}(D)}, H_{A}(D)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \log _{2} \frac{\left|D_{i}\right|}{|D|} gR(D,A)=HA(D)g(D,A),HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣
其中n為特征A的取值個數。
3.3.5 最大熵模型
原理:機率模型中,熵最大的模型是最好的模型,可以使用拉格朗日函數求解對偶問題解決。
3.3.6 支援向量機 (SVM)
SVM分為線性可分支援向量機 (硬間隔最大化)、線性支援向量機 (軟間隔最大化)、非線性支援向量機 (核函數)三種。目的是最大化間隔,這是和感覺機最大的差別。
3.3.7 boosting方法 (AdaBoost等)
通過改變訓練樣本的權重,訓練多個分類器,将分類器進行線性組合,提升分類性能。AdaBoost采用權重多數表決的方法。
3.3.8 條件随機場 (conditional random field, CRF)
給定一組輸入随機變量條件下另一組輸出随機變量的條件機率分布模型,其特點是假設輸出随機變量構成馬爾可夫随機場。可應用于标注問題。
3.3.9 CNN
訓練過程中,每一個中間層都有其功能,但其具體的功能無法知道。
4 對兩種模型的另一種了解
- 生成模型是已知樣本的标簽值 y y y,對樣本的特征向量 x x x的條件機率進行模組化,即對條件機率 p ( x ∣ y ) p(x|y) p(x∣y)模組化,它研究的是每種樣本服從何種機率分布。
- 判别模型則剛好相反,已知樣本的特征向量 x x x,對樣本的标簽值 y y y的機率進行模組化,即對條件機率 p ( y ∣ x ) p(y|x) p(y∣x)模組化,這種一般用于分量,即給定樣本 x x x,計算它屬于每個類的機率。
根據這種定義,生成模型可以用來根據标簽值y生成随機的樣本資料x。生成對抗網絡(GAN)就是典型的例子,它可以生成服從某種機率分布的随機變量,即拟合類條件機率密度函數p(x|y),而此時它的目的不是分類,而是生成樣本。事實上,如果我們知道了 p ( x ∣ y ) p(x|y) p(x∣y)或者 p ( x , y ) p(x, y) p(x,y),無論是用來做分類,還是用來做資料生成,都是可以的。
而判别模型以及不使用機率模型的判别型分類器則根據樣本特征向量 x x x的值判斷它的标簽值 y y y,即用于判斷樣本的标簽值 y y y。