首页 > payphone_lx-阿里妈妈-面经——解答
头像
蒋豆芽
编辑于 2021-08-10 11:58
+ 关注

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



更多模拟面试

全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐