可生成式和可生成式的区别是什么 有识别力的算法?
当前回答
在实践中,模型的使用如下。
在判别模型中,为了从训练例x中预测标签y,你必须评估:
它只是在考虑x的情况下选择最有可能的类别y。这就像我们试图在类别之间建立决策边界的模型。这种行为在神经网络中非常明显,其中计算的权重可以被视为一个复杂形状的曲线,将空间中一个类的元素隔离开来。
现在,用贝叶斯法则,把方程中的替换为。因为你只对arg max感兴趣,你可以擦掉分母,这对每个y都是一样的,所以,你剩下
这是你在生成模型中使用的方程。
在第一种情况下,你有条件概率分布p(y|x),它模拟了类之间的边界,在第二种情况下,你有联合概率分布p(x, y),因为p(x | y) p(y) = p(x, y),它显式地模拟了每个类的实际分布。
对于联合概率分布函数,给定一个y,你可以计算(“生成”)它各自的x。因此,它们被称为“生成”模型。
其他回答
我的观点是: 歧视性的方法突出了差异 生成方法不关注差异;他们试图建立一个能代表班级的模型。 两者之间有重叠之处。 理想情况下,两种方法都应该使用:一种有助于发现相似之处,另一种有助于发现不同之处。
假设你有一个输入数据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)是将给定示例x分类为y类的自然分布,这就是为什么直接对其建模的算法被称为判别算法。生成算法建模p(x,y),应用贝叶斯规则将p(y|x)转化为p(y|x),用于分类。然而,分布p(x,y)也可以用于其他目的。例如,您可以使用p(x,y)来生成可能的(x,y)对。
从上面的描述中,您可能会认为生成模型更普遍,因此更好,但它并不是那么简单。这篇论文是关于区分分类器和生成分类器的一个非常流行的参考,但它相当沉重。总的要点是,在分类任务中,判别模型通常优于生成模型。
这是一个额外的信息点,与上面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)
附言:部分答案来源于原文
生成算法对数据如何生成进行建模,以便对信号进行分类。它提出了一个问题:根据我的世代假设,哪个类别最有可能产生这个信号?
判别算法并不关心数据是如何产生的,它只是对给定的信号进行分类。
生成算法模型将完全从训练数据中学习,并预测响应。
判别算法的工作就是对两种结果进行分类或区分。
推荐文章
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 哪些是遗传算法/遗传规划解决方案的好例子?
- 如何在O(n)中找到长度为n的无序数组中的第k大元素?
- 一个用于膨胀/收缩(抵消,缓冲)多边形的算法
- 我如何使用Node.js Crypto创建HMAC-SHA1哈希?
- 如何用动态规划确定最长递增子序列?
- 在c++程序中以编程方式检测字节序
- 理解递归
- 如何在Python中进行热编码?
- 段树、区间树、二叉索引树和范围树之间有什么区别?
- 给定一个数字,找出下一个与原始数字具有完全相同的数字集的更高的数字
- HSL到RGB的颜色转换
- 使用Java在原语数组中查找最大/最小值
- 好的Java图算法库?
- 如何将数据分成3组(训练、验证和测试)?