目录
1、卷积层
卷积层的目的:通过学习卷积核(也称为滤波器)的权重,对输入数据进行特征提取
具体来说,卷积层在输入数据上滑动卷积核,将卷积核与输入数据的相应位置进行按元素乘积并求和,得到一个输出值。通过对整个输入数据进行滑动,并在每个位置上进行卷积操作,可以生成一个输出特征图。每个输出特征图对应一个卷积核,从而可以提取不同的特征。
卷积层的主要作用有:
- 特征提取:通过卷积操作,卷积层可以自动学习边缘、纹理、形状等低层次的特征,从而实现对输入数据的抽象和表示。
- 参数共享:卷积层使用相同的卷积核对输入数据进行滑动计算,从而减少了需要训练的参数数量,提高了模型的效率和泛化能力。
- 空间平移不变性:卷积操作在输入数据的不同位置上提取相同的特征,使得模型对于输入数据的平移具有不变性,从而提高了模型的鲁棒性和泛化能力。
卷积层的计算过程:
图片来源Michael Yuan
- 输入矩阵格式:图像高度、图像宽度、图像通道数
- 输出矩阵格式:图像高度、图像宽度、图像通道数
- 权重矩阵(卷积核)格式:卷积核高度、卷积核宽度、输入通道数、输出通道数
输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系
- 卷积核的输入通道数(in depth)由输入矩阵的通道数所决定。
- 输出矩阵的通道数(out depth)由卷积核的输出通道数所决定。
- 输出矩阵的高度和宽度(height, width)这两个维度的尺寸由输入矩阵、卷积核、扫描方式所共同决定。
计算公式如下:
① 输入图像大小为W×W
② 卷积核的大小为F×F
③ 步长(stride)为S
④ 填充(padding)为P
【注:pytorch框架下,卷积层和池化层都是向下取整,tensorflow不了解】
卷积的步骤:
- 在图像的某个位置上覆盖卷积核;
- 将卷积核中的值与图像中的对应像素的值相乘;
- 把上面的乘积加起来,得到的和是输出图像中目标像素的值;
- 对图像的所有位置重复此操作。
卷积操作例图如下:
图片来源卷积
注:卷积核中的参数只有初始化,其数值随着训练中反向传播的进行不断更新,最终保存训练效果最好的参数
2、ReLU激活函数
(参考浅析激活函数之Relu函数 - 简书 (jianshu.com))
1)激活函数是什么?
- 激活函数并不是去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来,即负责将神经元的输入映射到输出端。
2)为什么需要激活函数?
- 激活函数是用来增加非线性因素的,因为只有线性因素的模型并不能够很好应对复杂的情况,其表达力不够。
- 如下图,不使用激活函数
- 如下图,使用激活函数
3)ReLU激活函数
表达式为:
- ReLU具有单侧抑制性,即在输入是负值的情况下,它会输出0,那么神经元就不会被激活。这意味着同一时间只有部分神经元会被激活,从而使得网络很稀疏,进而对计算来说是非常有效率的。
- Sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,所以这会造成梯度弥散,而ReLU函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。
3、池化层
池化层的作用:减少特征图的维度并且保留重要的特征信息。池化层一般在卷积层之后使用。
池化层的主要目的有以下几点:
- 降低特征图的空间维度:通过池化操作,可以将特征图的空间维度缩小,减少模型中需要训练的参数数量,从而降低计算复杂度。
- 提取主要特征:池化操作可以通过选择最大值(最大池化)或者平均值(平均池化)等方式,对特征进行聚合,提取出最重要的特征信息,去除冗余和不重要的信息。
- 增强模型的平移不变性:池化操作对输入特征图进行下采样,通过选择局部区域内的最大值或者平均值,使得模型对于输入图像的平移具有一定的不变性。这种不变性能够提高模型的鲁棒性和泛化能力。
- 控制过拟合:池化操作可以减少特征图的尺寸,从而减少模型的参数数量,降低过拟合的风险。
总而言之,池化层能够通过减小空间维度、提取主要特征、增强平移不变性和控制过拟合等方式,对输入特征图进行处理和优化,以提高模型的性能和效果。
(最大池化)图片来源 量子位
4、上采样和下采样
1)放大图像(或称为上采样(upsampling)或图像插值(interpolating))
主要目的:放大原图像,从而可以显示在更高分辨率的显示设备上。
原理:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。
2)缩小图像(或称为下采样(subsampled)或降采样(downsampled))
主要目的有两个:
- 使得图像符合显示区域的大小;
- 生成对应图像的缩略图。
原理:对于一幅图像I尺寸为M*N,对其进行s倍下采样,即得到(M/s)*(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值。
对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。
5、全连接层
全连接层(Fully Connected Layer),也称为密集连接层,是神经网络中最基本的一种层。它通常位于网络的最后一部分,用于将前一层(通常是卷积层或池化层)的输出映射到最终的输出类别或预测结果。
全连接层的每个神经元都与前一层的所有神经元相连,因此得名全连接。每个连接都有一个权重,用于调整输入的重要性,并且每个神经元还有一个偏置项。
在训练过程中,全连接层根据输入数据和权重进行线性变换,并通过激活函数对结果进行非线性映射。常用的激活函数包括ReLU、Sigmoid和Tanh等。
全连接层的输出可以是一个向量,表示类别的概率分布,也可以是一个实数值,表示回归问题中的预测结果。
总之,全连接层是神经网络中非常重要的一种层,它负责将前一层的特征提取结果映射到最终的输出或预测结果。
图片来源全连接层
全连接层与卷积层的区别:
- 全连接层需要把输入拉成一个列向量,例如:输入的feature map为3×2×2,需拉成12×1的列向量,再乘一个权重矩阵,得到输出。【权重矩阵是固定的,则输入图像尺寸也必须固定,才能匹配】
- 卷积层不需要固定,因为它只是对局部区域进行窗口滑动