1、dropout的原理:

  • 可以把dropout看成是 一种ensemble(集成)方法,每次做完dropout相当于从原网络中找到一个更瘦的网络,具体的,它是通过一定概率对神经元连接进行舍弃,这样减弱了神经元节点间的联合适应性,增强泛化能力,同时使用dropout得到更多的局部簇,同等数据下,簇变多了,因而区分性变大,稀疏性也更大。要注意的是,在网络的测试阶段drop out对数据的处理比较特别,它是将输入X乘以1-dropout的概率
    (dropout2d,则是对特征通道进行随机置0)
    补充知识点:稀疏性
    解析角度一
    在线性空间中,学习一个整个空间的特征集合是足够的,但是当数据分布在非线性不连续的空间中得时候,则学习局部空间的特征集合会比较好。
    解析角度二
    假设有一堆数据,这些数据由M个不同的非连续性簇表示,给定K个数据。那么一个有效的特征表示是将输入的每个簇映射为特征以后,簇之间的重叠度最低。使用A来表示每个簇的特征表示中激活的维度集合。重叠度是指两个不同的簇的Ai和Aj之间的Jaccard相似度最小,那么

  • 当K足够大时,即便A也很大,也可以学习到最小的重叠度

  • 当K小M大时,学习到最小的重叠度的方法就是减小A的大小,也就是稀疏性

上述的意思就是:我们要把不同的类别区分出来,就要是学习到的特征区分度比较大,在数据量足够的情况下不会发生过拟合的行为,不用担心。但当数据量小的时候,可以通过稀疏性,来增加特征的区分度。

因而使用了dropout后,相当于得到更多的局部簇,同等的数据下,簇变多了,使得网络不会产生过拟合,稀疏性则是drop out 的外在表现。

2、维数灾难
假如我们要训练一个分类器,我们可以加入许多特征对分类器进行训练,那是不是我们的分类器性能会随着特征数量的增加而逐步提高呢?答案也许有些让人沮丧,事实上,当特征数量达到一定规模后,分类器的性能是在下降的。随着维度(特征数量)的增加,分类器的性能可以用下图来描述:

Figure 1 随着维度的增加,分类器性能逐步上升,到达某点之后,其性能便逐渐下降。
简单说,维数灾难就是过拟合了。

3、伪标签技术:
将test数据集中的数据加入到train数据集中,其对应的标签为基于原有数据集训练好的模型预测得到的。
伪标签技术在一定程度上起到一种正则化的作用。如果训练开始就直接使用该技术,则网络可能会有过拟合风险,但是如果经过几轮训练迭代后(只是用原有训练集数据)将训练集和未打标签的数据一起进行训练,则会提升网络的泛化能力,操作过程中一般每个batch中的1/4到1/3的数据为伪标签数据。

4、为什么SSD对小目标检测效果不好
小目标对应的anchor比较少,其对应的feature map上的pixel难以得到训练,这也是为什么SSD在augmentation之后精确度上涨(因为crop之后小目标就变为大目标),要检测小目标需要足够大的feature map来提供精确特征,同时也需要足够的语义信息来与背景作区分。

5、Xception,ResNext和ShuffleNet
Xception是google继Inception后提出的对Inception v3的另一种改进,主要是采用depthwise separable convolution来替换原来Inception v3中的卷积操作。
什么是depthwise separable convolution?这是mobileNet里面的内容,其实就是将传统的卷积操作分成两步,假设原来是33的卷积,那么depthwise separable convolution就是先用M个33卷积核一对一卷积输入的M个feature map,不求和,生成M个结果;然后用N个1*1的卷积核正常卷积前面生成的M个结果,求和,最后生成N个结果。

ResNext的提出,传统的要提高模型的准确率,都是加深或加宽网络,但是随着超参数数量的增加(比如channels数,filter size等等),网络设计的难度和计算开销也会增加。因此提出的 ResNeXt 结构可以在不增加参数复杂度的前提下提高准确率,同时还减少了超参数的数量
Inception 系列网络,简单讲就是 split-transform-merge 的策略,但是 Inception 系列网络有个问题:网络的超参数设定的针对性比较强,当应用在别的数据集上时需要修改许多参数,因此可扩展性一般。
ResNeXt,同时采用 VGG 堆叠的思想和 Inception 的 split-transform-merge 思想,但是可扩展性比较强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。

左边是ResNet的基本结构,右边是ResNeXt的基本结构

ShuffleNet:轻量性网络,提出两个操作:逐点群卷积(pointwise group convolution)和通道混洗(channel shuffle),与现有先进模型相比在类似的精度下大大降低计算量。作者通过分析 Xception 和 ResNeXt 模型,发现这两种结构通过卷积核拆分虽然计算复杂度均较原始卷积运算有所下降,然而拆分所产生的逐点卷积计算量却相当可观,成为了新的瓶颈。受 ResNeXt 的启发,作者提出使用分组逐点卷积(group pointwise convolution)来代替原来的结构。通过将卷积运算的输入限制在每个组内,模型的计算量取得了显著的下降。然而这样做也带来了明显的问题:在多层逐点卷积堆叠时,模型的信息流被分割在各个组内,组与组之间没有信息交换,从而影响模型的精度。在使用分组逐点卷积的同时,需要引入组间信息交换的机制。作者通过引入“通道重排”(channel shuffle,见图 1© )可以很方便地实现这一机制;并且由于通道重排操作是可导的,因此可以嵌在网络结构中实现端到端的学习。

6、绘制ROC的标准和快速方法以及ROC对比PR曲线的优势:
标准方法:横坐标为FPR, 纵坐标为TPR, 设置一个区分正负预测结果的阈值并进行动态调整,从最高得分(实际上是正无穷)开始逐渐下降,描出每个阈值对应的点最后连接.

快速方法:根据样本标签统计出正负样本数,将坐标轴根据样本数进行单位分割,根据模型预测结果将样本进行排序后,从高到低遍历样本,每遇到一个正样本就沿纵轴方向绘制一个单位长度的曲线,反之则沿横轴,直到遍历完成

PR曲线的横坐标是Recall,纵坐标是Precision,相对于PR曲线来说,当正负样本发生剧烈变化时,ROC曲线的形状能够基本保持不变,而PR曲线的形状会发生剧烈改变

7、核函数
核函数并不是一种映射,它只是用来计算映射到高维空间后数据内积的一种方法。核函数K(kernel function)就是指K(x, y) = <f(x), f(y)>,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常,m>>n)。<x, y>是x和y的内积(inner product)(也称点积(dot product)。

举个例子:
令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);
令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;
令核函数 K(x, y) = (<x, y>)^2.
接下来,让我们带几个简单的数字进去看看是个什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:
f(x) = ( 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16) ;
f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;
<f(x), f(y)> = 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024
= 4900.
如果我们用核函数呢?
K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.
kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决无限维空间无法计算的问题!因为有时f(·)会把n维空间映射到无限维空间去。

8、L0、L1和L2范数:

  • L0范数:很难优化求解(NP难问题)
  • L1范数:是L0的最优凸近似(L1是L0的最紧的凸放松),且具有特征自动选择和使得模型更具解释性的优点
  • L2范数:使得权重接近于0但是不等于0,有利于处理条件数不好情况下矩阵求逆问题(条件数用来衡量病态问题的可信度,也就是当输入发生微小变化的时候,输出会发生多大变化,即系统对微小变动的敏感度,条件数小的就是well-conditioned的,大的就是ill-conditioned的),对于线性回归来说,如果加上L2规则项,原有对XTX(转置)求逆就变为可能,而目标函数收敛速率的上界实际上是和矩阵XTX的条件数有关,XTX的 condition number 越小,上界就越小,也就是收敛速度会越快;另外从优化的角度来看,加入规则项实际上是将目标函数变成λ强凸,这样可以保证函数在任意一点都存在一个非常漂亮的二次函数下界,从而能通过梯度更快找到近似解。总结就是:L2范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快速。

9、逆卷积(或者叫转置卷积)的实质
一般的卷积运算可以看成是一个其中非零元素为权重的稀疏矩阵C与输入的图像进行矩阵相乘,反向传播时的运算实质为C的转置与loss对输出y的导数矩阵的矩阵相乘。
逆卷积的运算过程与卷积正好相反,是正向传播时做成C的转置,反向传播时左成C

10、空洞卷积及其优点:
pooling操作虽然能增大感受野,但是会丢失一些信息。空洞卷积在卷积核中插入权重为0的值,因此每次卷积中会skip掉一些像素点。
洞卷积增大了卷积输出每个点的感受野,并且不像pooling会丢失信息,在图像需要全局信息或者需要较长sequence依赖的语音序列问题上有着较广泛的应用

11、Fast RCNN中位置损失为何使用Smooth L1:
表达式为:

作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。

12、Batch Normalization:
使用BN的原因是网络训练中每一层不断改变的参数会导致后续每一层输入的分布发生变化,而学习的过程又要使每一层去适应输入的分布,因此不得不降低网络的学习率,并且要小心得初始化(internal covariant shift)
如果仅通过归一化方法使得数据具有零均值和单位方差,则会降低层的表达能力(如使用Sigmoid函数时,只使用线性区域)
注意点:在测试过程中使用的均值和方差已经不是某一个batch的了,而是针对整个数据集而言。因此,在训练过程中除了正常的前向传播和反向求导之外,我们还要记录每一个Batch的均值和方差,以便训练完成之后按照下式计算整体的均值和方差
另一个注意点:在arxiv六月份的preprint论文中,有一篇叫做“How Does Batch Normalization Help Optimization?”的文章,里面提到BN起作用的真正原因和改变输入的分布从而产生稳定性几乎没有什么关系,真正的原因是BN使对应优化问题的landscape变得更加平稳,这就保证了更加predictive的梯度以及可以使用更加大的学习率从而使网络更快收敛,而且不止BN可以产生这种影响,许多正则化技巧都有这种类似影响

13、Dual Path Network
DPN可以说是融合了ResNet和DenseNet。
简单来讲,就是基于现有的残差网络,将最后的 1x1 输出切分为两路,一路加到 residual path 上去,一路并到 densely connected path 上去。

注意:ResNets将跨层信息相加,而DenseNet将信息进行拼接
14、超参数搜索方法:
网格搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果

贝叶斯优化:贝叶斯优化其实就是在函数方程不知的情况下根据已有的采样点预估函数最大值的一个算法。该算法假设函数符合高斯过程(GP)

随机搜索:已经发现,简单地对参数设置进行固定次数的随机搜索,比在穷举搜索中的高维空间更有效。 这是因为事实证明,一些超参数不通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。具体方法:核函数,如:高斯核,多项式核等等。

基于梯度:计算相对于超参数的梯度,然后使用梯度下降优化超参数。

15、LR如何解决低维不可分问题
通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。具体方法:核函数,如:高斯核,多项式核等等

16、Boosting和Bagging:
Boosting主要思想是将一族弱学习器提升为强学习器的方法,具体原理为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,来训练下一个基学习器,如此重复进行直至学习器数目达到了事先要求,最终进行学习器的加权结合

Bagging是并行式集成学习方法最著名的代表,具体做法是对样本进行有放回的采样,然后基于每个采样训练集得到一个基学习器,再将它们进行组合。在预测时,对于分类任务通常使用简单投票法,对回归任务使用简单平均法

17、目标检测中Focal loss:
在目标检测中常出现类别不均匀的问题,例如检测器在一幅图像中大约要 评估 10000-100000 个候选位置,但是只有很少的位置含有物体。 这个不平衡会导致两个问题:1)训练的低效率,因为大部分位置都是简单的负样本,他们没有什么有用的学习信息。2)简单负样本占整个样本的绝大多数,导致学习到的模型泛化性能降低。 以前解决这个问题的方法一般是 hard negative mining 或者赋予不同权重的策略 more complex sampling/reweighing schemes。
最近提出 focal loss 很好的解决了 class imbalance,可以高效的训练所有的样本,不用设计采样策略来减少简单的负样本。
公式:FL(pt)=−at(1−pt)γlog(pt)FL(p_t)=-a_t(1-p_t)^{\gamma}log(p_t)FL(pt​)=−at​(1−pt​)γlog(pt​)
由于(1−pt)γ(1-p_t)^\gamma(1−pt​)γ的存在,无论为“预测器”分对分错,都会减小loss的值!!!但是ptp_tpt​越大,分类越精确,这时loss会大大减少,当ptp_tpt​不大时,分类很可能出错,这时loss也减少,但减少不多。所以会对分类错误的进行侧重。

18、center loss:
在做分类(无论是image、instance、pixel level)的时候,我们不光需要学得可分离特征,更想要这些特征差异化尽可能大,这就意味着我们需要在loss上做更多的约束。
center loss的引入使得类内距离减少了
公式:

cyi表示第yi个类别的特征中心,xi表示全连接层之前的特征。后面会讲到实际使用的时候,m表示mini-batch的大小。因此这个公式就是希望一个batch中的每个样本的feature离feature 的中心的距离的平方和要越小越好,也就是类内距离要越小越好。这就是center loss。

19、F1 值(F1 score )、准确率(Precision)、召回率(Recall)

  • 准确率(Precision):P=TP/(TP+FP)。通俗地讲,就是预测正确的正例数据占预测为正例数据的比例。

  • 召回率(Recall):R=TP/(TP+FN)。通俗地讲,就是预测为正例的数据占实际为正例数据的比例

  • F1值(F score)

    20、梯度下降和牛顿法的区别
    牛顿法公式如下,其中H为海塞矩阵,其实就是目标函数对参数θ的二阶导数。只适用于Hessian矩阵是正定的情况:
    θ:=θ−H−1▽θℓ(θ)\theta:=\theta-H^{-1} \bigtriangledown_{\theta}\ell(\theta)θ:=θ−H−1▽θ​ℓ(θ)

  • 牛顿法:二阶优化,收敛速度较快,需要更新一个二阶矩阵(计算代价大),对初始值有一定要要求,在非凸优化过程中容易陷入鞍点。

  • 梯度下降法:一阶优化,收敛速度较慢,容易逃离鞍点,优化过程中需要进行步长调整

21、DenseNet的要点:

  • 由于前后层之间的Identity function,有效解决了梯度消失问题,并且强化了特征的重用和传播
  • 相比ResNet输出通过相加的方式结合从而阻碍信息的传播,DN通过串联方式结合
  • 串联要求特征图大小一致,故把pooling操作放在transition layer中
  • 为防止靠后的串联层输入通道过多,引入bottleneck layer,即1x1卷积。文中把引入bottleneck layer的网络成为DenseNet-B
  • 在transition layer中进一步压缩通道个数的网络成为DN-C(输入m个通道,则输出θm个通道,0<θ≤1)。同时包含bottleneck layer的和压缩过程的网络称为DN-BC

2.2 ResNeXt和ResNet的主要区别
主要区别在于ResNeXt采用group操作

传统的要提高模型的准确率,都是加深或加宽网络,但是随着超参数数量的增加(比如channels数,filter size等等),网络设计的难度和计算开销也会增加。而ResNeXt 结构可以在不增加参数复杂度的前提下提高准确率,同时还减少了超参数的数量(得益于子模块的拓扑结构一样,后面会讲)。

23 常见激活函数特点

  • sigmoid:输入值很大时对应的函数值接近1或0,处于函数的饱和区,导致梯度几乎为0,造成梯度消失问题
  • Relu:解决梯度消失问题,但是会出现dying relu现象,即训练过程中,有些神经元实际上已经"死亡“而不再输出任何数值
  • Leaky Relu:f = max(αx, x),解决dying relu问题,α的取值较大时比较小时的效果更好。它有一个衍生函数,parametric Leaky Relu,在该函数中α是需要去学习的
  • ELU:避免dying神经元,并且处处连续,从而加速SGD,但是计算比较复杂
  • 激活函数的选择顺序:ELU>Leaky Relu及其变体>Relu>tanh>sigmoid

24、Softmax交叉熵损失
使用交叉熵损失的原因是它求导结果简单,易于计算
L=−[ylogy^+(1−y)log(1−y^)]L=-[ylog \hat y+(1-y)log(1-\hat y)]L=−[ylogy^​+(1−y)log(1−y^​)]
最后结果中Softmax损失函数对应于每一项概率的偏导即为通过Softmax计算出的概率向量中对应真正结果的那一维减1。比如通过若干层计算,最后得到某个训练样本对应的分类得分为[1, 5, 3],那么通过Softmax计算得到概率分别为[0.015, 0.886, 0.117],假设样本正确的分类为第二类,则对应每项的偏导为[0.015, 0.886-1, 0.117],根据这个向量就可以进行反向传播了

25、mean pooling和max pooling的反向传播
主要原则是需要保证传递的loss(或者梯度)总和不变。

mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变

max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的,因为在反向传播中要用到

26、如何理解卷积、池化等、全连接层等操作

  • 卷积的作用:捕获图像相邻像素的依赖性;起到类似滤波器的作用,得到不同形态的feature map
  • 激活函数的作用:引入非线性因素,
  • 池化的作用:减少特征维度大小,使特征更加可控;减少参数个数,从而控制过拟合程度;增加网络对略微变换后的图像的鲁棒性;达到一种尺度不变性,即无论物体在图像中哪个方位均可以被检测到

27、1x1大小的卷积核的作用

  • 通过控制卷积核个数实现升维或者降维,从而减少模型参数
  • 用于不同channel上特征的融合
  • 对不同特征进行归一化操作

28、线性分类器与非线性分类器的区别以及优劣

  1. 区分原则:主要是看一个乘法式子中自变量x前的系数w,如果w只影响一个x,那么此模型为线性模型。或者判断决策边界是否是线性的。

  2. 常见模型
    常见的线性分类器有:LR, 贝叶斯分类,单层感知机、线性回归。
    常见的非线性分类器:决策树、RF、Adaboost、xgboost、GBDT、多层感知机。
    SVM两种都有(看线性核还是高斯核)。

  3. 优劣
    线性分类器速度快、编程方便,但是可能拟合效果不会很好。
    非线性分类器编程复杂,但是效果拟合能力强。

机器学习与深度学习一些基础知识点相关推荐

  1. 深度学习的基础知识(机器学习、损失函数、梯度下降、反向传播、基础模型一网打尽)

    1.预备信息 1.1了解技术的发展阶段 技术一般存在几个阶段:1.发展期.2.高峰期.3.冰河期.4.应用期 就是先达到一个高峰,但是在达到高峰之后就会被发现很多问题,然后热度就会不断地下降,到达一个 ...

  2. 机器学习、深度学习面试知识点汇总

    作者丨Oldpan 来源丨oldpan博客 编辑丨极市平台 导读 本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识. 前言 最近这段时间正临秋招,这篇文章是老潘在那 ...

  3. 机器学习与深度学习中的数学知识点汇总

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,每天 8:25 送达 来源:SIGAI 在机器学习与深度学习中需要大量使 ...

  4. 【机器学习基础】机器学习和深度学习的练习数据

    0.导语 初学者学习机器学习和深度学习的时候,经常会找不到练习的数据,本文提供了获取数据的一些方法. 一.scikit-learn自带数据集 Scikit-learn内置了很多可以用于机器学习的数据, ...

  5. 【机器学习基础】获取机器学习和深度学习的练习数据

    0.导语 初学者学习机器学习和深度学习的时候,经常会找不到练习的数据,本文提供了获取数据的一些方法. 一.scikit-learn自带数据集 Scikit-learn内置了很多可以用于机器学习的数据, ...

  6. AI基础:机器学习和深度学习的练习数据

    0.导语 初学者学习机器学习和深度学习的时候,经常会找不到练习的数据,本文提供了获取数据的一些方法. 目前我在编写AI基础系列,目前已经发布: AI 基础:简易数学入门 AI 基础:Python开发环 ...

  7. python系列文章(基础,应用,后端,运维,自动化测试,爬虫,数据分析,可视化,机器学习,深度学习系列内容)

    python基础教程 python基础系列教程--Python的安装与测试:python解释器.PyDev编辑器.pycharm编译器 python基础系列教程--Python库的安装与卸载 pyth ...

  8. 1.1机器学习和深度学习综述(百度架构师手把手带你零基础实践深度学习原版笔记系列)

    人工智能.机器学习.深度学习的关系 近些年人工智能.机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花.在研究深度学习之前,我们先从三个概念的正本清源开始. 概 ...

  9. 【人工智能 机器学习 深度学习】基础选择题 31~60题 练习(题目+答案),亦含 判断题

    目录 一.前情回顾 二.31~40题 2.1 题目 2.2 答案 三.41~50题 3.1 题目 3.2 答案 四.51~60题 4.1 题目 4.2 答案 一.前情回顾 [人工智能 & 机器 ...

最新文章

  1. Unity3D移植到自己的Android程序
  2. Linux 守护进程,编写(转载)
  3. 推荐抓虾在线RSS阅读
  4. pytorch定义神经卷积网络CNN源码
  5. 数组、字符串及字符串相关函数
  6. 一:包装好和吹出去 二:三国心得
  7. 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)
  8. LeetCode 809. 情感丰富的文字
  9. Java重写equals方法时为什么要重写hashCode方法
  10. 电脑操作者的养生之道
  11. 图解Java多线程设计模式
  12. DeepFashion服装数据集
  13. JavaOO 常用类新增
  14. CAS(Compare And Swap) 详解
  15. Lammps:Python上Ovito模块配置的问题与解决
  16. 实对称矩阵的基本性质
  17. 计算机右键菜单太多,文件右键太多?win10 ghost小方法删除右键多余菜单
  18. JAVA Servlet进阶
  19. python 时间序列分解 stl_时间序列分解-STL分解法
  20. meta http-equiv=“X-UA-Compatible“ content=““ 的作用

热门文章

  1. 用友U8年度帐结转解析
  2. PNG文件编码解析之PNG文件格式中的所有数据块以及标识
  3. 放端心态,不要给自己太大的心理压力。
  4. 华为天才少年造出自动驾驶单车!图纸已开源,硬件成本一万,B站老板:重新定义「自行」车
  5. 一个Html页面给另一个html页面传值(或B.html页面调用A.html的参数)
  6. pandas学习笔记四:运算方法和运算工具
  7. python求三个数平均值_python求三个数平均值
  8. 华为一、二、三面面经
  9. win10系统180天试用到期需要激活
  10. 使用HTML5制作的网页游戏-管道小鸟(附源码)