一、卷积神经网络
1、从全连接到卷积
当所给信息太多时,用多重感知机处理全部信息会非常的麻烦,且需要大量的资源,所以使用卷积神经网络选取给定范围内的信息进行学习得出较好的训练结果,卷积的本质是有效提取相邻像素间的相关特征。
我的理解是:假如给定一张照片,先用一个卷积层提取出人脸边缘的轮廓信息,再用一个卷积层提取出脸部纹理信息,再用一个卷积层提取出眼睛鼻子嘴巴等特征,再用一个卷积层提取出更细节的信息等等,这样的话,最后根据所有一层一层提取出来的信息就可以合成一个人的全部特征了,而不是用多重感知机的很多神经元一下子学习所有的特征,会具有非常多的参数要去学习。
卷积神经网络的两个特征:
1.1、平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。(参数的矩阵是放置于对象的中心进行的,所以只有相对位置的改变,没有绝对位置的改变)
1.2、局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,在后续神经网络,整个图像级别上可以集成这些局部特征用于预测。(每次都对局部进行采样学习,最后叠加几层卷积层后合成全部的特征信息)
2、图像卷积
2.1、互相关运算
2.2、卷积层
卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出。 所以,卷积层中的两个被训练的参数是卷积核权重和标量偏置。 就像我们之前随机初始化全连接层一样,在训练基于卷积层的模型时,我们也随机初始化卷积核权重。
-
二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。
-
我们可以设计一个卷积核来检测图像的边缘。
-
我们可以从数据中学习卷积核的参数。
-
学习卷积核时,无论用严格卷积运算或互相关运算,卷积层的输出不会受太大影响。
-
当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络。
3、填充与步幅
-
填充可以增加输出的高度和宽度。这常用来使输出与输入具有相同的高和宽。
-
步幅可以减小输出的高和宽,例如输出的高和宽仅为输入的高和宽的 1/n( n是一个大于 1的整数)。
-
填充和步幅可用于有效地调整数据的维度。
3.1、填充
在应用多层卷积时,常常丢失边缘像素。 由于我们通常使用小卷积核,因此对于任何单个卷积,我们可能只会丢失几个像素。 但随着我们应用许多连续卷积层,累积丢失的像素数就多了。 解决这个问题的简单方法即为填充(padding):在输入图像的边界填充元素(通常填充元素是 00 )。填充的感觉是将边缘适当扩展一下,在边缘像素发生左右偏移的时候确保还在范围内。
3.2、步幅
在计算互相关时,卷积窗口从输入张量的左上角开始,向下和向右滑动。 我们默认每次滑动一个元素。 但是,有时候为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素。
4、多输入与多输出通道
4.1、多输入通道
当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数目的卷积核,以便与输入数据进行互相关运算。
如果输入n个通道,那么对应的卷积核也是n个,每个输入和对应的卷积核做互相关运算,最后进行相加,输出通道数为1
4.2、多输出通道
如果要有多个输出通道,那么每个输出通道要相应的有输入通道数个卷积核,最后有卷积核的形状为
(pytorch-深度学习系列)CNN的多输入通道和多输出通道 - 知乎 d
多输出通道例题代码的详解如上
4.3、1X1卷积层
当以每像素为基础应用时,1×1卷积层相当于全连接层,1×1 卷积层通常用于调整网络层的通道数量和控制模型复杂性。
5、池化层
双重目的:降低卷积层对位置的敏感性,同时降低对空间采样表示的敏感性
与卷积层类似,汇聚层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,汇聚层不包含参数。 相反,池运算符是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为 最大汇聚层 (maximum pooling)和 平均汇聚层 (average pooling)
默认情况下,深度学习框架中的步幅与池化窗口的大小相同。
在处理多通道输入数据时,汇聚层在每个输入通道上单独运算,而不是像卷积层一样在通道上对输入进行汇总。 这意味着汇聚层的输出通道数与输入通道数相同。
对于给定输入元素,最大汇聚层会输出该窗口内的最大值,平均汇聚层会输出该窗口内的平均值。
汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
我们可以指定汇聚层的填充和步幅。
使用最大汇聚层以及大于 1 的步幅,可减少空间维度(如高度和宽度)。
汇聚层的输出通道数与输入通道数相同。
6、LeNet
-
卷积神经网络(CNN)是一类使用卷积层的网络。
-
在卷积神经网络中,我们组合使用卷积层、非线性激活函数和汇聚层。
-
为了构造高性能的卷积神经网络,我们通常对卷积层进行排列,逐渐降低其表示的空间分辨率,同时增加通道数。
-
在传统的卷积神经网络中,卷积块编码得到的表征在输出之前需由一个或多个全连接层进行处理。
二、AI研习社 “猫狗大战” 比赛
还在努力。。。明天补上