payphone_lx-阿里妈妈-面经——解答

从今天起,豆芽有空也尽己所能,帮助一下大家。

面经来源:https://www.nowcoder.com/discuss/702074?source_id=discuss_experience_nctrack&channel=-1


1. 牛顿法和拟牛顿法介绍一下

牛顿法可由二阶泰勒展开求导可近似得到牛顿法迭代公式

但是在实际应用过程中,我们会发现海塞矩阵的逆矩阵往往计算比较复杂,于是又有了拟牛顿法来简化这一过程。

在拟牛顿法中,考虑优化出一个n阶矩阵D来代替海塞矩阵的逆矩阵。可以发现海塞矩阵逆矩阵的近似矩阵D(x)的选择条件比较灵活,可以有多种具体的实现方法。比较常用的算法是DFP算法替代海塞矩阵逆矩阵的迭代公式


2. 有哪些优化方法使用了二阶动量?

Adagrad法、Adadelta法、RMSProp法、Adam法


3. 描述一下过拟合现象

过拟合:训练集效果很好,测试集效果较差

欠拟合:训练集效果差,测试集效果也差。


4. 抑制过拟合的方法有哪些?

扩充数据集、l1、l2,dropout、BN、验证集、模型集成


5. 介绍一下BatchNorm。

BN(Batch Normolization)是Google提出的用于解决深度网络梯度消失梯度爆炸的问题,可以起到一定的正则化作用。我们来说一下它的原理:

批规范化,即在模型每次随机梯度下降训练时,通过mini-batch来对每一层卷积的输出做规范化操作,使得结果(各个维度)的均值为0方差为1

BN操作共分为四步。输入为,第一步计算均值:

第二步计算数据方差:

第三步进行规范化:

第四步尺度变换和偏移:

表示mini-batch中的数据个数,可以看出,BN实际就是对网络的每一层都进行白化操作白化操作是线性的,最后的“尺度变换和偏移”操作是为了让BN能够在线性和非线性之间做一个权衡,而这个偏移的参数 是神经网络在训练时学出来的

经过BN操作,网络每一层的输出小值被“拉大”,大值被“缩小”,所以就有效避免了梯度消失和梯度爆炸。总而言之,BN是一个可学习、有参数(γ、β)的网络层


6. BN在测试阶段使用的mean、var是如何获得的?

训练时,均值和方差针对一个Batch

测试时,均值和方差针对整个数据集而言。因此,在训练过程中除了正常的前向传播和反向求导之外,我们还要记录每一个Batch的均值和方差,以便训练完成之后按照下式计算整体的均值和方差

img

上面简单理解就是:测试模型中,对于均值来说直接计算所有batch 值的平均值;然后对于标准偏差采用每个batch 无偏估计(无偏估计是用样本统计量来估计总体参数时的一种无偏推断)

最后测试阶段,BN的使用公式就是:

img



以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo



#阿里巴巴22届秋招面试##面经##阿里巴巴##算法工程师#
全部评论
需要妈妈内推的可以联系我,任何岗位都可以内推
2 回复 分享
发布于 2021-08-10 14:28
干货满满,蟹蟹楼主~
1 回复 分享
发布于 2021-08-10 12:14
赞!
1 回复 分享
发布于 2021-08-10 12:15
1 回复 分享
发布于 2021-08-10 17:22
博主您好,能讲一下L1.L2正则化的区别和适用场景吗?
点赞 回复 分享
发布于 2021-08-16 20:42
求问楼主 阿里妈妈今年秋招什么时候发意向书,等了超过一周了🙏🙏🙏🙏🙏🙏
点赞 回复 分享
发布于 2021-09-08 06:56

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
评论
5
36
分享
牛客网
牛客企业服务