神经网络与深度学习基础
神经网络与深度学习导论
人工神经网络发展史
人工智能、机器学习、深度学习之间的关系
人工智能:计算机科学的一个分支
它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学
机器学习:一种实现人工智能的方法
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能
深度学习:一种实现机器学习的技术
深度学习是机器学习领域中一个新的研究方向,学习样本数据的内在规律和表示层次。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据
人工智能门派
“符号主义”,又称逻辑主义、计算机学派,主张用公理和逻辑体系搭建一套人工智能系统
“连接主义”,又称仿生学派,主张模仿人类的神经元,用神经网络的连接机制实现人工智能
在符号主义者的眼里,人工智能应该模仿人类的逻辑方式获取知识,而连接主义者奉行大数据和训练学习知识
人工神经网络发展的不同时期
萌芽期:19世纪,众多生理学家和心理学家已开始进行动物实验,尝试通过观察动物的行为模式,分析智能行为实现的原理
通过实验得出,动物会在每次尝试中,构建一种刺激-反应联系,当它们成功时,就会记下这些刺激-反应,那些不正确的就会慢慢被排除掉,也就是说学习的实质是不断的形成刺激-反应的过程
孕育期:
1943年,心理学家Warren McCulloch和数理逻辑学家Walter Pitts在合作的论文中提出了人工神经网络的概念及人工神经元的数学模型(M-P模型),从而开创了人工神经网络研究的时代
1949年,心理学家Donald Olding Hebb根据神经可塑性的机制在论文中描述了神经元学习法则,并提出了一种学习假说,Hebb的假说后来被成为赫布型学习,被认为是一种典型的无监督学习规则
1957年,Frank Rosenblatt教授提出了感知机模型(Perceptron)。感知机使用特征向量来表示的前馈式人工神经网络,它是一种二元分类器,在人工神经网络领域中,感知机也被指为单层的人工神经网络
达特茅斯会议:1956年,一个崭新的学科–人工智能,从达特茅斯会议开启
寒冬:
1969年,Marvin Minsky 和 Seymour Papert在《Perceptrons》一书中,仔细分析了以感知机为代表的单层神经网络系统的功能及局限。证明了感知机的两大缺陷:其一,无法处理异或问题;其二,当时计算机的计算能力不足以处理大型神经网络。Marvin Minsky教授甚至做出了“基于感知机的研究注定失败”的结论
由于Rosenblatt教授等人没能及时推广感知机学习算法到多层神经网络上,又由于《Perceptrons》在研究领域中的巨大影响,及人们对书中论点的误解,造成了人工神经领域发展的长年停滞及低潮,之后的十多年内,基于神经网络的研究几乎处于停滞状态
误差反向传播算法:
1974年,BP算法首次提出:Paul Werbos在博士论文中提出了用**误差反向传导(BP)**来训练人工神经网络,有效解决了异或回路问题,使得训练多层神经网络成为可能。但是当时正值神经网络低潮期,并未受到应有的重视
1983年,神经网络的应用:物理学家John Hopfield利用神经网络,在旅行商这个NP问题的求解上获得当时最好成绩,引起了轰动
1986年,BP算法改进与应用:Hinton等人将重新改进的反向传播算法引入多层感知机,神经网络重新成为热点。反向传播算法是神经网络中极为重要的学习算法,直到现在仍然占据着重要地位
寒冬中的寒冬:1995年,万普尼克正式提出了统计学学习理论,并将该方法应用到了SVM。支持向量机可以免去神经网络需要调节参数的不足,还避免了神经网络中局部最优问题,一举击败神经网络,称为当时人工智能领域的主流算法,使得神经网络再受沉重打击
LeNet-5模型:
1998年,计算机科学家Yann LeCun等提出的LeNet-5采用了基于梯度的反向传播算法对网络进行有监督的训练,主要进行手写数字识别和英文字母识别。LeNet-5网络虽然很小,但是它包含了后来被称为“深度学习”的基本模块:卷积层,池化层,全连接层,是其他深度学习模型的基础
春天:随着GPU、FPGA等器件被用于高性能计算,使得人们可以通过单纯地增加器件数量来提升神经网络训练学习的速度。大数据的出现,使得训练深层网络模型所需要的数据难题得以大幅度缓解。从此,神经网络成为人工智能领域最热门的研究方向
深度学习:2006年,Hinton提出了深度置信网络(DBN),一种深层网络模型。使用一种贪心无监督训练方法来解决问题并取得良好结果。DBN的训练方法降低了学习隐藏层参数的难度,并且该算法的训练时间和网络的大小和深度近乎线性关系
当前常见深度学习框架
神经网络结构基础
生物神经元
神经网络如何学习
赫布法则:当神经元A的一个轴突和神经元B很近,足以对它产生影响,并且持续地、重复地参与了神经元B的兴奋,那么在这两个神经元或其中之一会发生某种生长过程或新城代谢变化,以致于神经元A作为能使神经元B兴奋的细胞之一,它的效能加强了–加拿大心理学家Donald Hebb
生物神经网络
在机器学习和相关领域,人工神经网络的计算模型灵感正是来自生物神经网络:每个神经元与其他神经元相连,当它兴奋时,就会向相邻的神经元发送化学物质,从而改变这些神经元内的电位。
如果某神经元的电位超过了一个阈值,那么它就会被激活(兴奋),向其他神经元发送化学物质。
人工神经网络通常呈现为按照一定的层次结构连接起来的“神经元”,它可以从输入的计算值,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
常被用于估计或可以依赖于大量的输入和一般的未知近似函数,来最大化的拟合现实中的实际数据,提高机器学习预测的精度。
从生物神经元到人工神经元模型(M-P模型)
人工神经元:
激活函数的性质:
- 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数
- 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率
- 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性
常见激活函数及其导数:
人工神经网络
人工神经网络主要由大量的神经元以及它们之间的有向连接构成。因此考虑三方面:
- 神经元的激活规则:主要指神经元输入到输出之间的映射关系,一般为非线性函数
- 网络的拓扑结构:不同神经元之间的连接关系
- 学习算法:通过训练数据来学习神经网络的参数
人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构:
前馈神经网络
网络结构
前馈神经网络(全连接神经网络、多层感知器):
- 各神经元分别属于不同的层,层内无连接
- 相邻两层之间的神经元全部两两连接
- 整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示
前馈网络
给定一个前馈神经网络,我们用下面的记号来描述这个网络:
前馈神经网络通过下面的公式进行信息传播:
前馈计算:
通用近似定理
根据通用近似定理,对于具有线性输出层和至少一个使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可以以任意的精度来近似任何从一个定义在实数空间中的有界闭集函数
应用到机器学习
神经网络可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布
如果g(.)为logistic回归,那么logistic回归分类器可以看成神经网络的最后一层
对于N类分类问题:
如果使用softmax回归分类器,相当于网络最后一层设置N个神经元,其输出经过softmax函数进行归一化后可以作为每个类的后验概率:
采用交叉熵损失函数,对于样本(x,y),其损失函数为:
参数学习
梯度下降
如何计算梯度
深度学习的步骤
优化问题
难点:
参数过多,影响训练
非凸优化问题:即存在局部最优而非全局最优解,影响迭代
下层参数比较难调
参数解释起来比较困难
需求:
- 计算资源要大
- 数据要多
- 算法效率要好:即收敛快
梯度消失问题
BP算法
神经元的训练
训练的过程就是不断更新权重w和偏置b的过程,直到找到稳定的w和b使得模型的整体误差最小:
前向传播
前向传播
损失函数
BP算法实例
设定了输入,和神经元之间的权重
训练步骤:
正向计算-1:
进行了隐藏层的相关计算
正向计算-2:
进行了输出层的相关计算
损失Cost计算:
计算了损失
反向传播-1:
反向传播-2:
反向传播-3:
对W32、W41、W42同理计算
更新权值:
迭代更新:
卷积神经网络
全连接前馈神经网络缺点:
权重矩阵的参数非常多
局部不变性特征
- 自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息
- 而全连接前馈神经网络很难提取这些局部不变特征
卷积神经网络的由来
卷积神经网络概念及特性
卷积神经网络是一种前馈神经网络:
- 卷积神经网络是受生物学学上“感受野”的机制提出而提出的
- 在视觉神经系统中,一个神经元的“感受野”是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元
卷积神经网络有三个结构上的特性:
- 局部连接
- 权重共享
- 空间或时间上的次采样
卷积
卷积经常用在信号处理中,用于计算信号的延迟累积。
两维卷积
在图像处理中,图像是以二维矩阵的形式输入到神经网络中,因此我们需要二维卷积(下面图像好像有问题)
卷积的运算过程
卷积扩展
引入滤波器的 滑动步长s 和 零填充p
填充
在进行卷积运算时,输入矩阵的边缘会比矩阵内部的元素计算次数少,且输出的矩阵的大小会在卷积运算中相比较于输入的尺寸变小。因此,可在输入的矩阵的四周补零,称为padding,其大小为P。比如当P=1时,原输入3*3的矩阵如下,实线框中为原矩阵,周围使用0作为padding:
一般来说,如果在高的两侧一共填充Ph行,在宽的两侧一共填充Pw列,那么输出形状将会是:
步幅
在先前的例子里,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。每次滑动的行数和列数称为步幅,先前的例子里,在高和宽两个方向上步幅均为1.当然,根据实际情况也可以使用更大的步幅。如下图所示(实际输入为3*3,高、宽各以0值填充1行/列),在高上步幅为3、在宽上步幅为2的卷积运算。可以看到,输出第一列第二个元素时,卷积窗口向下滑动了3行,而在输出第一行第二个元素时卷积窗口向右滑动了2列。当卷积窗口在输入数组上再向右滑动2列时,由于输入元素无法填满窗口,无结果输出:
一般来说,当高上步幅为Sh,宽上步幅为Sw时,输出形状为:
多输入通道
前面例子中用到的输入和输出都是二维数组,但真实数据的维度经常更高。例如,彩色图像在高和宽两个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是h和w(像素),那么它可以表示为一个3hw的多维数组,将大小为3的这一维称为通道(channel)维。当输入数据含多个通道时,一般需要构造一个输入通道数与输入数据的通道数相同的卷积核,从而能够与含多通道的输入数据做卷积运算。
卷积类型
卷积的结果按输出长度不同可以分为三类:
- 窄卷积:步长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,可以进一步降低输出特征的维数。但在一些任务中,需要通过将低维特征映射到高维特征,并且依然希望通过卷积操作来实现,这种卷积操作称为转置卷积。
微步卷积
可以通过增加卷积操作的步长s>1来实现对输入特征的降采样操作,大幅降低特征维数。同样,也可以通过减少转置卷积的步长s<1来实现上采样操作,大幅提高特征维数。
步长s<1的转置卷积也称为微步卷积。为了实现微步卷积,可以在输入特征之间插入0来间接地使得步长变小。
空洞卷积
如何增加输出单元的感受野?可以通过以下方法:
- 增加卷积核的大小
- 增加层数来实现
- 在卷积之前进行汇聚操作
空洞卷积:通过卷积核插入“空洞”来变相地增加其大小
卷积神经网络的基本组成
用卷积层代替全连接层
输入:D个特征映射 M x N x D
输出:P个特征映射 M’ x N’ x P
特征映射:一幅图像经过卷积后得到的特征
卷积核看成一个特征提取器
典型的卷积层可以表示成3维结构
卷积层的映射关系
池化层
池化层(Pooling Layer)也叫子采样层,其作用是进行特征选择,降低特征数量,并从而减少参数数量。
卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数并没有显著减少。如果后面接一个分类器,每个分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个池化层,从而降低特征维数,避免过拟合。
最大池化层(max pooling):
特点:能很好的保留纹理特征
平均池化层(mean/average pooling):
特点:能很好的保留背景,但容易使得图片变模糊
卷积网络结构
卷积网络是由卷积层、池化层、全连接层交叉堆叠而成
趋向于小卷积、大深度
趋向于全卷积
典型结构
一个卷积块为连续M个卷积层和b个池化层(M通常设置为2-5,b为0或1).一个卷积网络中可以堆叠N个连续的卷积块,然后在接着K个全连接层(N的取值区间比较大,比如1-100或者更大;K一般为0-2)。
卷积神经网络的学习能力
卷积的作用
表示学习
LeNet-5
注意:C3层是一个卷积层16核卷积,C3并不是与S2全连接而是部分连接。C3层的第0-5个特征映射依赖于S2层的特征映射组的每3个连续子集,第6-11个特征映射依赖于S2层的特征映射组的每4个连续子集,第15个特征映射依赖于S2层的所有特征映射。
论文中提及了如此组合的原因:
- 减少参数
- 这种不对称的组合连接的方式有利于提取多种组合特征
LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络。卷积神经网络能够很好的利用图像的结构信息。卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。
典型的卷积网络
AlexNet
VGG
Inception网络
Inception-V1
Inception-V3
残差网络
卷积神经网络在NLP中的应用
- Ngram特征与卷积
- 文本序列的卷积
- 基于卷积的句子表示
- AlphaGo
- Mask RCNN
- OCR
- 图像生成
- Deep Dream
- 画风迁移
- 对抗样本
- 标题: 神经网络与深度学习基础
- 作者: 宣胤
- 创建于: 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 进行许可。