请帮助我理解生成算法和判别算法之间的区别 ,记住我只是一个初学者。 算法
在实践中,模型使用以下。 网络
在判别模型中 ,要从训练示例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
生成算法模拟数据的生成方式,以便对信号进行分类。 它提出了一个问题:基于个人一代假设,哪一个类别最有可能产生这个信号? 神经网络
判别算法不关心数据是如何生成的,它只是对给定信号进行分类。 bug
一个额外的信息点,与上面的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:部分答案来自消息来源
这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性和生成性学习算法之间的区别 。
假设咱们有两类动物,大象( y = 1
)和狗( y = 0
)。 而x是动物的特征向量。
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开。 而后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测。 咱们称这些判别性学习算法 。
这是一种不一样的方法。 首先,看大象,咱们能够创建一个大象的模型。 而后,看着狗,咱们能够创建一个单独的模型,看看狗的样子。 最后,为了对新动物进行分类,咱们能够将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像咱们在训练组中看到的狗。 咱们称这些生成学习算法 。
个人两分钱:歧视性方法强调差别生成方法不关注差别; 他们试图创建一个表明班级的模型。 二者之间存在重叠。 理想状况下,应该使用两种方法:一种方法可用于查找类似性,另外一种方法可用于查找不类似性。