人工智能:神经网络与深度学习

**

人工智能:神经网络与深度学习

**
1956年夏季,在美国的达特茅斯学院中, John McCarthy、Marvin Minsky、Claude Shannon、Allen Newel、Herbert Simon等科学家聚在一起,共同研究和探讨用机器模拟智能的一系列有关问题,并首次提出了“人工智能”这一术语,它标志着“人工智能”这门新兴学科的正式诞生。

1 人工智能

人工智能是计算机科学的一个分支,它试图了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
实现人工智能是人类长期以来一直追求的梦想。虽然计算机技术在过去几十年里取得了长足的发展,但是实现真正意义上的机器智能至今仍然困难重重,截止目前,还没有一台电脑能产生“自我”的意识。伴随着神经解剖学的发展,观测大脑微观结构的技术手段日益丰富,人类对大脑组织的形态、结构与活动的认识越来越深入,人脑信息处理的奥秘也正在被逐步揭示。如何借助神经科学、脑科学与认知科学的研究成果,研究大脑信息表征、转换机理和学习规则,建立模拟大脑信息处理过程的智能计算模型,最终使机器掌握人类的认知规律,是“类脑智能”的研究目标。
类脑智能是涉及计算科学、认知科学、神经科学与脑科学的交叉前沿方向。类脑智能的实现离不开大脑神经系统的研究。众所周知,人脑是由几十多亿个高度互联的神经元组成的复杂生物网络,也是人类分析、联想、记忆和逻辑推理等能力的来源。神经元之间通过突触连接以相互传递信息,连接的方式和强度随着学习发生改变,从而将学习到的知识进行存储。
模拟人脑中信息存储和处理的基本单元——神经元而组成的人工神经网络模型具有自学习与自组织等智能行为,能够使机器具有一定程度上的智能水平。神经网络的计算结构和学习规则遵照生物神经网络设计,在数字计算机中,神经细胞接收周围细胞的刺激并产生相应输出信号的过程可以用“线性加权和”及“函数映射”的方式来模拟,而网络结构和权值调整的过程用优化学习算法实现。目前神经网络已经发展了上百种模型,在诸如手写体识别、显著性检测、语音识别和图像识别、模式识别、人机交互、优化算法、深度学习等技术领域取得了非常成功的应用。

2 机器学习

机器学习是人工智能的一个分支,也是用来实现人工智能的一个有效手段。简单来说,机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测。使用大量数据和算法来“训练”机器,由此带来机器学习如何完成任务。
机器学习主要分三种形式,监督学习、非监督学习、半监督学习。最常见的是监督学习中的分类问题。监督学习的训练样本都含有“标签”,非监督学习的训练样本中都不含“标签”,半监督学习介于监督学习和非监督学习之间。在监督学习中,因为训练集全部已经标记了,所以关注点通常是在未来测试数据上的性能。而在半监督学习的分类问题中,训练数据中包含未标记的数据。因此,存在两个不同的目标。一个是预测未来测试数据的类别,另一个是预测训练样本中未标记实例的类别。

2.1 监督学习
监督学习的训练集要求包括输入输出,也可以说是特征和目标。训练集中的目标是由人为标注的。监督学习最常见的是分类问题,通过已有的训练样本去训练得到一个最优模型,再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。也就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习已经创建好的分类系统。常见的有监督学习算法有:回归分析和统计分类。

2.2 非监督学习
非监督学习事先没有任何训练样本,而需要直接对数据进行建模。样本数据类别未知,需要根据样本间的相似性对样本集进行分类,试图使类内差距最小化,类间差距最大化。通俗点来说,就是实际应用中不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。非监督学习里典型的例子是聚类。聚类的目的在于把相似的东西聚在一起,而并不关心这一类是什么。

2.3 半监督学习
半监督学习所给的数据有的是有标签的,有的是没有标签的。单独使用有标签的样本,能够生成有监督分类算法。单独使用无标签的样本,能够生成非监督聚类算法。两者都使用,希望在有标签的样本中加入无标签的样本,增强有监督分类的效果;同样的,希望在无标签的中加入有标签的样本,增强非监督聚类的效果。一般而言,半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。

3 深度学习

深度学习是机器学习领域一个新的研究方向,近年来在图像识别与检索、语言信息处理、语音识别等多领域中都取得较为成功的发展。深度学习应用的发展基础在于建立模型来模拟人类大脑的神经连接结构,在处理图像、声音和文本这些信号时,通过多个变换阶段分层对数据特征进行描述,进而给出数据的解释。
深度学习是实现机器学习的一种技术,现在所说的深度学习大部分都是指神经网络。神经网络是受人类大脑的启发:神经元之间的相互连接。深度学习的概念源于人工神经网络的研究,含多隐层的神经网络就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的概念最早Hinton 等于2006 年提出,基于深信度网(DBN)提出非监督贪婪训练逐层算法,为解决深层结构相关的优化难题带来希望。Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。源自于Hopfield提出的霍普菲尔德网络变化而来的循环神经网络,成功应用于语音识别、语言模型、机器翻译等处理和预测序列数据。目前卷积神经网络和循环神经网络是应用最广的两种深度学习模型。

3.1 卷积神经网络
卷积神经网络(Convolutional Neural Networks,CNN)是近年发展起来,并引起广泛重视的一种高效的识别方法。1962年,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的局部互连网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络。Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。
卷积神经网络是一种前馈神经网络,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层神经网络,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核(filter)。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。

3.2 循环神经网络
循环神经网络(Recurrent neural network,RNN)源自于1982年由John Hopfield提出的霍普菲尔德网络。霍普菲尔德网络因为实现困难,在其提出的时候并且没有被合适地应用。该网络结构也于1986年后被全连接神经网络以及一些传统的机器学习算法所取代。然而,传统的机器学习算法非常依赖于人工提取的特征,使得基于传统机器学习的图像识别、语音识别以及自然语言处理等问题存在特征提取的瓶颈。而基于全连接神经网络的方法也存在参数太多、无法利用数据中时间序列信息等问题。随着更加有效的循环神经网络结构被不断提出,循环神经网络挖掘数据中的时序信息以及语义信息的深度表达能力被充分利用,并在语音识别、语言模型、机器翻译以及时序分析等方面实现了突破。
循环神经网络的主要用途是处理和预测序列数据。在全连接神经网络或卷积神经网络模型中,网络结构都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的。但是如果要预测句子的下一个词语是什么,一般需要用到当前词语以及前面的词语,因为句子中前后词语并不是独立的。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出。也就是说,循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
长短时记忆网络(Long Short Term,LSTM)是一种循环神经网络 特殊的类型,可以学习长期依赖信息。LSTM 由Hochreiter 和Schmidhuber于1997年提出,并在近期被Alex Graves进行了改良和推广。在很多问题,LSTM 都取得相当巨大的成功,并得到了广泛的使用。LSTM 通过特别的设计来避免长期依赖问题。

4 实现工具

神经网络和深度学习的程序实现语言和框架有很多,语言有Python、C++、Java、Go、R、Matlab、BrainScript、Julia、Scala和Lua等,框架有TensorFlow、Caffe、CNTK、MXNet、Torch、Theano和Neon等。其中Python语言由于其简洁性、易读性以及可扩展性,已经成为目前最受欢迎的深度学习程序设计语言,TensorFlow由于其灵活性、高效性和可移植性,成为目前最流行的一种深度学习框架。

4.1 Python
Python语言20世纪90年代初由Guido van Rossum发明,名字的灵感来自于英国喜剧团体 Monty Python,是一种极具可读性和通用性的面向对象的编程语言。Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。Python的设计哲学是“优雅”、“ 明确”、“ 简单”。Python开发的哲学是“用一种方法,最好是只有一种方法来做一件事”。
Python是一门解释型的高级编程语言,简单明确,拥有很好的扩充性,可以非常轻松地用其他语言编写模块供调用,用Python编写的模块也可以通过各种方式轻松被其他语言调用。所以一种常见的Python使用方式是,底层复杂且对效率要求高的模块用C/C++等语言实现,顶层调用的API用Python封装,这样可以通过简单的语法实现顶层逻辑,故而Python又被称为“胶水语言”。如今的深度学习框架中,大部分框架基本上要么官方接口就是Python,要么支持Python接口。

4.2 TensorFlow
TensorFlow是Google基于DistDelief进行研发的第二代人工智能系统,是一个开源的机器学习库。最初由Google大脑小组的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,如计算机视觉,语音识别,自然语言理解等。其主要特点有:灵活、高效、可移植以及多语言支持等。
TensorFlow是一个采用数据流图(Data Flow Graphs),用于数值计算的开源软件库。TensorFlow的名字本身描述了它自身的执行原理:Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算。在图(Graph)这种数据结构中包含两种基本元素:节点(node)和边(edge)。这两种元素在数据流图中有自己各自的作用。节点用来表示要进行的数学操作,另外,任何一种操作都有输入/输出,因此它也可以表示数据的输入的起点/输出的终点。边表示节点与节点之间的输入/输出关系,一种特殊类型的数据沿着这些边传递。这种特殊类型的数据在TensorFlow被称之为Tensor,即张量,所谓的张量通俗点说就是多维数组。当向这种图中输入张量后,节点所代表的操作就会被分配到计算设备完成计算。

参考文献

《神经网络与深度学习:基于tensorflow框架和python技术实现》,包子阳,电子工业出版社。

你可能感兴趣的:(人工智能,机器学习,深度学习,卷积神经网络,循环神经网络)