深度学习轻松学(三)

指路: 深度学习轻松学(一).
指路: 深度学习轻松学(二).
此系列的参考书籍为:《深度学习轻松学–核心算法与视觉实践》冯超·著

CNN的基石(一):全连接层

全连接层由两个子部分组成:线性运算部分非线性部分

线性部分

运算公式:在这里插入图片描述
作用: 线性部分通过数值计算的方式从不同角度对输入数据进行分析汇总,的处在这些角度下对输入数据的总结和判断。即完成从图像数据到特征转换的过程

非线性部分

线性部分汇总之后的结果被传递到非线性部分。
非线性部分的作用
一.对数据的归一化,这样后面的网络层如果要基于前面的网络进行计算,网络内部的数值的范围就相对可控了,不然会造成数值爆炸溢出难以确定优化时的步长两个问题。二.打破之前的线性映射关系 ,如果只有线性部分没有非线性部分,那么叠加多层神经网络是没有意义的。·

经典的非线性函数:Sigmod函数Tanh函数
Sigmod函数: 将输入数据映射到 (0,1) 之间。Sigmod函数
Tanh函数: 将输入数据映射到 (-1,1) 之间。
Tanh函数

CNN的基石(二):卷积层

卷积

卷积运算由图像数据卷积核两部分数据合作完成,图像数据中的每一个和卷积核大小相等的区域都会和卷积核完成元素级(element-wise)的乘法,并将乘法得到的结果相加为一个数字,每个区域都会得到这样的数字,所有数字根据相对位置拼合起来就是卷积计算最后的结果。
卷积
卷积层中两个常用的参数:stridepadding。stride表示的是步进量,就是当计算完一个像素后,下一个计算的像素通常是这个像素右边的一个像素,这个stride=1,如果stride=2,那么则下一个计算的像素是右边第二个像素。stride实际上起到了采样的作用。padding是一种维持图像维度的方法,它的作用是填边,目的是使每一个输入数据中的像素都可以参与到卷积计算中,图像的维度就不会缩小。
输入和输出维度的关系公式
输入和输出维度的关系公式
输入和输出维度的关系公式
需要注意:
(1)原始图像通过与卷积核的数学运算,可以提取出图像的某些指定特征(features)。
(2)不同卷积核,提取的特征也是不一样的。
(3)提取的特征一样,不同的卷积核,效果也不一样。

卷积层的优点:参数数量相对全连接层较少;卷积运算利用了图像的局部相关性
卷积的另一种解释: 卷积定理提到,两个矩阵的卷积的结果,等于两个矩阵在经过傅里叶变换(把数据从空间域的展示刑事转变到频率域的形式,有的信息称为低频信息,有的称为高频信息)后,进行元素级别的乘法,再对结果进行反向傅里叶处理。从这个角度,卷积层可以通过分离高频和低频信息来使他们能够分别被处理。
Sobel滤波核和Gabor滤波核倾向于保留高频信息而弱化低频信息,均值滤波核弱化高频信息而保留低频信息。

卷积层的反向传播

实力派解法: 三张图(前向计算图:标有卷积核id的输入小图组成的输入大图;下层loss:标有卷积核id的输出小图组成的输入大图;本层w导数:标有输入id的输出小图组成的卷积核大图)
偶像派解法: 将卷积运算视为矩阵和向量的运算,也就是全连接的运算形式,这样更好解。

卷积层的非线性部分

梯度消失问题: 梯度消失是深层模型中特有的问题,sigmod函数和tanh函数的求导公式分别如下:
在这里插入图片描述
在这里插入图片描述
从上面可以看出,sigmod函数的导数最大只有0.25,因此对于深层网络来说,下层的网络得到的梯度会明显减小,最终导致梯度消失。
relu(rectify linear unit): 可以解决梯度消失的问题。代码如下

def relu(x):
	return x if x>0 else 0

relu的不足: 接受域过于宽广,没有对输入数据的上界进行限制,这样会使模型在接受较大数据的时候出现数据不稳定,为了解决这个问题提出了ReLU6经验函数在这里插入图片描述
还有一些工作在ReLU前面加Batch Normalization这样的归一化层来弥补它的不足,总而言之,数值范围是需要限定的。ReLU的另一个问题是它的负数方向,对负数完全抑制使得它像sigmod一样促使很多神经元参数无法得到有效的更新,因为一旦输入数据是负数那么会置零,同时输入数据的梯度也将是0,如果这个现象得不到改变那么这个数据就好像死掉了一样,这就是“dying relu problem”的由来,为了解决这个问题,一些列改进函数Leaky relu、prelu等出现。

池化层和反池化层

池化层

池化层有 最大池化(maxpooling)均值池化(averagepooling),最大池化层就是将卷积核的每个区域中的最大值提取出来存放,均值池化层就是将卷积核的每个区域中的所有值加起来取得均值存放。因此在池化操作的时候需要定义卷积核大小和步长。
池化层的作用:
1、增大感受野。所谓感受野,即一个像素对应回原图的区域大小,假如没有pooling,一个33,步长为1的卷积,那么输出的一个像素的感受野就是33的区域,再加一个stride=1的33卷积,则感受野为55。假如我们在每一个卷积中间加上3*3的pooling呢?很明显感受野迅速增大,这就是pooling的一大用处。感受野的增加对于模型的能力的提升是必要的,正所谓“一叶障目则不见泰山也”。
2、平移不变性。我们希望目标的些许位置的移动,能得到相同的结果。因为pooling不断地抽象了区域的特征而不关心位置,所以pooling一定程度上增加了平移不变性。
3、降低优化难度和参数。我们可以用步长大于1的卷积来替代池化,但是池化每个特征通道单独做降采样,与基于卷积的降采样相比,不需要参数,更容易优化。全局池化更是可以大大降低模型的参数量和优化工作量。

反池化层

反池化是池化的逆操作,但是无法通过池化的结果还原出全部的原始数据。因为池化的过程就只保留了主要信息,舍去部分信息。如果想从池化后的这些主要信息恢复出全部信息,则存在信息缺失,这时只能通过补位来实现最大程度的信息完整。
反平均池化:首先还原成原来的大小,然后将池化结果中的每个值都填入其对应原始数据区域中相应位置.
反最大池化:要求在池化过程中记录最大激活值的坐标位置,然后在反池化时,只把池化过程中最大激活值所在位置坐标值激活,
其他的值设置为0.当然,这个过程只是一种近似。因为在池化过程中,除了最大值的位置,其他的值也是不为0的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值