前言:
现在大家对“后向传播神经网络算法思想”都比较注意,我们都需要分析一些“后向传播神经网络算法思想”的相关知识。那么小编也在网摘上收集了一些关于“后向传播神经网络算法思想””的相关知识,希望兄弟们能喜欢,姐妹们快快来学习一下吧!很多读者可能会认为深度学习是一门新技术,所以听到“深度学习的历史”也许会有些惊讶。事实上,目前大家所熟知的“深度学习”基本上是深层神经网络的一个代名词,而神经网络技术可以追溯到1943年。深度学习之所以看起来像是一门新技术,一个很重要的原因是它在21世纪初期并不流行。神经网络的发展史大致可以分为三个阶段。
早期的神经网络模型类似于仿生机器学习,它试图模仿大脑的学习机理。最早的神经网络数学模型是由Warren McCulloch 教授和 Walter Pitts教授于1943年在论文A logical calculus of the ideas immanent in nervous activity中提出的。在论文中,Warren McCulloch 教授和 Walter Pitts教授模拟人类大脑神经元的结构提出了McCulloch-Pitts Neuron的计算结构。图1对比了人类神经元结构和McCulloch-Pitts Neuron结构。McCulloch-Pitts Neuron结构大致模拟了人类神经元的工作原理,它们都有一些输入,然后将输入进行一些变换后得到输出结果。虽然人类神经元处理输入信号的原理目前还对我们来说还不是完全清晰,但McCulloch-Pitts Neuron结构使用了简单的线性加权和的方式来模拟这个变换。将n个输入值提供给McCulloch-Pitts Neuron结构后,McCulloch-Pitts Neuron结构会通过n 个权重 来计算这n 个输入的加权和,然后用这个加权和经过一个阈值函数得到一个0或1的输出。
(a)人类神经元结构
(b)McCulloch-Pitts Neuron结构
图1 人类神经元结构和McCulloch-Pitts Neuron结构对比图
举一个具体的例子来说明McCulloch-Pitts Neuron结构是如何解决实际问题的。假设需要解决的问题是判断邮件是否为垃圾邮件,那么首先可以将从邮件里提取的n 个特征值作为输入传入McCulloch-Pitts Neuron结构。McCulloch-Pitts Neuron结构经过加权和及阈值函数处理可以得到一个0或者1的输出。如果这个输出为0,那么相应的邮件为垃圾邮件;相反,如果这个输出为1,那么相应的邮件不是垃圾邮件。
为了使这种方法可以精确地判断垃圾邮件,我们需要对McCulloch-Pitts Neuron结构中的权重进行特殊的设置。手动设置这些权重自然是一种选择,但通过人类经验设置权重的方式既麻烦又很难达到最优的效果。为了让计算机能够更加自动且更加合理地设置权重大小,Frank Rosenblatt教授于1958年提出了感知机模型(perceptron)。感知机是首个可以根据样例数据来学习特征权重的模型。虽然McCulloch-Pitts Neuron结构和感知机模型极大地影响了现代机器学习,但是它们也存在非常大的局限性。
1969年由Marvin Minsky教授和Seymour Papert教授出版的Perceptrons: An Introduction to Computational Geometry 一书中,证明了感知机模型只能解决线性可分问题。并明确指出了感知机无法解决异或问题。而且书中也指出在当时的计算能力下,实现多层的神经网络是不可能的事情。这些局限性导致了整个学术界对生物启发的机器学习模型的抨击。在书中,Marvin Minsky教授和Seymour Papert教授甚至做出了“基于感知机的研究注定将失败”的结论。这导致了神经网络的第一次重大低潮期,在之后的十多年内,基于神经网络的研究几乎处于停滞状态。
直到20世纪80年代末,第二波神经网络研究因分布式知识表达(distributed representation)和神经网络反向传播算法的提出而兴起。分布式的知识表达的核心思想是现实世界中的知识和概念应该通过多个神经元(neuron)来表达,而模型中的每一个神经元也应该参与表达多个概念。例如,假设要设计一个系统来识别不同颜色不同型号的汽车,那么可以有两种方法。第一种方法是设计一个模型使得模型中每一个神经元对应一种颜色和汽车型号的组合,比如“白色的小轿车”。如果有n 种颜色,m 种型号,那么这样的表达方式需要n×m 个神经元。另一种方法是使用一些神经元专门表达颜色,比如“白色”,另外一些神经元专门表达汽车型号,比如“小轿车”。这样“白色的小轿车”的概念可以通过这两个神经元的组合来表达。这种方式只需要n×m 个神经元就可以表达所有概念。而且即使在训练数据中没有出现概念“红色的卡车”,只要模型能够习得“红色”和“卡车”的概念,它也可以推广到概念“红色的卡车”。分布式知识表达大大加强了模型的表达能力,让神经网络从宽度的方向走向了深度的方向。这为之后的深度学习奠定了基础。
除了解决了线性不可分问题,在20世纪80年代末,研究人员在降低训练神经网络的计算复杂度上也取得了突破性成就。David Everett Rumelhart教授、Geoffrey Everest Hinton教授和Ronald J. Williams教授于1986年在自然杂志上发表的Learning Representations by Back-propagating errors 文章中首次提出了反向传播的算法(back propagation),此算法大幅降低了训练神经网络所需要的时间。直到今天,反向传播算法仍然是训练神经网络的主要方法。在神经网络训练算法改进的同时,计算机的飞速发展也使得80年代末的计算能力相比70年代有了突飞猛进的增长。于是神经网络在80年末到90年代初又迎来了发展的高峰期。如今使用得比较多的一些神经网络结构,比如卷积神经网络和循环神经网络,在这段时间都得到了很好的发展。Sepp Hochreiter教授和Juergen Schmidhuber教授于1991年提出的LSTM模型(long short-term memory)可以有效地对较长的序列进行建模,比如一句话或者一段文章。直到今天,LSTM都是解决很多自然语言处理、机器翻译、语音识别、时序预测等问题最有效的方法。
然而,在神经网络发展的同时,传统的机器学习算法也有了突破性的进展,并在90年代末逐步超越了神经网络,成为当时机器学习领域最常用的方法。以手写体识别为例,在1998年,使用支持向量机(support vector machine)的算法可以把错误率降低到0.8%。这样的精确度是当时的神经网络无法达到的。导致这种情况主要有两个原因。首先,虽然训练神经网络的算法得到了改进,但在当时的计算资源下,要训练深层的神经网络仍然是非常困难的。其次,当时的数据量比较小,无法满足训练深层神经网络的需求。
随着计算机性能的进一步提高,以及云计算、GPU的出现,到2010年左右,计算量已经不再是阻碍神经网络发展的问题。与此同时,随着互联网+的发展,获取海量数据也不再困难。这让神经网络所面临的几个最大问题都得到解决,于是神经网络的发展也迎来了新的高潮。在2012年ImageNet举办的图像分类竞赛(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)中,由Alex Krizhevsky教授实现的深度学习系统AlexNet赢得了冠军。自此之后,深度学习(deep learning)作为深层神经网络的代名词被大家所熟知。深度学习的发展也开启了一个AI的新时代。图2展示了“deep learning”这个词在最近十年谷歌搜索的热度趋势。从图中可以看出,从2012年之后,深度学习的热度呈指数级上升,到2016年时,深度学习已经成为了谷歌上最热门的搜索词。在2013年,深度学习被麻省理工(MIT)评为了年度十大科技突破之一。如今,深度学习已经从最初的图像识别领域扩展到了机器学习的各个领域。
图2 “deep learning”最近十年在谷歌搜索的热度趋势
(此图片基于于谷歌趋势:,词汇的热度按0-100分为100个等级:
0表示最低的热度,100表示最流行的搜索词)
标签: #后向传播神经网络算法思想