用于记录深度学习的学习过程中了解到的一些基础知识
深度卷积网络
卷积神经网络(Convolutional Neural Networks,CNN)
1.卷积运算
卷积的第一个参数x通常叫做输入(input),第二个参数函数w叫做核函数(kernel function),输出有时候叫做特征映射(feature map)。
许多机器学习的库实现的是互相关函数但是称之为卷积。
二维卷积操作:
二维互相关函数,相对于卷积运算没有进行核翻转:
2.卷积重要思想
- 稀疏交互(sparse interactions)
- 参数共享(parameter sharing)
- 等变表示(equivariant representations)
2.1 稀疏交互
通过使核的大小远小于输入的大小来实现。
如果有m个输入和n个输出,矩阵算法就需要mxn个参数;而使用卷积实现的稀疏交互可以在较少的数据量上实现同样的效果,加入每个输出连接数为k,只需要kxn个参数。
从x3出发,卷积计算时,只会影响s2、s3、s4(上图);矩阵乘法计算时会影响s1-s5(下图)。
从s3出发,卷积计算时,只会受x2、x3、x4影响(上图);矩阵乘法计算时会受x1-x5影响(下图)。
同时,在深度卷积网络中,网络深层的单元可能与绝大多数输入是间接交互的,可以通过稀疏交互高效地描述多个变量的复杂交互。
2.2 参数共享
参数共享指的是在一个模型的多个函数中使用相同的参数。
卷积计算中,所有的黑线都是使用的同一个参数(上图);
矩阵计算中,黑线的参数只有在x3->s3时才会使用。
2.3 等变表示
对于卷积,参数共享的特殊形式使得神经网络具有对平移等变的性质。
如果一个函数满足输入改变,输出也以同样的方式改变,就说它是等变的。
例如:输入中的一个事件向后延迟,输出仍会有相同的表示,同时时间延后。
然而,卷积对其他的一些变换并不是天然等变的,例如对于图像的放缩或旋转变换,需要其他的机制来处理这些变换。
3.CNN结构
3.1 卷积层
卷积层( Convolutional Layer ) : CNN 网络的核心结构,通过局部感知和参数共享两个原理,实现了对高维输入数据的降维处理,并且能够自动提取原始数据的优秀特征。
卷积层的结构由四个超参数来决定:卷积核的大小、卷积核的数量、步幅和补零。
- 卷积核的大小:看做是一个滤波器,也叫作感受视野(local receptive fields)
- 卷积核的数量:每一个卷积核与原始输入数据执行卷积操作后得到的神经元集合称为特征图谱
- 步幅:卷积核在输入数据上的移动步幅
- 补零:用来处理边界
3.2 激活层
激活层( Activation Layer):它的作用与传统 DNN 网络的激活层一样,把上一层的线性输出,通过非线性的激活函数进行处理。前面介绍的激活函数在这里仍然适用,既可以采用传统的 sigmoid 激活函数,也可以采用单侧抑制的 Re LU 激活函数。在深度学习领域,ReLU 的单侧抑制激活函数普遍比传统的 sigmoid 激活函数效果要好。
3.3 池化层
池化层( Pooling Layer ):也称为子采样层或下采样层,是 CNN 网络的另一核心结构层。通过对输入数据的各个维度进行空间的采样,可以进一步降低数据规模,并且对输入数据具有局部线性转换的不变性,增强网络的泛化处理能力。
池化的两种主要策略:
- 最大池化函数( max pooling )
前向传播操作:取滤波器最大值作为输出结果
后向操作操作:滤波器中的最大值元素不变,但滤波器中的其余元素为 0 - 平均池化函数( average pooling )
前向传播操作:取滤波器平均值作为输出结果
后向操作操作:滤波器中的所有元素都取平均值
池化设计的作用:
- 减少参数数量,防止过拟合
- 池化操作能保持局部线性变换的不变性,尤其是当我们关心某个特征是否出现而不关心它出现的具体位置时
卷积与池化作为一种无限强的先验
把卷积网络类比成全连接网络,这个无限强的先验是说一个隐藏单元的权重必须和它邻居的权重相同,但可以在空间上移动。
这个先验也要求除了那些处在隐藏单元的小的空间连续的接受域内的权重以外,其余的权重都为零。
总之,我们可以把卷积的使用当作是对网络中一层的参数引入了一个无限强的先验概率分布。
这个先验说明了该层应该学得的函数只包含局部连接关系并且对平移具有等变性。
类似的,使用池化也是一个无限强的先验:每一个单元都具有对少量平移的不变性。
卷积和池化可能导致欠拟合
与任何其他先验类似,卷积和池化只有当先验的假设合理且正确时才有用。
如果一项任务依赖于保存精确的空间信息,那么在所有的特征上使用池化将会增大训练误差。
当一项任务涉及到要对输入中相隔较远的信息进行合并时,那么卷积所利用的先验可能就不正确了。
3.4 全连接层
全连接层( Full Connected Layer ):等价于传统的多层感知机 MLP,经过前面的卷积层和池化层的反复处理后,一方面,输入数据的维度已经下降至可以直接采用前馈网络来处理;另一方面,全连接层的输入特征是经过反复提炼的结果,因此比直接采用原始数据作为输入所取得的效果更好。
全连接层则起到将学到的特征表示映射到样本的标记空间的作用。换句话说,就是把特征整合到一起(高度提纯特征),方便交给最后的分类器或者回归。
因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。
只用一层fully connected layer 有时候没法解决非线性问题,而如果有两层或以上fully connected layer就可以很好地解决非线性问题了。
Ref
https://zhuanlan.zhihu.com/p/33841176