unj*_*nj2 558 algorithm machine-learning difference
请帮助我理解生成算法和 判别算法之间的区别,记住我只是一个初学者.
Sto*_*ken 803
假设您有输入数据,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
Run Code Online (Sandbox Code Playgroud)
p(y|x) 是
y=0 y=1
-----------
x=1 | 1 0
x=2 | 1/2 1/2
Run Code Online (Sandbox Code Playgroud)
如果您花几分钟时间盯着这两个矩阵,您将理解两个概率分布之间的差异.
分布p(y|x)是将给定示例分类x为类的自然分布y,这就是为什么直接对其进行建模的算法称为判别算法.生成算法模型p(x,y),可以p(y|x)通过应用贝叶斯规则转换为然后用于分类.但是,该分发p(x,y)也可用于其他目的.例如,你可以使用p(x,y),以产生可能的(x,y)对.
从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单.本文是一个关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要.总体要点是,判别模型通常在分类任务中优于生成模型.
Car*_*don 287
一个生成算法模型如何将数据以分类的信号产生.它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
一个判别算法不关心是如何产生的数据,它只是分类的给定信号.
mad*_*ode 152
想象一下,您的任务是将语音分类为语言.
您可以通过以下任一方式完成:
要么
第一个是生成方法,第二个是判别方法.
有关详细信息,请查看此参考:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf.
Sau*_*rdo 127
在实践中,模型使用如下.
在判别模型中,y要从训练示例中预测标签x,您必须评估:

这只是选择y考虑最有可能的课程x.这就像我们试图模拟类之间的决策边界.这种行为在神经网络中非常清楚,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素.
现在,使用贝叶斯的规则,让我们替换
在等式中
.由于你只对arg max感兴趣,你可以消灭分母,每个分母都是一样的y.那么,你就离开了

这是你在生成模型中使用的等式.
虽然在第一种情况下你有条件概率分布 p(y|x),它模拟了类之间的边界,但在第二种情况下你有联合概率分布 p(x,y),因为p(x,y)= p(x | y)p (y),它明确地模拟每个类的实际分布.
使用联合概率分布函数,给定a y,可以计算("生成")其各自的x.因此,它们被称为"生成"模型.
Ghr*_*rua 84
这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性和生成性学习算法之间的区别.
假设我们有两类动物,elephant(y = 1)和dog(y = 0).而x是动物的特征向量.
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开.然后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测.我们称这些判别性学习算法.
这是一种不同的方法.首先,看大象,我们可以建立一个大象的模型.然后,看着狗,我们可以建立一个单独的模型,看看狗的样子.最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练集中看到的狗.我们称这些生成学习算法.
Sri*_*ake 32
一般来说,机器学习社区中有一种做法是不学习你不想要的东西.例如,考虑一个分类问题,其中一个目标是将y标签分配给给定的x输入.如果我们使用生成模型
p(x,y)=p(y|x).p(x)
Run Code Online (Sandbox Code Playgroud)
我们必须建模p(x),这与手头的任务无关.像数据稀疏性这样的实际限制将迫使我们p(x)用一些弱独立性假设进行建模.因此,我们直观地使用判别模型进行分类.
Rav*_*i G 24
Pra*_*wal 20
一个额外的信息点,与上面的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:部分答案来自消息来源
Chr*_*nto 20
这里的许多答案都依赖于广泛使用的数学定义 [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]。
最后,定义在不断发展,尤其是在这个快速发展的领域 :) 最好对它们持保留态度,甚至可以为自己和他人重新定义它们。