一、全连接网络
全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题。如,输入为10001000图像,隐含层有1M个节点,则输入到隐含层间有
数量级参数。
解决难收敛、算的慢问题:减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络。
解决思路:信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。
二、基本概念
1. 互相关运算
在卷积层中,输入张量和核张量通过互相关运算产生输出张量。在下图中,输入使高度为3、宽度为3的二维张量,卷积核的高度和宽度都是2,二卷积核窗口的形状由内核的高度和宽度决定。
在二维互相关运算中,卷积窗口从输入张量的左上角开始,从左到右、从上到下华东。当卷积窗口滑动到新一个位置时,包含在该窗口中的部分张量与卷积核张量进行按元素相乘,得到的张量再求和得到一个单一的标量值,由此得出这一位置的输出张量值。
2. 填充
应用多层卷积时,可能丢失边缘像素,解决这个问题的简单方法为填充(padding):在输入图像的边界填充元素,以增加矩阵的大小,通常以0或复制边界像素来进行填充。
3. 步幅
有时为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素,将每次滑动元素的数量称为步幅(stride)。
4. 多通道卷积
当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积和,以便与输入数据进行互相关运算,假设输入的通道数为,那么卷积核的输入通道数也需要为
。如果卷积核的窗口形状是
,那么当
时,可以把卷积核看作形状为
的二维张量。
然而当时,我们卷积核的每个输入通道将包含形状为
的张量。将这些张量
连结在一起可得形状为
的卷积核。由于输入和卷积核都有
个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将
的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。
三、卷积神经网络(LeNet-5)
总体来看,LeNet-5由两个部分组成:(1)卷积编码器:由两个卷积层组成;(2)全连接层密集块:由三个全连接层组成。如下图所示。
每个卷积块中的基本单元是一个卷积层、一个sigmoid激活函数和平均汇聚层。每个卷积层使用55卷积核和一个sigmoid激活函数。这些层将输入映射到多个二维特征输出,通常同时增加通道的数量。第一卷积层有6个输出通道,而第二个卷积层有16个输出通道。每个
池操作(步幅2)通过空间下采样将维数减少4倍。卷积的输出形状由批量大小、通道数、高度、宽度决定。
为了将卷积块的输出传递给稠密块,必须在小批量中展平每个样本。换言之,我们将这个四维输入转换成全连接层所期望的二维输入。这里的二维表示的第一个维度索引小批量中的样本,第二个维度给出每个样本的平面向量表示。LeNet的稠密块有三个全连接层,分别有120、84和10个输出,输出层的10维对应于最后输出结果的数量。
四、深度卷积神经网络(ALexNet)
ALexNet和LeNet的设计理念非常相似,但也存在显著差异:
(1)ALexNet比相对较小的LeNet5要深得多。ALexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。
(2)ALex使用ReLU而不是sigmoid作为其激活函数。
在ALexNet的第一层,卷积窗口的形状是。第二层中的卷积窗口形状被缩减为
,然后是
。此外,在第一层、第二层和第五层卷积层之后,加入窗口形状为
、步幅为2的最大汇聚层。而且,ALexNet的卷积通道数目是LeNet的10倍。在最后一个卷积层后有两个全连接层,分别有4096个输出。这两个巨大的全连接层拥有将近1GB的模型参数。
双GPU策略:ALexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信。
Dropout:在每个全连接层后面使用一个Dropout层,以概率p随机关闭激活函数。