机器学习系列-生成模型和判别模型

文章目录

    • 前言
    • 1.生成模型和判别模型
    • 2.常见的生成模型和判别模型
    • 3.判别式模型和生成式模型的优缺点

前言

监督学习模型可以分为生成模型(generative model)和判别模型(discriminative model)

1.生成模型和判别模型

判别模型由数据直接学习决策函数 f ( x ) f(x) f(x)或者条件概率分布 P ( y ∣ x ) P(y|x) P(yx)作为预测的模型,即判别模型。判别方法关心的是对给定输入 x,应该预测什么样的输出 y。
比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,还是绵羊的概率。

生成模型由数据学习输入和输出联合概率分布 P ( x , y ) P(x,y) P(x,y),然后求出后验概率分布 P ( y ∣ x ) P(y|x) P(yx)作为预测的模型,即生成模型。这里以朴素贝叶斯为例,我们要求的目标可以通过:
P ( x , y ) = P ( x ∣ y ) P ( y ) P(x,y) = P(x|y)P(y) P(x,y)=P(xy)P(y)
求出输入输出的联合概率分布,然后通过贝叶斯公式:
P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) P(y|x) = \frac {P(x|y)P(y)}{P(x)} P(yx)=P(x)P(xy)P(y)
求出后验概率分布。

对于上面的例子我们换种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。
然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。
由于我们关注的是 y 的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此上式改写为:
a r g m a x y P ( y ∣ x ) = a r g m a x y P ( x ∣ y ) P ( y ) P ( x ) = a r g m a x y P ( x ∣ y ) P ( y ) arg max_y P(y|x) = arg max_y \frac {P(x|y)P(y)}{P(x)} = arg max_y P(x|y)P(y) argmaxyP(yx)=argmaxyP(x)P(xy)P(y)=argmaxyP(xy)P(y)
其中 P ( x ∣ y ) P(x|y) P(xy)称为条件概率(class-conditional probability),或称为“似然”(likelihood), P ( y ) P(y) P(y)称为先验(prior)概率。
P ( x ) P(x) P(x)是用于归一化的"证据"因子。对于给定样本 x,证据因子 P ( x ) P(x) P(x) 与类标记无关,因此估计 P ( y ∣ x ) P(y|x) P(yx)的问题就转化为如何基于训练数据来估计先验 P ( y ) P(y) P(y)和似然 P ( x ∣ y ) P(x|y) P(xy)

不管是生成式模型还是判别式模型,它们最终的判断依据都是条件概率,但是生成式模型先计算了联合概率,再由贝叶斯公式计算得到条件概率。因此,生成式模型可以体现更多数据本身的分布信息,其普适性更广。

举个例子:

假设现在有一个分类问题,X是特征,Y是类标记。用判别式模型学习一个条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX),用生成式模型学习一个联合概率分布 P ( x , y ) P(x,y) P(x,y)。用一个简单的例子来说明这个问题。假设X有两个取值(1或2),Y有两类(0或1),有如下训练样本(1,0)、(1,0)、(1,1)、(2,1)。

则学习到的条件概率分布(判别式模型)如下:
P ( y = 0 ∣ x = 1 ) = 2 3 P(y=0|x=1) = \frac{2}{3} P(y=0∣x=1)=32

而学习到的联合概率分布(生成式模型)如下:

  1. 计算特征 X X X的频率分布:
    P ( x = 1 ) = 3 4 P(x=1)=\frac {3}{4} P(x=1)=43
    P ( x = 2 ) = 1 4 P(x=2)=\frac {1}{4} P(x=2)=41
  2. 计算标签 Y Y Y的频率分布:
    P ( y = 0 ) = 2 4 P(y=0)=\frac {2}{4} P(y=0)=42
    P ( y = 1 ) = 2 4 P(y=1)=\frac {2}{4} P(y=1)=42

P ( x = 1 , y = 0 ) = P ( x = 1 ∣ y = 0 ) P ( y = 0 ) = 1 ∗ 1 2 = 1 2 P(x=1,y=0) = {P(x=1|y=0)P(y=0)} = 1 * \frac {1}{2} = \frac {1}{2} P(x=1,y=0)=P(x=1∣y=0)P(y=0)=121=21
P ( x = 2 , y = 0 ) = P ( x = 2 ∣ y = 0 ) P ( y = 0 ) = 0 ∗ 1 2 = 0 P(x=2,y=0) = {P(x=2|y=0)P(y=0)} = 0 * \frac {1}{2} = 0 P(x=2,y=0)=P(x=2∣y=0)P(y=0)=021=0
P ( x = 1 , y = 1 ) = P ( x = 1 ∣ y = 1 ) P ( y = 1 ) = 1 2 ∗ 1 2 = 1 4 P(x=1,y=1) = {P(x=1|y=1)P(y=1)} = \frac {1}{2} * \frac {1}{2} = \frac {1}{4} P(x=1,y=1)=P(x=1∣y=1)P(y=1)=2121=41
P ( x = 2 , y = 1 ) = P ( x = 2 ∣ y = 1 ) P ( y = 1 ) = 1 2 ∗ 1 2 = 1 4 P(x=2,y=1) = {P(x=2|y=1)P(y=1)} = \frac {1}{2} * \frac {1}{2} = \frac {1}{4} P(x=2,y=1)=P(x=2∣y=1)P(y=1)=2121=41

在实际分类问题中,判别式模型可以直接用来判断特征的类别情况;而生成式模型需要加上贝叶斯公式
P ( y = 0 ∣ x = 1 ) = P ( x = 1 , y = 0 ) / P ( x = 1 ) = 1 2 / 3 4 = 2 3 P(y=0|x=1)=P(x=1,y=0)/P(x=1)=\frac {1}{2} / \frac {3}{4}= \frac {2}{3} P(y=0∣x=1)=P(x=1,y=0)/P(x=1)=21/43=32
然后应用到分类中。但是,生成式模型的概率分布可以有其他应用,就是说生成式模型更一般更普适。不过判别式模型更直接,更简单。两种方法目前交叉较多。由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。

2.常见的生成模型和判别模型

常见的判别模型有

  • 线性回归
  • 逻辑回归
  • 线性判别分析(Linear Discriminant Analysis,LDA)
  • 支持向量机(SVM)
  • K最近邻(KNN)
  • 条件随机场(CRF)
  • 神经网络
  • 区分度训练

常见的生成模型有

  • 隐马尔科夫模型(HMM)
  • 马尔科夫随机场(Markov Random Fields)
  • 朴素贝叶斯模型(Naive Bayes)
  • 高斯混合模型(Gaussian Mixture Model,GMM)
  • 狄利克雷分布模型(Latent Dirichlet Allocation,LDA)
  • 受限玻尔兹曼机(Restricted Boltzmann Machine)
  • 深度信念网络(DBN)

3.判别式模型和生成式模型的优缺点

  • 判别式模型是在寻找一个决策边界,通过该边界来将样本划分到对应类别。
  • 生成式模型则不同,它学习了每个类别的边界,包含了更多信息,可以用来生成样本。
优点缺点
判别式模型1、对条件概率建模,学习不同类别之间的最优边界,预测时拥有较好性能。
2、学习成本较低,需要的计算资源较少。
3、需要的样本数可以较少,少样本也能很好学习。
1、捕捉不同类别特征的差异信息,不学习本身分布信息,无法反应数据本身特性。
2、无法转换成生成式。
生成式模型1、对联合概率建模,学习所有分类数据的分布,因此学习到的数据本身信息更多,能反应数据本身特性。
2、一定条件下能转换成判别式。
1、推断时性能较差。
2、学习成本较高,需要更多的计算资源。
3、需要的样本数更多,样本较少时学习效果较差。

ps:生成式模型的学习收敛速度更快,当样本容量增加时,学习到的模型可以更快的收敛到真实模型,当存在隐变量时,依旧可以用生成式模型,此时判别式方法就不行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/488171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows前后端项目部署

装好windows虚拟机 1.远程连接 计算机右击属性,高级防火墙设置,远程连接服务允许 2.安装jdk,tomcat,解压工具 把安装包拖进去 双击安装解压软件 jdk安装 双击安装 配置环境变量(复制jdk路径) 计算机右击属性高级…

Vue packages version mismatch 报错解决

问题 npm run dev 运行项目的过程中,报错 Vue packages version mismatch 解决方法 根据报错不难看出是 vue 与 vue-template-compiler 版本产生了冲突,vue 与 vue-template-compiler 的版本是需要匹配的。所以解决的办法就是先修改其中一个的版本将 v…

vDPA测试环境搭建

要求: 运行 Linux 发行版的计算机。本指南使用 CentOS 9-stream,但对于其他 Linux 发行版,特别是对于 Red Hat Enterprise Linux 7,命令不应有重大变化。 具有 sudo 权限的用户 ~ 主目录中有 25 GB 的可用空间 至少 8GB 内存 …

抖音视频提取软件使用功能|抖音视频下载工具

我们的抖音视频提取软件是一款功能强大、易于操作的工具,旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们的软件支持通过关键词搜索和分享链接两种方式获取抖音视频,方便用户快速找到自己感兴趣的内容。 主要功能模块:…

华为 OD 一面算法原题

2.2 亿彩票公布调查结果 昨天,闹得沸沸扬扬的《10 万中 2.2 亿》的彩票事件,迎来了官方公告。 简单来说,调查结果就是:一切正常,合规合法。 关于福利彩票事件,之前的推文我们已经分析过。 甚至在后面出现《…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘,操作起来并不方便,因此常常需要ssh远程连接到本地笔记本电脑,这里介绍一种连接方式,通过…

FreeRtos Queue(三)

本篇主要分析向队列中发送消息 xQueueGenericSend 这个函数。 大致分为两个逻辑: 1、当队列没满的时候的处理 2、当队列没满的时候的处理 主意:整个xQueueGenericSend是在for(;;)中处理的 一、队列没满的case 队列的数据结构图可参考:F…

【Linux进阶之路】Socket —— “UDP“ “TCP“

文章目录 一、再识网络1. 端口号2. 网络字节序列3.TCP 与 UDP 二、套接字1.sockaddr结构2.UDP1.server端1.1 构造函数1.2 Init1.3 Run 2.客户端1.Linux2.Windows 3.TCP1. 基本接口2. 客户端3. 服务端1.版本12.版本23.版本34.版本4 三、守护进程尾序 温馨提示:文章较…

C#与VisionPro联合开发——INI存储和CSV存储

1、INI存储 INI 文件是一种简单的文本文件格式,通常用于在 Windows 环境中存储配置数据。INI 文件格式由一系列节(section)和键值对(key-value pairs)组成,用于表示应用程序的配置信息。一个典型的 INI 文…

开放词汇场景图生成Open vocabulary scene graph generation

文章目录 1. 【2022ECCV】Towards Open-vocabulary Scene Graph Generation with Prompt-based Finetuning摘要和结论引言模型框架实验 2. 【2023CVPR】Learning to Generate Language-supervised and Open-vocabulary Scene Graph using Pre-trained Visual-Semantic Space摘要…

基于ssm的校园帮系统设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于ssm的校园帮系统设计…

7-liunx服务器规范

目录 概况liunx日志liunx系统日志syslog函数openlog 可以改变syslog默认输出方式 ,进一步结构化 用户信息进程间的关系会话ps命令查看进程关系 系统资源限制改变工作目录和根目录服务器程序后台话 概况 liunx服务器上有很多细节需要注意 ,这些细节很重要…