主要来源:[白话解析] 深入浅出最大熵模型
生成模型(Generative Model, GM):先对联合概率 P ( x , ω ) P(x, ω) P(x,ω)建模,然后再求取后验概率模型。
判别模型(Discriminative Model, DM):从数据集D中直接估计后验概率模型:
P ( ω 1 ∣ x ) , P ( ω 2 ∣ x ) , . . . , P ( ω N ∣ x ) P(ω_1 | x),P(ω_2 | x),...,P(ω_N | x) P(ω1∣x),P(ω2∣x),...,P(ωN∣x)
判别模型的经典算法:逻辑回归,SVM,CRF
生成模型的经典算法:HMM,朴素贝叶斯
生成模型的特点:生成式模型关注结果是如何产生的。但是生成式模型需要非常充足的数据量以保证采样到了数据本来的面目,所以速度相比会慢。
判别模型的特点:对数据量要求没生成式的严格,速度也会快,小数据量下准确率也会好些。
生成模型:在弄清楚是什么之前,先弄清楚为什么。
判别模型:不太在乎为什么,只管是什么。
判别模型的方法是:
从大量猫狗数据中学习到猫的叫声和狗的叫声不一样,对新的样本,我看看他的叫声更像谁,就认为他是谁。
生成模型的方法是:
从训练集中学到了猫的特征(比如叫声,毛色,毛长,大小,脸型等等),然后也学到了狗的这些特征。
最后对新样本,提取出这些特征后,拿去和猫的比较,得到一个概率,再去和狗的比较,得到一个概率,最后谁大就认为是誰。
判别模型的方法是:
先从历史数据中学习到一个统一的模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。我只要学会绵羊和山羊某个特殊差别就好。
比如山羊更擅长攀岩,按照岩壁坡度进行判别,能在45度以上山坡行走的就是山羊,以下是绵羊。
而眼前这个羊走85度山坡如履平地,所以它是山羊。
生成模型的方法:
根据山羊的特征首先学习出一个山羊模型(躯体瘦,角三菱型,呈镰刀状弯曲,一般毛粗而短,毛色多为白色,也有黑色、青色、褐色或杂色的,尾巴往上翘,胆子大,采食灌木嫩枝条)。
根据绵羊的特征学习出一个绵羊模型(躯体丰满,头短,公羊有螺旋状大角,母羊无角或只有细而小的角。毛细蜜、多为白色。 绵羊的嘴唇薄而灵活,适于啃食很短的牧草,性情温顺,胆小,主要吃草)。
然后从这只羊中提取各种特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。
在这个问题中,第一个判别模型方法中你只记住了山羊和绵羊之间的不同之处。第二个生成模型的思路中,你实际上学习了什么是绵羊,什么是山羊。
例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:
生成模型的方法:
学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他说的是什么语音。这就是GM。
判别模型的方法:
不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。这就是DM。
生成模型:
一般是学习一个代表目标的模型,然后通过它去搜索图像区域,然后最小化重构误差。类似于生成模型描述一个目标,然后就是模式匹配了,在图像中找到和这个模型最匹配的区域,就是目标了。
判别模型:
将跟踪问题看成一个二分类问题,然后找到目标和背景的决策边界。它不管目标是怎么描述的,那只要知道目标和背景的差别在哪,然后你给一个图像,它看它处于边界的那一边,就归为哪一类。
一般来说,生成式模型需要非常充足的数据量以保证采样到了数据本来的面目。判别模型对数据量要求没生成式的严格。但是也要具体情况具体分析。
比如根据贝叶斯公式,我们知道 P ( X , Y ) = P ( X ∣ Y ) P ( Y ) = P ( Y ∣ X ) P ( X ) P(X,Y)=P(X|Y)P(Y)=P(Y|X)P(X) P(X,Y)=P(X∣Y)P(Y)=P(Y∣X)P(X), 所以生成模型也可以表示成: P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) / P ( X ) P(Y|X)=P(X|Y)P(Y)/P(X) P(Y∣X)=P(X∣Y)P(Y)/P(X)。
而我们现在用 P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) / P ( X ) P(Y|X)=P(X|Y)P(Y)/P(X) P(Y∣X)=P(X∣Y)P(Y)/P(X)这个公式,首先求解的是 P ( X ∣ Y ) P(X|Y) P(X∣Y),所以有些地方也说对 P ( X ∣ Y ) P(X|Y) P(X∣Y)建模为GM(当然也要求 P ( Y ) P(Y) P(Y)和 P ( X ) P(X) P(X)),对 P ( Y ∣ X ) P(Y|X) P(Y∣X)直接建模为DM;意思其实是一样的,因为GM中先对 P ( X ∣ Y ) P(X|Y) P(X∣Y)建模后,可以求出联合分布 P ( X , Y ) = P ( X ∣ Y ) P ( Y ) P(X,Y)=P(X|Y)P(Y) P(X,Y)=P(X∣Y)P(Y),仍可以说是求联合分布为GM。
例如:X=吸烟的人,Y=得肺癌的几率,对 P ( Y ∣ X ) P(Y|X) P(Y∣X)建模可能非常复杂。而对 P ( X ∣ Y ) P(X|Y) P(X∣Y)建模就比较容易,因为对 P ( X ∣ Y ) P(X|Y) P(X∣Y)建模就好像在得肺癌的人里面看吸烟人的情况。我们都知道吸烟的人数亿计,但得肺癌的人毕竟是少数,建模从得肺癌的人出发,更加容易,比如10万个得肺癌的,抽样1000个就差不多了。