第一部分 理论篇
第1章 人工智能技术
1.1 人工智能技术简介
人工智能(Artificial Intelligence,AI)是计算机科学的一个分支,它使用计算机技术来理解和分析人类智能的本质。从语义分析的角度来说,“人工”是指人造的、科技的;“智能”是指智力能力,包括记忆、判断、思考、想象等。人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学。它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。因此,简单地讲,人工智能就是让机器具有人类的智能。
和很多其他学科不同,人工智能这个学科的诞生有着明确的标志性事件,就是1956年的达特茅斯(Dartmouth)会议。在这次会议上,“人工智能”被提出并作为本研究领域的名称。自此,研究者们发展了众多的理论和原理,人工智能的概念也随之扩展。在定义智慧时,英国科学家图灵做出了贡献:如果一台机器能够通过称为图灵实验的实验,那它就是智慧的。图灵实验的本质就是让人在不看外型的情况下不能区别是机器的行为还是人的行为时,这个机器就是智慧的。John McCarthy则提出了人工智能的定义:人工智能就是要让机器的行为看起来就像是人所表现出的智能行为一样。
人工智能包括十分广泛的科学,它由不同的领域组成,如机器学习、语言识别、图像识别、自然语言处理和专家系统等。但总的来说,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。人工智能自诞生以来,理论和技术日益成熟,应用领域也不断扩大。可以设想,未来人工智能带来的科技产品,将是人类智慧的“容器”,可以对人的意识、思维的信息过程进行模拟。人工智能不是人的智能,但是能像人那样思考、也可能超过人的智能。
1.2 人工神经网络
1.2.1 人工神经网络简介
20世纪初,生物学家通过研究揭示了生物神经元的结构,如图1.1所示。
图1.1 生物神经元结构
它主要包括突触、树突、细胞体、轴突等。突触是一个神经元的神经末梢与另一个神经元的树突或细胞体接触的地方,神经元之间通过突触建立联系,从而实现信息传递;树突是细胞体向外延伸的树枝状纤维体,用以接收其他神经元传递来的信息;轴突是细胞体向外延伸的一条又粗又长的纤维体,其末端有许多向外延伸的树枝状纤维体(神经末梢),用以输出神经元的信息。神经元通过树突接收来自其他神经元的信号,当信号的累积超出某个阈值时,神经元被激活,产生电脉冲,并通过轴突将脉冲信号传递给其他神经元。
受生物神经元工作机制启发,McCulloc和Pitts于1943年提出了一种人工神经元模型[1],其结构如图1.2所示。
图1.2 人工神经元模型
模型的输入,输入权重 ,偏置值用 表示,则神经元的累积输入(净输入) 可表示为
净输入z经过激活函数 产生神经元输出。
激活函数 对神经元来说作用非常重要,直接决定了网络的表征能力,通常需要满足以下几方面性质:
(1)非线性可导函数,以便于网络参数的优化学习;
(2)导函数应尽可能简单,以确保网络的计算效率;
(3)导函数的值域应在一个合适的范围内,以确保训练的效率和稳定性。
常用的激活函数如下。
1)Sigmoid型函数
Sigmoid型函数为S型曲线函数,常用的有Logistic函数和Tanh函数。Logistic函数定义为
Tanh函数定义为
2)ReLU型函数
ReLU型函数为斜坡函数,常见的有ReLU函数[2]、LReLU函数[3]、PReLU函数[4]、ELU函数[5]和Softplus函数[6]。基本的ReLU函数定义为
LReLU函数定义为
通常为一比较小的常数,如0.001。PReLU函数定义为
为 时函数的斜率。ELU函数定义为
Softplus函数是平滑版的ReLU函数,其定义为
3)Swish函数
Swish函数[7]为一种自门控函数,其定义为
其中, 为Logistic函数; 为一个固定超参数。
4)Maxout函数
Maxout函数[8]是一种分段线性函数,其输入是上一层神经元的全部原始输入,为一向量x,每个Maxout单元有K个权重向量 和偏置 ( ),其净输入 可以表示为
该函数定义为
1.2.2 人工神经网络基本结构
人工神经元是模拟生物神经元的一种简单实现,要想完成复杂的功能,单一神经元往往是不够的,需要很多神经元一起协作完成。多个神经元通过一定的连接方式进行协作便形成了神经网络。常见的神经网络结构包括前馈网络、反馈网络和图网络。
1. 前馈网络
前馈网络是结构上*简单的一种神经网络,各神经元分层排列,每个神经元只与前一层神经元相连,接收前一层神经元的输出,并将信息输出给下一层,各层神经元之间彼此没有连接。前馈网络是*常见、应用*广泛的网络结构,典型结构如图1.3所示。
图1.3 前馈网络结构
前馈网络通常由多层神经元构成,包括输入层、隐藏层和输出层,每一层神经元可以接收前一层神经元的信号,并产生信号输出到下一层,其网络示例如图1.4所示。网络的相关参数定义如下。
图1.4 多层前馈网络
网络层数: ;第 层神经元个数: ;第 层神经元激活函数: ;第 层到 层的权重矩阵: ;第 层的偏置: ;第 层神经元净输入: ;第 层神经元的输出: 。
反向传播(Back Propagation,BP)神经网络于1986年由Rumelhart和McClelland为首的科学家提出,是一种应用非常广泛的前馈网络,下面重点以BP神经网络为例介绍一下前馈网络的工作流程。BP神经网络的训练过程可以分为三步。
(1)信息前向传播。
具体来说,输入信号通过多个隐藏层作用于输出节点,经过非线性变换,产生输出信号,前向传播过程可以表示为
(2)输出误差计算。
以交叉熵作为损失函数为例,对于样本(x, y),输出误差为
其中, 为实际输出;log底数为e,下同。
(3)误差反向传播。
具体来说,将输出误差通过隐藏层向输入层逐层反传,以各层得到的误差信号作为调整各单元权值的依据。对于第 层中的 和 ,计算其偏导数如下:
下面依次计算
展开