先验和后验的区别
先验概率是在缺乏某个事实的情况下描述一个变量; 而后验概率是在考虑了一个事实之后的条件概率. 先验概率通常是经验丰富的专家的纯主观的估计.
判别模型
不妨重新考虑一下LR的过程来理解,因为这就是一个判别模型,我总是在用这个例子。
我们有一堆样本点
(x1,y1),(x2,y2),...,(xn,yn)
,
希望通过训练,用一个
hθ(x)
来拟合
y
的值。
我们拥有的样本点
模型的构建就基于最大似然所有样本被正确预测的联合分布率:
求解过程就不说了,得到的 θ 就是预测函数 hθ(x) 的参数。
所以总结来看,我们是已知了对怎样的
x
去建模,并且是对这样一个条件概率
生成模型
换一种思路,如果不采用如上的做法,比如,我不知道怎么提特征,
我们取到所有 y=0 的样本,同时取到 y=1 的所有样本, 想看一下他们的样本分布有何不同,然后如果来一个新的样本点,我们看它更拟合哪种分布。(这一点如果不太理解,可以去看看讲义里elephant和dog的例子)
所以我们是对
p(x|y=0),p(x|y=1)
建模,(暂时先不管参数),也就是对
p(x|y)
建模,但是,我们的目的仍然是依据
x
的一些信息来预测他属于哪个类别,也就是说,还是想求得
我们就还需要对 p(y) 建模,
所以生成模型是对 p(x|y),p(y) 建模。
然后训练的时候,仍然是最大似然样本的联合分布率:
所以这里可以看出一个比较:
- 生成模型考虑 joint likelihood
- 判别模型考虑 conditional likelihood
在这里怎么理解先验概率和后验概率?
这里的先验概率就是
p(y)
;
而后验概率就是
p(y|x)
;
也就是说,我们的模型训练过程是在最大化样本的后验概率。而在这里,我们是通过最大化联合概率
p(x|y)p(y)
来达到这一目的。
我尤其喜欢最后的一个例子
我随手画了一个,假设我们构建了
p(x|y=0)
和
p(x|y=1)
的分布函数,如上图的两个高斯分布(以高斯分布为例子),那么我们再去根据贝叶斯公式计算
p(y|x)
的时候,就会得到一个类似sigmoid的函数,很神奇~
总结
简单来说,判别模型就是对 p(y|x) 建模,而生成模型则是对 p(x|y) 和 p(y) 建模。