請幫助我理解生成算法和判別算法之間的區別 ,記住我只是一個初學者。 算法
在實踐中,模型使用以下。 網絡
在判別模型中 ,要從訓練示例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
生成算法模擬數據的生成方式,以便對信號進行分類。 它提出了一個問題:基於個人一代假設,哪一個類別最有可能產生這個信號? 神經網絡
判別算法不關心數據是如何生成的,它只是對給定信號進行分類。 bug
一個額外的信息點,與上面的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:部分答案來自消息來源
這是CS299(Andrew Ng)與該主題相關的講義中最重要的部分,它真正幫助我理解判別性和生成性學習算法之間的區別 。
假設咱們有兩類動物,大象( y = 1
)和狗( y = 0
)。 而x是動物的特徵向量。
給定訓練集,像邏輯迴歸或感知器算法(基本上)的算法試圖找到一條直線 - 即決策邊界 - 將大象和狗分開。 而後,爲了將新動物分類爲大象或狗,它檢查決定邊界的哪一側,並相應地進行預測。 咱們稱這些判別性學習算法 。
這是一種不一樣的方法。 首先,看大象,咱們能夠創建一個大象的模型。 而後,看着狗,咱們能夠創建一個單獨的模型,看看狗的樣子。 最後,爲了對新動物進行分類,咱們能夠將新動物與大象模型相匹配,並將其與狗模型相匹配,以查看新動物是否更像大象或更像咱們在訓練組中看到的狗。 咱們稱這些生成學習算法 。
個人兩分錢:歧視性方法強調差別生成方法不關注差別; 他們試圖創建一個表明班級的模型。 二者之間存在重疊。 理想狀況下,應該使用兩種方法:一種方法可用於查找類似性,另外一種方法可用於查找不類似性。