请帮助我理解生成算法和 判别算法之间的区别,记住我只是一个初学者.
假设您有输入数据,x
并且您希望将数据分类为标签y
.生成模型学习联合概率分布p(x,y)
,判别模型学习条件概率分布p(y|x)
- 您应该将其视为" 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
如果您花几分钟时间盯着这两个矩阵,您将理解两个概率分布之间的差异.
分布p(y|x)
是将给定示例分类x
为类的自然分布y
,这就是为什么直接对其进行建模的算法称为判别算法.生成算法模型p(x,y)
,可以p(y|x)
通过应用贝叶斯规则转换为然后用于分类.但是,该分发p(x,y)
也可用于其他目的.例如,你可以使用p(x,y)
,以产生可能的(x,y)
对.
从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单.本文是一个关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要.总体要点是,判别模型通常在分类任务中优于生成模型.
一个生成算法模型如何将数据以分类的信号产生.它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
一个判别算法不关心是如何产生的数据,它只是分类的给定信号.
想象一下,您的任务是将语音分类为语言.
您可以通过以下任一方式完成:
学习每种语言,然后使用刚刚获得的知识对其进行分类
要么
在不学习语言的情况下确定语言模型的差异,然后对语音进行分类.
第一个是生成方法,第二个是判别方法.
有关详细信息,请查看此参考:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf.
在实践中,模型使用如下.
在判别模型中,y
要从训练示例中预测标签x
,您必须评估:
这只是选择y
考虑最有可能的课程x
.这就像我们试图模拟类之间的决策边界.这种行为在神经网络中非常清楚,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素.
现在,使用贝叶斯的规则,让我们替换 在等式中 .由于你只对arg max感兴趣,你可以消灭分母,每个分母都是一样的y
.那么,你就离开了
这是你在生成模型中使用的等式.
虽然在第一种情况下你有条件概率分布 p(y|x)
,它模拟了类之间的边界,但在第二种情况下你有联合概率分布 p(x,y),因为p(x,y)= p(x | y)p (y),它明确地模拟每个类的实际分布.
使用联合概率分布函数,给定a y
,可以计算("生成")其各自的x
.因此,它们被称为"生成"模型.
这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性和生成性学习算法之间的区别.
假设我们有两类动物,elephant(y = 1
)和dog(y = 0
).而x是动物的特征向量.
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开.然后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测.我们称这些判别性学习算法.
这是一种不同的方法.首先,看大象,我们可以建立一个大象的模型.然后,看着狗,我们可以建立一个单独的模型,看看狗的样子.最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练集中看到的狗.我们称这些生成学习算法.
一般来说,机器学习社区中有一种做法是不学习你不想要的东西.例如,考虑一个分类问题,其中一个目标是将y标签分配给给定的x输入.如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们必须建模p(x),这与手头的任务无关.像数据稀疏性这样的实际限制将迫使我们p(x)
用一些弱独立性假设进行建模.因此,我们直观地使用判别模型进行分类.
不同的模型总结在下表中:
一个额外的信息点,与上面的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:部分答案来自消息来源