可生成式和可生成式的区别是什么 有识别力的算法?
当前回答
一般来说,机器学习社区有一个惯例,那就是不要学你不想学的东西。例如,考虑一个分类问题,目标是为给定的x输入分配y个标签。如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们必须为p(x)建模,而p(x)与当前任务无关。像数据稀疏性这样的实际限制将迫使我们用一些弱独立性假设来建模p(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)对。
从上面的描述中,您可能会认为生成模型更普遍,因此更好,但它并不是那么简单。这篇论文是关于区分分类器和生成分类器的一个非常流行的参考,但它相当沉重。总的要点是,在分类任务中,判别模型通常优于生成模型。
下面是CS299课堂讲稿中最重要的部分(作者:Andrew Ng),它帮助我理解了判别学习算法和生成学习算法之间的区别。
假设我们有两类动物,大象(y = 1)和狗(y = 0), x是动物的特征向量。
给定一个训练集,像逻辑回归或感知器算法这样的算法(基本上)试图找到一条直线——也就是一个决策边界——将大象和狗分开。然后,分类 一种新动物,比如大象或狗,它会检查它的哪一边 决定其所处的边界,并据此做出预测。我们称之为判别学习算法。
这里有一个不同的方法。首先,看看大象,我们可以建立一个 大象的模型。然后,看着狗,我们可以建立一个 单独的狗狗模型。最后,为了给一种新动物分类, 我们可以将新动物与大象模型相匹配,并将其与 狗的模型,看看新动物是否更像大象 或者更像我们在训练场上看到的狗。我们称之为生成式学习算法。
简短的回答
这里的许多答案都依赖于广泛使用的数学定义[1]:
判别模型直接学习条件预测分布p(y|x)。 生成模型学习联合分布p(x,y)(或者说,p(x|y)和p(y))。 预测分布p(y|x)可以用贝叶斯规则得到。
Although very useful, this narrow definition assumes the supervised setting, and is less handy when examining unsupervised or semi-supervised methods. It also doesn't apply to many contemporary approaches for deep generative modeling. For example, now we have implicit generative models, e.g. Generative Adversarial Networks (GANs), which are sampling-based and don't even explicitly model the probability density p(x) (instead learning a divergence measure via the discriminator network). But we call them "generative models” since they are used to generate (high-dimensional [10]) samples.
一个更广泛、更基本的定义[2]似乎同样适合这个一般性问题:
判别模型学习类之间的边界。 所以他们可以区分不同类型的数据实例。 生成模型学习数据的分布。 因此它们可以生成新的数据实例。
图片来源
仔细观察
即便如此,这个问题还是暗示了一种错误的二分法。生成-判别“二分法”实际上是一个频谱,您甚至可以平滑地在[4]之间插入。
因此,这种区分变得武断和令人困惑,特别是当许多流行的模型并没有整齐地归入其中一个或另一个时[5,6],或者实际上是混合模型(经典的“判别”和“生成”模型的组合)。
尽管如此,这仍然是一个非常有用和常见的区别。我们可以列出一些生成式和判别式模型的明确例子,既有标准的,也有最近的:
生成:朴素贝叶斯,潜狄利克雷分配(LDA),生成对抗网络(GAN),变分自编码器(VAE),归一化流。 判别:支持向量机(SVM),逻辑回归,大多数深度神经网络。
还有很多有趣的工作深入研究了生成-判别划分[7]和频谱[4,8],甚至将判别模型转换为生成模型[9]。
最后,定义在不断变化,尤其是在这个快速发展的领域:)最好对它们有所保留,甚至可以为自己和他人重新定义它们。
来源
Possibly originating from "Machine Learning - Discriminative and Generative" (Tony Jebara, 2004). Crash Course in Machine Learning by Google The Generative-Discriminative Fallacy "Principled Hybrids of Generative and Discriminative Models" (Lasserre et al., 2006) @shimao's question Binu Jasim's answer Comparing logistic regression and naive Bayes: cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf "On Discriminative vs. Generative classifiers" Comment on "On Discriminative vs. Generative classifiers" https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/DengJaitly2015-ch1-2.pdf "Your classifier is secretly an energy-based model" (Grathwohl et al., 2019) Stanford CS236 notes: Technically, a probabilistic discriminative model is also a generative model of the labels conditioned on the data. However, the term generative models is typically reserved for high dimensional data.
生成算法模型将完全从训练数据中学习,并预测响应。
判别算法的工作就是对两种结果进行分类或区分。
一般来说,机器学习社区有一个惯例,那就是不要学你不想学的东西。例如,考虑一个分类问题,目标是为给定的x输入分配y个标签。如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们必须为p(x)建模,而p(x)与当前任务无关。像数据稀疏性这样的实际限制将迫使我们用一些弱独立性假设来建模p(x)。因此,我们直观地使用判别模型进行分类。
推荐文章
- 如何计算圆周长上的一点?
- 从整数流中找到运行中位数
- 在日历应用程序中建模重复事件的最佳方法是什么?
- 在任何情况下,您更喜欢高大o时间复杂度算法而不是低大o时间复杂度算法吗?
- 关于如何将数据集划分为训练集和验证集,是否存在经验法则?
- 在scikit-learn中保存分类器到磁盘
- 如何使用JavaScript比较软件版本号?数量(只)
- 跳跃表vs.二叉搜索树
- 如何使四舍五入百分比加起来为100%
- 是否有可能得到一个函数的所有参数作为单一对象内的函数?
- LL和LR解析之间的区别是什么?
- log(n!) = Θ(n·log(n))?
- C语言中位反转的高效算法(从MSB->LSB到LSB->MSB)
- 如何解释机器学习模型的损失和准确性
- 递归还是迭代?