机器学习笔记之生成模型综述(四)概率图模型 vs 神经网络

news2024/11/30 8:32:33

机器学习笔记之生成模型综述——概率图模型vs神经网络

引言

本节将介绍概率图模型神经网络之间的关联关系和各自特点。

回顾:概率图模型与前馈神经网络

在概率图模型——背景中介绍过,概率图模型不是某一个具体模型,而是一种图结构的统称。而这个( Graph \text{Graph} Graph)是描述概率模型 P ( X ) \mathcal P(\mathcal X) P(X)各特征之间关系的一种工具
也就是说,概率图模型就是 概率模型/概率分布/概率密度函数 P ( X ) \mathcal P(\mathcal X) P(X)表示( Representation \text{Representation} Representation)。

在前馈神经网络——背景中介绍过,它的核心是通用逼近定理( Universal Approximation Theorem \text{Universal Approximation Theorem} Universal Approximation Theorem),基于该思想,将神经网络视作一个函数逼近器大于等于一层隐藏层的神经网络可以逼近任意连续函数

  • 这里的‘神经网络’是指未经修饰的‘前馈神经网络’( Feed-Forward Neural Network \text{Feed-Forward Neural Network} Feed-Forward Neural Network)
  • 从‘前馈神经网络’的角度观察,它的任务就是对需要的复杂函数进行拟合,仅此而已。与概率分布没有关联关系。

以前馈神经网络处理亦或分类问题为例,其对应的计算图结构表示如下:
前馈神经网络处理亦或问题——计算图结构
可以看出,这个输出结果 output \text{output} output它仅是一个实数,它仅是从计算图结构中通过计算得到的结果而已,并没有概率方面的约束。

因而,但从概率的角度观察,概率图、神经网络是两个独立的概念。但从广义连结主义的角度观察,它们之间确实存在关联关系:
这里为了描述‘神经网络’与概率图结构的各自特点,将关注方向放在贝叶斯网络 ( Bayessian Network ) (\text{Bayessian Network}) (Bayessian Network)上,如玻尔兹曼机这种'既属于概率图模型,也属于神经网络'的结构,并不在关注之内。

贝叶斯网络 VS \text{VS} VS 神经网络

这里依然从表示( Representation \text{Representation} Representation)、推断( Inference \text{Inference} Inference)、学习( Learning \text{Learning} Learning)三个角度对贝叶斯网络神经网络之间进行比较:
这里的‘神经网络’具体指‘确定性神经网络’;‘概率图模型’具体指‘贝叶斯网络’。
概率图计算图的角度观察,概率图描述的是模型本身;而计算图仅构建了一个函数逼近的计算流程,计算图自身没有建模意义。但可以像生成对抗网络一样,将计算图本身看作一个复杂函数,进行建模。

表示层面观察两者区别

在介绍之前,我们介绍过 Sigmoid \text{Sigmoid} Sigmoid信念网络,虽然它是一个典型的有向图模型,但它依然是通过醒眠算法( Wake-Sleep Algorithm \text{Wake-Sleep Algorithm} Wake-Sleep Algorithm)——通过采样的方式对模型参数进行近似学习。因此它也是一个随机神经网络,不在考虑之内。

贝叶斯网络的特点有:浅层、稀疏化、结构化

  • ‘稀疏化’具体是通过人为的一系列条件独立性假设来约束结点之间的连接关系,主要是为了简化运算。如朴素贝叶斯分类器中的‘朴素贝叶斯假设’;隐马尔可夫模型中的‘齐次马尔可夫假设’与‘观测独立性假设’都属于使概率图结构稀疏化的假设。
  • ‘浅层’是指计算结点没有堆叠现象。与生成模型综述中介绍的‘深度生成模型’有少许区别。深度生成模型中的计算结点指的就是随机变量(隐变量、观测变量);而这里的计算结点有可能是随机变量结点,也可能是神经网络中的神经元结点。
  • ‘结构化’是指针对某种具体任务,人为地设置成某种特定结构的格式。例如高斯混合模型,它被设置成这种结构去处理聚类任务:
    概率图模型-结构化-高斯混合模型
    再例如隐马尔可夫模型,这种概率图结构被设计处理状态序列预测问题:
    概率图模型-结构化-隐马尔可夫模型

与之相对的,神经网络的特点:深层、稠密

  • 这里的‘深层’是指神经网络中隐藏层的数量。针对逼近函数的复杂程度,可以通过增加隐藏层的方式对输入特征进行更深层次地学习;
    神经网络-深层结构
  • ‘稠密’是指层与层神经元结点之间的关联关系是随意的,未被条件独立性约束的。

并且神经网络中的节点指的是计算图( Computational Graph \text{Computational Graph} Computational Graph)中的计算结点,相比于随机变量结点,如隐变量结点。我们并没有给计算节点针对图结构赋予相应的实际意义。
或者说,神经网络中的隐藏层单元是否有解释性并不重要,无论是哪种前馈神经网络,隐藏层单元的意义就只有‘逼近复杂函数过程中的一个环节’而已。

层与层之间关联关系表示如下(以上述 h ( 2 ) h^{(2)} h(2)计算节点 h j ( 2 ) h_j^{(2)} hj(2)为例):
通过 h ( 1 ) h^{(1)} h(1)层中的 h i ( 1 ) , h i + 1 ( i ) , h i + 2 ( 1 ) , h i + 3 ( 1 ) h_{i}^{(1)},h_{i+1}^{(i)},h_{i+2}^{(1)},h_{i+3}^{(1)} hi(1),hi+1(i),hi+2(1),hi+3(1)与对应权重参数的线性组合后关于激活函数 Sign \text{Sign} Sign的映射结果, b ( 1 ) b^{(1)} b(1)表示 h ( 1 ) h^{(1)} h(1)层对应的偏置信息。
h j ( 2 ) = Sign ( [ W ( 1 ) ] T h ( 1 ) + b ( 1 ) ) = Sign ( [ W i ( 1 ) ] T h i ( 1 ) + [ W i + 1 ( 1 ) ] T h i + 1 ( 1 ) + [ W i + 2 ( 1 ) ] T h i + 2 ( 1 ) + [ W i + 3 ( 1 ) ] T h i + 3 ( 1 ) + b ( 1 ) ) \begin{aligned} h_j^{(2)} & = \text{Sign}\left([\mathcal W^{(1)}]^T h^{(1)} + b^{(1)}\right) \\ & = \text{Sign} \left([\mathcal W_i^{(1)}]^Th_i^{(1)} + [\mathcal W_{i+1}^{(1)}]^Th_{i+1}^{(1)} + [\mathcal W_{i+2}^{(1)}]^Th_{i+2}^{(1)} + [\mathcal W_{i+3}^{(1)}]^Th_{i+3}^{(1)} + b^{(1)}\right) \end{aligned} hj(2)=Sign([W(1)]Th(1)+b(1))=Sign([Wi(1)]Thi(1)+[Wi+1(1)]Thi+1(1)+[Wi+2(1)]Thi+2(1)+[Wi+3(1)]Thi+3(1)+b(1))

基于上述描述,可以看出,关于贝叶斯网络概率图结构中结点之间的关联关系(有向边)是可解释的( Meaningful \text{Meaningful} Meaningful):而这个解释就是基于某随机变量结点条件下,其他结点发生的条件概率。如齐次马尔可夫假设,观测独立性假设:
无论是观测变量结点,还是隐变量结点,在建模过程中均基于实际任务赋予了物理意义。
{ P ( i t + 1 ∣ i t , ⋯   , i 1 , o 1 , ⋯   , o t ) = P ( i t + 1 ∣ i t ) P ( o t ∣ i t , ⋯   , i 1 , o t − 1 , ⋯   , o 1 ) = P ( o t ∣ i t ) \begin{cases} \mathcal P(i_{t+1} \mid i_t,\cdots,i_1,o_1,\cdots,o_t) = \mathcal P(i_{t+1} \mid i_t)\\ \mathcal P(o_t \mid i_t,\cdots,i_1,o_{t-1},\cdots,o_1) = \mathcal P(o_t \mid i_t) \end{cases} {P(it+1it,,i1,o1,,ot)=P(it+1it)P(otit,,i1,ot1,,o1)=P(otit)

推断、学习层面观察两者区别

如果是概率图模型,它的推断方式多种多样。在概率图模型——推断基本介绍中提到过,推断本质上就是 基于给定的模型参数,对随机变量的概率进行求解

  • 这里的随机变量指的可能是观测变量,也可能是隐变量
  • 这里的概率指的可能是边缘概率,也可能是条件概率,也可能是联合概率(概率密度函数)。

推断选择的方式也根据随机变量的性质(复杂程度:随机变量离散/连续;概率分布:简单/复杂)可进行选择。常见的推断方式有如下几种:

  • 精确推断:如变量消去法( Variable Elimination,VE \text{Variable Elimination,VE} Variable Elimination,VE)。其本质上是基于概率图结构对无效的条件概率进行消除,从而达到简化运算的目的。例如某贝叶斯网络表示如下:
    贝叶斯网络-精确推断-变量消去法示例
    根据其拓扑排序顺序,可将上述概率图 i 4 i_4 i4结点的边缘概率分布 P ( i 4 ) \mathcal P(i_4) P(i4)化简为如下形式:
    原始方法与变量消去法之间进行对比。
    { Original Method:  P ( i 4 ) = ∑ i 1 , i 2 , i 3 P ( i 1 , i 2 , i 3 , i 4 ) = ∑ i 1 , i 2 , i 3 P ( i 1 ) ⋅ P ( i 2 ∣ i 1 ) ⋅ P ( i 3 ∣ i 2 ) ⋅ P ( i 4 ∣ i 3 ) VE Method:  P ( i 4 ) = ∑ i 1 , i 2 , i 3 P ( i 1 , i 2 , i 3 , i 4 ) = ∑ i 3 P ( i 4 ∣ i 3 ) ⋅ ∑ i 2 P ( i 3 ∣ i 2 ) ⋅ ∑ i 1 P ( i 2 ∣ i 1 ) ⋅ P ( i 1 ) \begin{cases} \text{Original Method: }\begin{aligned}\mathcal P(i_4) &= \sum_{i_1,i_2,i_3} \mathcal P(i_1,i_2,i_3,i_4) \\ & = \sum_{i_1,i_2,i_3} \mathcal P(i_1) \cdot \mathcal P(i_2 \mid i_1) \cdot \mathcal P(i_3 \mid i_2) \cdot \mathcal P(i_4 \mid i_3) \end{aligned} \\ \text{VE Method: } \quad \quad \begin{aligned} \mathcal P(i_4) & = \sum_{i_1,i_2,i_3} \mathcal P(i_1,i_2,i_3,i_4) \\ & = \sum_{i_3} \mathcal P(i_4 \mid i_3) \cdot \sum_{i_2} \mathcal P(i_3 \mid i_2) \cdot \sum_{i_1} \mathcal P(i_2 \mid i_1) \cdot \mathcal P(i_1) \end{aligned} \end{cases} Original Method: P(i4)=i1,i2,i3P(i1,i2,i3,i4)=i1,i2,i3P(i1)P(i2i1)P(i3i2)P(i4i3)VE Method: P(i4)=i1,i2,i3P(i1,i2,i3,i4)=i3P(i4i3)i2P(i3i2)i1P(i2i1)P(i1)
    同理,精确推断还有基于前向后向算法逻辑的信念传播(Belief Propagation,BP)方法。
  • 近似推断( Approximate Inference \text{Approximate Inference} Approximate Inference):针对随机变量结点的概率无法准确求解/求解代价极大。最典型的依然是因隐变量 Z \mathcal Z Z维度过高产生的 积分难问题
    P ( X ) = ∫ z 1 ⋯ ∫ z K P ( X ∣ Z ) ⋅ P ( Z ) d z 1 , ⋯   , z K \begin{aligned} \mathcal P(\mathcal X) = \int_{z_1} \cdots\int_{z_{\mathcal K}} \mathcal P(\mathcal X \mid \mathcal Z) \cdot \mathcal P(\mathcal Z) dz_1,\cdots,z_{\mathcal K} \end{aligned} P(X)=z1zKP(XZ)P(Z)dz1,,zK
    对应采样方法如变分推断( Variational Inference,VI \text{Variational Inference,VI} Variational Inference,VI),以及基于采样方式的随机性近似方法马尔可夫链蒙特卡洛方法( Markov Chain Monte Carlo,MCMC \text{Markov Chain Monte Carlo,MCMC} Markov Chain Monte Carlo,MCMC)。

学习层面观察,由于是基于概率分布,因而关于模型参数学习的底层方法是极大似然估计( Maximum Likelihood Estimatation,MLE \text{Maximum Likelihood Estimatation,MLE} Maximum Likelihood Estimatation,MLE)。
当然,这仅是常规的学习思路。其他方法例如以生成对抗网络( Generative Adversarial Networks,GAN \text{Generative Adversarial Networks,GAN} Generative Adversarial Networks,GAN)为代表的对抗学习等。
例如高斯混合模型隐马尔可夫模型中使用的 EM \text{EM} EM算法,它们都是极大似然估计的衍生方法。

神经网络中不存在推断一说。

  • 隐藏层神经元结点产生的中间值仅仅表示一个实数,连基本的概率意义都没有。自然不会出现隐藏层关于某神经元结点的概率这种描述。
  • 和上述的前馈神经网络处理 亦或问题 一样,一旦权重 W \mathcal W W偏置信息 b b b给定的条件下,给定一个输入,那么神经网络中所有隐藏层结点结果均被固定,不存在不确定的分布一说。

关于神经网络学习任务相比于概率图模型单调一些。其核心是梯度下降方法( Gradient Descent,GD \text{Gradient Descent,GD} Gradient Descent,GD)。
无论是随机梯度下降( Stochastic Gradient Descent,SGD \text{Stochastic Gradient Descent,SGD} Stochastic Gradient Descent,SGD),批量梯度下降( Batch Gradient Descent,BGD \text{Batch Gradient Descent,BGD} Batch Gradient Descent,BGD), RMSProp \text{RMSProp} RMSProp, Adagrad \text{Adagrad} Adagrad, Adam \text{Adam} Adam算法,其底层逻辑均属于梯度下降方法。详细可参阅这篇文章,非常感谢。传送门

如果神经网络内隐藏层数量较多,梯度求解过程复杂,则引入反向传播算法( Backward Propagation,BP \text{Backward Propagation,BP} Backward Propagation,BP)
需要注意的是,反向传播算法只是一种‘高效的求导方法’,这种方法仅是在每次迭代过程中将梯度传递给各个隐藏层神经元的权重信息中,它本身并不是参数学习方法。

相关参考:
【pytorch】3.0 优化器BGD、SGD、MSGD、Momentum、Adagrad、RMSPprop、Adam
生成模型5-概率图VS神经网络

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Javaweb安全——Dubbo 反序列化(一)

Dubbo 反序列化(一) Dubbo 基础 Apache Dubbo 是一款 RPC 服务开发框架。提供三个核心功能:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。 节点角色 节点角色说明Provider暴露服务的服务提供者Consume…

leaflet 加载KML数据显示图形(方法3)

第061个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载kml文件,并解析后在地图上显示图形,这里是第三种方法,前两种方法请参考目录查询。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共81行…

大数据培训课程分享:Python数据分析与挖掘实战课程介绍

《Python数据分析与挖掘实战》课程内容以Python数据分析与挖掘的常用技术与真实案例相结合的方式,深入浅出地介绍Python数据分析与挖掘的重要内容,共分为基础篇(第1~5章)和实战篇(第6~11章)。 基础篇内容包…

Git 安装和使用(非常详细教程)

Git 安装和使用Tips 目录:导读 1. git的安装 1)首先去下载 2)傻瓜式下一步再下一步地去安装 2. git的常见命令 提交代码 下载代码 分支提交代码 3. git的常见问题 1) 提示出错信息:fatal: remote origin already exists. 2) 发现日志等文件没…

通过异常处理错误

写在前面Java的基本理念是"结构不佳的代码不能运行"。发现错误的理想时机是在编译阶段, 也就是在你试图运行程序之前。然而, 编译期间并不能找出所有的错误, 余下的问题必须在运行期间解决。这就需要错误源能通过某种方式, 把适当的信息传递给某个接收者——该接收者…

情人节特刊 | “恋爱容易,相守难!” 犀思老兵谈破局之道!

付出甘之如饴,所得归于欢喜。 主动付出真心,问心无愧,未来无悔。老吴是我们公司十多年经验的售后服务主管,平时聊的不多,中午一起吃饭,偶然看到新闻说春节后多地都有排队办理离婚的现象。我不禁感叹一句&am…

三种查找Windows10环境变量的方法

文章目录一.在设置中查看二. 在我的电脑中查看三. 在资源管理器里查看一.在设置中查看 在系统中搜索设置 打开设置,在设置功能里,点击第一项 系统 在系统功能里,左侧菜单找到关于 在关于的相关设置里可以看到高级系统设置 点击高级系…

Java如何整合FFmpeg、FFprobe等音视频处理工具,零基础照样玩

前言:时隔一年多了,不知不觉博客停更那么久了,那不忘初心还记得吗? 最近在做音视频相关的开发,没什么资料并且之前也没有接触过这方面, 咨询了T届的好友,拿到了下面的这张表情包,问题…

从事架构师岗位快2年了,聊一聊我和ChatGPT对架构的一些感受和看法

从事架构师岗位快2年了,聊一聊我和ChatGPT对架构的一些感受和看法 职位不分高低,但求每天都能有新的进步,永远向着更高的目标前进。 文章目录踏上新的征程架构是什么?架构师到底是干什么的?你的终极目标又是什么&#…

链表带头结点与不带头节点的区别

链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表可分为:单链表和双链表,带头结点的链表和不带头结点的链表,循环链表和非循环链表 为了表示每个元素与其…

MySQL数据库调优————SQL性能分析

TIPS 本文基于MySQL 8.0 本文探讨如何深入SQL内部,去分析其性能,包括了三种方式: SHOW PROFILEINFORMATION_SCHEMA.PROFILINGPERFORMANCE_SCHEMA SHOW PROFILE SHOW PROFILE是MySQL的一个性能分析命令,可以跟踪SQL各种资源消耗。…

VLAN间通信,看完这个就完全懂了(单臂路由和三层交换)

第九章:实现VLAN间通信 划分VLAN后,由于广播报文只在同VLAN内转发,所以不同VLAN的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同VLAN的用户又常有互访的需求,此时就需要实现不同VLAN的…

KDNM5000-10A-2剩余电流保护器测试仪

一、产品概述 KDNM5000-10A-2型剩余电流保护器测试仪(以下简称测试仪),是本公司改进产品,是符合国家标准《剩余电流动作保护器》(GB6829—95)中第8.3条和GB16917.1—1997中第9.9条验证AC型交流脱扣器动作特性要求的专用测试仪器。…

Nacos微服务笔记

Nacos安装Nacos 的 Github(Tags alibaba/nacos GitHub)下载我们所需的 Nacos 版本,可以选择 windows 或者 Linux。 进入官网,选择合适版本,tar.gz为linux版本,zip为windows版本。下载并解压 nacos-server…

【C++进阶】一、继承(总)

目录 一、继承的概念及定义 1.1 继承概念 1.2 继承定义 1.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1 继承的分类 7.2 菱形虚拟…

【SAP Abap】X-DOC:SE11 - 创建配置表并分配事务码

SE11 - 创建配置表并分配事务码1、创建自定义表2、创建表维护功能3、功能验证4、设置事务码5、带出字段默认值(1)方法一:表维护事件(2)方法二:屏幕事件1、创建自定义表 SE11,创建自定义表&…

结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

结构体的三种定义方法 一、单独定义: 先定义结构体类型,再定义变量   定义结构体的格式如下:    struct 结构体名 {    若干数据项;    } ;   其中,struct为关键字; 结构体名是用户定…

golang 入门教程:迷你 Twitter 后端

请记住,这个项目主要是为了稍微熟悉下Golang,您可以复制架构,但该项目缺少适当的 ORM,没有适当的身份验证或授权,我完全无视中间件,也没有测试。 我将在其自己的部分中讨论所有这些问题,但重要的…

利用NGROK将本地网站发布为一个公开网站

一般与第三方服务集成时,需要提供https的回调URL,本地开发阶段可以利用NGROK将本地网站发布为公开的https网站。https://ngrok.com/downloadWindow下载地址:https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip以Window…

echarts问题汇总

因为工作中经常使用echarts,做数据可视化相关需求,需要实现各种各样图表的需求。 有遇到过很多问题,一些网上不太好搜索到解决方案的,一直想总结一下解决过程。方便自己查阅,也方便别人参考。 一:echarts…