生成模型和判别模型学习

生成模型和判别模型

在机器学习中,一般将学习方式分为监督式学习非监督式学习方式。

  • 回忆一下,监督学习的任务就是从数据中学习一个模型,应用这一模型,对给定的输入X预测相应的输出Y。这个模型的一般形式为:决策函数Y=f(X)或者条件概率分布P(Y|X)。

监督学习又分为两类模型:判别模型生成模型

  • 简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。
    在这里插入图片描述

先从一个例子直观理解:


任务:识别一个语音属于哪种语言。现在一个人和你说了一句话,你需要识别出他说的到底是汉语、英语还是法语等。

用生成模型的方法是学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他的语言对应什么语言;
用判别模型的方法是不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。


所以生成模型实际上带的信息要比判别模型丰富,研究单类问题比判别模型灵活性强,模型可以通过增量学习得到,能用于数据不完整(missing data)情况。

又一个通俗易懂的解释:

判别式模型就是给出一个判断,比如是哪个类别,是多少值。也就是说,判别式模型给出的是一个值。为什么需要生成式模型?因为有时候不想要一个值,我们想学习一个分布(Distribution),这个时候就需要生成式模型。总之,生成式模型就是学习到一个分布。

如何表示一个分布?可以用概率密度函数来表示。所以当然可以设计一个模型去学习一个概率密度函数。有了概率密度函数之后,如何从概率密度函数中采样得到一个样本又是另一个难题。所以,为什么不直接学习一个模型,这个模型隐式地学习到一个分布,我们可以直接从这个模型中输出采样样本,且这些输出的样本就是从我们需要的分布中采样出来的呢?GAN就是按这样的思路来设计的模型。一个GAN模型就代表了一个分布。那么如何从分布中采样?需要告诉GAN在分布的哪个位置采样,这就是输入GAN的z。从一个简单的分布中采样得到z,把z输入GAN,GAN根据z的值有样学样的在自己的分布中采样得到输出。z是GAN去做采样的锚点,如果没有z,GAN就不知道在这个分布中要采哪个位置。生成z的分布可以随便取,最简单的就是取高斯分布。实际上,取其他任何分布都是可以的。

基础概念

贝叶斯定理

贝叶斯定理是英国数学家贝叶斯提出来的。用来描述两个条件概率之间的关系。若记P(A)、P(B)分别表示事件A和事件B发生的概率,则:
P(A|B):表示事件B发生的情况下,事件A发生的概率
P(AB) :表示事件A和事件B同时发生的概率

有如下法则:
在这里插入图片描述

则可推导出:
在这里插入图片描述
或写为:
在这里插入图片描述
上式中:P(A)称为‘先验概率’,即在事件B发生之前 我们对事件A发生的概率做一个判断。
P(A|B) 称为‘后验概率’,即在事件B发生后,我们对事件A的概率重新做评估
P(B|A)/ P(B) 称为‘可能性函数’,这是一个调整因子,使得预估概率更接近真实概率。

监督学习

对于有监督学习,有两种定义。

1. 求决策函数Y=f(X):(针对分类问题)
输入一个X(可以是原始数据如图像,声音,也可以是提取出来的特征向量),它就输出一个类别即标签值Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。例如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。

2. 求条件概率分布P(Y|X):
输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个Y作为该X对应的类别。例如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。

生成模型和判别模型,都可以实现对给定的输入X 预测相应的输出Y的功能。

判别模型

由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。

判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。
判别模型是寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

典型的判别模型:

  1. 感知机
  2. 决策树
  3. 逻辑回归logic regression
  4. K近邻 KNN
  5. 最大熵模型
  6. 支持向量机SVM
  7. 提升方法Boosting
  8. 神经网络NN
  9. 高斯过程Gaussian process
  10. 条件随机场CRF
  11. CART(Classification and regression tree)

生成模型

估计的是联合概率分布(joint probability distribution),p(y, x)=p(y|x)*p(x),由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类。

生成方法关心的是给定输入x产生输出y的生成关系。

已知输入变量x和目标变量y,先对它们的联合概率分布p(x, y)建模,然后计算样本属于每一个类的条件概率p(y|x)即类后验概率,按照这个值来完成分类,如将样本分到概率p(y|x)最大的那个类。根据概率论的知识,有:
在这里插入图片描述
求条件概率分布P(Y|X),就得先求出P(X, Y),和P(X)。

  • P(X)就是你的训练数据的概率分布(需要训练数据样本非常多的时候,你得到的P(X)才能很好的描述你数据真正的分布)。
  • 那P(X, Y)呢?

联合概率密度函数等于类概率p(y)与类条件概率p(x|y)即先验概率的乘积,即:
在这里插入图片描述
将上面两个公式合并起来,有:
在这里插入图片描述
这就是贝叶斯公式。它完成了因果转换,我们要完成的是由果推断因,而在训练时我们建立的是因到果的模型p(x|y)。如果我们假设特征向量x的每个分量相互独立,则可以得到朴素贝叶斯分类器,如果假设每个类的样本服从正态分布,则p(x|y)为正态分布,此时为正态贝叶斯分类器。
如果只用于分类而不需要给出具体的概率值,则分母p(x)对所有类型y都是一样的,只需要计算分子p(x|y)p(y)。

什么是生成模型?
目前深度学习中最常见的三种生成模型:VAE、GAN、FLOW
一个简单的随机分布(如:高斯分布),经过一系列复杂变换(生成器G)之后,得到一个复杂的分布。
从简单分布中随机采样一个z,经过G后生成一个复杂样本Y,这个过程就叫作生成。
在这里插入图片描述

典型的生成模型:

  1. 判别式分析
  2. 朴素贝叶斯Native Bayes
  3. 混合高斯型Gaussians
  4. 隐马尔科夫模型HMM
  5. 贝叶斯网络
  6. sigmoid belief networks
  7. 马尔科夫随机场Markov random fields
  8. 深度信念网络DBN
  9. 隐含狄利克雷分布简称LDA(Latent Dirichlet allocation)
  10. 多专家模型(the mixture of experts model)
  11. 变分自编码器
  12. 生成对抗网络

优缺点对比

生成方法

优点:

1、可以还原联合分布率(判别式模型不可以)
2、学习的收敛速度更快,即:当样本容量增加的时候,学到的模型可以更快地收敛于真实模型
3、可以应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

缺点:

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

判别方法
优点:

  • 节约了计算资源,相比较于生成模型而言
  • 直接学习条件概率或者决策函数,学习效率更高
  • 直接学习可以对数据进行各种程度上的的抽象、定义特征并使用特征,因此可以简化学习问题

缺点:

  • 不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来。
  • Lack elegance of generative: Priors, 结构, 不确定性
    Alternative notions of penalty functions, regularization, 核函数
  • 黑盒操作: 变量间的关系不清楚,不可视

两者的联系和区别

1、由生成模型可以得到判别模型,但由判别模型得不到生成模型。
2、当存在隐变量(当我们找不到引起某一现象的原因的时候,我们就把这个在起作用,但是,无法确定的因素,叫“隐变量”) 时,仍可以利用生成方法学习,此时判别方法不能用。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值