深度神经网络

一、深度神经网络发展史

1943年,由Warren McCulloch和Walter Pitts提出MP神经元模型。它是神经网络的一个处理单元。

1958年,由美国心理学家Frank Rosenblatt提出感知机,它是神经网络和支持向量机的基础。1966年,Minisky和Papert在他们的《感知器》一书中提出了上述的感知器的研究瓶颈,指出理论上还不能证明将感知器模型扩展到多层网络是有意义的。这在人工神经网络的历史上书写了极其灰暗的一章。

所以说真理的果实总是垂青于能够忍受寂寞的科学家。尽管ANN的研究陷入了前所未有的低谷, 但仍有为数不多的学者忍受住寂寞,坚持致力于ANN的研究。在长达10年的低潮时期之间,相继有一些开创性的研究成果被提出来,但还不足以激起人们对于ANN研究的热情。

一直到上世纪80年代,两个璀璨的成果诞生了:1982年美国加州理工学院的物理学家John J.Hopfield博士的Hopfield网络和David E.Rumelhart以及James L.McCelland研究小组发表的《并行分布式处理》。《并行分布式处理》对具有非线性连续变换函数的多层感知器的误差反向传播(Error Back Propagation)算法进行了详尽的分析,实现了 Minsky关于多层网络的设想。Error Back Propagation算法的简称就是BP算法,以BP算法实现的多层感知器网络就是BP网络。这两个成果重新激起了人们对ANN的研究兴趣,使人们对模仿脑信息处理的智能计算机的研究重新充满了希望。

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和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的第二次浪潮。这篇文章有两个主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)

二、从MP到深度学习

1、MP神经元

MP神经元结构如下图所示
深度神经网络_第1张图片
在这里插入图片描述
深度神经网络_第2张图片

2、最简单的神经网络结构——感知器

(1)二分类感知器

二分类感知器结构如下图所示
深度神经网络_第3张图片
在这里插入图片描述
其中b为阈值

二分类感知器模型为多维空间的分离超平面,将数据集分割,下图为二维空间感知器分类模型,该模型将平面数据分割成两部分。
深度神经网络_第4张图片
(2)多层感知器

多层感知器,就是在输入层和输出层之间加入隐层,以形成能够将样本正确分类的凸域。多层感知器的拓扑结构如下图所示。
深度神经网络_第5张图片
由上图可以看出,随着隐层层数的增多,凸域将可以形成任意的形状,因此可以解决任何复杂的分类问题。Kolmogorov理论指出:双隐层感知器就足以解决任何复杂的分类问题。

多层感知器确实是非常理想的分类器,但问题也随之而来:隐层的权值怎么训练?对于各隐层的节点来说,它们并不存在期望输出,所以也无法通过感知器的学习规则来训练多层感知器。

3、人工神经网络(ANN)

(1)神经网络结构

三层神经网络结构如下图所示
深度神经网络_第6张图片
输入层有n个神经元,隐含层有p个神经元, 输出层有q个神经元。
深度神经网络_第7张图片
各层神经元的输入输出
深度神经网络_第8张图片
(3)神经网络的种类

BP 神经网络:BP 是back propagation,是一种以监督训练方式的神经网络,跟神经元无关。

RBF 神经网络:对神经元和训练方式都做了限定: 用高斯函数作为神经元+(自监督+监督)的训练方式。 自监督:聚类算法。 监督: BP 训练方式。

两者最重要的区别:1 中间层神经元的区别。2 中间层数的区别。3 运行速度的区别。
RBF 神经网络长这样:输入层 一层,输出层 一层,中间层 一层。

深度神经网络_第9张图片
RBF: 神经元是一个以gaussian函数为核函数的神经元。

x 是自变量,即输入的很多值, b: 是bias,一般为固定常数,决定Gaussian函数的宽度。w:weight (输入权重),决定Gaussian 函数的中心点,是一个可变常数。

输出结果: 不再是非0 即1,而是一组很平滑的小数,在特定的输入值(weight)处具有最大的函数值, 输入离这个特定的值越远,输出就成指数下降。

经过训练后每一个神经元得以确定输入权重:即每一个神经元知道要在什么样的输入值下引起最大的响应。

RBF_NN的训练方式: 聚类方式(自监督训练方式) + back propagation (BP)(监督训练方式)

原因是核函数的输出: 是一个局部的激活函数,RBF 神经元好比记忆点,与记忆样本越近,该记忆就越被激活。在weight那一点有最大的反应;接近weight 则反应最大,远离反应成指数递减。不同的weight 有一个不同位置,就类似于每个神经元的weight对应不同的感知域。

(4)大规模网络中的难题

神经网络中可以有多个隐含层:这样,在更高的隐含层里可以对其之前的隐含层构建新的抽象。而且像之前也提到的,这样可以更好的学习大规模网络。增加隐含层的层数通常会导致两个问题:

1、梯度消失:随着我们添加越来越多的隐含层,反向传播传递给较低层的信息会越来越少。实际上,由于信息向前反馈,不同层次间的梯度开始消失,对网络中权重的影响也会变小。

2、过度拟合:也许这是机器学习的核心难题。简要来说,过度拟合指的是对训练数据有着过于好的识别效果,这时导至模型非常复杂。这样的结果会导致对训练数据有非常好的识别较果,而对真实样本的识别效果非常差。

4、深度学习与神经网络的区别

(1)神经网络:

(a)采用BP算法调整参数,即采用迭代式算法来训练整个网络。随机设定初值,计算当前网络的输出,然后根据当前输出和样本真实标签之间的差去改变前面各层的参数,直到收敛;
(b)比较容易过拟合,参数比较难调整,而且需要不少的技巧。
(c)训练速度比较慢。在成熟比较少(小于等于3)的情况下效果并不比其他方法更优;

(2)深度学习:

采用逐层训练机制。采用该机制的原因在于如果采用BP机制,对于一个深层网络(7层以上),残差传播到最前面的层将变得很小,出现所谓的gradient diffusion(梯度扩散)。

参考链接:
https://blog.csdn.net/ybdesire/article/details/79618727
https://blog.csdn.net/App_12062011/article/details/54311945
https://blog.csdn.net/u014313009/article/details/51043064
http://www.elecfans.com/d/707619.html
https://www.zhihu.com/question/44328472/answer/204565494
https://blog.csdn.net/u013007900/article/details/50066315
https://blog.csdn.net/antkillerfarm/article/details/74187428?locationNum=3&fps=1

你可能感兴趣的:(深度神经网络)