神经网络与深度学习
神经网络与深度学习¶
1.前馈神经网络与参数优化¶
MCP模型
基于生物体神经元细胞的结构特性与信息传递方式。在人工神经网络中,MCP模型成为最基本的结构。
给定n个二值化(0或1)的输入 xi 与连接系数 wi ,MCP神经元模型对输入数据线性加权求和,然后使用函数将加权累加结果映射为0或1,实现二分类任务。
- “在科学史上第一次,我们知道了我们是怎么知道的。”
感知机
对于有n个输入以及对应连接权重系数为\(w_i\)的感知机,偏置项\(b\),则\(z=\sum w_ix_i+b\);然后将z作为激活函数的输入,激活函数会将z与某一阈值相比较,如果大于该阈值则感知机输出1,否则输出-1。输入数据被分为1和-1两个不同的类别。
- 感知机中的连接权重参数不是预先设置好的,而是多次迭代训练得到的:单层感知机构建损失函数来计算预测值和真实值之间的误差,通过最小化损失函数取值来优化模型参数。
- 感知机可以模拟逻辑AND,NAND,OR等线性可分函数,但无法完成异或XOR这一非线性可分逻辑函数任务
前馈神经网络的定义
在感知机模型中增加若干隐藏层,增器神经网络的非线性表达能力,就会让神经网络有更强的拟合能力:前馈神经网络是由多个隐藏层构成的多层感知机。
- 由输入层、输出层和若干隐藏层构成。
- 每个隐藏层中的神经元可接受相邻前序隐藏层中所有神经元传递而来的信息,经过加工后将信息输出给相邻后序隐藏层中所有神经元。
- 前馈神经网络中相邻层所包含的神经元使用“全连接”方式进行连接。
- 全连接是指相两个相邻神经元相互成对连接(每个与另一层其他所有连接,同一层内神经元间无连接)
- 可模拟复杂非线性函数功能,所模拟函数的复杂性取决于隐藏层数和每层中的神经元数。
前馈神经网络的特性
- 层层递进,逐层抽象:明暗幅度的像素点被映射为高层语义对象的概率值
- 非线性映射:亿万个神经元可实现分类任务,将输入数据从一个空间(如像素点空间)映射到另一个空间(如文本单词空间),这个过程是一个复杂的非线性变换。
- 误差反馈调优:误差线后传播算法会将误差(由损失函数定义)由输出端从后向前传播,逐层更新神经元链接权重和非线性映射函数(激活函数)等参数,使神经网络模型拟合数据,让神经元之间记住这种刺激或者强化信息流通路,从而在输入数据和输出结果之间建立关联。
执行非线性映射的激活函数
在神经网络的每一层中,都有一个激活函数对输入进行非线性的变换。这个激活函数通常应用于每个神经元的输出,将输入映射到一个非线性的范围。以下是一些常用的激活函数:
-
优点:
- 输出范围在(0,1)可视为概率值
- 单调递增,对于x输入没有范围要求
- 非线性变化。0附近非常陡峭,容易激活;x很大时函数值几乎不变
-
问题:
- 在使用反向传播算法更新参数过程中易出现导数过于接近0的情况,即梯度消失问题,这个问题会随着网络的深度增加而变得越发严重。
-
优点:
- 当x>=0时,ReLU函数的导数是常数,可有效缓解梯度消失问题
- 当x<0时,ReLU的梯度总是0,导致神经网络中若干参数的激活值为0,即参与分类等任务的神经元数目稀缺,这种稀缺可以一定程度上克服常出现的过拟合现象
- 缺点:
- 当x<0时,梯度为0也导致神经元“死亡”,即对应神经元权重永远不会更新,为解决此问题可使用Leaky ReLU或Parametric ReLU等梯度非0的激活函数。
softmax函数一般用于多分类问题,是对逻辑斯蒂回归的一种推广,也被称为多项逻辑斯蒂回归模型;
Softmax函数的输入通常是未经加权的原始分数,而不是加权值。在神经网络中,这些原始分数是由最后一层的神经元产生的,每个神经元对应于一个类别。这些分数表示模型对输入属于各个类别的"支持"或"激活"程度。
神经网络参数优化
在设计完一个神经网络结构后(隐藏层数、每个隐藏层中包含的神经元数、激活函数种类),需要对神经网络中的参数(神经元之间的连接权重系数、激活函数系数等)进行优化学习,以使得神经网络能将给定数据映射到期望的输出语义空间,完成分类识别任务。
- 神经网络参数优化是监督学习的过程。给定n个标注样本数据\((x_i,y_i)\),这里\(x_i\)是输入数据、\(y_i\)是\(x_i\)的类别等标注信息。让神经网络对数据进行拟合:使用损失函数来计算模型预测值\(y_i'\)和真实值\(y_i\)之间的误差,利用其优化模型参数。
- 模型利用反向传播算法将损失函数计算所得的误差从输出端出发,由后向前传给每个神经元。
- 通过梯度下降算法对神经网络中的参数进行更新。
- 迭代达到规定次数或准确率达到一定水平时,可认为模型参数优化完毕。
损失函数
损失函数(代价函数)用来计算模型预测值和真实值之间的误差。主要有两种:均方误差损失函数和交叉熵损失函数。
交叉熵用来度量两个概率分布间的差异。两个概率分布 \(y_i'\) 和 \(y_i\) 越接近,交叉熵越小;当其一致时,交叉熵为0。即预测类别分布概率与实际类别分布概率之间的差距越小,交叉熵就越小。以下为使用交叉熵损失函数的例子:
梯度下降
为了让预测结果与真实结果之间的损失误差最小,利用梯度下降法来逐步迭代优化模型参数。当损失误差最小时,此时学习到的模型参数即为模型的最优参数。梯度下降是一种使损失函数最小化的方法。
- 多元函数中,梯度是对每一变量所求导数所组成的向量。
- 梯度的反方向是函数值下降最快的方向,即为损失函数求解的方向。
误差反向传播
目的:通过损失误差来优化调整连接权重系数wi等参数。
神经网络中任意的一个参数相对于损失函数的导数都可以通过链式求导得到。这一求导过程可视为误差后向传播的过程。
- 学习速率:η
- 损失函数:L
梯度下降的方法
- 批量梯度下降:在整个训练集上计算损失误差L,如果数据集太大,就会因内存容量不足而无法完成梯度计算。
- 随机梯度下降:使用训练集中每个训练样本计算L来分别更新参数。因为每次迭代只使用一个样本,导致梯度方向具有很大的波动,收敛速度较慢。但其随机性有助于跳出局部最优解。
- 小批量梯度下降:选取训练集中的小量样本计算L,根据每批样本所得到的累加误差来更新参数。可保证训练过程过程更稳定,且可利用矩阵计算的优势。目前最常用的梯度下降算法。
误差反向传播与参数更新的例子
用于求解三分类问题(3个y中只有一个为1,其他为0)的模型:包含输入层,一层隐藏层,输出层的多层感知机,隐藏层由两个神经元构成。
激活函数为Sigmoid函数,损失函数为均方差损失函数。
2.卷积神经网络¶
为什么要有卷积神经网络
对于图像这样的数据,不能直接将所构成的像素点向量(分辨率为10*10则输入的为100维向量)与前馈神经网络中的每个神经元相连,因为参数数量巨大,会占用计算机内存,并使训练变得难以收敛。
卷积神经网络的前身
通过级联方式(逐层滤波)实现一种满足平移不变性的网络。
卷积操作
给定权重分别为\(w_i\)、大小维3*3的卷积核,以及5*5大小的灰度图像。
滤波(卷积)也可视为在给定卷积核权重的前提下,记住了邻域像素点之间的若干特定空间模式,忽略了某些空间模式。
卷积的意义
- 卷积这一思想利用了图像中的像素点存在“空间依赖度”的特点,即相邻像素点之间有很强的关联性,而远离的像素点之间的相关性很弱。
- 图像的卷积计算对图像进行了下采样的操作。如上例中图像分辨率由5*5降为了3*3。如此不断滤波,就能不断抽象出图中的重要信息。
- 卷积核中的权重系数通过数据驱动机制习得,捕获像素点及其邻域像素点所构成的特有空间模式。
- 图像卷积操作符合“视觉系统信息分层处理”机制。视觉感知是由低层细胞到高层细胞对原始输入信息不断抽象完成,更高层细胞有更高级的感受野,并对平移、旋转具有不变性。
不同卷积核的效果
卷积核中心位置的权重越小,且与其他卷积权重系数差别越小,则该点卷积后的色度值与其近邻像素点色度值的差距变小,则卷积所得到图像滤波结果越模糊。这被称为图像的平滑操作。
高斯卷积:中心位置的权重系数大,从中心向四周扩散的过程中权重系数取值逐渐减小。
填充和步长
- 填充:边缘位置的像素点无法形成其为中心与卷积核等大的区域。为使边缘像素点周围填充0。在这种填充机制下,图像卷积前后的分辨率一致,不存在下采样。
-
步长:通常希望卷积所得的图像分辨率比卷积前的图像分辨率减少,即图像被约减。步长方法改变卷积核在被卷积图像中移动步长的大小来跳过一些像素。步长stride=1表示卷积核每一次移动一格,也是最基本的单步滑动,也是标准的卷积模式。
卷积算子的特点(对于卷积神经网络的概括)
- 选择性感受野:不同的卷积核可被用来刻画视觉神经细胞对外界信息感受时的不同选择性。感受野是指每个输出点的取值仅依赖于一个范围内点的取值,与区域之外点的取值无关,该区域就是感受野。感受野是卷积神经网络每一层输出的特征图上的像素点在输入图像上映射区域的大小。
- 局部感知,参数共享:卷积操作是一个线性变换,其权重参数可学习,可被重复使用,减少了参数总数,一定程度防止过拟合。
- 下采样的约减抽象:通过被卷积图像大小w*w、卷积核大小f*f、上下左右每个边缘填充的行列数p(行/列数为卷积核边长的一半上取整)、步长s可计算被卷积结果的分辨率。(w+2p-f)/s + 1
池化
- 最大池化:从输入特征图的某个区域子块中选择最大的像素点作为最大池化结果
- 平均池化:计算区域子模块所包含所有像素点的均值,将均值作为池化结果
-
k-max池化:对输入特征图区域子块中的像素点取前k个最大值;下图从包含四个取值的每一列选了前两个最大值
卷积神经网络全貌
下图中,对于32*32*3的彩色图像,先分别用6个5*3*3的卷积核对其 进行卷积操作(步长为1、无填充),得到6个28*28的卷积结果(特征图),然后以2*2大小进行池化,得到6个14*14大小的特征图。最后通过若干个全连接层得到原始图像的向量表达,再对这个向量表达通过softmax函数进行分类识别,得到属于n个类别的概率。
3.循环神经网络¶
为什么要有循环神经网络
是一类处理序列数据(如文本句子、视频帧等)时所采用的网络结构。前馈神经网络或卷积神经网络要求需要处理的数据一次性给定,难以处理存在前后依赖关系的数据。
循环神经网络本质是模拟人的记忆能力,在学习过程中记住部分已经出现的信息,并利用记住的信息影响后续结点的输出
在自然语言处理(语音识别、情感分析、机器翻译等领域有重要应用)。
工作机制
每一时刻读入当前输入以及前一时刻输入数据对应的隐式编码结果,二者一起加权累加后通过激活函数处理生成此时刻的隐式编码结果,接着将此结果后传,如此循环处理,直至该序列数据被处理完毕。
处理自然语言的例子
目的是将自然语言的句子进行饮食、体育等类别。循环神经网络在读入每个单词后,产生对应单词的隐式编码,并使其参与后续单词的隐式编码。得到了每个单词的隐式编码后,可以通过两种方式获得句子的向量编码
1.由于每个单词的信息均向后传递,可将最后一个单词输出作为整个句子的向量编码表示。
2.将每个单词的隐式编码加权平均得到句子的向量编码。
一旦得到了向量编码就可以用分类器判断句子的类别。
应用模式
根据输入序列数据与输出序列数据中所包含“单元”的多寡分为:
- 多对多
- 多对一
- 一对多
梯度传递与参数更新
- 当彼此相关的信息在序列中距离较远时,循环神经网络无法捕捉到数据之中的时序依赖关系
- 当输入序列过长时,循环神经网络容易出现梯度消失或梯度爆炸的问题
若t时刻的隐式编码计算如下:\(ℎ_t=tanh(W_xx_t+W_ℎℎ_t−1+b)\),且规定计算误差的损失函数
则根据t时刻所得的误差来更新参数Wx,注意到在\(h_t\)的计算也涉及到了Wx,前面的h都涉及到了Wx。(将Wx视作自变量)。
长短时记忆模型(LSTM)
由于tanh函数的导数取值为(0,1),则最后对参数求导的结果会很小,出现梯度消失问题,以此引出长短时记忆模型。
-
门结构:三种门结构分别对此刻输入数据和前一时刻隐式编码进行编码
- 输入门
- 遗忘门
- 输出门
三种门结构输出向量的维数、内部记忆单元的维数和隐式编码的维数均相同
- 内部记忆单元:对历史信息的积累。结合前一时刻内部记忆单元信息来更新此刻内部单元记忆信息
4.注意力机制与正则化¶
注意力的理解
- 在自然语言中,注意力是指句子级或篇章级中单词和单词之间因为上下文而共同出现的概率
- 在图像分析中,注意力可理解为在一定视觉区域中视觉子块之间的空间分布模式
- 在机器翻译中,注意力可理解为输入源语言单词和输出目标单词之间的关联
自注意力
用于计算自然语言中单词和单词之间的概率关联;在自注意力机制中,每个输入单词都有一个对应的注意力权重,该权重表示模型在处理当前单词时应该关注输入序列中的哪些位置。这种机制允许模型在处理每个单词时动态地调整对其他单词的关注程度,而不仅仅是固定的权重。这有助于模型更好地捕捉输入序列中的长程依赖关系和语境信息。
自注意力应用
计算得到单词和其他单词形成的自注意力关联后,Transformer再将这些自注意力关联通过前向(前馈)神经网络进行非线性映射。非线性映射有助于提高模型的表达能力。
神经网络正则化
深度神经网络结构复杂,参数众多,易于造成过拟合。为缓解在训练过程中出现的过拟合现象,需要采取一些正则化技术来提升神经网络的泛化能力。
- Dropout:在训练神经网络的过程中随机丢掉一部分神经元来降低网络的复杂度,及训练时随机屏蔽每层中的若干神经元,使用余下神经元训练。可防止过拟合
- 批归一化:通过会规范化手段,把神经网络每层中每个神经元输入值分布改成均值为0,方差为1的标准正态分布,把偏移较大的分布强制映射为标准正态分布。这样就可以使激活函数的输入值被映射到非线性函数梯度较大的区域,克服梯度消失的问题,进而加快收敛速度。
5.深度学习的自然语言理解与计算机视觉应用¶
词向量生成(Word2Vec)
为表达模型,“词袋”模型被采用,但这一模型忽略了单词文本之间的依赖关系(先后顺序),仅将文本看作单词的集合。
- 在词袋模型中,一个单词按照词典顺序被表示为一个以词典大小作为维数的向量,向量中该单词所对应位置按照其在文档中是否出现置为0。这种分量只有0和1的向量为 one-hot 向量。
- 词向量:为刻画不同单词之间的语义相关性,使用一种分布式向量表达(而不是one-hot)对不同单词进行表达。利用深度学习模型可将每个向量表征为N维实数值的分布式向量,这样可以把文本的分析简化为N维空间中的向量运算。
- Word2Vec模型可以根据上下文单词预测一处的单词,也可以根据一处的单词预测上下文的单词。
图像分类与目标定位
- 多任务学习:图像分类和目标定位的过程中,单次目标检测模型不仅要检测物体的位置,也要判断物体的类别标签。因此,图像分类和目标定位要同时完成回归问题(位置判断)和分类问题(物体识别)。
-
先经过若干次卷积操作与池化操作提取一个特征向量来表示输入图像,这个向量作为输入特征会分别传给两个任务:
- 分类任务:Softmax分类函数将全连接层得到的特征向量归一化为概率值,向量的每一维用来表示每个类别在输入图像出现的概率。
- 目标定位:将全连接层的输出向量转换为一个表示位置的四维向量。
6.深度学习小结¶
端到端(end to end)
输入端到输出端。基本动机在于通过构建多层网络来学习隐含在数据内部的关系,使学习得到的特征具有更强的表达能力和泛化能力
黑盒子
一般思路是将深度学习得到的特征(如卷积神经网络中最后一个全连接层输出,以及词向量模型中输入层与隐藏层的连接权重)输入给分类模型(如softmax函数),然后根据损失函数计算所得误差来优化模型。
这种学习机制使结果缺乏解释性,从而难以可信(易受到对抗样本攻击)。目前需要得到可信安全、解释性更强、较少依赖标注大数据、自适应更好的深度学习方法。