机器学习面试问题

2019.2.17.Sunday.为了面试.

百度查了一些机器学习面试问题,在此对不会的知识点做一下记录。

一、优化方法

https://www.tuicool.com/articles/EfInM3Q

1. 梯度下降法(随机梯度下降法SGD、批量梯度下降法)

BGD---最小化所有训练样本的损失函数,使最终求解的是全局的最优解,对于大规模样本问题效率低下。 

SGD---最小化每条样本的损失函数,大方向是全局最优解的,结果往往是在全局最优解附近,适用于大规模训练样本情况。

缺点:其更新方向完全依赖于当前的batch,因而其更新十分不稳定,每次迭代计算的梯度含有比较大的噪音。解决这一问题的一个简单的做法便是引入momentum。

1.2. momentum:https://blog.csdn.net/wang987158/article/details/82711329

即更新的时候在一定程度上保留之前更新的方向,同时利用 当前batch的梯度 微调最终的更新方向。相比原始梯度下降算法,动量梯度下降算法有助于加速收敛。当梯度与动量方向一致时,动量项会增加,而相反时,动量项减少,因此动量梯度下降算法可以减少训练的震荡过程。

1.3. NAG:动量梯度下降算法的改进版本,其速度更快。

1.4. AdaGrad:一种学习速率自适应的梯度下降算法,在训练迭代过程,其学习速率是逐渐衰减的,经常更新的参数其学习速率衰减更快,这是一种自适应算法。

1.5. Adadelta:是对Adagrad进行了计算上的简化。RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间。

1.6. RMSprop:是对Adagrad算法的改进,引入一个衰减系数,让梯度平方的累计量r 每回合都衰减一定比例。

优:有效减少了出现梯度爆炸情况,因此避免了学习速率过快衰减的问题。 

缺:又引入了新的超参—衰减系数ρ,依然依赖于全局学习速率。

1.7. Adam:带有动量项的RMSprop。【1.5 1.6 1.7是比较相近的算法】

2. 牛顿法和拟牛顿法

牛顿法:(计算Hessian矩阵)

优点: 二阶收敛,收敛速度快; 牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。

缺点: 牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。

拟牛顿法:

改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆, 拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。不需要二阶导数的信息,所以有时比牛顿法更为有效。

3. 共轭梯度法(Conjugate Gradient)

介于SGD与牛顿法之间,仅需一阶导数信息,克服了SGD收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺

优点:所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。

4. 启发式优化方法

模拟退火方法、遗传算法、蚁群算法以及粒子群算法等。设定一个目标函数,每次迭代根据相应的策略优化种群。

二、各种激活函数

 https://blog.csdn.net/u011684265/article/details/78039280

https://blog.csdn.net/kangyi411/article/details/78969642

三、损失函数的选择

https://www.cnblogs.com/brainstorm/p/8819731.html

https://blog.csdn.net/qq_34555202/article/details/82491037

pytorch:https://blog.csdn.net/qq_16305985/article/details/79101039

四、机器学习知识点

https://www.cnblogs.com/zuochongyan/p/5407053.html

1. 拉普拉斯修正

2. L1对应拉普拉斯分布,L2对应高斯分布,L1偏向于参数稀疏性,L2偏向于参数分布较为稠密(核心:L2对大数,对outlier离群点更敏感!)下降速度:最小化权值参数L1比L2变化的快

https://www.cnblogs.com/hellochennan/p/6654084.html

3. 生成模型和判别模型(是否学习联合概率分布)

4. gbdt和xgboost区别

https://blog.csdn.net/wyisfish/article/details/79167271

5. 贝叶斯定理会根据一件事发生的先验知识告诉你它后验概率

6. L1、L2正则之间有什么不同

7. 第一类误差和第二类误差(第一类误差指的是假正率,第二类指的是假负率)

8. 概率和似然

9. 深度学习与机器学习

10. 生成模型与判别模型

11. 如何确保你的模型没有过拟合(交叉检验、正则化)

12. 什么是核技巧,有什么用处

确保在高维空间不需要明确计算点的坐标,而是计算数据的特征空间中的内积。这使其具有一个很有用的属性:更容易的计算高维空间中点的坐标。许多算法都可以表示称这样的内积形式,使用核技巧可以保证低维数据在高维空间中运用算法进行计算。

https://www.cnblogs.com/tornadomeet/p/3395593.html :各个算法的公式以及优缺点

13. 线性回归

14. GBDT是回归树,不是分类树。其核心就在于,每一棵树是从之前所有树的残差中来学习的。为了防止过拟合,和Adaboosting一样,也加入了boosting这一项。

https://blog.csdn.net/u013063099/article/details/80972272

15. CART只能是二叉树,ID3、C4.5可以是多叉树或二叉树

16. Gini指数 vs 熵 有什么区别那?

  • Gini指数的计算不需要对数运算,更加高效;Gini指数更偏向于连续属性,熵更偏向于离散属性。

17. 集成学习(ensemble learning)

18. Boosting关注的主要是降低偏差

19. AdaBoost只适用于二分类问题

20. GBDT(内部都是回归树)(可用于回归和分类)

21. GBDT和随机森林

  • 随机森林对异常值不敏感,GBDT对异常值非常敏感
  • 随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成
  • 随机森林通过减小模型的方差提高性能,GBDT通过减少模型偏差提高性能

22. L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0.

23. 逻辑回归 vs 线性回归

24. 逻辑回归是最大熵对应为二类时的特殊情况,也就是说,当逻辑回归扩展为多类别的时候,就是最大熵模型。

25. 本来的算法也可以求解SVM,但是之所以要用对偶问题来求解,优点是:

  • 一是对偶问题往往更容易求解
  • 二是自然引入核函数,进而推广到非线性分类问题

https://www.cnblogs.com/ljy2013/p/6890408.html

26. RF与GBDT之间的区别

27. SVM与树模型之间的区别

https://blog.csdn.net/sinat_35512245/article/details/78796328

28. GBDT和XGBoost的区别是什么?

29. 关于LR

30. LR和SVM的联系与区别?

五、LSTM、GRU的各种门及公式

 

你可能感兴趣的:(机器学习面试问题)