神经网络的前世

小长假来听听 NN 的故事吧。

本文参考:这个地址不错,深入浅出讲深度学习的,推荐感兴趣的朋友看一下。

当你听到深度学习,你想到了什么?

神经网络的前世_第1张图片
神经网络的前世_第2张图片
神经网络的前世_第3张图片

Deep Learning is about Neural Networks。

1. 神经网络

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

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

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

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

神经网络的前世_第4张图片

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

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

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

神经网络的前世_第5张图片

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

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

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

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

神经网络的前世_第6张图片

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

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

神经网络的前世_第7张图片

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

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

神经网络的前世_第8张图片

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

神经网络的前世_第9张图片

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

神经网络的前世_第10张图片

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

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

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

神经网络的前世_第11张图片

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

神经网络的前世_第12张图片

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

神经网络的前世_第13张图片

在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。

神经网络的前世_第14张图片

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

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

神经网络的前世_第15张图片

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

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

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

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

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


神经网络的前世_第16张图片

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


神经网络的前世_第17张图片

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

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


我是 不会停的蜗牛 Alice
85后全职主妇
喜欢人工智能,行动派
创造力,思考力,学习力提升修炼进行中
欢迎您的喜欢,关注和评论!

你可能感兴趣的:(神经网络的前世)