RBM学习算法

RBM学习算法RBM 基础 RBM 模型是基于能量的模型 对于一组给定的状态 v h nbsp v h 其能量函数为 E nbsp nbsp v h nbsp i 1 nbsp N nbsp v nbsp nbsp a nbsp i nbsp v nbsp i nbsp nbsp j 1 nbsp N nbsp h nbsp nbsp b nbsp j nbsp h nbsp j nbsp nbsp i 1 nbsp N nbsp v nbsp nbsp nbsp j 1 nbsp N nbsp h nbsp nbsp h nbsp j nbsp w nbsp ji nbsp v nbsp i nbsp nbsp E theta v h displaystyle sum i 1 N v a iv i displaystyle s

RBM基础

RBM模型是基于能量的模型。对于一组给定的状态 (v.h) ,其能量函数为

Eθ(v,h)=i=1Nvaivij=1Nhbjhji=1Nvj=1Nhhjwjivi

利用上述能量函数给出

(v.h)
的联合分布为

Pθ(v,h)=1ZθeEθ(v,h)



其中, θ=(W,a,b) , W=[wij]NvNh 表示 vi hj 之间的连接权重, a=(a1,a2,...,aNv) b=(b1,b2,...,bNh) 分别表示观测单元 v ,隐藏单元

h
的偏置。 Zθ=v,heEθ(v,h)

RBM的学习算法

求解更好拟合训练数据的RBM参数 θ ,方法是使用极大似然法,极大似然函数为

Lθ=Pθ(v)=hPθ(v|h)

设训练样本集合 S=(v1,...,vNs) ,对数极大似然函数为

lnLθ,S=ln(n=1NsPθ(vn))=n=1NslnPθ(vn)


此时,RBM学习的目标为极大化上式,使用梯度上升(gradient ascent),通过如下的迭代格式来求解

θ:=θ+ηlnLθ,Sθ

η 是学习率,问题的关键是求解梯度 lnLθ,Sθ ,省略 Lθ,S 中的 θ ,对于单个样本 v 计算似然函数

lnLS=lnP(v)=ln(1ZheE(v,h))=lnheE(v,h)lnZ=lnheE(v,h)lnv,heE(v,h)


上式中红色 v 表示单个训练样本,黑色 v 表示任意的训练样本。针对单个样本

v
进一步计算梯度(省略了推导过程)

LSθ=lnP(v)θ=hP(h|v)E(v,h)θ+v,hP(v,h)E(v,h)θ

上式中包含两个期望,第一个 hP(h|v)E(v,h)θ 为能量梯度 E(v,h)θ 在分布 P(h|v) 下的期望,对应每个训练样本数据遍历其可能的隐藏数据的值,可以求得;第二个 v,hP(v,h)E(v,h)θ 为能量梯度 E(v,h)θ 在分布 P(v,h) 下的期望,对应于每个可能的 v 求其隐藏数据的值,计算量非常大。其中,



v,hP(v,h)E(v,h)θ=vhP(v)P(h|v)E(v,h)θ=vP(v)hP(h|v)E(v,h)θ

因此,只需讨论 hP(h|v)E(v,h)θ 的计算,下面对 θ=(wij,ai,bj) 分别进行计算(省略推导过程)

hP(h|v)E(v,h)wijhP(h|v)E(v,h)aihP(h|v)E(v,h)bj=P(hi=1|v)vj=vi=P(hj=1|v)

对于单个训练样本 v ,各个梯度为

lnP(v)wi,j=hP(h|v)E(v,h)wi,j+v,hP(v,h)E(v,h)wi,j=P(hi=1|v)vjvP(v)P(hi=1|v)vj


lnP(v)ai=hP(h|v)E(v,h)ai+v,hP(v,h)E(v,h)ai=vivP(v)vi


lnP(v)bj=hP(h|v)E(v,h)bj+v,hP(v,h)E(v,h)bj=P(hi=1|v)vP(v)P(hi=1|v)


以上是针对单个训练样本的情形,在整个样本空间 S=v1,...,vns 上有 LSθ=lnP(vm)θ 从而可得如下公式,

lnP(v)wi,jlnP(v)ailnP(v)bj=m=1Ns[P(hi=1|vm)vmjvP(v)P(hi=1|v)vj]=m=1Ns[vmivP(v)vi]=m=1Ns[P(hi=1|vm)vP(v)P(hi=1|v)]

上述三个公式中, v 项的计算复杂度为 O(2Nv+Nh) ,可以通过MCMC方法如Gibbs进行采样,并用样本对 v 项进行估计。k步Gibbs抽样过程如下

h(0)P(h|v(0))h(1)P(h|v(1))...   ,v(1)P(v|h(0)),v(2)P(v|h(1)),v(k)P(v|h(k1))

这样得到的 v(k) 可以用来估计上式中的 v 项,根据MCMC采样的思想,将上述三个式子进一步推导,并使用 v(k) 来近似可得

lnP(v)wi,jlnP(v)ailnP(v)bj=m=1Ns[P(hi=1|vm)vmjvP(v)P(hi=1|v)vj]m=1Ns[P(hi=1|vm)vmjP(hi=1|v(k))v(k)j]=m=1Ns[vmivP(v)vi]m=1Ns[vmiv(k)i]=m=1Ns[P(hi=1|vm)vP(v)P(hi=1|v)]m=1Ns[P(hi=1|vm)P(hi=1|v(k))]

但是常规的gibbs采样的 k 需要足够大,才能使得采集到的样本符合RBM分布,Hinton教授发明了对比散度(Contrastive Divergence,CD)方法,通过使用训练样本集

S
中的观测数据 vi 来初始化 v(0) 来减少状态转移次数,具体做法是在算法的开始将可见状态 v(0) 设置为一个训练样本,并使用条件概率 P(hj=1|v(0)) 对每个隐藏单元抽取0~1之间的概率值,然后利用 P(vi=1|h(0)) 对观测单元抽取概率值,这样就得到 v(1) ,一般 v(1) 就够了,即 k=1 ,如下是CD-k算法的主要步骤:
CDK(k,S,RBM();Δw,Δa,Deltab)
– 输入: k,S,RBM(W,a,b)
– 输出: Dw,Da,Db
step 1 初始化: Δw=0,Δa=0,Δb=0
Step 2 对S中的样本循环生成 Δw,Δa,Δb

FOR vS DO{
v(0):=vFOR t=0,1,...,k1 DO{
h(t)=sample_h_given_v(v(t),RBM(w,a,b));v(t+1)=sample_v_given_h(h(t),RBM(w,a,b));}FOR i=1,2,...,Nv;j=1,2,...,Nh DO{
Δwi,j=Δwi,j+[P(hj=1|v(0))v(0)iP(hj=1|v(k))v(k)i];Δai=Δai+[v(0)iv(k)i]; Δbj=Δbj+[P(hj=1|v(0))P(hj=1|v(k))];}}

其中,记 phi=Pvi=1|h),i=1,2,...,Nv  , sample_v_given_h 的计算可写成

FOR vS DO{
generateRadom ri[0,1];vi={
1,if ri<phi;0,otherwise.
}

的计算与 sample_v_given_h 类似.
将上述的 CDk 算法用于完整的RBM算法如下
Step 1 初始化
(1)给定训练样本集合 S(|S|==Ns)
(2)给定训练周期 J ,学习率

η
以及 CDk 算法参数 k
(3)指定可见层和隐藏层的单元数目

Nv,Nh

(4)初始化偏置向量以及权重矩阵 (a,b,w)
Step 2 训练

FOR iter=1,2,...,J DO{
CDK(k,S,RBM(W,a,b));UPDATE W=W+η(1NsΔW),a=a+η(1NsΔa),b=b+η(1NsΔb)}


使用Python实现上述算法的示例

























版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224063.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:46
下一篇 2026年3月17日 下午12:47


相关推荐

  • killall 后面信号_Linux命令之killall

    killall 后面信号_Linux命令之killallkillall 选项 signal 信号 name killall 发送一条信号给所有允许任意指定命令的进程 如果没有指定信号名 则发送 SIGTERM 信号可以是名字或数字 只有信号 0 检查进程是否存在 只能以数字方式指定 如果命令名包括斜杠 那么执行该特定文件的进程将被杀死 这与进程名无关 Killall 进程杀不死自己 但可以杀死其他 killall 进程 1 选项 e e

    2026年3月18日
    1
  • Gliffy confluence插件的激活成功教程

    Gliffy confluence插件的激活成功教程转自 https haoluobo com 2011 09 gliffy confluence creak 参考 gliffyconflu 插件 gliffy confluence plugin 5 1 ja 激活成功教程 Gliffy 是一个在线画流程图的工具 或者简单的说 Gliffy 就是 web 版的 Visio Gliffy 的用户体验非常的好 加打开浏览器就可以使用 使用起来非常的方便

    2026年3月16日
    3
  • KOBAS数据库使用指南

    KOBAS数据库使用指南KOBAS KEGGOrtholog 是由北京大学魏文丽课题组开发的数据库 主要功能是用于基因 蛋白质功能注释和功能富集 随着数据量不断增加 KOBAS 至今为止共经历了 3 次升级 除了 1 0 版本的 KEGG 代谢通路之外 2 0 版本增加了 PIDCurated PIDBioCarta PIDReactome BioCyc Reactome 和 Panther 等数据库 除此之外还增加了疾病的查询 使得 KOBAS 的功能更加强大 而 3 0 版本更是增加了 lncRNA

    2026年3月19日
    3
  • LLM学习指南(四)—— 预训练语言模型(PLM) – 教程

    LLM学习指南(四)—— 预训练语言模型(PLM) – 教程

    2026年3月12日
    4
  • C:Altas/Libgdx格式图片拆分工具

    C:Altas/Libgdx格式图片拆分工具前面介绍过 TexturePacke 生成 Plist 格式图片的拆分工具 C TexturePacke 拆分工具 在后续的项目中还涉及到 Altas Libgdx 格式图片的拆分 发现对于该格式的拆分介绍的比较少 先看一下 Altas Libgdx 格式 注意 有的版本 Spine 生成的数据文件会多一行整个大图的大小 请删除 不支持 Spine 文件生成的多图对应一个数据文件的处理 如 aaa

    2026年3月16日
    1
  • web 应用程序_web应用程序是什么意思

    web 应用程序_web应用程序是什么意思1、HTTP通讯协议根据联机方式与所使用的网络服务不同,会有不同的通信协议。例如,发送信件时会使用SMTP(SimpleMailTransferProtocol,简单邮件传输协议),传输文件会

    2022年8月3日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号