这个也就是后面很火的,GAN(生成式对抗网络)中生成模型G与判别模型D之间的互相对抗了。
参考博客 判别模型和生成模型和Jerrylead,讲解的很清楚
本文思路:
1、 什么是判别模型
2、 什么是生成模型(jerrylead上对于GDA(生成式模型的一个应用))解释的可以)
3、判别模型与生成模型之间的关系 ,有谁能推导出谁,谁 用的更广泛一些,二者的优缺点在哪
一、判别模型--Discriminative
1.1、判别模型的思想:
对条件概率p(y|x)建模,基本思想是在有限样本条件下,建立判别函数,直接研究预测模型。
比如说,要确定一只羊是 山羊还是绵羊,判别模型的思想就是,从样本数据中学习到一个模型,这个模型可以根据这只羊的特征,直接预测出,这只羊是山羊还是绵羊的概率。比如,山羊的概率=p(山羊|胡子长度,角的大小等特征),绵羊的概率=p(绵羊|胡子长度,角的大小等特征)。或用1减去山羊概率。
1.2、判别模型的特点
又称为条件模型,或条件概率模型,估计的是 条件概率分布。
- 主要特点:
寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。 - 优点:
分类边界更灵活,比使用纯概率方法或生产模型得到的更高级
适用于较多类别的识别
判别模型的性能比生成模型要简单,比较容易学习 - 缺点:
不能反映训练数据本身的特性(模型只有一个,就只为了判别,不想生成式模型,每个模型代表了一类数据的具体有什么特征)。能力有限。
黑盒操作: 变量间的关系不清楚,不可视
1.3 常见的应用以及应用场景
- 常见的主要有:
逻辑回归,SVM,传统神经网络,最近邻等 - 主要应用:
图像、文本分类
多边界分析等
如何学习生成模型
-
前提
先明确,生成模型要求的是联合概率,是后验概率(已知y(类别)条件下x(特征向量)的分布)与先验概率的乘积
-
假设
明确此模型假设是什么:GDA的是已知y的条件下,特征向量符合多元高斯分布,NB的是已知y的条件下特征向量服从条件独立。
-
建模
1、‘’假设‘’已经知道==>得到两个后验概率的模型
2、‘’y‘’概率可以求出 ==>得到y先验概率的模型
3、找参数,参数就是上面三个模型中控制概率的参数(例如特征均值μ,方差 Σ等)
4、目标就是求这些参数
-
定义目标函数
1、一般都是,将极大似然函数定义为目标函数
2、等式右边是联合概率相乘,而每个联合概率又是后验概率与先验概率的乘积,后验概率受若干参数控制,先验概率受若干参数控制
3、目标就是求这些参数
-
利用最优化方法求解
求导,SGD等,求得参数的表达式
-
参数已知
各参数已知,可以利用第一步建立的模型进行预测了。把样例xi带入y=0的模型,带入y=1的模型,又p(y)已知,于是可以得到两个联合概率,那个大就是哪个
二、生成模型--Generative Model
2.1 生成模型的概念
又叫产生式模型,直接对数据进行建模。
比如说,要确定一只羊是山羊还是绵羊,可以根据已有的数据,山羊的特征,学习出一个山羊模型(模型里的各项数据就是山羊具有的特征),再根据绵羊的特征,学习出一个绵羊的模型。
然后提取这只羊的特征,放到山羊模型(这一步需要乘以p(山羊的概率)即p(y)),再看看此时概率是多少(这一步需要求得p(这只羊的特征| 山羊模型)即p(x|y))。
比如,提取这只羊的特征放到山羊模型中最终 概率为
p(这只羊的特征 | 山羊)*p(山羊的概率)
由上面可以看出,利用生成模型求得参数使p(x|y)p(y)最大,等价于利用判别模型求得参数使p(y|x)最大,这是两个模型的统一性之处。
而由
因此有时称判别模型求的是条件概率,生成模型求的是联合概率(忽略了p(x))。
2.2 生成模型的应用 —— 高斯判别分析(GDA)
具体的见jerrylead博客中第二小节高斯判别分析,讲的比较清楚易懂。
注意,不能因为公式多,或者资料上没讲,就乱了
步骤跟线性回归一样的,也是
- 1、先建模,想要预测的结果用参数表示
- 2、 再定义出目标函数
- 3、利用最优化方法求得参数
高斯判别模型的假设:特征向量,符合多值正态分布(即胡子长度符合正态分布,羊角大小符合正态分布,另外的特征也都符合正态分布)
2.2.1 建模
生成模型,需要知道每一类的后验概率,对此进行建模(x|y=0,x|y=1),还要知道先验概率y的分布。所以这个山羊问题共有三个公式。
所以高斯判别分析模型如下:
- 先验概率y服从伯努利分布(是山羊,不是山羊),此分布,由参数φ决定
- 不是山羊的条件下(y=0)样例x符合特征的概率 服从 多值正态分布,此分布由 特征均值μ0,方差Σ 决定
- 是山羊的条件下(y=1)样例x符合特征的概率 服从 多值正态分布,此分布由 特征均值μ1,方差Σ 决定
把上面模型转换成对应的概率密度函数,即为
上面就是此问题需要的模型,此模型预测结果需要由参数μ0,μ1,Σ,以及φ决定。
所以下一步,应该定义目标函数,然后用最优化方法得到问题的解。
2.2.2 定义目标函数
想要学习到参数使得预测的准确率最高,想到用最大似然估计法,于是可以得到目标函数
再根据上面的求‘’利用生成模型求得参数使p(x|y)p(y)最大‘’也就是求得参数使联合分布最大,于是得到最大似然估计:
有两个不同的特征均值,但假设协方差相同,反映在图上就是不同模型中心位置不同,但形状相同。这样就可以用直线来进行分隔判别。
2.2.3 利用优化方法求得参数值
目标函数对各个参数求偏导为零即可得到参数估计。
这里稍微推导一下φ:
剩下两个参数 类似。并且,参数的实际意义是 可以根据表达式理解出来的。也就是最接近似然函数的情况下,参数的理想状况。
比如,这里的φ代表类别是1的概率,就等于 样本中y=1对的个数除以样本总数m。
2.3生成模型的优缺点
主要特点:
一般主要是对后验概率建模优点:
实际上带的信息要比判别模型丰富,
研究单类问题比判别模型灵活性强
数据量少也可以使用缺点:
学习和计算过程比较复杂常见的主要有:
Gaussians
Naive Bayes
Markov random fields主要应用:
NLP等
三、生成模型与判别模型的关系与主要对比
3.1
生成模型能推出判别模型,反之,则不行。
原因:
----因为生成模型有着更强的假设条件和约束。
比如,生成模型的数据特征要符合多值正态分布,也可由贝叶斯公式推到判别模型去。
但是,判别模型中,特征不符合多值正态分布,那么就不能应用生成模型来做。
3.2 举例说明:GDA 与 logistic 回归
3.2.1
如果认定训练数据满足多值正态分布(多元高斯分布),比如山羊的胡子长度,角的大小,毛的长短。。。那么GDA能够在训练集上是最好的模型,此时GDA比LR要好,而且所需要的训练集不需要太大,因为能比较快的抓住标签y的特征。
3.2.2
然而,我们往往事先并不知道 训练数据满足什么样的分布,比如房价对应的特征向量----地点,卧室个数,邻居素质等。
不能对X做很强的假设,此时,我们知道逻辑回归的条件假设要弱于GDA,所以我们会采用逻辑回归方法。(这也是一般情况下,更多的采用判别模型的原因),但是相比之下,可能会需要比GDA要大的训练集。