请帮助我理解生成算法和 判别算法之间的区别,请记住我只是一个初学者。
请帮助我理解生成算法和 判别算法之间的区别,请记住我只是一个初学者。
Answers:
假设您有输入数据,x
并且想要将数据分类为label 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)
对。
从上面的描述中,您可能会认为生成模型更有用,因此更好,但是却不那么简单。本文是关于判别式分类器与生成式分类器的非常受欢迎的参考,但它的工作量很大。总体要点是,在分类任务中,区分模型通常要优于生成模型。
p(y|x)
暗示将对其建模的算法被称为“判别模型”。
一个生成算法模型如何将数据以分类的信号产生。它提出了一个问题:根据我的世代假设,哪个类别最有可能产生此信号?
一个判别算法不关心是如何产生的数据,它只是分类的给定信号。
想象您的任务是将语音分类为一种语言。
您可以通过以下两种方式之一进行操作:
要么
第一个是生成方法,第二个是判别方法。
检查此参考以获取更多详细信息:http : //www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf。
实际上,这些模型的用法如下。
在判别模型中,要y
根据训练示例预测标签x
,您必须评估:
这只是选择最有可能y
考虑的课程x
。就像我们试图在类之间的决策边界建模一样。这种行为在神经网络中非常清楚,在神经网络中,计算出的权重可以看作是一条复杂的形状的曲线,隔离了空间中某个类别的元素。
现在,使用贝叶斯(Bayes)规则,将等式中的替换为。由于您只对arg max感兴趣,因此可以消除分母,每个分母都相同y
。所以,你剩下
这是您在生成模型中使用的方程式。
在第一种情况下,您具有条件概率分布 p(y|x)
,该条件概率模型对类之间的边界进行了建模;在第二种情况下,您具有联合概率分布 p(x, y)
,因为p(x | y) p(y) = p(x, y)
后者显式地对每个类的实际分布进行了建模。
使用联合概率分布函数,给定a y
,您可以计算(“生成”)其各自的x
。因此,它们被称为“生成”模型。
这是与该主题相关的CS299(由Andrew Ng撰写)的讲义中最重要的部分,它确实有助于我理解判别式学习算法与生成式学习算法之间的区别。
假设我们有两类动物,大象(y = 1
)和狗(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)
因此,朴素贝叶斯在某些形式模型中 P(c,d)
贝叶斯网
马尔可夫网
区分模型是只能用于对数据点进行区分/分类的模型。您只需要P(y|x)
在这种情况下建模(即给定特征向量的类概率)。
例如。判别模型:
逻辑回归
神经网络
条件随机场
通常,生成模型需要比区分模型建模得多,因此有时效果不佳。事实上,大多数(不确定是否全部)无监督学习算法(例如聚类等)都可以称为生成式,因为它们可以建模P(d)
(并且没有类:P)
PS:部分答案来自资料来源
这里的许多答案都依赖于广泛使用的数学定义[1]:
- 判别模型直接学习条件预测分布
p(y|x)
。- 生成模型学习联合分布
p(x,y)
(或更确切地说,是p(x|y)
和p(y)
)。
p(y|x)
可以使用贝叶斯规则获得预测分布。
尽管非常有用,但是这种狭义的定义采用了监督设置,并且在检查无监督或半监督方法时不那么方便。它也不适用于许多当代的深度生成建模方法。例如,现在我们有了隐含的生成模型,例如,生成对抗网络(GAN),该模型基于采样,甚至没有显式地对概率密度建模p(x)
(而是通过鉴别器网络学习发散度量)。但是我们称它们为“生成模型”,因为它们用于生成(高维[10])样本。
一个更广泛,更基础的定义 [2]似乎同样适用于这个一般性问题:
- 判别模型学习班级之间的界限。
- 因此,它们可以区分不同类型的数据实例。
- 生成模型学习数据的分布。
- 因此,他们可以生成新的数据实例。
即使这样,这个问题也隐含着错误的二分法[3]。实际上,生成歧视的“二分法”是一个甚至可以在[4]之间平滑内插的频谱。
结果,这种区分变得任意而又令人困惑,尤其是当许多流行的模型不能整齐地落入一个模型[5,6]或实际上是混合模型时(经典的“区分”模型和“生成”模型的组合) 。
尽管如此,这仍然是一个非常有用和通用的区别。我们可以列举一些规范的和最新的生成模型和判别模型的清晰示例:
还有很多有趣的工作深入研究了生成-区分鸿沟[7]和频谱[4,8],甚至将判别模型转换为生成模型[9]。
最后,定义在不断发展,尤其是在这个快速增长的领域中:)最好带些盐,甚至为自己和他人重新定义。
生成算法模型将完全从训练数据中学习并预测响应。
判别算法的工作只是对这两种结果进行分类或区分。
此文章帮了我很多理解的概念。
综上所述,