27 Deep Belief Network

news2024/11/24 1:30:17

文章目录

  • 27 Deep Belief Network——深度信念网络
    • 27.1 DBN是什么?
    • 27.2 为什么要使用DBN
      • 27.2.1 DBN的思想是怎么来的?
      • 27.2.2 RBM的叠加可以提高ELBO
    • 27.3 训练方式

27 Deep Belief Network——深度信念网络

27.1 DBN是什么?

DBN(Deep Belief Network)是由RBM(Restricted Boltzmann Machine)和SBN(Sigmoid Belief Network)两层结构所组成,其图形可以画成如下形式:

在这里插入图片描述

根据其图性质、节点的关联性及分层相互独立的性质,我们可以将联合概率写出来:
P ( V , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( V ∣ h ( 1 ) , h ( 2 ) , h ( 3 ) ) ⋅ P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( V ∣ h ( 1 ) ) ⋅ P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( V ∣ h ( 1 ) ) ⋅ P ( h ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) = ∑ i P ( v ∣ h ( 1 ) ) ⋅ ∑ j P ( h j ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) \begin{align} P(V, h^{(1)}, h^{(2)}, h^{(3)}) &= P(V| h^{(1)}, h^{(2)}, h^{(3)}) \cdot P(h^{(1)}, h^{(2)}, h^{(3)}) \\ &= P(V| h^{(1)}) \cdot P(h^{(1)}, h^{(2)}, h^{(3)}) \\ &= P(V| h^{(1)}) \cdot P(h^{(1)}| h^{(2)}) \cdot P(h^{(2)}, h^{(3)}) \\ &= \sum_i P(v| h^{(1)}) \cdot \sum_j P(h_j^{(1)}| h^{(2)}) \cdot P(h^{(2)}, h^{(3)}) \\ \end{align} P(V,h(1),h(2),h(3))=P(Vh(1),h(2),h(3))P(h(1),h(2),h(3))=P(Vh(1))P(h(1),h(2),h(3))=P(Vh(1))P(h(1)h(2))P(h(2),h(3))=iP(vh(1))jP(hj(1)h(2))P(h(2),h(3))
根据SBN的性质我们可以得到:

  1. P ( v ∣ h ( 1 ) ) = s i g m o i d ( w : , i ( 1 ) T ⋅ h ( 1 ) + b i ( 0 ) ) P(v| h^{(1)}) = sigmoid({w_{:,i}^{(1)}}^T \cdot h^{(1)} + b_i^{(0)}) P(vh(1))=sigmoid(w:,i(1)Th(1)+bi(0))
  2. P ( h j ( 1 ) ∣ h ( 2 ) ) = s i g m o i d ( w : , j ( 2 ) T ⋅ h ( 2 ) + b j ( 1 ) ) P(h_j^{(1)}| h^{(2)}) = sigmoid({w_{:,j}^{(2)}}^T \cdot h^{(2)} + b_j^{(1)}) P(hj(1)h(2))=sigmoid(w:,j(2)Th(2)+bj(1))

根据RBM的性质我们可以得到:

  • P ( h ( 2 ) , h ( 3 ) ) = 1 Z exp ⁡ { h ( 3 ) T w ( 3 ) h ( 2 ) + h ( 2 ) T b ( 2 ) + h ( 3 ) T b ( 3 ) } P(h^{(2)}, h^{(3)}) = \frac{1}{Z} \exp{\lbrace {h^{(3)}}^T w^{(3)} h^{(2)} + {h^{(2)}}^T b^{(2)} + {h^{(3)}}^T b^{(3)} \rbrace} P(h(2),h(3))=Z1exp{h(3)Tw(3)h(2)+h(2)Tb(2)+h(3)Tb(3)}

通过以上内容我们就可以得到一个DBN的联合概率公式

27.2 为什么要使用DBN

27.2.1 DBN的思想是怎么来的?

DBN是在RBM的基础上叠加而来,一个基础的RBM应该是如下结构:

我们用该结构求解 P ( V ) P(V) P(V)会通过引入 h ( 1 ) h^{(1)} h(1)​的方法,再用修正的Gibbs采样的方法(CD-k)进行求解,可以得到:
P ( V ) = ∑ h ( 1 ) P ( h ( 1 ) ) ⏟ p r i o r P ( V ∣ h ( 1 ) ) ⏟ f i x e d P(V) = \sum_{h^{(1)}} \underbrace{P(h^{(1)})}_{prior} \underbrace{P(V|h^{(1)})}_{fixed} P(V)=h(1)prior P(h(1))fixed P(Vh(1))
其中我们可以将其中的 P ( V ∣ h ( 1 ) ) P(V|h^{(1)}) P(Vh(1))固定住,并添加一层RBM用于提高prior(提高的原理再下一节),如下图所示:

原先最下层的无向图变为有向图是因为我们的条件是固定住 P ( V ∣ h ( 1 ) ) P(V|h^{(1)}) P(Vh(1)),所以去掉了从 V V V h ( 1 ) h^{(1)} h(1)的方向,如此我们可以叠加很多层。

27.2.2 RBM的叠加可以提高ELBO

如果我们想要将结果的精度再进行提升,我们肯定要将 log ⁡ P ( V ) \log P(V) logP(V)中的一部分提高,则我们可以写出的 log ⁡ P ( V ) \log P(V) logP(V)ELBO:
log ⁡ P ( v ) = log ⁡ ∑ h ( 1 ) P ( V , h ( 1 ) ) = log ⁡ ∑ h ( 1 ) q ( h ( 1 ) ∣ V ) P ( V , h ( 1 ) ) q ( h ( 1 ) ∣ V ) = log ⁡ E q ( h ( 1 ) ∣ V ) [ P ( V , h ( 1 ) ) q ( h ( 1 ) ∣ V ) ] ≥ E q ( h ( 1 ) ∣ V ) [ log ⁡ P ( V , h ( 1 ) ) q ( h ( 1 ) ∣ V ) ] = E q ( h ( 1 ) ∣ V ) [ log ⁡ P ( h ( 1 ) ) ⏟ 重新建模 + log ⁡ P ( V ∣ h ( 1 ) ) ⏟ 可以通过 w 1 求解 − log ⁡ q ( h ( 1 ) ∣ V ) ⏟ 固定 ] \begin{align} \log P(v) &= \log \sum_{h^{(1)}} P(V, h^{(1)}) \\ &= \log \sum_{h^{(1)}} q(h^{(1)} | V) \frac{P(V, h^{(1)})}{q(h^{(1)} | V)} \\ &= \log E_{q(h^{(1)} | V)} \left[ \frac{P(V, h^{(1)})}{q(h^{(1)} | V)} \right] \\ &\geq E_{q(h^{(1)} | V)} \left[ \log \frac{P(V, h^{(1)})}{q(h^{(1)} | V)} \right] \\ &= E_{q(h^{(1)} | V)} \left[ \underbrace{\log P(h^{(1)})}_{重新建模} + \underbrace{\log P(V | h^{(1)})}_{可以通过w_1求解} - \underbrace{\log q(h^{(1)} | V)}_{固定} \right] \\ \end{align} logP(v)=logh(1)P(V,h(1))=logh(1)q(h(1)V)q(h(1)V)P(V,h(1))=logEq(h(1)V)[q(h(1)V)P(V,h(1))]Eq(h(1)V)[logq(h(1)V)P(V,h(1))]=Eq(h(1)V) 重新建模 logP(h(1))+可以通过w1求解 logP(Vh(1))固定 logq(h(1)V)
根据(以上变换)+(上文所说我们可以固定 P ( V ∣ h ( 1 ) ) P(V|h^{(1)}) P(Vh(1))​实现叠加RBM——固定表示为定值),可以得到:
log ⁡ P ( v ) ≥ ∑ h ( 1 ) q ( h ( 1 ) ∣ V ) ⏟ f i x e d log ⁡ P ( h ( 1 ) ) + C \begin{align} \log P(v) &\geq \sum_{h^{(1)}} \underbrace{q(h^{(1)} | V)}_{fixed} \log P(h^{(1)}) + C \\ \end{align} logP(v)h(1)fixed q(h(1)V)logP(h(1))+C
若此时我们对 h ( 1 ) h^{(1)} h(1)重新建模,在上面加一层 h ( 2 ) h^{(2)} h(2),此时 h ( 1 ) h^{(1)} h(1)就是prior,我们会求得 h ( 1 ) h^{(1)} h(1)的最大值。通过这种方法我们就可以提高 log ⁡ P ( V ) \log P(V) logP(V)的ELBO

27.3 训练方式

通过计算我们已知公式可以写作:
log ⁡ P ( v ) ≥ ∑ h ( 1 ) q ( h ( 1 ) ∣ V ) log ⁡ P ( h ( 1 ) ) + C \begin{align} \log P(v) &\geq \sum_{h^{(1)}} q(h^{(1)} | V) \log P(h^{(1)}) + C \\ \end{align} logP(v)h(1)q(h(1)V)logP(h(1))+C
其中我们固定的 q ( h ( 1 ) ∣ V ) q(h^{(1)} | V) q(h(1)V)可以计算得出:
q ( h ( 1 ) ∣ V ) = ∏ i q ( h i ( 1 ) ∣ V ) = ∏ i s i g m o i d ( w i , : ( 1 ) ⋅ v + b i ( 1 ) ) q(h^{(1)} | V) = \prod_i q(h_i^{(1)} | V) = \prod_i sigmoid(w_{i,:}^{(1)} \cdot v + b_i^{(1)}) q(h(1)V)=iq(hi(1)V)=isigmoid(wi,:(1)v+bi(1))
其中的v就是我们的训练样本。

通过这种方法最后的得到的DBN方便采样:可以在最上层的RBM使用Gibbs采样,再通过SBN对有向图的方法采样下来。

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

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

相关文章

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法?2、K-近邻算法API3、…

FastDFS与Springboot集成

🚀 FastDFS与Springboot集成 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风…

139、仿真-基于51单片机一氧化碳(CO)气体检测仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​编辑 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&#xff1…

【K8S系列】深入解析k8s网络插件—Calico

序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 Kubernetes (k8s) 是一个容器编…

视频理解多模态大模型(大模型基础、微调、视频理解基础)

转眼就要博0了,导师开始让我看视频理解多模态方向的内容,重新一遍打基础吧,从Python,到NLP,再到视频理解,最后加上凸优化,一步一步来,疯学一个暑假。写这个博客作为我的笔记以及好文…

代码随想录算法训练营第55天|392 115

392 双指针法很简单 class Solution { public:bool isSubsequence(string s, string t) {int i0;for (int j0; j<t.size() && i<s.size(); j) {if (t[j]s[i]) {i;}}return is.size();} }; 用动态规划来写的话 逻辑其实跟1143 1035是一样的 最后返回看dp[s.size…

Vue element el-input输入框 实现 ’空格+enter’组合键:换行,enter:发送,使用keydown和keyup键盘事件来实现

需求 输入框 &#xff0c;输入内容后 &#xff0c;按enter空格键 换行&#xff0c;按enter键 发送调取接口 思路 jquery的也分为三个过程&#xff0c;在事件名称上有所不同 1、某个键盘的键被松开&#xff1a;keyup 2、某个键被按下&#xff1a;keydown 3、某个键盘的键被按…

基于查找表(lookup table,LUT)方法反演植被参数

LUT指显示查找表&#xff08;Look-Up-Table)&#xff0c;本质上就是一个RAM。它把数据事先写入RAM后&#xff0c;每当输入一个信号就等于输入一个地址进行查表&#xff0c;找出地址对应的内容&#xff0c;然后输出。 LUT的应用范围比较广泛&#xff0c;例如&#xff1a;LUT(Lo…

机器学习:Self-supervised Learning for Speech and image

review : self-supervised learning for text Self-supervised learning for speech 使用Speech版本的bert能比较好的作用于语音任务上&#xff0c;如果没有self-supervised的话&#xff0c;别的模型可能需要上万小时的数据。 Superb ytb课程&#xff1a;MpsVE60iRLM工具&…

vulnhub打靶--lampiao

目录 vulnhub--lampiao1.扫描主机端口&#xff0c;发现1898端口部署web2.打开robots.txt发现CHANGELOG.txt文件3.发现drupal更新日志&#xff0c;drupal这个版本有公开exp。利用msf打下4.执行uname -a 或者上传漏洞suggest脚本&#xff0c;可以发现有脏牛提权5.上传脚本到目标&…

2023年7月19日,锁升级,网络编程

锁升级 锁的四种状态&#xff1a;无锁、偏向锁、轻量级锁、重量级锁&#xff08;JDK1.6&#xff09; 无锁&#xff1a;操作数据时不会上锁 偏向锁&#xff1a;会偏向于第一个访问锁的线程&#xff0c; 如果在运行过程中&#xff0c;只有一个线程访问加锁的资源&#xff0c;不存…

JavaWeb+Vue分离项目实现增删改查

文章目录 前言数据库后端代码util 代码listener 代码filter 代码po 代码dao 层增删改查代码service 层增删改查代码controller 层增删改查代码 前端代码查询操作删除功能增加功能修改方法路由传参修改会话存储修改 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&…

Java037——多线程

当涉及到计算机操作系统中的并发执行时&#xff0c;进程和线程是两个核心概念。 一、程序(program) 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一 段静态的代码&#xff0c;静态对象。 二、进程&#xff08;Process&#xff09; 进程&#xff0…

MD5数据加密方法

什么场景需要使用数据加密呢&#xff1f;比如秘密数据传输、用户密码加密存储等等 数据传输可使用密钥对的方式进行加密解密&#xff0c;使用签名方式验证数据是否可靠&#xff0c;而密码加密存储可使用MD5等一些算法对数据进行单向加密 一、MD5单向加密 1、百度说法&#x…

【基础统计学】带重叠差分置信区间的检验

一、说明 对于统计模式识别&#xff0c;需要从基本的检验入手进行学习掌握&#xff0c;本篇是对统计中存在问题的探讨&#xff1a;如果两个分布有重叠该怎么做。具体的统计学原理&#xff0c;将在本人专栏中系统阐述。 二、几个重要概念 2.1 什么是假设检验 假设检验是一种统计…

第二节 C++ 数据类型

文章目录 1. 概述1.1 数据类型的重要作用 (了解) 2. 数据类型2.1 什么是进制 ?2.1.1 存储单位 2.2 整数类型2.2.1 整数类型使用2.2.2 超出范围2.2.3 关键字 sizeof 2.3 实型(浮点型)2.3.1 setprecision()函数2.3.2 科学计数 (了解即可) 2.4 字符型2.4.1 字符型定义2.4.2 ASCII…

树-用Java托举

再讲完前面几个数据结构后&#xff0c;下面&#xff0c;我们开始对树进行一个讲解分析 树 引言 树是一种重要的数据结构&#xff0c;在计算机科学中有着广泛的应用。树是由节点和边组 成的非线性数据结构&#xff0c;具有层次结构和递归定义的特点。每个节点可以有多个子 节点…

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录&#xff1a; 本书特色&#xff1a; 问题描述 报错信息如下 Description:An attempt…

Docker 命令(二)

查看 docker 版本信息 docker version #查看版本信息docker 信息查看 docker info Client:Context: defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers: 0 …

get请求传入[ ]这类字符 返回400错误解决

问题描述 使用get请求查询&#xff0c;传入特殊字符 []时&#xff0c;接口报错。 分析原因 高版本的tomcat&#xff0c;有个新特性&#xff1a; 严格按照RFC 3986规范进行访问解析&#xff0c;而 RFC3986规范定义了Url中只允许包含英文字母&#xff08;a-zA-Z&#xff09;、数…