码迷,mamicode.com
首页 > 其他好文 > 详细

深度学习

时间:2017-10-17 20:53:58      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:地方   多层   bit   hash表   技术分享   不能   gis   gpu   观测   

一.介绍

  深度学习是机器学习的一种,它是从人的大脑认识事物的过程抽象而来的。

二.深度生成模型

  因为现实中要想获得大量标签是很困难的,因此我们将关注于无监督学习。无监督学习很自然的就会用到生成模型,这里主要介绍三种深度生成模型:1.有向的,2.无向的,3.混合的

  (1)深度有向模型(DDNs)

    下图是一个典型的DDNs模型

  技术分享

    它的底层包含观测值,剩下的层都是隐含层。一般来说我们可以人工的确定隐藏层的数量和每一层的大小,当然你也使用非参数化贝叶斯方法和boosting 方法进行预测。

    如果DNNs模型中所有的节点都是二者节点,并且所有的CPDs都是logistic 函数,那么这个模型称之为sigmoid belief net。对于有三个隐层的sihmoid belief ney模型定义如下:

技术分享

 

    DNNs模型很难用于inference,因为它的隐藏节点的后验都是关联的。  

  (2)深度波特曼模型(DBM)

    以下是一个典型的DBM模型:

    技术分享

    有三个隐层的模型的定义如下:

技术分享

    深度无向模型的特点在于两个地方:1.在给定前一层和后一层之后,当前层之间的节点是条件独立的; 2.深度无向模型很难训练

 

   (3)深度信念模型(DBN)

    以下是DBN的一个典例:

    技术分享

    有三个隐层的模型定义如下:

技术分享

 

    DBN模型的好处就是我们可以通过自底向上的方式很快的知道隐藏状态。这是因为我们可以将DBN模型和RBM模型进行类比。DBN模型很难使用自顶向下进行inference,所以我们通常使用后向反馈的方式。

  (4)greedy layer-wise learning of DBNs

    DBNs和RBM模型的等价性,我们可以采取如下的方式学习一个DBN模型:
      1.首先学习RBM模型的W1

      2.将前面的RBM模型改造成含有两个隐层的DBNs模型,然后再通过一个新的RBM模型学习 技术分享,这个新的RBM模型的输入值是隐藏单元技术分享的激活值,改造之后的模型如下:

技术分享

 

       3.继续加入隐层直到满足停止条件

    我们在使用 greedy layer-wise training strateg 之后,可以利用backfitting技术对权重进行微调。

三.深度神经网络

  (1)深度多层感知机

    很多的决策问题可以转化为分类问题,深度前馈神经网络和MLP问题可以解决这类问题但是效果不是很好,问题在于当深度越深的时候会出现“Vanishing gradient”问题,那么一阶导数很容易在 large plateaus in error surface的地方被困住。现在因为有了GPU和二阶导数算法,可以解决这个问题,但是这样的模型还是很难训练。

    我们可以使用无监督训练来初始化参数,这个训练过程称之为生成预训练。现用无监督模型的好处是,它可以输出高维结果,而不是标量结果。这就是基于数据的正则化,能够帮助后向传播利用好的泛化特性找到局部最小。

  (2)深度自编码器

    自编码器它利用无监督的神经网络模型来进行维度削减和特征发现。更准确的说,自编码器它是一个用来预测输入本身的一个前馈神经网络。

    它的用途很多可以用来数据可视化,特征发现,信息检索,图片特征识别,视频特征识别,

    线性的自编码器相当于PCA,非线性的自编码可以发现数据的非线性表示。

    我们可以使用深度自编码器学习很多有效表示,但是训练深度自编码器时,后向传播算法已经不管用了,因为它传回的梯度太小了。解决办法就是:训练一系列的RBMs来初始化深度自编码器。

  (3)stackede denoising anto-encoders

    我们训练自编码器的一种传统方式就是确保隐层的会比可见层小,为了代替这种trival solution,又提出了使用完备表示的方法。有两种方式:一种就是在输入中加入噪声,这也就是denoising auto-encoders的由来,另一种就是在在隐层单元就是稀疏限制。我们也可以通过将以上的模型进行堆叠得到一个深度的 stacked denoising auto-encoders模型,然后像前馈神经网络一样对它进行微调。

四.深度网络的应用

  (1)使用DBNs进行手写数字的识别

    它有三个隐层,可见层和输入的图片相关,上层的RBM模型是有着10个单元的softmax layer。前面的两个隐层用贪心的无监督的方式进行训练。

  (2)利用深度自编码器进行信息检索(semantic Hashing)

    所谓的semantic Hashing,它就是利用bit对文档进行编码,然后再对文档编码进行Hash,保存到Hash表中,在编码的过程中保证语义上相近的文档他们的海明距离也近。用这个方法的关键在于程序运行的总时间不再取决于语料集的大小,而是取决于Hash表的大小。

    进行信息检索的另一种常用的方式就是倒排索引,单数这种技术都建立在word能够独立表达文档的信息,如果是图片的话因为pixel并不能单独表达图片信息,所以倒排索引没什么用,但是已经有人证明了我们可以用深度编码器在图片上获得很好的semantic Hashing。

  (3)使用 1d convolutional DBNs来学习视频特征

    为了将DBNs用到无界的时间序列,我们使用了参数绑定的方式,具体的实现方式就是利用使用RBM作为基本单元的卷积深度信念网络。

    定义卷积RBM为以下的形式:

技术分享技术分享

    为了输出局部最优,我们还可以加入一个max pooling layer和一个卷积层。

五.讨论

  这些简单的深度模型可以解决一些简单的问题,但是对于那些复杂的模式识别等问题还是很难处理。同时给我们的一个疑问,我们大脑认识认识事物的方式是根据它的pixel和bits么?或者是不是还存在一些别的原子性的symbol。 

  It is possible to define, and learn, deep models which use discrete latent parts. Here we just mention a few recent approaches, to give a flavor of the possibilites.

    

深度学习

标签:地方   多层   bit   hash表   技术分享   不能   gis   gpu   观测   

原文地址:http://www.cnblogs.com/whatyouknow123/p/7683796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!