神经网络与深度学习基础

神经网络与深度学习基础

宣胤

神经网络与深度学习导论

人工神经网络发展史

人工智能、机器学习、深度学习之间的关系
image-20230614110838619
image-20230614110838619

人工智能:计算机科学的一个分支
它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学

机器学习:一种实现人工智能的方法
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能

深度学习:一种实现机器学习的技术
深度学习是机器学习领域中一个新的研究方向,学习样本数据的内在规律和表示层次。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据

人工智能门派

符号主义”,又称逻辑主义、计算机学派,主张用公理和逻辑体系搭建一套人工智能系统

连接主义”,又称仿生学派,主张模仿人类的神经元,用神经网络的连接机制实现人工智能

符号主义者的眼里,人工智能应该模仿人类的逻辑方式获取知识,而连接主义者奉行大数据和训练学习知识

人工神经网络发展的不同时期

萌芽期:19世纪,众多生理学家和心理学家已开始进行动物实验,尝试通过观察动物的行为模式,分析智能行为实现的原理
通过实验得出,动物会在每次尝试中,构建一种刺激-反应联系,当它们成功时,就会记下这些刺激-反应,那些不正确的就会慢慢被排除掉,也就是说学习的实质是不断的形成刺激-反应的过程

孕育期:
1943年,心理学家Warren McCulloch和数理逻辑学家Walter Pitts在合作的论文中提出了人工神经网络的概念及人工神经元的数学模型(M-P模型),从而开创了人工神经网络研究的时代

1949年,心理学家Donald Olding Hebb根据神经可塑性的机制在论文中描述了神经元学习法则,并提出了一种学习假说,Hebb的假说后来被成为赫布型学习,被认为是一种典型的无监督学习规则

1957年Frank Rosenblatt教授提出了感知机模型(Perceptron)。感知机使用特征向量来表示的前馈式人工神经网络,它是一种二元分类器,在人工神经网络领域中,感知机也被指为单层的人工神经网络

达特茅斯会议:1956年,一个崭新的学科–人工智能,从达特茅斯会议开启

寒冬:
1969年Marvin MinskySeymour Papert在《Perceptrons》一书中,仔细分析了以感知机为代表的单层神经网络系统的功能及局限。证明了感知机的两大缺陷:其一,无法处理异或问题;其二,当时计算机的计算能力不足以处理大型神经网络。Marvin Minsky教授甚至做出了“基于感知机的研究注定失败”的结论

由于Rosenblatt教授等人没能及时推广感知机学习算法到多层神经网络上,又由于《Perceptrons》在研究领域中的巨大影响,及人们对书中论点的误解,造成了人工神经领域发展的长年停滞及低潮,之后的十多年内,基于神经网络的研究几乎处于停滞状态

误差反向传播算法:

image-20230614131156046
image-20230614131156046

1974年,BP算法首次提出:Paul Werbos在博士论文中提出了用**误差反向传导(BP)**来训练人工神经网络,有效解决了异或回路问题,使得训练多层神经网络成为可能。但是当时正值神经网络低潮期,并未受到应有的重视

1983年,神经网络的应用:物理学家John Hopfield利用神经网络,在旅行商这个NP问题的求解上获得当时最好成绩,引起了轰动

1986年,BP算法改进与应用:Hinton等人将重新改进的反向传播算法引入多层感知机,神经网络重新成为热点。反向传播算法是神经网络中极为重要的学习算法,直到现在仍然占据着重要地位

寒冬中的寒冬:1995年万普尼克正式提出了统计学学习理论,并将该方法应用到了SVM。支持向量机可以免去神经网络需要调节参数的不足,还避免了神经网络中局部最优问题,一举击败神经网络,称为当时人工智能领域的主流算法,使得神经网络再受沉重打击

LeNet-5模型:

image-20230614132108765
image-20230614132108765

1998年,计算机科学家Yann LeCun等提出的LeNet-5采用了基于梯度的反向传播算法对网络进行有监督的训练,主要进行手写数字识别和英文字母识别。LeNet-5网络虽然很小,但是它包含了后来被称为“深度学习”的基本模块:卷积层,池化层,全连接层,是其他深度学习模型的基础

春天:随着GPU、FPGA等器件被用于高性能计算,使得人们可以通过单纯地增加器件数量来提升神经网络训练学习的速度。大数据的出现,使得训练深层网络模型所需要的数据难题得以大幅度缓解。从此,神经网络成为人工智能领域最热门的研究方向

深度学习:2006年Hinton提出了深度置信网络(DBN),一种深层网络模型。使用一种贪心无监督训练方法来解决问题并取得良好结果。DBN的训练方法降低了学习隐藏层参数的难度,并且该算法的训练时间和网络的大小和深度近乎线性关系

image-20230614120024102
image-20230614120024102

当前常见深度学习框架

image-20230614120127480
image-20230614120127480

神经网络结构基础

生物神经元

image-20230614201025232
image-20230614201025232

神经网络如何学习

赫布法则:当神经元A的一个轴突和神经元B很近,足以对它产生影响,并且持续地、重复地参与了神经元B的兴奋,那么在这两个神经元或其中之一会发生某种生长过程或新城代谢变化,以致于神经元A作为能使神经元B兴奋的细胞之一,它的效能加强了–加拿大心理学家Donald Hebb

生物神经网络

在机器学习和相关领域,人工神经网络的计算模型灵感正是来自生物神经网络:每个神经元与其他神经元相连,当它兴奋时,就会向相邻的神经元发送化学物质,从而改变这些神经元内的电位。
如果某神经元的电位超过了一个阈值,那么它就会被激活(兴奋),向其他神经元发送化学物质。

人工神经网络通常呈现为按照一定的层次结构连接起来的“神经元”,它可以从输入的计算值,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

常被用于估计或可以依赖于大量的输入和一般的未知近似函数,来最大化的拟合现实中的实际数据,提高机器学习预测的精度

从生物神经元到人工神经元模型(M-P模型)

image-20230614202430527
image-20230614202430527

人工神经元:

image-20230614202500173
image-20230614202500173

激活函数的性质:

  • 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数
  • 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率
  • 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性

常见激活函数及其导数:

image-20230614203106650
image-20230614203106650

image-20230614203119416
image-20230614203119416

image-20230614203129561
image-20230614203129561

image-20230614203204431
image-20230614203204431

人工神经网络

人工神经网络主要由大量的神经元以及它们之间的有向连接构成。因此考虑三方面:

  1. 神经元的激活规则:主要指神经元输入到输出之间的映射关系,一般为非线性函数
  2. 网络的拓扑结构:不同神经元之间的连接关系
  3. 学习算法:通过训练数据来学习神经网络的参数

人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构:

image-20230614204713506
image-20230614204713506

前馈神经网络

网络结构

前馈神经网络(全连接神经网络、多层感知器):

  • 各神经元分别属于不同的,层内无连接
  • 相邻两层之间的神经元全部两两连接
  • 整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示
image-20230614205832741
image-20230614205832741

前馈网络

给定一个前馈神经网络,我们用下面的记号来描述这个网络:

image-20230614205944157
image-20230614205944157

前馈神经网络通过下面的公式进行信息传播:

image-20230614210036585
image-20230614210036585

前馈计算:

image-20230614210057728
image-20230614210057728

通用近似定理

image-20230614210345947
image-20230614210345947

根据通用近似定理,对于具有线性输出层和至少一个使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可以以任意的精度来近似任何从一个定义在实数空间中的有界闭集函数

应用到机器学习

神经网络可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布

image-20230614212133554
image-20230614212133554

如果g(.)为logistic回归,那么logistic回归分类器可以看成神经网络的最后一层

对于N类分类问题:
如果使用softmax回归分类器,相当于网络最后一层设置N个神经元,其输出经过softmax函数进行归一化后可以作为每个类的后验概率:

image-20230614214409036
image-20230614214409036

采用交叉熵损失函数,对于样本(x,y),其损失函数为:
image-20230614214454965
image-20230614214454965

参数学习

image-20230616195315180
image-20230616195315180

梯度下降

image-20230616195401429
image-20230616195401429

如何计算梯度

image-20230616210054860
image-20230616210054860

深度学习的步骤

image-20230616210208650
image-20230616210208650

优化问题

难点:

  • 参数过多,影响训练

  • 非凸优化问题:即存在局部最优而非全局最优解,影响迭代

    image-20230616210612271
    image-20230616210612271

  • 下层参数比较难调

  • 参数解释起来比较困难

需求:

  • 计算资源要大
  • 数据要多
  • 算法效率要好:即收敛快

梯度消失问题

image-20230616210657743
image-20230616210657743

BP算法

神经元的训练

训练的过程就是不断更新权重w和偏置b的过程,直到找到稳定的w和b使得模型的整体误差最小

image-20230616211205201
image-20230616211205201

image-20230616211213065
image-20230616211213065

前向传播

前向传播

image-20230616212642583
image-20230616212642583

image-20230616212659347
image-20230616212659347

损失函数

image-20230616212735211
image-20230616212735211

image-20230616212816520
image-20230616212816520

BP算法实例

image-20230616212922251
image-20230616212922251

设定了输入,和神经元之间的权重

训练步骤:

正向计算-1:

image-20230616213351479
image-20230616213351479

进行了隐藏层的相关计算

正向计算-2:

image-20230616213514535
image-20230616213514535

进行了输出层的相关计算

损失Cost计算:

image-20230616213652658
image-20230616213652658

计算了损失

反向传播-1:

image-20230616213730036
image-20230616213730036

反向传播-2:

image-20230616213813803
image-20230616213813803

反向传播-3:

image-20230616215330990
image-20230616215330990

对W32、W41、W42同理计算

更新权值:

image-20230616215430254
image-20230616215430254

迭代更新:

image-20230616215507162
image-20230616215507162

卷积神经网络

全连接前馈神经网络缺点:
权重矩阵的参数非常多
局部不变性特征

  • 自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息
  • 而全连接前馈神经网络很难提取这些局部不变特征

卷积神经网络的由来

卷积神经网络概念及特性

卷积神经网络是一种前馈神经网络:

  • 卷积神经网络是受生物学学上“感受野”的机制提出而提出的
  • 在视觉神经系统中,一个神经元的“感受野”是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元

卷积神经网络有三个结构上的特性:

  • 局部连接
  • 权重共享
  • 空间或时间上的次采样

卷积

卷积经常用在信号处理中,用于计算信号的延迟累积。

image-20230618115758487
image-20230618115758487

image-20230618115842373
image-20230618115842373

两维卷积
在图像处理中,图像是以二维矩阵的形式输入到神经网络中,因此我们需要二维卷积(下面图像好像有问题)

image-20230618132418413
image-20230618132418413

卷积的运算过程

image-20230618130140090
image-20230618130140090

卷积扩展

引入滤波器的 滑动步长s零填充p

image-20230618130358201
image-20230618130358201

填充

在进行卷积运算时,输入矩阵的边缘会比矩阵内部的元素计算次数少,且输出的矩阵的大小会在卷积运算中相比较于输入的尺寸变小。因此,可在输入的矩阵的四周补零,称为padding,其大小为P。比如当P=1时,原输入3*3的矩阵如下,实线框中为原矩阵,周围使用0作为padding:

image-20230618132025481
image-20230618132025481

一般来说,如果在高的两侧一共填充Ph行,在宽的两侧一共填充Pw列,那么输出形状将会是:

image-20230618132003364
image-20230618132003364

步幅

在先前的例子里,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。每次滑动的行数和列数称为步幅,先前的例子里,在高和宽两个方向上步幅均为1.当然,根据实际情况也可以使用更大的步幅。如下图所示(实际输入为3*3,高、宽各以0值填充1行/列),在高上步幅为3、在宽上步幅为2的卷积运算。可以看到,输出第一列第二个元素时,卷积窗口向下滑动了3行,而在输出第一行第二个元素时卷积窗口向右滑动了2列。当卷积窗口在输入数组上再向右滑动2列时,由于输入元素无法填满窗口,无结果输出:

image-20230618133428149
image-20230618133428149

一般来说,当高上步幅为Sh,宽上步幅为Sw时,输出形状为:

image-20230618133525290
image-20230618133525290

多输入通道

前面例子中用到的输入和输出都是二维数组,但真实数据的维度经常更高。例如,彩色图像在高和宽两个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是h和w(像素),那么它可以表示为一个3hw的多维数组,将大小为3的这一维称为通道(channel)维。当输入数据含多个通道时,一般需要构造一个输入通道数与输入数据的通道数相同的卷积核,从而能够与含多通道的输入数据做卷积运算。

image-20230618134254873
image-20230618134254873

卷积类型

卷积的结果按输出长度不同可以分为三类:

  • 窄卷积:步长s=1,两端不补零p=0,卷积后输出长度为n-m+1
  • 宽卷积:步长s=1,两端补零p=m-1,卷积后输出长度为n+m-1
  • 等长卷积:步长s=1,两端补零p=(m-1)/2,卷积后输出长度n

在早期的文献中,卷积一般默认为窄卷积,而在目前的文献中,卷积一般默认为等宽卷积

转置卷积

通过卷积操作来实现高维特征到低维特征的转换。比如在一维卷积中,一个5维的输入特征,经过一个大小为3的卷积核,其输出为3维特征,如果设置步长大于1,可以进一步降低输出特征的维数。但在一些任务中,需要通过将低维特征映射到高维特征,并且依然希望通过卷积操作来实现,这种卷积操作称为转置卷积。

image-20230618155119379
image-20230618155119379
微步卷积

可以通过增加卷积操作的步长s>1来实现对输入特征的降采样操作,大幅降低特征维数。同样,也可以通过减少转置卷积的步长s<1来实现上采样操作,大幅提高特征维数。
步长s<1的转置卷积也称为微步卷积。为了实现微步卷积,可以在输入特征之间插入0来间接地使得步长变小。

image-20230618155610329
image-20230618155610329
空洞卷积

如何增加输出单元的感受野?可以通过以下方法:

  • 增加卷积核的大小
  • 增加层数来实现
  • 在卷积之前进行汇聚操作

空洞卷积:通过卷积核插入“空洞”来变相地增加其大小

image-20230618155902249
image-20230618155902249

卷积神经网络的基本组成

用卷积层代替全连接层

image-20230618160039086
image-20230618160039086

输入:D个特征映射 M x N x D
输出:P个特征映射 M’ x N’ x P

特征映射:一幅图像经过卷积后得到的特征
卷积核看成一个特征提取器

典型的卷积层可以表示成3维结构

image-20230618160922908
image-20230618160922908

卷积层的映射关系

image-20230618160609079
image-20230618160609079

池化层

池化层(Pooling Layer)也叫子采样层,其作用是进行特征选择,降低特征数量,并从而减少参数数量。
卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数并没有显著减少。如果后面接一个分类器,每个分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个池化层,从而降低特征维数,避免过拟合

image-20230618161615395
image-20230618161615395

最大池化层(max pooling):

image-20230618161734473
image-20230618161734473

特点:能很好的保留纹理特征

平均池化层(mean/average pooling):

image-20230618161839234
image-20230618161839234

特点:能很好的保留背景,但容易使得图片变模糊

卷积网络结构

卷积网络是由卷积层、池化层、全连接层交叉堆叠而成
趋向于小卷积、大深度
趋向于全卷积

典型结构

image-20230618162536909
image-20230618162536909

一个卷积块为连续M个卷积层和b个池化层(M通常设置为2-5,b为0或1).一个卷积网络中可以堆叠N个连续的卷积块,然后在接着K个全连接层(N的取值区间比较大,比如1-100或者更大;K一般为0-2)。

卷积神经网络的学习能力

卷积的作用

image-20230618162714881
image-20230618162714881
image-20230618162843338
image-20230618162843338
image-20230618162910807
image-20230618162910807

表示学习

image-20230618163218221
image-20230618163218221

image-20230618163226605
image-20230618163226605

image-20230618163234326
image-20230618163234326

LeNet-5

image-20230618163814108
image-20230618163814108

image-20230618163917974
image-20230618163917974

image-20230618163928435
image-20230618163928435

image-20230618163937133
image-20230618163937133

image-20230618164416777
image-20230618164416777

注意:C3层是一个卷积层16核卷积,C3并不是与S2全连接而是部分连接。C3层的第0-5个特征映射依赖于S2层的特征映射组的每3个连续子集,第6-11个特征映射依赖于S2层的特征映射组的每4个连续子集,第15个特征映射依赖于S2层的所有特征映射。

论文中提及了如此组合的原因:

  • 减少参数
  • 这种不对称的组合连接的方式有利于提取多种组合特征

image-20230618164812981
image-20230618164812981

image-20230618164821840
image-20230618164821840

image-20230618164836618
image-20230618164836618

image-20230618164846632
image-20230618164846632

LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络。卷积神经网络能够很好的利用图像的结构信息。卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。

典型的卷积网络

image-20230618165841310
image-20230618165841310

image-20230618165930224
image-20230618165930224

AlexNet

image-20230618165814453
image-20230618165814453

VGG

image-20230618170017607
image-20230618170017607

Inception网络

image-20230618170209900
image-20230618170209900

Inception-V1

image-20230618170227381
image-20230618170227381

Inception-V3

image-20230618170242557
image-20230618170242557

残差网络

image-20230618170058279
image-20230618170058279

image-20230618170728825
image-20230618170728825

卷积神经网络在NLP中的应用

  1. Ngram特征与卷积
  2. 文本序列的卷积
  3. 基于卷积的句子表示
  4. AlphaGo
  5. Mask RCNN
  6. OCR
  7. 图像生成
  8. Deep Dream
  9. 画风迁移
  10. 对抗样本
  • 标题: 神经网络与深度学习基础
  • 作者: 宣胤
  • 创建于: 2023-06-14 10:49:42
  • 更新于: 2023-06-21 00:00:25
  • 链接: http://xuanyin02.github.io/2023/061444686.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论