深度学习 - 卷积神经网络综述
1. 卷积神经网络概念
卷积神经网元(CNN)属于一种前馈型神经网络架构,在深度学习领域具有重要地位。这种架构主要由多个卷积层和池化层组成,在图像处理领域中表现出色
1962年, Hubel和Wiesel通过 conducted实证研究大脑视觉皮层,首次提出了一种新的概念'感受野'
1989年,LeCun融合了反向传播算法与权值共享机制于卷积神经层中设计出卷积神经网络,并将其成功应用于美国邮局的手写字符识别系统中。1998年,在此基础上他提出了经典的卷积神经网络架构模型LeNet-5 ,并通过优化提升了手写字符识别系统的准确率。
CNN的基本组成包含输入端、卷积块以及输出端。其中,在网络架构中通常会设置多个卷积块与池化块交错排列,在此基础之上形成循环往复的网络结构。
2. 卷积神经网络的特点
可以说卷积神经网络是多层感知机的一种发展形式。这些关键特征包括局部连通性、参数共享以及下采样机制的作用。正是由于这些特性,在图像处理方面取得了显著成效。相较于传统的人工神经网络体系而言,卷积神经网络的独特之处体现在参数共享与局部连通性的双重机制上。
2.1 局部连接
在传统的人工神经网络架构里,默认情况下各层的神经元之间呈完全连接状态,在训练过程中所有n-1层的神经元都会与n层的所有神经元建立直接联系;而在卷积神经网络架构中,则只存在局部区域间的部分性连接

图1:全连接(左图)与局部连接(右图)的对比示意图
局部连接指的是通过卷积核能够提取该区域的local特征,例如,在3×3的范围内.

2.2 权值共享
在卷积神经网络中,在处理过程中使用的卷积层中的每一个卷积核都相当于一个滑动窗口,在输入图像上以固定步长移动,在完成这一系列操作后,则能够生成反映图像局部特征的特征图;这个生成出来的特征图正是该卷积层提取出来的局部特征信息所在的位置,并且这些参数在整个网络训练过程中都会被不断优化;具体来说,在这一训练过程结束后,则包含了权重参数在内的所有**卷积核都会相应地被更新以适应新的模型状态
权值共享指的是整张图片在同一个卷积核中所使用的参数数量。例如,在一个3 \times 3 \times 1的卷积层中,这些9个权重参数会被整张图像的所有区域共同使用。无论图像中的不同位置如何变化,在相同的过滤器作用下这些权重始终保持一致的效果系数。
权值共享的优点:
- 大规模减少了卷积核中的参数数量(由于仅需一个固定的卷积核通过滑动即可实现),从而降低了整个网络的复杂度。
- 传统的神经网络和机器学习方法通常需要对图像进行复杂的预处理以提取特征,并将提取到的特征输入到神经网络中进行处理。相比之下,引入卷积操作能够有效利用图像的空间局部相关性,在自动化的过程中完成特征提取。
通常情况下,在convolutional layer中存在多个convolution kernels以对应不同的channels。由于weight sharing导致每个kernel只能提取一种特定特征。为了增强CNN的表达能力而设置了多层这样的结构。
2.3 降采样 (池化)
降采样即为下采样的一种关键技术,在卷积神经网络中占有重要地位也可称为池化(Pooling)。其常见方式包括最大值池化(max pooling)、最小值池化(min pooling)以及平均值_pooling(average pooling)。采用这种技术带来的好处在于减少了图像的空间分辨率并使整个网络更加不易于发生过拟合。

3. 卷积神经网络的结构
一个卷积神经网络模型一般由若干个卷积层、池化层和全连接层组成。
卷积神经网络通过卷积操作提取图像的空间特征;
池化操作用于从特征图中抽取关键信息,并通过减少计算复杂度的同时有效降低模型过拟合的风险。
通常情况下,在深度学习模型架构中,最后一级结构由1至2个全连接层构成;这些全连接层旨在整合各层级提取的特征。
经过一系列前向传播过程后,在分类器模块中完成数据分类任务。
4. NLP中的卷积神经网络
4.1 一个简单的例子
针对这个句子"tentative deal reached to keep government open"(暂定协议已达成旨在保持政府开放性),我们将每个单词用4维的dense vector进行表示,并随机初始化一个大小为3的卷积核。

将这个卷积核从上到下移动,这样每次就能够提取到3-gram的局部特征 :

但是这种方法存在一个缺点,在卷积操作后会导致feature map的尺寸缩小!原来的输入序列长度为7,在经过卷层操作后缩短到了5个位置左右。这种缩减可能会给后续处理带来一定的挑战性问题;因此在处理原始输入时我们可以对其进行零填充处理(Zero Padding),举例如下:

可以看出,经过0-padding之后,卷积后句子的长度依然是7。
当前为止仅采用了单个卷积核, 也就是仅提取一种特征。在实际应用场景中, 通常需要提取多种特征, 这就要求我们必须采用多个卷积核。例如下面这个案例中, 我们使用了3个不同的卷积核来提取三种不同的特征:

值得注意的是,在反向传播(backprop)的过程中(process),每个卷积核都会通过自主的学习机制来掌握特定属性。例如,在卷积核1的学习过程中可能会关注以下几点:是否这句话表达得体(is this sentence grammatically correct?);而在卷积核2的学习阶段可能会关注以下内容:是否涉及食物相关的主题(topics related to food);而卷积核3则可能会着重分析并提取与积极性质相关的信息(positive properties)
通过三个不同的卷积核分别提取出句子的特征信息,并将其整合形成了三个独特的通道(channel)。随后,在后续步骤中,我们采用最大池化技术对每个通道进行处理,并计算得到的结果分别为0.3、1.6和1.4。从结果来看,这句话中缺乏明显礼貌性的表达,但其中包含了食物元素,并且同时体现出一定的积极性倾向。
值得注意的是,在处理文本问题时采用CNN模型时, max-pooling操作是合理的选择.这一现象源于文本本身的稀疏特性,即在长序列数据中实际有意义的信息通常较为有限.因此,当评估一段话是否文明(polite)时,只需发现一处文明行为即可判定该句子为文明语境.比如其中一块标注为"would you please"的小块内容就足以说明整段话属于文明对话范畴.
除了Max-pooling之外还有另一种做法即采用Average-pooling这种技术通过计算其均值能够有效地反映整个句子的基本语义另外一种方法则是取前K个最大的特征值这种操作通常用于捕捉序列中最重要的信息点

还有一种在图像领域经常用到的pooling方法:

4.2 文本分类问题
4.2.1 FastText
fastText 是由 word2vec 的作者 Mikolov 在转向 Facebook 发表的一篇论文中提出的一项创新理论 Bag of Tricks for Efficient Text Classification 。将这一方法应用到这里并不是因为它代表了当前文本分类的主要做法(主流方法通常指TF-IDF或BM25),而是因为它具有极高的简洁性,并附有模型图见下:

其原理是对句子中的所有词向量进行计算平均(从某种角度看,这相当于仅使用一种avg pooling的特殊CNN结构)。之后直接连接一个softmax层。文章还引入了一些n-gram特征技巧来捕捉局部序列信息。文章的信息量不大,可称为"水文"。思考集中在文本分类问题中存在一些具有线性性质的部分;也就是说,并不需要过多地进行非线性转换或特征组合即可获取大量分类信息;因此,在某些情况下甚至可以用较为简单的模型就达到不错的效果。
4.2.2. TextCNN
fastText中的网络架构忽略了词序信息这一特点明显制约其性能表现;而这种n-gram特征trick则凸显了局部序列信息的重要性。卷积神经网络的核心在于能够捕获局部相关性这一特性,在文本分类任务中通过CNN技术不仅可以识别出与n-gram类似的关键词汇及其上下文关系等关键信息。
TextCNN详细过程:以TextCNN为例,在图中左侧最顶端位置是一个7×5的句子矩阵,在本研究中每一行数据均为词向量形式,并且其维度为5维(即5维词向量)。随后通过应用三个不同大小的一维卷积滤波器(filter_size=(2,3,4)),每个滤波器组能够生成两个独立的空间特征通道(output channel)。第三个层次采用1-max池化操作,在此过程中不同长度输入经过池化处理后最终都能被转换为统一长度表示特征向量(feature vector)。最后在上述特征向量基础上接一层全连接层(fully connected layer)并采用softmax函数作为激活函数进行计算,在此过程中模型能够输出各类别的概率分布结果(probability distribution)。

特征:这里的特征即为词向量,在分类任务中主要分为静态与非静态两种形式。其中静态度别采用了基于Word2Vec预训练模型构建的固定权重矩阵,在这种情况下并未进行更新操作,并被归类于迁移学习范畴内。当面对数据样本较少的情况时静态度别往往表现出较好的表现效果而非静态度别则是指在模型构建阶段会对原始权重进行动态调整在此过程中会不断优化语义表示能力并且能够加快收敛速度当然如果具备足够的数据与计算资源则可以直接从零开始初始化权重矩阵
通道:在图像空间中主要采用(R, G, B)作为主要通道维度;在文本处理中则是通过多种表示技术来构建输入的通道维度(如word2vec或Glove),其中还有一种实践是将静态词向量与微调后的词向量结合运用作为多条独立的通道维度
在TextCNN中使用了一维卷积操作:其中图像被视为二维数据,在经过词向量编码后的一位序列上应用了这种深度学习模型。这种情况下所需要的改进在于需设计不同大小的滤波器以获取多样化的视角范围。
基于CNN的方法在文本分类问题上已有较多研究,并非首次提出此类方法。其中一篇具有代表性的研究是A Convolutional Neural Network for Modelling Sentences。值得注意的是,在池化阶段采用了动态k-max pooling策略,在pooling阶段通过保留每个位置上k个最大值的信息来保持序列的整体特征。例如,在情感分析任务中
“我觉得这个地方景色还不错,但是人也实在太多了”
尽管前半段反映出情感呈现积极倾向,并非全然是正面的;然而全局文本呈现出较为消极的情感特征;并且k-max pooling能够有效提取这类信息。
4.2.3 residual block

Residual Block: 增加一个skip-connection。学习F(x)相当于拟合残差。
highway: 采用了类似于LSTM的想法(more LSTM-like),增加了T门和C门;然而实际上它们在表达能力上与残差块是相同的。
4.2.4 全连接层

以上图为例,在图中可以看出全连接层的具体结构如下:每个全连接层都由大量神经元以平面方式排列而成(1 \times 4096)。为了将输入转换为1 \times 4096的维度,则需使用一个3 \times 3 \times 5 \times 4096大小的卷积层来处理激活函数的结果。
这一过程在卷积神经网络中扮演着关键角色,在每一轮迭代中都会对模型参数进行更新优化,在此过程中系统会不断调整模型以适应数据的变化
在当前的例子中, 全连接层包含两个并列的组织. 其原因在于, 单个神经元相当于一个多项式模型, 我们需要通过多个这样的单元来拟合数据分布. 仅使用单个神经元有时难以处理非线性模式, 而当存在两层及以上全连接结构时, 就能有效地应对复杂的非线性模式. (想想泰勒公式)
当前由于全连接层存在大量参数冗余(仅全连接层参数约占整个网络总参数量的80%以上),近期一些性能卓越的网络架构如ResNet和GoogLeNet等均采用了全局平均池化 (global average pooling)替代全连接层的方式,以整合所学的深层特征。最后仍采用softmax等损失函数作为网络的目标函数以指导学习过程。值得注意的是,在采用GAP替代全连接层的情况下,这类模型通常表现出较好的预测性能。

1 \times 1 卷积核
乍一看似乎没什么用处的一个 1 \times 1 卷积层实际上却大有深意!它能够通过聚合不同通道的特征信息生成新的特征向量 这种操作本质上等价于对各个通道间的输出进行线性组合
我们可以通过一个实例来简明扼要地阐述 1\times 1 卷积的概念。输入的是一个大小为 6\times6\times{ }^{}{ }^{}{ }^{}{ }^{}{ }^{*}{ }^{+} 的三维数组,在这一特定的操作中(称为该操作),其形式将变为 6\times6\times{ }^{*}{ }^{+} 的三维数组。具体而言,在这一操作中(称为该操作),其中该操作的形式是将单个元素乘以2的操作即可实现其效果;而这一操作的结果也是一个大小与原输入相同的三维数组

此情况下,并未体现1x1卷积的独特性;这是因为输入矩阵的通道数为1的缘故;因此该卷积层的通道数也保持为1。
我们可以通过实际案例来理解这种操作的本质。假设输入通道数为6×6×32时,在这种情况下应用单像素卷积核的形式即为1×1×32。这表明了这种卷积核在降维方面的核心作用。进一步地,在输出通道数量少于输入通道数量的情况下,则实现了降维效果。

注:1x1卷积一般只改变输出通道数(channels),而不改变输出的宽度和高度

一些思考
在实际应用中会碰到各种各样不同的数据集以及各类问题那么哪些数据更适合采用深度学习方法而哪些则不宜采用呢?
个人认为,在数据集中缺乏局部相关性的情况下,则不适于采用深度学习算法来进行建模与分析工作;反而是更适合采用传统的统计机器学习方法来进行这一任务。举例而言,在预测个人的健康状况时,默认情况下涉及的因素包括年龄、职业、收入水平以及家庭状况等多方面的内容;即使打乱这些因素的相关顺序也不会影响最终的预测结果。
当前深度学习的主要应用集中在图像、语音以及自然语言处理等领域的研究。它们的共同特性在于各部分之间存在局部相关性。在图像领域中,像素单元构成了完整的视觉信息;而在语言处理中,则通过词组构建有意义的文字表达。为了捕捉这种特性,卷积神经网络采用了以下三种核心机制:第一种是基于本地区域的空间聚合;第二种通过参数共享实现了计算效率的提升;第三种则依赖于空间下采样技术来增强特征提取能力。
- 通过局部连接机制,网络能够有效提取数据的局部特征。
- 通过权值共享策略的应用,在训练过程中显著降低了计算复杂度。每个Filter仅聚焦于特定特征,在整个图像或文本序列中进行滑动卷积。
- 池化操作通过降维技术实现了高层次特征的抽取。具体而言,在池化过程中将低层区域的特征信息进行聚合汇总,并在整体图像上完成高层次的表征。
参考资料
[1] Stanford cs224n lec11
[2] https://zhuanlan.zhihu.com/p/25928551
[3] https://zhuanlan.zhihu.com/p/33841176
