第5章 人工神经网络 本章学习目标 ● 了解人工神经网络的发展历程。 ● 理解感知机的工作原理和局限性。 ● 掌握BP神经网络的结构和BP学习算法。 ● 掌握卷积神经网络的结构和运算过程。 深度学习(deplearning)是近年来计算机学科领域中发展最迅猛的热门研究方向之 一,在人工智能的许多应用领域都取得了令人瞩目的进展。深度学习是机器学习的一个分 支,而机器学习又是实现人工智能的必经路径,故而人工智能、机器学习和深度学习之间是 依次包含的关系。人工智能的研究内容包括机器学习、知识工程、搜索策略、推理、规划、模 式识别、组合调度问题、机器人学等;传统机器学习的研究方向主要包括人工神经网络、决策 树、随机森林、支持向量机、贝叶斯学习、关联规则、Boosting与Bagging集成学习算法等,而 深度学习的概念正是起源于人工神经网络。由于深度学习在计算机视觉、语音识别、机器翻 译、图像处理、自然语言处理等方面获得成功应用,在学术圈引起了巨大的反响,因此人工神 经网络的研究热度反而超过了其他传统方法,在机器学习研究中占据了主流的地位。 本章首先介绍人工神经网络的发展历程、感知机与神经网络的基础知识,然后介绍 BP神经网络及其学习算法和卷积神经网络。 5.人工神经网络的发展历程 1 1943年,美国神经生理学家麦卡洛克(McCuloch)和数理逻辑学家皮茨(Pits)在分析 与总结了生物神经元的激活方式后,合作设计了第一个人工神经元模型。它由固定的结构 和权重组成,是一种基于阈值逻辑运算的数学模型,称为MP模型。虽然MP模型没有学习 机制,但它开创了用电子装置模仿人脑结构和功能的新途径,是最早的人工神经网络雏形, 开创了人工神经网络研究的时代。 1949年,加拿大心理学家赫布(Hebbian)提出了大名鼎鼎的赫布理论,即“突触前神经 元向突触后神经元的持续重复的刺激,可以导致突触传递效能的增加。”简单地说,就是: 突触前给的刺激越强,突触后的反应越大。赫布理论解释了在学习过程中脑神经元所发生 的变化,为后续研究神经网络学习算法奠定了基础,具有重大历史意义。 受到赫布理论的启发,1957年,美国心理学家罗森布拉特(Rosenblat)在康奈尔航空实 验室(CornelAeronauticalLaboratory)提出了感知机(perceptron),这是第一个人工神经网 络。还为其设计了第一个神经网络学习算法,首次将神经网络研究从纯理论探讨推向工程 实现。感知机本质是一种仅包含输入层和输出层的二元线性分类器,也称为单层神经网络。 感知机的输入层可以包含多个单元,而输出层只有一个单元。与MP模型不同的是,感知机 模型可以利用学习算法自动更新输入的权重和阈值。此后,神经网络的研究进入了第一次 高潮。 但好景不长,1969年,明斯基与派普特的《感知机:计算几何导论》指出了感知机的局 限性,使神经网络的研究走向衰落,导致人工智能的连接主义研究流派陷入了长达十多年的 低谷期。 1974年,韦伯斯在其博士论文提出利用反向传播算法训练多层神经网络,但他并未公 开发表相关的学术论文,几乎无人了解这项研究成果。 1980年,日本学者福岛邦彦(KunihikoFukushima)提出了名为Neocognitron的神经网 络,被认为是最早的研究卷积神经网络的工作,也是最早的深度神经网络模型之一。 Neocognitron用于处理图像,其重要特性是平移不变性。为此,福岛邦彦获得了2021年鲍 尔科学成就奖,以表彰其对深度学习的巨大贡献,尤其是他提出的极具影响力的卷积神经网 络架构。 1982年,加州理工学院的霍普菲尔德教授提出Hopfield神经网络,可用于实现联想记 忆和优化计算,在旅行商问题上获得了突破。尤其是1984年又用模拟集成电路实现了 Hopfield神经网络,有力地推动了神经网络的研究,连接主义迎来了第二次高潮。 受此启发,辛顿于1984年提出了一种随机型的Hopfield网络,即玻尔兹曼机。它是一 种反馈神经网络,借鉴了模拟退火法的思想,具有一定的“跳出局部最优”的能力。玻尔兹曼 机的特点是:一是包含显层与隐层两层结构,显层代表输入和输出,隐层则被理解为数据的 内部表达;二是其神经元是布尔型的,即只能取0或1。 1986年,鲁梅尔哈特、辛顿和威廉姆斯重新独立地提出了多层神经网络的学习算 法———BP算法,采用sigmoid函数代替阶跃函数作为激活函数,可以解决多层神经网络中 参数优化的问题,且成功解决了非线性分类问题。更值得一提的是,同年,他们在《自然》期 刊上联名发表了《通过反向传播误差学习表示》(LigRpttisbyBk- PropgtigErors)的经典学术论文,因其精确、清晰的观(e) 点(r) 陈(n) 述而(e) 令(r) B(e) P(e) 算(a) 法(o) 传(n) 播甚广。(c) (a) (s) (a) 198(a) 9(a) 年,(n) 杨乐昆采用BP算法训练LeNet系列的卷积神经网络,并将其成功应用于美 国邮政业务中手写邮政编码数字的识别,随后该网络又成功应用于银行ATM机中支票上 手写金额数字的识别。杨乐昆构建的LeNet-5模型成为现代卷积神经网络的基础,这种卷 积层、池化层堆叠的结构可以保持输入图像的平移不变性,且能自动提取图像特征。为此, 他被誉为“卷积神经网络之父”。 但在此后的十多年里,由于BP算法仍然存在一些问题,例如梯度消失、梯度爆炸等,再 加上当时算力不足,使得该算法只适合于训练浅层神经网络,其应用受到了许多限制。相比 之下,万普尼克于1995年提出的支持向量机可以通过核(kernel)技巧将非线性问题转换成 线性问题,其理论基础清晰、证明完备、可解释性好,获得了广泛的认同。同时,统计机器学 习专家从理论角度怀疑神经网络的泛化能力,使得神经网络的研究第二次陷入低谷。 直到进入21世纪,随着大数据时代的来临以及计算机算力的大幅提升,神经网络的研 究迎来了第三次高潮。2006年,辛顿教授及萨拉赫丁诺夫发表的论文首次提出了“深度信 念网络”(depbeliefnetwork),它是由多个受限玻尔兹曼机(restrictedBoltzmannmachine) 串联堆叠而组成的一个深度网络。深度信念网络在分类任务上的性能超过了传统经典的浅 层学习模型(如支持向量机),引起了学术圈的广泛关注。与传统的训练方式不同,深度信念 网络利用“预训练”技术为神经网络中的权值找到一个接近最优解的值,然后再采用“微调” 技术对整个网络进行优化训练,逐层预训练的技巧极大地提高了神经网络的泛化能力。随 着神经网络层数的不断加深,辛顿将这种深层神经网络上的学习方法命名为“深度学习”。 从此,连接主义研究学派开始大放异彩。通常,将包含多个(大于3即可)隐藏层的人工神经 网络称为深度神经网络,在这样的网络上学习的过程称为深度学习。 2012年,辛顿教授及其学生提出的AlexNet模型在ILSVRC比赛的图像分类组一举 夺魁。从此深度学习不仅是学术圈的研究热点,还得到了产业界的广泛关注。 深度学习发展至今,神经网络的层数不断加深,模型性能不断提升,甚至在图像分类任 务上的能力已超过了人类。2012—2017年,t图像分类的Top5(即排名前5的分 ImageNe 类标签)错误率从28%降到了3%,目标识别的平均准确率从23%上升到了66% 。此外, 深度学习方法在自然语言处理、机器翻译、无人驾驶、语音识别、生物信息学、医学影像分析 与金融大数据分析等方面也都有广泛而成熟的应用。 5.感知机与神经网络 2 科学家受到人脑或生物神经元结构和学习机制的启发,提出了人工神经元的数学模型, 又在此基础上增加了学习机制,研制出了可运行的感知机,即单层人工神经网络。最后,将 若干个感知机连接在一起,形成了人工神经网络。 人工神经网络,简称神经网络(neuralnetwork,NN)或类神经网络,是模拟人脑或生物 神经网络的学习机制而建立起来的一种运算模型。它由大量简单的信息处理单元按照一定 拓扑结构相互连接而组成人工网络。 2.生物神经元结构 5.1 生物学家早在20世纪初就发现了生物神经元的结构,神经元(neuron)也称为神经细 胞,其结构如图5. 1所示。 一个神经元通常由一个细胞体(soma,也称为体细胞);多个树突(dendrites)和一条长 长的轴突(axon)组成。细胞体是神经元的主体部分,由细胞核、细胞质、细胞膜等组成。树 突是由细胞体向外伸出的许多较短的分支,相当于细胞的输入端,用于接收信息,树突的各 个部位都能接收其他神经元的冲动。轴突是细胞体向外伸出的最长的一条分支,也叫神经 纤维,用于发送信息。轴突尾端有许多末梢,称为突触,是专门用于与其他神经元的树突相 连接的组织,并将神经冲动信号传递给其他神经元。典型的轴突长1cm,是细胞体直径的 100倍。一个神经元通过突触与10~105个其他神经元相连接。神经冲动只能由前一个神 经元的突触传向下一个神经元的树突或细胞体,不能反方向传递。 1 02 图5.1 生物神经元结构 神经元有两种常规的工作状态:兴奋状态和抑制状态。当传入的神经冲动使细胞膜电 位升高超过一个“阈值”时,该细胞就会被激活,进入兴奋状态,产生神经冲动,并由轴突经过 突触输出;当传入的神经冲动使细胞膜电位下降到低于一个“阈值”时,该细胞就进入抑制状 态,不输出神经冲动。 5.2.2 神经元数学模型———MP模型 人工神经元是构成人工神经网络的基本单位,它模拟生物神经元的结构和特性,可以接 图5.2 神经元数学模型(MP模型) 收一组输入信号,并产生输出。1943年提出的 MP模型是模仿生物神经元结构而建立的第一 个人工神经元数学模型,其结构如图5.2所示。 MP模型可以接收多路输入信号。假设一 个神经元同时接收的n 个输入信号用向量X= (x1,x2,…,xn)表示,则所有输入信号的线性组 合称为该神经元的净输入(netinput),记为u∈ R,计算公式如公式(5.1)所示。 u =Σn j=1 wjxj +θ (5.1) 其中,w1,w2,…,wn 为该神经元各个输入信号 的权值,θ∈R 为偏置。然后,净输入u 会被函数f(x)转换为输出值y,该函数称为激活函 数(activationfunction)。在MP模型中,激活函数f(x)采用非线性的阶跃函数,其表达式 如公式(5.2)所示。 y =f(u) f(x)= 1, x >0 0, x ≤0 { (5.2) 阶跃函数具有二值化输出,当净输入值大于0时,输出1;当净输入值小于或等于0时, 输出0。因此,如果采用阶跃函数作为激活函数,就得到了一个非常简单的二类分类器,它 可以根据一个输入向量做出明确的分类决策。但是,阶跃函数有一个致命的缺陷:不连续、 不平滑,因为它在0点处的导数是无穷大,除了0点处之外,导数都是0,这意味着:若学习 算法采用基于梯度的优化方法,是不可行的。 1 03 在MP模型中引入激活函数的目的是:用于模拟生物神经元的工作机制,当电位高于 一个设定的阈值时,则进入兴奋状态,输出信号;否则进入抑制状态,不输出信号。 可见,MP模型中的输入和输出数据只能是二值化数据0或1,而且网络中的权重、阈值 等参数都需要人为设置,无法从数据中学习得到。MP模型的激活函数是一个简单的阶跃 函数。MP模型只能处理一些简单的分类任务,例如线性二分类问题,但无法解决线性不可 分问题。 5.2.3 感知机 由一个神经元构成的神经网络称为感知机,也称为单层神经网络。1957年提出的感知 机是第一个工程实现的人工神经网络,可以运行感知机学习算法来训练模型。 感知机是一种简单的非线性神经网络,是人工神经网络的基础。感知机仅包含输入层 和输出层,其输入层可以包含多个单元,而输出层只有一个单元。感知机通过采用有监督学 习来逐步增强模式分类的能力,达到学习的目的。 从本质上说,感知机与MP模型没有太大的区别,两者的结构相同(图5.2),计算过程也 相同,都能完成线性可分的二分类任务,也都无法解决线性不可分问题。但MP模型与感知 机的不同之处在于:①MP模型的权值w 和偏置b 都是人为设定的,没有“学习”的机制;而 感知机引入了“学习”的概念,权值w 和偏置b 是通过学习得到的,并非人为设置的,在一定 程度上模拟了人脑的“学习”功能,这也是两者最大的区别。②两者采用的激活函数不同, MP模型采用阶跃函数作为激活函数,而感知机通常采用sigmoid函数作为激活函数。 sigmoid的中文意思是“S形状的”,所以sigmoid函数原本是指函数图像如S型的一类 函数,包括逻辑(logistic)函数、双曲正切(tanh)函数等。后来,遵从大多数人的习惯,当提及 sigmoid函数时,就专指logistic函数了,而其他形如S的函数则直接称呼其名称,如tanh函 图5.3 sigmoid的函数图像 数。下面分别介绍sigmoid(logistic)函数和tanh函数。 1.sigmoid函数 sigmoid函数也称为logistic函数,具有平滑性、连 续性、单调性和渐近性,而且是连续可导的。2012 年 ReLU 函数被重视之前,sigmoid函数是最常用的非线性 激活函数,其输出值为(0,1),可用于表示概率或输入的 归一化。sigmoid函数的数学表达式如公式(5.3)所示。 σ(x)= 1 1+e-x (5.3) sigmoid的函数图像如图5.3所示。 sigmoid函数的求导公式如下: .σ(x) .x =- 1 1+e( -x ) 2 ×e-x × (-1)= e-x 1+e( -x ) 2 = 1 1+e-x × 1- 1 1+e-x . è . . . ÷ =σ(x)(1-σ(x)) (5.4) sigmoid函数的优点是平滑、易于求导,其导数可直接用函数的输出计算,简单高效。 sigmoid函数很好地解释了神经元在受到刺激的情况下是否被激活和向后传递的情景。当 取值接近0时,几乎没有被激活;当取值接近1时,几乎完全被激活。 sigmoid函数的缺点如下。 (1)当输入的绝对值大于某个阈值时,会快速进入饱和状态(即函数值趋于1或-1,不 再有显著的变化,梯度趋于0), 会出现梯度消失的情况,权重无法再更新,会导致算法收敛 缓慢,甚至无法完成深层网络的训练。因此在一些现代的神经网络中,d函数逐渐被 ReLU 激活函数取代。 sigmoi (2)sigmoid函数公式中有幂函数,计算耗时长,在反向传播误差梯度时,求导运算涉及 除法。 (3)sigmoid函数的输出恒大于0,非零中心化,在多层神经网络中,可能会造成后面层 神经元的输入发生偏置偏移,导致梯度下降变慢。 2.tanh函数 tanh函数是sigmoid函数的一个变形,称为双曲 正切函数。tanh函数值为(-1,1), 改进了sigmoid变 化过于平缓的问题,而且其输出是零中心化的,解决了 sigmoid函数的偏置偏移问题。 tah函数的数学表达式如公式(5)所示。 n5. ex-e- x y=f(x) = x=σ(x)-1 (5. 225) ex+etanh的函数图像如图5.anh和 4所示。对比tsigmoid的函数图像,tanh函数可以看作是在纵轴方 图5.h的函数图像igmoi 4 tan向上放大到2倍并向下平移的sd函数。 tanh函数的导数公式如下: . y (ex+e- x )(ex+e- x )-(ex - x )(ex - x ) 1-y5. -x .x=-ex+e-e-e=2 (6) tanh函数的优点是:tanh在线性区的梯度更大,能加快神经网络的收敛。但其缺点 是:tanh函数两端的梯度也趋于零,依旧存在梯度消失的问题,同时,幂运算也会导致计算 耗时长。 5.4 多层神经网络结构 2. 单个人工神经元的结构简单,功能有限。若想完成复杂的功能,就需要将许多人工神经 元按照一定的拓扑结构相互连接在一起,相互传递信息,协调合作。组成神经网络的所有神 经元是分层排列的,一个神经网络包括输入层(nptlye隐藏层(ieayr, iuar); hddnle也称为隐 层、隐含层)和输出层(outputlayer), 每个网络只能有一个输入层和一个输出层,却可以有0 个或多个隐藏层,每个隐藏层上可以有若干个神经元。只有输入层与输出层的神经元可以 与外界相连,外界无法直接触及隐藏层,故而得名“隐藏层”。 包含至少一个隐藏层的神经网络称为多层神经网络(multi-layerneuralnetwork)。在 包含神经元个数最多的一层,神经元的个数称为该神经网络的宽度。除输入层外,其他层的 层数称为神经网络的深度,即等于隐藏层个数加1(输出层)。感知机没有隐藏层,只有输入 层和输出层,因此感知机的层数为1,称为单层神经网络。 人工神经网络的行为并非各个神经元行为的简单相加,而是具有学习能力的、行为复杂 的非线性系统,既可以提取和表达样本的高维特征,又可以完成复杂的预测任务。 值得注意的是:多层神经网络的每个隐藏层后面都有一个非线性的激活函数。这里激 活函数的作用比感知机中作为激活函数的阶跃函数的作用要大得多,因为激活函数是对所 有输入信号的线性组合结果进行非线性变换,而且多层神经网络就有多个激活函数。所以, 这些激活函数最主要的作用是向模型中加入非线性元素,用以解决非线性问题。一般在同 一个网络中使用同一种激活函数。 根据神经元之间的连接范围,可以将多层人工神经网络分为全连接神经网络和部分连 接神经网络。若每个神经元与其相邻层的所有神经元都相连,这种结构的网络称为全连接 神经网络(ulycnetdnuaewok), 5所示。若每个神经元只与相邻层上的 fonceerlntr如图5. 部分神经元相连,则是部分连接神经网络。 根据网络层之间的连接方式,又可以将多层人工神经网络分为前馈神经网络和反馈神 经网络。 1.前馈神经网络 前馈神经网络( edowadnuaewok) 其中每个神经元只 ffrrerlntr是一种多层神经网络, 与其相邻层上的神经元相连,接收前一层的输出,并输出给下一层,即第 i 层神经元以第i1层神经元的输出作为输入,第 i 层神经元的输出作为第i+1层神经元的输入。同层的神 经元之间没有连接。整个网络中的信息是单向传递的,即只能按一个方向从输入层到输出 层的方向传播,没有反向的信息传播,可以用一个有向无环图表示。 如图5. 若前馈神经网络采用全连接方式,则称为前馈全连接神经网络,5所示。网络最 左边的是输入层,最右边的是输出层,输入层和输出层之间有2个隐藏层,该神经网络是一 个3层前馈全连接神经网络。 图5.多层前馈全连接神经网络 5 在图5.输入层是由4个元素组成的一维向量, 则输 5中, 第1个隐藏层有5个神经元, 入层与第1个隐藏层之间有4×5=20个连接;第2个隐藏层有3个神经元,则第1个隐藏 层与第2个隐藏层之间有5×3=15个连接;输出层是由1个元素组成的一维向量,则第2 个隐藏层与输出层之间有3×1=3个连接。神经网络中的每条连接都有各自的权重参数, 用于控制神经元输入信息的权重,这些参数将通过网络训练得到最终值。 图5.宽度为5, 20+15+3=38个 5中神经网络的深度为3, 其中有41个待学习的参数( 连接,3个偏置值),还有3个超参数:隐藏层的个数以及两个隐藏层中包含的神经元个数, 这是人为设定的。 前馈神经网络可以看作一个函数,通过多次简单非线性函数变换,实现从输入空间到输 出空间的复杂映射。这种网络结构简单,易于实现。 前馈全连接神经网络的缺点是:当网络很深时,参数量巨大,计算量大,训练耗时。 前馈神经网络包括BP神经网络和卷积神经网络,将分别在5.5. 3节、4节中介绍。 2.反馈神经网络 反馈神经网络(k)是一种反馈动力学系统。在这种网络中,第i fedbackneuralnetwor 层的神经元将自身的输出信号作为输入信号反馈给第j( j 0) (5.11) 其中,η 是学习率,一般小于0.5。 第5步:采用公式(5.11)计算出的修正值,依次更新所有权重值和偏置值; 第6步:转向第2步。 图5.8 BP神经网络示例 下面以图5.8中的神经网络为例,详细介绍BP 算法的具体执行过程。 该网络包含输入层、隐藏层和输出层各一个。 输入层有两个神经元I1和I2;隐藏层有两个神经元 h1和h2;输出层有两个神经元O1和O2;每条有向边 上的数值表示神经元之间的连接权重。为表达整齐, 为每层的偏置项设置了一个虚拟的神经元“+1”。 激活函数选用sigmoid函数,sigmoid函数及其对x 的导数如公式(5.12)所示。 σ(x)= 1 1+e-x σ'(x)=σ(x)(1-σ(x)) (5.12) 假设输入样本为(x1=0.05,x2=0.1),期望输出值为(y1=0.03,y2=0.05)。以此为例, BP算法的具体实现过程如下。 1.正向传播 在正向传播阶段中,输入样本(x1=0.05,x2=0.1)从输入层经隐藏层逐层处理,传向输 出层,每一层神经元的状态只影响下一层神经元的状态。 (1)由输入层向隐藏层传播信息。 令netj 表示编号为j 的神经元的净输入,outj 表示编号为j 的神经元的输出,则outI1 = x1 =0.05,outI2 =x2 =0.1。 ① 针对隐藏层中第一个神经元h1,计算其净输入值,再计算其输出值,计算公式如下。 neth1 =outI1 ×a11 +outI2 ×a21 +θ1 =0.05×0.1+0.1×0.3+0.35=0.385