文章目录
前言
一、卷积神经网络
卷积神经网络一般是由卷积层、池化层和全连接层交叉堆叠而成的前馈神经网络。
卷积神经网络有三个结构上的特性:局部连接、权重共享以及池化。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数少。
1.卷积运算
一维卷积
窄卷积:步长 𝑇 = 1 ,两端不补零 𝑃 = 0 ,卷积后输出长度为 𝑀 − 𝐹 + 1
宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 = 𝐹 − 1 ,卷积后输出长度 𝑀 + 𝐹 − 1
等宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 = (𝐹 − 1)/2 ,卷积后输出长度 M
二维卷积
互相关:
互相关和卷积的区别仅仅在于卷积核是否进行翻转。
因此互相关也可以称为不翻转卷积
在神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特征抽取的能力无关。常用互相关。
2.卷积的动机
稀疏交互、参数共享、平移不变性
稀疏交互
权值共享
平移不变性
由卷积+池化共同实现。系统产生完全相同的响应(输出),不管它的输入是如何平移的
3.池化层
也称汇聚层,作用是进行特征选择,降低特征数量,从而减少参数数量
最大池化(能够抑制网络参数误差造成的估计均值偏移的现象)在计算机视觉中:对纹理的提取较好!
平均池化(主要用来抑制邻域值之间差别过大,造成的方差过大)在计算机视觉中:对背景的保留效果好!
更好的获取平移不变性,更高的计算效率(减少了神经元数)
4.卷积神经网络
卷积层,池化层,全连接层
卷积层:
公式:(N – F+2P) / stride + 1
N为输入维数,F为滤波器大小,P为零填充
卷积神经网络每层的卷积核权重是由数据驱动学习得来,不是人工设计的,人工只能胜任简单卷积核的设计。复杂模式是由简单模式组合而成。多层卷积层的多卷积核的这种组合是一种相对灵活的方式在进行
5.其他卷积方式
转置卷积:将低维特征映射到高维特征
空洞卷积:
如何增加输出单元的感受野?
增加卷积核的大小;
增加层数,比如两层3 × 3 的卷积可以近似一层5 × 5 卷积的效果;
在卷积之前进行池化操作。
6.典型网络简介
LeNet-5
AlexNet:第一个现代深度卷积神经网络模型
使用GPU
RELU作为CNN的激活函数
提出了LRN层(ReLU后进行归一化处理)增强了模型的泛化能力
Dropout避免过拟合
使用重叠的最大池化,最大池化可以避免平均池化的模糊化效果,
数据增强。利用随机裁剪和翻转镜像操作增加训练数据量,降低过拟合
Inception网络
Inception网络是由有多个inception模块和少量的汇聚层堆叠而成。
同时使用不同大小的卷积核,并将得到的特征映射在深度上拼接起来作为输出特征映射
优点1:减少网络参数,降低运算量(1×1卷积的作用之一是通过降维减少网络开销)
优点2:多尺度、多层次滤波(1×1卷积的另一作用是对低层滤波结果进行有效的组合)
V3版本:用多层的小卷积核来替换大的卷积核,以减少计算量和参数量
残差网络
通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。
更深的残差模块,用于更深的网络结构
二、循环神经网络
1.网络记忆能力
全连接网络和卷积网络前一个输入和后一个输入是完全没有关系的不能处理序列的信息
如何给网络增加记忆能力(除RNN外)?
延时神经网络(TDNN):建立一个额外的延时单元,用来存储网络的历史信息
自回归模型(AR):时间序列模型,用变量𝑦𝑡的历史信息来预测自己
有外部输入的非线性自回归模型(NARX)
2.循环神经网络
一个完全连接的循环神经网络可以近似解决所有的可计算问题
序列到类别(many to one):文本分类,情感分析
类别到序列(one to many):编写诗歌
同步序列到序列(many to many):词性标记
异步序列到序列(many to many):自动问答,机器翻译
3.随时间反向传播
4.长程依赖问题
由于梯度爆炸或消失问题,实际上只能学习到短周期的依赖关系
梯度爆炸更容易处理一些。因为梯度爆炸的时候,程序会收到NaN错误。也可以设置一个梯度阈值,当梯度超过这个阈值时直接截取
梯度消失更难检测,改进:1. 合理的初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。
2. 使用relu代替sigmoid和tanh作为激活函数。
3. 使用其他结构的RNNs,比如长短时记忆网络(LTSM)和 GRU。
5. 长短期记忆网络(LSTM)
遗忘门(forget gate),它决定了上一时刻的单元状态ct-1有多少保留到
当前时刻ct;
输入门(input gate),它决定了当前时刻网络的输入xt有多少保存到单
元状态ct 。
输出门(output gate)来控制单元状态ct有多少输出到LSTM的当前输出值h
6.门控循环神经网络GRU
GRU模型中只有两个门,分别是更新门和重置门。
GRU将单元状态与输出合并为一个状态h。
7.深层循环神经网络
深网络:把循环网络按时间展开,长时间间隔的状态之间的路径很长
浅网络:同一时刻网络输入到输出之间的路径 xt→yt 非常浅
(1)堆叠循环神经网络
(2)双向循环神经网络:它们的输入相同,只是信息传递的方向不同。第1层按时间顺序,第2层按时间逆序。一个值𝐴参与正向计算,另一个值𝐴’参与反向计算。最终的输出值取决于𝐴和𝐴’。
正反向不共享权重
三、深度模型优化与正则化
优化:经验风险最小。
正则化:降低模型复杂度。
是一对矛盾体。
1.网络优化
低维空间中非凸优化的主要难点是如何选择初始化参数和逃离局部最优点,在高维空间中,非凸优化的难点并不在于如何逃离局部最优点,
而是如何逃离鞍点。
2.小批量梯度下降
批量大小不影响随机梯度的期望,但是会影响随机梯度的方差。
批量越大,随机梯度的方差越小,训练也越稳定,因此可以设置较大的学习率。
批量较小时,需要设置较小的学习率,否则模型会不收敛。
3.学习率与梯度优化
学习率优化
**学习率衰减:**一开始要保持大些来保证收敛速度,收敛到最优点附
近时要小些以避免来回震荡
**学习率预热:**当批量大小比较大时,需要比较大的学习率。但开始训练的参数是随机初始化的,梯度往往也比较大,加上比较大的初始学习率,会使得训练不稳定。
为了逃离局部最小值或鞍点,可在训练过程中周期性地增大学习率
自适应学习率:
AdaGrad算法:借鉴ℓ2正则化的思想,每次迭代时自适应地调整每个参数的学习率。
独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平方值总和的平方根。
RMSprop:将𝐺𝑡的计算由累积方式变成了指数衰减移动平均。可以在有些情况下避免AdaGrad算法中学习率不断单调下降以至于过早衰减的缺点
梯度优化
动量法:使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向。当前时刻的速度不仅依赖于负梯度,还依赖于前序时刻的加权移动平均。
仍然不能保证收敛到全局最优,但有一定可能跳出局部极值点
在迭代初期,梯度方向都比较一致,动量法会起到加速作用,可以更快地到达最优点。
在迭代后期,梯度方向会不一致,在收敛值附近震荡,动量法会起到减速作用,增加稳定性。
Adam算法:自适应学习率(RMSprop)+ 梯度方向优化(动量法)
逃离局部极值点、鞍点:周期性学习率,动量法、Adam算法
梯度爆炸:在基于梯度下降的优化过程中,如果梯度突然增大,用大的梯度更新参数反而会导致其远离最优点。当梯度的模大于一定阈值时,就对梯度进行截断,称为梯度截断
5.逐层归一化
批量归一化:对一个中间层的单个神经元进行归一化操作
层归一化:对一个中间层的所有神经元进行归一化
当样本数量比较小时,可选择层归一化。
6.超参数优化
网格搜索、随机搜索、贝叶斯优化
7.过拟合与正则化
提高神经网络的泛化能力:
ℓ1和ℓ2正则化
提前停止
Dropout:
训练时每个神经元以p% 的概率被丢弃,网络结构发生了改变。
测试时:不用dropout,每个参数乘以1-p%
可看作是一种集成学习