最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。

本文主要讲解有关自编码器、深度信念网络和深度玻尔兹曼机的相关知识。

一、自编码器

1. 自编码器

自编码器(auto-encoder,AE)是一个只有一个隐藏层的神经网络,它先对输入x进行编码,再对编码结果进行解码,我们希望能够得到和输入x非常相似的输出y(最理想情况就是输入和输出完全一样)。则编码所得到的结果就可以看作是该输入数据的特征。对于该目标更新网络参数,从而使其效果达到最优,这就构建了一个自解码器。

如上图所示,从输入x到隐藏层a之间就是编码过程,从隐藏层a到输出y之间就是解码过程。更具体的, a = f ( W 1 x + b 1 ) a=f(W_1x+b_1) a=f(W1​x+b1​), y = W 2 a + b 2 y=W_2a+b_2 y=W2​a+b2​, W 1 W_1 W1​是输入层和隐藏层之间的权重, b 1 b_1 b1​是输入层和隐藏层之间的偏置, W 2 W_2 W2​是隐藏层和输出层之间的权重, b 2 b_2 b2​是隐藏层和输出层之间的偏置, f ( ) f() f()是激活函数。我们的目标是使得 y ≈ x y\approx x y≈x。为了评价输出值与真实值(输入值)之间的误差,还需要设置一个损失函数 E ( x , y ) E(x,y) E(x,y)。

2. 稀疏自编码器

从自动编码器获得有用特征的一种方法是限制隐藏层的节点个数比输入层少,这样将使自动编码器捕捉训练数据中最显著的特征,这样的自动编码器叫稀疏自编码器(sparse auto-encoder)。也就是说用少量的特征就可以还原原始输入数据。与普通的自编码器不同的是,稀疏自编码器中的总损失函数为:
J ( W , b ) = E ( x , y ) + γ ∑ j D H K L ( ρ ∣ ∣ ρ j ^ ) J(W,b)=E(x,y)+\gamma\sum_j^{D_H}KL(\rho||\hat{\rho_j}) J(W,b)=E(x,y)+γj∑DH​​KL(ρ∣∣ρj​^​)
其中 γ \gamma γ是稀疏控制参数, D H D_H DH​是隐藏层节点的个数, K L ( ρ ∣ ∣ ρ j ^ ) KL(\rho||\hat{\rho_j}) KL(ρ∣∣ρj​^​)是KL散度,又称相对熵,其定义如下:
K L ( ρ ∣ ∣ ρ j ^ ) = ρ log ⁡ ρ ρ j ^ + ( 1 − ρ ) l o g 1 − ρ 1 − ρ j ^ KL(\rho||\hat{\rho_j})=\rho\log\frac{\rho}{\hat{\rho_j}}+(1-\rho)log\frac{1-\rho}{1-\hat{\rho_j}} KL(ρ∣∣ρj​^​)=ρlogρj​^​ρ​+(1−ρ)log1−ρj​^​1−ρ​
式中, ρ j ^ \hat{\rho_j} ρj​^​表示隐藏层第j个节点的平均活跃度, ρ \rho ρ表示目标平均活跃度。

3. 堆栈自编码器

简单来说,堆栈自编码器(stacked auto-encoder,SAE)就是将多个自编码器串联堆叠起来,将前一个自编码器的输出作为下一个自编码器的输入进行训练。这样做的目的是通过加深网络的层数,从而提取到输入数据更加抽象的特征。由于对网络的权重进行随机初始化时容易发生陷入局部最优解(而不是全局最优解)的问题,对此采取的办法是进行预训练(pretraining),它的思想是对网络逐层进行训练,只考虑相邻两层从而得到最优的参数,并把该参数作为权重初始化的值(微调)。

对于分类问题来说,还需要在SAE的基础上另加一个额外的输出层,从而输出是某一类别的可能性大小。此时只有原SAE中的初始参数是通过预训练得到,而新输出层和旧输出层之间的初始参数随机赋值得到。

二、深度信念网络和深度玻尔兹曼机

1. 受限玻尔兹曼机

受限玻尔兹曼机(restricted Boltzmann machines, RBM)的本质是一种自编码器,它由可视层和隐藏层组成,可视层其实就是输入层,只不过名称不同。可视层和隐藏层之间的神经元采用对称的全连接,而层内的神经元之间没有连接。所有的神经元只有1和0两种状态,分别表示激活和未激活。

在RBM中还有一些能量函数和概率函数等,但是我目前还没有搞懂它们的作用,所以就不详细介绍了,想了解更多请参考大话深度信念网络。由于最后推导得出的公式比较难计算,所以又提出了通过Gibbs(吉布斯)采样的方法来近似计算,后来还提出了对比散度(contrastive divergence)算法更高效的方式来近似计算。

2. 深度信念网络

深度信念(置信)网络(deep belief network, DBN)类似于堆栈自编码器,置信就是可能性的意思。它的思想是把多个受限玻尔兹曼机串联堆叠起来形成一个更深的网络,其顶部两层(靠近输出层的层)之间的连接是双向的,而其他所有层之间的连接是单向的,箭头指向最接近数据的层。类似于堆栈自编码器,在对该模型进行训练时,也可以采用预训练的方式来避免陷入局部最优解。

3. 深度玻尔兹曼机

深度玻尔兹曼机(deep Boltzmann machines, DBM)与深度信念网络类似,都是右多个受限玻尔兹曼机串联堆叠而形成的一个深层神经网络,与深度信念网络相区别的是DBM的任意两层之间都是双向连接的。

深度学习:自编码器、深度信念网络和深度玻尔兹曼机相关推荐

  1. 万字长文带你看尽深度学习中的各种卷积网络

    来源:AI科技评论 摘要:深度学习中的各种卷积网络大家知多少? 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,这篇文章非常值得一读.Kunlun Bai 是 ...

  2. 基于深度学习的SDN家庭网关加密网络流量分类

    写在前面: 本文翻译供个人研究学习之用,不保证严谨与准确 github链接:https://github.com/WithHades/network_traffic_classification_pa ...

  3. 【1】深度学习之饮水思源:从感知机到深度网络

    Java语言实现一:https://github.com/ivan-vasilev/neuralnetworks Java语言实现二:http://deeplearning4j.org/zh-abou ...

  4. 深度学习中的生成对抗网络GAN

    转载:一文看尽深度学习中的生成对抗网络 | CVHub带你看一看GANs架构发展的8年 (qq.com) 导读 生成对抗网络 (Generative Adversarial Networks, GAN ...

  5. 【深度学习】快照集成等网络训练优化算法系列

    [深度学习]快照集成等网络训练优化算法系列 文章目录 1 什么是快照集成? 2 什么是余弦退火学习率? 3 权重空间中的解决方案 4 局部与全局最优解 5 特别数据增强 6 机器学习中解决数据不平衡问 ...

  6. 【深度学习】像素级分割网络新思路之DeepLabv3+

    [深度学习]像素级分割网络新思路之DeepLabv3+ 1 版本情况 2 引言&相关工作 3 空洞卷积(Dilated/Atrous Convolution) 4 DeepLabv3+ 5 深 ...

  7. 深度学习之卷积神经网络(12)深度残差网络

    深度学习之卷积神经网络(12)深度残差网络 ResNet原理 ResBlock实现 AlexNet.VGG.GoogleLeNet等网络模型的出现将神经网络的法阵带入了几十层的阶段,研究人员发现网络的 ...

  8. 基于深度学习的点云分割网络及点云分割数据集

    作者丨泡椒味的泡泡糖 来源丨深蓝AI 引言 点云分割是根据空间.几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征.点云的有效分割是许多应用的前提,例如在三维重建领域,需要对场景内的物 ...

  9. 前沿丨基于深度学习的点云分割网络及点云分割数据集

    众所周知,点云的有效分割是许多应用的前提,例如在三维重建领域,需要对场景内的物体首先进行分类处理,然后才能进行后期的识别和重建.传统的点云分割主要依赖聚类算法和基于随机采样一致性的分割算法,在很多技术 ...

最新文章

  1. 每天学习Linux(3)---pwd命令
  2. 会php学java入门要多久_php8(java入门要多久)
  3. android os n9005,SM-N9005
  4. 小样本点云深度学习库_论文 | 小样本学习综述
  5. web前端的渐进增强式开发模型
  6. 模拟手机通讯录管理系统
  7. 英文版一元购源码开发解析
  8. 新浪和腾讯微博开放平台比较
  9. 上传图片到淘宝 API 返回值说明
  10. 全系统进程隐藏win7winn10win11器风铃进程隐藏器软件
  11. 如果有人问你 SQL 注入的资料,请叫他看这份速查表
  12. Linux虚拟机下WWW(HTTP)服务器的搭建与使用(详细)
  13. 弘辽科技:淘宝流失率是什么意思?客户流失的原因有哪些?
  14. VS2019如何修改字体
  15. sudo: no tty present and no askpass program specified 处理
  16. css hack方法,css hack方式有哪些
  17. 使用CDN实现应用的缓存和加速
  18. c语言数据类型习题,C语言-数据类型习题及答案.doc
  19. 自考本计算机软件基础ppt,计算机软件基础自考本科
  20. 程序员面试笔试宝典学习记录(一)

热门文章

  1. 展示一下用thinker做小软件的UI
  2. python 3.X 没有cPickle
  3. 位图文件(BMP)格式分析以及程序实现
  4. 背景的css代码,CSS网页设计实例:设计制作大背景网页_css
  5. mybatis学习:二、 Mybatis的Dao开发、mybatis-config.xml文件的详情
  6. 【MySQL】# mysql计算两个时间的差值
  7. 进程和程序区别和联系
  8. .hpp文件和.h文件的区别
  9. uniapp 来电显示悬浮窗插件(支持锁屏来电) Ba-CallerID
  10. 软件需求管理(二) 需求获取