神经网络介绍
神经网络的出现可追溯到20世纪40年代,因此,其有相当长的发展历史。本书将介绍神经网络的发展历史,因为你需要了解一些术语。激活函数是其中一个很好的例子,它可以缩放神经网络中神经元的值。阈值激活函数是研究人员引入了神经网络时的早期选择,而后S型激活函数、双曲正切激活函数、修正线性单元(Rectified Linear Unit,ReLU)激活函数等相继被提出。虽然目前大多数文献都建议仅使用ReLU激活函数,但你需要了解S型激活函数和双曲正切激活函数,才能理解ReLU激活函数的优势。
只要有可能,我们就会指出要使用神经网络的哪个架构组件。我们总是会将现在大家接受的架构组件指定为推荐选择,而不是较早的经典组件。我们将许多这些架构组件放在一起,并在第14章“构建神经网络”中为你提供一些有关构建神经网络的具体建议。
在神经网络的发展历程中,神经网络曾几次从灰烬中重生。McCulloch W.和Pitts W.(1943)首先提出了神经网络的概念。但是,他们没有方法来训练这些神经网络。程序员必须手工制作这些早期神经网络的权重矩阵。由于这个过程很烦琐,因此神经网络首次被弃用了。
Rosenblatt F.(1958)提出了一种训练算法,即反向传播算法,该算法可自动创建神经网络的权重矩阵。实际上,反向传播算法有许多神经元层,可模拟动物大脑的结构,但是,反向传播算法的速度很慢,并且会随着层数的增加变得更慢。从20世纪80年代到20世纪90年代初期计算能力的增加似乎有助于神经网络执行任务,但这个时代的硬件和训练算法无法有效地训练多层神经网络,神经网络又一次被弃用了。
神经网络的再次兴起,是因为Hinton G.(2006)提出了一种全新的深度神经网络训练算法。高速图形处理单元(Graphics Processing Unit,GPU)的最新进展,使程序员可以训练具有三层或更多层的神经网络。程序员逐步意识到深层神经网络的好处,从而促使该技术重新流行。
为了奠定本书其余部分的基础,我们从分析经典的神经网络开始,这些经典的神经网络对各种任务仍然有用。我们的分析包括一些概念,如自组织映射(Self-Organizing Map,SOM)、霍普菲尔德神经网络(Hopfield neural network)和玻尔兹曼机(Boltzmann machine)。我们还介绍了前馈神经网络(FeedForward Neural Network,FFNN),并展示了几种训练它的方法。
具有许多层的前馈神经网络变成了深度神经网络。这本书包含训练深度网络的方法,如GPU支持。我们还会探索与深度学习相关的技术,如随机Dropout、正则化和卷积。最后,我们通过一些深度学习的真实示例来演示这些技术,如预测建模和图像识别。