机器学习面试问题总结

1

  • lightgbm, xgboost RF和GBDT的异同(这个问题属于必问问题,对于ID3,C4.5,CART也要了解,对于xgb的算法原理要充分理解,比如损失函数的推导过程,为什么要使用二阶泰勒展开。最好有一些调参经验)
  • svm损失函数推导
  • 朴素贝叶斯公式推导与实现
  • 处理不平衡常用方法
  • 卷积层相比FC层有哪些优势?
  • 非线性分类算法有哪些
  • 如何判断一个算法是线性的还是非线性的?
  • stacking/boosting/bagging的区别
  • 手动实现堆排序
  • 求AUC
  • L1和L2的区别
  • 实现快排
  • LR的实现,优点,如何并行,特征有共线性会怎么样?14.pca和lda
  • 常见激活函数的优缺点 16.从方差和偏差的角度比较bagging和boosting
  • 经验风险、期望风险、结构风险
  • 分层采样和蓄水池采样,O(N)的洗牌算法
  • SVM与LR的区别
  • 一阶优化器,二阶优化器
  • 手写kmeans
  • BN/LN/WN的区别
  • 实际场景下做softmax容易出现一些问题,怎么解决
  • 扔鸡蛋问题(了解到O(kn)的做法即可)
  • 进程和线程的区别
  • Python/C++多线程,多进程如何使用
  • Python迭代器,装饰器
  • Bootstrap抽样
  • 特征选择方法
  • 野指针是什么意思
  • 64匹马,八个赛道,找出最快的四匹,最坏情况下最少要比多少次(更常见的是25匹马,5个赛道找出最快的3匹)。
  • 12个小球,其中有一个与其他的重量不一样,给你一个天平,最坏情况下最少称多少次可以找出重量不同的小球。
  • 1000杯水中有一瓶是毒药,小老鼠喝一滴一小时就会死,给你10只小老鼠,在一小时内找出这瓶水 。
  • P-R曲线和ROC曲线的区别
  • 什么是凸问题?
  • 常见的凸优化方法?
  • CNN/RNN/LSTM的原理
  • 从方差,偏差,噪声的角度解释泛化误差
  • 特征工程相关。比如如何处理类别特征?onehot,tfidf会出现什么问题之类。
  • 词嵌入embedding相关知识(主要是word2vector)
  • 梯度爆炸/梯度消失
  • 池化层,卷积层的作用
  • dropout(训练和测试阶段分别如何处理)
  • MLE,MAP和贝叶斯估计的区别
  • DNN反向传播的推导
  • LR为什么用交叉熵而不是MSE?
  • 为什么LR权重可以全部初始化为0,NN不行
  • 常见的几个聚类算法
  • 异常检测/推荐基本方法(这个视部门业务而定)
  • 判别式模型和生成式模型

2

  • 研究生阶段最有挑战的项目是什么?
  • 你在这篇论文里用到的是GloVe,为何不用word2vec,或者说word2vec与GloVe有什么区别?
    我大致说了下他们的区别:word2vec是NNLM的一个较为典型的代表,其利用了DNN的方法来训练获取到词向量,而且词向量是中间产物,这个思路最早是Bengio提出,Google Brain提出的word2vec让词向量火了起来。而GloVe是采用词频统计信息,利用一些数学方法逐步优化得来,它没有神经网络的结构,所以词向量训练的速度相对更快。(这里当时不记得具体的公式推导了,原论文我倒是看过,但是当时记得不清了,实际上GloVe是词共现矩阵+类SVD的方法)
  • 你清楚word2vec吗,大致描述下word2vec的结构以及训练方法。
    清楚(好刚的我,面完发现答的有瑕疵),从宏观上描述了DNN的一个结构,从输入(大致带过分词,词表构建,one-hot等过程),到隐层,到输出层。然后详细讲了两种训练结构,即CBoW和Skip-Gram,但是当时这两种方法被我说反了。(当时并无觉察)讲完两种训练方法后,大致介绍了下训练时候词表大小过大,输出层过大的优化方法,即:hierarchical softmax和negative sampling。
  • 现阶段NLP的研究相对CV发展还是很缓慢,你认为是什么原因?
  • 你知道隐马尔可夫模型吗,大概介绍下。
  • 维特比算法其实是一种动态规划算法,动态规划算法通常用来解决什么问题,在HMM里是怎么使用的?
  • 快结束时,来道算法题吧,在一个敏感词过滤的场景下,要怎么在一个字符串里找出敏感词的位置?
    当时懵了,没想出来,只说了一个暴力解。(面试官应该是想听到KMP一类的算法)
  • NLP岗位,很多面试官喜欢问:HMM、CRF、LDA这些知识。
  • 获取的词向量你是怎么获取的?
  • 你的词向量自己训练过吗?
  • 你知道几种词向量的方法?
    这里说的很详细,我带了一下传统的,如IDF、词袋、LDA,GloVe等偏统计方法,然后具体描述了NNLM下的模型:word2vec(和一面一样,介绍的比较详细),character level CNN Model(英文适用,中文不太适用);转向RNN结构:传统RNN将序列压缩至向量的过程,LSTM解决RNN长依赖模型,双向语言模型(BiLSTM);根据双向语言模型,导出了ELMo以及内部细节;主流热门的Transformer系列:Transformer内部细节详细讲了一下,然后转向GPT(Transformer Decoder,单向模型,和之前的双向模型做了个区分),详细说了一下,然后是BERT(Transformer Encoder,双向语言模型,和GPT的对比和ELMo的相同点,以及区别)详解。
  • n元模型了解吗,如果共现频率为零怎么解决?
    大致讲了下ngram与n阶马尔可夫。共现为0的解决方案有点忘记了,但是提了一下在GloVe中有提及这个情况的解决方案,但是我也忘记了。
  • 你认为为什么BERT能达到这么好的效果?
  • 注意力机制你了解多少,或者说你了解哪几种?
    注意力机制最初是在CV领域用的比较多,其次被应用到了NLP领域,并且取得了较好的效果。我主要研究NLP比较多,CV了解不深,所以只了解NLP的两种attention。最早的Attention是在seq2seq中提出(或者说Encoder-Decoder模型),讲了下这个模型注意力机制的细节,以及注意力获取的方式,文献名我忘记了,原始的论文应该是NMT相关场景。然后讲了BERT的Self-Attention细节,比如Q、K、V这些。
  • LSTM你了解吗,它的大致结构是怎么样的?
  • 假设输入是n维,LSTM的参数量为多少?
  • 正则化你用过吗,有哪些正则化方法?
  • 还有其他的吗?
    有,比如Dropout、Batch Normalization
  • 文本相似性一般有哪几种度量方法?
    之前项目里有过这个相似性的问题,我不知道面试官具体想要的点在哪,就先说了下VSM的基础知识,他又再次深入地问了下,可以用什么模型。
    然后我大致说了下常用的方法,比如最简单的word2vec加权,然后用VSM,RNN得到固定维度的向量后,用VSM,以及这一系列的方法。然后补充说了,利用深度学习转化为二分类的问题的思路和方法,以及BERT中的使用,因为BERT是有做文本相似性任务的。深度学习之外,还有很多方法,比如主题模型、LDA之类的,我当时没想到,面试完后想到了。
  • 序列标注做过吗?
  • HMM和CRF有什么区别?
    之前恶补了HMM的理论,详细讲了HMM,但是CRF只有大概了解,就没仔细说。HMM的2个假设,正向反向算法(递推式推导),EM算法,维特比算法。CRF打破了两个假设,所以效果更好。(说的比较大概,也和面试官说了这部分不是很了解,只知道个大概)
  • 讲一下SVM吧。
    讲了下SVM的推导:hard margin, soft margin, 几何距离、函数距离,最优化,拉格朗日乘子法,对偶问题,KKT条件,损失函数,惩罚系数等。
  • 为什么SVM求解要求解他的对偶问题?
    为了使原问题更好求解,因为原问题不好求解,引入对偶问题之后就更好求解了。面试官:哈哈哈,就是因为这个?好吧。其实,是因为对偶问题可以降低原问题的计算复杂度。

3

  • 讲讲隐马尔可夫模型,然后怎么做的中文分词
  • 然后推倒了一下维特比算法
  • 文本相似度的计算
  • 问了我lstm,画了lstm的结构图,以及写了所有的公式,讲了下lstm的流程。之后他就问我lstm和rnn的区别,与gru的区别。之后在问我那么lstm面对特别长的文本,有什么解决办法呢?
  • 讲一下transformer,attention,然后问我attention与self-attention的区别
  • 在之后问了adaboost与gbdt,然后两者的区别,现在为什么kaggle比赛流行gbdt,而不用adaboost加树模型呢

你可能感兴趣的:(总结)