华为机器学习工程师招聘内容
1、负责统计机器学习、深度学习、强化学习等模型的研发工作,包括但不限于基础的算法或模型,如CNN、RNN、DNN、DQN等;2、支撑以上模型的基础算法或算子优化,如模型压缩、卷积算法加速等,实现极致的性能;3、负责大规模分布式凸优化和非凸优化算法、高性能通信技术的研发,充分挖掘软、硬件的优势,实现业界领先的AI框架和平台;4、负责一站式的端到端AI平台,包括智能标注、特征工程、模型开发、自动学习和训练、推理等。职
必备技能
机器学习算法工程师,指的是有机器学习,数据挖掘,自然语言处理,分布式计算等方面工作的人员。通过对招聘要求的解读,总结一个优秀的算法工程师大致需要以下技能
[ ] 算法功底
[ ] 大规模数据挖掘相关技术,掌握Hadoop或Spark技术
[ ] 机器学习理论基础
[ ] 熟练掌握一个深度学习框架(Tensorflow、keras、Pytorch)
[ ] 熟悉数据挖掘算法的原理、实现与应用
[ ] 熟悉机器学习常用算法,包括LR、SVM、GBDT、Xgboost、DNN等(一般面试会要求熟悉公式推导)
[ ] 对以下某个领域有深度研究的优先
文本数据挖掘
推荐系统
CV
知识表示及推理、问答系统
机器学习平台或大规模数据处理平台
建议汇总
打好数学理论基础,将机器学习的所有算法公式推导一遍,并记住,面试会问公式推导。建议反复看李航老师的《统计学学习方法》,周志华老师的《机器学习》
多打比赛,将所学知识应用到实际业务中,给予自己正向的学习反馈,知道自己该学什么,学的知识有什么实际作用能解决什么问题。认证的打完每一个比赛,并做好复盘笔记,这将会自己的实际项目。面试时考官会详细问,并可能当即登录你平台查看你的比赛成绩和提交记录。
掌握Python、R、C++、Scala等编程语言,每多会一个,多给自己一个机会
面试前刷算法题是必备,面试必考算法题
对某一个领域用较深的研究,比如NLP、CV等等
在校期间多打数学建模比赛,增强自己数模的能力,在面试和实际工作中,都是加分项。
最好掌握一项大数据开发工具,Spark或hadoop。有的是加分项有的是必需项。
1 机器学习理论
1.1 基础理论
网课《Learning from Data》机器学习基石网课《机器学习-吴恩达》所谓基础理论,指的是不涉及任何具体模型,而只关注“学习”这件事本身的一些理论。以下是一些比较有用的基础概念:(1)VC维学习资料
VC维是一个很有趣的概念,它的主体是一类函数,描述的是这类函数能够把多少个样本的所有组合都划分开来。VC维的意义在哪里呢?它在于当你选定了一个模型以及它对应的特征之后,你是大概可以知道这组模型和特征的选择能够对多大的数据集进行分类的。此外,一类函数的VC维的大小,还可以反应出这类函数过拟合的可能性。
(2)信息论
从某种角度来讲,机器学习和信息论是同一个问题的两个侧面,机器学习模型的优化过程同时也可以看作是最小化数据集中信息量的过程。对信息论中基本概念的了解,对于机器学习理论的学习是大有裨益的。例如决策树中用来做分裂决策依据的信息增益,衡量数据信息量的信息熵等等,这些概念的理解对于机器学习问题神本的理解都很有帮助。这部分内容可参考《Elements of Information Theory》这本书。
(3)正则化和bias-variance tradeoff
如果说现阶段我国的主要矛盾是“人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾”,那么机器学习中的主要矛盾就是模型要尽量拟合数据和模型不能过度拟合数据之间的矛盾。而化解这一矛盾的核心技术之一就是正则化。正则化的具体方法不在此讨论,但需要理解的,是各种正则化方法背后透露出的思想:bias-variance tradoff。在不同利益点之间的平衡与取舍是各种算法之间的重要差异,理解这一点对于理解不同算法之间的核心差异有着非常重要的作用。
(4)最优化理论
绝大多数机器学习问题的解决,都可以划分为两个阶段:建模和优化。所谓建模就是后面我们会提到的各种用模型来描述问题的方法,而优化就是建模完成之后求得模型的最优参数的过程。机器学习中常用的模型有很多,但背后用到的优化方法却并没有那么多。换句话说,很多模型都是用的同一套优化方法,而同一个优化方法也可以用来优化很多不同模型。对各种常用优化方法的和思想有所有了解非常有必要,对于理解模型训练的过程,以及解释各种情况下模型训练的效果都很有帮助。这里面包括最大似然、最大后验、梯度下降、拟牛顿法、L-BFGS等。
1.2 有监督学习
KNN朴素贝叶斯算法 - 参考: Naive Bayes 算法实现学习资料1学习资料2
决策树 - 参考: decision Tree(Python 实现)学习资料
逻辑回归Logistic 回归 - 参考:逻辑回归学习资料1学习资料2
boosting组
GDBT梯度树提升 GTB 算法 - 参考: Gradient Tree Boosting(或 GBRT)学习资料
Adaboost - 参考: 组合算法 - Adaboost学习资料
组合算法总结 - 参考:Ensemble 算法总结学习资料
bagging组合
Random Forest - 参考: 随机森林算法学习资料
人工神经网络 - 参考:学习资料
SVM 支持向量机 - 参考:pluskid 支持向量机三重境界学习资料
K 最近邻算法 - 参考:KNN 从原理到实现学习资料
K-means 聚类 - 参考:K-means cluster学习资料
EM 期望最大算法 - 参考:EM 算法学习资料
条件随机场,参考:CRF学习资料
随机森林和 GBDT,参考:决策树模型组合之随机森林与 GBDT学习资料
线性回归学习资料
分类树学习资料
FM算法学习资料
1.3 无监督学习
聚类方法
kmeans
DBSCAN
层次聚类
混合高斯模型
LSI
pLSA
LDA
PCA
SVD
NMF
word2vc
嵌入表示(embedding representation)
HMM 隐马尔可夫模型学习资料
2 数学基础
(1)概率论
大数定理&中心极限定理
常用概率分布
假设检验理论
(2)参数估计方法
最大似然理论
最大后验理论
EM算法
(3)理论
贝叶斯理论
贝叶斯分类错误率
(4)离散数据分布
伯努利分布、二项分布、多项分布、Beta分布、狄里克莱分布以及泊松分布
高斯分布和指数分布族
3 特征处理和工程
特征选择和特征提取,参考:特征提取与特征选择学习资料
特征规范化
特征离散化
特征交叉和组合
4 必备工具
4.1 单机开发工具
numpy、sklearn、pandas、 matplotlib、libsvm、liblinear、 xgboost 等等
4.2 大数据开发工具
Spark、hadoop、 Hive、Storm
如何用形象的比喻描述大数据的技术生态?Hadoop、Hive、Spark 之间是什么关系?
5 ML算法补充资料
梯度下降法,参考:gradient descent学习资料
牛顿法,参考:牛顿法学习资料
线性判别分析,参考:线性判别学习资料
深度学习 - 深度学习概述:从感知机到深度网络学习资料
Apriori 算法 - 参考地址: Apriori 关联分析学习资料
更多更系统知识参考李航老师的《统计学学习方法第2版》
6 面试题目
6.1 机器学习公共知识
第一部分
过拟合欠拟合(举几个例子让判断下,顺便问问交叉验证的目的、超参数搜索方法、EarlyStopping)
L1正则和L2正则的做法、正则化背后的思想(顺便问问BatchNorm、Covariance Shift)、L1正则产生稀疏解原理
逻辑回归为何线性模型(顺便问问LR如何解决低维不可分、从图模型角度看LR和朴素贝叶斯和无监督)
几种参数估计方法MLE/MAP/贝叶斯的联系和区别
简单说下SVM的支持向量(顺便问问KKT条件、为何对偶、核的通俗理解)
GBDT随机森林能否并行(顺便问问bagging boosting)
生成模型判别模型举个例子
聚类方法的掌握(顺便问问Kmeans的EM推导思路、谱聚类和Graph-cut的理解)
梯度下降类方法和牛顿类方法的区别(顺便问问Adam、L-BFGS的思路)
半监督的思想(顺便问问一些特定半监督算法是如何利用无标签数据的、从MAP角度看半监督)
常见的分类模型的评价指标(顺便问问交叉熵、ROC如何绘制、AUC的物理含义、类别不均衡样本)
CNN中卷积操作和卷积核作用
maxpooling作用
卷积层与全连接层的联系
梯度爆炸和消失的概念(顺便问问神经网络权值初始化的方法、为何能减缓梯度爆炸消失、CNN中有哪些解决办法、LSTM如何解决的、如何梯度裁剪、dropout如何用在RNN系列网络中、dropout防止过拟合)
为何卷积可以用在图像/语音/语句上(顺便问问channel在不同类型数据源中的含义)
第二部分
以下牛客网作者:zakexu
常见面试题(由于有的面试时间较久,主要靠记忆写下来)
几种模型( svm , lr , gbdt , em )的原理以及公式推导;
rf , gbdt 的区别; gbdt , xgboost 的区别(烂大街的问题最好从底层原理去分析回答);
决策树处理连续值的方法;
特征选择的方法;
过拟合的解决方法;
kmeans 的原理,优缺点以及改进;
常见分类模型( svm ,决策树,贝叶斯等)的优缺点,适用场景以及如何选型;
svm 为啥要引入拉格朗日的优化方法;
假设面试官什么都不懂,详细解释 CNN 的原理;
海量的 item 算文本相似度的优化方法;
梯度下降的优缺点;
em 与 kmeans 的关系;
L1 与 L2 的区别以及如何解决 L1 求导困难;
如何用尽可能少的样本训练模型同时又保证模型的性能;
解释 word2vec 的原理以及哈夫曼树的改进;
对推荐算法的未来看法;
在模型的训练迭代中,怎么评估效果;
有几个 G 的文本,每行记录了访问 ip 的 log ,如何快速统计 ip 出现次数最高的 10 个 ip ;如果只用 linux 指令又该怎么解决;
一个绳子烧完需要 1 个小时,假设所有绳子的材质都不一样,也不均匀,怎么取出 1 小时加 15 分钟;
假设有个 M*N 的方格,从最左下方开始往最右上方走,每次只能往右或者往上,问有多少种走法,假设中间有若干个格子不能走,又有多少种走法;
实现 hmm 的状态转移代码;
最短路径代码;
拼车软件是如何定价的以及如何优化;
100 张牌,每次只能抽一张,抽过的牌会丢掉,怎么选出最大的牌;
怎么预测降雨量;
kmeans 代码;
mr 方案解决矩阵相乘的代码
SVM有哪些核函数?如何选择?
决策树算法?什么是熵?
随机森林算法?优缺点?
逻辑回归算法?
预测的评价指标有哪些?
如何处理过拟合?
推导逻辑回归?
L1正则为什么能让系数变为0?
L1正则怎么处理0点不可导的情形?
6.2 NLP+推荐系统
第一部分
CRF跟逻辑回归 最大熵模型的关系
CRF的优化方法
CRF和MRF的联系
HMM和CRF的关系(顺便问问 朴素贝叶斯和HMM的联系、LSTM+CRF 用于序列标注的原理、CRF的点函数和边函数、CRF的经验分布)
WordEmbedding的几种常用方法和原理(顺便问问language model、perplexity评价指标、word2vec跟Glove的异同)
topic model说一说
为何CNN能用在文本分类
syntactic和semantic问题举例
常见Sentence embedding方法
注意力机制(顺便问问注意力机制的几种不同情形、为何引入、seq2seq原理)
序列标注的评价指标
语义消歧的做法
常见的跟word有关的特征
factorization machine
常见矩阵分解模型
如何把分类模型用于商品推荐(包括数据集划分、模型验证等)
序列学习、wide&deep model(顺便问问为何wide和deep)
7 学习书籍汇总
7.1 基础理论
《机器学习》周志华
《统计学方法》李航
《深度学习花书》
《百面机器学习》
《数据挖掘导论》
7.2 业务方向
(1)自然语言处理
《统计自然语言处理第2版》
(2)大数据
《数据挖掘导论》
《大数据spark 企业级实战》
(3)算法
《Labuladong的算法小抄》
《剑指Offer》
8 网课汇总
李宏毅-机器学习
李宏毅-深度学习
吴恩达机器学习
吴恩达深度学习
cs231n-深度学习之计算机视觉
cs224n-深度学习之自然语言处理
cs224w-机器学习之图神经网络
《统计学学习方法》-李航