生成算法和判別算法有什麼區別?

請幫助我理解生成算法和判別算法之間的區別 ,記住我只是一個初學者。 算法


#1樓

在實踐中,模型使用以下。 網絡

判別模型中 ,要從訓練示例x預測標籤y ,您必須評估: 函數

在此輸入圖像描述

這只是選擇考慮x的最可能的類y 。 這就像咱們試圖模擬類之間的決策邊界 。 這種行爲在神經網絡中很是清楚,其中計算出的權重能夠看做是一個複雜形狀的曲線,隔離了空間中一個類的元素。 學習

如今,使用貝葉斯的規則,讓咱們替換 在此輸入圖像描述 在等式中 在此輸入圖像描述 。 因爲您只對arg max感興趣,所以您能夠消除分母,這對於每一個y都是相同的。 那麼,你就離開了 spa

在此輸入圖像描述

這是你在生成模型中使用的等式。 code

在第一種狀況下,你有條件機率分佈 p(y|x) ,它模擬了類之間的邊界,在第二種狀況下,你有聯合機率分佈 p(x,y),由於p(x,y)= p (x | y)p(y),它明確地模擬每一個類的實際分佈get

使用聯合機率分佈函數,給定y ,您能夠計算(「生成」)其各自的x 。 所以,它們被稱爲「生成」模型。 io


#2樓

生成算法模擬數據的生成方式,以便對信號進行分類。 它提出了一個問題:基於個人一代假設,哪一個類別最有可能產生這個信號? 神經網絡

判別算法不關心數據是如何生成的,它只是對給定信號進行分類。 bug


#3樓

一個額外的信息點,與上面的StompChicken的答案很好。

判別模型生成模型之間的根本區別在於:

判別模型學習類之間的(硬或軟)邊界

生成模型模擬各個類的分佈

編輯:

生成模型是能夠生成數據的模型 。 它模擬了特徵和類(即完整數據)。

若是咱們模擬P(x,y) :我可使用這個機率分佈來生成數據點 - 所以全部建模P(x,y)算法都是生成的。

例如。 生成模型

  • 樸素貝葉斯模型P(c)P(d|c) - 其中c是類, d是特徵向量。

    另外, P(c,d) = P(c) * P(d|c)

    所以,Naive Bayes在某些形式模型中, P(c,d)

  • 貝葉斯網

  • 馬爾科夫網隊

判別模型是僅能用於區分/分類數據點的模型 。 在這種狀況下,您只須要對P(y|x)進行建模(即給定特徵向量的類機率)。

例如。 判別模型:

  • 邏輯迴歸

  • 神經網絡

  • 條件隨機字段

通常而言,生成模型須要比判別模型更多地建模,所以有時不那麼有效。 事實上,大多數(不肯定是否全部)無監督學習算法(如聚類等)能夠稱爲生成,由於它們模型爲P(d) (而且沒有類別:P)

PS:部分答案來自消息來源


#4樓

這是CS299(Andrew Ng)與該主題相關的講義中最重要的部分,它真正幫助我理解判別性生成性學習算法之間的區別

假設咱們有兩類動物,大象( y = 1 )和狗( y = 0 )。 而x是動物的特徵向量。

給定訓練集,像邏輯迴歸或感知器算法(基本上)的算法試圖找到一條直線 - 即決策邊界 - 將大象和狗分開。 而後,爲了將新動物分類爲大象或狗,它檢查決定邊界的哪一側,並相應地進行預測。 咱們稱這些判別性學習算法

這是一種不一樣的方法。 首先,看大象,咱們能夠創建一個大象的模型。 而後,看着狗,咱們能夠創建一個單獨的模型,看看狗的樣子。 最後,爲了對新動物進行分類,咱們能夠將新動物與大象模型相匹配,並將其與狗模型相匹配,以查看新動物是否更像大象或更像咱們在訓練組中看到的狗。 咱們稱這些生成學習算法


#5樓

個人兩分錢:歧視性方法強調差別生成方法不關注差別; 他們試圖創建一個表明班級的模型。 二者之間存在重疊。 理想狀況下,應該使用兩種方法:一種方法可用於查找類似性,另外一種方法可用於查找不類似性。

相關文章
相關標籤/搜索