判别模型与生成模型

简介

在看VAE,属于生成模型,复习一下。

综合转载以下文章:

设置

定义训练数据为 $(C,X),C=\{c_1,c_2,…,c_n\}$ 是 $n$ 个训练样本的label,$X={x_1,x_2,…,x_n}$ 是 $n$ 个训练样本的feature。定义单个测试数据为 $(\tilde c,\tilde x)$,$\tilde c$ 为测试数据的lable,$\tilde x$是测试样本的feature。

判定模型

训练完毕后,输入测试数据,判别模型直接给出的是 $P(\tilde{c}|\tilde{x})​$,即输出(label)关于输入(feature)的条件分布,实际上,这个分布的条件还有训练数据。因为实际上我们是“看过”训练数据之后,学习到了对数据分布的后验认识,然后根据这个认识和测试样本的feature来做出测试样本属于哪个label的决策的,所以有 $P(\tilde{c}|\tilde{x})=P(\tilde{c}|\tilde{x},C,X)​$。

我们认为这个条件分布 $P(\tilde{c}|\tilde{x},C,X)$ 由参数 $\theta$ 决定的,即 $P(\tilde{c}|\tilde{x},\theta) \tag 1$。

那么如何$P(\tilde{c}|\tilde{x},\theta)$得到 $P(\tilde{c}|\tilde{x})$ 呢?如果我们可以求出参数 $\theta$ 关于训练数据的的后验分布(这其实就是学习过程)$P(\theta|C,X)$,那么就可以由

所以现在问题转化成了求条件分布的参数 $\theta$ 关于训练数据 $(C,X)$ 的后验分布 $P(\theta|C,X)$。那么我们来看看怎么求这个后验分布。而条件分布关于训练数据的似然函数为

用贝叶斯公式转化,即

所以现在问题又进行了转化,变成了求条件分布关于训练数据的似然函数、参数 $\theta$ 的先验分布和 $C$ 关于 $X$ 的条件分布三个小问题。我们已经知道似然函数怎么求,先验分布也不需要求(先验知识,就是我们在解决问题之前已经知道的知识),而

至此问题已经解决,综合上述(1)~(5)式,可以求出输出关于输入的条件分布

(6)式的两个积分的计算很麻烦,需要省略掉。

  1. 第一个积分可以使用variational inference(变分推理)替换掉,简单地说,如果训练样本足够多的话,可以使用 $\theta$ 的最大后验分布 $\theta_{map}$ 来对 $\theta$进行​点估计(point estimate)。即有:

​ 把问题简化成了求 $\theta$ 的最大后验概率 $P(\theta|C,X)$。

  1. 观察(4)式可以发现分母 $P(C|X)$ 是常数,如果我们省略掉它是没有影响的(只需要对分子进行归一化就可以得到后验概率 $P(\theta|C,X)$ ),即省略掉了第二个积分公式,将问题简化成了求 $P(C|X,\theta)·P(\theta)$ 的最大值。如果先验分布在似然函数较大的区间是固定不变或变化较小的,那么问题又可以转化成求最大似然函数。

生成模型

现在考虑生成模型。给定输入 $\tilde{x}$,生成模型可以给出输入和输出的联合分布 $P(\tilde{x},\tilde{c})$,所以生成方法的目标是求出这个联合分布。

优缺点

生成模型

优点

  1. 生成给出的是联合分布 $P(\tilde{x},\tilde{c})$,不仅能够由联合分布计算条件分布 $P(\tilde{c}|\tilde{x})$(反之则不行),还可以给出其他信息,比如可以使用 $P(\tilde x)=\sum_{i=1}^kP(\tilde x|\tilde c_i) \ast P(\tilde c_i)$ 来计算边缘分布 $P(\tilde{x})$。如果一个输入样本的边缘分布 $P(\tilde{x})$ 很小的话,那么可以认为学习出的这个模型可能不太适合对这个样本进行分类,分类效果可能会不好,这也是所谓的outlier detection。
  2. 生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
  3. 生成模型能够应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

缺点

  1. 天下没有免费午餐,联合分布是能提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。
  2. 另外,实践中多数情况下判别模型效果更好。

判别模型

优点

  1. 与生成模型缺点对应,首先是节省计算资源,另外,需要的样本数量也少于生成模型。
  2. 准确率往往较生成模型高。
  3. 由于直接学习 $P(\tilde{c}|\tilde{x})$,而不需要求解类别条件概率,所以允许我们对输入进行抽象(比如降维、构造等),从而能够简化学习问题。

缺点

是没有生成模型的上述优点。

总结

自己认为,区分生成模型和判别模型的关键是有没有利用数据的先验分布。

一分一毛,也是心意。