1. 程式人生 > >監督學習:生成模型和判別模型

監督學習:生成模型和判別模型

生成模型與判別模型

       一直在看論文的過程中遇到這個問題,折騰了不少時間,然後是下面的一點理解,不知道正確否。若有錯誤,還望各位前輩不吝指正,以免小弟一錯再錯。在此謝過。

一、決策函式Y=f(X)或者條件概率分佈P(Y|X)

       監督學習的任務就是從資料中學習一個模型(也叫分類器),應用這一模型,對給定的輸入X預測相應的輸出Y。這個模型的一般形式為決策函式Y=f(X)或者條件概率分佈P(Y|X)。這兩種方式也就是判別模型!

       決策函式Y=f(X)你輸入一個X,它就輸出一個Y,這個Y與一個閾值比較,根據比較結果判定X屬於哪個類別。例如兩類(w1和w2)分類問題,如果Y大於閾值,X就屬於類w1,如果小於閾值就屬於類w2。這樣就得到了該X對應的類別了。

       條件概率分佈P(Y|X)你輸入一個X,它通過比較它屬於所有類的概率,然後輸出概率最大的那個作為該X對應的類別。例如:如果P(w1|X)大於P(w2|X),那麼我們就認為X是屬於w1類的。

        以上面兩個模型都可以實現對給定的輸入X預測相應的輸出Y的功能。實際上通過條件概率分佈P(Y|X)進行預測也是隱含著表達成決策函式Y=f(X)的形式的。例如也是兩類w1和w2,那麼我們求得了P(w1|X)和P(w2|X),那麼實際上判別函式就可以表示為Y= P(w1|X)/P(w2|X),如果Y大於1或者某個閾值,那麼X就屬於類w1,如果小於閾值就屬於類w2。而同樣,很神奇的一件事是,

實際上決策函式Y=f(X)也是隱含著使用P(Y|X)的。因為一般決策函式Y=f(X)是通過學習演算法使你的預測和訓練資料之間的誤差平方最小化,而貝葉斯告訴我們,雖然它沒有顯式的運用貝葉斯或者以某種形式計算概率,但它實際上也是在隱含的輸出極大似然假設(MAP假設)。也就是說學習器的任務是在所有假設模型有相等的先驗概率條件下,輸出極大似然假設。所謂的極大不是最大的意思,是一種最優的說法,也就是極大值點!

        所以呢,分類器的設計就是在給定訓練資料的基礎上估計其概率模型P(Y|X)如果可以估計出來,那麼就可以分類了。但是一般來說,概率模型是比較難估計的。給一堆數給你,特別是數不多的時候,你一般很難找到這些數滿足什麼規律吧。那能否不依賴概率模型直接設計分類器呢?事實上,分類器就是一個決策函式(或決策面),如果能夠從要解決的問題和訓練樣本出發直接求出判別函式,就不用估計概率模型了

,這就是決策函式Y=f(X)的偉大使命了。例如支援向量機,我已經知道它的決策函式(分類面)是線性的了,也就是可以表示成Y=f(X)=WX+b的形式,那麼我們通過訓練樣本來學習得到W和b的值就可以得到Y=f(X)了。還有一種更直接的分類方法,它不用事先設計分類器,而是隻確定分類原則,根據已知樣本(訓練樣本)直接對未知樣本進行分類。包括近鄰法,它不會在進行具體的預測之前求出概率模型P(Y|X)或者決策函式Y=f(X),而是在真正預測的時候,將X與訓練資料的各類的Xi比較,和哪些比較相似,就判斷它X也屬於Xi對應的類。

       實際上,說了那麼多,也不知道自己表達清楚了沒有。那我們是談生成模型和判別模型,上面到底囉嗦了那麼多到底有啥陰謀啊?呵呵,往下說就知道了。

二、生成方法和判別方法

       監督學習方法又分生成方法(Generative approach)和判別方法(Discriminative approach),所學到的模型分別稱為生成模型(Generative Model)和判別模型(Discriminative Model)。咱們先談判別方法,因為它和前面說的都差不多,比較容易明白。

       判別方法:由資料直接學習決策函式Y=f(X)或者條件概率分佈P(Y|X)作為預測的模型,即判別模型。基本思想是有限樣本條件下建立判別函式,不考慮樣本的產生模型,直接研究預測模型。典型的判別模型包括k近鄰,感知級,決策樹,支援向量機等。

       生成方法:由資料學習聯合概率密度分佈P(X,Y),然後求出條件概率分佈P(Y|X)作為預測的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立樣本的聯合概率概率密度模型P(X,Y),然後再得到後驗概率P(Y|X),再利用它進行分類,就像上面說的那樣。注意了哦,這裡是先求出P(X,Y)才得到P(Y|X)的,然後這個過程還得先求出P(X)。P(X)就是你的訓練資料的概率分佈。哎,剛才說了,需要你的資料樣本非常多的時候,你得到的P(X)才能很好的描述你資料真正的分佈。例如你投硬幣,你試了100次,得到正面的次數和你的試驗次數的比可能是3/10,然後你直覺告訴你,可能不對,然後你再試了500次,哎,這次正面的次數和你的試驗次數的比可能就變成4/10,這時候你半信半疑,不相信上帝還有一個手,所以你再試200000次,這時候正面的次數和你的試驗次數的比(就可以當成是正面的概率了)就變成5/10了。這時候,你就覺得很靠譜了,覺得自己就是那個上帝了。呵呵,真囉嗦,還差點離題了。

       還有一個問題就是,在機器學習領域有個約定俗成的說法是:不要去學那些對這個任務沒用的東西。例如,對於一個分類任務:對一個給定的輸入x,將它劃分到一個類y中。那麼,如果我們用生成模型:p(x,y)=p(y|x).p(x)

       那麼,我們就需要去對p(x)建模,但這增加了我們的工作量,這讓我們很不爽(除了上面說的那個估計得到P(X)可能不太準確外)。實際上,因為資料的稀疏性,導致我們都是被強迫地使用弱獨立性假設去對p(x)建模的,所以就產生了侷限性。所以我們更趨向於直觀的使用判別模型去分類。

       這樣的方法之所以稱為生成方法,是因為模型表示了給定輸入X產生輸出Y的生成關係。用於隨機生成的觀察值建模,特別是在給定某些隱藏引數情況下。典型的生成模型有:樸素貝葉斯和隱馬爾科夫模型等。

三、生成模型和判別模型的優缺點

       在監督學習中,兩種方法各有優缺點,適合於不同條件的學習問題。

生成方法的特點:上面說到,生成方法學習聯合概率密度分佈P(X,Y),所以就可以從統計的角度表示資料的分佈情況,能夠反映同類資料本身的相似度。但它不關心到底劃分各類的那個分類邊界在哪。生成方法可以還原出聯合概率分佈P(Y|X),而判別方法不能。生成方法的學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快的收斂於真實模型,當存在隱變數時,仍可以用生成方法學習。此時判別方法就不能用。

       判別方法的特點:判別方法直接學習的是決策函式Y=f(X)或者條件概率分佈P(Y|X)。不能反映訓練資料本身的特性。但它尋找不同類別之間的最優分類面,反映的是異類資料之間的差異。直接面對預測,往往學習的準確率更高。由於直接學習P(Y|X)或P(X),可以對資料進行各種程度上的抽象、定義特徵並使用特徵,因此可以簡化學習問題。

 總結:判別方法就是在假定了模型的基礎上學習優化引數,找到最佳的分類面。而生成辦法則是利用統計辦法學習出資料之間的規律!

四、生成模型和判別模型的聯絡

       由生成模型可以得到判別模型,但由判別模型得不到生成模型。

五、再形象點可以嗎

       例如我們有一個輸入資料x,然後我們想將它分類為標籤y。(迎面走過來一個人,你告訴我這個是男的還是女的)

       生成模型學習聯合概率分佈p(x,y),而判別模型學習條件概率分佈p(y|x)

下面是個簡單的例子:

例如我們有以下(x,y)形式的資料:(1,0), (1,0), (2,0), (2, 1)

那麼p(x,y)是:

                y=0   y=1

               -----------

       x=1 | 1/2   0

       x=2 | 1/4   1/4

而p(y|x) 是:

               y=0   y=1

               -----------

        x=1| 1     0

        x=2| 1/2   1/2

       我們為了將一個樣本x分類到一個類y,最自然的做法就是條件概率分佈p(y|x),這就是為什麼我們對其直接求p(y|x)方法叫做判別演算法。而生成演算法求p(x,y),而p(x,y)可以通過貝葉斯方法轉化為p(y|x),然後再用其分類。但是p(x,y)還有其他作用,例如,你可以用它去生成(x,y)對。

       再假如你的任務是識別一個語音屬於哪種語言。例如對面一個人走過來,和你說了一句話,你需要識別出她說的到底是漢語、英語還是法語等。那麼你可以有兩種方法達到這個目的:

1、學習每一種語言,你花了大量精力把漢語、英語和法語等都學會了,我指的學會是你知道什麼樣的語音對應什麼樣的語言。然後再有人過來對你哄,你就可以知道他說的是什麼語音,你就可以罵他是“米國人還是小日本了”。(呵呵,切勿將政治摻雜在技術裡面)

2、不去學習每一種語言,你只學習這些語言模型之間的差別,然後再分類。意思是指我學會了漢語和英語等語言的發音是有差別的,我學會這種差別就好了。

     那麼第一種方法就是生成方法,第二種方法是判別方法。

       生成演算法嘗試去找到底這個資料是怎麼生成的(產生的),然後再對一個訊號進行分類。基於你的生成假設,那麼那個類別最有可能產生這個訊號,這個訊號就屬於那個類別。判別模型不關心資料是怎麼生成的,它只關心訊號之間的差別,然後用差別來簡單對給定的一個訊號進行分類。

六、對於跟蹤演算法

        跟蹤演算法一般來說可以分為兩類:基於外觀模型的生成模型或者基於外觀模型的判別模型。

        生成模型:一般是學習一個代表目標的模型,然後通過它去搜索影象區域,然後最小化重構誤差。類似於生成模型描述一個目標,然後就是模式匹配了,在影象中找到和這個模型最匹配的區域,就是目標了。

        判別模型:將跟蹤問題看成一個二分類問題,然後找到目標和背景的決策邊界。它不管目標是怎麼描述的,那隻要知道目標和背景的差別在哪,然後你給一個影象,它看它處於邊界的那一邊,就歸為哪一類。

相關推薦

監督學習生成模型判別模型

生成模型與判別模型        一直在看論文的過程中遇到這個問題,折騰了不少時間,然後是下面的一點理解,不知道正確否。若有錯誤,還望各位前輩不吝指正,以免小弟一錯再錯。在此謝過。 一、決策函式Y=f(X)或者條件概率分佈P(Y|X)        監督學習的任務就是從

監督學習中的“生成模型判別模型

ref: http://blog.csdn.net/zouxy09/article/details/8195017  講的非常清晰了。該內容部分來自於維基百科。兩者都是概率統計模型,從維基上的解釋來看生成模型(Generative Model):定義了在觀測{X}和結果{Y}

機器學習生成模型判別模型

經典提問:Navie Bayes和Logistic迴歸區別是什麼? Navie Bayes是生成式模型,Logistic迴歸是判別式模型,二者的區別就是生成式模型與判別式模型的區別。 首先,Navie Bayes通過已知樣本求得先驗概率P(Y), 及條件概率P(X|Y),

機器學習之---生成模型判別模型

  監督學習方法可分為兩大類,即生成方法與判別方法,它們所學到的模型稱為生成模型與判別模型。 判別模型:判別模型是學得一個分類面(即學得一個模型),該分類面可用來區分不同的資料分別屬於哪一類; 生成模型:生成模型是學得各個類別各自的特徵(即可看成學得多個模型),可用這些

【機器學習生成模型判別模型

定義: 生成方法由資料學習聯合概率分佈P(x, y),然後求出條件概率分佈P(y|x)作為預測的模型。 包括樸素貝葉斯,貝葉斯網路,高斯混合模型,隱馬爾科夫模型等。 判別方法由資料直接學習決策函式

監督學習生成模型

1. 生成模型   2016年PixelRNN,2014年Variational Autoencoder (VAE),2013年Generative Adversarial Network (GAN)。 2. Pixel RNN   這種方法的主要過程

機器學習---生成模型判別模型

【摘要】判別式模型,就是隻有一個模型,你把測試用例往裡面一丟,label就出來了,如SVM。生成式模型,有多個模型(一般有多少類就有多少個),你得把測試用例分別丟到各個模型裡面,最後比較其結果,選擇

生成模型判別模型(《統計學習方法》截圖)

技術分享 img http htm mage info alt 統計學 www. 有一篇博客寫的很好,給上鏈接: https://www.cnblogs.com/xiaoshayu520ly/p/9079435.html生成模

生成模型判別模型

特征 數據 學習方法 最大 mem 針對 表示 不能 問題 1、定義: 生成模型(或稱產生式模型)和判別模型(或稱判別式模型)的本質區別在於模型中觀測序列x和狀態序列y的決定關系。前者假設y決定x,後者假設x決定y。 2、生成模型特點 2.1、生成模型以“狀態序列y按照一定

生成模型判別模型的區別

1.監督學習分為生成模型和判別模型 有監督機器學習方法可以分為生成方法和判別方法(常見的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見的判別方法有SVM、LR等),生成方法學習出的是生成模型,判別方法學習出的是判別模型。 2.生成模型

生成模型判別模型對比

比如說你的任務是識別一個語音屬於哪種語言。例如對面一個人走過來,和你說了一句話,你需要識別出她說的到底是漢語、英語還是法語等。那麼你可以有兩種方法達到這個目的:用生成模型的方法是學習每一種語言,你花了大量精力把漢語、英語和法語等都學會了,我指的學會是你知道什麼樣的語音對應什麼

生成模型判別模型的理解

【摘要】    - 生成模型:無窮樣本==》概率密度模型 = 產生模型==》預測    - 判別模型:有限樣本==》判別函式 = 預測模型==》預測【簡介】簡單的說,假設o是觀察值,q是模型。如果對P(o|q)建模,就是Generative模型。其基本思想是首先建立樣本的概

生成模型判別模型,自己看完資料後總結

1. Ref:  http://blog.csdn.net/zouxy09/article/details/8195017  講的非常清晰了。http://www.cnblogs.com/lifegoesonitself/p/3437747.html ---進一步補充豐富理

統計學習泛化能力、生成模型判別模型、分類、標註迴歸問題

宣告: 1.本文章為參考相關書籍和前輩經驗所寫,只為個人學習專用。 2.若有內容錯誤之處請大家留言改進。 3.若有引用不當之處,請告知本人,會進行相關處理。 泛化能力 泛化誤差 學習方法的泛化能力(generalization ab

監督學習Deep Generative Mode(深度生成模型

speech nom like 當前 多個 generator 問題 get pixel 一 前言 1.1 Creation 據說在費曼死後,人們在他生前的黑板上拍到如圖畫片,在左上角有道:What i cannot create ,I do not understand.

數學模型3.非監督學習--聚類分析 K-means聚類

rand tar 聚類分析 復制 clust tle 降維算法 generator pro 1. 聚類分析 聚類分析(cluster analysis)是一組將研究對象分為相對同質的群組(clusters)的統計分析技術 ---->> 將觀測對象的群體按照

聯合概率與聯合分佈、條件概率與條件分佈、邊緣概率與邊緣分佈、貝葉斯定理、生成模型(Generative Model)判別模型(Discriminative Model)的區別

在看生成模型和判別模型之前,我們必須先了解聯合概率與聯合分佈、條件概率與條件分佈、邊緣概率與邊緣分佈、貝葉斯定理的概念。 聯合概率與聯合概率分佈: 假設有隨機變數X與Y, 此時,P(X=a,Y=b)用於表示X=a且Y=b的概率。這類包含多個條件且所有條件同時成立的概率稱為聯合概率。聯合概

關於什麼時候用異常檢測監督學習,以及多元高斯模型的使用

當有很多負樣本,少量正樣本的時候,用異常檢測。 假如特徵不符合高斯分佈,則應該對原始特徵做一個變換,比如log(x)或者X^2等等讓其符合高斯分佈 多元高斯混合模型公式: 其中裡面有兩個引數一個是u特徵均值,一個是協方差矩陣 混合高斯模型使用條件 m(訓練樣本數量)>n

Python機器學習筆記深入理解Keras中序貫模型函式模型

  先從sklearn說起吧,如果學習了sklearn的話,那麼學習Keras相對來說比較容易。為什麼這樣說呢?   我們首先比較一下sklearn的機器學習大致使用流程和Keras的大致使用流程: sklearn的機器學習使用流程: 1 2 3 4

深度學習筆記(六)Encoder-Decoder模型Attention模型

這兩天在看attention模型,看了下知乎上的幾個回答,很多人都推薦了一篇文章Neural Machine Translation by Jointly Learning to Align and Translate 我看了下,感覺非常的不錯,裡面還大