第3章深度学习基础





人工智能技术经历了三起两落,目前处于第三次人工智能浪潮期。这一浪潮中,既有计算机算力增长、互联网大数据剧增等外部因素影响,也有人工智能技术本身迅猛发展的因素,而其中的核心就是深度学习技术。因此,了解深度学习的基本概念与原理,了解深度学习网络的关键问题至关重要。
本章首先介绍神经元概念,在此基础上给出深度学习的基本定义和特点; 然后给出深度学习网络设计的三个核心问题,即网络结构的定义、深度学习网络的目标函数以及网络的优化算法; 最后针对网络优化算法中的关键技术——后向传播算法进行重点阐述与推导。
3.1深度学习的基本定义和特点
3.1.1神经元与生物神经网络
在了解人工神经元之前,先要了解人脑学习的机制。人脑在学习、思考和认知事物时,原理比较简单,首先通过感觉器官接收信息,如通过视觉、听觉、触觉、嗅觉和味觉等感知外面世界; 其次将接收的信息在脑内进行信息加工,然后将输出信息以某种反应的形式输出,这个过程不断交叉重复,逐渐累积知识或能力,从而形成创造力。而信息加工的主体就是人脑中的生物神经网,生物神经网络是由很多神经元相互连接而构成的极为庞大而又错综复杂的系统,神经元是生物神经系统结构和功能的基本单位[1]。生物神经元和生物神经网络分别如图31和图32所示。神经元的形状和大小差异比较大,但具有一些共同结构。神经元主要包括细胞体和突起两部分,细胞体中央有细胞核,细胞核是细胞的能量中心。细胞体向外伸出两种胞体: 呈树枝状的称为树突,它接收其他神经元的信息并传至本细胞体; 一根细长的突起称为轴突,它把神经冲动由胞体传至远处,传给与之连接的其他神经元的树突或者肌肉与腺体。



图31生物神经元的结构




图32生物神经网络


神经元之间的连接不是固定不变的,在人类成长过程中,一些新连接会逐渐被建立,一些连接可能会消失。研究表明,人类在8岁左右神经元达到相对比较稠密的峰值状态,随后神经网络会变得稀疏。

3.1.2人工神经元及其分类能力
人工神经元是对生物神经元的功能模拟模型,前面讲神经元模型时,重点强调了树突、轴突和细胞体。因此一个简单的人工神经元构造如图33所示,同时接收其他神经元传递过来的D个信号,分别为x1,x2,…,xD,由于各个信号的强度不同,反应刺激也不同,因此将其赋予了不同的权值w1,w2,…,wD后进行求和叠加,然后利用一个非线性函数g 来模拟输出的反应。神经元可以表示为两个部分,一是神经元的线性输入a(x),二是神经元的非线性输出h(x),其中: 
a(x)=b+∑Di=1wixi=wTx+b(3.1)

h(x)=g(a(x))=gb+∑Di=1wixi=g(wTx+b)(3.2)
式中: b为神经元偏置; g为激活函数。


图33神经元的结构


常用的非线性激活函数有六种,如表31所示。


表31激活函数



函 数 名 称映 射 关 系表示图说明

线性函数f=g(a)=a输入即输出

step函数f=g(a)=1,a≥0
0,a<0输入信号大于或等于0时,输出为1; 否则,为0
续表


函 数 名 称映 射 关 系表示图说明


sign函数f=g(a)=1,a≥0
-1,a<0输入信号大于或等于0时,输出为1; 否则,为-1

Sigmoid函数f=g(a)=11+exp(-a)有界函数,将输入信号变换到(0,1)区间内

tanh函数f=g(a)=exp(a)-exp(-a)exp(a)+exp(-a)有界函数,将输入信号变换到(-1,1)区间内

ReLU函数f=g(a)=a,a≥0
0,a<0半波整流函数,当输入信号大于或等于0时,信号直接输出; 否则,为0

下面以g函数为sign函数时来了解下神经元的基本能力[2]。sign函数将空间分成两类,一是+1,另一类是-1; 分类面如图34中所示悬崖立面,具体表示为wTx+b=0,而权重向量w是分类面的法向量。对于分类面上的任意两点x1和x2,有
wTx1+b=0
wTx2+b=0wT(x1-x2)=0(3.3)
由于w与分类面上的任意两点x1和x2都垂直,因此w是分类面的法向量。原点到平面的距离为b/‖w‖。


图34神经元的分类面

利用单个神经元进行二分类问题,当采用Sigmoid函数时,可以用单个神经元模拟二分类的概率P(y=1|x),这个分类器通常也称为逻辑回归分类器。若P(y=1|x)≥0.5,则判决为类别1; 否则,为类别0。因此,单个神经元的分类能力是线性的。单个神经元构成的分类器也称为感知机,该分类器可以解决线性可分问题。如图35所示的三个例子,图35(a)是x1或x2问题,图35(b)是x1非与x2问题,图35(c)是x1与x2非问题,其中x1和x2的取值都只有0和1两种。由于都是线性可分问题,单个神经元构成的感知机分类器是可以进行分类的。


图35线性可分问题


1969年,著名的人工智能学家马文·明斯基提出异或问题,如图36(a)所示,即对角的两个点类别标签相同[3]。由前面所述可知,单个神经元的分类能力是线性的,无法实现线性不可分问题。1974年,加拿大著名学者辛顿提出感知机网络,他的思想非常简单,“多则不同”,即单个神经元无法解决,通过多个神经元构成的网络来共同完成。由于XOR(x1,x2)=OR(AND(x-1,x2),AND(x1,x-2)),因此,根据图35,单个神经元可以完成AND(x-1,x2),也可以完成AND(x1,x-2),再通过一个线性分类器OR就可以对AND(x-1,x2)和AND(x1,x-2)的分类,从而通过2层分类器实现对XOR问题的分类。


图36异或问题的实现

图37给出了感知机网络的分类面,一个神经元无法完成异或问题的分类,但是两个神经元组合后就可以完成异或问题的分类,即对角的两点就可以分成一类。需要说明的是,图37中的神经元都采用sign激活函数。更多的神经元组合成的神经网络可对更加复杂的非线性问题进行描述。图38给出了4个神经元映射后的分类面,可以看出,神经元个数越多,可以描述的情形就越复杂。


图37感知机网络的分类面





图38感知机网络的分类面


人工神经网络就是将多个人工神经元连接起来构成的神经网络,图39是典型神经网络。其中第一层是输入层,直接跟输入信号或特征相连,最后一层是网络输出层,中间内部的节点是隐含层,图39所示的隐含层数为2层。


图39人工神经元示意图


3.1.3单隐含层神经网络的能力
下面讨论单隐含层的神经网络的能力。根据3.1.2节的讨论,当隐含层节点数增多时,能够实现更加复杂的非线性分类能力,如图310所示。单隐含层神经网络可对任意复杂的非线性问题进行描述。


图310复杂的非线性

分类能力

人工神经网络中存在一个非常有价值的定理——通用近似定理(也称为万能逼近定理)[4],可以在理论上证明“一个包含线性输出层和至少一层隐含层的前馈神经网络,只要给予足够数量的神经元,就能以任意精度逼近任意预定的连续函数”。 
由通用近似定理可知,不管函数f(x)在形式上有多复杂,总能确保找到一个神经网络,对任何可能的输入x,以任意高的精度近似输出f(x),即使函数有多个输入和输出,即f(x1,x2,…,xn),通用近似定理的结论仍然成立[5]。应用该定理时需要注意三点,一是可以通过神经网络的结构和参数设计尽可能逼近某个特定函数,而非“准确”描述该函数,其实质是通过增加隐含层神元的个数来提升近似的精度; 二是被近似函数必须是连续函数或平方可积函数,否则,神经网络就不再适用; 三是虽然神经网络能够近似,但找到这样的近似函数并不容易,定理是给出了一个理论界。生成对抗网络(Generative Adversarial Network,GAN)的提出者伊恩·古德费洛(Ian Goodfellow)曾指出: “仅含有一层的前馈网络的确足以有效地表示任何函数,但是,这样的网络结构可能会格外庞大,进而无法正确地学习和泛化。”这也进一步说明了寻找理论界的困难性。
3.1.4深度学习
前面提到了人工智能、机器学习等概念,这里阐述人工智能、机器学习和深度学习的关系。简而言之,人工智能在于打造智能机器的学科,而机器学习就是让机器变得更智能的方法和手段,而深度学习是人工智能连接学派的典型代表,也是机器学习中的一种重要方法。
深度学习作为机器学习的一个分支,其目的是在一整套算法的基础上,通过构建非线性和线性变换组成的多个处理层所构成的深度图,实现数据的高层抽象表示与建模。简而言之,当图39中隐含层超过两层时,就可以认为是深度学习网络。深度学习网络不是一个新概念,在人工神经网络诞生之后,很多学者开始用单个隐含层的神经网络来解决问题,在20世纪80年代,很多学者就想到扩展隐含层的层数,可以采用两层、三层或者是任意层,但网络隐含层扩展后,神经网络的参数增多,导致需要的数据量增大,且由于层数扩展后模型的优化越来越困难,在实际中得不到想要的结果,因此深度学习网络就相对沉寂。而基于统计学习理论的支持向量机(Support Vector Machine,SVM)非常适合解决小样本高维实际问题,获得了巨大的发展。因此,深度学习网络不是人工智能第三次浪潮才提出的新概念。
通用近似定理已经告诉我们,只要神经网络中神经元的数目足够多,即使只有一层隐含层,也能够对任意复杂实际问题进行模拟。既然单隐含层能够解决这些问题,为何还要把浅层网络往神经网络拓展呢?其实,深度学习的发展、壮大主要基于两点[6]: 一是仅含有一层的前馈网络的确足以有效地表示任何函数,但是隐含层神经元数目的过于庞大,导致难以正确学习和优化。这意味着,对于复杂的问题,虽然理论上存在这样的网络能够对该问题进行近似,但实际中优化得到这样的网络参数非常困难。二是最重要,也是最本质的原因,即深度学习网络相对于浅层网络而言,是更紧致的模型。紧致模型在相同的参数规模下具有更强的表现力,或者在同等参数规模下对复杂模式表现得更充分。


图311浅层网络和深层网络对比

下面以语音识别为例给出具体说明[7],如图311所示。表32给出了浅层网络和深层网络的实验对比图。表中给出了当隐含层数为1、2、3、4、5、7时连续语音的词错误率结果。可以看出,当隐含层数增加时,连续语音识别系统的性能不断提升。这是因为在充足的训练语料下,隐含层数目增加,意味着模型的参数增加,模型的表现力更强。但是,这种对比不能说明深度学习网络的优势。为此,研究人员进行了相同参数规模下的同等对比,即为了匹配同等参数规模下的深度网络,单隐含层的浅层网络的节点数需要大量增加。表32中给出了隐含层数为5和7时的深度网络性能,以及相同参数规模下的浅层网络的性能。从表中可以看出,当隐含层为5时,深层网络的词错误率为17.2%,而浅层网络的词错误率为22.5%; 7层网络时,深度网络的词错误率为17.1%,而浅层网络的性能为22.6%。从表中进一步说明,当深层网络从单层扩展到5层时,系统词错误率从24.2%降低为17.2%,而浅层网络达到同样参数规模,其错误率从24.2%降低为22.5%,可以看出,深度网络在同等参数规模下,相较于浅层网络具有更好的模型表现力,因此深度网络是一种更紧致的模型。


表32浅层网络与深层网络语音识别对比



深 层 网 络浅 层 网 络

层数×层节点数词错误率/%层数×层节点数词错误率/%

1×2k24.2——

2×2k20.4——

3×2k18.4——

4×2k17.8——

5×2k17.21×377222.5

7×2k17.11×463422.6

——1×16k22.1

3.2深度学习网络设计的三个核心问题
设计一个深度学习网络的三个核心问题如图312所示[8],主要包括三部分: 一是定义网络结构,即决定采用什么样的网络结构,从数学角度而言,定义网络结构相当于定义了一套函数,设定了问题求解的范围。二是网络目标函数选择,目标函数的选择决定了前一步设定的函数集合内,什么样的函数是最终需要寻找的好函数。目标函数选择与任务密切相关,但同一类型的任务也可以从不同角度来进行表征。三是优化算法,就是根据第二步确定的准则,如何找到最优的函数,其中包括优化算法选择和数据训练两个子部分。


图312DNN设计的三个核心问题[8]


下面以Keras框架下的设计为例,简单展示三个核心问题的基本思想和设计步骤[8]。
3.2.1定义网络结构
图313给出了一个简单的神经网络示例,图313(a)所示两个输入分别为1和-1,假设神经网络的权重和偏置也给定,激活函数选择Sigmoid函数,因此可以计算第一个隐含层的两个输出分别为0.98和0.12,以此类推,同样可以计算第二个隐含层的输出为0.86和0.11,以及第三个隐含层的输出0.62和0.83。图313(b)所示两个输入分别为0和0,最终输出为0.51和0.85。


图313神经网络示例


由前面可知,神经网络本质上就是一个函数映射,因此图313(a)、(b)可以表示为
f1
-1=0.62
0.83f0
0=0.51
0.85
因此,给定网络结构和参数,神经网络就是一个具体的函数; 只给定网络结构,而没有给定参数,相当于是一个函数集合。
图314给出含有L个隐含层的前向全连接神经网络,输入层有D个节点,x1,x2,…,xD,每一隐含层线性输入分别为a(1),a(2),…,a(L),非线性输入表示为h(1),h(2),…,h(L); 网络的输出为y(1),y(2),…,y(M)。下面分析该网络的具体表示形式。


图314L个隐含层的神经网络


为了更加通用表示,令h(0)(x)=x=[x1,x2,…,xD]T,那么第k层的线性输入a(k)(x)和非线性输出h(k)(x)分别表示为
a(k)(x)=W(k)h(k-1)(x)+b(k)(3.4)

h(k)(x)=g(a(k)(x))(3.5)
输出层表示为
h(L+1)(x)=o(a(L+1)(x))=f(x)(3.6)
式中: o为输出激活函数。
整个网络可以表示为
f(x)=o(a(L+1)(x))=o(W(L+1)h(k)(x)+b(k))

=o(W(L+1)g(W(L)h(L-1)(x)+b(L))+b(L+1))

=o(W(L+1)g(W(L)g(W(L-1)h(L-2)(x)+b(L-1))+b(L))+b(L+1))

=o(W(L+1)g(W(L)…(W(2)g(W(1)h(0)(x)+b(1))+b(2))…+b(L))+b(L+1))(3.7)
因此,进一步说明整个神经网络就是一个关于W(1),W(2),…,W(L+1)以及b(1),b(2),…,b(L+1)的复杂非线性函数。当给定网络结构和所有W(1),W(2),…,W(L+1)和b(1),b(2),…,b(L+1)参数时,该网络就是一个具体函数; 而当只给定网络结构未给定参数时,它是一个函数集合。
3.2.2目标函数选择
如图314所示,如何衡量一个神经网络模型参数的好坏?需要设定一个网络的目标函数[9]。由机器学习知识可知,通常选择两种目标函数: 
(1) 拟合问题: 
l=(y(n)-y^(n))2(3.8)
式中: l为单样本损失函数; y(n)=[y(n)1,y(n)2,…,y(n)M]T为神经网络得到的样本值,M为输出样本维度; y^(n)=[y^(n)1,y^(n)2,…,y^(n)M]T为相应样本真实值。
(2) 多分类问题: 
l(n)=-∑Mm=1y^(n)mlogy(n)m(3.9)
式中: l为单样本损失函数,该损失函数是样本类别标签y(n)=[y(n)1,y(n)2,…,y(n)M]T和相应样本标签y^(n)=[y^(n)1,y^(n)2,…,y^(n)M]T之间的交叉熵,y^(n)=[y^(n)1,y^(n)2,…,y^(n)M]T为独热向量,真实类别标签位置为1,其他为0。
神经网络优化时采用总损失函数,总损失函数定义为
J=∑Nn=1l(n)(3.10)
式中: l(n)为第n 个样本的损失函数; J为总损失函数。其具体过程如图315所示。


图315神经网络的总损失函数


也可以根据其他的任务设置相对类型的类别函数。对于多分类问题,除了采用经典的交叉熵函数外,还可以采用很多的区分性函数来进一步提升分类性能,具体介绍见第7章。
3.2.3优化算法选择
为了简单起见,假设网络只有参数θ0、θ1,并假设损失函数是非常理想的,如图316所示,损失函数是凸函数,具有唯一极小值。图中A点和B点为不同方法得到的初始化权重参数。那么如何获得损失函数极小值点,以及极小值所对应的参数呢?


图316神经网络的总损失函数随参数变化


第2章机器学习理论中已经介绍过,当从损失误差很大的初始点寻找最优极小值点时,沿梯度反方向是到达极小值最快的方向,因此这种方法也称为梯度下降法。反之,如果寻找极大值点,则采用梯度上升法。一般采用迭代方法逐渐逼近极小值,具体公式为
θt+1=θt-αθtJ(θ)(3.11)
式中: θt+1为第t+1 步更新后的参数; θt为更新前的参数; J(θ)为目标函数; α为步长。
对于图314所示的任意神经网络,网络参数θ={W(1),W(2),…,W(L+1); b(1),b(2),…,b(L+1)},因此需要计算目标函数对于参数的梯度,即
θtJ=JW1
JW2
︙
Jb1
Jb2
︙(3.12)
将式(3.12)代入式(3.11)可以进行迭代更新,迭代到指定次数,或者是当损失函数达到指定阈值,则停止参数更新。具体过程如图317所示[10]。


图317梯度下降法示意图


由此看来,深度学习网络优化的基本思想并不像我们想象的那么复杂,采用梯度下降法就可以得到。然而,还有一个问题没有解决,如何获取式(3.12)的参数梯度?后向传播(Back Propagation,BP)是获取参数梯度的一种有效算法[11]。
3.3后向传播算法
下面以一个多分类问题为例,对后向传播算法进行具体分析[12]。由于是多分类问题,神经网络的目标函数采用式(3.9)所示的交叉熵,则有
J=∑Nn=1l(f(x(n)),y^(n))=∑Nn=1l(y(n),y^(n))=-∑Nn=1∑Mm=1y^(n)mlogy(n)m(3.13)
因为真实类别标签向量是一个独热向量,只有真实类别标签维度为1,其他为0,当样本x(n)属于第c类样本时,则有
J=∑Nn=1l(y(n),y^(n))=-∑Nn=1∑Mm=1y^(n)mlogy(n)m=-∑Nn=1logy(n)c(3.14)

为了清晰了解BP算法的原理,以图318所示的神经网络为例进行推导,其中隐含层为两层。
可以从不同角度对BP算法进行推导,下面给出一种常用的方法——计算流图法。图319~图322给出了一条路径、两条路径、n条路径以及复杂流程图的链式准则。图318所示的神经网络就是一个复杂流程图的实例。



图318BP算法推导网络结构图





图319一条路径链式关系





图320两条路径链式关系






图321n条路径链式关系





图322更加复杂的流程图


在计算流图中包括如下两种运算: 
(1) 前向传播: 给定前续节点计算每个节点的值。
(2) 后向传播: 初始化输出梯度为1,然后逆序访问每个节点,最后计算每个节点的梯度。
3.3.1输出端的损失梯度
下面计算输出层的损失梯度值。首先计算第n个样本x(n)的损失函数l(y(n),y^(n))对输出y(n)c的偏导数,即
y(n)m[-logy(n)c]=-1(c=m)y(n)c=-1y(n)c,m=c
0,m≠c(3.15)
所以损失函数l(y(n),y^(n))对输出层激活输出y(n)的梯度为
y(n)[-logy(n)c]=-1y(n)c1(c=1)
︙
1(c=M)(3.16)
式中: 1(c=m)代表当c=m成立时,该值为1; 否则,为0。
假定输出端激活函数选择Sigmoid函数,下面的推导中会用到Sigmoid函数求导的便捷形式,即
g(x)=11+e-x

g′(x)=g(x)(1-g(x))
读者可按照求导准则自行验证。
因此,损失函数l(y(n),y^(n))对输出层线性输入端第m个元素的偏导数为
a(L+1)(x)m[-logy(n)c]=-(1(c=m)-y(n)m)(3.17)


图323BP算法推导输出层梯度

计算示意图

输出层线性输入端的损失梯度为
a(L+1)(x)[-logy(n)c]=-(e(c)-y(n))

=-1(c=1)
1(c=2)
︙
1(c=M)-y(n)1
y(n)2
︙
y(n)M

(3.18)
其具体梯度传导的过程如图323所示。需要重点说明的是,在理解BP算法过程中,梯度值沿反向传递,可以把每个神经元看成两个部分: 一个是上半部分的非线性输出,如实线半圈所示; 另一个是下半部分的线性输入,如虚线半圈所示。
3.3.2隐含层的损失梯度
下面获取隐含层的梯度,即图324中所示的实线路径到达节点的梯度。这里梯度的计算更加复杂,因此需要简化问题。根据图322所示流程图的链式准则,如果函数p(a)是中间变量qi(a)的函数,则可得
p(a)a=∑ip(a)qi(a)qi(a)a(3.19)
那么可以进行对应假设,a是某个隐含层中的某个节点,qi(a)代表上一层的线性输入部分(虚线半圈),如图325所示,图中所示qi(a)个数为2,即上一层节点个数,也是输出层节点个数。



图324BP算法推导隐含层非线性

输出端梯度计算示意图




图325BP算法推导隐含层非线性输出端梯度

计算示意图(特定节点)


1. 损失函数对隐含层非线性输出端的梯度
第n个样本x(n)的损失函数l(y(n),y^(n))对第k个隐含层第j 个节点的非线性输出h(k)(x)j端的偏导数为
h(k)(x)j[-logy(n)c]=∑i[-logy(n)c]a(k+1)(x)ia(k+1)(x)ih(k)(x)j

=∑i[-logy(n)c]a(k+1)(x)iW(k+1)i,j

=(W(k+1)·,j)T(a(L+1)(x)[-logy(n)c])

前向递推公式: a(k+1)(x)i=b(k)i+∑jW(k+1)i,jh(k)(x)j

a(k+1)(x)=b(k+1)+W(k+1)h(k)(x)

(3.20)
则第k个隐含层非线性输出端的梯度为
h(k)(x)[-logy(n)c]=(W(k+1))Ta(L+1)(x)[-logy(n)c](3.21)
2. 损失函数对隐含层线性输入端的梯度
同样根据链式准则,损失函数对第k隐含层第j个节点线性输入端的偏导数可以变成两个连乘项的积,一项是损失函数对相应节点非线性输出端的偏导数,另一项是该节点非线性输出对线性输入的偏导数,即
a(k)(x)j[-logy(n)c]=[-logy(n)c]h(k)(x)jh(k)(x)ja(k)(x)j

=[-logy(n)c]h(k)(x)jg′(a(k)(x)j)

前向递推公式: h(k)(x)j=g(a(k)(x)j)

h(k)(x)=g(a(k)(x))(3.22)
其具体示意图如图326所示。



图326BP算法推导隐含层线性输入端梯度计算示意图


则损失函数对隐含层线性输入端的梯度表示为
a(k)(x)[-logy(n)c]=(h(k)(x)[-logy(n)c])Ta(k)(x)h(k)(x)

=(h(k)(x)[-logy(n)c])⊙[…,g′(a(k)(x)j),…](3.23)
3.3.3神经网络参数的损失梯度
利用上面的结果可以得到权重参数W(k)i,j的偏导数,即
W(k)i,j[-logy(n)c]=[-logy(n)c]a(k)(x)ia(k)(x)iW(k)i,j

=[-logy(n)c]a(k)(x)ih(k-1)j(x)(3.24)
则损失函数对权重参数的梯度为
w(k)[-logy(n)c]=(a(k)(x)[-logy(n)c])h(k-1)(x)T(3.25)
同理,可得损失函数对参数b(k)i的偏导数,即
b(k)i[-logy(n)c]=[-logy(n)c]a(k)(x)ia(k)(x)ib(k)i

=[-logy(n)c]a(k)(x)i(3.26)
则损失函数对偏置向量的梯度为
b(k)[-logy(n)c]=(a(k)(x)[-logy(n)c])(3.27)
得到式(3.25)和式(3.27),就可以按照梯度下降法进行参数优化更新。
3.3.4算法整理流图
图327给出了BP算法完整的流程图,可以清晰地看到梯度计算的依赖关系。为了获取目标函数l(y(n),y^(n))对参数的梯度,首先前向计算出各个节点的取值,再按照上节所示求l(y(n),y^(n))对参数a(3)(x)、a(2)(x)和a(1)(x)的梯度,获得a(3)(x)的梯度,就能得到参数W(3)和b(3)的梯度,获得a(2)(x)的梯度,就能得到W(2)和b(2)的梯度,同理得到W(1)和b(1)的梯度。可以看出,整个过程中梯度的计算正好与前向计算的路径相反。


图327BP算法推导隐含层线性输入端梯度计算示意图


3.4本章小结
本章在介绍学习与机器学习概念的基础上,阐述深度学习和机器学习的区别与联系; 然后系统介绍深度学习的基本定义和特点; 指出深度学习网络设计的三个核心问题,即定义网络结构、设定网络目标函数以及优化算法,并且详细分析三个基本问题的内涵; 最后针对网络优化算法中的核心关键技术——后向传播算法进行重点阐述与推导。
参考文献


[1]Ian Goodfellow,Yoshua Bengio.Deep Learning[M].MIT Press, 2016.

[2]Lrochelle H.蒙特利尔大学神经网络课件(前向神经网络部分) [EB/OL].http://info.usherbrooke.ca/hlarochelle/ift725/1_03_capacity_of_single_neuron.pdf.

[3]Minsky M L,Papert S A.Perceptrons[M],MIT Press,1969.

[4]Hornik K,Stinchcombe M,White H.Multilayer feedforward networks are universal approximators[J].Neural Networks,1989,2(5): 359366.

[5]Nielsen M A.A visual proof that neural nets can compute any function: Neural networks and deep learning[EB/OL].http://neuralnetworksanddeeplearning.com/chap4.html.

[6]Boney R. Theoretical motivations for deep learning[EB/OL].http://rinuboney.github.io/2015/10/18/theoreticalmotivationsdeeplearning.html,20151018.

[7]Seide,Frank,Li G,et al.Conversational speech transcription using contextdependent deep neural networks[C].Proceedings of The 12th Annual Conference of the International Speech Communication Association(INTERSPEECH),2011: 437440.

[8]李宏毅.台湾大学机器学习课程课件(深度学习介绍) [EB/OL].http://speech.ee.ntu.edu.tw/ ~tlkagk/courses/ML_2016/Lecture/DL%20(v2).pdf.

[9]李宏毅.台湾大学机器学习课程课件(深度学习部分) [EB/OL].https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021coursedata/classification_v2.pdf.

[10]Lrochelle H. 蒙特利尔大学神经网络课件(神经网络训练部分) [EB/OL].http://info.usherbrooke.ca/hlarochelle/ift725/2_11_optimization.pdf.

[11]Werbos P.Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences[D].Harvard University,Cambridge,MA,1974.

[12]Rumelhart D E,Geoffrey E H,Ronald J W.Learning representations by backpropagating errors[J].Nature, 1986,323: 533536.