2.3 人工智能关键技术
人类要实现机器智能,主要是让机器模拟人类的感知、思维、学习和行为:首先,机器模拟人类的感知行为,如视觉、听觉、触觉等,相关研究领域有计算机视觉、计算机听觉、模式识别、自然语言理解;其次,机器对已感知的外界信息或由内部产生的信息进行思维性加工,相关研究领域有知识表示、组织及推理的方法、启发式搜索及控制策略、神经网络和思维机理等;再次,机器重新学习新知识,实现自我完善增强,这是人工智能的核心问题,相关研究领域包括各种机器学习和分类方法;最后,机器模拟人类的行动或表达,相关研究领域包括智能控制、智能制造、智能调度和智能机器人。
人工智能技术关系到人工智能产品是否可以顺利应用到我们的生活场景中,这些产品普遍包含知识表示、推理和问题求解、机器学习、数据挖掘、自然语言处理、人机交互、计算机视觉、生物特征识别、AR/VR等关键技术。
2.3.1 知识表示
知识具有相对正确性、不确定性、可表示性及可利用性的特点。根据不同的划分标准,知识可以分为不同的类别。例如,其按照作用范围可分为常识性知识和领域性知识;按作用及表示可分为事实性知识、过程性知识和控制知识;按确定性可分为确定性知识和不确定性知识;按结构及表现形式可分为逻辑性知识和形象性知识。
知识表示就是对知识的一种描述,或者说是对知识的一组约定,是一种计算机可以接受的用于描述知识的数据结构。它是机器通往智能的基础,可使机器像人一样运用知识。最早的人工智能专家乐观地认为,用符号系统和逻辑推理就能模拟人类智能,因而提出了谓词逻辑、产生式系统和框架结构等基于确定符号的表示方式。后来人们意识到,除了确定性知识,还需要利用概率等方法来表示不确定性知识。模式识别的发展又使人们意识到,物体的一些属性(如特征)很难用几个有限状态来表示,必须用连续值来描述和区分。因此,人工智能常用的知识表示方法包括状态空间表示法、谓词逻辑、产生式规则、语义网络、框架表示法、知识图谱、贝叶斯网络和特征向量表示法。
1.状态空间表示法
在人工智能理论中,许多问题的求解过程都采用了试探搜索的方法,从而可在某个可能的解空间找到一个可接受的解。这种基于解空间的问题表示和求解方法就是状态空间表示法。它以状态和操作符为基础进行问题求解和问题表示,是讨论其他形式化方法和问题求解技术的出发点。
状态是为描述某一类事物中各不同事物之间的差异而引入的最少的变量 q0,q1,q2,...,qn的有序组合,常表示为向量的形式:Q =(q0,q1,q2,...,qn)T,其中每个变量代表物体的一个属性。
状态空间可以用四元组(S,B,F,G)描述,其中,S = {Q1,Q2,...,Qn } 是问题所有可能的状态集合;B⊆S 是开始状态集合;F = { f1,f2,..., fm}是操作集合,其中的fi:Qi→Qj是状态变换操作;G⊆S 是目标状态集合。状态空间通常用状态树(见图2-1)、有限状态自动机(见图2-2)、隐马尔可夫模型(见图2-3)等来表示。
图2-1 状态树。节点Si(i=0,…,10)表示状态,状态之间的连接采用有向弧,弧上标以操作数Oi来表示状态之间的转换关系或条件
图2-2 三状态有限状态自动机。其中状态1为起始状态,3为终止状态,2为中间状态,a和b 为输入。在状态1时,检测到输入a ,自动机进入状态2,再检测到另一个输入b,自动机进入识别完成状态
图2-3 一个具有三个状态的隐马尔可夫模型。其中xi表示隐含状态,yi表示可观察的状态,aij 表示状态转移概率Pr(xit|xjt -1),bibi表示观测状态发生的概率Pr(yi|xi)
2.谓词逻辑
谓词逻辑是一种用谓词来表示个体特性或个体之间关系的形式系统。通过引入刻画所有的/任意一个(∀)、存在一部分(∃)等量词,它能够有力地用逻辑符号来表示命题与命题之间的逻辑关系并进行一些复杂的推理。例如,用x表示个体变量,谓词G(x)表示x 是大学生,谓词H(x)表示x 想继续攻读研究生,则命题“一些大学生想继续攻读研究生”表示为
(∃x)[G(x)∧H(x)]
3.产生式规则
产生式规则源于西蒙与纽厄尔的认知模型。这一模型的核心思想:人脑是物理信号系统,人之所以具有智能,能完成各种运算和解决问题,都是由于其经过学习,存储了一系列“如果……那么……”形式的编码规则。这种规则便称为产生式。产生式的一般形式为P1→P2。其中,P1和P2是谓词公式或命题。P1是前提,P2是结论或动作。产生式规则的语义:如果前提P1满足,则可得结论或执行相应的动作P2。例如:
炉温超过上限→关闭风门
4.语义网络
语义网络是 Quilian 在1966年提出的一种模型,是一种基于广义图的知识表示方法。图中的各节点代表某些概念、实体、时间和状态,节点之间的弧或超弧表示节点间的作用关系,弧上的说明可根据表示的知识进行定义,它表达了谓词逻辑中的谓词。例如,“小李是华为的工程师,他于2017年加入华为,参加5G网络开发”这句话用语义网络表示,如图2-4所示。
图2-4 语义网络示意
因其具有很强的逻辑推理能力,语义网络已经成为人工智能中的一种重要的知识表示方法。语义网络可表示多元关系,扩展后可表示更复杂的问题。
语义网络的主要优点包括:①实体的结构、属性和关系可显式表示,便于以联想的方式对系统进行解释;②问题表达更加直观和生动,适合知识工程师和领域专家进行沟通,符合人类的思维习惯;③与概念相关的属性和联系组织在一个相应的结构中,易于实现概念的学习和访问。同时,语义网络也存在一些缺点,如推理效率低、知识存取复杂等。
5.框架表示法
1974年,M.Minsky提出了框架理论:人类对自然事物的知识以很好的组织形式保留在人类的记忆中,并且人类试图用以往的经验来分析解释当前所遇到的情况。然而,我们无法把过去的经验一一都存在脑子里,只能以一个通用的数据结构的形式存储以往的经验,这样的数据结构称为框架。新的资料可以用从过去的经验中得到的概念来分析和解释。
框架通常采用“节点-槽-值”的表示结构,也就是说,框架由描述事物的各方面的若干槽组成,每个槽有若干侧面,每个侧面有若干值。框架中的附加过程用系统中已有的信息解释或计算新的信息。一个框架的一般结构如下:
用框架名作为槽值,建立框架间的横向联系;用继承槽建立框架间的纵向联系,像这样具有横向与纵向联系的一组框架称为框架网络(见图2-5)。
图2-5 框架网络示意
6.知识图谱
Google为了提高搜索引擎返回的答案质量和用户查询的效率,于2012年5月16日发布了知识图谱(Knowledge Graph)。Google知识图谱的宣传语是“things, not strings”,即事物不是无意义的字符串,而是字符串背后隐含的对象或事物[4]。以北京为例,我们想知道北京的相关信息(在很多情况下,用户的搜索意图可能是模糊的,这里我们输入的查询为“北京”),在之前的搜索引擎中,我们得到的返回结果只是包含这个字符串的相关网页,我们不得不进入某些网页查找我们感兴趣的信息;现在有了知识图谱的支持,除了相关网页,搜索引擎还会返回一个“知识卡片”,其包含了查询对象的基本信息和相关的其他对象(如北京旅游景点、北京高校等),如图2-6所示。
如果我们想知道这些信息,只需要点击相关链接即可,不用再做多余的操作,这样在最短的时间内,我们就获取了最简洁且最准确的信息。总之,有知识图谱作为辅助,搜索引擎能够洞察用户查询背后的语义信息,返回更为精准、结构化的信息,从而更能满足用户的查询需求。
图2-6 Google知识卡片示意
现在,知识图谱泛指结构化的语义知识库,并已广泛应用于聊天机器人和精准营销等方面。这些语义知识库采用由节点和边组成的图数据结构,以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体-关系-实体”三元组,或者“实体-属性-属性值”三元组。不同实体之间通过关系相互联结,构成网状的知识结构。在知识图谱中,每个节点表示现实世界中的实体,每条边表示实体与实体之间的关系。通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络,它使人能从“关系”的角度去分析问题。
知识图谱最常用的描述语言是RDF(Resource Description Framework)。RDF的基本单元是“主-谓-宾”三元组。主、谓、宾的取值称为资源(Resource)。资源可以是一个统一资源标识符(Uniform Resource Identifier,URI)、一个字符串或数字(严格来讲都是带类型的字符串),或者一个空节点。如图2-7所示为罗纳尔多与里约热内卢关系的RDF描述。其中,“www.kg:com/person/1”是一个国际化资源标识符(Internationalized Resource Identifier,IRI),用来唯一地表示“罗纳尔多”这个实体;“kg:”是RDF文件中所定义的前缀;“kg:ChineseName”“kg:nationality”等是IRI,用来表示属性。
7.贝叶斯网络
前面介绍的几种知识表示方法都用来表示确定性知识。有时候我们还需要表示具有不确定性的知识,例如,如果天上乌云密布,则很可能会下雨,但也可能不会,不能完全确定。贝叶斯网络就是一种利用概率来表示不确定性知识的有向无环图,其中,每个节点对应一个变量,边代表变量之间的因果关系。父节点是“因”,子节点是“果”。每个没有孩子的父节点都附有一个先验概率分布,而每个子节点都附有一个条件概率分布表。如图2-8所示为一个贝叶斯网络示例:草地是否湿与洒水或下雨有关,从天上是否有云可以大致推断是否会下雨,从而也可以大致推断主人是否会给草地洒水。
图2-7 罗纳尔多与里约热内卢关系的RDF描述[8]
图2-8 贝叶斯网络示例
8.特征向量表示法
上面介绍的各类基于图的知识表示方法有一些共同的缺点,如推理效率低、知识存取复杂;同时,在基于符号的表示方法中,变量只能取离散值。在很多模式识别应用中,特征的取值都是连续的。因此,模式识别系统多用特征向量来描述物体的特征。
以字符识别为例,首先,识别系统会从输入图像中通过文本分割方法找到字符的位置,把字符对应的图像块从整个图像中分离出来。然后,可以从这些图像块中提取一些有意义的特征作为分类器的输入。以图2-9(a)中的“5”为例,在得到字符的轮廓后,轮廓图像被分成4×4的方块[见图2-9(b)],从每个小方块中,可以提取各方向(0°,45°,90°和135°)的点数,以右上角的方块为例[放大后的局部见图2-9(c)],其各方向的点数如表2-2所示。假设每个方块的大小为8×8像素,对点数进行归一化(点数除以64),可以得到归一化的特征。最后,把从图中各方块中提取的归一化特征按从左到右、从上到下的顺序串起来,就可以得到一个4×4×4=64维的特征向量。
图2-9 对字符“5”的特征提取示意[9]
表2-2 从图2-9(c)中提取的特征(各方向的点数)
2.3.2 推理和问题求解
知识表示的方法不同,其推理和问题求解的方法也不同。比如,贝叶斯网络、特征向量表示法主要用于分类问题,其推理过程通常用一个分类器来实现。而其他很多表示法的推理和问题求解都通过图搜索来实现,比如有限状态自动机、隐马尔可夫模型都可通过动态规划法来完成输入和输出的匹配,而产生式规则会通过正向推理或反向推理的方式来求解问题。
1.正向推理
正向推理又称数据驱动推理、前向链接推理。实现正向推理的一般策略:先向工作存储器提供一批数据(事实),利用这些事实与规则进行匹配,一旦触发匹配成功的规则,则把其结论作为新的事实添加到工作存储器中,继续上述过程,用更新过的工作存储器的所有事实再与规则库中的另一条规则匹配,用其结论再次修改工作存储器的内容,直到没有可匹配的新规则、没有新的事实加到工作存储器中为止。问题求解会产生一棵推理树,下面以动物分类问题的产生式规则描述及其求解为例介绍(见图2-10)。
图2-10 动物分类问题的正向推理树[10]
假设规则如下。
r1:若某动物有奶,则它是哺乳动物。
r2:若某动物有毛发,则它是哺乳动物。
r3:若某动物有羽毛,则它是鸟。
r4:若某动物会飞且生蛋,则它是鸟。
r5:若某动物是哺乳动物且有爪且有大齿且目盯前方,则它是食肉动物。
r6:若某动物是哺乳动物且吃肉,则它是食肉动物。
r7:若某动物是哺乳动物且有蹄,则它是有蹄动物。
r8:若某动物是有蹄动物且反刍食物,则它是偶蹄动物。
r9:若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。
r10:若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。
r11:若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。
假设初始事实如下。
f1:某动物有毛发。
f2:某动物吃肉。
f3:某动物是黄褐色。
f4:某动物有黑色条纹。
目标条件:该动物是什么?可利用正向推理算法及推理树(见图2-10)得到运行结果:该动物是老虎。
2.反向推理
反向推理又称目标驱动推理、后向链推理。其基本原理是从表示目标的谓词或命题出发,使用一组规则证明事实谓词或命题成立,即提出一批假设(目标),然后逐一验证这些假设。反向推理的具体实现策略:先假定一个可能的目标,并试图证明它,看此假设目标是否在工作存储器中,若在,则假设成立;否则,看这些假设是否是证据(叶子)节点,若是,则向用户询问,若不是,则再假定另一个目标,即找出结论部分中包含此假设的那些规则,把它们的前提作为新的假设,并试图证明它。这样周而复始,直到所有目标被证明,或者所有路径被测试[10]。与上面的动物分类问题对应的反向推理产生的推理树如图2-11所示。
图2-11 动物分类问题的反向推理树[10]
从上面的两个算法可以看出,正向推理是自底向上的综合过程,而反向推理则是自顶向下的分析过程。二者都应用了图搜索(与或树)算法。
2.3.3 机器学习
机器学习(Machine Learning)可使计算机模拟或实现人类的学习行为以获取新的知识或技能,从而重新组织已有的知识结构,不断改善自身的性能,它是人工智能技术的核心。机器学习是一门涉及统计学、计算机科学、脑科学等的交叉学科。
怎样判断一个机器或计算机程序是否有学习能力呢?1998年,卡耐基梅隆大学的Tom Mitchell给出了如下定义:给定一个任务T和性能评估标准P,如果通过传授给计算机程序一个经验E后,其完成任务T的性能(基于性能评估标准P)有所提高,则说明这个程序具有学习功能。例如,对下棋来说,任务就是下棋,性能评估标准就是赢人类棋手的概率,经验就是曾经下过的棋局;而对字符识别来说,任务就是识别输入的字符图像,性能评估标准就是识别的正确率,经验就是收集的字符集。
如图2-12所示,机器学习包括学习样本采集、样本描述、学习环节和执行/验证环节。根据任务的不同,样本描述可以采用上面介绍的任意知识表示方法。对每个样本,还可以附上它所对应的类别/答案/行动,这样的(数据,类别)组称为标记样本;否则,称为无标记样本。这些样本如果用于学习环节,就叫训练样本;用于测试环节,就叫测试样本。学习环节的任务是建立用于解答问题的知识库或用于分类的模型。执行/验证环节会完成要求的问题解答或分类任务,并对学习系统进行性能评估。
图2-12 机器学习的基本过程
根据知识表示方法和学习任务的不同,机器学习的方法与策略也不同。符号系统(如产生式规则)通常采用机械式学习、演绎学习、示例学习、类比学习和解释学习[3]等方法来建立知识库;基于概率的有向图(如贝叶斯网络和隐马尔可夫模型)学习的主要任务是估计模型的参数,以便模型能最好地描述训练样本;而分类器学习(通常以特征向量作为输入)的主要任务是从训练样本中学习出一个最佳模型,以便提高分类准确率。根据不同的学习特点,机器学习方法可以有多种分类,如表2-3和表2-4所示。
表2-3 基于训练样本标签类别的机器学习方法分类
续表
表2-4 基于学习方法演化的机器学习方法分类
在这些机器学习方法中,分类器的学习是监督学习的一项重要工作,也是其最成功的一个方面。系统从外界获取很多不准确的数据,即数据中包含重复记录、不良解析的字段,或不完整、不正确及过时的信息,而分类器的一个关键优势,就是对“脏”数据具有容忍能力。不同的分类器具有不同的容忍能力。分类器的算法选择,一方面取决于运算速度和精度的要求,另一方面要看样本是否线性可分。
假设样本的特性可以用一个n 维的特征向量x=(x1,…,xn)T 来表示。如果定义一个n 维的坐标系,那么每个样本的特征向量会对应这个坐标系中的一个点。如果一个n-1维的超平面可以把两个类别分开,则这两个类别是线性可分的。假设图2-13中的黑点和白点代表两个类别(分别用1和-1标记)的样本在特征空间的位置,则图2-13(a)中的两个类别是线性可分的,而图2-13(b)中的两个类别不是线性可分的。
1.线性分类器
如果两个类别的特征是线性可分的,则可以定义一个超平面和一个简单的判别准则来把这两个类别分开。线性分类器学习的任务就是通过学习样本找到一组权值w,使得根据w定义的超平面对两个类别有好的分类效果。线性分类器通常通过统计方法或判别模型来获取。
图2-13 线性可分与非线性可分类别示意
朴素贝叶斯分类器是一种有代表性的统计方法(见图2-14)。它可以把分类问题转换成一个条件概率问题,即给定特征向量x=(x1,…,xn )T ,分类器试图把样本分配给条件概率最大的类别。当特征数量较大或每个特征能取大量值时,计算条件概率变得不现实。
图2-14 朴素贝叶斯分类器的有向图表示
如此,问题就转换成从学习样本中估计各类别的先验概率P(C)和计算条件概率P(xi|C)所需的特征分布参数(假设特征在训练集中满足某种分布或非参数模型)。支持向量机是判别模型的代表(见图2-15)。其目的是从训练样本中学习到一个超平面,这个超平面不但可以区分两个类别,而且可以保证其到两个类别中离它最近的点的间隔最大。
2.基于监督学习的神经网络
1)神经网络介绍
神经网络设计的灵感来源于大脑神经系统。早在1904年,生物学家就提出了神经元(单个神经细胞)的结构模型。如图2-16所示,神经元结构中通常具有多个用来接收传入信息的树突,以及一条轴突。轴突尾端有许多轴突末梢来给其他神经元传递信息。轴突末梢跟其他神经元的树突连接,从而传递信号。连接的部位叫作突触。神经元可被视为一种只有两种状态的机器——激活时为“是”,未激活时为“否”。神经元的状态取决于它从其他的神经元接收到的输入信号量及突触的强度(抑制或加强)。当信号量总和超过某个阈值时,细胞体就会激活,产生电脉冲。电脉冲沿着轴突并通过突触传递到其他神经元。
图2-15 支持向量机。黑点所代表的类别的标记为1,白点所代表的类别的标记为-1
图2-16 神经元的结构
通过参考生物神经元的结构,Frank Rosenblatt于1957年提出了单层感知机模型,如图2-17所示。它包括多个输入节点(对应于样本输入的n 个特征值x1,…,xn )、每个输入的权重(w1,…,wn)、偏置(阈值b)和一个输出单元。输入节点只负责输入,不进行任何计算,运算功能由输出单元完成。输出单元先对输入加权求和,然后把和值传递给激活函数来计算最后的输出。
图2-17 单层感知机模型
单层感知机是一个二元线性分类器,处理的问题有限。20世纪80年代初,多层感知机开始成为基于神经网络的主流分类器,在模式识别等领域得到了广泛的应用。一个多层感知机包括一个输入层、一个或多个隐含层和一个输出层。最常用的是如图2-18所示的三层感知机。输入层的节点数为输入特征向量维数加1(每个节点对应特征向量中的一个元素,最后一个节点为偏置)。输出层的节点数为目标的维数或类别(每个节点对应一个类别),而每层的节点数是由设计者指定的,因此,“自由”把握在设计者的手中。但是,节点数的设置会影响整个模型的效果。如何决定这个节点数呢?目前业界没有完善的理论来指导这个决策,一般根据经验来设置。较好的方法是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择,这种方法又叫Grid Search(网格搜索)。通常隐含层的节点数会比输入层少,比输出层多。
图2-18 三层感知机
在多层感知机中,前一层节点的输出会作为下一层节点的输入。也就是说,隐含层和输出层的每个节点都具有单层感知机类似的结构与功能:对来自上一层的输入线性加权求和,把所得到的结果传递给激活函数并输出激活函数的值。
为了增强对非线性问题的模拟能力,多层感知机的激活函数通常采用非线性且可微(平滑)的函数。常用的激活函数包括Sigmoid 函数、Tanh函数和修正线性单元(ReLU),这些函数的形式如图2-19所示。
图2-19 多层感知机中常用的激活函数
虽然多层感知机比单层感知机具有更强的表达和分类能力,但相比于生物神经网络系统,它仍然是一个非常简化的模型。早在20世纪80年代初,生理学家就发现人的视觉神经系统是一个复杂度分层的系统:低层的神经元只提取局部区域(神经元反应的局部区域称为神经元的感受野)的一些比较简单的元素,比如选择性地提取特定方向的线条或物体边缘;中层的神经元接收并综合低层神经元的信息,其感受野比低层的大,可以提取基本的形状,如圆、长方形等;而高层的神经元感受野更大,可以提取复杂的形状。为了模拟这一复杂的视觉神经系统,Fukushima提出了Neocognitron(见图2-20)[11,12]。
图2-20 用于字符识别的Neocognitron
Neocognitron 由多个不同阶段/层次、不同功能的神经元组成。每个阶段都由一个S-层和一个C-层组成。S-层负责该阶段的特征提取,而C-层则用于增加神经网络对物体或特征位置变化的健壮性。每一层对应一个多通道特征平面。如图2-20中,US1层下面标明19×19×12,表明US1层有12个特征平面,每个通道上的每个点有一个大小为19×19的感受野,其从它上一层图像/特征平面中的一个大小为19×19的局部区域接收输入信息。每个点通过一个权向量与感受野中的各输入节点相连。这样,每个点包含的权值可以用一个三维矩阵来表示。其中第一、二维对应于感受野的宽度和高度,第三维是与之连接的前一层的特征平面数。如图2-20中,US2层各权矩阵的维数为21×21×8,其中8为UC1层的特征平面数。
Neocognitron可以看成最早的深度神经网络,可惜受限于当时计算机的运算能力及训练样本集,Neocognitron并没有引起广泛的注意。1998年,深度神经网络的先驱Yann Lecun提出了LeNet-5 [12]并将其成功用于字符识别。与Neocognitron类似,LeNet-5(见图2-21)的每层都定义了各自的感受野,同一层的各特征平面具有相同的感受野。每个特征平面都有自己的权矩阵。这个权矩阵会按设定的步长在前一层的特征平面上从上到下、从左到右移动,以便计算当前特征平面上对应节点的输出。这和滤波器通过卷积进行滤波的原理非常类似,权矩阵相当于滤波器的“核”。每个核在图像上抽取不同的特征。这样的深度神经网络也叫深度卷积神经网络。Neocognitron 利用二次抽样(Subsampling)来降低特征平面的维数和增加网络对特征位置变化的健壮性,而没有定义C-层。同时,LeNet-5最后还定义了两个全连接层以综合各局部特征的信息,得到物体的分类。
图2-21 LeNet-5结构示意[12]
随着GPU技术的飞速发展,计算机的运算速度得到了显著的提高;同时,通过科研人员的不懈努力,大规模的训练样本集如ImageNet,也给科学实验提供了便利,使得基于大数据的深度学习成为可能,各种深度卷积神经网络应运而生。图2-22所示为广泛使用的深度卷积神经网络AlexNet的结构[13]。
图2-22 AlexNet 的结构[13]
AlexNet接收一个224×224的三通道图像作为输入。它包含5个局部卷积层和三个全连接层(最后三层)。第一层由96个感受野为11×11 的核组成。第一层下面的标注“Stride of 4”说明卷积的步长为4。第一、二层和第五层都标注了池化(Max Pooling)操作。池化操作完成二次抽样的功能。如对一个2×2的局部区域进行池化操作,将从区域内的4个节点值中选择最大的一个作为池化输出,这样一个2×2的区域就被压缩成了一个点。池化还能使网络对特征位置的变化具有更好的健壮性。
从2012年至2015年,每年ImageNet Large Scale Visual Recognition Challenge(ILSVRC)的冠军都是深度卷积神经网络,由此产生了一批深受欢迎的深度卷积神经网络,如VGG、GoogLeNet和 ResNet(它们在比赛中的表现见图2-23,条形图上方的数字代表其检测物体的错误率)。除卷积神经网络之外,研究者们还提出了其他的网络结构,比如用于处理序列信息的RNN(Recurrent Neural Network)和LSTMs(Long-Short Term Memory Networks)。同时,常用的网络结构在不同的框架工具下实现,并可免费使用,这极大地促进了深度神经网络技术的推广和应用。常用的框架工具有Caffe、TensorFlow、MXNet、Torch和Theano等。
图2-23 ILSVRC 2014年和2015年的冠军系统及其表现
虽然深度卷积神经网络最早只用于图像识别,但现在其应用已扩展到语音识别和自然语言理解等领域。其他深度神经网络结构,如循环神经网络、生成对抗网络、基于注意力的模型等,不断推陈出新,掀起了深度神经网络研究与应用的浪潮。
2)神经网络学习
神经网络的分类功能是通过一个正向传播的过程来实现的:给定一个输入向量,第一个隐含层的每个节点会计算各自的输出,并传递给下一层作为输入,如此一层层传递下去,直到输出层为止。输出层第i(i=1,…,N)个节点的输出可以看成输入样本第i个节点所对应类别的概率。假设输入样本的类别为 k,一个理想的神经网络分类器对应于第k 类别的输出应该是1,而其他节点的输出为0。实际分类器每个节点的输出是一个0~1的实数。通常分类器会通过一个softmax 函数把输入样本分配给输出概率最大的节点所对应的类别。
神经网络在开始学习之前,各节点的权重值是随机分配的,输出层的输出也是随机的。显然,这个网络作为分类器的性能较低。假如改变了某个神经元或某几个神经元的权重值或偏置值,那么该神经元的输出肯定会变得不同,这些不同最终将反映在输出上。所以,可以通过合理地改变权重值和偏置值来提高这个神经网络的性能。神经元的权重值和偏置值统称为神经网络的参数。神经网络学习的目的就是调整这些参数,使网络得到好的分类效果,其中最典型的方法就是基于梯度下降原理的误差反向传播算法。
为了计算神经网络分类的误差,首先要定义一个误差函数。分类器的误差越小,其性能就越好。那么,怎样调整参数使神经网络最快地学习到理想的参数以达到好的分类效果呢?从数学上讲,当权重值和偏置值沿着误差函数的负梯度方向(也叫最大梯度方向)变化时,学习速度最快。误差函数的负梯度方向可以通过对误差函数求偏导得到。由于误差函数是一个非线性函数,其各点的梯度值不同,通常算法还会引入一个步长,或者叫学习率,通过多个循环来逐渐调整参数。
由于误差函数与输出层的权重直接相关,可以直接在这一层求出误差函数对权重的偏导,但其他层的权重并不直接体现在误差函数中,对它们求偏导需要利用微积分中的链式原则。因此,神经网络的权重调整总是从输出层开始,逐层向前传递的。神经网络的学习过程也叫误差反向传播过程或BP(Back -Propagation)过程。
3.强化学习
前面介绍的监督学习方法需要明确地标注样本,即需要标注输入与输出之间的对应关系。但是,有的问题通过多个步骤或动作才能得到最后的结果,无法准确定义各子步骤与结果之间的对应关系。比如下棋最后的结果是由很多个落子步骤,以及对手的落子策略共同决定的,对于每一步落子,我们无法给它一个对错/输赢作为输出,因为某一落子动作是否正确,不仅取决于当前的棋局(环境),还取决于后续双方棋手的策略。强化学习方法的提出,就是为了学习各子步骤或动作在特定环境下对最后结果的贡献,以便系统能根据现有的状态决定下一步的动作。
强化学习有四个核心组成部分,即环境、学习者(Agent)、策略及收益函数(见图2-24)。具体地,学习者处于一个环境中,可以感知所处环境的状态,而当某个动作作用在当前状态时(一个策略),学习者就能感知环境状态的变化,同时该动作所带来的状态变化会根据一个收益函数向学习者反馈一个收益。学习者通过在环境中不断地尝试,最终得到一套策略,从而使执行这一策略后得到的累积收益最大。由此可见,强化学习包括非常重要的两方面:一是定义所有可能的动作空间;二是定义最优的收益函数,即每个动作所带来的收益。
图2-24 强化学习模型
强化学习以离散时间马尔可夫决策过程(Markov Decision Process,MDP)为数学基础,不需要精确的历史训练样本及系统先验知识,可以适应动态环境变化,通过观察当前状态和收益并不断与环境交互试错来获取最优策略。具体来说,整个强化学习的任务就是一个马尔可夫决策过程,可由<S,X,P,R>四元组表示,其中P:S×X×S→R定义了状态转移函数,而R:S×X×S→R定义了收益函数。学习者需要在环境中不断尝试以得到一个最优策略,根据这个策略就知道在某种状态下需要执行的动作。策略π:S×X→R表示在状态s∈S下,选择动作x∈X的概率。
根据学习过程中马尔可夫决策过程的知悉情况,可以将强化学习分为有模型学习和无模型学习两种。如果<S,X,P,R>已知,则为有模型学习,在这种情况下,任意状态s执行动作x转移到状态 s' 的概率是已知的,同时该转移所带来的收益也是已知的,那么就能算出任意策略 π所带来的期望累积收益,在有限的状态空间和动态空间下,可以根据期望累积收益最大值来找到最优策略。而对于无模型学习,转移概率和奖赏函数都是未知的,甚至很难知道环境中有多少状态或学习者可以采用什么样的动作,这样的模型更加贴合实际,但更难实现。