专栏名称: SIGAI
全方位覆盖AI经典算法与工业应用,紧跟业界最新趋势,让你始终站在技术最前沿。
目录
相关文章推荐
百姓关注  ·  热搜第一!微信又上新功能 ·  21 小时前  
百姓关注  ·  谷爱凌宣布因伤退出亚冬会比赛 ·  昨天  
贵州日报  ·  大年初七丨贵州日报祝您年年有福 岁岁胜意 ·  2 天前  
百姓关注  ·  药品短缺!日本流感病例超950万人 ·  2 天前  
百姓关注  ·  赵本山重出江湖!第一排票价高达1400美元 ·  3 天前  
51好读  ›  专栏  ›  SIGAI

理解生成模型与判别模型

SIGAI  · 公众号  ·  · 2018-10-10 17:26

正文

广而告之

SIGAI Pick Pearl Python Plan (4P计划)

1000人!100天!¥免费¥课程挑战!!!

《人工智能的Python-基础篇》

+几十个学习源码

等你挑战!

关注微信公众号,回复“4P计划”,即可获得4P计划报名链接。


SIGAI-AI学习交流群的目标是为学习者提供一个AI技术交流与分享的平台。操作指引:关注本微信公众号,回复“芝麻开门”,即可收到入群二维码,扫码即可。

同时在本微信公众号中,回复“SIGAI”+日期,如“SIGAI0515”,即可获取本期文章的全文下载地址(仅供个人学习使用,未经允许,不得用于商业目的)。


导言

我们都知道,对于有监督的机器学习中的分类问题,求解问题的算法可以分为生成模型与判别模型两种类型。但是,究竟什么是生成模型,什么是判别模型?不少书籍和技术文章对这对概念的解释是含糊的。在今天这篇文章中,我们将准确、清晰的解释这一组概念。


 

第一种定义

对于判别模型和生成模型有两种定义,第一种定义针对的是有监督学习的分类问题。该问题的目标是给定一个样本的向量x(可以是原始数据如图像,声音,也可以是提取出来的特征向量),在这里我们将它称为输入变量,目标是预测出这个样本的类别y即标签值,一般是一个离散的标量,即类别编号。因此算法要解决的核心问题是根据训练样本建立下面这样的映射函数:

对于这个问题,有3种求解思路,下面我们分别介绍。

 

第一种做法称为生成模型。已知输入变量x和目标变量y,先对它们的联合概率分布p(x, y)建模,然后计算样本属于每一个类的条件概率p(y|x)即类后验概率,按照这个值来完成分类,如将样本分到概率p(y|x)最大的那个类。根据概率论的知识,有:

在这里,p(x, y)为联合概率密度函数,p(x)为样本输入向量x的边缘密度函数。对上面这种做法的直观解释是:我们已知某一个样本具有某种特征x,现在要确定它输入哪个类,而自然的因果关系是,样本之所以具有这种特征x,是因为它属于某一类。例如,我们要根据体重,脚的尺寸这两个特征x来判断一个人是男性还是女性,我们都知道,男性的体重总体来说比女性大,脚的尺寸也更大,因此从逻辑上来说,是因为一个人是男性,因此才有这种大的体重和脚尺寸。而在分类任务中要做的却相反,是给了你这样个特征的样本,让你反推这人是男性还是女性。


联合概率密度函数等于类概率p(y)与类条件概率p(x|y)即先验概率的乘积,即:

将上面两个公式合并起来,有:

这就是贝叶斯公式。它完成了因果转换,我们要完成的是由果推断因,而在训练时我们建立的是因到果的模型及p(x|y),即男性和女性的体重、脚尺寸分别服从的概率分布。


总结起来,生成模型对联合概率p(x, y)建模,根据它,我们可以得到类后验概率p(y|x)。事实上,这种做法不仅仅局限于分类问题,如果将x看做可以观测的变量,y看做不可观测到的变量,只要具有这种特征的问题,我们都可以建立生成模型。


生成模型的典型代表是贝叶斯分类器,它对类条件概率p(x|y)建模,而p(x|y)p(y)就是联合概率p(x, y)。通过贝叶斯公式,根据联合概率又可以得到类后验概率:

如果只用于分类而不需要给出具体的概率值,则分母p(x)对所有类型y都是一样的,只需要计算分子p(x|y)p(y)。如果我们假设每个类y的样本的特征向量x的每个分量相互独立,则可以得到朴素贝叶斯分类器,如果假设每个类的样本服从正态分布,则p(x|y)为正态分布,此时为正态贝叶斯分类器。


生成模型的另外一个典型代表是受限玻尔兹曼机(RBM),这是一种随机性的神经网络,由两类神经元组成(每一类为一个层),量个层之间有连接关系,第一种神经元为可见变量,即可以直接观测到的值v,如图像的每个像素。第二类为隐含变量h,是不能直接观测到的变量,如图像的特征。v和h的联合概率服从玻尔兹曼分布:

根据这个联合概率,我们可以很容易得到条件概率p(x|y)和p(y|x)。例如为了得到p(y|x),可以先求边缘概率p(x),对于离散型随机变量,对y的概率求和,对于连续型随机变量,则为求积分,然后有:

生成模型最显著的一个特征是假设样本向量x服从何种概率分布,如正态分布,均匀分布。

 

第二种做法称为判别模型。已知输入变量x,它直接对目标变量y的条件概率p(y|x)建模。即计算样本x属于 每一类的概率。注意,这里和生成模型有一个本质的区别,那就是每一假设x服从何种概率分布,而是直接估计出条件概率p(y|x)。


这类模型的典型代表是logistic回归和softmax回归,它们直接对p(y|x)建模,而不对p(x, y)建模,即每一假设x服从何种概率分布。logistic回归用于二分类问题,它直接根据样本x估计出它是正样本的概率:

注意,这里只是直接猜测出了这个概率,而没有假设每个类的样本服从何种概率分布,即没有对p(x|y)或者p(x, y)建模。如果对logistic回归感兴趣,可以阅读SIGAI之前的公众号文章“理解logistic回归”。


softmax回归是logistic回归的多分类版本,它直接估计出一个样本向量x属于k个类中每一个类的概率:

这里预测出的是一个向量,每个分量为样本属于每个类的概率。和logistic回归一样,它是直接预测出了这个条件概率,而没有假设每个类的样本x所服从的概率分布。

 

第三种做法最直接,分类器根本就不建立概率模型,而是直接得到分类结果,这种是非概率模型,也称为判别模型。它直接根据样本向量x预测出类别编号y:

这类模型的典型代表是决策树,支持向量机,随机森林,kNN算法,AdaBoost算法,xgboost,标准的人工神经网络(包括全连接神经网络,卷积神经网络,循环神经网络等)。如果神经网络的最后一层是softmax变换,即softmax回归,则可以归到第二种情况里,如果没有使用,则是这第三种情况。


支持向量机的预测函数是:

它自始至终没有假设样本向量x服从何种分布,也没有估计类后验概率p(y|x)。这可以看成是一种几何划分的思想,把空间划分成多个部分。如果对支持向量机感兴趣,可以阅读SIGAI之前的公众号文章“用一张图理解支持向量机的脉络”。


类似的,决策树的预测函数时分段常数函数,直接实现从向量x到类别标签y的映射,没有计算任何概率值。如果对决策树感兴趣,可以阅读SIGAI之前的公众号文章“理解决策树”。其他的算法如随机森林,kNN,也是如此。


这类模型没有使用概率的观点进行建模,而是用几何或者分析(函数)的手段建模,如找出分类超平面或者曲面,直接得到映射函数。

 

一般来说,我们把使用第一种模型的分类器称为生成式分类器,把使用第二种和第三种模型的分类器称为判别式分类器。

 

第二种定义

除此之外,对生成模型和判别模型还有另外一种定义。生成模型是已知样本的标签值y,对样本的特征向量x的条件概率进行建模,即对条件概率p(x|y)建模,它研究的是每种样本服从何种概率分布。判别模型则刚好相反,已知样本的特征向量x,对样本的标签值y的概率进行建模,即对条件概率p(y|x)建模,这种一般用于分量,即给定样本x,计算它属于每个类的概率。


根据这种定义,生成模型可以用来根据标签值y生成随机的样本数据x。生成对抗网络(GAN)就是典型的例子,它可以生成服从某种概率分布的随机变量,即拟合类条件概率密度函数p(x|y),而此时它的目的不是分类,而是生成样本。事实上,如果我们知道了p(x|y)或者p(x, y),无论是用来做分类,还是用来做数据生成,都是可以的。


而判别模型以及不使用概率模型的判别型分类器则根据样本特征向量x的值判断它的标签值y,即用于判断样本的标签值y。


SIGAI更正声明

在SIGAI1001文章《行人重识别PCB-RPP,SGGNN》中,由于编辑不当出现一处公式的错误,现更正如下:

再次对上期作者Fisher yu以及广大SIGAI小伙伴表示感谢。


▲向上滑动查看更多推荐文章


科普类

【‍获取码】SIGAI0413

  机器学习——波澜壮阔四十年 

【获取码】SIGAI0620

  理解计算:从√2到AlphaGo ——第1季 从√2谈起

【获取码】SIGAI0704

  理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景

【获取码】SIGAI0713

  理解计算:从√2到AlphaGo ——第3季 神经计算的数学模型

【获取码】SIGAI0815

  理解计算:从√2到AlphaGo ——第4季 凛冬将至

【获取码】SIGAI0802

  机器学习和深度学习中值得弄清楚的一些问题  

【获取码】SIGAI0824

  浓缩就是精华--SIGAI机器学习蓝宝书

【获取码】SIGAI0829

  AI时代大点兵——国内外知名AI公司2018年最新盘点【完整版】

   【获取码】SIGAI0905

     机器学习发展历史回顾  

   【获取码】SIGAI1008

     非算法类人工智能从业者须知的十件事

数学类

【获取码】SIGAI0417

  学好机器学习需要哪些数学知识

【获取码】SIGAI0511

  理解梯度下降法

【获取码】SIGAI0518

  理解凸优化

【获取码】SIGAI0531

  理解牛顿法  


机器学习类

【获取码】SIGAI0428

  用一张图理解SVM的脉络

【获取码】SIGAI0505

  理解神经网络的激活函数

【获取码】SIGAI0522

【实验】理解SVM核函数和参数的作用

【获取码】SIGAI0601

【群话题精华】五月集锦—机器学习和深度学习中一些值得思考的问题    

【获取码】SIGAI0602

  大话AdaBoost算法    

【获取码】SIGAI0606

  理解主成分分析(PCA)    

【获取码】SIGAI0611

  理解决策树  

【获取码】SIGAI0613

  用一句话总结常用的机器学习算法

【获取码】SIGAI0618

  理解过拟合

【获取码】SIGAI0627

  k近邻算法

【获取码】SIGAI0704

  机器学习算法地图

【获取码】SIGAI0706

  反向传播算法推导—全连接神经网络

【获取码】SIGAI0711

  如何成为一名优秀的算法工程师

【获取码】SIGAI0723

  流形学习概述

【获取码】SIGAI0725

  随机森林概述

   【获取码】SIGAI0831

     理解Adaboost算法

   【获取码】SIGAI0903

     深入浅出聚类算法

   【获取码】SIGAI0914

     理解logistic回归

   【获取码】SIGAI0917

     机器学习中的目标函数总结

深度学习类

【获取码】SIGAI0426

  卷积神经网络为什么能够称霸计算机视觉领域?

【获取码】SIGAI0508

  深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读 

【获取码】SIGAI0515

  循环神经网络综述—语音识别与自然语言处理的利器

【获取码】SIGAI0625

  卷积神经网络的压缩与加速

【获取码】SIGAI0709

  生成式对抗网络模型综述

【获取码】SIGAI0718

  基于深度负相关学习的人群计数方法

【获取码】SIGAI0723

  关于感受野的总结

【获取码】SIGAI0806

  反向传播算法推导--卷积神经网络

【获取码】SIGAI0810

  理解Spatial Transformer Networks

【获取码】SIGAI0928

  轻量化神经网络综述


机器视觉类

   【获取码】SIGAI0420

      人脸识别算法演化史

   【获取码】SIGAI0424 

      基于深度学习的目标检测算法综述





请到「今天看啥」查看全文