Task 05 打卡
卷积神经网络
二维卷积层
?维卷积层将输?和卷积核做互相关运算,并加上?个标量偏差来得到输出。卷积层的模型参数包括了卷积核和标量偏差。在训练模型的时候,通常我们先对卷积核随机初始化,然后不断迭代卷积核和偏差。
二维互相关运算(cross-correlation)
互相关运算和卷积运算
为了得到卷积运算的输出,我们只需将核数组左右翻转并上下翻转,再与输?数组做互相关运算。可?,卷积运算和互相关运算虽然类似,但如果它们使?相同的核数组,对于同?个输?,输出往往并不相同。
特征图和感受野
?维卷积层输出的?维数组可以看作是输?在空间维度(宽和?)上某?级的表征,也叫特征图(feature map)。影响元素\(x\)的前向计算的所有可能输?区域(可能?于输?的实际尺?)叫做\(x\)的感受野(receptive field)
填充和步幅
输入\(n_h \times n_w\), 卷积核窗口\(k_h \times k_w\), 输出形状为\((n_h - k_h +1) \times (n_w -k_w +1)\)
填充(padding)
填充(padding)是指在输??和宽的两侧填充元素(通常是0元素)。
这时输出行状变为:\((n_h - k_h +p_h +1) \times (n_w -k_w +p_w+1)\)
在很多情况下,我们会设置\(p_h =k_h-1\)和\(p_w=k_w-1\)来使输?和输出具有相同的?和宽。这样会?
便在构造?络时推测每个层的输出形状
步幅(stride)
我们将每次滑动的?数和列数称为步幅(stride)。
多输入通道
当输?数据含多个通道时,我们需要构造?个输?通道数与输?数据的通道数相同的卷积核,从而能够与含多通道的输?数据做互相关运算。 \(c_i \times n_h \times n_w\), \(c_i\)为通道数。
计算时,每个通道上有相应的卷积核,进行互相关运算后相加
多输出通道
为\(c_o\)个输出通道都创建类似于多输入通道的卷积核组,卷积核变为\(c_o \times c_i \times k_h \times k_w\)
==\(1\times1\)==卷积核不改变输出大小,但可用在通道数量的改变上
池化
池化(pooling)层,能够缓解卷积层对位置的过度敏感性。池化也是在固定形状的窗口中对所有元素进行计算输出,但池化层直接计算池化窗口内元素的最?值或者平均值。
卷积层的padding 和stride 都可应用于池化层
但在多通道情况下,池化层会针对每一个通道进行池化,所以池化不会改变通道数量。
卷积与多层感知机相比的优势:???,卷积层保留输?形状,使图像的像素在?和宽两个?向上的相关性均可能被有效识别;另???,卷积层通过滑动窗口将同?卷积核与不同位置的输?重复计算,从而避免参数尺?过?
LeNet模型
LeNet展示了通过梯度下降训练卷积神经.络可以达到.写数字识别在当时最先进的结果。
C1层:该层是一个卷积层。使用6个大小为55的卷积核对输入层进行卷积运算,特征图尺寸为32-5+1=28,因此产生6个大小为2828的特征图。这么做够防止原图像输入的信息掉到卷积核边界之外。
S2层:该层是一个池化层(pooling,也称为下采样层)。这里采用max_pool(最大池化),池化的size定为2*2,经池化后得到6个14*14的特征图,作为下一层神经元的输入。
C3层:该层仍为一个卷积层,我们选用大小为55的16种不同的卷积核。这里需要注意:C3中的每个特征图,都是S2中的所有6个或其中几个特征图进行加权组合得到的。输出为16个1010的特征图。
S4层:该层仍为一个池化层,size为22,仍采用max_pool。最后输出16个55的特征图,神经元个数也减少至1655=400。
C5层:该层我们继续用55的卷积核对S4层的输出进行卷积,卷积核数量增加至120。这样C5层的输出图片大小为5-5+1=1。最终输出120个11的特征图。这里实际上是与S4全连接了,但仍将其标为卷积层,原因是如果LeNet-5的输入图片尺寸变大,其他保持不变,那该层特征图的维数也会大于1*1。
F6层:该层与C5层全连接,激活函数sigmoid,输出84张特征图。为什么是84?下面有论文的解释
输出层:该层与F6层全连接,输出长度为10的张量,代表所抽取的特征属于哪个类别。(例如[0,0,0,1,0,0,0,0,0,0]的张量,1在index=3的位置,故该张量代表的图片属于第三类)
此处为论文对F6层和输出层的解释:
输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输入模式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1。虽然这些参数可以以-1和1等概率的方式任选,或者构成一个纠错码,但是被设计成一个相应字符类的7*12大小(即84)的格式化图片。这种表示对识别单独的数字不是很有用,但是对识别可打印ASCII集中的字符串很有用。
使用这种分布编码而非更常用的“1 of N”编码用于产生输出的另一个原因是,当类别比较大的时候,非分布编码的效果比较差。原因是大多数时间非分布编码的输出必须为0。这使得用sigmoid单元很难实现。另一个原因是分类器不仅用于识别字母,也用于拒绝非字母。使用分布编码的RBF更适合该目标。因为与sigmoid不同,他们在输入空间的较好限制的区域内兴奋,而非典型模式更容易落到外边。
RBF参数向量起着F6层目标向量的角色。需要指出这些向量的成分是+1或-1,这正好在F6 sigmoid的范围内,因此可以防止sigmoid函数饱和。实际上,+1和-1是sigmoid函数的最大弯曲的点处。这使得F6单元运行在最大非线性范围内。必须避免sigmoid函数的饱和,因为这将会导致损失函数较慢的收敛和病态问题。
以上搬运自知乎
AlexNet
==第?==,与相对较小的LeNet相?,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。下?我们来详细描述这些层的设计。AlexNet第?层中的卷积窗口形状是11 \(\times\) 11。因为ImageNet中绝?多数图像的?和宽均?MNIST图像的?和宽?10倍以上,ImageNet图像的物体占?更多的像素,所以需要更?的卷积窗口来捕获物体。第?层中的卷积窗口形状减小到5$\times\(5,之后全采?3\)\times\(3。此外,第?、第?和第五个卷积层之后都使?了窗口形状为3\)\times$3、步幅为2的最?池化层。而且,AlexNet使?的卷积通道数也?于LeNet中的卷积通道数数?倍。紧接着最后?个卷积层的是两个输出个数为4096的全连接层。
==第?==,AlexNet将sigmoid激活函数改成了更加简单的ReLU激活函数。???,ReLU激活函数的计算更简单,例如它并没有sigmoid激活函数中的求幂运算。另???,ReLU激活函数在不同的参数初始化?法下使模型更容易训练。这是由于当sigmoid激活函数输出极接近0或1时,这些区域的梯度?乎为0,从而造成反向传播?法继续更新部分模型参数;而ReLU激活函数在正区间的梯度恒为1。因此,若模型参数初始化不当,sigmoid函数可能在正区间得到?乎为0的梯度,从而令模型?法得到有效训练。
==第三==,AlexNet通过丢弃法来控制全连接层的模型复杂度。而LeNet并没有使?丢弃法。
==第四==,AlexNet引?了?量的图像增?,如翻转、裁剪和颜?变化,从而进?步扩?数据集来缓解过拟合。
VGG
VGG块连续使?数个相同的填充为1、窗口形状为3 \(\times\) 3的卷积层后接上?个步幅为2、窗口形状为2 $\times$2的最?池化层。卷积层保持输?的?和宽不变,而池化层则对其减半。
VGG通过串联多个VGG块进行实现
NiN
NiN使?1$\times\(1卷积层来替代全连接层,从而使空间信息能够?然传递到后?的层中去。NiN块由一个可以一定义超参数的卷积层和两个固定参数的1\)\times$1卷积层串联构成。
下图比较了AlexNet和VGG的?络结构局部,NiN的?络结构局部
NiN去掉了AlexNet最后的3个全连接层,取而代之地,NiN使?了输出通道数等于标签类别数的NiN块,然后使?全局平均池化层对每个通道中所有元素求平均并直接?于分类。
GoogLeNet
一个Inceptionn模块,会对每一个通道进行填充以得到相同大小的输出。GoogLeNet由若干个Inception组成的模块串联构成。