从今天起,豆芽有空也尽己所能,帮助一下大家。 面经来源: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的均值和方差,以便训练完成之后按照下式计算整体的均值和方差:             上面简单理解就是:测试模型中,对于均值来说直接计算所有batch 值的平均值;然后对于标准偏差采用每个batch 的无偏估计(无偏估计是用样本统计量来估计总体参数时的一种无偏推断)。 最后测试阶段,BN的使用公式就是:                 以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo   
点赞 5
评论 6
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
07-30 11:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务