请帮助我理解生成和a之间的区别 判别算法,请记住我只是一个初学者。
答案 0 :(得分:768)
假设您输入的数据为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)
对。
从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单。 This paper是一个非常受欢迎的关于歧视性与生成性分类主题的参考,但它相当重要。总体要点是判别模型在分类任务中通常优于生成模型。
答案 1 :(得分:283)
生成算法模拟数据的生成方式,以便对信号进行分类。它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
判别算法并不关心数据是如何生成的,它只是对给定信号进行分类。
答案 2 :(得分:148)
想象一下,您的任务是将语音分类为语言。
您可以通过以下任一方式执行此操作:
或
第一个是生成方法,第二个是判别方法。
查看此参考以获取更多详细信息:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf。
答案 3 :(得分:121)
实际上,模型使用如下。
在判别模型中,要预测培训示例y
中的标签x
,您必须评估:
仅选择考虑y
的最可能的课程x
。这就像我们试图模拟类之间的决策边界。这种行为在神经网络中非常清楚,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素。
现在,使用贝叶斯规则,让我们用替换等式中的。由于您只对 arg max 感兴趣,因此您可以消除分母,这对于每个y
都是相同的。所以,你留下了
这是您在生成模型中使用的等式。
虽然在第一种情况下你有条件概率分布 p(y|x)
,它模拟了类之间的边界,但在第二种情况下你得到了联合概率分布 p(x,y),因为p(x,y)= p(x | y)p(y),明确地模拟每个类的实际分布。
使用联合概率分布函数,给定y
,您可以计算(“生成”)其各自的x
。因此,它们被称为“生成”模型。
答案 4 :(得分:76)
这是与主题相关的CS299的lecture notes(由Andrew Ng提供)中最重要的部分,其中真的帮助我理解辨别力之间的区别和生成学习算法。
假设我们有两类动物,大象(y = 1
)和狗(y = 0
)。并且 x 是动物的特征向量。
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开。然后,进行分类 一种新的动物,如大象或狗,它检查在哪一侧 决定边界下降,并相应地做出预测。我们将这些判别学习算法称为。
这是一种不同的方法。首先,看着大象,我们可以建立一个 大象的样子。然后,看着狗,我们可以建立一个 狗的外观模型。最后,要对一种新动物进行分类, 我们可以将新动物与大象模型相匹配,并将其与之匹配 狗模型,看看新动物是否更像大象 或者更像我们在训练组中看到的狗。我们称之为生成学习算法。
答案 5 :(得分:31)
一般来说,机器学习社区中有一种做法是不学习你不想要的东西。例如,考虑一个分类问题,其中一个目标是将y标签分配给给定的x输入。如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们必须建模p(x),这与手头的任务无关。像数据稀疏性这样的实际限制将迫使我们用一些弱独立性假设来模拟p(x)
。因此,我们直观地使用判别模型进行分类。
答案 6 :(得分:19)
一个额外的信息点,与上面StompChicken的答案相吻合。
判别模型与生成模型之间的基本差异是:
判别模型了解课程之间的(硬或软)边界
生成模型模拟各个类的分布
编辑:
生成模型是可以生成数据的 。它模拟了特征和类(即完整数据)。
如果我们建模P(x,y)
:我可以使用此概率分布来生成数据点 - 因此所有建模P(x,y)
的算法都是生成的。
EG。生成模型
朴素贝叶斯模型P(c)
和P(d|c)
- 其中c
是类,d
是特征向量。
此外,P(c,d) = P(c) * P(d|c)
因此,朴素贝叶斯在某些形式模型中P(c,d)
贝叶斯网
Markov Nets
判别模型是只能用于区分/分类数据点的模型。
在这种情况下,您只需要建模P(y|x)
(即给定特征向量的类概率)。
EG。判别模式:
逻辑回归
神经网络
条件随机字段
一般而言,生成模型需要比判别模型更多地建模,因此有时不那么有效。事实上,大多数(不确定是否所有)无监督学习算法(如聚类等)可以称为生成,因为它们模型P(d)
(并且没有类:P)
PS:部分答案取自source
答案 7 :(得分:17)
答案 8 :(得分:0)
我的两分钱: 歧视性方法突出了差异 生成方法不关注差异;他们试图建立一个代表班级的模型。 两者之间存在重叠。 理想情况下,应该使用两种方法:一种方法可用于查找相似性,另一种方法可用于查找不相似性。
答案 9 :(得分:0)
生成算法模型将完全从训练数据中学习并预测响应。
判别算法工作只是对2种结果进行分类或区分。
答案 10 :(得分:0)
所有先前的答案都很棒,我想再指出一点。
从生成算法模型中,我们可以得出任何分布;虽然我们只能从判别算法模型中获得条件分布P(Y | X)(或者可以说它们仅用于判别Y的标签),这就是为什么将其称为判别模型的原因。判别模型没有假设X在给定Y($ X_i \ perp X _ {-i | | Y $)的情况下是独立的,因此对于计算该条件分布通常更有效。
答案 11 :(得分:0)
这里的许多答案都依赖于广泛使用的数学定义[1]:
- 判别模型直接学习条件预测分布
p(y|x)
。- 生成模型学习联合分布
p(x,y)
(或更确切地说,p(x|y)
和p(y)
)。
- 可以使用贝叶斯规则获得预测分布
p(y|x)
。
虽然非常有用,但该狭窄的定义假设采用受监督的设置,并且在检查无监督或半监督方法时不那么方便。现在我们还有隐式生成模型,例如退化的生成对抗网络甚至没有概率密度。
一个更广泛,更基本的定义 [2]似乎同样适用于这个一般性问题:
判别模型学习班级之间的界限。
生成模型可以学习数据的分布。
- 区分不同类型的数据实例。
- 生成新的数据实例。
即使如此,这个问题也隐含着错误的二分法[3]。生成歧视性“二分法”实际上是一个频谱,您甚至可以在[4]之间平滑地插值。
结果,这种区分变得任意和令人困惑,尤其是当许多流行的模型不能整齐地落入另一个模型时[5,6]。
尽管如此,这仍然是一个非常有用且常见的区别。我们可以列举一些规范的和最新的生成模型和判别模型的清晰示例:
还有很多有趣的工作深入研究了生成-区分鸿沟[7]和频谱[4,8],甚至将判别模型转换为生成模型[9]。
答案 12 :(得分:0)
This文章对我的理解很有帮助。
总而言之,
一些不错的阅读材料:conditional probability,Joint PDF