algorithm - 生成算法和判别算法有什么区别?

标签 algorithm machine-learning generative

<分区>

生成判别式算法?

最佳答案

假设您有输入数据 x 并且您希望将数据分类到标签 y 中。生成模型学习联合概率分布p(x,y),判别模型学习条件概率分布p(y |x) - 您应该将其理解为 “给定 xy 的概率”

这是一个非常简单的例子。假设您有以下格式的数据 (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是关于判别分类器与生成分类器主题的非常受欢迎的引用资料,但它的内容非常繁重。总体要点是判别模型在分类任务中通常优于生成模型。

关于algorithm - 生成算法和判别算法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/879432/

相关文章:

python - 在 Python 中对算法进行排序的最快方法

python - 用于查找大于原始字符串的字符串的字符串操作算法

python - 如何调整我的输入数据以便在 keras 中与 Conv1D 一起使用?

python - GAN 中的损失函数

c++ - 单字分割算法

algorithm - 给定一个具有节点权重的二部图,根据一定的启发式获取一种类型节点的有序列表

python - 在 sklearn 的 Pipeline 中使用 LabelEncoder 给出 : fit_transform takes 2 positional arguments but 3 were given

python - 不同模型的训练精度不同,但测试精度相同

tensorflow - 如何在 Tensorflow 中异步更新 GAN 生成器和判别器?