受限玻尔兹曼机RBM简述与Python实现

本文介绍了生成式模型中的受限玻尔兹曼机(RBM),详细阐述其基本原理、训练过程,并提供了一个简单的Python实现。RBM作为一种早期的生成模型,常用于特征提取和降维。文章还对比了RBM与AutoEncoder的相似性和区别,并提到RBM在深度信念网络(DBN)中的应用。
摘要由CSDN通过智能技术生成

生成式模型

生成式模型的理念大同小异,几乎都是用一个模型产生概率分布来拟合原始的数据分布情况,计算两个概率分布的差异使用KL散度,优化概率模型的方法是最小化对数似然,可以用EM算法或梯度优化算法。
在这里插入图片描述
今天表现比较好的生成模型有VAE变分自编码器,GAN生成对抗网络和PixelRNN以及Seq2Seq等。而RBM则比它们要早很多,可以说是祖师爷级别的模型。

受限玻尔兹曼机

RBM模型是一种很早被提出的基于能量和概率的生成式模型,它拥有一个显层和一个隐层,层上有偏置,两层之前有一个权值矩阵W,只是看起来的话结构和单层神经网络并无区别。但是我们会定义这些神经元拥有“开启”或“关闭”的二值状态,为什么这样定义下面再说。
在这里插入图片描述
我们希望用一个概率分布来拟合数据分布,这个概率分布的定义如下。

在这里插入图片描述
其中我们先给出能量函数,再用能量函数的指数分布作为显层向量v和隐层向量h的联合分布概率密度。如果你和我一样,大学里学过统计物理的知识就会发现,这个形式就是玻尔兹曼分布,在描述粒子的分布时非常有用。
同样的,描述粒子分布的方法用在数据科学上也有不错的效果,实践也证明了这个概率密度往往能比较好的拟合数据。
但是仍然存在一个问题,hidden values是人为定义出来的;我们的训练数据只有显层输入v,这时我们也有方法推进训练,就是用贝叶斯公式,把上面的联合概率分布转为条件概率分布,如下。
在这里插入图片描述
形式就是前馈网络里的sigmoid激活加线性变换,得到的向量就是神经元是否被激活的概率。这时如果我们拿到显层输入,就能计算出隐层的概率分布。
也就是对给定的权值W和偏置bias_hidden、bias_visible,以及输入向量v,就能计算出h的概率分布。这就引申出了一种独特的训练方法,具体的推导可以看CD-k算法推导.

训练

总之更新公式是
∂ l n L θ ∂ w j , i = P ( h j = 1 ∣ v ) v i − ∑ v P ( v ) P ( h j = 1 ∣ v ) v i \frac{\partial lnL_\theta }{\partial w_{j,i} }=P\left ( h_j=1\mid \mathbf{v} \right )v_i-\sum_{\mathbf{v}}P\left ( \mathbf{v} \right )P\left ( h_j=1\mid \mathbf{v} \right )v_i wj,ilnLθ=P(hj=1v)vivP(v)P(hj

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值