1. 程式人生 > >理解生成模型與判別模型

理解生成模型與判別模型

導言

我們都知道,對於有監督的機器學習中的分類問題,求解問題的演算法可以分為生成模型與判別模型兩種型別。但是,究竟什麼是生成模型,什麼是判別模型?不少書籍和技術文章對這對概念的解釋是含糊的。在今天這篇文章中,我們將準確、清晰的解釋這一組概念。

第一種定義

對於判別模型和生成模型有兩種定義,第一種定義針對的是有監督學習的分類問題。該問題的目標是給定一個樣本的向量x(可以是原始資料如影象,聲音,也可以是提取出來的特徵向量),在這裡我們將它稱為輸入變數,目標是預測出這個樣本的類別y即標籤值,一般是一個離散的標量,即類別編號。因此演算法要解決的核心問題是根據訓練樣本建立下面這樣的對映函式:

對於這個問題,有3種求解思路,下面我們分別介紹。

第一種做法稱為生成模型。已知輸入變數x和目標變數y,先對它們的聯合概率分佈p(x, y)建模,然後計算樣本屬於每一個類的條件概率p(y|x)即類後驗概率,按照這個值來完成分類,如將樣本分到概率p(y|x)最大的那個類。根據概率論的知識,有:

在這裡,p(x, y)為聯合概率密度函式,p(x)為樣本輸入向量x的邊緣密度函式。對上面這種做法的直觀解釋是:我們已知某一個樣本具有某種特徵x,現在要確定它輸入哪個類,而自然的因果關係是,樣本之所以具有這種特徵x,是因為它屬於某一類。例如,我們要根據體重,腳的尺寸這兩個特徵x來判斷一個人是男性還是女性,我們都知道,男性的體重總體來說比女性大,腳的尺寸也更大,因此從邏輯上來說,是因為一個人是男性,因此才有這種大的體重和腳尺寸。而在分類任務中要做的卻相反,是給了你這樣個特徵的樣本,讓你反推這人是男性還是女性。

聯合概率密度函式等於類概率p(y)與類條件概率p(x|y)即先驗概率的乘積,即:

將上面兩個公式合併起來,有:

這就是貝葉斯公式。它完成了因果轉換,我們要完成的是由果推斷因,而在訓練時我們建立的是因到果的模型及p(x|y),即男性和女性的體重、腳尺寸分別服從的概率分佈。

總結起來,生成模型對聯合概率p(x, y)建模,根據它,我們可以得到類後驗概率p(y|x)。事實上,這種做法不僅僅侷限於分類問題,如果將x看做可以觀測的變數,y看做不可觀測到的變數,只要具有這種特徵的問題,我們都可以建立生成模型。

生成模型的典型代表是貝葉斯分類器,它對類條件概率p(x|y)建模,而p(x|y)p(y)就是聯合概率p(x, y)。通過貝葉斯公式,根據聯合概率又可以得到類後驗概率:

如果只用於分類而不需要給出具體的概率值,則分母p(x)對所有型別y都是一樣的,只需要計算分子p(x|y)p(y)。如果我們假設每個類y的樣本的特徵向量x的每個分量相互獨立,則可以得到樸素貝葉斯分類器,如果假設每個類的樣本服從正態分佈,則p(x|y)為正態分佈,此時為正態貝葉斯分類器。

生成模型的另外一個典型代表是受限玻爾茲曼機(RBM),這是一種隨機性的神經網路,由兩類神經元組成(每一類為一個層),量個層之間有連線關係,第一種神經元為可見變數,即可以直接觀測到的值v,如影象的每個畫素。第二類為隱含變數h,是不能直接觀測到的變數,如影象的特徵。v和h的聯合概率服從玻爾茲曼分佈:

根據這個聯合概率,我們可以很容易得到條件概率p(x|y)和p(y|x)。例如為了得到p(y|x),可以先求邊緣概率p(x),對於離散型隨機變數,對y的概率求和,對於連續型隨機變數,則為求積分,然後有:

生成模型最顯著的一個特徵是假設樣本向量x服從何種概率分佈,如正態分佈,均勻分佈。

第二種做法稱為判別模型。已知輸入變數x,它直接對目標變數y的條件概率p(y|x)建模。即計算樣本x屬於 每一類的概率。注意,這裡和生成模型有一個本質的區別,那就是每一假設x服從何種概率分佈,而是直接估計出條件概率p(y|x)。

這類模型的典型代表是logistic迴歸和softmax迴歸,它們直接對p(y|x)建模,而不對p(x, y)建模,即每一假設x服從何種概率分佈。logistic迴歸用於二分類問題,它直接根據樣本x估計出它是正樣本的概率:

注意,這裡只是直接猜測出了這個概率,而沒有假設每個類的樣本服從何種概率分佈,即沒有對p(x|y)或者p(x, y)建模。如果對logistic迴歸感興趣,可以閱讀SIGAI之前的公眾號文章“理解logistic迴歸”。

softmax迴歸是logistic迴歸的多分類版本,它直接估計出一個樣本向量x屬於k個類中每一個類的概率:

這裡預測出的是一個向量,每個分量為樣本屬於每個類的概率。和logistic迴歸一樣,它是直接預測出了這個條件概率,而沒有假設每個類的樣本x所服從的概率分佈。

第三種做法最直接,分類器根本就不建立概率模型,而是直接得到分類結果,這種是非概率模型,也稱為判別模型。它直接根據樣本向量x預測出類別編號y:

這類模型的典型代表是決策樹,支援向量機,隨機森林,kNN演算法,AdaBoost演算法,xgboost,標準的人工神經網路(包括全連線神經網路,卷積神經網路,迴圈神經網路等)。如果神經網路的最後一層是softmax變換,即softmax迴歸,則可以歸到第二種情況裡,如果沒有使用,則是這第三種情況。

支援向量機的預測函式是:

它自始至終沒有假設樣本向量x服從何種分佈,也沒有估計類後驗概率p(y|x)。這可以看成是一種幾何劃分的思想,把空間劃分成多個部分。如果對支援向量機感興趣,可以閱讀SIGAI之前的公眾號文章“用一張圖理解支援向量機的脈絡”。

類似的,決策樹的預測函式時分段常數函式,直接實現從向量x到類別標籤y的對映,沒有計算任何概率值。如果對決策樹感興趣,可以閱讀SIGAI之前的公眾號文章“理解決策樹”。其他的演算法如隨機森林,kNN,也是如此。

這類模型沒有使用概率的觀點進行建模,而是用幾何或者分析(函式)的手段建模,如找出分類超平面或者曲面,直接得到對映函式。

一般來說,我們把使用第一種模型的分類器稱為生成式分類器,把使用第二種和第三種模型的分類器稱為判別式分類器。

第二種定義

除此之外,對生成模型和判別模型還有另外一種定義。生成模型是已知樣本的標籤值y,對樣本的特徵向量x的條件概率進行建模,即對條件概率p(x|y)建模,它研究的是每種樣本服從何種概率分佈。判別模型則剛好相反,已知樣本的特徵向量x,對樣本的標籤值y的概率進行建模,即對條件概率p(y|x)建模,這種一般用於分量,即給定樣本x,計算它屬於每個類的概率。

根據這種定義,生成模型可以用來根據標籤值y生成隨機的樣本資料x。生成對抗網路(GAN)就是典型的例子,它可以生成服從某種概率分佈的隨機變數,即擬合類條件概率密度函式p(x|y),而此時它的目的不是分類,而是生成樣本。事實上,如果我們知道了p(x|y)或者p(x, y),無論是用來做分類,還是用來做資料生成,都是可以的。

而判別模型以及不使用概率模型的判別型分類器則根據樣本特徵向量x的值判斷它的標籤值y,即用於判斷樣本的標籤值y。

 

推薦閱讀

[1]機器學習-波瀾壯闊40年【獲取碼】SIGAI0413.

[2]學好機器學習需要哪些數學知識?【獲取碼】SIGAI0417.

[3] 人臉識別演算法演化史【獲取碼】SIGAI0420.

[4]基於深度學習的目標檢測演算法綜述 【獲取碼】SIGAI0424.

[5]卷積神經網路為什麼能夠稱霸計算機視覺領域?【獲取碼】SIGAI0426.

[6] 用一張圖理解SVM的脈絡【獲取碼】SIGAI0428.

[7] 人臉檢測演算法綜述【獲取碼】SIGAI0503.

[8] 理解神經網路的啟用函式 【獲取碼】SIGAI2018.5.5.

[9] 深度卷積神經網路演化歷史及結構改進脈絡-40頁長文全面解讀【獲取碼】SIGAI0508.

[10] 理解梯度下降法【獲取碼】SIGAI0511.

[11] 迴圈神經網路綜述—語音識別與自然語言處理的利器【獲取碼】SIGAI0515

[12] 理解凸優化 【獲取碼】 SIGAI0518

[13] 【實驗】理解SVM的核函式和引數 【獲取碼】SIGAI0522

[14]【SIGAI綜述】行人檢測演算法 【獲取碼】SIGAI0525

[15] 機器學習在自動駕駛中的應用—以百度阿波羅平臺為例(上)【獲取碼】SIGAI0529

[16]理解牛頓法【獲取碼】SIGAI0531

[17] 【群話題精華】5月集錦—機器學習和深度學習中一些值得思考的問題【獲取碼】SIGAI 0601

[18] 大話Adaboost演算法 【獲取碼】SIGAI0602

[19] FlowNet到FlowNet2.0:基於卷積神經網路的光流預測演算法【獲取碼】SIGAI0604

[20] 理解主成分分析(PCA)【獲取碼】SIGAI0606

[21] 人體骨骼關鍵點檢測綜述 【獲取碼】SIGAI0608

[22]理解決策樹 【獲取碼】SIGAI0611

[23] 用一句話總結常用的機器學習演算法【獲取碼】SIGAI0611

[24] 目標檢測演算法之YOLO 【獲取碼】SIGAI0615

[25] 理解過擬合 【獲取碼】SIGAI0618

[26]理解計算:從√2到AlphaGo ——第1季 從√2談起 【獲取碼】SIGAI0620

[27] 場景文字檢測——CTPN演算法介紹 【獲取碼】SIGAI0622

[28] 卷積神經網路的壓縮和加速 【獲取碼】SIGAI0625

[29] k近鄰演算法 【獲取碼】SIGAI0627

[30]自然場景文字檢測識別技術綜述 【獲取碼】SIGAI0627

[31] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0704

[32] 機器學習演算法地圖【獲取碼】SIGAI0706

[33] 反向傳播演算法推導-全連線神經網路【獲取碼】SIGAI0709

[34] 生成式對抗網路模型綜述【獲取碼】SIGAI0709.

[35]怎樣成為一名優秀的演算法工程師【獲取碼】SIGAI0711.

[36] 理解計算:從根號2到AlphaGo——第三季 神經網路的數學模型【獲取碼】SIGAI0716

[37]【技術短文】人臉檢測演算法之S3FD 【獲取碼】SIGAI0716

[38] 基於深度負相關學習的人群計數方法【獲取碼】SIGAI0718

[39] 流形學習概述【獲取碼】SIGAI0723

[40] 關於感受野的總結 【獲取碼】SIGAI0723

[41] 隨機森林概述 【獲取碼】SIGAI0725

[42] 基於內容的影象檢索技術綜述——傳統經典方法【獲取碼】SIGAI0727

[43] 神經網路的啟用函式總結【獲取碼】SIGAI0730

[44] 機器學習和深度學習中值得弄清楚的一些問題【獲取碼】SIGAI0802

[45] 基於深度神經網路的自動問答系統概述【獲取碼】SIGAI0803

[46] 反向傳播演算法推導——卷積神經網路 【獲取碼】SIGAI0806

[47] 機器學習與深度學習核心知識點總結 寫在校園招聘即將開始時 【獲取 碼】SIGAI0808

[48] 理解Spatial Transformer Networks【獲取碼】SIGAI0810

[49]AI時代大點兵-國內外知名AI公司2018年最新盤點【獲取碼】SIGAI0813

[50] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0815

[51] 基於內容的影象檢索技術綜述--CNN方法 【獲取碼】SIGAI0817

[52]文字表示簡介 【獲取碼】SIGAI0820

[53]機器學習中的最優化演算法總結【獲取碼】SIGAI0822

[54]【AI就業面面觀】如何選擇適合自己的舞臺?【獲取碼】SIGAI0823

[55]濃縮就是精華-SIGAI機器學習藍寶書【獲取碼】SIGAI0824

[56]DenseNet詳解【獲取碼】SIGAI0827

[57]AI時代大點兵國內外知名AI公司2018年最新盤點【完整版】【獲取碼】SIGAI0829

[58]理解Adaboost演算法【獲取碼】SIGAI0831

[59]深入淺出聚類演算法 【獲取碼】SIGAI0903

[60]機器學習發展歷史回顧【獲取碼】SIGAI0905

[61] 網路表徵學習綜述【獲取碼】SIGAI0907

[62] 視覺多目標跟蹤演算法綜述(上) 【獲取碼】SIGAI0910

[63] 計算機視覺技術self-attention最新進展 【獲取碼】SIGAI0912

[64] 理解Logistic迴歸 【獲取碼】SIGAI0914

[65] 機器學習中的目標函式總結 【獲取碼】SIGAI0917

[66] 人臉識別中的活體檢測演算法綜述【獲取碼】SIGAI0919

[67] 機器學習與深度學習常見面試題(上)【獲取碼】SIGAI0921

[68] 淺談動作識別TSN,TRN,ECO 【獲取碼】SIGAI0924

[69] OCR技術簡介【獲取碼】SIGAI0926

[70] 輕量化神經網路綜述【獲取碼】SIGAI1001

[71] 行人重識別PCB-RPP,SGGNN 【獲取碼】SIGAI1001

[72] 人工智慧非技術從業者必知的十件事 【獲取碼】SIGAI1008

原創宣告:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的