x
,并且您想将数据分类为标签y
。生成模型学习联合概率分布p(x,y)
,而判别模型学习条件概率分布p(y|x)
- 您应该将其读作"给定x
的情况下y
的概率"。(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
p(y|x)
意味着建模它的算法被称为“判别式模型”。 - nbro想象一下你的任务是将演讲分类为一个语言。
你可以通过以下两种方式来完成:
或者
第一种方法是生成式方法,第二种方法是判别式方法。
请参阅此参考资料以获取更多详情:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf。
x
预测标签y
,您需要评估:
这仅仅是选择最可能的类y
,考虑x
。就像我们试图建立类之间的决策边界一样。这种行为在神经网络中非常明显,其中计算出的权重可以看作是在空间中隔离类元素的复杂曲线。
现在,使用贝叶斯规则,让我们用来替换等式中的
。由于您只对arg max感兴趣,因此可以消除分母,这对于每个
y
都是相同的。因此,您只剩下:
p(x, y)
,如何计算p(x|y) p(y)
?我的意思是,我们可以从条件概率中推导出它,但我们仍不知道p(x|y)
和p(y)
。其他人将生成模型定义为估计分布p(x|y)
,那么什么是正确的? - ado sary = 1
)和狗(y = 0
)。x是动物的特征向量。通常,在机器学习社区中有一个惯例,即不要学习您不想要的内容。例如,考虑一个分类问题,其中目标是将y标签分配给给定的x输入。如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们需要建模p(x),但它与手头的任务无关。实际限制,如数据稀疏性,将迫使我们使用一些弱独立假设来建模p(x)
。因此,我们直觉地使用判别模型进行分类。
这里的许多答案依赖于广泛使用的数学定义[1]:
- 判别模型直接学习条件预测分布
p(y|x)
。- 生成模型学习联合分布
p(x,y)
(或者更确切地说,p(x|y)
和p(y)
)。
- 可以通过贝叶斯定理获得预测分布
p(y|x)
。
虽然非常有用,但这个狭窄的定义假设了监督设置,并且在检查无监督或半监督方法时不太方便。它也不适用于许多当代深度生成建模方法。例如,现在我们有隐式生成模型,例如生成对抗网络 (GANs),它们是基于采样的,甚至不明确地模拟概率密度 p(x)
(而是通过鉴别器网络学习分歧度量)。但我们称它们为“生成模型”,因为它们用于生成(高维[10])样本。
一个更广泛和更基本的定义[2]似乎同样适用于这个一般性问题:
- 判别模型学习类别之间的边界。
- 因此它们可以在不同类型的数据实例之间进行区分。
- 生成模型学习数据分布。
- 因此它们可以生成新的数据实例。
即便如此,这个问题有点含糊不清 [3]。生成-判别“二分法”实际上是一个可以在其中平滑地插值的光谱 [4]。
因此,这种区分变得武断和令人困惑,特别是当许多流行的模型不完全属于其中之一 [5,6],或者实际上是混合模型(经典的“判别式”和“生成式”模型的组合)时。
尽管如此,这仍然是一种非常有用和常见的区分方式。我们可以列举一些明确的生成式和判别式模型,包括经典和最新的:
还有很多有趣的工作深入研究了生成-判别的分界线 [7] 和光谱 [4,8],甚至将判别式模型转化为生成式模型 [9]。
最终,定义在这个快速发展的领域中不断演变 :) 最好带着一点儿保留地看待它们,甚至为自己和他人重新定义它们。
一个补充性的信息,与StompChicken以上的回答相呼应。
判别模型和生成模型之间的基本区别是:
判别模型学习类别之间的(硬或软)边界
生成模型对个体类别的分布进行建模
编辑:
生成模型可以生成数据。它对特征和类别(即完整数据)进行建模。
如果我们对P(x,y)
进行建模:我可以使用这个概率分布来生成数据点 - 因此所有建模P(x,y)
的算法都是生成模型。
例如,生成模型的例子包括:
朴素贝叶斯模型P(c)
和P(d|c)
- 其中c
是类别,d
是特征向量。
同时,P(c,d) = P(c) * P(d|c)
因此,朴素贝叶斯以某种形式对P(c,d)
进行建模。
贝叶斯网络
马尔科夫网络
判别模型只能用于区分/分类数据点。
在这种情况下,只需要对P(y|x)
进行建模(即给定特征向量的类别概率)。
例如,判别模型的例子包括:
逻辑回归
神经网络
条件随机场
总的来说,生成模型需要建模的内容比判别模型多得多,因此有时并不那么有效。事实上,大多数(不确定是否全部)无监督学习算法(如聚类等)都可以称为生成模型,因为它们建模的是 P(d)
(而没有类:P)
注:部分答案摘自来源