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

请帮助我理解生成算法和判别算法之间的区别 ,记住我只是一个初学者。 算法


#1楼

在实践中,模型使用以下。 网络

判别模型中 ,要从训练示例x预测标签y ,您必须评估: 函数

在此输入图像描述

这只是选择考虑x的最可能的类y 。 这就像咱们试图模拟类之间的决策边界 。 这种行为在神经网络中很是清楚,其中计算出的权重能够看做是一个复杂形状的曲线,隔离了空间中一个类的元素。 学习

如今,使用贝叶斯的规则,让咱们替换 在此输入图像描述 在等式中 在此输入图像描述 。 因为您只对arg max感兴趣,所以您能够消除分母,这对于每一个y都是相同的。 那么,你就离开了 spa

在此输入图像描述

这是你在生成模型中使用的等式。 code

在第一种状况下,你有条件几率分布 p(y|x) ,它模拟了类之间的边界,在第二种状况下,你有联合几率分布 p(x,y),由于p(x,y)= p (x | y)p(y),它明确地模拟每一个类的实际分布get

使用联合几率分布函数,给定y ,您能够计算(“生成”)其各自的x 。 所以,它们被称为“生成”模型。 io


#2楼

生成算法模拟数据的生成方式,以便对信号进行分类。 它提出了一个问题:基于个人一代假设,哪一个类别最有可能产生这个信号? 神经网络

判别算法不关心数据是如何生成的,它只是对给定信号进行分类。 bug


#3楼

一个额外的信息点,与上面的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:部分答案来自消息来源


#4楼

这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性生成性学习算法之间的区别

假设咱们有两类动物,大象( y = 1 )和狗( y = 0 )。 而x是动物的特征向量。

给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开。 而后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测。 咱们称这些判别性学习算法

这是一种不一样的方法。 首先,看大象,咱们能够创建一个大象的模型。 而后,看着狗,咱们能够创建一个单独的模型,看看狗的样子。 最后,为了对新动物进行分类,咱们能够将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像咱们在训练组中看到的狗。 咱们称这些生成学习算法


#5楼

个人两分钱:歧视性方法强调差别生成方法不关注差别; 他们试图创建一个表明班级的模型。 二者之间存在重叠。 理想状况下,应该使用两种方法:一种方法可用于查找类似性,另外一种方法可用于查找不类似性。

相关文章
相关标签/搜索