2022.10.23 第5次周报

摘要

由于上周卷积神经网络学习的不够深入,因此这周学习卷积神经网络,通过带着老师提出的问题,我不断查阅资料,了解了卷积神经网络为什么叫“卷积”,了解了其每一层的作用以及对激活函数的选择。但是目前我对数学推导还没有掌握的那么深入,在接下来的时间里,我会继续加强学习,在大好基础的同时不断提升自己的实践能力。

卷积神经网络

卷积神经网络主要由这几类层构成:输入层、卷积层,ReLU层、池化(Pooling)层和全连接层(全连接层和常规神经网络中的一样)。将这些层叠加起来,就构建出了一个完整的卷积神经网络。在实际应用中往往将卷积层与ReLU层共同称之为卷积层,所以卷积层经过卷积操作也是要经过激活函数的。具体说来,卷积层和全连接层(CONV/FC)对输入执行变换操作的时候,不仅会用到激活函数,还会用到很多参数,即神经元的权值w和偏差b;而ReLU层和池化层则是进行一个固定不变的函数操作。卷积层和全连接层中的参数会随着梯度下降被训练,这样卷积神经网络计算出的分类评分就能和训练集中的每个图像的标签吻合了。
知道了神经网络的基本概念,那么我们就要了解,为什么要卷积,什么是卷积?

为什么叫“卷积”?

首先,我们要明白什么是卷积:所谓两个函数的卷积,本质上就是先将一个函数翻转(如下图1、2所示),也就是卷积的“卷”的由来,然后进行滑动叠加(如图3、4所示),在这个位置对两个函数的对应点相乘,这个过程是卷积的“积”的过程。

              叠加:在连续情况下,叠加指的是对两个函数的乘积求积分,在离散情况下就是加权求和。

连续形式:

离散形式:

从上面两个公式可看出,我们令 x=τ,y=n-τ,那么 x+y=n
那么,为什么要用卷积神经网络呢?

全连接的形式:

图中s是由矩阵乘法产生,响应层的每一个神经元,都会受到输入层每一个神经元的影响,是一种稠密的连接方式。
卷积操作:

可以看出,响应层中的每一个神经元只受到输入层的局部元素的影响。以s2为例,它仅仅受到x1、x2、x3的影响,是一种稀疏的连接方式。


从上面两幅图可看出,与“全连接”相比,“卷积操作”更加简单。在全连接中,计算每层的输出时,权重矩阵中的元素只作用于某一个输入元素一次;而在卷积神经网络中,卷积核中的每一个元素将作用于每一个局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每一个位置的每一个参数来进行优化学习,从而大大降低了模型的存储需求。

了解了卷积的基本概念,我们就需要考虑卷积神经网络各层之间的关系。

卷积神经网络各种层的作用

输入层(Input Layer)

数据输入层主要是对原始数据进行初步处理,使卷积神经网络能有更好的效果。处理方法有:

  • 灰度化
    图片一般是通过一个三维矩阵存储的,矩阵的大小为(width,height,3),width是图像的宽度,height是图像的高度,3表示红(Red)、绿(Green)、蓝(Blue)三颜色通道。我们可以认为任何图片是通过不同程度的红色、绿色、蓝色叠加形成。那什么是灰度化呢?由于RGB不能反映图像的形状特征,只是从光学的原理上进行颜色的调配,而我们一般是需要提取图像的形状特征,所以可以将三通道的图片变成一通道,这个过程就是灰度化。

  • 常用的灰度化方法
    1、分量法:将图像R、G、B三分量中的一种分量作为灰度图像的灰度值。
    2、最大值大:将图像R、G、B三分量中最大的分量作为灰度图像的灰度值
    3、加权平均法:将图像R、G、B三分量以不同的权重进行加权平均。人眼对绿色敏感最高,对蓝色敏感最低,故采用心理学灰度公式:Gray = 0.114B + 0.587G + 0.299R

  • 归一化
    在神经网络中经常会使用sigmoid函数当做激活函数,sigmoid函数的函数值在[0, 1]之间,当输入{20,30,40,50,60}等远大于1的数据时,经过sigmoid函数的值将会非常的接近甚至是相等,这样就会无法起到应有的训练效果,将数据归一化就可以较好的解决这个问题。而且归一化可以使神经网络更快的收敛。

  • 常用的归一化方法
    1、min-max标准化: 也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

    其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    2、Z-score标准化方法
    这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

卷积层(Convolutional Layer)

卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
我们可以把卷积核理解成一个过滤器,原图像经过卷积核的过滤后就可以得到这个图像的特征图谱,使用不同的卷积核就可以得到图像的不同特征。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值乘卷积核 、内相对应点的权重,然后求和,再加上偏置后,最后得到输出图片中的一个像素值。
卷积层计算方法(F表示每一张特征图,W表示卷积核):

如下图,左侧为卷积核,右侧为卷积核提取到的特征:

激活层(Activation Layer)

自然中很多的关系都是非线性的,因此,需要给卷积层输出的线性结果通过一个激活函数加一个非线性的关系。激活函数是参考了生物上神经元的机制,ReLU当输入小于0时,输出为零,即失效;大于零输出则为本身。
常用的非线性激活函数有sigmoid、tanh、relu等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。
sigmoid的函数表达式如下:

其中z是一个线性组合,比如z可以等于:b + w1 * x1 + w2 * x2。通过代入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1。

因此,sigmoid函数g(z)的图形表示如下( 横轴表示定义域z,纵轴表示值域g(z) ):

也就是说,sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。

压缩至0到1有何用处呢? 用处是这样一来便可以把激活函数看作一种“分类的概率”,比如激活函数的输出为0.9的话便可以解释为90%的概率为正样本。
ReLU激励层
实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。怎么办呢?可以尝试另外一个激活函数:ReLU,其图形表示如下:

ReLU的优点是收敛快,求梯度简单。ReLU 实现非常简单,没有指数运算等耗费计算资源的操作,ReLU 不会出现梯度消失的问题,对于梯度下降的收敛有加速作用。

Leaky Relu
Relu 有一个问题就是所有负值输入后都立即变为零,这降低了模型根据数据进行适当拟合或训练的能力。这意味着任何给 ReLU 激活函数的负输入都会立即把值变成零。而且当 Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,就会产生所谓的稀疏性。
Leaky Relu 是 Relu 的改进版本,当输入值是负值时,函数值不等于 0,给了一个很小的负数梯度值,α通常为 0.1。这个函数通常比 Relu 激活函数效果要好,但是效果不是很稳定,所以在实际中 Leaky ReLu 使用的并不多。 其函数图如下:

小结: 对于多层神经网络,用于隐藏层的激活函数通常为ReLu及其变体,这也是最常用的激活函数。
对于二分类网络,使用 sigmoid 作为其输出层的激活函数;对于多分类网络,使用 softmax 作为其输出层的激活函数。

池化层(Pooling Layer)

池化,即取区域平均或最大(如下图所示),池化层夹在连续的卷积层中间,作用为1.使特征图变小,简化网络计算复杂度,减少下一层的参数和计算量,防止过拟合;2.进行特征压缩,提取特征,保留主要的特征;保持某种不变性,包括平移和尺度,尺度不变性也就是增大了感受野。。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像

上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。 **那么卷积池化卷积池化的叠加到底会有什么效果?** 通过堆叠卷积层+池化层可以达到从底层特征到一些中层到一些高层概念的一些抽取。 ### 全连接层(Pooling Layer) 经过前面若干次卷积+激励+池化后,终于来到了输出层,模型会将学到的一个高质量的特征图片全连接层。其实在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。因此,可以引入dropout操作,来随机删除神经网络中的部分神经元,来解决此问题。还可以进行局部归一化(LRN)、数据增强等操作,来增加鲁棒性。

问题分析

1、flattening宽度多少合适?

张量扁平化(CNN的Flatten操作)是卷积神经网络中的一个常见操作。这是因为在全连接层接受输入之前,传递给全连接层的卷积层输出必须被扁平化。在CNN输入张量形状的文章中,我们了解到卷积神经网络的张量输入通常有4个轴,一个用于批处理大小,一个用于颜色通道,还有一个用于高度和宽度【即:批量大小、通道、高度、宽度】,要拉平张量,我们至少需要两个轴。这样一来,我们就可以从尚未平坦的东西开始。
2、全连接层能否使用dropout?
dropout 能够避免过拟合,我们往往会在全连接层这类参数比较多的层中使用dropout;在训练包含dropout层的神经网络中,每个批次的训练数据都是随机选择,实质是训练了多个子神经网络,因为在不同的子网络中随机忽略的权重的位置不同,最后在测试的过程中,将这些小的子网络组合起来,类似一种投票的机制来作预测,有点类似于集成学习的感觉。

总结

本周继续上周的任务,学习卷积神经网络,解决了一些之前不理解的问题,相比上周,明显有了一定的进步,对卷积神经网络有了更加深入的了解,但是还远远不够,并且由于本周事情比较多,精度论文没有完成,下周会合理安排自己的时间,在完成任务的同时保证质量的不断提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值