面试八股
作者:互联网
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)
参考资料:
算法面试问题一
标签:八股,归一化,拟合,面试,Adam,l1,data,norm 来源: https://www.cnblogs.com/ttyangY77/p/16313554.html