卷积神经网络

卷积基本知识

卷积与全理解层的区别

速记:局部连接;权值共享;输入/输出数据结构化

详细:局部连接:卷积核尺寸远小于输入特征图的尺寸。

权值共享:卷积核的滑动窗机制,使得输出层上不同未知的节点与输入层的连接权值都是一样的(即卷积核参数)。

输入/输出数据结构化:局部连接和权值共享,使得剪辑操作能够在输出数据中大致保持输入数据的结构信息。

 

卷积神经网络的基础模块

批归一化为了解决什么问题?他的参数有何意义?他在网络中一般放在什么位置?

速记:解决内部协变量偏移问题。激活层前后都可以。

详细:在机器学习中,一般会假设模型的输入数据的分布是稳定的。如果这个假设不成立,及模型输入数据的分布发生变化,则称为协变量偏移。模型的训练集和测试即的分布不一致,或者模型在训练过程中输入数据的分布发生变化,这些都属于协变量偏移现象。

同样,对于一个复杂的计算机学习系统,在训练过程中一般也会要求系统李的各个子模块的输入分布是稳定的,如不满足,则称为内部协变量偏移。对于深度神经网络,其在训练过程中,每一层的参数都会随之更新。易第i层为例,其输入数据与之前所有层的网络参数取值都有很大关系;在训练过程中,如果之前层的参数被更新后,第i层的输入数据的分布必然也跟着变化,此即为内部协变量偏移。

内部协变量偏移会给深度神经网络的训练过程带来诸多问题:

  • 网络每一层需要不断适应输入数据的分布的变化,这会影响学习效率,使学习过程变得不稳定
  • 网络前几层的更行,很可能使得后几层的输入数据变得过大或过小,从而掉进激活函数的饱和区,导致学习过程过早停止
  • 为降低内部协变量偏移的影响,避免参数更新过快,实际应用中会采用较小的学习率,这回降低收敛速度

 

批归一化就是为了解决上述问题而提出的,它的主要作用为:确保网络中的各层,即使参数发生了变化,其输入/输出数据的分布也不能产生较大变化,从而避免发生内部协变量偏移现象

批归一化可以看作带参数的标准化,具体公式为

其中,和分别是原始输入数据和批归一化后的输出数据,分别是输入数据的均值和标准差(在mini-batch上),分别是可学习的平移参数和缩放参数,上标k表示数据的第k维(批归一化在数据各个维度上是独立进行的), 是防止分母为0的一个小量。

可学习的参数有以下作用:

  • 保留网络各层在训练过程中的学习成果。
  • 保证激活单元的非线性表达能力
  • 使批归一化模块具有自我关闭能力。若两参数分别取数据的均值和标准差,则可以复原初始的输入值。

批归一化的位置

  • 激活层前:有效避免批归一化破坏费线性特征的分布;使数据点尽量不落入激活函数的饱和区域,缓解梯度消失问题。
  • 激活层后:避免在激活层之前被转化成相似的模式从而舍得非线性特征分布趋于同化。

 

用于分类任务的卷积神经网络最后几层一般使什么层?在最近几年有什么变化?

速记:全连接层;近几年用平均池化多。

详细:用于分类的卷积神经网络,末端一般是几层全连接层。为了提取不同元素之间的关联关系,需要一个全局的、位置敏感的特征提取器,全连接层是最方便的选择。

最近几年,最后一层之前通常采用全局平均池化,具有以下优点:

参数量和计算量大大降低;有较好的可解释性。

 

循环神经网络

循环神经网络能较好地处理序列信息,并能捕获长距离样本之间的关联关系。用因节点状态保存序列中有价值的历史信息,使得网络能够学习到整个序列的浓缩的、抽象的信息。

神经网络与序列建模

描述神经网络的结构以及参数更新方式。

详细:其实从神经网络的计算公式可以看出,神经网络的参数对于每一步是共享的。(其实就是只有一个,并没有一串)

参数更新 :基于时间的反向传播算法。

 

如何使用卷积神经网络对序列数据建模?

速记:Text CNN

 

循环神经网络中的Dropout

在循环神经网络中如何使用Dropout?

速记:不能直接用。

详细:如果张子杰用Dropout删除一些神经元,会导致RNN的记忆能力减退。

一个较为直观的思路为:只将Dropout用在前馈连接上,但这一效果并不太理想,因为RNN中给的大量参数其实是在循环连接上的。

基于变分推理的Dropout方:对于同一个序列,在其所有时刻的循环连接上采用形同的丢弃方法,也就是说不同时刻丢弃的连接是相同的,实验表明,这种Dropout在语言模型和情感分析中会获得较好的效果。

 

RNN中的长期依赖问题

RNN为什么容易出现长期依赖问题?

速记:梯度消失/爆炸,解决方法:LSTM,GRU