社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub | 面试官的DL/NLP/推荐系统/ML/算法基础面试必看知识点总结

深度学习自然语言处理 • 4 年前 • 760 次点击  
点击上方,选择星标置顶,每天给你送干货
阅读大概需要17分钟
跟随小博主,每天进步一丢丢


每日英文
All lay loads on a willing horse.
好马重负。
Recommender:云不见


作者:SladeSal、tcandzq
链接:https://github.com/sladesha/Reflection_Summary
编辑:深度学习自然语言处理公众号


这个仓库的作者是滴滴出行的员工SladeSal,同时也是互联网一线资深的面试官,他结合自己作为面试管的提问和自己的实习生tcandzq(拿到腾讯UGC,阿里算法中台,头条广告推荐offer)在参加2020届校招面试中遇到的各类算法问题,为大家写出了这份算法岗的面试知识点及个人理解的汇总。每个问题下面都有作者对这个问题的精炼总结,不罗嗦,简单易懂。非常感谢作者细致整理和无私分享。

本资源整理了300多道算法岗位相关的面试题目并给出了详细的答案,包含统计学基础概念、数学基础、数据预处理、机器学习、深度学习、自然语言处理(NLP)、推荐系统、风控、评价指标等相关问题,非常值得深入学习,温故而知新。

作者(SladeSal)有话说

部分内容为手记pdf内容,因为公式实在太多,手写比较快,笔记潦草,见谅,内容部分会引用第三方的观点,但是一定会结合自己的感受和体会,一定有存疑和不完善的地方,欢迎大家补充和质疑打脸。现在算法工程师的面试以下内容都不会直接提问,而是以项目交流的方式去挖掘在一个问题上的理论理解的深度,建议大家结合实际工作中的case去思考。

目录
  • 基础概念

  • 数学

  • 数据预处理

  • 机器学习

  • 深度学习

  • 自然语言处理

  • 推荐

  • 风控

  • 评价指标



一.基础概念



  • 方差和偏差

    • 解释方差

    • 解释偏差

    • 模型训练为什么要引入偏差和方差?请理论论证

    • 什么情况下引发高方差

    • 如何解决高方差问题

    • 以上方法是否一定有效

    • 如何解决高偏差问题

    • 以上方法是否一定有效

    • 遇到过的机器学习中的偏差与方差问题

    • 就理论角度论证Bagging、Boosting的方差偏差问题

    • 遇到过的深度学习中的偏差与方差问题

    • 方差、偏差与模型的复杂度之间的关系


  • 生成与判别模型

    • 什么叫生成模型

    • 什么叫判别模型

    • 什么时候会选择生成/判别模型

    • CRF/朴素贝叶斯/EM/最大熵模型/马尔科夫随机场/混合高斯模型

    • 我的理解


  • 先验概率和后验概率

    • 写出全概率公式&贝叶斯公式

    • 说说你怎么理解为什么有全概率公式&贝叶斯公式

    • 什么是先验概率

    • 什么是后验概率

    • 经典概率题


  • 频率概率

    • 极大似然估计 - MLE

    • 最大后验估计 - MAP

    • 极大似然估计与最大后验概率的区别

    • 到底什么是似然什么是概率估计


  • AutoML

    • AutoML问题构成

    • 特征工程选择思路

    • 模型相关的选择思路

    • 常见梯度处理思路

    • AutoML参数选择所使用的方法

    • 讲讲贝叶斯优化如何在automl上应用

    • 以高斯过程为例,超参搜索的f的最优解求解acquisition function有哪些

    • 高斯过程回归手记

    • AutoSklearn详解手记

    • AutoML常规思路手记


示例:



二.数学



  • 数据质量

    • 期望

    • 方差

    • 标准差

    • 协方差

    • 相关系数


  • 最大公约数问题

    • 辗转相除法

    • 其他方法


  • 牛顿法

    • 迭代公式推导

    • 实现它


  • 拟牛顿法


  • 概率密度分布

    • 均匀分布

    • 伯努利分布

    • 二项分布

    • 高斯分布

    • 拉普拉斯分布

    • 泊松分布


  • 平面曲线的切线和法线

    • 平面曲线的切线

    • 平面曲线的法线


  • 导数

    • 四则运算

    • 常见导数

    • 复合函数的运算法则

    • 莱布尼兹公式


  • 微分中值定理

    • 费马定理

    • 拉格朗日中值定理

    • 柯西中值定理


  • 泰勒公式

    • 泰勒公式


  • 欧拉公式

    • 欧拉公式


  • 矩阵

    • 范数

    • 特征值分解,特征向量

    • 正定性


  • 概率论

    • 条件概率

    • 独立

    • 概率基础公式

    • 全概率

    • 贝叶斯

    • 切比雪夫不等式

    • 抽球

    • 纸牌问题

    • 棍子/绳子问题

    • 贝叶斯题

    • 选择时间问题

    • 0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器

    • 抽红蓝球球


示例:



三.数据预处理



  • 数据平衡

    • 为什么要对数据进行采样

    • 是否一定需要对原始数据进行采样平衡

    • 有哪些常见的采样方法

    • 能否避免采样

    • 你平时怎么用采样方法


  • 异常点处理

    • 统计方法

    • 矩阵分解方法

    • 特征值和特征向量的本质是什么

    • 矩阵乘法的实际意义

    • 密度的离群点检测

    • 聚类的离群点检测

    • 如何处理异常点


  • 缺失值处理

    • 是不是一定需要对缺失值处理

    • 直接填充方法有哪些

    • 模型插值方法有哪些?及方法的问题

    • 如何直接离散化

    • hold位填充方法有哪些

    • 怎么理解分布补全

    • random方法使用前提

    • 总结


  • 特征选择

    • 为什么要做特征选择

    • 从哪些方面可以做特征选择

    • 既然说了两个方向,分别介绍一些吧


  • 特征提取

    • 为什么需要对数据进行变换

    • 归一化和标准化之间的关系

    • 连续特征常用方法

    • 离散特征常用方法

    • 文本特征

    • 画一个最简单的最快速能实现的框架


示例:



四.机器学习



  • 聚类

    • 请问从EM角度理解kmeans

    • 为什么kmeans一定会收敛

    • kmeans初始点除了随机选取之外的方法


  • 线性回归

    • 损失函数是啥

    • 最小二乘/梯度下降手推

    • 介绍一下岭回归

    • 什么时候使用岭回归

    • 什么时候用Lasso回归


  • 逻辑回归

    • logistic分布函数和密度函数,手绘大概的图像

    • LR推导,基础5连问

    • 梯度下降如何并行化

    • LR明明是分类模型为什么叫回归

    • 为什么LR可以用来做CTR预估

    • 满足什么样条件的数据用LR最好

    • LR为什么使用sigmoid函数作为激活函数?其他函数不行吗

    • 利用几率odds的意义在哪

    • Sigmoid函数到底起了什么作用

    • LR为什么要使用极大似然函数,交互熵作为损失函数?那为什么不选平方损失函数的呢

    • LR中若标签为+1和-1,损失函数如何推导?

    • 如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

    • 为什么要避免共线性

    • LR可以用核么?可以怎么用

    • LR中的L1/L2正则项是啥

    • lr加l1还是l2好

    • 正则化是依据什么理论实现模型优化

    • LR可以用来处理非线性问题么

    • 为什么LR需要归一化或者取对数

    • 为什么LR把特征离散化后效果更好?离散化的好处有哪些

    • 逻辑回归估计参数时的目标函数逻辑回归的值表示概率吗

    • LR对比万物

    • LR梯度下降方法

    • LR的优缺点

    • 除了做分类,你还会用LR做什么

    • 你有用过sklearn中的lr么?你用的是哪个包

    • 看过源码么?为什么去看

    • 谈一下sklearn.linear_model.LogisticRegression中的penalty和solver的选择

    • 谈一下sklearn.linear_model.LogisticRegression中对多分类是怎么处理的

    • 我的总结


  • 决策树

    • 常见决策树

    • 简述决策树构建过程

    • 详述信息熵计算方法及存在问题

    • 详述信息增益计算方法

    • 详述信息增益率计算方法

    • 解释Gini系数

    • ID3存在的问题

    • C4.5相对于ID3的改进点

    • CART的连续特征改进点

    • CART分类树建立算法的具体流程

    • CART回归树建立算法的具体流程

    • CART输出结果的逻辑

    • CART树算法的剪枝过程是怎么样的

    • 树形结构为何不需要归一化

    • 决策树的优缺点


  • 贝叶斯

    • 解释一下朴素贝叶斯中考虑到的条件独立假设

    • 讲一讲你眼中的贝叶斯公式和朴素贝叶斯分类差别

    • 朴素贝叶斯中出现的常见模型有哪些

    • 出现估计概率值为 0 怎么处理

    • 朴素贝叶斯的优缺点

    • 朴素贝叶斯与 LR 区别


  • 随机森林

    • 解释下随机森林

    • 随机森林用的是什么树

    • 随机森林的生成过程

    • 解释下随机森林节点的分裂策略

    • 随机森林的损失函数是什么

    • 为了防止随机森林过拟合可以怎么做

    • 随机森林特征选择的过程

    • 是否用过随机森林,有什么技巧

    • RF的参数有哪些,如何调参

    • RF的优缺点


  • 集成学习

    • 介绍一下Boosting的思想

    • 最小二乘回归树的切分过程是怎么样的

    • 有哪些直接利用了Boosting思想的树模型

    • gbdt和boostingtree的boosting分别体现在哪里

    • gbdt的中的tree是什么tree?有什么特征

    • 常用回归问题的损失函数

    • 常用分类问题的损失函数

    • 什么是gbdt中的残差的负梯度

    • 如何用损失函数的负梯度实现gbdt

    • 拟合损失函数的负梯度为什么是可行的

    • 即便拟合负梯度是可行的,为什么不直接拟合残差?拟合负梯度好在哪里

    • Shrinkage收缩的作用

    • feature属性会被重复多次使用么

    • gbdt如何进行正则化的

    • 为什么集成算法大多使用树类模型作为基学习器?或者说,为什么集成学习可以在树类模型上取得成功

    • gbdt的优缺点

    • gbdt和randomforest区别

    • GBDT和LR的差异

    • xgboost对比gbdt/boosting Tree有了哪些方向上的优化

    • xgboost和gbdt的区别

    • xgboost优化目标/损失函数改变成什么样

    • xgboost如何使用MAE或MAPE作为目标函数

    • xgboost如何寻找分裂节点的候选集

    • xgboost如何处理缺失值

    • xgboost在计算速度上有了哪些点上提升

    • xgboost特征重要性是如何得到的

    • xGBoost中如何对树进行剪枝

    • xGBoost模型如果过拟合了怎么解决

    • xgboost如何调参数

    • XGboost缺点

    • LightGBM对Xgboost的优化

    • LightGBM亮点


  • FM/FFM


  • SVM

    • 简单介绍SVM

    • 什么叫最优超平面

    • 什么是支持向量

    • SVM 和全部数据有关还是和局部数据有关

    • 加大训练数据量一定能提高SVM准确率吗

    • 如何解决多分类问题

    • 可以做回归吗,怎么做

    • SVM 能解决哪些问题

    • 介绍一下你知道的不同的SVM分类器

    • 什么叫软间隔

    • SVM 软间隔与硬间隔表达式

    • SVM原问题和对偶问题的关系/解释原问题和对偶问题

    • 为什么要把原问题转换为对偶问题

    • 为什么求解对偶问题更加高效

    • alpha系数有多少个

    • KKT限制条件,KKT条件有哪些,完整描述

    • 引入拉格朗日的优化方法后的损失函数解释

    • 核函数的作用是啥

    • 核函数的种类和应用场景

    • 如何选择核函数

    • 常用核函数的定义

    • 核函数需要满足什么条件

    • 为什么在数据量大的情况下常常用lr代替核SVM

    • 高斯核可以升到多少维?为什么

    • SVM和逻辑斯特回归对同一样本A进行训练,如果某类中增加一些数据点,那么原来的决策边界分别会怎么变化

    • 各种机器学习的应用场景分别是什么?例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归

    • Linear SVM 和 LR 有什么异同


示例:



五.深度学习



  • 框架

    • 为什么要用深度召回


  • dropout

    • dropout如何作用的

    • L1为什么在深度学习中不常用

    • 用贝叶斯机率说明Dropout的原理

    • 为什么有效


  • batch_normalization

    • 你觉得bn过程是什么样的

    • 手写一下bn过程

    • 知道LN么?讲讲原理


  • bp过程


  • embedding


  • softmax


  • 梯度消失/爆炸


  • 残差网络

    • 介绍残差网络

    • 残差网络为什么能解决梯度消失的问题

    • 残差网络残差作用

    • 你平时有用过么?或者你在哪些地方遇到了


  • Attention

    • Attention对比RNN和CNN,分别有哪点你觉得的优势

    • 写出Attention的公式

    • 解释你怎么理解Attention的公式的

    • Attention模型怎么避免词袋模型的顺序问题的困境的

    • Attention机制,里面的q,k,v分别代表什么

    • 为什么self-attention可以替代seq2seq

    • 维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩


示例:




六.自然语言处理



  • GloVe

    • GolVe的损失函数

    • 解释GolVe的损失函数

    • 为什么GolVe会用的相对比W2V少


  • Word2Vec

    • 从隐藏层到输出的Softmax层的计算有哪些方法

    • 层次softmax流程

    • 负采样流程

    • word2vec两种方法各自的优势

    • 怎么衡量学到的embedding的好坏

    • word2vec和glove区别

    • 你觉得word2vec有哪些问题


  • CRF

    • 阐述CRF原理

    • 线性链条件随机场的公式是

    • CRF与HMM区别

    • Bert+crf中的各部分作用详解


  • LDA

    • 详述LDA原理

    • LDA中的主题矩阵如何计算

    • LDA的共轭分布解释下

    • PLSA和LDA的区别

    • 怎么确定LDA的topic个数

    • LDA和Word2Vec区别?LDA和Doc2Vec区别

    • LDA算法里面Dirichlet分布的两个参数alpha和beta怎样确定?trick?

    • 使用过LDA,你有什么问题?

    • 你用真实用过吗?对比过效果吗?

    • 超参数\alpha \beta对训练的影响?

    • LDA你会有哪些常规的预处理步骤

    • LDA的最大似然不好求的原因?为什么不直接用EM?为什么LDA引入了一堆数学理论?


  • LSTM


  • GRU


  • Bert:实现/使用的代码

    • Bert的双向体现在什么地方

    • Bert的是怎样预训练的

    • 在数据中随机选择 15% 的标记,其中80%被换位[mask],10%不变、10%随机替换其他单词,原因是什么

    • 为什么BERT有3个嵌入层,它们都是如何实现的

    • bert的损失函数

    • 手写一个multi-head attention

    • 长文本预测如何构造Tokens

    • 你用过什么模块?bert流程是怎么样的

    • 知道分词模块:FullTokenizer做了哪些事情么

    • Bert中如何获得词意和句意

    • 源码中Attention后实际的流程是如何的

    • 为什么要在Attention后使用残差结构

    • 平时用官方Bert包么?耗时怎么样

    • 你觉得BERT比普通LM的新颖点

    • elmo、GPT、bert三者之间有什么区别


  • 文本相似度计算

    • 有哪些常用的方法


  • TextCNN

    • 讲一下textcnn

    • textCNN中核的作用

    • max-pooling选择的目的

    • textcnn和fasttext区别

    • 如果你知道上面说的核心问题,那么有什么解决方案吗?

    • 为什么卷积核都不大?且常见都都是奇数?

    • 为什么不建议用句长作为核大小

    • padding是不是对最后结果没有影响


示例:



七.推荐



  • DIN:实现/使用的代码

    • 主要使用了什么机制

    • activation unit的作用

    • DICE怎么设计的

    • DICE使用的过程中,有什么需要注意的地方


  • DeepFM:实现/使用的代码

    • DNN与DeepFM之间的区别

    • Wide&Deep与DeepFM之间的区别

    • 你在使用deepFM的时候是如何处理欠拟合和过拟合问题的

    • DeepFM怎么优化的

    • 不定长文本数据如何输入deepFM

    • deepfm的embedding初始化有什么值得注意的地方吗

      • Xavier初始化

      • He初始化


  • YoutubeNet:实现/使用的代码

    • 变长数据如何处理的

    • input是怎么构造的

    • 最后一次点击实际如何处理的

    • output的是时候train和predict如何处理的

    • 如何进行负采样的

    • item向量在softmax的时候你们怎么选择的

    • Example Age的理解

    • 什么叫做不对称的共同浏览(asymmetric co-watch)问题

    • 为什么不采取类似RNN的Sequence model

    • YouTube如何避免百万量级的softmax问题的

    • serving过程中,YouTube为什么不直接采用训练时的model进行预测,而是采用了一种最近邻搜索的方法

    • Youtube的用户对新视频有偏好,那么在模型构建的过程中如何引入这个feature

    • 在处理测试集的时候,YouTube为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集

    • 整个过程中有什么亮点?有哪些决定性的提升


  • Wide&Deep


  • MLR


  • Neural Network全家桶


  • XDeepFM:实现/使用的代码

    • 选用的原因,考虑使用的场景是什么

    • 什么叫显示隐式?什么叫元素级/向量级?什么叫做高阶/低阶特征交互

    • 简单介绍一下XDeepFm的思想

    • 和DCN比,有哪些核心的变化

    • 时间复杂度多少


  • Recall

    • 召回层构造loss和精排层的差异?

    • 离线评估有什么办法

    • 负样本为什么不能用点击未展示

    • 解释一下hard negative

    • 什么样本是hard和easy的

    • 如何处理hard部分


示例:



八.风控



  • 孤立森林

  • 评分卡



九.评价指标



  • 二分类

  • 多分类

  • 回归指标

  • 聚类指标

  • 排序指标



下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!
后台回复【五件套


下载二:南大模式识别PPT
后台回复南大模式识别



说个正事哈



由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心



投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等

记得备注呦


推荐两个专辑给大家:
专辑 | 李宏毅人类语言处理2020笔记
专辑 | NLP论文解读
专辑 | 情感分析

整理不易,还望给个在看!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/73953
 
760 次点击