深度学习之卷积神经网络(CNN)
卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图像识别领域的应用获得了巨大的成功。
1 卷积神经网络的组成层
以图像分类任务为例,在表5.1所示卷积神经网络中,一般包含5种类型的网络层次结构:
表1 卷积神经网络的组成
CNN层次结构 | 输出尺寸 | 作用 |
---|---|---|
输入层 | W 1 × H 1 × 3 W_1\times H_1\times 3 W1×H1×3 | 卷积网络的原始输入,可以是原始或预处理后的像素矩阵 |
卷积层 | W 1 × H 1 × K W_1\times H_1\times K W1×H1×K | 参数共享、局部连接,利用平移不变性从全局特征图提取局部特征 |
激活层 | W 1 × H 1 × K W_1\times H_1\times K W1×H1×K | 将卷积层的输出结果进行非线性映射 |
池化层 | W 2 × H 2 × K W_2\times H_2\times K W2×H2×K | 进一步筛选特征,可以有效减少后续网络层次所需的参数量 |
全连接层 | ( W 2 ⋅ H 2 ⋅ K ) × C (W_2 \cdot H_2 \cdot K)\times C (W2⋅H2⋅K)×C | 将多维特征展平为2维特征,通常低维度特征对应任务的学习目标(类别或回归值) |
W 1 × H 1 × 3 W_1\times H_1\times 3 W1×H1×3对应原始图像或经过预处理的像素值矩阵,3对应RGB图像的通道; K K K表示卷积层中卷积核(滤波器)的个数; W 2 × H 2 W_2\times H_2 W2×H2 为池化后特征图的尺度,在全局池化中尺度对应 1 × 1 1\times 1 1×1; ( W 2 ⋅ H 2 ⋅ K ) (W_2 \cdot H_2 \cdot K) (W2⋅H2⋅K)是将多维特征压缩到1维之后的大小, C C C对应的则是图像类别个数。
1.1 输入层
输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅利叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为 H H H和 W W W组成的3维像素值矩阵 H × W × 3 H\times W \times 3 H×W×3,卷积网络会将输入层的数据传递到一系列卷积、池化等操作进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。根据计算能力、存储大小和模型结构的不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为 N N N,则输入层的输出数据为 N × H × W × 3 N\times H\times W\times 3 N×H×W×3。
1.2 卷积层
卷积层(Convolution Layer)通常用作对输入层输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。图5.1表示卷积操作过程中的不同填充策略,上半部分采用零填充,下半部分采用有效卷积(舍弃不能完整运算的边缘部分)。
图5.1 卷积操作示意图
1.3 激活层
激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射。激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)ReLU的函数形式如公式(5-1)所示,能够限制小于0的值为0,同时大于等于0的值保持不变。
f
(
x
)
=
{
0
if
x
<
0
x
if
x
≥
0
(5-1)
f(x)=\begin{cases} 0 &\text{if } x<0 \\ x &\text{if } x\ge 0 \end{cases} \tag{5-1}
f(x)={0xif x<0if x≥0(5-1)
1.4 池化层
池化层又称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。
1.5 全连接层
全连接层(Full Connected Layer)负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低位常常对应任务目标。