1.Depthwise卷积相关知识
优点:计算量和运算成本较低
缺点:输入层每个通道独立进行卷积运算,无法有效利用不同通道在相同空间位置上的Feature信息。
Depthwise Convolution的一个卷积核负责一个通道,一个通道只被一个卷积核卷积。上面所提到的常规卷积每个卷积核是同时操作输入图片的每个通道,其卷积核数量与上一层通道数相同,Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。
2.1*1卷积核的作用
-
增加网络的非线性能力,可以更好的拟合参数
-
完成降维和升维的作用
-
可以减少参数量,降低计算成本和计算复杂度
3.反卷积相比其他上采样层的缺点,棋盘格现象怎么产生的?
反卷积是上采样的一种,其他的有线性插值法:最邻近插值(NN),双线性插值(Biliner)缺点之一可能就是产生棋盘格效应,在图像生成的任务中,由于最后添加了反卷积层,导致
4.3D卷积和2D卷积的区别,存在的问题,如何加速运算
3D卷积能保留输入信号的时间信息,2D卷积不能保留输入信息的时间信息;2D卷积提取单张图像的空间特征,3D卷积能够提取图像之间的时间维度上的物体的运动信息。
5.卷积核大小如何选取
在感受野相同的情况下,卷积核越小,参数量和计算量越小;一般先选择33的卷积核尺寸,因为11和2*2无法提升感受野,无论padding如何操作,输入输出都尺寸一致。对于卷积层数和卷积核个数一般都是trial and error没有统一的标准,也就是说在由层数和通道数组成的超参数集合中,一般是通过实验选择最优的参数。
6.卷积层减少参数的方法?
PW卷积:Pointwise Convolution,俗称 1x1 卷积,主要用于数据降维,减少参数量;
多个小尺寸卷积代替大卷积核,加深网络的同时减少参数量
精巧的Bottleneck结构可以减少参数量
采用精巧的Depthwise Separable Conv(深度可分卷积)设计
7.Dropout的原理
dropout改变之前稠密网络中,权重统一学习,参数统一更新的模式,提出在每次训练迭代中,让网络中的部分参数得到学习,即部分参数得到更新,部分参数保持不更新。由于每次选择激活的神经元是随机的,dropout可以看成是集成学习bagging的一种。
可以消除减弱了神经元节点间的联合适应性,增强了泛化能力
8.朴素贝叶斯的一些知识点
朴素贝叶斯最重要的一个假设是:属性条件独立性假设,解决了联合概率无法拆分运算的问题。
先求出类别的先验概率,乘以类别之下各个属性的条件概率,最后最大化二者的乘积就是NB分类器的判别准则。
半朴素贝叶斯适当考虑一部分属性间的相互依赖信息,独依赖估计就是其中常用的策略,其假设每个属性在类别之外最多依赖其他的一个属性。
朴素贝叶斯与极大似然估计的一些区别和联系:
极大似然估计估计的参数是固定形式的一个未知变量,其具体运算只需要用到微分即可,但是贝叶斯估计是将参数视为有某种已知先验分布的随机变量。
Tips:极大似然估计的目的是利用已知的样本结果,反推最有可能(最大概率)导致这种结果的参数值。“模型已定,参数未知”利用实验结果得到某个参数值能够使样本出现的概率最大。
9.直接转置卷积和先上采样再卷积的区别
反卷积会产生棋盘效应,上采样+卷积不会出现这种情况
10.MaxPooling怎么传递导数
对于max pooling 而言,对于非极大值而言是没有梯度的,因为轻微地改变它们并不影响结果,此外,max可以近似看作斜率为1,因为输出的值等于max.因此,梯度是从下一层当中反向传播到取得最大值的神经元上的,所有其他的神经元梯度值为0。
源码中有一个max_idx_的变量,这个变量就是记录最大值所在位置的,因为在反向传播中要用到
11.CNN中池化的作用
下采样;降维去除冗余信息对特征进行压缩减小参数量 ;实现非线性;可以扩大感受野;可以实现不变性:平移不变性、旋转不变性和尺度不变性。
12.Shufflenet的结构
ShuffleNet的核心就是用pointwise group convolution,即是只在组内进行Pointwise卷积,但是这种分组Pointwise卷积会带来卷积通道之间信息沟通不流畅的问题,为了解决这个问题channel shuffle被提出来和depthwise separable convolution代替ResNet block的相应层构成了ShuffleNet uint,达到了减少计算量和提高准确率的目的。channel shuffle解决了多个group convolution叠加出现的边界效应,pointwise group convolution和depthwise separable convolution主要减少了计算量
ShuffleNetv2中提出了一些高效率网络结构的设计原则:1、使用平衡的卷积,及通道数一样 2、分组卷积会带来计算消耗 3、减少网络的分支 4、减少element-wise(元素级)操作ReLU,ADD和depthwise convolution;同时网络中采用了channel split的操作,减少了像ShuffleNetv1中的Add和ReLU操作
13.池化的理解和总结
池化的作用:1、下采样,对特征图进行压缩 2、降维、去除冗余信息、对特征进行压缩、简化网络复杂度、减小计算量、减小内存消耗等等。3、扩大感受野 4、
可以实现不变性,其中不变形性包括,平移不变性、旋转不变性和尺度不变性。
平均池化:计算图像区域的平均值作为该区域池化后的值。
最大池化:选图像区域的最大值作为该区域池化后的值。
全局平均池化:可对特征图实现降维,输入为NCHW,输出为NC11,选特征图的平均值作为整幅特征图的输出,可直接输入给softmax做分类
全局最大池化:选特征图的最大值作为整幅特征图的输出
重叠池化:重叠池化就是,相邻池化窗口之间有重叠区域
空间金字塔池化(Spatial Pyramid Pooling):它将一个pooling变成了多个scale的pooling。用不同大小池化窗口作用于上层的卷积特征。也就是说 spatital pyramid pooling layer就是把前一卷积层的feature maps的每一个图片上进行了3个卷积操作,并把结果输出给全连接层。其中每一个pool操作可以看成是一个空间金字塔的一层。
空间金字塔池化可以把任意尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。
14.Resnet的结构特点以及解决的问题是什么
ResNet的动机在于认为拟合残差比直接拟合潜在映射更容易优化;结构特点就是引入了残差块结构,让网络不在直接拟合F(x)而是拟合F(x)=H(x)-X, ResNet中,所有的Residual Block都没有pooling层,降采样是通过conv的stride=2实现的ResNet要解决的其实是深度神经网络的退化问题,即为在训练集上准确率下降的现象,过拟合时候准确率是应该上升的。即为不是由过拟合引起的plain net的梯度消失和梯度爆炸问题
15.Unet的结构为什么要先下采样,上采样
U-Net想要利用跳过连接融合不同尺度的信息,其中的下采样就是利用卷积神经网络来做的实现的是特征提取,而上采样通过反卷积来做。
16.ResnetV1到ResnetV2的改进是什么?Resnet怎么完成下采样过程的?
改进了Res unit,继续保持了恒等映射,并且采用BN层作为预激活函数加强对模型的正则化;ResNet中的下采样是通过改变卷积核的步长来调节的,其中无论是在Basicblock或者Bottleneck中都是在3x3的卷积核中进行的,而且是在每一个stage的第一个残差单元中进行的
17.FPN的结构特点
自然地利用了CNN中每一层输出内在的多尺度特征,即为金字塔形式,主要采用Top-Down和横向连接以此融合具有高分辨率的浅层layer和具有丰富语义信息的深层layer。这样就实现了从单尺度的单张输入图像,快速构建在所有尺度上都具有强语义信息的特征金字塔
18.ROI pooling和ROI align的区别
RolPooling可以使生成的候选框region proposal映射产生固定大小的feature map,
其中最大地区别,RolPooling采用最邻近插值法,ROI align采用地是双线性插值,在进行小目标物体检测地时候,后者会更精确。
19.简单说下AlexNet、Vgg、ResNet、DenseNet、GoogleNet的特色是什么
网络逐渐加深,其中
AlexNet:首次采用了dropout data augmentation, LRN(local response normalizetion)解决过拟合,采用了Relu作为激活函数,收敛速度加快,并且使用了Dropout来防止过拟合。Overlapping Pooling:利用pooling的步长小于尺寸来实现
Vgg:采用较小的卷积核,替代大卷积核。增加了网络的非线性,减少了参数量,使得网络的深度更深。但是更深的网络深度增加了模型的性能,且vgg中也采用了11的卷积但是其不像Inception里面采用11的卷积整合通道,可以理解成只是进一步引入非线性,增加网路的深度
Googlenet:提出Inception的结构,也即是NIN(Network in Network),这种结构可以改变通道数,参数减少模型除了在深度上增加,还增加了网络的宽度
ResNet:引入残差结构,使用这种跳过连接,是的更深层的网络可有效训练
DenseNet:引入密集连接,使用来自当前层之前的所有层的信息,DenseNet中的dense connectivity就是一种升级版的shortcut connection
20.怎么计算感受野,怎么增加感受野**
DL1.png其中对于第一层j=r=1,j表示特征图输出之间的间隔,
下采样卷积和扩张卷积可以增加感受野的大小。
扩张卷积:也被称为空洞卷积或者膨胀卷积,是在标准的卷积核中注入空洞,以此来增加模型的感受野(reception field)。相比原来的正常卷积操作,扩张卷积多了一个参数: dilation rate,指的是卷积核的点的间隔数量,比如常规的卷积操作dilatation rate为1。
21.为什么卷积神经网络适合于做视频和图像,还能用于其它领域吗?
卷积神经网络具有天然的局部连接和权值共享的特性。可以降低计算量,应对参数量巨大的问题。
22.CNN中能够自然起到防止过拟合的办法
卷积天然具有稀疏连接和权重共享的特点、可以降低参数量,防止过拟合,提升模型的泛化能力。除了卷积层的这两个特点之外,池化层可以降低网络参数,也可以降低网络的过拟合
23.CNN中的感受野和权值共享是什么意思?
24.BN层的作用,为什么有这个作用?在训练和测试时有什么不同,在测试时怎么使用?
BN也即Batch Normalization,批规范化。在深度网络中每一层的输入分布都会因为前层的参数变化而改变,这会导致我们不得不采用更低的学习率以及更小心的初始化等方式,减慢了模型的训练。BN就是通过每一个mini batch的规范化解决这一问题。
以CNN为例,每一层输入的数据多为 NWHC的张量,N表示batch size,WH是特征图大小,C指的是特征数或通道数。BN层对每个通道对应的NWH的数据进行归一化,并进行变化重构,变化重构参数 γ \gammaγ和β \betaβ是可学习的,首先对输入数据取均值和标准差,并进行归一化,ϵ \epsilonϵ是防止除0的很小数值,然后对归一化后的数据进行变换重构。
BN层在训练阶段,对每一批mini-batch的数据分别求均值与方差用于规范化,但在测试阶段,这一值使用的是全期训练数据的均值方差,也即模型训练到当前状态所有数据的均值方差,这个数据是在训练过程中通过移动平均法得到的。
25.BN层做预测时候,方差均值怎么算的,Online learning的时候怎么算的?
BN层在训练阶段,对每一批mini-batch的数据分别求均值与方差用于规范化,但在测试阶段,这一值使用的是全期训练数据的均值方差,也即模型训练到当前状态所有数据的均值方差,这个数据是在训练过程中通过移动平均法得到的。
26.SequeezeNet:
网络设计方面:
1、11卷积替换33卷积,减少参数量
2、减少33卷积的输入通道数,此处使用的是11的卷积来实现降维,好处是:减少运算量,同时当通道平衡时,可以减少MAC
3、延迟降采样,可以提高网络精度
架构上:Fire Moudle 由Squeeze和expand层来实现
27.MobileNetV1
使用深度可分离卷积构建轻量级神经网络:
DW:每个卷积核应用在一个通道上。
DW:组合通道卷积的输出
1.使用深度可分离卷积代替传统卷积
DW卷积输出的特征之间没有信息交流,信息流通不畅,DW进行滤波操作
PW卷积可实现通道特征的信息交流,PW卷积负责通通道转换
2.使用步长为2的卷积替换池化层
MobileNetV2的改进和优化:
1、反转残差:由于DW卷积提取特征本身较少,如果采用传统的先压缩后扩张的方式,无法提取丰富的特征,MobileNetV2采用先扩张再压缩的方式(具体的操作是在DW卷积之前采用了PW卷积),保证网络提取更多的特征
2、线性瓶颈:为了方式relu对提取特征的破坏,MobileNetV2在残差块的逐元素级求和之前不再使用relu作为激活函数,而是使用线性激活函数来替代,防止relu破坏特征。
28.什么是Soft attention和****hard attention?
29.Dropout的机制,为什么能抑制过拟合?
Dropout的核心思想是训练时以一定的概率p(通常是50%)关闭隐藏层神经元的输出,也就是输出为0。这种策略可以从不同角度理解:首先这使得每次训练的模型并不是相同的结构,可以认为是原网络的子集,最终的输出是这些不同模型不同结构共同作用的结果(类似于集成学习中Bagging的策略);另外Dropout方法可以让神经元之间减小依赖性,因为随机的关闭可以使得神经元之间不会总是同时作用。
综合来看,BN层在训练和测试的主要区别在于:训练时的均值方差来源于当前的mini-batch数据,而测试时,则要使用训练使用过的全部数据的均值方差,这一点训练时就通过移动均值方法计算并保存下来了;Dropout方法的训练测试区别在于:训练时随机的关掉部分神经元,而测试时所有神经元都工作但都要乘上系数(可以理解为训练了很多子模型,测试时要求他们加权求和的结果,可以按照集成学习中的bagging来理解)。
30.神经网络中权重参数为什么不能初始化为0,会发生什么?
当神经网络中权重参数初始化为0,在反向传播更新参数的过程中,会导致每一层的参数相同,那么隐层节点数目再多也相当于一个,神经网络失去意义,这种现象叫做隐层神经元的对称性,通常是权重参数随机初始化,b初始化为0,可以使得参数都能得到更新。
我们也可以发现,梯度的消失爆炸不仅与激活函数的导数有关,还与各层权重相乘有关。
31.为什么训练时候在计算资源允许的情况下,使用较大的batch
从BN的角度理解,BN训练时候使用batch的均值和方差代表数据的分布,测试时候使用全量数据的均值和方差,当一批数据较大的时候,可以更好的代表训练集的分布,缩减了与全量数据的差别。
网友评论