请帮助我理解 generative 和 discriminative 算法之间的区别,记住我只是一个初学者 .
我的两分钱:歧视性方法强调差异生成方法不关注差异;他们试图 Build 一个代表阶级的模型 . 两者之间存在重叠 . 理想情况下,应该使用两种方法:一种方法可用于查找相似性,另一种方法可用于查找不相似性 .
想象一下,您的任务是将语音分类为语言 .
您可以通过以下任一方式完成:
要么
第一个是 generative 方法,第二个是 discriminative 方法 .
有关详细信息,请查看此参考:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .
一般来说,机器学习社区有一种做法,就是不要学习你不想要的东西 . 例如,考虑一个分类问题,其中一个目标是将y标签分配给给定的x输入 . 如果我们使用生成模型
p(x,y)=p(y|x).p(x)
我们必须建模p(x),这与手头的任务无关 . 像数据稀疏性这样的实际限制将迫使我们用一些弱独立性假设来模拟 p(x) . 因此,我们直观地使用判别模型进行分类 .
p(x)
在实践中,模型使用如下 .
在 discriminative models 中,要从训练示例 x 预测标签 y ,您必须评估:
x
y
考虑到 x ,它只选择最有可能的类 y . 这就像我们试图 model the decision boundary between the classes . 这种行为在神经网络中非常明显,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素 .
现在,使用Bayes ' rule, let'将等式中的替换为. 由于您只对arg max感兴趣,因此您可以消除分母,这对于每个 y 都是相同的 . 那么,你就离开了
这是你在 generative models 中使用的等式 .
而在第一种情况下你有条件概率分布 p(y|x) ,其建模类之间的边界,在第二你有联合概率分布p(X,Y)中,由于P(X,Y)= P(X | Y) p(y),其中 explicitly models the actual distribution of each class .
p(y|x)
使用联合概率分布函数,给定 y ,可以计算("generate")其各自的 x . 因此,它们被称为"generative"模型 .
生成算法模型将完全从训练数据中学习并预测响应 .
判别算法工作只是对2个结果进行分类或区分 .
假设您有输入数据 x ,并且您希望将数据分类为标签 y . 生成模型学习的 joint 概率分布 p(x,y) 和判别模型学习的 conditional 概率分布 p(y|x) - 你应该读作“给出的 y 概率 x ” .
p(x,y)
这是一个非常简单的例子 . 假设您有 (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(x,y) 也可用于其他目的 . 例如,您可以使用 p(x,y) 生成可能的 (x,y) 对 .
从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单 . This paper是关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要 . 总体要点是判别模型通常在分类任务中优于生成模型 .
generative algorithm 模拟了如何生成数据以对信号进行分类 . 它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
discriminative algorithm 不关心数据是如何生成的,它只是对给定信号进行分类 .
下面是CS299的lecture notes(由安德鲁·吴)相关的话题,这真让我了解和 generative 学习算法的区别 discriminative 最重要的部分 .
假设我们有两类动物,大象( y = 1 )和狗( y = 0 ) . 并且 x 是动物的特征向量 .
y = 1
y = 0
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开 . 然后,分类一个新的作为大象或狗的动物,它检查决定边界的哪一侧,并相应地进行预测 . 我们称之为 discriminative learning algorithm .
这是一种不同的方法 . 首先,看大象,我们可以 Build 一个大象看起来像什么的模型 . 然后,看着狗,我们可以 Build 一个单独的模型,看看狗的样子 . 最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练集中看到的狗 . 我们称之为 generative learning algorithm .
不同的模型总结在下表中:
一个额外的信息点,与上面的StompChicken的答案很好 .
discriminative models 和 generative models 之间的 fundamental difference 是:
判别模型学习类之间的(硬或软)边界生成模型模拟各个类的分布
编辑:
生成模型是 that can generate data . 它模拟了特征和类(即完整数据) .
如果我们建模 P(x,y) :我可以使用这个概率分布来生成数据点 - 因此所有算法建模 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(c) * P(d|c)
因此,Naive Bayes在某些形式的模型中, P(c,d)
P(c,d)
贝叶斯网
马尔科夫网队
判别模型是只能用于 discriminate/classify the data points 的模型 . 在这种情况下,您只需要建模 P(y|x) (即给定特征向量的类概率) .
P(y|x)
例如 . 判别模型:
逻辑回归
神经网络
条件随机字段
一般而言,生成模型需要比判别模型更多地建模,因此有时不那么有效 . 事实上,大多数(不确定是否所有)无监督学习算法如聚类等都可以称为生成,因为它们模型为 P(d) (并且没有类:P)
P(d)
PS:部分答案取自source
10 回答
我的两分钱:歧视性方法强调差异生成方法不关注差异;他们试图 Build 一个代表阶级的模型 . 两者之间存在重叠 . 理想情况下,应该使用两种方法:一种方法可用于查找相似性,另一种方法可用于查找不相似性 .
想象一下,您的任务是将语音分类为语言 .
您可以通过以下任一方式完成:
要么
第一个是 generative 方法,第二个是 discriminative 方法 .
有关详细信息,请查看此参考:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .
一般来说,机器学习社区有一种做法,就是不要学习你不想要的东西 . 例如,考虑一个分类问题,其中一个目标是将y标签分配给给定的x输入 . 如果我们使用生成模型
我们必须建模p(x),这与手头的任务无关 . 像数据稀疏性这样的实际限制将迫使我们用一些弱独立性假设来模拟
p(x)
. 因此,我们直观地使用判别模型进行分类 .在实践中,模型使用如下 .
在 discriminative models 中,要从训练示例
x
预测标签y
,您必须评估:考虑到
x
,它只选择最有可能的类y
. 这就像我们试图 model the decision boundary between the classes . 这种行为在神经网络中非常明显,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素 .现在,使用Bayes ' rule, let'将等式中的
替换为
. 由于您只对arg max感兴趣,因此您可以消除分母,这对于每个
y
都是相同的 . 那么,你就离开了这是你在 generative models 中使用的等式 .
而在第一种情况下你有条件概率分布
p(y|x)
,其建模类之间的边界,在第二你有联合概率分布p(X,Y)中,由于P(X,Y)= P(X | Y) p(y),其中 explicitly models the actual distribution of each class .使用联合概率分布函数,给定
y
,可以计算("generate")其各自的x
. 因此,它们被称为"generative"模型 .生成算法模型将完全从训练数据中学习并预测响应 .
判别算法工作只是对2个结果进行分类或区分 .
假设您有输入数据
x
,并且您希望将数据分类为标签y
. 生成模型学习的 joint 概率分布p(x,y)
和判别模型学习的 conditional 概率分布p(y|x)
- 你应该读作“给出的y
概率x
” .这是一个非常简单的例子 . 假设您有
(x,y)
形式的以下数据:(1,0), (1,0), (2,0), (2, 1)
p(x,y)
是p(y|x)
是如果您花几分钟时间盯着这两个矩阵,您将理解两个概率分布之间的差异 .
分布
p(y|x)
是用于将给定示例x
分类为类y
的自然分布,这就是为什么直接对其进行建模的算法称为判别算法 . 生成算法模型p(x,y)
,可以通过应用贝叶斯规则转换为p(y|x)
,然后用于分类 . 但是,分发p(x,y)
也可用于其他目的 . 例如,您可以使用p(x,y)
生成可能的(x,y)
对 .从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单 . This paper是关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要 . 总体要点是判别模型通常在分类任务中优于生成模型 .
generative algorithm 模拟了如何生成数据以对信号进行分类 . 它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
discriminative algorithm 不关心数据是如何生成的,它只是对给定信号进行分类 .
下面是CS299的lecture notes(由安德鲁·吴)相关的话题,这真让我了解和 generative 学习算法的区别 discriminative 最重要的部分 .
假设我们有两类动物,大象(
y = 1
)和狗(y = 0
) . 并且 x 是动物的特征向量 .给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开 . 然后,分类一个新的作为大象或狗的动物,它检查决定边界的哪一侧,并相应地进行预测 . 我们称之为 discriminative learning algorithm .
这是一种不同的方法 . 首先,看大象,我们可以 Build 一个大象看起来像什么的模型 . 然后,看着狗,我们可以 Build 一个单独的模型,看看狗的样子 . 最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练集中看到的狗 . 我们称之为 generative learning algorithm .
不同的模型总结在下表中:
一个额外的信息点,与上面的StompChicken的答案很好 .
discriminative models 和 generative models 之间的 fundamental difference 是:
编辑:
生成模型是 that can generate data . 它模拟了特征和类(即完整数据) .
如果我们建模
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)
贝叶斯网
马尔科夫网队
判别模型是只能用于 discriminate/classify the data points 的模型 . 在这种情况下,您只需要建模
P(y|x)
(即给定特征向量的类概率) .例如 . 判别模型:
逻辑回归
神经网络
条件随机字段
一般而言,生成模型需要比判别模型更多地建模,因此有时不那么有效 . 事实上,大多数(不确定是否所有)无监督学习算法如聚类等都可以称为生成,因为它们模型为
P(d)
(并且没有类:P)PS:部分答案取自source