深度学习+图像处理相关试题日常总结

20201021

1、提高泛化能力

提高模型泛化能力,减小过拟合,提升鲁棒性的几种方法:
1.batch_size越大,样本整体噪声均值保持不变但是方差减小,而样本的噪声有助于SGD规避局部最优点,从而提高整体的泛化能力,所以batch_size越小,泛化能力越好。
2.正则化,Batch Normalize
3.提早结束训练
4.droupout
5.数据增强
6.模型深度和模型泛化能力的关系。模型的泛化能力和模型的复杂度有关,模型复杂度越低,泛化能力更好。一般的训练方法是在高复杂度的模型(模型深度越深)的基础上,对模型进行一系列操作,比如:正则化、Dropout、Batch Normalize等,从而来获取低复杂度的模型。反言之,如果一开始就选择复杂度不高的网络,那样训练精度都不会高,自然泛化能力也不会高。所以,模型深度和模型泛化能力的关系并不是单纯的线性关系。
7.输入进行旋转、平移、缩放等预处理相当于做了数据增强,数据增强可以增加模型的泛化能力。

————————————————
L1、L2、Batch Normalization、Dropout为什么能够防止过拟合呢?
Batch size大小,优化和泛化
batch_size越小,泛化能力越好
越深的网络泛化性越好么?

2、感知器

感知机 (perceptron):感知机是神经网络(深度学习)的起源算法,学习感知机的构造是通向神经网络和深度学习的一种重要思想。感知机接收多个输入信号,输出一个信号。
————————————————
具体详情链接

  • 特征学习算法

特征学习可以被分为两类:监督式特征学习(Supervised Representation Learning)和无监督式特征学习(Unsupervised Representation Learning)。
在监督特征学习中,被标记过的数据被当做特征用来学习。例如神经网络(Neural Networks),多层感知器(Multi-Layer Perception),监督字典学习(Supervised Dictionary Learning)。
在无监督特征学习中,未被标记过的数据被当做特征用来学习。例如无监督字典学习(Unsupervised Dictionary Learning),主成分分析(Principal Component Analysis),独立成分分析(Independent Component Analysis),自动编码(Auto-encoders),矩阵分解(Matrix Factorization) ,各种聚类分析(Clustering)及其变形。

需要利用手动特征工程从原始数据的领域知识建立特征(Stage1),然后再部署相关的机器学习算法的都不是特征学习(Stage2),像SVM、决策树、K邻近算法、随机森林都不是,他们的定位应该是在Stage2部分。
————————————————
具体详情链接

3、卷积核的层数对模型泛化能力的影响
卷积核的作用为提取图像特征,当卷积核增加时,过多的学习了图象中的特征,会导致过拟合 ,降低模型的泛化能力。
4、非线性激活函数
假设我们有一个使用ReLU激活函数(ReLU activation function)的神经网络,假如我们把ReLU激活替换为线性激活,那么这个神经网络能够模拟出同或函数(XNOR function)吗?

异或:xor ->相异为1,相同为0 例如:1 ,1–>0 1 ,0–>1 0 ,1–>1 0 ,0–>0
同或:xnor ->相同为1,相异为0 例如:1 ,1–>1 1 ,0–>0 0 ,1–>0 0 ,0–>1

ReLU激活替换为线性激活,网络就是去非线性能力,就无法模拟出同或函数。

5、图片比特数
一幅256*256的图像,若灰度级数为16,则存储它所需的比特数是()

图像的像素点:256x256
灰度级数:灰度级2^4 = 16,说明每个像素用二进制表示需要4bit。
存储图片需要的比特数: 256 ∗ 256 ∗ 4 = 256 k b 256*256*4=256kb 2562564=256kb

6、BatchNorm的shape
BatchNorm 层对于 input batch 会统计出 mean 和 variance 用于计算 EMA。如果input batch 的 shape 为(B, C, H, W),统计出的 mean 和 variance 的 shape 为: ()

B:Batch_size
C:通道数
H:高
W:宽

BatchNorm 是对不同批次的input batch同一通道进行Normalization,所以统计出来的 mean 和 variance 的 shape为(1,B,1,1)

7、caffe

Caffe 是一个深度学习框架,由表达式,速度和模块化组成。

caffe六种优化方法

Stochastic Gradient Descent (type: “SGD”),
AdaDelta (type: “AdaDelta”)
Adaptive Gradient (type: “AdaGrad”)
Adam (type: “Adam”)
Nesterov’s Accelerated Gradient (type: “Nesterov”)
RMSprop (type: “RMSProp”) 

如果把一个网络结构Net比作一座大厦的话,那么层Layer就是每一层楼,而Blob就是砖。Layer应该是Caffe的基本计算单元。Layer使得Net很有层次性,让我们很直观的看到计算进行的顺序和上下关系。 blob是caffe中的基本数据存储单元。

20201022

1、FPGA、CPLD
FPGA最早是作为CPLD的竞争技术而出现的,FPGA和CPLD是两种著名的数字逻辑芯片。
2、GPU训练模型

将数据分组部署在不同GPU上进行训练能提高深度神经网络的训练速度。

TensorFlow使用GPU训练好的模型,在执行推断任务时,不一定要在GPU上运行。

将模型中的浮点数精度降低,例如使用float16代替float32,可以压缩训练好的模型的大小。

GPU所配置的显存的大小,对于在该GPU上训练的深度神经网络的复杂度、训练数据的批次规模等,都是一个无法忽视的影响因素。

GPU只是用来加速计算,与模型本身没有直接的关系

3、sigmoid

深度学习+图像处理相关试题日常总结_第1张图片
sigmoid的导数是:
f ( z ) ( 1 − f ( z ) ) f(z)(1-f(z)) f(z)(1f(z))

4、不同数据集,相似度下使用微调
数据集1-数据量少,但数据相似度非常高-在这种情况下,我们所做的只是修改最后几层或最终的softmax图层的输出类别。 数据集2-数据量少,数据相似度低-在这种情况下,我们可以冻结预训练模型的初始层(比如k层),并再次训练剩余的(n-k)层。由于新数据集的相似度较低,因此根据新数据集对较高层进行重新训练具有重要意义。 数据集3-数据量大,数据相似度低-在这种情况下,由于我们有一个大的数据集,我们的神经网络训练将会很有效。但是,由于我们的数据与用于训练我们的预训练模型的数据相比有很大不同,使用预训练模型进行的预测不会有效。因此,最好根据你的数据从头开始训练神经网络(Training from scatch)。 数据集4-数据量大,数据相似度高-这是理想情况。在这种情况下,预训练模型应该是最有效的。使用模型的最好方法是保留模型的体系结构和模型的初始权重。然后,我们可以使用在预先训练的模型中的权重来重新训练该模型。
5、计算特征图的大小

问题:
输入图片大小为200×200,依次经过一层卷积(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一层卷积(kernel size 3×3,padding 1,stride 1)之后,输出特征图大小为 :

解析:
padding = “value”,N = [(W-K+2P)/S]+1,这里表示的是向下取整再加1
padding = “same”,N = [W/S],这里表示向上取整

输出高度 = (输入高度 - Kernel高度 + 2 * padding)/ 步长stride + 1
输出宽度 = (输入宽度 - Kernel宽度 + 2 * padding)/ 步长stride + 1
除法都为向下取整

卷积向下取整,池化向上取整。

( 200 − 5 + 2 ∗ 1 ) / 2 + 1 为 99.5 , 取 99 (200-5+2*1)/2+1 为99.5,取99 2005+21/2+199.599
( 99 − 3 ) / 1 + 1 为 97 (99-3)/1+1 为97 993/1+197
( 97 − 3 + 2 ∗ 1 ) / 1 + 1 为 97 (97-3+2*1)/1+1 为97 973+21/1+197

6、googlenet提出的Inception结构优势

深度学习+图像处理相关试题日常总结_第2张图片

20201026

1、半调输出技术
半调输出技术牺牲空间分辨率以提高幅度分辨率。 半调输出是一种 将灰度图像或彩色图像转化为二值图像的技术。人眼的集成特性即空间局部平均效应使二值图像感知为灰度图像
2、关于Attention-based Model
Attention-based Model其实就是一个相似性的度量,当前的输入与目标状态越相似,那么在当前的输入的权重就会越大,说明当前的输出越依赖于当前的输入。严格来说,Attention并算不上是一种新的model,而仅仅是在以往的模型中加入attention的思想,所以Attention-based Model或者Attention Mechanism是比较合理的叫法,而非Attention Model。

————————————————
具体详情链接

3

深度学习+图像处理相关试题日常总结_第3张图片

因为INFINITY与0相乘为NaN,与除了乘以0以外的任何四则运算,得到的结果仍然是INFINITY。
题目问的是至少有多少个,那么我们就考虑nan最少的情况下的INFINITY分布位置,如图所示。
第一个卷积核的4条边都不为0,因此nan的个数为0
第二个卷积核有两个对称的角为0,因此一个((10+11)+(13+12))* 2 = 92
第三个与第二个相同为92个
第四个卷积核的4个角都为0,因此0会与所有的数相乘,相当于从上到下,从左到右,都会被0扫描一遍,因此25*4=100
0+92+92+100=284个

20201027

1、梯度下降法
  • 批量梯度下降(Batch Gradient Descent):
    批量梯度下降法是最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行梯度的更新。我们把上篇博客得到的表达式递推到具有m个训练样本,然后对损失函数求导得到(这里j表示特征数,求导步骤就不写了,很容易可以求出来):
    深度学习+图像处理相关试题日常总结_第4张图片
    深度学习+图像处理相关试题日常总结_第5张图片
  • 随机梯度下降(Stochastic Gradient Descent)
    “随机”二字就是指每次迭代的过程中从所有的训练样本随机选取一个训练样本进行更新。
    深度学习+图像处理相关试题日常总结_第6张图片
  • 小批量梯度下降(Mini-Batch Gradient Descent)
    深度学习+图像处理相关试题日常总结_第7张图片

深度学习+图像处理相关试题日常总结_第8张图片————————————————
具体详情链接

2、感受野
  1. 感受野
    就是原特征图经过卷积、池化之后得到的特征图中的11的像素对应原特征图的XX的像素。
  2. 问题:
    在CNN网络中,图A经过核为3x3,步长为2的卷积层,ReLU激活函数层,BN层,以及一个步长为2,核为22的池化层后,再经过一个33的的卷积层,步长为1,此时的感受野是()
    倒推回去:
    3x3的的卷积层,步长为1的对应的感受野是3x3
    步长为2,核为2x2的池化层 对应的感受野是 6x6 或者 7x7
    核为3x3,步长为2的卷积层 对应的感受野是 13、15、16
3、激活函数的属性

深度学习+图像处理相关试题日常总结_第9张图片

  1. 非线性:
    即导数不是常数。这个条件是多层神经网络的基础,保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。
  2. 几乎处处可微:
    可微性保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU,只满足几乎处处可微(即仅在有限个点处不可微)。对于SGD算法来说,由于几乎不可能收敛到梯度接近零的位置,有限的不可微点对于优化结果不会有很大影响。
  3. 计算简单:
    非线性函数有很多。极端的说,一个多层神经网络也可以作为一个非线性函数,类似于Network In Network中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。
  4. 非饱和性(saturation):
    饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是Sigmoid,它的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU和PReLU的提出正是为了解决这一问题。
  5. 单调性(monotonic):
    即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
  6. 输出范围有限:
    有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主,如Sigmoid、TanH。但这导致了前面提到的梯度消失问题,而且强行让每一层的输出限制到固定范围会限制其表达能力。因此现在这类函数仅用于某些需要特定输出范围的场合,比如概率输出(此时loss函数中的log操作能够抵消其梯度消失的影响)、LSTM里的gate函数。
  7. 接近恒等变换(identity):
    即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。这个与非线性是有点矛盾的,因此激活函数基本只是部分满足这个条件,比如TanH只在原点附近有线性区(在原点为0且在原点的导数为1),而ReLU只在x>0时为线性。这个性质也让初始化参数范围的推导更为简单。这种恒等变换的性质也被其他一些网络结构设计所借鉴,比如CNN中的ResNet和RNN中的LSTM。
  8. 参数少:
    大部分激活函数都是没有参数的。像PReLU带单个参数会略微增加网络的大小。还有一个例外是Maxout,尽管本身没有参数,但在同样输出通道数下k路Maxout需要的输入通道数是其它函数的k倍,这意味着神经元数目也需要变为k倍;但如果不考虑维持输出通道数的情况下,该激活函数又能将参数个数减少为原来的k倍。
    归一化(normalization):
    这个是最近才出来的概念,对应的激活函数是SELU,主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练。在这之前,这种归一化的思想也被用于网络结构的设计,比如Batch Normalization。

作者:Mrzhang先森
来源:CSDN
原文:https://blog.csdn.net/zhanghao3389/article/details/85267461

4、loss损失函数

深度学习+图像处理相关试题日常总结_第10张图片
深度学习+图像处理相关试题日常总结_第11张图片
在传统的siamese network中一般使用Contrastive Loss作为损失函数,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。

————————————————
Contrastive Loss(对比损失)

5、梯度消失

下图是一个利用sigmoid函数作为激活函数的含四个隐藏层的神经网络训练的梯度下降图。这个神经网络遇到了梯度消失的问题。下面哪个叙述是正确的?
深度学习+图像处理相关试题日常总结_第12张图片

  • 梯度消失

深度神经网络的激活函数( X = W U + B X=WU+B X=WU+B)的输入值 U U U随着网络深度加深,其分布逐渐发生偏移或者变动,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,以Sigmoid函数为例,意味着激活输入值 W U + B WU+B WU+B是大的负值或正值,所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。

上图横轴表示训练epochs次数,纵轴表示损失函数,损失函数越平,代表梯度消失的越快,又因为层数越深,梯度消失越快,所以答案为:
在这里插入图片描述

6、Dropout

考虑以下问题:假设我们有一个5层的神经网络,这个神经网络在使用一个4GB显存显卡时需要花费3个小时来完成训练。而在测试过程中,单个数据需要花费2秒的时间。 如果我们现在把架构变换一下,当评分是0.2和0.3时,分别在第2层和第4层添加Dropout,那么新架构的测试所用时间会变为多少?

深度学习+图像处理相关试题日常总结_第13张图片
Dropout 只会在网络训练的时候对神经元进行随机失活,测试的时候不会使用Dropout,所以对训练的时间不会有影响。

7、Dropout
位移、尺度、形变不变性具体的还得从基本思想出发。下面就从三个基本特性出发来看一下CNN的各种不变性。

1、局部连接(local connections)
先来说说局部感知也,一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。即,局部感受野指卷积层的神经元只和上一层map的局部相联系。

2、权值共享(shared weight)权值共享(也就是卷积操作)减少了权值数量,降低了网络复杂度。可以看成是特征提取的方式。其中隐含的原理是:图像中的一部分的统计特性与其他部分是一样的。意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

3、池化(pooling)
对不同位置的特征进行聚合统计,如计算平均值或者是最大值,即mean-pooling和max-pooling。最大池化把输入图像分割成为不重叠的矩阵,每一个子区域(矩形区域),都输出最大值。像素发生位移,不同位置的特征发生变化,对这个这个位置的特征的平均值或者最大值的影响不大,因此,它对于位移变化有着不错的鲁棒性,最大池化用一种很灵活的方式降低了中间表示层的维度。

实际上,在图像识别中,重要的不是显著特征的绝对位置而是相对的位置。

深度学习+图像处理相关试题日常总结_第14张图片
————————————————
卷积神经网络保证“位移、尺度、形变不变性”该怎么理解?

20201028

1、bagging 、 Boosting 、stacking 、mapping

深度学习+图像处理相关试题日常总结_第15张图片
Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果;
Boosting(增强集成学习):集成多个模型,每个模型都在尝试增强(Boosting)整体的效果;
Stacking(堆叠):集成 k 个模型,得到 k 个预测结果,将 k 个预测结果再传给一个新的算法,得到的结果为集成系统最终的预测结果;

Bagging和Boosting的区别:

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

5)bagging是减少variance,而boosting是减少bias

2、幅度分辨率 、空间分辨率

深度学习+图像处理相关试题日常总结_第16张图片

深度学习+图像处理相关试题日常总结_第17张图片

空间分辨率:是每英寸图像内有多少个像素点,分辨率的单位为PPI(Pixels Per Inch),通常叫做:像素每英寸。

深度学习+图像处理相关试题日常总结_第18张图片

幅度分辨率:每个像素都有一个对应的强度值,不同灰度级,一般量化时采样8位的,也就是256。幅度分辨率不同的情况,我们可以发现,当灰度级降低时,图像会出现伪轮廓现象。图像中的木刻效果指图像中的灰度级数很少。

————————————————

图片分辨率

3、Lab、RGB、CMY、HSV、HSL
lab的l为亮度,ab为两种不同的色度,前者是明度通道,后者是色彩通道,可以分离色度和亮度。 RGB基于颜色的加法混色原理,从黑色不断叠加Red,Green,Blue的颜色,最终可以得到白色光。 CMY颜色空间是基于光反射定义的(CMY对应了绘画中的三原色:Cyan,Magenta,Yellow),是一种基于颜色减法混色原理的颜色模型。 HSV、HSL两个颜色空间都是从人视觉的直观反映而提出来的(H是色调,S是饱和度,I是强度)。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201028113245379.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ppbmRheGlhb29vbw==,size_16,color_FFFFFF,t_70#pic_center) ———————————————— [详细可参考:](https://blog.csdn.net/li_wen01/article/details/72865651)

你可能感兴趣的:(基础概念,深度学习)