DBN(PoE and Contrastive Divergence)

把 <<[2002 Nuural Co mputation, 675]#######training products of experts by minimizing contrastive divergence>>这篇论文看了一遍,其实只看了一半

觉得PoE和contrastive divergence以及RBM学习算法这部分可以过了

主要意思是这样的:
1.RBM是PoE的一个特例
2.PoE可以用contrastive divergence来进行学习
3.contrastive divergence的学习方法大致是这样的:
本来是要进行极大似然学习的,也就是计算目标函数对权重的偏导数,并且使权重沿偏导数方向移动
但是偏导数计算量特别大,因为涉及到了Gibbs抽样(需要无限次),所以不用这个方法
发现了极大似然学习的目标函数等价于KL散度
更换了目标函数:极小化KL散度与CD1-KL散度的差
对这个新的目标函数求偏导数之后发现有两项是很容易计算的,第三项可以忽略掉
而且在实际应用中效果还不错


接下来的工作:
1. helmholtz machines and wake-sleep learning
2.啃大头。。。。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DBN(Deep Belief Network)是一种由多个受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)堆叠而成的深度学习模型,通过逐层训练实现无监督特征学习。PyTorch 是一个基于Python的深度学习库,提供了构建神经网络和进行前向传播、反向传播等操作的工具函数。 要使用PyTorch实现DBN,需要完成以下步骤: 1. 导入PyTorch库和其他必要的依赖项。 2. 定义RBM模型:包括定义网络结构、初始化权重参数、定义可见层和隐藏层的计算过程等。 3. 定义DBN模型:由多个RBM层组成,每个RBM层的输出作为下一层的输入。 4. 定义损失函数和优化器:在DBN中通常使用对比散度(contrastive divergence)作为损失函数,并选择相应的优化器(如随机梯度下降)。 5. 进行训练:根据给定的训练数据,进行前向传播和反向传播,并更新模型参数,以使损失函数最小化。 6. 进行预测:使用已训练好的模型,在新的数据上进行前向传播,得到预测结果。 在实现DBN时,需要注意以下几点: 1. PyTorch提供了灵活的张量操作和自动微分功能,可以方便地定义和更新模型参数。 2. 可以使用PyTorch的内置函数和库,如torch.nn和torch.optim,来简化模型的定义和优化过程。 3. 在训练DBN时,可以逐层进行预训练(pre-training)和微调(fine-tuning):首先对每个RBM层进行无监督学习,逐层复用已训练好的权重初始化下一层;然后使用有标签的数据进行监督训练,微调整个DBN模型。 4. DBN的实现过程中,需要考虑超参数的选择和调整,如学习率、训练迭代次数等,以优化模型的性能。 总之,使用PyTorch实现DBN需要充分理解DBN的原理和PyTorch库的使用方法,并合理设计网络结构、损失函数和优化器,同时选择合适的超参数进行训练和调优。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值