Python快乐编程:人工智能深度学习基础
上QQ阅读APP看书,第一时间看更新

1.2 什么是深度学习

深度学习是机器学习的一个重要分支,通过构建具有多个隐藏层的机器学习模型和海量的训练数据来学习更有用的特征,从而最终提升分类或预测的准确性。简单来讲,机器学习是实现人工智能的一种方法,而深度学习则是实现机器学习的一种技术。

在涉及语音、图像等复杂对象的应用中,深度学习技术证明了其优越的性能。与通过人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。在大数据时代,更加复杂且更加强大的深度模型能深刻揭示海量数据中所承载的复杂而丰富的信息,并对未来或未知事件做更精准的预测。与以往的机器学习相比,深度学习对使用者的要求有所降低,使用者只需调节相关参数,学习的效果一般都较为理想,这促进了机器学习从实验技术走向工程实践。以上只是对深度学习的一个简单概括,并不能全面地解释什么是深度学习。因为神经网络中的深层构架差异巨大,对不同任务或目标的优化会有不同的操作。通过机器学习的发展历程来理解深度学习可能是一种更好的方法。

在人工智能的发展初期,计算机主要表现出了善于处理形式化的数学规则的特性,能够比人类更加快速高效地完成形式化的任务。这让人工智能在初期相对朴素和形式化的环境中取得了成功,这种环境对计算机所需具备的关于世界的知识的要求很低。例如,在形式和规则十分固定的国际象棋领域,人工智能取得了巨大成就。1997年,IBM公司研制的“深蓝”(Deep Blue)击败了当时的国际象棋世界冠军。事实上,一台计算机理解国际象棋中固定的64格棋盘、严格按照规则进行移动的32个棋子以及胜利条件并不难,相关概念完全可以由一个非常简短、完全形式化的规则列表进行描述并输入计算机中。

然而,在处理抽象的非形式化任务时,人工智能却显得比人类“笨拙”得多,人工智能的处理水平往往难以达到人类的平均水平。例如,对于人类而言可以很轻松地通过直觉识别出静物油画中的一串香蕉,但是机器却难以识别出被油画抽象出的“香蕉”。如今随着人工智能相关领域的飞速发展,计算机对于非形式化任务的处理能力取得了巨大进步,计算机完成识别对象和语音的任务的能力已经达到了人类的一般水平。人类的大脑中存储了巨量的有关世界的知识来维持日常生活的需要,让计算机实现强人工智能就需要让其理解这些关于世界的巨量知识,然而,许多相关知识具有主观性,难以通过形式化的方法进行描述,让计算机理解这些非形式化的知识无疑是人工智能的一项巨大挑战。

此处有必要先了解一下人类大脑的工作机理。在1981年,Hubel、Wiesel和Sperry等人发现了一种可以有效地降低反馈神经网络复杂性的、独特的神经网络结构,进而提出了卷积神经网络。卷积神经网络的发现揭示了人类视觉的分级系统,在收到视觉刺激后,信息从视网膜出发,经过低级区提取目标的边缘特征,在高一级的区域提取目标的基本形状或目标的局部特征,再到下一层更高级的区域对整个目标进行识别,以及到更高层的前额叶皮层进行分类判断等,即高层的特征是低层特征的组合,信息的表达由低层到高层越来越抽象和概念化。这个发现激发了人们对于神经系统的进一步思考。大脑的工作过程是一个对接收信号不断迭代、不断抽象概念化的过程。以识别油画中的香蕉为例,首先摄入原始信号(瞳孔摄入像素),然后进行初步处理(大脑皮层某些神经细胞发现香蕉的边缘和方向),对处理后的信息进行抽象(大脑判定香蕉的形状,比如是长而略微弯曲的),进一步抽象(大脑进一步判定该物体是香蕉),最后识别出图中画的是一串香蕉。由此例可以看出,大脑是一个深度架构,认知的过程是通过大脑逐层分级处理表示的信息实现的。

图1.3 两种不同的表示方式

无论在计算机科学领域还是人类的日常生活中,对各种事物的理解都要依赖信息的表示。例如大多数学生可能已经习惯了阅读国内英语考试中全部由小写字母组成的文章,可以很快地阅读并完成后面的题目,但是在有些国际性英语能力测试中会出现全部由大写英文字母组成的文章,这时考生可能就需要花更多的时间去适应大写字母组成的单词。同样的单词以不同的表示方式会对考生的阅读产生巨大的影响。相应地,不同的表示方式同样会对机器学习的算法性能产生影响。接下来通过图示的方法展示表示方式对算法性能的影响,如图1.3所示。

在图1.3中,左图使用了笛卡儿坐标表示两种类型的数据,显然在这种表示方式下,无法用一条直线来分隔圆形和三角形两种类型的数据;而右图使用极坐标表示可以很容易用一条垂直的线将两种类型的数据分隔开。

一般情况下,处理人工智能问题的方法可以概括为:提取一个恰当的特征集,然后将这些特征提供给简单的机器学习算法。例如,在语音识别中,对声道大小这一特征的识别可以作为判断说话者的性别以及大致年龄的重要线索。

然而在大多数情况下,人类很难确定哪些是有效的信息特征。例如,希望让一个程序能够检测出油画中的水果——香蕉。香蕉的特征有黄色的果皮,长而略微弯曲的外形,但是仅以油画中的某一个像素值很难准确地描述香蕉看上去像什么,因为不同的场景下香蕉的摆放角度和光影效果都会不同,如图1.4所示。

图1.4 两种不同情景下的香蕉

为了解决识别图1.4中香蕉的问题,需要让计算机自身去发掘表示的特征。通过学习让程序去理解一个表示的特征往往比直接输入人为总结的特征更加准确。这就要求计算机学会从原始数据中提取高层次、抽象的特征。

深度学习让计算机可以通过组合低层次特征形成更加抽象的高层次特征(或属性类别)。深度学习可以从原始图像去学习一个低层次表达,例如,边缘检测器、小波滤波器等,然后在这些低层次表达的基础上,通过线性或者非线性组合,来获得一个高层次的表达。