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、非线性激活函数 |
异或: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、图片比特数 |
图像的像素点:256x256
灰度级数:灰度级2^4 = 16,说明每个像素用二进制表示需要4bit。
存储图片需要的比特数: 256 ∗ 256 ∗ 4 = 256 k b 256*256*4=256kb 256∗256∗4=256kb
6、BatchNorm的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中的基本数据存储单元。
1、FPGA、CPLD |
2、GPU训练模型 |
将数据分组部署在不同GPU上进行训练能提高深度神经网络的训练速度。
TensorFlow使用GPU训练好的模型,在执行推断任务时,不一定要在GPU上运行。
将模型中的浮点数精度降低,例如使用float16代替float32,可以压缩训练好的模型的大小。
GPU所配置的显存的大小,对于在该GPU上训练的深度神经网络的复杂度、训练数据的批次规模等,都是一个无法忽视的影响因素。
GPU只是用来加速计算,与模型本身没有直接的关系
3、sigmoid |
sigmoid的导数是:
f ( z ) ( 1 − f ( z ) ) f(z)(1-f(z)) f(z)(1−f(z))
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 (200−5+2∗1)/2+1为99.5,取99
( 99 − 3 ) / 1 + 1 为 97 (99-3)/1+1 为97 (99−3)/1+1为97
( 97 − 3 + 2 ∗ 1 ) / 1 + 1 为 97 (97-3+2*1)/1+1 为97 (97−3+2∗1)/1+1为97
6、googlenet提出的Inception结构优势 |
1、半调输出技术 |
2、关于Attention-based Model |
————————————————
具体详情链接
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个
1、梯度下降法 |
2、感受野 |
3、激活函数的属性 |
作者:Mrzhang先森
来源:CSDN
原文:https://blog.csdn.net/zhanghao3389/article/details/85267461
4、loss损失函数 |
在传统的siamese network中一般使用Contrastive Loss作为损失函数,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。
————————————————
Contrastive Loss(对比损失)
5、梯度消失 |
下图是一个利用sigmoid函数作为激活函数的含四个隐藏层的神经网络训练的梯度下降图。这个神经网络遇到了梯度消失的问题。下面哪个叙述是正确的?
深度神经网络的激活函数( 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,那么新架构的测试所用时间会变为多少?
Dropout 只会在网络训练的时候对神经元进行随机失活,测试的时候不会使用Dropout,所以对训练的时间不会有影响。
7、Dropout |
1、局部连接(local connections)
先来说说局部感知也,一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。即,局部感受野指卷积层的神经元只和上一层map的局部相联系。
2、权值共享(shared weight)权值共享(也就是卷积操作)减少了权值数量,降低了网络复杂度。可以看成是特征提取的方式。其中隐含的原理是:图像中的一部分的统计特性与其他部分是一样的。意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
3、池化(pooling)
对不同位置的特征进行聚合统计,如计算平均值或者是最大值,即mean-pooling和max-pooling。最大池化把输入图像分割成为不重叠的矩阵,每一个子区域(矩形区域),都输出最大值。像素发生位移,不同位置的特征发生变化,对这个这个位置的特征的平均值或者最大值的影响不大,因此,它对于位移变化有着不错的鲁棒性,最大池化用一种很灵活的方式降低了中间表示层的维度。
实际上,在图像识别中,重要的不是显著特征的绝对位置而是相对的位置。
————————————————
卷积神经网络保证“位移、尺度、形变不变性”该怎么理解?
1、bagging 、 Boosting 、stacking 、mapping |
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、幅度分辨率 、空间分辨率 |
空间分辨率:是每英寸图像内有多少个像素点,分辨率的单位为PPI(Pixels Per Inch),通常叫做:像素每英寸。
幅度分辨率:每个像素都有一个对应的强度值,不同灰度级,一般量化时采样8位的,也就是256。幅度分辨率不同的情况,我们可以发现,当灰度级降低时,图像会出现伪轮廓现象。图像中的木刻效果指图像中的灰度级数很少。
————————————————
图片分辨率
3、Lab、RGB、CMY、HSV、HSL |