卷积网络和传统网络的区别
左边是传统网络,右边是卷积网络,可以看到传统网络只是提取了特征,而卷积网络是三维的处理方式。
卷积做了一件什么事
最左边的就好比一个图片,一个图片各个部分的特征不一样,将其划分成若干,然后对每一块进行特征提取。
就相当于一个5x5的图片,划分成9个特征区域,3x3个一组,根据输入的x的特征,还是找最好的权重参数矩阵,使得这个特征定义完之后效果最好。
右边的可以叫做特征图,在特征图中,每个灰色部分都是当前得到的一个结果,每个卷积都得到一个小区域,蓝色的图的灰色部分,
每个区域得到的特征是不一样的,然后后续计算得到特征值是多少。
卷积特征值计算方法
看这个图,输入值是一个7x7x3的,对应的每一个矩阵都是7x7的,有三个通道,三个分别为RGB三层。第二个是特征提取,
而且他们的第三个维度要相同,两个都得是3,每3x3个区域进行一个区域的选择,右边的3x3是一个卷积核 如果是4x4x3的,左右边都得是4x4的,多大的特征对应于一个特征值。
每个像素点的值都是不一样的,所以提取的每个特征也不一样,需要计算,就是将每个对应的值相乘再相加,还有个偏置项b就是默认值1 ,这样一个区域最后对应的特征值是3,
3就是最后的第一个输出值。
得到特征图表示
如果特征提取有多个的话最后的特征图也有多个。多个卷积(f1 ...f100)核就对应多个特征图
再回到上面特征计算的图中,
这个卷积核的规格和第一个是相同的,就是说,对同一个通道层进行卷积的时候,维度是一样的。可以看到,第二个的结果和第一个不是相同的,
当计算完第一个区域之后就可以计算第二个区域就跟最开始说的那个蓝色的图的区域是一样的,
下一次也是一样的,移动单元格的大小可以自己设置。当每个都计算完之后,最后的结果也就出来了。
步长与卷积核大小对结果的影响
进行多次卷积才能得出想要的。
步长:
步长为1的卷积:
步长为2的卷积:
可以看到,步长为1的卷积他的特征值比较丰富,但是效率很低,一般处理图像之类的任务。
步长为2的卷积比较潦草,一般处理文本类的信息。
而卷积核一般就设为3x3的
边缘填充方法
还是根据上图
可以看到有个+pad 1 这个是填充,我们可以看到,中间是蓝色的而边界都是灰的都是0,这是为什么呢
可以看到,当步长为2时,我标黄的区域进行运算了两次,他的贡献就大,而其他边界的区域就贡献不大,如何 避免这个问题呢,那就需要填充,就是在边界加一圈0,为什么加0不加1呢,因为1能对结果造成影响,避免不必要的麻烦。
特征图尺寸计算与参数共享
像这个,我们是怎么算出来32的呢,有公式的。
参数共享
圈起来的就相当于两个卷积核,是不同的,但是 他们是不变的,
相当于这个,每个区域对应的卷积核不变
池化层的作用
池化层就是用来压缩的,在原有数据进行筛选
最大池化选最大
在卷积神经网络中,数越大越重要
整体网络结构
前面卷积压缩卷积压缩,就是特征提取,得到的是一个特征图,是一个立体的,在这个立体中该怎么进行分类任务,就交给全连接层FC了。
但是对应于FC的一个矩阵 [ , 5 ] 前面的值是连接提取出来的特征,但是它连接不了立体的,这该怎么办呢,这就需要将提取出来的特征图拉成一个特征向量,
那FC就是 [ 10240 , 5 ] ,就是10240个特征转换为预测的5个类别的概率值。
在最后的池化和全连接层之间还有一个拉长的操作,就是拉长向量
带参数计算的才能叫做一层,所以只有卷积和最后的FC有参数计算,所以这是个7层神经网络。
特征图变化: