概率生成模型(generative model)的目标就是要最大化输入数据x的概率p(x),信念网络是图理论与概率论结合,信念网(Belief Nets)需要解决两个问题:
1. 推理(inference),推导未观察变量的状态。
2. 学习(learning),调整权值使得观察变量生成的概率最大。
早期的图模型是人工定义图结构(各节点之间的关系)和各变量之间的条件概率。对于随机生成神经网来说,结构和条件概率这些知识需要通过学习从训练数据中获得。
有两类随机生成神经网,一类是基于能量模型的Boltzmann Machine;一类是因果的Sigmoid Belief Net。
Boltzmann Machine定义了观察变量v和未观察变量h的联合分布概率p(v,h)=e−E(v,h)∑v,he−E(v,h)p(v,h)=\frac{e^{-E(v,h)}}{\sum_{v,h}e^{-E(v,h)}},E(v,h)=−∑iviai−∑jhjbj−∑i,jvihjwijE(v,h)=-\sum_i v_ia_i-\sum_jh_jb_j-\sum_{i,j}v_ih_jw_{ij}是能量函数,通过调整权值可改变概率。有了联合分布概率,从而很容易得到观察变量的概率p(v)=∑he−E(v,h)∑v,he−E(v,h)p(v)=\frac{\sum_he^{-E(v,h)}}{\sum_{v,h}e^{-E(v,h)}},学习调整权值的目的就是极大化观察变量的似然函数−logp(v)-\log p(v)

1. SBN似然函数和对权值的偏导

SBN的结构则有更好的因果(causal)形式,其中未观察变量被看作观察变量发生的原因。SBN中定义的是未观察变量条件下的观察变量条件概率p(v|s1,s2,s3)=p(v|s1)p(s1|s2)p(s2|s3)p(s3)p(v|s_1,s_2,s_3)=p(v|s_1)p(s_1|s_2)p(s_2|s_3)p(s_3)
对于任一节点sis_i,其状体为1的条件概率为:
pi=p(si=1|...,sj,...)=11+exp(−bi−∑jsjwij)p_i=p(s_i=1|...,s_j,...)=\frac{1}{1+exp(-b_i-\sum_j s_j w_{ij})}
因此,节点sis_i,其状态为1的概率为:
p(si=1)=∑...,sj,...pip(...,sj,...)p(s_i=1)=\sum_{...,s_j,...}p_ip(...,s_j,...)
节点sis_i状态为1的似然函数为:
log(∑...,sj,...pip(...,sj,...))\log (\sum_{...,s_j,...}p_ip(...,s_j,...))
节点sis_i状态为0的似然函数为:
log(∑...,sj,...(1−pi)p(...,sj,...))\log (\sum_{...,s_j,...}(1-p_i)p(...,s_j,...))
分别对1状态和0状态求似然函数对wijw_{ij}的偏导,状态为1时的偏导为:
∑...,sj,...pi(1−pi)p(...,sj,...)sj∑...,sj,...pip(...,sj,...)=∑...,sj,...p(...,sj,...|si)(si−pi)sj\frac{\sum_{...,s_j,...}p_i(1-p_i)p(...,s_j,...)s_j}{\sum_{...,s_j,...}p_ip(...,s_j,...)}=\sum_{...,s_j,...}p(...,s_j,...|s_i)(s_i-p_i)s_j
状态为0时的偏导为:
−∑...,sj,...pi(1−pi)p(...,sj,...)sj∑...,sj,...(1−pi)p(...,sj,...)=∑...,sj,...p(...,sj,...|si)(si−pi)sj-\frac{\sum_{...,s_j,...}p_i(1-p_i)p(...,s_j,...)s_j}{\sum_{...,s_j,...}(1-p_i)p(...,s_j,...)}=\sum_{...,s_j,...}p(...,s_j,...|s_i)(s_i-p_i)s_j
因此,SBN中sis_i节点似然函数对wijw_{ij}的偏导数为:
∑...,sj,...p(...,sj,...|si)(si−pi)sj\sum_{...,s_j,...}p(...,s_j,...|s_i)(s_i-p_i)s_j (1)
上式为(si−pi)sj(s_i-p_i)s_j对条件概率p(...,sj,...|si)p(...,s_j,...|s_i)的期望值,如果通过Monte Carlo采样算法来计算(1)式,需要模拟条件概率p(...,sj,...|si)p(...,s_j,...|s_i)的发生,这是一个非常困难的事情。如果p(...,sj,...|si)p(...,s_j,...|s_i)条件独立,即:
p(...,sj,...|si)=p(...|si)p(sj|si)p(...|si)p(...,s_j,...|s_i)=p(...|s_i)p(s_j|s_i)p(...|s_i)
通过简化,从而使得(1)式可以计算,但是由于Explaining away现象的出现,条件独立的条件不存在,因此(1)式计算非常困难。

2. Wake Sleep算法

Hinton et. al. 1995年提出了Wake-Sleep算法,用一个近似的方法来模拟条件概率p(...,sj,...|si)p(...,s_j,...|s_i)的发生。
一个是条件独立:
p(...,sj,...|si)=p(...|si)p(sj|si)p(...|si)p(...,s_j,...|s_i)=p(...|s_i)p(s_j|s_i)p(...|s_i)
另一是引入识别权值(Recognition weights)rijr_{ij}来计算sjs_j的条件概率:
p(sj=1|si)=11+exp(−bj−∑isirij)p(s_j=1|s_i)=\frac{1}{1+exp(-b_j-\sum_i s_i r_{ij})}
在Wake阶段,固定rijr_{ij}学习wijw_{ij};
在Sleep阶段,固定wijw_{ij}学习rijr_{ij}。
由于Explaining away的出现,实际上,条件独立并不成立,使得在Sleep阶段学习得到的条件概率p(...,sj,...|si)p(...,s_j,...|s_i)与实际情况发生了偏差。

3. 最小描述字长(description length)与Wake Sleep算法

假设在SBN中,隐藏层节点的所有状态构成一个编码字典,α\alpha为一个码字,对于任一输入d用码字α\alpha进行编码总共花费的字长为(包括编码字典的花费和输入d的编码花费,分别对应公式中第一项和第二项):
C(α,d)=C(α)+C(d|α)=∑l∈L∑j∈lC(sαj)+∑iC(sdi|α)C(\alpha ,d)=C(\alpha)+C(d|\alpha)=\sum_{l\in L}\sum_{j\in l}C(s_j^\alpha)+\sum_iC(s_i^d|\alpha) (2)
其中,C(sαj)C(s_j^\alpha)为节点j的编码字长:
C(sαj)=−sαjlogpαj−(1−sαj)log(1−pαj)C(s_j^\alpha)=-s_j^\alpha \log p_j^\alpha -(1-s_j^\alpha)\log (1-p_j^\alpha)
(2)式中第一项为隐藏层节点编码字长,第二项为输入层节点字长。
所以输入d的平均编码字长为:
C(d)=∑αp(α)C(α,d)−(−∑αp(α)logp(α))C(d)=\sum_\alpha p(\alpha)C(\alpha,d)-(-\sum_\alpha p(\alpha)\log p(\alpha)) (3)
其中p(α)p(\alpha)为码字α\alpha用于编码的概率,式中第二项对应编码字典的平均字长。
在Wake Sleep算法中,p(α)p(\alpha)由识别权重(Recognition Weights),可以表示为输入d的条件概率Q(α|d)Q(\alpha|d),公式(3)重新改写如下:
C(d)=∑αQ(α|d)C(α,d)−(−∑αQ(α|d)logQ(α|d))C(d)=\sum_\alpha Q(\alpha|d)C(\alpha,d)-(-\sum_\alpha Q(\alpha|d)\log Q(\alpha|d)) (4)
在Sleep学习阶段,C(α,d)C(\alpha,d)概率分布不变,因为ww不变,需要调整rijr_{ij},使得C(d)C(d)取值最小。Q(α|d)Q(\alpha|d) 只有是如下Boltzmann分布时,C(d)才最小(−logp(d)-\log p(d),字长对应能量):
P(α|d)=exp(−C(α,d))∑βexp(−C(β,d))P(\alpha|d)=\frac{exp(-C(\alpha,d))}{\sum_\beta exp(-C(\beta,d))}
因为,
logP(α|d)=−C(α,d)−log∑βexp(−C(β,d))\log P(\alpha|d)=-C(\alpha,d)-\log \sum_\beta exp(-C(\beta,d))
所以,
∑α(P(α|d)−Q(α|d))logP(α|d)=∑α(Q(α|d)−P(α|d))C(α,d)\sum_\alpha (P(\alpha|d)-Q(\alpha|d))\log P(\alpha|d)=\sum_\alpha (Q(\alpha|d)-P(\alpha|d))C(\alpha,d)
所以,(4)式进一步可以改写如下:
C(d)=∑αP(α|d)C(α,d)−(−∑αP(α|d)logP(α|d))+∑αQ(α|d)logQ(α|d)P(α|d)C(d)=\sum_\alpha P(\alpha|d)C(\alpha,d)-(-\sum_\alpha P(\alpha|d)\log P(\alpha|d))+\sum_\alpha Q(\alpha|d)\log \frac{Q(\alpha|d)}{P(\alpha|d)}
最后一项为KL散度距离,非负,为非最优编码方案下多余出来的编码字长。

Sigmoid Belief Net相关推荐

  1. Sigmoid信念网络(SBN)

    1.Sigmoid信念网络是一种有向图模型 2.SBN它可以逼近任意二值分布函数,还可以进行采样 3.求解SBN可以用梯度法,要利用MC近似梯度 4.醒眠算法也是求解SBN的一种算法,它是一种不太精确 ...

  2. 机器学习笔记之Sigmoid信念网络(二)醒眠算法

    机器学习笔记之Sigmoid信念网络--醒眠算法 引言 回顾 Sigmoid \text{Sigmoid} Sigmoid信念网络的模型表示 Sigmoid \text{Sigmoid} Sigmoi ...

  3. 贝叶斯深度学习2020 最新研究总结

    作者丨Ziyue Wu@知乎 来源丨https://zhuanlan.zhihu.com/p/283633149 编辑丨极市平台 本文仅作学术分享,若侵权,请联系后台作删文处理. 一个综合的人工智能系 ...

  4. 生成式模型和判别式模型(转)

    判别式模型(Discriminative Model):直接对条件概率p(y|x)进行建模 生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式 生成式模型更 ...

  5. complementary prior

    Complementary Prior 解决了多层网络中层间参数W无法计算的问题.     多层有向网络如下图,如果计算 W,我们需要知道第一个隐层的后验概率,那么会遇到几个问题: 多层sigmoid ...

  6. 生成式模型与判别式模型—大厂笔试汇总

    文章目录 一.习题 二.总结 一.习题 1.以下属于生成式模型的是:( C ) A.SVM B.随机森林 C.隐马尔可夫模型HMM D.逻辑回归 常见的生成式模型有 隐马尔可夫模型HMM.朴素贝叶斯模 ...

  7. 机器学习篇—大厂笔试题

    文章目录 一.单选 二.多选 一.单选 1.当在一个决策树中划分一个节点时,以下关于"信息增益"的论述正确的是 ( C ) 1.较不纯的节点需要更多的信息来描述总体 2.信息增益可 ...

  8. 【计算机视觉算法岗面经】“吐血”整理:2019秋招资料

    相关链接:[计算机视觉算法岗面经]"吐血"整理:2019秋招面经 //2018/09/27 兵荒马乱.浩浩荡荡的秋招终于差不多要结束了. 秋招这段时间真是感慨很多,一时得意一时失意 ...

  9. 生成模型和判别模型学习

    生成模型和判别模型 在机器学习中,一般将学习方式分为监督式学习和非监督式学习方式. 回忆一下,监督学习的任务就是从数据中学习一个模型,应用这一模型,对给定的输入X预测相应的输出Y.这个模型的一般形式为 ...

  10. 机器学习 之 生成式模型 VS 判别式模型

    [摘要] 判别式模型,就是只有一个模型,你把测试用例往里面一丢,label就出来了,如SVM.生成式模型,有多个模型(一般有多少类就有多少个),你得把测试用例分别丢到各个模型里面,最后比较其结果,选择 ...

最新文章

  1. ChemDataExtractor:从PDF、HTM、文本等中提取化学数据
  2. 测序数据质量统计软件fastqc,multiqc
  3. c 服务器通信和文件传输,服务器、终端和文件传输方法
  4. Thread的start()和join()方法
  5. SQL Server 分区表的创建方法与管理
  6. [libjingle学习笔记]编译注意事项
  7. 亚型多态性应用于元组的危险
  8. Python update 函数 - Python零基础入门教程
  9. net core框架介绍
  10. JAVA 入门(2)-如何编译源代码
  11. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法
  12. 药大保研计算机要求,药物分析专业保研经验贴
  13. 手机浏览器调用摄像头扫码
  14. openwrt路由器挂载sdcard为overlay
  15. 精品微信小程序校园第二课堂在线学习网+后台系统|前后分离VUE
  16. LabVIEW学习(一):认识LabVIEW
  17. android studio git 错误 unable to read askpass
  18. [附源码]java毕业设计高校奖学金评定管理系统
  19. 2022年全球与中国视频显示控制器行业发展趋势及投资战略分析报告
  20. 分页存储逻辑地址转物理地址

热门文章

  1. 关于RxJava2.0你不知道的事
  2. ubuntu18.04安装OpenCV3.4.12步骤及安装中遇到的一些问题
  3. hdu 5442 Favorite Donut 后缀数组
  4. ConvTrans: [Neurips 2019]
  5. linux-运维进阶-31 OpenSSL实现CA证书
  6. 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第二波)
  7. 2023广东海洋大学计算机考研信息汇总
  8. [WebGL入门]二十一,从平行光源发出的光
  9. android webview 手机兼容问题
  10. 苹果换原装电池_苹果手机换电池客户必看!苹果原装电池科普鉴别!