首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客145335972号
北京邮电大学 电子信息类
发布于北京
关注
已关注
取消关注
@林小白zii:
机器学习面经-过拟合欠拟合、梯度消失爆炸、正则化
一、简介在机器学习中,有几个重要的现象和技术对于模型的训练和泛化能力起着至关重要的作用。过拟合(Overfitting)是指在训练数据上表现良好,但在未见过的测试数据上表现较差的现象。过拟合发生时,模型在训练集上学习到了数据的噪声和细节,而未能捕获数据的通用规律。过拟合通常发生在模型复杂度过高、训练数据过少或者特征过于丰富的情况下。解决过拟合的常用方法是增加训练数据、减少模型复杂度,或者使用正则化技术。欠拟合(Underfitting)是指模型在训练数据上无法很好地拟合,导致训练和测试误差都较大的现象。欠拟合通常发生在模型复杂度不足或者训练数据质量较差的情况下。解决欠拟合的常用方法包括增加模型复杂度、优化特征选择、增加特征数量等。梯度消失和梯度爆炸是指在深度神经网络中,通过反向传播算法计算梯度用于更新参数。梯度消失是指在深层网络中,由于链式法则的连乘,导致梯度逐渐变小,从而导致较早层的参数更新非常缓慢,导致这些层的权重几乎没有更新。梯度爆炸是指梯度变得非常大,导致参数更新过程不稳定。这两个问题会影响深层神经网络的训练效果。解决这些问题的方法包括使用梯度剪裁(Gradient Clipping)等技术。正则化(Regularization)是一种常用的降低过拟合的技术。它通过在损失函数中加入惩罚项,限制模型的参数大小,从而防止模型过度拟合训练数据。常见的正则化方法有L1正则化和L2正则化。L1正则化通过增加参数的绝对值作为惩罚,倾向于使参数变得稀疏;L2正则化通过增加参数的平方作为惩罚,倾向于使参数较小。正则化技术可以帮助模型更好地泛化到未见过的数据,提高模型的泛化性能。二、面经1、在项目实践中是否遇到过过拟合或者欠拟合的现象,是怎么解决的?2、droupout是什么,介绍一下?3、dropout它在这个预测和训练的时候有什么区别呢?4、介绍一下BN的原理,推导一下BN?5、BN和LN的区别是什么?6、所有的模型都可以加BN层吗?7、BN一般放在什么位置?8、Pytorch中bn层在训练和测试中有什么不同,怎么实现的?9、bn和dropout同时使用产生的问题?10、梯度消失和梯度爆炸产生的原因?11、如何确定是否出现梯度爆炸?12、如何缓解梯度消失,梯度爆炸?13、梯度下降陷入局部最优有什么解决办法14、推导一下反向传播算法(BP)?15、什么是L1 L2正则,介绍一下?16、为什么l1能产生稀疏解?17、L1 L2正则项适用场景,特征稀疏的时候用哪个比较好?三、面经参考回答1、在项目实践中是否遇到过过拟合或者欠拟合的现象,是怎么解决的?参考回答:过拟合:从数据入手,获得更多的训练数据。因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。当然,直接增加实验数据一般是很困难的,但是可以通过一定的规则来扩充训练数据。比如,在图像分类的问题上,可以通过图像的平移、旋转、缩放等方式扩充数据。降低模型复杂度。适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。添加L1,L2正则化。添加Dropout。添加BN层。采用集成学习相关方法。我们可以将数据集划分为训练集、验证集、测试集,在训练过程中使用训练集,在每一个epoch结束后使用验证集验证模型效果,画出训练曲线,这样就可以判断是否过拟合了。当发现网络有点过拟合了,可以直接停止训练了。欠拟合:添加新的特征,当特征不足或者特征与样本标签之间的相关性不足时,往往会发生欠拟合的一些现象,通过挖掘“上下文特征”“ID类特征”“组合特征”等新的特征,往往能够取得更好的效果。在深度学习中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、等都可以成为丰富特征的方法。增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可 以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现 象时,则需要有针对性地减小正则化系数。2、droupout是什么,介绍一下?参考回答:dropout是一种我们在进行神经网络训练的时候,一种正则化的方法,在正常没有dropout的情况下,所有神经元都有正常的进行参数的更新,那么dropout它其实会指定一个概率,在训练过程中,每一次batch都会以这个概率让部分的神经元失活,这样每次只有部分的神经元可以更新权重。3、dropout它在这个预测和训练的时候有什么区别呢?参考回答:dropout其实我们在训练模型的时候会用,在预测的时候其实是没有dropout的,就是所有神经元都会参与。然后因为我们在训练的时候会让部分的神经元失活,那么没有失活的部分就会训练的很强,这次batch让这部分训练的很强,下一次让另外一部分训练的很强,所以总体的w权重参数就会增大,后面计算结果的时候会乘以一个概率,也叫做平滑系数,相当于对整体做一个缩放。一般来说,在调用模块中,这一步其实都是封装好的,不需要我们自己去做。4、介绍一下BN的原理,推导一下BN?参考回答:Batch Normalization,简称BN,是一种用于深度神经网络中提高训练速度和稳定性的技术。它在网络的每一层对输入进行标准化,以减少梯度消失和爆炸问题,从而加速收敛过程并提高模型的泛化能力。BN的原理:在深度神经网络的训练过程中,每层的输入分布可能会随着训练过程而变化,这导致了梯度消失和爆炸问题,从而使得训练变得困难。BN通过标准化每一层的输入,使其均值为0,方差为1,从而降低了输入分布的变化。此外,BN还引入了可学习的参数,用于对标准化后的数据进行线性变换和平移,以恢复网络的表达能力。这使得网络更容易训练,收敛更快,同时还有一定的正则化作用,有助于防止过拟合。BN的推导过程:通过对每一层的输入都进行批标准化,网络在训练过程中可以更稳定地更新参数,从而加速收敛并提高模型的泛化能力。需要注意的是,在推理(测试)阶段,需要使用训练阶段学到的均值和方差进行标准化,而不是使用当前批次的统计量。如果用一个坐标来表示的话,就是它能够将数据全部拉到以原点为中心附近,将数据中心化,假设我们的激活函数用tanh,我们将数据拉到了0点附近,就能缓解梯度消失,而且梯度也更大,训练速度也更快。另外,加了BN层,也可以将学习率调大一点,这也可以加快训练速度。5、BN和LN的区别是什么?参考回答:Layer Normalization,LN是“横”着来的,对一个样本,经过同一层的所有神经元做归一化。BN:Batch Normalization,BN是“竖”着来的,经过一个神经元的所有样本做归一化,所以与batch size有关系。二者提出的目的都是为了加快模型收敛,减少训练时间。6、所有的模型都可以加BN层吗?参考回答:并不是的,在推荐系统中,用的比较多的是全链接的网络,这种一般可以加BN,但是比如说RNN,LSTM这种,就不适合加BN,一般是加LN,因为它们是基于sequence的建模方式,它的数据的输入是长短不一的,所以加BN的话,它的均值和方差不稳定,不会起到很好的效果,LN的做法是给每一层做一个均值和方差,所以不涉及数据长短不一的问题。7、BN一般放在什么位置?参考回答:一般回加在这一层神经元输入之后,下一层神经元输入之前,一般也就是激活函数层之前。8、Pytorch中bn层在训练和测试中有什么不同,怎么实现的?参考回答:对于BN,在训练时,是对每一批的训练数据进行归一化,即用每一批数据的均值和方差,而在测试阶段,如进行一个样本的观测,并没有batch的概念,因此这个时候用的均值和方差是全部训练数据的均值和方差,可以通过移动平均法求得。对于BN,当一个模型训练完成后,它所有的参数都确定了。9、bn和dropout同时使用产生的问题?参考回答:BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2的效果,相反可能会得到比单独使用更差的效果。这个我自己在实验中测试过,就是如果两者同时使用的话,训练的得到的效果更差。我看过一些论文说是具体的原因就是因为训练和测试的时候出现的方差偏移导致的,随着网络的加深,这个偏差会越来越大。10、梯度消失和梯度爆炸产生的原因?参考回答:目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。在神经网络中,根据链式法则,它的公式是每一层神经元对上一层的输出的一个loss损失求偏导,然后是一个连乘的形式,公式展开中有一项是激活函数的导数,如果我们这个激活函数使用的是sigmoid或者是tanh,我们知道sigmoid的导数形式是f(x)(1-f(x)),那么这个结果都小于1的话,那么即使这个结果是0.99,在经过足够多层传播之后,误差对输入层的偏导会趋于0。同理,如果这个结果大于1的话,误差对输入层的偏导会趋于无穷大。11、如何确定是否出现梯度爆炸?参考回答:训练过程中出现梯度爆炸会伴随一些细微的信号,如:模型无法从训练数据中获得更新(如低损失)。模型不稳定,导致更新过程中的损失出现显著变化。训练过程中,每个节点和层的误差梯度值持续超过 1.0。训练过程中,模型损失变成NaN。12、如何缓解梯度消失,梯度爆炸?参考回答:梯度消失:可以采用ReLU激活函数有效的解决梯度消失的情况,也可以用Batch Normalization解决这个问题。梯度爆炸:1.重新设计网络模型。在深度神经网络中,梯度爆炸可以通过重新设计层数更少的网络来解决。2.梯度剪切,设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。3.使用不同的激活函数。如用ReLU,LeakReLU。4.使用BN,BN可以将每次batch的数据分布拉到一个0点附近,BN将输出从饱和区拉倒了非饱和区。如果我们看TanH的结构,我们就知道,在0点附近梯度更大。可以缓解梯度消失或者爆炸的问题。5.使用残差结构,相比较于以前网络的直来直去结构,残差中有很多这样的跨层连接结构,这样的结构在反向传播中具有很大的好处,6.使用LSTM等门控网络。13、梯度下降陷入局部最优有什么解决办法参考回答:使用模拟退化技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每步迭代过程中,接受“次优解”的概率随着时间的推移而逐渐降低,从而保证算法的稳定。使用随机梯度下降,与标准的梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机的因素。于是,即便陷入局部极小点,它计算出的梯度时加入了随机因素,于是,即便陷入局部极小点,它计算出的梯度可能不为0,这样就有机会跳出局部极小继续搜索。14、推导一下反向传播算法(BP)?参考回答:反向传播(Backpropagation,简称BP)是一种用于训练人工神经网络的算法,通过计算损失函数对网络中每个参数的梯度,并使用梯度下降法来更新参数,以最小化损失函数。下面是反向传播算法的推导过程,涉及了链式法则的应用。假设我们有一个神经网络,其中包含多个层(输入层、隐藏层和输出层),每一层包含多个神经元。我们以均方误差(MSE)作为损失函数,网络的目标是最小化这个损失。各个步骤具体的公式如下:15、什么是L1 L2正则,介绍一下?参考回答:l1和l2正则化方法都可以对模型中参数做一个惩罚,在一定程度上起到防止过拟合的效果。l1正则化是参数的绝对值之和,l2正则化是参数的平方和。16、为什么l1能产生稀疏解?参考回答:从梯度角度讲,L1下各个参数的梯度为1或者-1,所以在参数更新的时候,每次会减去一个数(学习率),所以在一定迭代次数后,参数会变成0;而L2参数每次更新为(1-α)w,所以它相当于是做了平滑,最终使得每个参数比较小。从几何角度讲,以二维坐标为例子,L1的解空间在坐标轴是一个正方形,跟正则项的等高线相交于的概率更大,导致最优参数为0。而L2的解空间是一个圆形,跟正则项相交的概率更小。从贝叶斯的角度来讲,l1服从拉普拉斯分布,它的图像就是在0处有一个高高的凸起,所以从概率上讲,那么最终落在0上的概率很大。l2服从的是高斯分布,那么落在0周围的概率很大,因为高斯分布就是容易落在均值附近。17、L1 L2正则项适用场景,特征稀疏的时候用哪个比较好?参考回答:由于L1、L2的特点,因此它们也有各自不同的适用场景。L1:使模型中尽可能多的参数值为0,因此适用于:模型剪枝,模型压缩,特征选择。是一种从改变模型结构的角度(减少模型参数的数量)解决过拟合的方式。L2:使模型中的所有参数值尽可能小,使得模型尽量不依赖于某几个特殊的特征,而是使每个特征都得到尽量均衡的权重,因此适用于解决普通的过拟合问题,即从参数分布(让分布尽可能的均匀)的角度解决过拟合的问题,这也是常用的解决过拟合的方式。四、小结过拟合和欠拟合都是模型泛化能力的问题,需要在模型复杂度和数据规模之间进行平衡。梯度消失和梯度爆炸会影响神经网络的训练稳定性,需要注意权重初始化和激活函数的选择。正则化是防止过拟合的有力工具,可通过引入惩罚项来控制模型的复杂度。
点赞 9
评论 6
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
鱼鱼搞点offer
05-16 09:45
菜鸟集团_研发部_计算机视觉算法工程师(准入职员工)
菜鸟集团25届实习内推
🔥菜鸟集团25届实习生招聘启动啦!大家留下姓名缩写+岗位,我后台跟进,能捞就捞!25届毕业的同学可以准备投递暑期实习了,赶紧完善好简历 ,mark本帖 ,招聘启动后第一时间评论区挨个踢大家 注意每个同学只有一次投递机会,且只能选择一个岗位投递 !Mark住,届时第一时间提醒。划重点!暑期实习下周启动!岗位设计研发类、算法类、产品类、物流类、米哈游、销售类、职能类,工作地点以杭州菜鸟总部园区为主,hc多多直通车!在招聘正式启动之前,同学可以通过提前内推通道投递简历,正式启动后第一时间可进入面试流程,先人一步拿offer【投递链接】https://jinshuju.net/f/JaJ3nS内推人...
投递菜鸟集团等公司10个岗位 >
点赞
评论
收藏
转发
carpe_dime
05-20 21:53
已编辑
门头沟学院 电子信息类
offer选择求助
本人26届末流985硕,研一下,目前有两个日常实习的offer的选择,mmt感知算法岗实习和百度智能驾驶技术部感知算法岗实习,实习内容相差不大,工作强度也差不多。现在陷入了选择纠结中,mmt的offer拿的更早,base苏州,实习薪资待遇可观。百度的offer面试周期太长了(一面结束后一个星期才收到二面通知,还在约面中),base北京,实习薪资较低,基本上收支平衡,生活压力较大。目前纠结的是百度的自驾岗背书能力好像更强一些,但是地处北京,工资不高。(其实内心还是想去苏州的mmt,可是放不下百度的背书能力)想问问大家以后想从事自驾算法岗,mmt和百度的背书能力相差...
投递百度等公司10个岗位 >
实习必须要去大厂吗?
点赞
评论
收藏
转发
牛客330273880号
昨天 10:49
上海大学 电气类
工作真是自己求来的
点赞
评论
收藏
转发
给我一个北京的offer吧😢
04-30 15:25
门头沟学院
牛马后端
150到260,真就给我开150,后端没法过了,集体趋势吧
点赞
评论
收藏
转发
_陈顺
05-18 19:24
门头沟学院 电子信息类
腾讯 后台开发 三面+HR面
概述:5月9号三面,腾讯会议,40分钟,主要问项目的性能测试和对后台开发的一些思考,答得不是很好,一度以为会挂,但5月11号还是进入HR面了,最终5月13号OC,这两面的问题不多,一并发出来,有些我就不发我的蹩脚答案了三面:1.自我介绍2.项目是高性能服务器,性能有多高?(讲性能测试,因为一面面试官提过Nginx,就说了下和Nginx的对比)3.所以说这个服务器可以替换Nginx吗?很多面试者都说自己的服务器测试结果比Nginx好,那为什么还是Nginx被使用的最多,对此有什么看法?(我们的服务器只侧重一个点,Nginx实现了更多的功能)4.那给这些服务器加上对应的功能是不是就可以替代了(应该...
我的实习求职记录
软件开发2024笔面经
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
因为找实习和女朋友分手了
8335
2
...
开摆了,写小说去了
6812
3
...
【有奖活动】浅聊一下我的实习⭐
6723
4
...
双非本 腾讯WXG暑期已offer | 附面经
6634
5
...
没offer的我们也很优秀偶
6553
6
...
写在最后,一个大专人9年的自述
6180
7
...
荣耀一面
5776
8
...
华为暑期开奖
5399
9
...
华为暑期开奖
5240
10
...
快手客户端开发工程师(1)
4085
正在热议
#
牛客帮帮团来啦!有问必答
#
834006次浏览
13152人参与
#
机械制造薪资爆料
#
321279次浏览
3741人参与
#
晒一晒我的offer
#
3480376次浏览
55360人参与
#
0offer是寒冬太冷还是我太菜
#
429719次浏览
4954人参与
#
金三银四,你有感觉到吗
#
330681次浏览
4232人参与
#
实习生如何通过转正
#
27479次浏览
361人参与
#
海康威视求职进展汇总
#
102380次浏览
1221人参与
#
我在牛爱网找对象
#
51069次浏览
335人参与
#
毕业租房也有小确幸
#
27325次浏览
1493人参与
#
实习生应该准时下班吗
#
81267次浏览
598人参与
#
如何写一份好简历
#
276833次浏览
4113人参与
#
软件开发投递记录
#
480006次浏览
7251人参与
#
如果可以选,你最想从事什么工作
#
187032次浏览
3095人参与
#
荣耀求职进展汇总
#
71950次浏览
734人参与
#
实习必须要去大厂吗?
#
14158次浏览
225人参与
#
你遇到过哪些神仙同事
#
18895次浏览
282人参与
#
求职遇到的搞笑事件
#
19765次浏览
287人参与
#
你觉得找工作该拿大厂还是小厂练手
#
62022次浏览
873人参与
#
你觉得通信/硬件有必要实习吗?
#
23718次浏览
429人参与
#
实习工作,你找得还顺利吗?
#
43202次浏览
477人参与
牛客网
牛客企业服务