CD(Contrastive Divergence)

一、DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,用于建立一个观察数据和标签之间的联合分布。
               

     
      二、DBN的训练
     CD(Contrastive Divergence)是log-likelihood gradient的近似算法,同时是a successful update rule for training RBMs,用于训练RBM。

    文章末尾,有cd算法的详细介绍。

       
       在训练时, Hinton采用了 逐层无监督 的方法来学习参数。首先把数据向量x和第一层隐藏层作为一个 RBM , 训练出这个RBM的参数(连接x和h 1 的权重, x和h 1 各个节点的偏置等等), 然后固定这个RBM的参数, 把h 1 视作可见向量, 把h 2 视作隐藏向量, 训练第二个RBM, 得到其参数, 然后固定这些参数, 训练h 2 和h 3 构成的RBM, 具体的训练算法如下:
     
       CD的训练过程中用到了Gibbs 采样,即在训练过程中,首先将可视向量值映射给隐单元,然后用隐层单元重建可视向量,接着再将可视向量值映射给隐单元……反复执行这种步骤。
       k-Gibbs的过程如下:

        其中, 是model distribution, 是training set distribution
         

     DBN训练算法:
     
   DBN运用CD算法逐层进行训练,得到每一层的参数Wi和ci用于初始化DBN,之后再用监督学习算法对参数进行微调。
     
   三、经典的DBN网络结构
         经典的DBN网络结构是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.
          

   DBN 在训练模型的过程中主要分为两步:
    第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;
    第 2 步:在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.

      上述训练模型中第一步在深度学习的术语叫做预训练,第二步叫做微调。最上面有监督学习的那一层,根据具体的应用领域可以换成任何分类器模型,而不必是BP网络。



关于贝叶斯网络“解去”(explaining away)

当我们建立多因一果的BN结构时,如果其中一个原因已经确定了结果的形成,那其他原因就应该忽略。


上图为一个简单的DBN模型,在我们有任何证据证明C成立之前,A和B是独立的证据。也就是说,改变一个没有影响到其他。但只要我们获得了证据证明C,A的概率变化必然引起B概率相反的变化,反之亦然。它们是相互竞争地解释C的成立.这就是说,只要我们用A把C成立这件事解释过去了,那B作为C的原因也就没有意义了。
cd算法:

 Oliver Woodford:Notes on Contrastive Divergence(google可下载)



CD(Contrastive Divergence)算法由Geoffrey Hinton提出,用于求ML(Maximum-Likelihood)问题的近似解。


问题描述


假设模型为为模型参数,则的概率可以表示为

. (1)
其中 是归一化函数,因为概率和等于1。
假设训练集是 ,根据最大似然原则,要使得训练集的联合概率最大,即最大化
(2)
若对上式取负对数,则问题就相当于最小化能量
  (3)
这就是ML问题的描述,下面以几个例子说明如何求解。


ML问题求解


  • 假如模型为单高斯分布,即,则. 显然,此时。分别对(3)求求偏导,由导数等于零可以求出解析解,概率统计或者统计信号的书都会有详细的求解。
  • 若模型为多个高斯分布的和(混合高斯模型),即. 此时,. 同样可以通过求偏导得出解析解,但是模型参数之间是互相依赖的(偏导中包含了其他参数),并不能简单地通过导数等于零解出参数。这时候可以用GD(Gradient Descent)和Line Search找到局部最小点。
  • 若模型为多个高斯分布的乘积,即. 此时不再是常数(取几个特殊指即可知)。因此能量值只能通过积分计算,然后再通过GD寻找最小值。但对于高维的数据或者参数空间来说,计算这个积分显然是相当耗时的。CD算法的作用就在于此,即使对于无法准确计算的能量函数,CD也可以提供有效的梯度计算方法,用于求解模型参数。


    CD算法原理


    对能量函数(3)求偏导


    其中,最后一项即为给定 的期望值,该项显然是可以直接求出的,因为 是给定的训练集。而第一项可以进一步展开,


    即分布 的期望值。但该分布的样本无法直接获取,因为 无法直接计算,但可以通过MCMC(Markov Chain Monte Carlo)采样,把训练集的样本转换为指定的分布。关于MCMC和Gibbs Sampling可参阅统计之都的文章, LDA-math-MCMC 和 Gibbs Sampling
    假设 是MCMC的第 步转换, 是输入训练集,则 即为所需分布 . 综上所述,即可得


    实际使用中MCMC并不需要无限步,因为随着不断迭代,输入数据的分布与目标分布会越来越接近。Hinton进一步指出,即使每次只做一步MCMC,ML问题同样可以收敛。因此,使用Gradient Descent,每一次迭代,参数更新为


    其中, 是GD的步长。

    MCMC算法地址:http://i-sharelife.diandian.com/post/2013-04-11/40048273463
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值