卷积神经网络
前言:
过滤器来提取特征,如垂直边缘,水平边缘和其它特征。
一、padding
不使用padding进行卷积将有两个缺点:
1、图像在每次识别边缘或其他特征时都缩小(输出缩小)。
2、角落边缘的像素只被一个输 出所触碰或者使用,而中间的像素点就会有许多 f×f 的区域与之重叠,所以那些在角落或者边缘区域的像 素点在输出中采用较少,丢掉了图像边缘位置的许多信息(图像边缘的大部分信息都丢失了)。
解决方法:在卷积操作之前填充这幅图像,可以用 0 去填充。
两种Padding(Valid 卷积和 Same 卷积):
1、Valid 卷积意味着不填充,输出维度为(𝑛 − 𝑓 + 1) × (𝑛 − 𝑓 + 1)
2、Same 卷积的输出大小和输入大小是一样的,输出维度为(𝑛 + 2𝑝 − 𝑓 + 1) × (𝑛 + 2𝑝 − 𝑓 + 1),式中𝑝 = (𝑓 − 1)/2,且𝑓是一个奇数。
(为什么f一般不是奇数?
1、若f为偶数,那么会出现左右padding不对称的现象。
2、奇数维过滤器,就会有一个中心点,便于指出过滤器的位置。
)
二、卷积步长(strid)
步幅为s
输出维度为:((𝑛+2𝑝−𝑓)/ 𝑠 + 1 ), (𝑛+2𝑝−𝑓)/ 𝑠 + 1)
若商不是一个整数,则向下取整⌊ ⌋,以免(𝑛+2𝑝−𝑓)/ 𝑠 不是整数。
三、三维卷积
图像的通道数必须和过滤器的通道数匹配
输出维度为(高度,宽度,过滤器数量)
输出的通道数(第三维过滤器数量)会等于你要检测的特征数。
四、单层卷积网络
对形成的一个卷积神经网络层,增加偏差,然后应用非线性函数,输出过滤器数量(nf)个矩阵,把这nf矩阵堆叠起来,最终得到一个 高度×宽度×nf 的矩阵
参数个数:
1、假设你有 10 个过滤器,一层是 3×3×3,这一层有多少个参数呢?
每一层都是一个 3×3×3 的 矩阵,因此每个过滤器有 27 个参数,然后加上一个偏差,用参数𝑏表示,现在参数增加到 28 个。而现在我们有 10 个,加在一起 是 28×10,也就是 280 个参数。
人们在计算神经网络有多少层时,通常只统计具有权重和参数的层。因为池化层没有权重和参数,只有一些超参数。
2、全连接层FC参数计算:
例:假设你的输入是一个300×300的彩色(RGB)图像,而你没有使用卷积神经网络。 如果第一个隐藏层有100个神经元,每个神经元与输入层进行全连接,那么这个隐藏层有多少个参数(包括偏置参数)?
先计算W[1]=[l[1],X]=[100,300∗300∗3]=100∗300∗300∗3=27,000,000。然后计算偏置b,因为第一隐藏层有100个节点,每个节点有1个偏置参数,所以b=100*b=100,加起来就是27,000,000+100=27,000,100。
总结:池化层没有参数,卷积层的参数相对较少,许多参数都存在于神经网络的全连接层。
3、卷积网络映射这么少参数有两个原因(参数共享和稀疏连接):
参数共享:对于6x6的单元来说,如果对其使用3x3的特征检测器进行特征提取,如果该特征检测器适用于图片的某个区域,则该特征检测器也适用图片的其他区域。
稀疏连接:对于6x6的单元来说,如果对其使用3x3的特征检测器进行特征提取,输出特征的某个元素只与输入的对应3x3的单元与3x3的特征检测器有关,而与其他(6x6-3x3的单元无关),相比于全连接:其输出特征图中的所有值和输入特征图中的所有值都进行了一个连接,所以说,卷积神经网络中卷积层的卷积运算是一种稀疏连接方式。
总结:卷积层通过参数共享和稀疏连接两种方式来保证单层卷积中的训练参数少,神经网络可以通过这两种机制减少参数,以便我们用更小的训练集来训练它,从而预防过度拟合。