Sigmoid Belief Net

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

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

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

2. Wake Sleep算法

Hinton et. al. 1995年提出了Wake-Sleep算法,用一个近似的方法来模拟条件概率 p(...,sj,...|si) 的发生。
一个是条件独立:
p(...,sj,...|si)=p(...|si)p(sj|si)p(...|si)
另一是引入识别权值(Recognition weights) rij 来计算 sj 的条件概率:
p(sj=1|si)=11+exp(bjisirij)
在Wake阶段,固定 rij 学习 wij
在Sleep阶段,固定 wij 学习 rij
由于Explaining away的出现,实际上,条件独立并不成立,使得在Sleep阶段学习得到的条件概率 p(...,sj,...|si) 与实际情况发生了偏差。

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

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值