Skip to content

Commit

Permalink
add neural network
Browse files Browse the repository at this point in the history
  • Loading branch information
llinjupt committed Mar 29, 2019
1 parent 2cf85de commit 1ba5a51
Showing 1 changed file with 109 additions and 0 deletions.
109 changes: 109 additions & 0 deletions deeplearn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,115 @@ SVM 很难扩展到大型数据集,并且在图像分类等感知问题上的

与随机森林类似, 梯度提升机(gradient boosting machine)也是将弱预测模型(通常是决策树)集成的机器学习技术。它使用了梯度提升方法,通过迭代地训练新模型来专门解决之前模型的弱点,从而改进任何机器学习模型的效果。

神经网络
--------------

- NN(Neural Network):神经网络,这里还没有和生物上的神经网络相揖别。
- ANN(Artificial Neural Network):人工神经网络,这里就是计算机领域(人工智能/深度学习领域)的神经网络了,通常把最前面的A替换为某种优化算法或特性的缩写,比如 DNN,CNN。
- DNN(Deep Neural Network):深度神经网络,所有当前讨论的神经网络的基石。通常指隐藏层 >=2 的人工神经网络,含一层隐藏层的称为多层感知机(Multi-layer Perceptron)。
- DBM(Deep Boltzmann Machine):深度波尔茨曼机。
- DBN(Deep Belief Network):深度置信网络。
- RNN(RNN(Recurrent Neural Network):循环神经网络,是一类用于处理序列数据的神经网络。

多层感知机
~~~~~~~~~~~

最早的神经网络节点的雏形源于感知机(Perceptron),只可处理线性可分的二分类问题,无法解决 XOR 异或问题。

20世纪80年代末期,人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)被发明,利用 BP 算法可以让一个人工神经网络模型从大量训练样本中学习到统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。这个时候的人工神经网络,只含有一层隐层节点的浅层模型,被称作多层感知机(Multi-layer Perceptron)。

20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型无论是在理论分析还是应用中都获得了巨大的成功。相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。

2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton和他的学生Ruslan Sala khutdinov 在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要观点:

- 多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;
- 深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,这篇文章中,逐层初始化是通过无监督学习实现的。

深度学习
~~~~~~~~~~~~

比起使用 BP 算法的浅层学习,超过 2 层的神经网络上的学习通常被认为是深度学习(Deeping Learning)。

深度神经网络具有学习能力的本质:利用矩阵的线性变换和激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。增加节点数,即增加线性转换能力。增加层数:增加激活函数的次数,即增加非线性转换能力。

Hornik 1989 年证明只需要一个包含足够多神经元的隐层,BP神经网络就能以任意精度逼近任意复杂度的连续函数。通过增加层数相当于则降低了单层的复杂度。浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络可以用更少的数据量来学到更好的拟合。

CNN
~~~~~~~~~~

CNN(Convolutional Neural Network)卷积神经网络的特定:

- 卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算 ,这也就是多层卷积。

- 池化(Pooling):降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来非常大的计算量,而且容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”一点,那么一种方法就是把图像中局部区域的特征做一个平滑压缩处理,这源于局部图像一些特征的相似性(即局部相关性原理)。

- 全连接:softmax分类训练过程:卷积核中的因子(×1或×0)其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。一个特征如果有9个值,1000个特征就有900个值,再加上多个层,需要学习的参数还是比较多的。

与普通的 DNN 深度神经网络相比:DNN的输入是向量形式,并未考虑到平面的结构信息,在图像和NLP领域这一结构信息尤为重要,例如识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同),CNN的输入可以是其他维度的张量,例如二维矩阵,通过filter获得局部特征,较好的保留了平面结构信息。

CNN的几个特点:局部感知、参数共享、池化。

CNN 在计算机图像处理领域应用很广,比如寻找相似图片,人脸检测等。

CNN发展至今,已经有很多变种,其中有几个经典模型在CNN发展历程中有着里程碑的意义,它们分别是:LeNet、Alexnet、Googlenet、VGG、DRL等。

LeNet5
``````````

CNN 的经典模型:手写字体识别模型 LeNet5。

LeNet5 诞生于1994年,是最早的卷积神经网络之一,由Yann LeCun 完成,推动了深度学习领域的发展。在那时候,没有 GPU 帮助训练模型,甚至CPU的速度也很慢,因此,LeNet5 通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,这个网络也是最近大量神经网络架构的起点,给这个领域带来了许多灵感。

参考:https://my.oschina.net/u/876354/blog/1632862
论文:Gradient-Based Learning Applied to Document Recognition

AlexNet
```````````

2012年,Alex Krizhevsky、Ilya Sutskever在多伦多大学Geoff Hinton的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确率远超第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。AlexNet可以说是具有历史意义的一个网络结构,在此之前,深度学习已经沉寂了很长时间,自2012年AlexNet诞生之后,后面的ImageNet冠军都是用卷积神经网络(CNN)来做的,并且层次越来越深,使得CNN成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。

AlexNet之所以能够成功,跟这个模型设计的特点有关,主要有:

- 使用了非线性激活函数:ReLU
- 防止过拟合的方法:Dropout,数据扩充(Data augmentation)
- 其他:多GPU实现,LRN 归一化层的使用

参考:https://my.oschina.net/u/876354/blog/1633143

VGGNet
```````````

2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)和定位项目的第一名。
VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好。到目前为止,VGG仍然被用来提取图像特征。
VGGNet可以看成是加深版本的AlexNet,都是由卷积层、全连接层两大部分构成。

参考:https://my.oschina.net/u/876354/blog/1634322

GoogLeNet
````````````

2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名,这两类模型结构的共同特点是层次更深了。VGG继承了LeNet以及AlexNet的一些框架结构,而GoogLeNet则做了更加大胆的网络结构尝试,虽然深度只有22层,但大小却比AlexNet和VGG小很多,GoogleNet参数为500万个,AlexNet参数个数是GoogleNet的12倍,VGGNet参数又是AlexNet的3倍,因此在内存或计算资源有限时,GoogleNet是比较好的选择;从模型结果来看,GoogLeNet的性能却更加优越。

ResNet
`````````````

ResNet(Residual Neural Network)深度残差网络,应用于CNN,解决网络训练深度。

RNN
~~~~~

LSTM
``````

长短时记忆网络 (Long Short Term Memory Network),是一种改良的RNN,它成功的解决了原始循环神经网络的缺陷,成为当前最流行的RNN,在语音识别、图片描述、自然语言处理等许多领域中成功应用。

GRU
`````

一种LSTM的变体:GRU (Gated Recurrent Unit)。 它的结构比LSTM简单,而效果却和LSTM一样好,因此,它正在逐渐流行起来。

参考:https://cuijiahua.com/blog/2019/01/dl-12.html

基础数学
------------------

Expand Down

0 comments on commit 1ba5a51

Please sign in to comment.