【算法工程师】成为一名优秀的机器学习算法工程师所需知识及资料汇总-附思维导图

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 成为一名优秀的机器学习算法工程师所需要具备的技能和知识,包括理论基础、数学能力、编程技能、实践经验以及对特定领域的深入了解,并提供了学习资源和面试准备建议。

1.png

华为机器学习工程师招聘内容

1、负责统计机器学习、深度学习、强化学习等模型的研发工作,包括但不限于基础的算法或模型,如CNN、RNN、DNN、DQN等;
2、支撑以上模型的基础算法或算子优化,如模型压缩、卷积算法加速等,实现极致的性能;
3、负责大规模分布式凸优化和非凸优化算法、高性能通信技术的研发,充分挖掘软、硬件的优势,实现业界领先的AI框架和平台;
4、负责一站式的端到端AI平台,包括智能标注、特征工程、模型开发、自动学习和训练、推理等。职

必备技能

机器学习算法工程师,指的是有机器学习,数据挖掘,自然语言处理,分布式计算等方面工作的人员。
通过对招聘要求的解读,总结一个优秀的算法工程师大致需要以下技能

  • [ ] 算法功底
  • [ ] 大规模数据挖掘相关技术,掌握Hadoop或Spark技术
  • [ ] 机器学习理论基础
  • [ ] 熟练掌握一个深度学习框架(Tensorflow、keras、Pytorch)
  • [ ] 熟悉数据挖掘算法的原理、实现与应用
  • [ ] 熟悉机器学习常用算法,包括LR、SVM、GBDT、Xgboost、DNN等(一般面试会要求熟悉公式推导)
  • [ ] 对以下某个领域有深度研究的优先

  • 文本数据挖掘

  • 推荐系统
  • CV
  • 知识表示及推理、问答系统
  • 机器学习平台或大规模数据处理平台

建议汇总

  1. 打好数学理论基础,将机器学习的所有算法公式推导一遍,并记住,面试会问公式推导。建议反复看李航老师的《统计学学习方法》,周志华老师的《机器学习》
  2. 多打比赛,将所学知识应用到实际业务中,给予自己正向的学习反馈,知道自己该学什么,学的知识有什么实际作用能解决什么问题。认证的打完每一个比赛,并做好复盘笔记,这将会自己的实际项目。面试时考官会详细问,并可能当即登录你平台查看你的比赛成绩和提交记录。
  3. 掌握Python、R、C++、Scala等编程语言,每多会一个,多给自己一个机会
  4. 面试前刷算法题是必备,面试必考算法题
  5. 对某一个领域用较深的研究,比如NLP、CV等等
  6. 在校期间多打数学建模比赛,增强自己数模的能力,在面试和实际工作中,都是加分项。
  7. 最好掌握一项大数据开发工具,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 有监督学习

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 机器学习公共知识

第一部分


  1. 过拟合欠拟合(举几个例子让判断下,顺便问问交叉验证的目的、超参数搜索方法、EarlyStopping)
  2. L1正则和L2正则的做法、正则化背后的思想(顺便问问BatchNorm、Covariance Shift)、L1正则产生稀疏解原理
  3. 逻辑回归为何线性模型(顺便问问LR如何解决低维不可分、从图模型角度看LR和朴素贝叶斯和无监督)
  4. 几种参数估计方法MLE/MAP/贝叶斯的联系和区别
  5. 简单说下SVM的支持向量(顺便问问KKT条件、为何对偶、核的通俗理解)
  6. GBDT随机森林能否并行(顺便问问bagging boosting)
  7. 生成模型判别模型举个例子
  8. 聚类方法的掌握(顺便问问Kmeans的EM推导思路、谱聚类和Graph-cut的理解)
  9. 梯度下降类方法和牛顿类方法的区别(顺便问问Adam、L-BFGS的思路)
  10. 半监督的思想(顺便问问一些特定半监督算法是如何利用无标签数据的、从MAP角度看半监督)
  11. 常见的分类模型的评价指标(顺便问问交叉熵、ROC如何绘制、AUC的物理含义、类别不均衡样本)
  12. CNN中卷积操作和卷积核作用
  13. maxpooling作用
  14. 卷积层与全连接层的联系
  15. 梯度爆炸和消失的概念(顺便问问神经网络权值初始化的方法、为何能减缓梯度爆炸消失、CNN中有哪些解决办法、LSTM如何解决的、如何梯度裁剪、dropout如何用在RNN系列网络中、dropout防止过拟合)
  16. 为何卷积可以用在图像/语音/语句上(顺便问问channel在不同类型数据源中的含义)

第二部分


以下牛客网作者:zakexu

常见面试题(由于有的面试时间较久,主要靠记忆写下来)

  1. 几种模型( svm , lr , gbdt , em )的原理以及公式推导;
  2. rf , gbdt 的区别; gbdt , xgboost 的区别(烂大街的问题最好从底层原理去分析回答);
  3. 决策树处理连续值的方法;
  4. 特征选择的方法;
  5. 过拟合的解决方法;
  6. kmeans 的原理,优缺点以及改进;
  7. 常见分类模型( svm ,决策树,贝叶斯等)的优缺点,适用场景以及如何选型;
  8. svm 为啥要引入拉格朗日的优化方法;
  9. 假设面试官什么都不懂,详细解释 CNN 的原理;
  10. 海量的 item 算文本相似度的优化方法;
  11. 梯度下降的优缺点;
  12. em 与 kmeans 的关系;
  13. L1 与 L2 的区别以及如何解决 L1 求导困难;
  14. 如何用尽可能少的样本训练模型同时又保证模型的性能;
  15. 解释 word2vec 的原理以及哈夫曼树的改进;
  16. 对推荐算法的未来看法;
  17. 在模型的训练迭代中,怎么评估效果;
  18. 有几个 G 的文本,每行记录了访问 ip 的 log ,如何快速统计 ip 出现次数最高的 10 个 ip ;如果只用 linux 指令又该怎么解决;
  19. 一个绳子烧完需要 1 个小时,假设所有绳子的材质都不一样,也不均匀,怎么取出 1 小时加 15 分钟;
  20. 假设有个 M*N 的方格,从最左下方开始往最右上方走,每次只能往右或者往上,问有多少种走法,假设中间有若干个格子不能走,又有多少种走法;
  21. 实现 hmm 的状态转移代码;
  22. 最短路径代码;
  23. 拼车软件是如何定价的以及如何优化;
  24. 100 张牌,每次只能抽一张,抽过的牌会丢掉,怎么选出最大的牌;
  25. 怎么预测降雨量;
  26. kmeans 代码;
  27. mr 方案解决矩阵相乘的代码
  28. SVM有哪些核函数?如何选择?
  29. 决策树算法?什么是熵?
  30. 随机森林算法?优缺点?
  31. 逻辑回归算法?
  32. 预测的评价指标有哪些?
  33. 如何处理过拟合?
  34. 推导逻辑回归?
  35. L1正则为什么能让系数变为0?
  36. L1正则怎么处理0点不可导的情形?

6.2 NLP+推荐系统

第一部分


  1. CRF跟逻辑回归 最大熵模型的关系
  2. CRF的优化方法
  3. CRF和MRF的联系
  4. HMM和CRF的关系(顺便问问 朴素贝叶斯和HMM的联系、LSTM+CRF 用于序列标注的原理、CRF的点函数和边函数、CRF的经验分布)
  5. WordEmbedding的几种常用方法和原理(顺便问问language model、perplexity评价指标、word2vec跟Glove的异同)
  6. topic model说一说
  7. 为何CNN能用在文本分类
  8. syntactic和semantic问题举例
  9. 常见Sentence embedding方法
  10. 注意力机制(顺便问问注意力机制的几种不同情形、为何引入、seq2seq原理)
  11. 序列标注的评价指标
  12. 语义消歧的做法
  13. 常见的跟word有关的特征
  14. factorization machine
  15. 常见矩阵分解模型
  16. 如何把分类模型用于商品推荐(包括数据集划分、模型验证等)
  17. 序列学习、wide&deep model(顺便问问为何wide和deep)

7 学习书籍汇总

7.1 基础理论

  1. 《机器学习》周志华
  2. 《统计学方法》李航
  3. 《深度学习花书》
  4. 《百面机器学习》
  5. 《数据挖掘导论》

7.2 业务方向

(1)自然语言处理

  • 《统计自然语言处理第2版》

(2)大数据

  • 《数据挖掘导论》
  • 《大数据spark 企业级实战》

(3)算法

  • 《Labuladong的算法小抄》
  • 《剑指Offer》

8 网课汇总

  1. 李宏毅-机器学习
  2. 李宏毅-深度学习
  3. 吴恩达机器学习
  4. 吴恩达深度学习
  5. cs231n-深度学习之计算机视觉
  6. cs224n-深度学习之自然语言处理
  7. cs224w-机器学习之图神经网络
  8. 《统计学学习方法》-李航
目录
相关文章
|
23天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
73 4
|
20天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
29天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
81 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
29天前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
36 0
|
1月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
35 0
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
15天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
21天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
1天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
下一篇
DataWorks