【6】机器学习算法面试八股

91VGG使用3*3卷积核的优势是什么? (采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5))

2个33的卷积核串联和55的卷积核有相同的感知野,前者拥有更少的参数。多个33的卷积核比一个较大尺寸的卷积核有更多层的非线性函数,增加了非线性表达,使判决函数更具有判决性。 用C0个33Ci的卷积核进行卷积操作,所以参数量为33CiC02个·33参数量:18 1个·55参数量: 25

92Relu比Sigmoid的效果好在哪里?

Sigmoid的导数只有在0的附近时有较好的激活性,而在正负饱和区域的梯度趋向于0,从而产生梯度弥散的现象,而relu在大于0的部分梯度为常数,所以不会有梯度弥散现象。Relu的导数计算的更快。Relu在负半区的导数为0,所以神经元激活值为负时,梯度为0,此神经元不参与训练,具有稀疏性

93神经网络中权重共享的是? 卷积神经网络、循环神经网络

卷积神经网络可以看做是在空间位置上共享参数,循环神经网络可以看做是在时间位置上共享参数。卷积神经网络通过卷积核来实现权重共享;循环神经网络在理论上可以看做是统一神经结构被无限复制的结果全连接层参数:由于全连接层只能接收一维向量,因此对于输入为M x N的图像,需要先展平为一维的(MxN) x 1。因此若得到的特征图feature map大小为P x Q(对应的一维向量为(PxQ) x 1),则map中每个元素需要MxN个权重,分别于输入图对应做加和,于是最后需要M x N x P x Q个参数权重若原image大小为M x N x K1 单个卷积核大小为F x F x K1,共K2个卷积核,则总共需要F x F x K1 x K2个参数,之所以在卷积神经网络可以用到权值共享,则是考虑到对于一张图像的某个像素点,其往往具有局部相关性,即与其相邻的像素点相关性较大,越远相关性越小,这样通过一步步增加网络深度,也能慢慢学到图像的全局特征RNN中需要用参数共享,一方面跟CNN一样,是为了减少参数量另一方面,由于原始RNN是变长的,因此若不共享,每个W都不同,那么需要设置多少个W就无法提前知晓了,实现上困难

94神经网络激活函数?

sigmod、tanh、relu激活函数(activation functions)的目标是负责将神经元的输入映射到输出端,将神经网络非线性化,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。。激活函数是连续的(continuous),且可导的(differential)当使用sigmoid作为激活函数时,随着神经网络隐含层(hidden layer)层数的增加,训练误差反而加大。表现为:梯度弥散:

  1. 靠近输出层的隐含层梯度较大,参数更新速度快,很快就会收敛;
  2. 靠近输入层的隐含层梯度较小,参数更新速度慢,几乎和初始状态一样,随机分布;
  3. 在含有四个隐藏层的网络结构中,第一层比第四层慢了接近100倍!

sigmoid缺点:• 激活函数的计算量较大,在反向传播中,当求误差梯度时,求导涉及除法;• 在反向传播中,容易就会出现梯度消失(函数值趋近于0和1时)和·梯度爆炸(x=0处),无法完成深层网络的训练;• 函数的敏感区间较短,(-1,1)之间较为敏感,超过区间,则处于饱和状态• 不以零为中心:sigmoid函数的输出恒为正值,不是以零为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。

1)tanh的导数取值范围在0至1之间,优于sigmoid的0至1/4,在一定程度上,减轻了梯度消失的问题(但仍然会有梯度消失问题),即梯度变化更快,也就是在训练过程中收敛速度更快。2)输出值以 0 为中心,解决了sigmoid函数输出值只为正,梯度只向一个方向更新的问题。tanh的输出和输入能够保持非线性单调上升和下降关系,符合BP(back propagation)网络的梯度求解,容错性好,有界。tanh和sigmoid都是全部激活(fire),使得神经网络较重(heavy)缺点:依然存在sigmoid中梯度消失和爆炸的问题和指数运算计算量大的问题。

95relu,(在正区间解决梯度消失)

即Rectified Linear Unit,整流线性单元,激活部分神经元,增加稀疏性,当x小于0时,输出值为0,当x大于0时,输出值为x.relu对比于sigmoid:• sigmoid的导数,只有在0附近,具有较好的激活性,而在正负饱和区的梯度都接近于0,会造成梯度弥散;而relu的导数,在大于0时,梯度为常数,不会导致梯度弥散。• relu函数在负半区的导数为0 ,当神经元激活值进入负半区,梯度就会为0,也就是说,这个神经元不会被训练,即稀疏性;• relu函数的导数计算更快,程序实现就是一个if-else语句;而sigmoid函数要进行浮点四则运算,涉及到除法;缺点:不以零为中心:和 Sigmoid 激活函数类似,ReLU 函数的输出不以零为中心,因此只存在正向梯度。负值区域(x< 0 )存在梯度消失问题。如果 x < 0,则神经元保持非激活状态,且在反向传播过程中「杀死」梯度。这样权重无法得到更新,网络无法学习。在神经网络中,隐含层的激活函数,最好选择ReLU所以,要结合具体问题以及激活函数的特点,恰当地选择。下面是一些经验,供参考:• Sigmoid函数比较适合于二分类模型。• 使用Sigmoid函数和tanh函数,要注意梯度消失问题。• ReLU函数是应用比较广泛的激活函数,可以作为你的默认选项。• 如果网络中存在大量未激活神经元,可以考虑leaky ReLU函数。• ReLU函数应该只用于隐藏层。• 如果是回归模型,在输出层上可以使用线性激活函数当神经网络很深时,梯度呈指数级增长,最后到输入时,梯度将会非常大,我们会得到一个非常大的权重更新,这就是梯度爆炸的问题

96如何解决梯度消失和爆炸问题:

1非饱和的激活函数(如 ReLU)2批量规范化(Batch Normalization)3梯度截断(Gradient Clipping)4更快的优化器1)、使用 ReLU、LReLU、ELU、maxout 等激活函数sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。2)、使用批规范化通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性。从上述分析分可以看到,反向传播式子中有w的存在,所以w的大小影响了梯度的消失和爆炸,Batch Normalization 就是通过对每一层的输出规范为均值和方差一致的方法,消除了w带来的放大缩小的影响,进而解决梯度消失和爆炸的问题。

97在深度学习中,通常会finetuning(微调)已有的成熟模型,再基于新数据,修改最后几层神经网络权值,为什么?

实践中的数据集质量参差不齐,可以使用训练好的网络来进行提取特征。把训练好的网络当做特征提取器。决定如何使用迁移学习的因素有很多,这是最重要的只有两个:新数据集的大小、以及新数据和原数据集的相似程度。有一点一定记住:网络前几层学到的是通用特征,后面几层学到的是与类别相关的特征。1、新数据集比较小且和原数据集相似。因为新数据集比较小,如果fine-tune可能会过拟合;又因为新旧数据集类似,我们期望他们高层特征类似,可以使用预训练网络当做特征提取器,用提取的特征训练线性分类器。2、新数据集大且和原数据集相似。因为新数据集足够大,可以fine-tune整个网络。3、新数据集小且和原数据集不相似。新数据集小,最好不要fine-tune,和原数据集不类似,最好也不使用高层特征。这时可是使用前面层的特征来训练SVM分类器。4、新数据集大且和原数据集不相似。因为新数据集足够大,可以重新训练。但是实践中fine-tune预训练模型还是有益的。新数据集足够大,可以fine-tine整个网络。与重新训练相比,fine-tune要使用更小的学习率。

98微调时候网络参数是否更新?

答案:会更新。

  1. finetune 的过程相当于继续训练,跟直接训练的区别是初始化的时候。
  2. 直接训练是按照网络定义指定的方式初始化。
  3. finetune是用你已经有的参数文件来初始化。
  4. fine-tuning 模型的三种状态 状态一:只预测,不训练。 特点:相对快、简单,针对那些已经训练好,现在要实际对未知数据进行标注的项目,非常高效; 状态二:训练,但只训练最后分类层。 特点:fine-tuning的模型最终的分类以及符合要求,现在只是在他们的基础上进行类别降维。 状态三:完全训练,分类层+之前卷积层都训练 特点:跟状态二的差异很小,当然状态三比较耗时和需要训练GPU资源,不过非常适合fine-tuning到自己想要的模型里面,预测精度相比状态二也提高不少。

99Attention机制的作用

Attention简单理解就是权重分配。减少处理高维输入数据的计算负担,结构化的选取输入的子集,从而降低数据的维度。让系统更加容易的找到输入的数据中与当前输出信息相关的有用信息,从而提高输出的质量。帮助类似于decoder这样的模型框架更好的学到多种内容模态之间的相互关系。

100Lstm和Gru的原理

Lstm由输入门,遗忘门,输出门和一个cell组成。第一步是决定从cell状态中丢弃什么信息,然后在决定有多少新的信息进入到cell状态中,最终基于目前的cell状态决定输出什么样的信息。Gru由重置门和跟新门组成,其输入为前一时刻隐藏层的输出和当前的输入,输出为下一时刻隐藏层的信息。重置门用来计算候选隐藏层的输出,其作用是控制保留多少前一时刻的隐藏层。跟新门的作用是控制加入多少候选隐藏层的输出信息,从而得到当前隐藏层的输出。

101什么是dropout

在神经网络的训练过程中,对于隐藏层神经单元按一定的概率将其随机从网络中丢弃,从而达到对于每个mini-batch都是在训练不同网络的效果,防止过拟合。

102DropConnect的原理

防止过拟合方法的一种,对每个节点与之相连的输入权值以一定的概率清0。

103用过哪些移动端深度学习框架?

开源的有:小米的MACE,骁龙的SNPE,腾讯的FeatherCNN和ncnn,百度的mobile-deep-learning(MDL);caffe、tensorflow lite都有移动端,只是可能没有上面的框架效率高。据传还有支付宝的xNN,商汤的PPL,不过都是自用,未开源。

104Adam

Adam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即 alpha)更新所有的权重,学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

105学习率的设定类型

1)固定学习率每次迭代每个参数都使用同样的学习率。找到一个比较好的固定学习率非常关键,否则会导致收敛太慢或者不收敛。2)不同的参数使用不同的学习率如果数据是稀疏的且特征分布不均,似乎我们更应该给予较少出现的特征一个大的更新。这时可能需要对不同特征对应的参数设定不同的学习率。深度学习的梯度下降算法中Adagrad 和Adam方法都针对每个参数设置了相应的学习率3)动态调整学习率动态调整就是我们根据应用场景,在不同的优化阶段能够动态改变学习率,以得到更好的结果。动态调整学习率是本篇的重点内容,为了解决梯度学习在一些复杂问题时出现的挑战,数据科学家们在动态调整学习率的策略上做了很多研究和尝试。4)自适应学习率自适应学习率从某种程度上讲也算是动态调整学习率的范畴,不过更偏向于通过某种算法来根据实时情况计算出最优学习率,而不是人为固定一个简单策略让梯度下降按部就班地实行。

106RNN梯度消失问题,为什么LSTM和GRU可以解决此问题

RNN由于网络较深,后面层的输出误差很难影响到前面层的计算,RNN的某一单元主要受它附近单元的影响。而LSTM因为可以通过阀门记忆一些长期的信息,相应的也就保留了更多的梯度。而GRU也可通过重置和更新两个阀门保留长期的记忆,也相对解决了梯度消失的问题。累乘变累加:RNN的梯度消失主要是因为在计算梯度的时候会出现隐藏层输出对于上一时刻的隐藏层输出求导,这个偏导算出来是(sigmoid'∈(0, 1/4)*w)的结果会接近0,又随着序列的增长而不断连乘,这样就会导致远距离的输入对于梯度的贡献会逐渐消失,近距离的输入梯度主导,从而是模型无法学习长距离的依赖关系。LSTM其实也会有细胞状态对上一时刻的细胞状态的梯度连乘,但是这个梯度中包含了累加项(f_t + ...),其中有一项是忘记门输出,可以控制梯度不至于过大或者过小。

107RNN容易梯度消失,怎么解决?

1)、梯度裁剪(Clipping Gradient)既然在BP过程中会产生梯度消失(就是偏导无限接近0,导致长时记忆无法更新),那么最简单粗暴的方法,设定阈值,当梯度小于阈值时,更新的梯度为阈值。优点:简单粗暴缺点:很难找到满意的阈值2)、LSTM(Long Short-Term Memory)一定程度上模仿了长时记忆,相比于梯度裁剪,最大的优点就是,自动学习在什么时候可以将error反向传播,自动控制哪些是需要作为记忆存储在LSTM cell中。一般长时记忆模型包括写入,读取,和忘记三个过程对应到LSTM中就变成了input_gate,output_gate,forget_gate,三个门,范围在0到1之间,相当于对输入输出进行加权的学习,利用大量数据来自动学习加权的参数(即学习了哪些错误可以用BP更新参数)。具体的公式表达:

优点:模型自动学习更新参数

108LSTM跟RNN有啥区别

LSTM与RNN的比较RNN在处理long term memory的时候存在缺陷,因此LSTM应运而生。LSTM是一种变种的RNN,它的精髓在于引入了细胞状态这样一个概念,不同于RNN只考虑最近的状态,LSTM的细胞状态会决定哪些状态应该被留下来,哪些状态应该被遗忘。RNN在处理长期依赖(时间序列上距离较远的节点)时会遇到巨大的困难,因为计算距离较远的节点之间的联系时会涉及雅可比矩阵的多次相乘,这会带来梯度消失(经常发生)或者梯度膨胀(较少发生)的问题,这样的现象被许多学者观察到并独立研究。为了解决该问题,研究人员提出LSTM。LSTM是门限RNN,其单一节点的结构如下图1所示。LSTM的巧妙之处在于通过增加输入门限,遗忘门限和输出门限,使得自循环的权重是变化的,这样一来在模型参数固定的情况下,不同时刻的积分尺度可以动态改变,从而避免了梯度消失或者梯度膨胀的问题。下面来看一些RNN和LSTM内部结构的不同:

109LSTM与GRU区别

1)GRU和LSTM的性能在很多任务上不分伯仲。2)GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。3)从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则用memory cell 把hidden state 包装起来

110卷积层和池化层有什么区别

更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH

欢迎关注、收藏、点赞后进行问题咨询及秋招建议!

#牛客在线求职答疑中心##牛客解忧铺##我发现了面试通关密码##如何判断面试是否凉了##实习,投递多份简历没人回复怎么办#
机器学习算法面经 文章被收录于专栏

介绍秋招面试过程中对机器学习算法、数据挖掘、python语言、C++语言、数据结构的面试题目和基础总结

全部评论
你好,请问这些有总结的链接吗?(礼貌求
点赞 回复 分享
发布于 2023-11-27 23:13 辽宁
讲解的很细致,果断关注了
点赞 回复 分享
发布于 2024-02-19 09:56 山东

相关推荐

2024-12-23 11:36
中南大学 Java
点赞 评论 收藏
分享
01-15 17:34
保定学院 Java
数学转码崽:学历没优势就得卷项目和实习啊,但是我看了一下你这个项目,什么雪花算法,搜索引擎,Docker,minio这些都属于通用的东西啊,根本不算亮点,没有任何业务相关性。 还有第二个看到统一鉴权,分片上传估计面试官都不想看了。连我一个偶尔刷刷牛客简历的都看多了,面试官估计早都看吐了。。。 秋招结束了,就尽量找找中小厂吧,毕竟你现在转行已经没时间了,高低有一段实习经历
点赞 评论 收藏
分享
评论
10
91
分享

创作者周榜

更多
牛客网
牛客企业服务