Java教程

面试八股

本文主要是介绍面试八股,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.防止过拟合的方法有哪些?

过拟合现象就是模型在train data上表现很好,但是在test data上表现不好。在神经网络的loss中表现为train loss一直在下降,但是dev set上的loss在某个节点开始上升。
过拟合 == 泛化能力差

过拟合出现的原因:

  • 训练数据太少,样本不足;
  • 训练数据中有大量的噪音,导致模型更多的关注了噪音特征,而忽略了数据本身的特征;
  • 模型太复杂【和极少的训练数据量相比】;

对应的解决方案:

  • 增加训练数据(data augmentation):不同领域做数据增强的方法不一样,CV领域可以旋转、平移等,NLP领域可以back translation、相似词替换等(data augmentation for NLP的好文章推荐,总结的很好,https://amitness.com/2020/05/data-augmentation-for-nlp/);
  • 控制模型的复杂度,例如dropout、early stopping、weight decay;
  • 正则化方法(加入正则项):l1-norm、l2-norm;

只有在优化方法是SGD时,l2-norm == weight decay。

2. L1-norm(Lasso)和L2-norm(Ridge)的区别和联系?

相同的点:都可以用来解决过拟合问题的,提高模型的泛化能力

不同的点:

  • l1-norm使用的是每个权重值的绝对值之和,l2-norm使用的是每个权重值的平方和
  • l1-norm会得到稀疏解,可用于特征选择,l2-norm不会;
  • l1-norm下降速度更快;

3.深度学习最优化的方法有哪些?有什么区别?

常用的最优化方法:SGD,Adagrad,Adadelta,Adam,Adamax,Nadam。
transformer和bert中用的最优化方法都是Adam,所以着重问一下Adam的原理。

Adam

核心思想:利用梯度的一阶矩和二阶矩动态的调整每个参数的learning rate(自适应learning rate),即当我们知道某些参数确实需要比其他参数变化更快时,此时继续像SGD那样用固定的lr是不合适的。
优点:动态调整learning rate,所以收敛速度很快。
缺点:Adam无法对权重过大的项做出惩罚,如果引入l1-norm,只会导致越大的权重惩罚越大。

4.归一化

作用:

  • 归一化加快了梯度下降求解最优解的速度;
    未使用归一化时,模型训练需要迭代很多次才能收敛;当时用了归一化时,使用梯度下降求解时能较快较准的收敛。

  • 归一化可能提高精度。
    一些分类器需要计算样本之间的距离(如欧式距离、曼哈顿距离等)。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,可能实际情况是此时值域范围小的特征更重要,从而有可能提高精度。

归一化的类型:
a.线性归一化;b.标准差标准化;c.非线性归一化。

  • min-max标准化(线性变换,数据落在(0,1)之间),这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
  • z-score标准化(处理后服从标准正态分布),方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕

BN批量归一化(Batch Normalization)

作用:为解决内部协方差偏移问题

LN层归一化 (layer Normalization)

参考资料:
算法面试问题一

这篇关于面试八股的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!