theano-windows学习笔记十五——受限玻尔兹曼机

Posted 风翼冰舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了theano-windows学习笔记十五——受限玻尔兹曼机相关的知识,希望对你有一定的参考价值。

前言

终于到了最喜欢的模型: 受限玻尔兹曼机(RBM)了, 发现关于RBM是如何从能量模型发展过来的介绍非常不错, 而关于详细理论证明, 可以去看我前面的受限玻尔兹曼机的一系列博客.

国际惯例, 参考博客,超级强推第二个博客, 证明过程很给力:

Restricted Boltzmann Machines (RBM)

Contrastive divergence multi-layer RBMs

理论

基于能量的模型EBM

这个强烈去看看我前面的两篇关于概率有向图概率无向图模型的博客, 很简短. 基于能量的模型是将所有的感兴趣变量与一个标量能量关联起来. 学习对应着修改能量函数, 而使其具有应有的结构. 我们也经常希望这个模型具有很低的能量. 至于为什么? 我们经常举的一个例子, 将一个小球放到碗里, 这个球最终基本都会停留在碗底, 为什么?当然是势能最低啦,这就是我们说的最小化能量函数。

基于能量的概率模型通过能量函数定义了一个概率分布:

p(x)=eE(x)Z
其中分母是归一化因子,与概率模型中的归一化因子意义相同
Z=xeE(x)
优化过程就是针对训练集上的负对数似然进行随机梯度下降法训练, 和logistics回归一样,我们先定义一个对数似然, 然后损失函数就是负对数似然
L(θ,D)=1Nx(i)Dlogp(x(i))loss=L(θ,D)
其中 θ 是模型参数, D 是训练集,最终更新方法依旧是梯度下降,针对模型参数求解logp(x(i))θ

具有隐层的能量模型

你以为所有的模型都有隐层么?想想马尔科夫模型是怎么发展到隐马尔科夫模型的吧. 千万不要有这个错误的想法:所有的模型都有隐层。

上面说过能量模型是定义一个概率分布, 与所有的感兴趣变量相关, 当我们加入了除了输入单元 x 之外的隐单元后, 整个模型的关于输入单元的概率分布就变成了关于所有隐单元的边缘分布了
p(x)=hp(x,h)=heE(x,h)Z
为了看起来与能量模型中的第一个式子看起来像是双胞胎, 引入了一个自由能函数

F(x)=logh(eE(x,h))
这样 p(x) 就可以写成:
p(x)=eF(x)Z
其中 Z=xeF(x)

然后我们求一波导数:

logp(x)θ=(logeF(x)logZ)θ=(F(x)+logZ)θ=F(x)θeF(x^)ZF(x^)θ=F(x)θx^p以上是关于theano-windows学习笔记十五——受限玻尔兹曼机的主要内容,如果未能解决你的问题,请参考以下文章

theano-windows学习笔记十——多层感知机手写数字分类

Zabbix学习笔记(四十五)

Python学习笔记(十五)

Java学习笔记(十五):import关键字

Java学习笔记(十五):this关键字

python学习笔记(十五)-异常处理