本文总结王喆老师的 文章,并结合推荐算法岗梳理一下,希望对大家也有帮助
概括
可以从以下四个方面进行准备
- 知识:业界常用的召回策略,主流CTR模型,流量预估,bidding策略等模型算法的原理和技术细节
- 工具:coding能力,spark、flink、tensorflow、xgboost、ps-lite等模型训练、parameter serving相关工具
- 逻辑:算法题,模型之间的演化关系
- 业务:给定一个场景,给出你的策略
项目挖掘(深度)
比如你简历写到使用了阿里DIN的CTR预估模型,那么就要理清楚如下问题:
softmax函数的定义是什么?(知识)
神经网络为什么会产生梯度消失现象?(知识)
常见的激活函数有哪些?都有什么特点?(知识)
挑一种激活函数推导梯度下降的过程。(知识+逻辑)
Attention机制什么?(知识)
阿里是如何将attention机制引入推荐模型的?(知识+业务)
DIN是基于什么业务逻辑引入attention机制的?(业务)
DIN中将用户和商品进行了embedding,请讲清楚两项你知道的embedding方法。(知识)
你如何serving类似DIN这样的深度学习模型(工具+业务)
知识挖掘(广度)
一个优秀的算法工程师,除了自己领域的知识,还要了解其他算法领域,比如搞推荐也要紧跟nlp,cv的最新成果。还要了解一些工程实现和优化
CNN,RNN,个别聚类算法,模型评估等知识的理解程度
spark的调优经验,model serving的主要方法,parameter server的原理
GAN,LSTM,online learning的基本理解
embedding方法,attention机制,multi task,reinforcement learning,online learning的基本理解
参考目录
机器学习(和深度学习)知识
监督和无监督算法
经典分类算法,如SVM,逻辑回归,决策树,随机森林,XGboost
经典回归算法:线性回归,LASSO,随机森林,前馈神经网络,XGboost
聚类算法,例如K-means和Spectral聚类
降维技术,如PCA,LDA和自动编码器。
偏差 - 方差均衡
过拟合以及如何避免过拟合(例如正则化,特征选择,dropout(用于神经网络))
有名的深度学习模型,如卷积神经网络(CNN),递归神经网络(RNN)和长短期记忆网络(LSTM),自动编码器,残差结构,序列到序列模型,生成对抗网络(GAN)
评估指标,例如分类准确度,精确度,召回率,F1分数,均方误差,平均绝对偏差
流行的损失函数,如交叉熵,MSE,三元组损失,对抗性损失,边际最大化损失等
反向传播
强化学习和深度Q学习(对于偏研究类型的职位)
离线和在线(A / B)指标的比较?
上面列出的问题涵盖了一些与数据科学职位相关的高级机器学习概念,但你可能会被问到有关上述某些主题的更详细问题,例如你可能会被问到:
分类算法中SVM和逻辑回归的比较
生成模型和判别模型之间的差异
梯度消失问题背后的根本原因和一些避免这种情况的常见做法
在进行批量梯度下降时使用动量梯度下降法的优点
统计和数学知识
模型的偏差和方差以及如何计算它们
分布抽样
置信度和给定置信度所需的样本数量
均值,方差,相关性(统计意义上和经验意义上)
随机过程,随机游动(金融公司的数据科学职位需要)
如何找到某些事件的概率
对于数学问题,你可能会被问到以下问题:
一些需要一些思考的脑筋急转弯问题
如何计算特定损失函数的梯度
关于损失函数或优化算法的一些详细问题
编程和软件工程
Python,Scala,SQL,java,c++
对于机器学习和数值计算,Scikit-learn,XGboost,LIB-SVM,Numpy,Scipy是使用最广泛的软件包。
对于深度学习,Tensorflow,PyTorch,Keras被广泛使用。
对于数据可视化,Matplotlib,Seaborn,ggplot是最受欢迎的(尽管还有大量其他有用的软件包)。
对于CV,OpenCV和PIL很有用。
对于NLP,NLTK,GENSIM,Spacy,Torchtext等软件包非常棒。
对于使用数据库,Pandas和PySpark是Python中的两个流行的库,我个人认为它非常有用。
云服务
熟悉AWS中的EC2等计算服务
部署工具
熟悉Docker和Python中的Flask可能会有所帮助。如果你想在AWS等云服务上部署模型,那么熟悉Sagemaker可能会有所帮助
关于CV,NLP和定价策略的问题
以下是你可能获得的一些与 NLP 相关的问题:
什么是词干提取和词形还原?
什么是词袋模型?TF-IDF怎么样?
你怎么能找到两个单词之间的距离?有哪些有名的字符串距离指标?
什么是命名实体识别,你将如何评估NER系统的性能?
CRF模型如何针对词性标注进行训练?
什么是公报特征,什么时候它们有用?
你将如何构建神经机器翻译模型?你会如何评价其表现?
word2vec对于经典的one-hot编码有什么优势?
你会如何建立一个Q&A问答系统?
你如何检测一系列文档中的主题?
你如何找到客户评价的情绪(极性)?
正则表达式的一些问题
以下是你可能会被问到的一些计算机视觉相关问题:
你如何将网站上的图像分组为不同的类别(如电子,服装等)?
如何构建一个模型来自动地标记一张图像中的不同人脸?
如何检测图像/视频的质量并过滤模糊的图像/视频?
什么是超分辨率,你如何评估超分辨率模型的性能?
如何检测图像中的不同对象?
你如何检测图像中的文本区域?
你将如何创建自动图像标记系统?