本文主要是介绍Interview tips for DeepLearning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 0.常见网络结构
- 1.比较Boosting和Bagging的异同
- 2.无监督学习中存在过拟合吗?
- 3.什么是k折交叉验证?
- 4.关于k折交叉验证,需要注意什么?
- 5.对于一个二分类问题,我们定义超过阈值t的判定为正例,否则判定为负例。现在若将t增大,则准确率和召回率会如何变化?
- 6.以下关于神经网络的说法中,正确的是( )?
- 7.说明Lp范数间的区别
- 8.用梯度下降训练神经网络的参数,为什么参数有时会被训练为nan值?
- 9.卷积神经网络CNN中池化层有什么作用?
- 10.请列举几种常见的激活函数。激活函数有什么作用?
- 11.神经网络中Dropout的作用?具体是怎么实现的?
- 12.利用梯度下降法训练神经网络,发现模型loss不变,可能有哪些问题?怎么解决?
- 13.如何解决不平衡数据集的分类问题?
- 14.残差网络为什么能做到很深层?
- 15.相比sigmoid激活函数ReLU激活函数有什么优势?
- 16.卷积神经网络中空洞卷积的作用是什么?
- 17.解释下卷积神经网络中感受野的概念?
- 18.模型欠拟合什么情况下会出现?有什么解决方案?
- 19. 适用于移动端部署的网络结构都有哪些?
- 20. 卷积神经网络中im2col是如何实现的?
- 21.多任务学习中标签缺失如何处理?
- 22.梯度爆炸的解决方法?
- 23.深度学习模型参数初始化都有哪些方法?
- 24.注意力机制在深度学习中的作用是什么?有哪些场景会使用?
- 25.卷积神经网络为什么会具有平移不变性?
- 26.神经网络参数共享(parameter sharing)是指什么?
- 27.如何提高小型网络的精度?
- 28.什么是神经网络的梯度消失问题,为什么会有梯度消失问题?有什么办法能缓解梯度消失问题?
- 29.列举你所知道的神经网络中使用的损失函数
- 30.对于多分类问题,为什么神经网络一般使用交叉熵而不用欧氏距离损失?
- 31.1x1卷积有什么用途?
- 32.随机梯度下降法,在每次迭代时能保证目标函数值一定下降吗?为什么?
- 33.梯度下降法,为什么需要设置一个学习率?
- 34.解释梯度下降法中动量项的作用
- 35.为什么现在倾向于用小尺寸的卷积核?
- 36.解释GoogLeNet的Inception模块的原理
- 37.解释反卷积的原理和用途
- 38.解释批量归一化的原理
- 39.解释SVM核函数的原理
- 40.什么是过拟合,过拟合产生的原因是什么?有什么方法能减轻过拟合?
- 41.什么样的函数可以用作激活函数?
- 42.什么是鞍点问题?
- 43.在训练深度神经网络的过程中,遇到过哪些问题,怎么解决的?
- 44.SVM如何解决多分类问题
- 45.列举你知道的聚类算法
- 46.K均值算法中,初始类中心怎么确定
- 47.简述EM算法的原理
- 48.什么是数据归一化?我们为什么需要它?
- 49.解释一下降维,在哪里使用,它的好处?
- 50.如何处理数据集中丢失或损坏的数据?
- 51.为什么我们在分类CNNs中使用最大池?
- 52.为什么分割CNNs通常具有编码器-解码器样式/结构?
- 53.残差络网的意义是什么?
- 54.什么是batch normalization?为什么它可以有效果?
- 55.为什么要使用很多小的卷积核,比如3x3,而不是几个大的呢?
- 56.你还有其他相关的项目吗?
- 57.解释你目前的硕士研究?哪些是有效的?哪些没有?未来的发展方向怎样?
- 58.机器学习、深度学习、强化学习之间的关系?
0.常见网络结构
| |
---|---|
LeNet5 | 没啥特点-不过是第一个CNN应该要知道 |
AlexNet | 引入了ReLU和Dropout,引入数据增强、池化相互之间有覆盖,三个卷积一个最大池化+三个全连接层 |
VGGNet | 采用1x1和3x3的卷积核以及2x2的最大池化使得层数变得更深。常用VGGNet-16和VGGNet19 |
GoogleNet(Inception) | 这个在控制了计算量和参数量的同时,获得了比较好的分类性能,和上面相比有几个大的改进: (1) 去除了最后的全连接层,而是用一个全局的平均池化来取代它; (2) 引入Inception Module,这是一个4个分支结合的结构。所有的分支都用到了1x1的卷积,这是因为1x1性价比很高,可以用很少的参数达到非线性和特征变换; (3) Inception V2第二版将所有的5x5变成2个3x3,而且提出来著名的Batch Normalization; (4) Inception V3第三版就更变态了,把较大的二维卷积拆成了两个较小的一维卷积,加速运算、减少过拟合,同时还更改了Inception Module的结构。 |
ResNet(微软残差) | (1) 引入高速公路结构,可以让神经网络变得非常深 (2) ResNet第二个版本将ReLU激活函数变成y=x的线性函数 |
1.比较Boosting和Bagging的异同
二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法。
Bagging:从原始数据集中每一轮有放回地抽取训练集,训练得到k个弱学习器,将这k个弱学习器以投票的方式得到最终的分类结果。
Boosting:每一轮根据上一轮的分类结果动态调整每个样本在分类器中的权重,训练得到k个弱分类器,他们都有各自的权重,通过加权组合的方式得到最终的分类结果。
2.无监督学习中存在过拟合吗?
存在。我们可以使用无监督学习的某些指标或人为地去评估模型性能,以此来判断是否过拟合。
3.什么是k折交叉验证?
将原始数据集划分为k个子集,将其中一个子集作为验证集,其余k-1个子集作为训练集,如此训练和验证一轮称为一次交叉验证。交叉验证重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结果作为评估整体模型的依据。
4.关于k折交叉验证,需要注意什么?
k越大,不一定效果越好,而且越大的k会加大训练时间;在选择k时,需要考虑最小化数据集之间的方差,比如对于2分类任务,采用2折交叉验证,即将原始数据集对半分,若此时训练集中都是A类别,验证集中都是B类别,则交叉验证效果会非常差。
5.对于一个二分类问题,我们定义超过阈值t的判定为正例,否则判定为负例。现在若将t增大,则准确率和召回率会如何变化?
准确率 = TP / (TP + FP),召回率 = TP / (TP + FN),其中TP表示将正例正确分类为正例的数量,FP表示将负例错误分类为正例的数量,FN表示将正例错误分类为负例的数量。
准确率可以理解为在所有分类为正例的样品中,分类正确的样本所占比例;召回率可以理解为在所有原始数据集中的正例样品中,正确挑出的正例样本的比例。
因此若增大阈值t,更多不确定(分类概率较小)的样本将会被分为负例,剩余确定(分类概率较大)的样本所占比例将会增大(或不变),即正确率会增大(或不变);若增大阈值t,则可能将部分不确定(分类概率较小)的正例样品误分类为负例,即召回率会减小(或不变)。
6.以下关于神经网络的说法中,正确的是( )?
A.增加网络层数,总能减小训练集错误率
B减小网络层数,总能减小测试集错误率
C.增加网络层数,可能增加测试集错误率
C。增加神经网络层数,确实可能提高模型的泛化性能,但不能绝对地说更深的网络能带来更小的错误率,还是要根据实际应用来判断,比如会导致过拟合等问题,因此只能选C。
7.说明Lp范数间的区别
L1范数:向量中各个元素绝对值之和
L2范数:向量中各个元素平方和的开二次方根
Lp范数:向量中各个元素绝对值的p次方和的开p次方根
8.用梯度下降训练神经网络的参数,为什么参数有时会被训练为nan值?
输入数据本身存在nan值,或者梯度爆炸了(可以降低学习率、或者设置梯度的阈值)
9.卷积神经网络CNN中池化层有什么作用?
减小图像尺寸即数据降维,缓解过拟合,保持一定程度的旋转和平移不变性。
10.请列举几种常见的激活函数。激活函数有什么作用?
sigmoi,relu,tanh。非线性化
11.神经网络中Dropout的作用?具体是怎么实现的?
防止过拟合。每次训练,都对每个神经网络单元,按一定概率临时丢弃。
12.利用梯度下降法训练神经网络,发现模型loss不变,可能有哪些问题?怎么解决?
很有可能是梯度消失了,它表示神经网络迭代更新时,有些权值不更新的现象。
改变激活函数,改变权值的初始化等。
13.如何解决不平衡数据集的分类问题?
可以扩充数据集,对数据重新采样,改变评价指标等。
14.残差网络为什么能做到很深层?
神经网络在反向传播过程中要不断地传播梯度,而当网络层数加深时,梯度在逐层传播过程中会逐渐衰减,导致无法对前面网络层的权重进行有效的调整。 残差网络中, 加入了short connections 为梯度带来了一个直接向前面层的传播通道,缓解了梯度的减小问题。
15.相比sigmoid激活函数ReLU激活函数有什么优势?
(1) 防止梯度消失 ( sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0)
(2) ReLU的输出具有稀疏性
(3) ReLU函数简单计算速度快
16.卷积神经网络中空洞卷积的作用是什么?
空洞卷积也叫扩张卷积,在保持参数个数不变的情况下增大了卷积核的感受野,同时它可以保证输出的特征映射(feature map)的大小保持不变。一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,但参数数量仅为9个。
17.解释下卷积神经网络中感受野的概念?
在卷积神经网络中,感受野 (receptive field)的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。
18.模型欠拟合什么情况下会出现?有什么解决方案?
模型复杂度过低,不能很好的拟合所有的数据
增加模型复杂度,如采用高阶模型(预测)或者引入更多特征(分类)等
19. 适用于移动端部署的网络结构都有哪些?
Mobilenet(https://arxiv.org/abs/1704.04861)
Shufflenet(https://arxiv.org/abs/1707.01083)
Xception(https://arxiv.org/abs/1610.02357)
20. 卷积神经网络中im2col是如何实现的?
使用im2col的方法将划窗卷积转为两个大的矩阵相乘,见下图:
在这里插入图片描述
21.多任务学习中标签缺失如何处理?
一般做法是将缺失的标签设置特殊标志,在计算梯度的时候忽略。
22.梯度爆炸的解决方法?
针对梯度爆炸问题,解决方案是引入Gradient Clipping(梯度裁剪)。通过Gradient Clipping,将梯度约束在一个范围内,这样不会使得梯度过大。
23.深度学习模型参数初始化都有哪些方法?
(1)Gaussian 满足mean=0,std=1的高斯分布x∼N(mean, std^{2} )
(2)Xavier 满足x∼U(−a,+a)x∼U(−a,+a)的均匀分布, 其中 a = sqrt(3/n)
(3)MSRA 满足x∼N(0, \sigma^{2} )x∼N(0,\sigma^{2})的高斯分布,其中σ = sqrt(2/n)
(4)Uniform 满足min=0,max=1的均匀分布。x∼U(min,max)x∼U(min,max)
等等
24.注意力机制在深度学习中的作用是什么?有哪些场景会使用?
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标是从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。目前在神经机器翻译(Neural Machine Translation)、图像理解(Image caption)等场景都有广泛应用。
25.卷积神经网络为什么会具有平移不变性?
MaxPooling能保证卷积神经网络在一定范围内平移特征能得到同样的激励,具有平移不变形。
26.神经网络参数共享(parameter sharing)是指什么?
所谓的权值共享就是说,用一个卷积核去卷积一张图,这张图每个位置是被同样数值的卷积核操作的,权重是一样的,也就是参数共享。
27.如何提高小型网络的精度?
(1)模型蒸馏技术
(2)利用AutoML进行网络结构的优化,可将网络计算复杂度作为约束条件之一,得到更优的结构。
28.什么是神经网络的梯度消失问题,为什么会有梯度消失问题?有什么办法能缓解梯度消失问题?
在反向传播算法计算每一层的误差项的时候,需要乘以本层激活函数的导数值,如果导数值接近于0,则多次乘积之后误差项会趋向于0,而参数的梯度值通过误差项计算,这会导致参数的梯度值接近于0,无法用梯度下降法来有效的更新参数的值。
改进激活函数,选用更不容易饱和的函数,如ReLU函数。
29.列举你所知道的神经网络中使用的损失函数
欧氏距离,交叉熵,对比损失,合页损失
30.对于多分类问题,为什么神经网络一般使用交叉熵而不用欧氏距离损失?
交叉熵在一般情况下更容易收敛到一个更好的解。
31.1x1卷积有什么用途?
通道降维,保证卷积神经网络可以接受任何尺寸的输入数据
32.随机梯度下降法,在每次迭代时能保证目标函数值一定下降吗?为什么?
不能,每次迭代时目标函数不一样
33.梯度下降法,为什么需要设置一个学习率?
使得迭代之后的值在上次值的邻域内,保证可以忽略泰勒展开中的二次及二次以上的项
34.解释梯度下降法中动量项的作用
利用之前迭代时的梯度值,减小震荡
35.为什么现在倾向于用小尺寸的卷积核?
用多个小卷积核串联可以有大卷积核同样的能力,而且参数更少,另外有更多次的激活函数作用,增强非线性
36.解释GoogLeNet的Inception模块的原理
对输入图像用多个不同尺寸的卷积核、池化操作进行同时处理,然后将输出结果按照通道拼接起来
37.解释反卷积的原理和用途
反卷积即转置卷积,正向传播时乘以卷积核的转置矩阵,反向传播时乘以卷积核矩阵由卷积输出结果近似重构输入数据,上采样
38.解释批量归一化的原理
在数据送入神经网络的某一层进行处理之前,对数据做归一化。按照训练样本的批量进行处理,先减掉这批样本的均值,然后除以标准差,然后进行缩放和平移。缩放和平移参数同训练得到。预测时使用训练时确定的这些值来计算
39.解释SVM核函数的原理
核函数将数据映射到更高维的空间后处理,但不用做这种显式映射,而是先对两个样本向量做内积,然后用核函数映射。这等价于先进行映射,然后再做内积。
40.什么是过拟合,过拟合产生的原因是什么?有什么方法能减轻过拟合?
过拟合指在训练集上表现的很好,但在测试集上表现很差,推广泛化能力差。产生过拟合的原因是训练样本的抽样误差,训练时拟合了这种误差。增加训练样本,尤其是样本的代表性;正则化
41.什么样的函数可以用作激活函数?
非线性,几乎处处可到,单调
42.什么是鞍点问题?
梯度为0,Hessian矩阵不定的点,不是极值点
43.在训练深度神经网络的过程中,遇到过哪些问题,怎么解决的?
不收敛,收敛太慢,泛化能力差。调整网络结构,调整样本,调整学习率,调整参数初始化策略
44.SVM如何解决多分类问题
多个二分类器组合。1对1方案,1对剩余方案,多类损失函数
45.列举你知道的聚类算法
层次聚类,k均值算法,DBSCAN算法,OPTICS算法,谱聚类
46.K均值算法中,初始类中心怎么确定
随机选择K个样本作为类中心,将样本随机划分成K个子集然后计算类中心
47.简述EM算法的原理
EM算法用于求解带有隐变量的最大似然估计问题。由于有隐变量的存在,无法直接用最大似然估计求得对数似然函数极大值的公式解。此时通过jensen不等式构造对数似然函数的下界函数,然后优化下界函数,再用估计出的参数值构造新的下界函数,反复迭代直至收敛到局部极小值点
48.什么是数据归一化?我们为什么需要它?
我觉得这个问题很重要。数据归一化是一个非常重要的预处理步骤,用于对数值进行缩放以适应特定的范围,以确保在反向传播过程中更好地收敛。一般来说,这可以归结为减去每个数据点的均值,再除以其标准差。如果我们不这样做,那么一些特征(那些大幅值的特征)将在损失函数中得到更多的权重(如果一个高幅值的特征变化了1%,那么这个变化是相当大的,但是对于较小的特征,它是相当小的)。数据归一化使得所有特征的权重相等。
49.解释一下降维,在哪里使用,它的好处?
降维是通过得到一组主要的变量,这些变量基本上就是重要的特征,来减少需要考虑的特征变量数量的过程。特性的重要性取决于特性变量对数据的信息表示的贡献有多大,取决于你决定使用哪种技术。决定使用哪种技术取决于反复试验和偏好。通常从线性技术开始,当结果表明不合适时,再转向非线性技术。数据集降维的好处可能是:
(1)减少所需存储空间
(2)加速计算(例如在机器学习算法),维度少意味着更少的计算,小维度可以允许使用那些不适合大维度的算法
(3)删除冗余特性,例如同时使用平方米和平方英里来存储面积是没有意义的(可能数据采集是有缺陷的)
(4)把数据的维度降低成2d或3d,这样可以可视化,可以观察到一些模式,给我们一些直观的启发
(5)过多的特征或过于复杂的模型会导致过拟合。
50.如何处理数据集中丢失或损坏的数据?
你可以在数据集中找到丢失/损坏的数据,然后删除这些行或列,或者用另一个值替换它们。在pandas中,有两个非常有用的方法:isnull()和dropna(),它们将帮助你找到缺少或损坏数据的数据列,并删除这些值。如果希望用占位符值(例如0)填充无效值,可以使用fillna()方。
51.为什么我们在分类CNNs中使用最大池?
这是面试一个计算机视觉职位时遇到的问题。在CNN中使用Max-pooling可以减少计算量,因为在使用pool之后feature map会变小,也不会丢失太多语义信息,因为你正在进行最大化激活。也有一种理论认为,最大池化效应会给CNNs带来更多的变换不变性。
52.为什么分割CNNs通常具有编码器-解码器样式/结构?
编码器CNN基本上可以被认为是一个特征提取网络,而解码器则利用该信息通过“解码”特征并向上缩放到原始图像的大小来预测图像的分割。
53.残差络网的意义是什么?
残差连接所做的主要事情是允许后面的层直接从之前的层中获取信息。这使得信息在整个网络中传播更加容易。关于这一点,有一篇非常有趣的论文展示了如何使用本地skip连接来给网络提供一种集成多路径的结构,从而使特性可以在整个网络中传播具有多条路径。
54.什么是batch normalization?为什么它可以有效果?
训练深度神经网络是复杂的,因为在训练过程中,随着前一层的参数变化,每一层的输入分布也会发生变化。我们的想法是将每一层的输入归一化,使它们的平均输出激活值为0,标准差为1。这是为每一层中的每个mini batch所做的,单独计算mini batch的均值和方差,然后归一化。这类似于网络的输入是标准化的。这有什么帮助呢?我们知道归一化网络的输入是有助于学习的。但网络只是一系列层,其中一层的输出成为下一层的输入。这意味着我们可以把神经网络中的任何一层想象成更小的后续网络的第一层。我们把神经网络看作是一系列相互输入的神经网络,在应用激活函数之前,我们对一层的输出进行归一化,然后将其输入到下一层(子网络)。
55.为什么要使用很多小的卷积核,比如3x3,而不是几个大的呢?
这一点在VGGNet论文中得到了很好的解释。有两个原因:首先,你可以使用几个较小的卷积核而不是几个较大的卷积核来获得相同的感受野并捕获更多的空间上下文,但是对于较小的卷积核,你使用的参数和计算更少。其次,因为使用了更小的卷积核,你会使用更多的过滤器,你将能够使用更多的激活函数,因此CNN将学习到更有区分度的映射函数。
56.你还有其他相关的项目吗?
在这个问题中,你将真正地在你的研究和他们的业务之间建立联系。你有没有做过什么事,学过什么技能,可能与他们的业务或你申请的职位有关?不用100%精确,只要以某种方式相关就可以了,这样你就可以证明你能够为他们增加很多价值。
57.解释你目前的硕士研究?哪些是有效的?哪些没有?未来的发展方向怎样?
和最后一个问题一样!
58.机器学习、深度学习、强化学习之间的关系?
| |
---|---|
机器学习(Maching Learning) | 机器学习: 是实现人工智能的一种手段,也是目前被认为比较有效的实现人工智能的手段。 目前在业界使用机器学习比较突出的领域很多,例如计算机视觉、自然语言处理、推荐系统、文本分类等,大家生活中经常用到的比如高速公路上的ETC的车牌识别,苹果手机的Siri,看今日头条时给你推荐的新闻,再比如大家用天猫买东西看评论的时候的评价描述:机器学习本质上是通过数学算法来解析数据的规律,学习相关的规律且用来预测和决策。 机器学习主要分为监督学习,无监督学习和半监督学习三种。从算法上来说有贝叶斯分类,决策树,线性回归,决策树和森林模型,主成分分析,流行学习,k-means聚类,高斯混合模型等等。 |
深度学习(Deep Learning) | 深度学习:是一种机器学习的技术,由于深度学习在现代机器学习中的比重和价值非常巨大,因此常常将深度学习单独拿出来说。最初的深度学习网络是利用神经网络来解决特征层分布的一种学习过程。通常我们了解的DNN(深度神经网络),CNN(卷积神经网络),RNN(循环神经网络),LSTM(长短期记忆网络)都是隶属于深度学习的范畴。也是现代机器学习最常用的一些手段。通过这些手段,深度学习在视觉识别,语音识别,自然语言处理(NLP)等领域取得了使用传统机器学习算法所无法取得的成就。 |
强化学习(Reinforcement Learning) | 强化学习:又称再励学习或者评价学习。也是机器学习的技术之一。所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,由于外部给出的信息很少,强化学习系统必须依靠自身的经历进行自我学习。通过这种学习获取知识,改进行动方案以适应环境。强化学习最关键的三个因素是状态,行为和环境奖励。 关于强化学习和深度学习的实例,最典型的莫过于谷歌的AlphaGo和AlphaZero两位了,前者通过深度学习中的深度卷积神经网络,在训练了大约三千万组人类的下棋数据,无数度电的情况下才搞出来的模型,而后者使用强化学习的方式,通过自己和自己下棋的方式搞出来的模型。而最终的实验结果也很让人震撼。AlphaGo干败了人类围棋顶尖高手,而AlphaZero干败了AlphaGo. |
这篇关于Interview tips for DeepLearning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!