机器学习笔记之受限玻尔兹曼机(二)模型表示

news2024/9/22 19:24:47

机器学习笔记之受限玻尔兹曼机——模型表示

  • 引言
    • 回顾:玻尔兹曼分布
    • 玻尔兹曼机
      • 关于玻尔兹曼机的问题
    • 受限玻尔兹曼机
    • 受限玻尔兹曼机的学习任务(填坑)

引言

上一节基于马尔可夫随机场介绍了玻尔兹曼分布,本节将介绍受限玻尔兹曼机的模型表示(Representation)与 学习任务(Laerning)。

回顾:玻尔兹曼分布

基于Hammersley-Clifford定理,可以将马尔可夫随机场 G \mathcal G G中关于随机变量集合的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)表示为如下形式:
P ( X ) = 1 Z ∏ i = 1 K ψ i ( x C i ) \mathcal P(\mathcal X) = \frac{1}{\mathcal Z} \prod_{i=1}^{\mathcal K} \psi_i(x_{\mathcal C_i}) P(X)=Z1i=1Kψi(xCi)
其中 x C i ( i = 1 , 2 , ⋯   , K ) x_{\mathcal C_i}(i=1,2,\cdots,\mathcal K) xCi(i=1,2,,K)表示极大团 C i \mathcal C_i Ci中结点组成的随机变量集合 ψ i ( x C i ) \psi_i(x_{\mathcal C_i}) ψi(xCi)表示极大团 x C i x_{\mathcal C_i} xCi对应的势函数 Z \mathcal Z Z表示规范化因子
由于势函数的恒正属性,因此通常将势函数使用能量函数进行表示:
ψ i ( x C i ) = exp ⁡ { − E [ x C i ] } i = 1 , 2 , ⋯   , K \psi_i(x_{\mathcal C_i}) = \exp \left\{-\mathbb E[x_{\mathcal C_i}]\right \} \quad i=1,2,\cdots,\mathcal K ψi(xCi)=exp{E[xCi]}i=1,2,,K
那么 基于能量函数表示的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)被称作吉布斯分布,也称玻尔兹曼分布
这里全部使用’玻尔兹曼分布‘进行描述。
P ( X ) = 1 Z ∏ i = 1 K exp ⁡ { − E [ x C i ] } = 1 Z exp ⁡ [ − ∑ i = 1 K E [ x C i ] ] \begin{aligned} \mathcal P(\mathcal X) & = \frac{1}{\mathcal Z} \prod_{i=1}^{\mathcal K} \exp \left\{- \mathbb E[x_{\mathcal C_i}]\right\} \\ & = \frac{1}{\mathcal Z} \exp \left[- \sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}]\right] \end{aligned} P(X)=Z1i=1Kexp{E[xCi]}=Z1exp[i=1KE[xCi]]

此时的联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)明显是指数族分布的表示形式
可以将 − ∑ i = 1 K E [ x C i ] -\sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}] i=1KE[xCi]看作是’某权重矩阵‘ W \mathcal W W与’极大团向量‘ x C = ( x C 1 , x C 2 , ⋯   , x C K ) T x_{\mathcal C} = (x_{\mathcal C_1},x_{\mathcal C_2},\cdots,x_{\mathcal C_{\mathcal K}})^T xC=(xC1,xC2,,xCK)T的线性组合。
1 Z exp ⁡ [ − ∑ i = 1 K E [ x C i ] ] ⇒ 1 Z exp ⁡ [ W T x C ] \frac{1}{\mathcal Z} \exp \left[- \sum_{i=1}^{\mathcal K} \mathbb E[x_{\mathcal C_i}]\right] \Rightarrow \frac{1}{\mathcal Z} \exp [\mathcal W^T x_{\mathcal C}] Z1exp[i=1KE[xCi]]Z1exp[WTxC]
如果给能量函数 E [ x C i ] ( i = 1 , 2 , ⋯   , K ) \mathbb E[x_{\mathcal C_i}](i=1,2,\cdots,\mathcal K) E[xCi](i=1,2,,K)一个准确描述的话,可以将 E [ x C i ] \mathbb E[x_{\mathcal C_i}] E[xCi]描述为如下形式:
E [ x C i ] = − { [ x C i ] T U x C i + b T x C i } i = 1 , 2 , ⋯   , K \mathbb E[x_{\mathcal C_i}] = - \left\{[x_{\mathcal C_i}]^T \mathcal U x_{\mathcal C_i} + b^T x_{\mathcal C_i}\right\} \quad i=1,2,\cdots,\mathcal K E[xCi]={[xCi]TUxCi+bTxCi}i=1,2,,K
其中 U \mathcal U U表示模型参数的权重矩阵 b b b表示偏置向量

个人理解:在花书(第20章)将随机变量集合 x x x描述为一个 d d d维的分布。为了简化运算,将每一维分布均设为’伯努利分布‘,从而将’能量函数‘描述为如下形式:
E ( x ) = − x T U x − b T x \mathbb E(x) = - x^T\mathcal U x - b^Tx E(x)=xTUxbTx
回归文章示例,将 p p p维随机变量 X \mathcal X X表示为’若干个结点‘(可能有的结点内部包含一个随机变量,有的包含多个),然后将这些结点归纳为 K \mathcal K K个极大团 x C i ( i = 1 , 2 , ⋯   , K ) x_{\mathcal C_i}(i=1,2,\cdots,\mathcal K) xCi(i=1,2,,K)。可以将每个极大团中的随机变量看作是 X \mathcal X X的一个子集,因而这里的表述没什么问题。欢迎小伙伴们交流讨论。

玻尔兹曼机

玻尔兹曼机(Boltzmann Machine,BM)示例表示如下:
蓝色结点表示观测变量,白色结点表示隐变量,下同。
玻尔兹曼机——示例

玻尔兹曼机本质上就是一个马尔可夫随机场,但是不同点在于玻尔兹曼机将随机变量集合 X \mathcal X X分成了两个子集
需要注意的是,这里的 m , n , p m,n,p m,n,p表示随机变量的维度,而不是极大团的编号。
X = ( x 1 , x 2 , ⋯ x p ) T ⇒ ( h v ) { h = ( h 1 , h 2 , ⋯   , h m ) T v = ( v 1 , v 2 , ⋯   , v n ) T m + n = p \begin{aligned} \mathcal X & = (x_1,x_2,\cdots x_p)^T \Rightarrow \begin{pmatrix}h \\ v \end{pmatrix}\\ & \begin{cases} h = (h_1,h_2,\cdots,h_m)^T \\ v = (v_1,v_2,\cdots,v_n)^T \quad m + n = p \end{cases} \end{aligned} X=(x1,x2,xp)T(hv){h=(h1,h2,,hm)Tv=(v1,v2,,vn)Tm+n=p
其中 v v v表示观测变量 h h h表示隐变量。它的能量函数不同于单个随机变量种类 x ∈ R p \mathcal x \in \mathbb R^p xRp,它的能量函数根据图中边两端结点种类 分为三种表示:
− E ( v , h ) = − [ ( v T R v + b T v ) + v T W h + ( h T S h + c T h ) ] -\mathbb E(v,h) = - \left[(v^T\mathcal Rv + b^Tv) + v^T \mathcal W h + (h^T\mathcal S h + c^T h)\right] E(v,h)=[(vTRv+bTv)+vTWh+(hTSh+cTh)]

  • 以观测变量 v v v内部的边为例。 v i , v j ∈ v v_i,v_j \in v vi,vjv表示观测变量的两个结点,它们之间的能量(边;关联关系)可表示为:
    − E ( v i , v j ) = − v i ⋅ r i j ⋅ v j - \mathbb E(v_i,v_j) = - v_i \cdot r_{ij} \cdot v_j E(vi,vj)=virijvj
    其中 r i j r_{ij} rij表示 v i , v j v_i,v_j vi,vj之间的权重系数。至此,观测变量 v v v内部的能量结果可表示为如下形式
    − ∑ i = 1 m ∑ j = 1 m v i ⋅ r i j ⋅ v j = − ( v 1 , v 2 , ⋯   , v m ) ( r 11 , r 12 , ⋯   , r 1 m r 21 , r 22 , ⋯   , r 2 m ⋮ r m 1 , r m 2 , ⋯   , r m m ) ( v 1 v 2 ⋮ v m ) = − v T R v \begin{aligned}- \sum_{i=1}^m\sum_{j=1}^m v_i \cdot r_{ij} \cdot v_j & = -(v_1,v_2,\cdots,v_m)\begin{pmatrix} r_{11},r_{12},\cdots,r_{1m} \\ r_{21},r_{22},\cdots,r_{2m} \\ \vdots \\ r_{m1},r_{m2},\cdots,r_{mm} \\ \end{pmatrix}\begin{pmatrix} v_1 \\ v_2 \\ \vdots \\ v_m \end{pmatrix} \\ & = -v^T\mathcal Rv \end{aligned} i=1mj=1mvirijvj=(v1,v2,,vm)r11,r12,,r1mr21,r22,,r2mrm1,rm2,,rmmv1v2vm=vTRv
  • 其他表示边的关系如 − v T W h , − h T S h - v^T\mathcal Wh,-h^T\mathcal Sh vTWh,hTSh同理。关于结点本身的能量也通过权重系数进行表达。如观测变量的能量表达: ∑ i = 1 m b i v i = b T v \sum_{i=1}^m b_iv_i = b^Tv i=1mbivi=bTv,隐变量同理。

其中 R , b \mathcal R,b R,b表示基于观测变量团的权重矩阵和偏置向量; S , c \mathcal S,c S,c表示基于隐变量团的权重矩阵和偏置向量; W \mathcal W W表示边两端分别是观测变量和隐变量的权重矩阵。
最终,玻尔兹曼机对应的 联合概率分布(概率质量函数) 表示如下:
在后续’玻尔兹曼机‘中将继续进行介绍。
P ( v , h ) = 1 Z exp ⁡ { − E [ v , h ] } = 1 Z exp ⁡ { − [ ( v T R v + b T v ) + v T W h + ( h T S h + c T h ) ] } \begin{aligned} \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp \{- \mathbb E[v,h]\} \\ & = \frac{1}{\mathcal Z} \exp \left\{- \left[(v^T\mathcal Rv + b^Tv) + v^T \mathcal W h + (h^T\mathcal S h + c^T h)\right] \right\} \end{aligned} P(v,h)=Z1exp{E[v,h]}=Z1exp{[(vTRv+bTv)+vTWh+(hTSh+cTh)]}

关于玻尔兹曼机的问题

如果并不是所有变量都能够被观测,如隐变量的存在。这种情况下,隐变量类似于神经网络中的隐藏层神经元,此时的波尔兹曼机就不再局限于变量之间的线性关系了。通过对模型的学习,类似于神经网络隐藏层的函数逼近定理,它可以对 离散型随机变量任意概率质量函数 P ( X ) \mathcal P(\mathcal X) P(X)进行逼近

当然,这种情况下,同样需要玻尔兹曼机内部结点之间存在丰富的关联关系。如下图:
波尔兹曼机——示例2
这种复杂结构引出玻尔兹曼机的缺陷由于结构过于复杂,没有办法对其进行精确推断
其次,如果使用近似推断,如马尔可夫链蒙特卡罗方法,由于分布过于复杂,需要采集足够量的样本对其进行近似。这种方式的计算量过于庞大

受限玻尔兹曼机

玻尔兹曼机的缺陷主要在于模型对应的概率图结构过于复杂。受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是在玻尔兹曼机的基础上,对结点间的边进行约束。约束要求是:只有隐变量 h h h和观测变量 v v v之间存在连接, h , v h,v h,v变量内部无连接

上图关于优化后的受限玻尔兹曼机表示如下:
受限玻尔兹曼机——上图改进
同理,基于改进后的概率图表达,可以对波尔兹曼机联合概率分布进行优化:
P ( X ) = P ( v , h ) = 1 Z exp ⁡ { − E ( v , h ) } = 1 Z exp ⁡ { − ( v T W h + b T v + c T h ) } \begin{aligned} \mathcal P(\mathcal X) = \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp \{- \mathbb E(v,h)\} \\ & = \frac{1}{\mathcal Z} \exp \{- (v^T \mathcal W h + b^Tv + c^Th)\} \end{aligned} P(X)=P(v,h)=Z1exp{E(v,h)}=Z1exp{(vTWh+bTv+cTh)}
继续对上式进行展开:
P ( v , h ) = 1 Z exp ⁡ [ v T W h ] ⋅ exp ⁡ [ b T v ] ⋅ exp ⁡ [ c T h ] = 1 Z { exp ⁡ [ ∑ i = 1 m ∑ j = 1 n v i ⋅ w i j ⋅ h j ] ⋅ exp ⁡ [ ∑ i = 1 m b i v i ] ⋅ exp ⁡ [ ∑ j = 1 n c j h j ] } = 1 Z { ∏ i = 1 m ∏ j = 1 n exp ⁡ ( v i ⋅ w i j ⋅ h j ) ⋅ ∏ i = 1 m exp ⁡ ( b i v i ) ∏ j = 1 n exp ⁡ ( c j h j ) } \begin{aligned} \mathcal P(v,h) & = \frac{1}{\mathcal Z} \exp [v^T \mathcal W h] \cdot \exp[b^Tv] \cdot \exp[c^Th] \\ & = \frac{1}{\mathcal Z} \left\{\exp \left[\sum_{i=1}^m\sum_{j=1}^n v_i \cdot w_{ij}\cdot h_j \right] \cdot \exp \left[\sum_{i=1}^m b_iv_i\right] \cdot \exp \left[\sum_{j=1}^n c_jh_j\right]\right\} \\ & = \frac{1}{\mathcal Z} \left\{\prod_{i=1}^m\prod_{j=1}^n \exp (v_i \cdot w_{ij} \cdot h_j) \cdot \prod_{i=1}^m \exp (b_iv_i) \prod_{j=1}^n \exp(c_jh_j)\right\} \end{aligned} P(v,h)=Z1exp[vTWh]exp[bTv]exp[cTh]=Z1{exp[i=1mj=1nviwijhj]exp[i=1mbivi]exp[j=1ncjhj]}=Z1{i=1mj=1nexp(viwijhj)i=1mexp(bivi)j=1nexp(cjhj)}
上式展开后的结果就是各种各样的指数函数做乘法。因此可以从因子图(Factor Graph)的角度对受限玻尔兹曼机进行描述,对应因子图表示如下:
例如团(实际上就是极大团) v i ⇔ h j v_i \Leftrightarrow h_j vihj可以定义为 f i j ( v i , h j ) = exp ⁡ ( v i ⋅ w i j ⋅ h j ) f_{ij}(v_i,h_j) = \exp (v_i \cdot w_{ij} \cdot h_j) fij(vi,hj)=exp(viwijhj),其他同理。这里就不多描述了。
因受限玻尔兹曼机的性质,其概率图中任意三个结点之间均不能构成极大团。因此,每一条边对应的两个结点都是一个极大团。
受限玻尔兹曼机——因子图角度
最终,受限玻尔兹曼机需要学习的参数包含以下三个:
W = ( w 11 , w 12 , ⋯   , w 1 n w 21 , w 22 , ⋯   , w 2 n ⋮ w m 1 , w m 2 , ⋯   , w m n ) m × n b = ( b 1 b 2 ⋮ b m ) m × 1 c = ( c 1 c 2 ⋮ c n ) n × 1 \mathcal W = \begin{pmatrix} w_{11},w_{12},\cdots,w_{1n} \\ w_{21},w_{22},\cdots,w_{2n} \\ \vdots \\ w_{m1},w_{m2},\cdots,w_{mn} \\ \end{pmatrix}_{m \times n} \quad b = \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_{m} \end{pmatrix}_{m \times 1} \quad c = \begin{pmatrix} c_1 \\ c_2 \\ \vdots \\ c_{n} \end{pmatrix}_{n \times 1} W=w11,w12,,w1nw21,w22,,w2nwm1,wm2,,wmnm×nb=b1b2bmm×1c=c1c2cnn×1

受限玻尔兹曼机的学习任务(填坑)

在介绍对比散度(Contrastive Divergence)介绍完毕后,再介绍受限玻尔兹曼机的学习任务

相关参考:
深度学习(花书)——第20章 深度生成模型
(系列二十八)玻尔兹曼机1-介绍
机器学习-受限玻尔兹曼机(3)-模型表示(Representation)

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

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

相关文章

阿里资深专家分享程序员三门课:技术精进架构修炼、管理探秘文档

前言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

将0-255的色彩映射表导出为RGB波段

当我们拿到0-255的色彩映射表栅格文件的时候,可能不太好用,需要导出为RGB波段或者其他波段形式的,在Global Mapper中可以做到。 打开0-255色彩映射表的栅格文件,在Arcmap中可以看到是这样的: 1 在ArcMap中操作步骤…

PE文件硬编码代码注入

以下适合有PE基础的人看,最起码要知道PE的基本结构和rva以及foa之间如何相互转换,不然会看的迷迷糊糊 先决条件 首先我们需要准备一个程序,待会将代码注入这个程序中 随便编写一个简单的程序,将随机基址给关闭 硬编码 程序编…

PyQt5基础练习2

实验4 关闭窗口 4.1 完整代码 #!/usr/bin/python3 # -*- coding: utf-8 -*-""" ZetCode PyQt5 tutorialThis example shows a tooltip on a window and a button.Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """import…

推荐系统在腾讯游戏运营中的实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年10月份热门报告盘点2021-2022元宇宙报告.pdf清华大学256页PPT元宇宙研究报告.pdf(附下载链接)机器学习在B站推荐系统中的应用实践小红书推荐系统…

【Matplotlib绘制图像大全】(三十):Matplotlib绘制时间线图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

[附源码]计算机毕业设计医疗纠纷处理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

在浏览器中运行 TensorFlow.js 来训练模型并给出预测结果(Iris 数据集)

文章目录开发环境构建第一个 TensorFlow.js 模型构建鸢尾花数据集分类器References在 《TensorFlow Lite 是什么?用 TensorFlow Lite 来转换模型(附代码)》中我们已经介绍了可以帮助 TensorFlow 模型在移动设备以及嵌入式设备中运行的 Tensor…

YMTC X3 NAND 232L 终露真容,全球领先|国产芯之光

上一篇文章(芯片级解密YMTC NAND Xtacking 3.0技术),我们结合TechInsights获取芯片级信息梳理了国产NAND芯片厂商YMTC的技术演进之路,从2016公司成立,2018年发布Xtacking 1.0 NAND架构,2019年发布Xtacking …

Kotlin高仿微信-第58篇-开通VIP

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

[附源码]计算机毕业设计springboot疫情网课管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

微信小程序| 做一款多人实时线上的五指棋联机游戏

📌个人主页:个人主页 ​🧀 推荐专栏:小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏!从个人到商业的全套开发教程,实打实的干货分享,确定不来看看? …

[附源码]计算机毕业设计新能源汽车租赁Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]计算机毕业设计疫情物资管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

微信支付商户平台-配置密钥/API安全教程

我们在做小程序获取微信开发时,难免会用到微信支付,我们做微信支付时,商户id和密匙是必不可少的。商户id很容易就能获取到。但是这个密匙的配置就相对而言麻烦了一点。今天就来教大家如何配置位置支付的密匙。 先我们要去注册微信支付的账号…

Lattice库联合ModelSim仿真FIFO

Lattice联合ModelSim仿真FIFO前言一、添加IP二、库文件添加(一)方式一:添加器件库到ModelSim(二)方法二:直接添加器件库到Libray,和tb.v在同一个目录下仿真三、仿真(一)仿真文件&…

JAVA社区疫情防控系统毕业设计,社区疫情防控管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 关于我们设置:设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信…

b站黑马JavaScript的Ajax案例代码——新闻列表案例

目录 目标效果: 重点原理: 1.js中art-template标准语法的循环输出 2.js中split方法——转换字符串为数组 3.js中art-template标准语法的过滤器 4.js中Date内置对象——getFullYear() 5.js中Date内置对象——getMonth() 6.js中Date内置对象——ge…

简单认识一下HotSpot 垃圾收集器

前言 HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 新生代垃圾收集器 Serial 垃圾收集器(单线…

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver解决方案

🌟问题解析 首先,此报错会出现在两种情况,并且有各自的解决方法。 如果在Java程序中报错,那么我们就参考方法1(单Java程序): 如果你是在Tomcat中报错,那么我们可以参考方法2&#…