• 神经网络介绍


    1. 神经网络

    在之前写过的一篇文章中也有神经网络的简要概述。轻松看懂机器学习十大常用算法

    Neural Networks 适合一个input可能落入至少两个类别里

    NN 由若干层神经元,和它们之间的联系组成
    第一层是 input 层,最后一层是 output 层

    在 hidden 层 和 output 层都有自己的 classifier

     
     

    input 输入到网络中,被激活,计算的分数被传递到下一层,激活后面的神经层,最后output 层的节点上的分数代表属于各类的分数,下图例子得到分类结果为 class 1

    同样的 input 被传输到不同的节点上,之所以会得到不同的结果是因为各自节点有不同的weights 和 bias

    模型通过比较预测和实际的误差,并不断地调整 weights 和 bias,进而使得预测与实际的误差越来越小,预测效果越来越好,这个过程叫做 training。

     
     

    2. 为什么需要神经网络?

    上面说到,神经网络是由好多个分类器构成的网络,那一个分类器也可以分类,为什么需要一个网络的分类器呢?

    就是为了对付复杂的模式。相比简单的分类器如 SVM,神经网络就是可以识别出复杂的模式。

    当数据中的模式越来越复杂,每一层需要的 node 会呈指数级增长。
    随着数据复杂度的增加,可以采用相应的模型。

     
     

    为什么深度神经网络可以识别复杂的模式呢?

    就是因为它可以把一个复杂的模式,分解为很多个简单的模式。
    例如要识别人脸,可以先把眼镜,鼻子,嘴识别出来,再组合成一个脸。

     
     

    3. 什么问题选择什么神经网络呢?

    对于非监督学习问题,主要使用 RBM,Autoencoders。

     
     

    对于监督学习问题,例如文字处理,图像识别,物体识别,语音识别,主要使用下图相应的模型。

     
     

    时间序列问题可以用 Recurrent 网络。

     
     

    4. 为什么神经网络最近几年才特别火?

    神经网络现在可以做很复杂的问题如人脸识别,但是在2006年以前甚至都无法解决一个简单的问题,原因就是 vanishing gradient(梯度消失)

    当梯度很大的时候,下滑速度就快,相反如果这个坡很平缓,那移动的速度也就慢。

     
     

    在下图神经网络中,可以看到越靠前的层次,梯度越小,越靠后,梯度越大,所以前面几层不容易训练。
    前面几层是用来识别一些基础的重要的简单的pattern的,到后面的层次中重组,如果前面出错了,后面也会出错。

     
     

    在用 Back Propagation 训练神经网络的时候,其中一个节点的梯度误差来源于后面的所有点,如果多个小于1的数相乘,这个数会越来越小,所以会造成梯度向量越来越小。

     
     

    在2006-2007年,由Hinton,Lecun,Benjio发表的一些关于 Restricted Boltzmann Machines 的论文开始,使这个问题得到了改善。

    5. Restricted Boltzmann Machines 是什么?

    Geoff Hinton 发表了 RBM 的论文,这个贡献也使他被称为深度学习之父。

    RBM 是 Feature Extractor Neural Nets 家族即 Autoencoders 的一员,可以通过重建 inputs 来自动学习数据中的 pattern。

    RBM 有两层,有个限制条件是,同一层的node不可以有联系。它将 inputs 编码成数字集,在回溯的时候,又把数字解码成 inputs 的原来状态。而且RBM不需要训练的数据是labeled。

     
     

    weights 和 bias 在 forward 和 backward 的时候都很重要,它使得网络知道哪些 feature 对于识别模式起到更重要的作用。

    forward 的时候,在 hidden 层可以决定哪些需要被激活,哪些不需要。
    backward 的时候,在 visible 层,回溯的结果会和实际的input比较来评价模型。

     
     

    6.为什么RBM可以改善梯度消失的问题呢?

    是怎么避免 vanishing gradient 的问题的呢,就是不用 Back propagation,而是用 Deep Belief Nets 替代。

    DBN 的网络是典型的多层神经网络,但是 training 的时候很不同。

    一个 DBN 可以被看成是一个 RBM 栈,RBM 的一个 hidden 层就是下一个 RBM 的 visiable 层。

    第一个 RBM 就是要尽可能准确地重建 inputs。


     
     

    第一个 RBM 的 hidden 层作为下一个 RBM 的 visiable 层,第二个是用第一个的 output 作为训练数据,直到所有层都走一遍。


     
     

    很重要的一点,每一个 RBM 层都会学习整个 inputs。而不是像图像识别时,每一层负责一部分 feature,最后几层再组装起来。

    通过这一步初始的训练之后,RBM 就可以识别出数据中固有的 pattern。
    但是却不知道这些 pattern 是什么,所以需要监督式学习和一些有标签的数据来给 pattern 命名,不过这些数据不需要特别多。




  • 相关阅读:
    菜单、toast、对话框的使用
    对话框应用反射销毁
    java随机汉字生成
    Android从主界面退出
    Android获取网络状态
    ssh secure shell 乱码问题
    MongDB安装使用
    安装scrapy
    列表查找以及二分查找
    Tuple、list的区别以及dict和set
  • 原文地址:https://www.cnblogs.com/codehome/p/9729632.html
Copyright © 2020-2023  润新知