1. 程式人生 > >判別模型和生成模型的區別

判別模型和生成模型的區別

    什麼是判別模型(Discriminative Model)和生成模型(Generative Model)? 一個通俗易懂的解釋判別模型和生成模型可以點選這裡檢視,這裡我摘錄如下:

    Let's say you have input data x and you want to classify the data into labels y. A generative model(生成模型) learns the joint probability distribution(聯合概率分佈) p(x,y) and adiscriminative model(判別模型) learns the conditional probability distribution(條件概率分佈) p(y|x)

 - which you should read as 'the probability of y given x'.

    關於生成模型和判別模型,我發現的另外一個解釋我摘錄如下,原文點選這裡

    判別模型Discriminative Model,又可以稱為條件模型,或條件概率模型。估計的是條件概率分佈(conditional distribution), p(class|context)。

    生成模型Generative Model,又叫產生式模型。估計的是聯合概率分佈(joint probability distribution),p(class, context)=p(class|context)*p(context)。

    另外對於生成模型和判別模型,總結如下:
    1.生成模型和判別模型的定義

      記o為觀察序列,s為狀態序列。對o和s進行統計建模,通常有兩種方式:

      (1) 生成模型 (又叫產生模型): 構建o和s的聯合分佈p(s,o)

      (2) 判別模型 (又叫條件概率模型, 也叫條件模型): 構建o和s的條件分佈p(s|o)

    2.判別模型和生成模型的對比

      (1) 訓練時,二者優化準則不同:生成模型優化訓練資料的聯合分佈概率,而判別模型優化訓練資料的條件分佈概率。從這裡可以看出,判別模型與序列標記問題有較好的對應性。

(2) 對於觀察序列的處理不同:生成模型中,觀察序列作為模型的一部分,而判別模型中,觀察序列只作為條件,因此可以針對觀察序列設計靈活的特徵。

      (3) 訓練複雜度不同:由於需要歸一化,判別模型訓練複雜度較高。

      (4) 是否支援無指導訓練:生成模型支援無指導訓練,而判別模型不支援。

    3. 二者的本質區別是:判別模型(discriminative model )估計的是條件概率分佈(conditional distribution)p(class|context),而生成模型(generative model) 估計的是聯合概率分佈(joint probability distribution)

    通常來講,(該部分援引自這裡)常見的生成模型(Generative Model)主要有:

– Gaussians, Naive Bayes, Mixtures of multinomials

– Mixtures of Gaussians, Mixtures of experts, HMMs

– Sigmoidal belief networks, Bayesian networks

    – Markov random fields

    常見的Discriminative Model主要有:

– logistic regression

    – SVMs

    – traditional neural networks

    – Nearest neighbor