如何成为机器学习工程师-步骤详解-
如何成为机器学习工程师(步骤详解)
根据Levels.fyi的数据,平均工资接近£100k—高于软件工程师、AI 工程师和数据科学家。
但不仅仅是薪水问题。
作为机器学习工程师,你可以解决令人着迷的问题,尝试最前沿的工具,并且实际上对世界产生积极影响。
我可以亲身体验告诉你——这是一份既令人兴奋又令人满足的工作。
因此,在这篇文章中,我将为你提供一个清晰简单的学习路线图,以及成为机器学习工程师的最佳资源。
让我们开始吧!
数学与统计学
我一次又一次地说过,但如果你想在机器学习或数据科学领域发展,数学和统计学无疑是你要学习的最重要的东西。
技术会来会去,比如区块链和 AI,但数学在几个世纪以来一直是基础。
幸运的是,你不需要成为数学天才就能在机器学习领域工作,我可以从亲身体验中全心全意地确认这一点。
需要的数学水平相当于你在高中最后几年和大学的前一两年 STEM 学位中学到的所有东西。
通常,你需要学习三个数学领域:
-
线性代数—了解矩阵、特征值和向量。这些在主成分分析(PCA)、TensorFlow 等领域的应用无处不在,我的意思是,甚至一个数据框也是一个矩阵!
-
微积分—了解微分,这是梯度下降和反向传播等算法在底层如何工作的原理。这些实际上被用于每个机器学习算法的训练和学习过程中。
-
统计学—了解概率、分布、贝叶斯统计、中心极限定理和最大似然估计。在三个领域中,统计学是最有价值的,我会把大部分注意力放在这里。
资源:
-
数据科学家实用统计学 (推广链接)—通过 Python 的实际练习教授与工作直接相关的统计学知识。我喜欢它,因为它不会让你浪费时间学习无用的知识,所以它非常“高效。”
-
机器学习数学 (推广链接)—学习数学的最佳全面书籍,但内容相当密集,所以将其作为参考文本。我当然没有从头到尾读过它!
-
机器学习与数据科学数学专项课程 — 我的首选课程是专门针对工作所需的数学技能的课程,由DeepLearning.AI提供,这是一家出色的教育公司。
我有一篇完整的文章更深入地解释了你需要的数学主题,以及更详细的分解。
Python
当涉及到机器学习时,Python 是通用语言;别再考虑 R 了,学习 Python 吧。(对那些 R 爱好者说声抱歉!)
我在我的辅导客户和与我交谈的初学者中观察到的一个共同主题是,他们试图找到“最佳”的 Python 学习课程。
我将再次强调这一点,“最佳”是不存在的,所以停止寻找它;这仅仅是一种拖延的形式。任何流行的 Python 入门课程都会有效,因为它们会教你完全相同的东西。
无论如何,你想要学习的主要内容包括:
-
原生数据结构(字典、元组、列表)
-
for 和 while 循环
-
如果-否则条件语句
-
函数和类
-
常用库
-
设计模式
你还希望学习流行的机器学习包,例如:
-
NumPy — 数组数值计算。
-
Pandas — 数据操作和分析。
-
Matplotlib — 数据可视化和绘图。
-
scikit-learn — 实现基本机器学习算法。
-
**SciPy** — 通用科学计算包。
资源:
-
W3Schools Python 课程— 优秀的免费资源;我在学习 Python 时使用了这个资源,现在偶尔还会用到。
-
Python 入门专项课程— 这可能是最受欢迎的 Python 课程,很多人推荐,所以它肯定不错!
-
Python 和 Scikit-Learn 机器学习全课程 — 使用 Python 实现基本机器学习算法的视频课程。这对于你的学习非常有价值,因为它将帮助你理解这些算法在底层是如何工作的。
SQL
作为机器学习工程师,当你尝试创建数据集或进行一些特征工程时,你将在 SQL 上花费相当多的时间。
作为机器学习工程师,我大约有 30-40%的时间在处理 SQL。这相当多,所以你绝对需要精通它,比你想象的要多。
需要学习的内容包括:
-
SELECT * FROM, AS
-
ALTER, INSERT, CREATE, UPDATE, DELETE
-
GROUP BY, ORDER BY
-
WHERE, AND, OR, BETWEEN, IN, HAVING
-
AVG, COUNT, MIN, MAX, SUM
-
FULL JOIN, LEFT JOIN, RIGHT JOIN, INNER JOIN, UNION
-
CASE, IFF
-
DATEADD, DATEDIFF, DATEPART
-
PARTITION BY, QUALIFY, ROW()
资源:
-
《从零到 SQL 英雄》完整 SQL 训练营** — **这是我上的第一个 SQL 课程,它非常棒。强烈推荐。
-
W3Schools SQL 教程** — **再次,这是一个很棒的免费资源,我至今仍在使用。
-
Tutorialspoint SQL 教程** — **另一个免费资源,我在学习 SQL 时也使用了这个。
对于 SQL 有很多免费资源,所以我不会推荐你花钱去上课程,除非你真的想。你也可以始终使用 ChatGPT!
机器学习
让每个人都感到惊讶的是,我们需要学习机器学习才能成为一名机器学习工程师!
这可以说是路线图中最有趣的部分,也是大多数人进入这个领域的原因。我理解,因为这也是我决定从事机器学习工作的原因!
如果我说学习这些算法总是很有趣,那我就撒谎了。这确实需要一点脑力和时间来完全掌握所有概念,但最终,一切都会变得清晰,这将是非常值得的。
你需要的关键算法和概念包括:
-
线性回归、逻辑回归和多项式回归。
-
广义线性模型和广义加性模型。
-
决策树、随机森林和梯度提升树。
-
支持向量机。
-
K-means 和 K 最近邻聚类。
-
特征工程,尤其是如何处理分类特征。
-
不同类型问题的评估指标。
-
正则化、偏差与方差权衡以及交叉验证。
-
梯度下降和反向传播。
资源:
-
Andrew Ng 的机器学习专项课程— 这是我上的第一个机器学习课程,我认为这可能是最好的一个。Andrew 绝对是最好的老师,我认为每个人都应该上这门课。
-
《百页机器学习书》 — 简洁且包含构建机器学习模型及其核心理论的实用见解。这是一本很棒的夜间读物。
-
使用 Scikit-Learn、Keras 和 TensorFlow 动手学习机器学习——如果我只推荐一本书来学习机器学习,那这本书就是!这本书是 GOAT(史上最佳),涵盖了作为入门/中级机器学习工程师你需要了解的每一个主题。
深度学习
老实说,基本的机器学习算法将涵盖你职业生涯中构建的大多数模型。
我仍然大多数时候使用常规回归模型!
深度学习在自然语言处理和计算机视觉等场景中很有用,但在我日常工作中,除了这些领域之外,它的应用非常有限。
然而,鉴于我专注于时间序列预测和优化问题,这些问题对于深度学习来说非常棘手,所以请带着一点怀疑的态度来看待这一点。
说到这里,深度学习是所有机器学习工程师都应该多少了解的一个领域,因为它是该领域的核心部分。
你想要研究的领域包括:
-
神经网络——使机器学习声名鹊起的算法。我相信你们中的许多人都有听说过这个算法。
-
卷积神经网络——这些用于计算机视觉和图像检测。关键的区别在于,它们使用卷积操作来“预选择”信息,然后再将其传递到常规神经网络中。
-
循环神经网络——现在有点过时了,但它们是原始深度学习算法,用于时间序列和自然语言等序列模型。你可能听说过的最流行的一个是序列到序列建模。
-
转换器——所有 AI 炒作和增长背后的当前最先进模型。这来自于著名的论文“Attention Is All You Need”(https://arxiv.org/abs/1706.03762),我强烈推荐你阅读!
资源:
-
Andrew Ng 的深度学习专项课程。——这是机器学习专项课程的后续课程,将教授你关于深度学习、CNN、RNN 和转换器所需了解的一切。所以,上面列出的所有内容!
-
神经网络:从零到英雄** — **这是一门由领先的 AI/ML 研究专家安德烈·卡帕西(前特斯拉和 OpenAI)讲授的 YouTube 课程。它从零开始构建神经网络,起步相对较慢。然而,在最后一集中,它教你构建自己的生成式预训练转换器(GPT),这正是 ChatGPT 背后的模型!
-
**深度学习(自适应计算与机器学习系列) — **这本书是由人工智能的教父级人物约书亚·本吉奥所著。这基本上解释了为什么我推荐这本书!
软件工程
考虑到标题是机器学习“工程师”,你需要了解软件工程的最佳实践,因为这在将你的模型部署到生产中时非常重要。
当我试图成为一名机器学习工程师时,我真的很低估了工程部分。我现在甚至可以争论说,它比理论机器学习知识更重要。
理论只是理论;你真正赚钱的地方是帮助公司和企业通过你的算法做出决策。为此,你需要了解软件工程。
你需要了解的领域包括:
-
数据结构与算法 — 为了通过面试并帮助你编写更好的代码。学习基础知识并确保实践。
-
数组
-
链表
-
队列
-
排序
-
二分查找
-
树
-
哈希
-
图
-
-
系统设计 — 为了通过面试并理解如何大规模部署机器学习算法。再次强调,学习基础知识。
-
网络
-
API
-
缓存
-
代理
-
存储
-
-
生产代码 — 通过诸如类型检查、代码审查、测试以及使用诸如DRY、KISS和YAGNI等原则来编写经过良好测试和高效的代码。这可能是学习中最关键的部分,因为它与工作最相关。
-
API — **大多数软件都是通过API运行的,许多机器学习模型都作为 API 端点提供服务。理解它们的工作原理及其不同类型。
资源
-
Neetcode.io — 优秀的入门、中级和高级数据结构和算法课程,以及系统设计课程。当学习软件工程基础知识时,我 100%推荐这个平台给任何学习软件工程的人。
-
Leetcode & Hackerrank — 面试练习平台。我相信你们中的许多人听说过“磨炼 LeetCode”;对于机器学习工程师职位来说,你不需要像软件工程师职位那样做很多,但是你应该了解基础知识。我建议完成NeetCode 150。
-
软件工程数据科学家指南 — 正如书名所说,这是一本专门为数据科学家学习软件工程而设计的书。如果你不喜欢课程,这是一个学习所有软件工程技能的绝佳替代方案。
MLOps
Jupyter Notebook 中的模型实际上没有任何商业价值。
有东西在生产中,做出低于平均水平的决策,这对业务有利,比在笔记本中一个花哨的神经网络什么也不做但具有不切实际的准确性要好得多。
因此,如果你真的想成为一名优秀的机器学习工程师,你需要能够部署你的模型,这样你实际上可以从财务角度为公司带来好处。
要做到这一点,你需要学习以下内容:
-
云 — 学习像AWS、GCP或Azure这样的云技术。我工作过的所有机器学习模型都已在云中部署,而且这只会越来越多。AWS 最受欢迎,所以我建议你学习这个。
-
容器化 — 学习Docker和Kubernetes;这对于在云中运行你的模型是必要的。
-
版本控制 — 学习Git和 GitHub,这是不可避免的。所有软件都是这样构建的。
资源:
-
实用 MLOps— 这可能是你理解如何部署你的机器学习模型及其相关主题的唯一一本书。我更多地将其用作参考文本,但它几乎教授了你需要知道的一切。
-
设计机器学习系统— 另一本优秀的书籍和资源,可以多样化你的信息来源。这本书由Chip Huyen撰写,他可能是 AI/ML 生产系统的领先专家。
-
freeCodeCamp — 涵盖了几乎所有软件工程和 MLOps 主题的丰富资源。
在这里学习所有内容将为你成为一名机器学习工程师提供所需的所有知识;然而,仅凭这些知识本身并不能保证你找到工作。
你需要通过构建一个包含正确项目的稳固作品集来展示你的技能。
如果你想知道如何做到这一点,请查看这篇文章,我将详细解释你如何做到这一点。我会在那里等你!
另一件事!
我提供 1:1 辅导电话,我们可以讨论你需要的一切——无论是项目、职业建议,还是只是确定你的下一步。我在这里帮助你前进!
[1:1 Mentoring Call with Egor Howell]
职业指导、求职建议、项目帮助、简历审查topmate.io](https://topmate.io/egorhowell/1203300)

浙公网安备 33010602011771号