有几个人通过私信联系我,询问如何成为一名机器学习工程师。虽然我并不是 Karpathy,但我是一名经验丰富的中级机器学习工程师,我最近通过刻意练习,实现了从业余爱好者到专业人士的转变。
如果你想走类似的道路,我将为你提供一个切实可行的路线图和实用资源,以帮助你转型或为你的职业生涯奠定基础。希望我的建议对你有所帮助。
在盲目跟随任何路线图之前,让我们先回答一个问题:什么是机器学习工程师?
围绕机器学习的职位名称非常混乱(为此我还写了一篇34页的白皮书)。在本文中,机器学习工程师(ML Engineer)是指在组织中工作,使用机器学习来解决业务问题的人,他们的工作包括创建或改进产品,或者提升组织的运作效率。这与机器学习研究员(ML researcher)不同,后者的工作重心在于科学研究,开发新的方法论,但不解决即时的业务需求。
34页的白皮书:https://www.appliedai.de/assets/files/Whitepaper-ML-Skills.pdf
尽管这两个角色有相当大的重叠,但由于我是一名机器学习工程师,所以本文的讨论也将聚焦于这一角色。
01
所需技能
机器学习工程是一门跨学科的职业,你需要具备不同领域的技能,包括软件工程、数据科学、数学,以及你应用领域的一些知识。
软件工程
机器学习工程师不仅要能够“编程”,这点毋庸置疑,但除此之外,他们还需要具备出色的软件工程能力。这背后有几个原因。
首先,由于机器学习的核心是从数据中发现模式,机器学习工程师必须具备处理大量数据的能力。通常这意味着数据量大到无法手动处理。
其次,机器学习工程师的工作绩效通常通过对业务的影响来衡量,因此他们需要有能力将模型部署并整合到产品的整体框架中。如果无法将成果实际应用于用户,那么工程师的工作就没有完成。
最后,理解计算机的内部机制并且能够开发定制工具,能够极大地提高开发的速度。尽管直觉和领域知识在设计模型时帮助你获得巨大的优势,但构建机器学习模型始终是一个需要反复试验的过程。
机器学习工程师会进行大量有依据的假设,并探索哪个方法效果最佳。这个过程越快,迭代速度越高,最终的结果也会越好。软件工程技能有助于实现自动化,加快迭代速度,使每次实验更加高效。
这种观点并非我在强调。OpenAI 的 CTO Greg Brockman 也持有类似观点,他的成就是最好的证明。
总而言之,机器学习是一门计算机科学的学科,而软件工程是将计算机科学转化为有效应用的途径。
数据科学
由于机器学习的核心在于从数据中学习模式,因此机器学习工程师必须具备处理数据的能力。他们需要能够应对现实世界中数据的混乱性,掌握如何收集、理解数据,构建有用的特征,并能够解释模型输出的合理性。
最棘手的问题往往不是内存不足,而是当训练循环完成时,模型输出看似正确,但在某些细微却重要的地方出现错误。数据科学家通过实践反复得出的结论是:构建优秀模型的关键在于花大量时间深入了解数据。
此外,机器学习工程师还需要具备学术研究能力。他们需要能够识别与当前问题相关的重要研究,并能够复制这些方法并应用到自己的领域中。
数学与统计
机器学习工程师所需的数学技能难以精确量化。尽管他们在日常工作中不一定每时每刻都需要这些技能,但掌握相关数学知识对于理解问题的数据和选择合适的算法至关重要。因此,这些数学知识是隐性但不可或缺的。
要成为一名高效的机器学习工程师,需要具备实分析、线性代数和概率论的基础知识,这些是构建和训练许多机器学习模型的核心数学理论。
当他们训练大型模型或处理大规模数据集时,数值方法和优化理论的知识也会大有裨益。
最后,为了更好地理解具体问题的数据,机器学习工程师还需要掌握统计学知识。
应用领域
尽管机器学习更像是一个通用工具箱,但机器学习工程师在特定领域知识的帮助下会大大受益。
一方面,这意味着他们需要了解自己的应用场景、用户群体以及可用的数据。
另一方面,他们还需要在处理特定类型的数据和选择合适的模型方面具备专业知识。例如,处理文本数据的语言模型,处理视觉数据的 CNN(卷积神经网络),或者处理时间序列数据的 RNN(循环神经网络)。
02
成为机器学习工程师的路径
通常有两条路径可以通向机器学习工程师的职业:
-
数据科学路径。首先,精通数学和数据处理,开始使用机器学习,然后学习必要的软件工程技能。
-
软件工程路径。你首先成为一名有能力的软件工程师,然后在职业生涯的某个阶段转向学习数学、数据和机器学习技能。
对于自学者而言,我认为第二条路径更为合适。因为即使你的数据和机器学习技能还很初级,你依然可以为组织带来实际的价值。许多业务问题相对简单,部署一个简单的模型已经能产生价值,而一个停留在 Jupyter notebook 中的优秀模型不过是一个有趣的玩具。然而,这并不是让你无限期地推迟学习数学的理由。你不能满足于平庸。
如果你在大学攻读与量化相关的学位,你可能会自然地遵循第一条路径。在这种情况下,建议你在学期间或毕业后花时间学习软件工程相关的内容。
学习计算机科学并专攻机器学习,同时通过大量实习掌握行业级的协同开发技能,实际上是同时走两条路径。如果你有机会选择,这是最优的选择。
03
实用资源
以下是一些结构化课程资源,帮助你踏上机器学习工程师之路。
这些课程更像是技能建议的指南,而不是固定的课程表。你可以根据自己的需要随时调整,使用更喜欢的资源,或通过直接参与项目来学习这些技能。
你最了解自己最有效的学习方式,因此更重要的是覆盖这条路线图中的内容,而不是拘泥于学习方式。
尽管如此,我还是为你准备了一份可操作的路线图和具体的资源。现在,让我们开始吧。
学习编程
无论选择哪条路径成为机器学习工程师,学习编程和掌握计算机技能都是基础。
由于 Python 在机器学习和数据科学领域拥有最强大的生态系统和最丰富的资源,因此选择 Python 是一个明智的决定。
哈佛大学的 CS50 课程是一个优秀的编程与软件工程入门课程,涵盖了 Python 的基础知识。不过,如果你想进一步深入,赫尔辛基大学的 Programming Fundamentals 课程是一个不错的选择。如果你已经完成了 CS50,可以略读前几章。
虽然不需要深入了解 Python 的内部工作原理就能在数据科学和机器学习中使用它,但这些知识在未来会非常有帮助。为了掌握这些知识,可以把一本类似《Dead Simple Python》的书放在手边,闲暇时翻阅一章。
哈佛大学的 CS50 课程:https://pll.harvard.edu/course/cs50-introduction-computer-science
赫尔辛基大学的 Programming Fundamentals 课程:https://programming-23.mooc.fi/
《Dead Simple Python》:https://nostarch.com/dead-simple-python
学习浅层机器学习
现在你已经掌握了编程技能,可以开始学习机器学习了。
建议从浅层学习算法入手。相比神经网络,这些算法更加直观,能够帮助你在处理数据的过程中逐步积累技能,而不必面对复杂的技术挑战。吴恩达的 Machine Learning Specialisation(机器学习专项课程) 是一个极佳的资源,许多初学者通过它踏入了 AI 领域的大门。
吴恩达的 Machine Learning Specialisation(机器学习专项课程):https://www.deeplearning.ai/courses/machine-learning-specialization/
学习深度学习
在掌握了机器学习的基础之后,可以转向深度学习,这是当前行业的主流标准,也是一个非常强大的工具箱。
如果你喜欢吴恩达的教学风格,可以继续学习他的 Deep Learning Specialisation(深度学习专项课程)。
如果你更喜欢大学风格的课程,推荐 Yann LeCun 在 NYU 的深度学习讲座。
而如果你倾向于更实用的方法,fast.ai 和附带的书籍《Practical Deep Learning for Coders》(实用深度学习)将非常适合你。
这些资源也涵盖了一些必要的数学知识。如果你发现自己的数学基础不足,deeplearning.ai 提供了一个关于深度学习数学的课程。
在我的学习过程中,这本书给我提供了很多帮助。它包含许多易于理解的章节和实践性例子,既适合作为学习材料,也适合作为参考书。
吴恩达 Deep Learning Specialisation(深度学习专项课程):https://www.deeplearning.ai/courses/deep-learning-specialization/
Yann LeCun 在 NYU 的深度学习讲座:https://atcold.github.io/NYU-DLSP21/
fast.ai:https://course.fast.ai/
fast.ai 附带的书籍《Practical Deep Learning for Coders》:https://course.fast.ai/Resources/book.html
deeplearning.ai 提供了一个关于深度学习数学的课程:https://www.deeplearning.ai/courses/mathematics-for-machine-learning-and-data-science-specialization/
微积分和线性代数:https://www.mathworks.com/academia/books/calculus-and-linear-algebra-in-recipes-karpfinger.html
培养领域专长
在掌握了深度学习的基础后,是时候选择一个领域进行深入研究了。如果你还不确定自己的兴趣方向,可以尝试 Huggingface 提供的丰富课程。这些课程虽然不足以让你完全掌握某个领域,但它们是很好的入门材料,能够为你提供基础知识、背景以及专业术语,帮助你更好地研究文献并构思项目。
说到项目,软件开发、编程、机器学习——这些领域都需要一定的理论知识,但工程是一门实践性学科,只有通过动手实践才能真正掌握。当然,你可能已经通过课程练习和小项目来巩固所学内容。现在是时候设定更高的目标了。自由探索你的兴趣,通过积累项目作品集,从新手逐步成长为专家。
一般来说,拥有一两个架构精良、富有创新性且令人印象深刻的项目,比积累许多基础项目要更有价值,并且你在这个过程中学到的也更多。要在求职中脱颖而出,重要的是让这些项目具象化。这可能意味着撰写博客或在社交媒体上分享你的学习成果,但最令人印象深刻的方式是构建一个前端界面,让他人能够亲自体验你所开发的项目。
Huggingface 提供的丰富课程:https://huggingface.co/learn
如何成为某一领域的专家:
-
通过迭代方式参与具体项目并深入完成它们,按需学习(即不要自下而上地广泛学习)。
-
用自己的话教会/总结你所学的一切。
-
只与过去的自己比较,永远不要与他人比较。
学习软件工程
这就引出了软件工程的部分。Fullstackopen 课程是 Web 开发和分布式系统的一个绝佳入门课程。
虽然它不涉及机器学习,但它涵盖了许多对机器学习工程师非常有价值的工具和实践,例如架构分布式系统、管理数据库和容器化技术。
这些知识对于模型的部署和为用户提供界面至关重要。课程使用 JavaScript,这是 Web 开发的主要语言。
虽然一开始可能会觉得有些难以应对,但你已经走了很远,现在值得硬着头皮再添加一门语言到你的工具库中。
Fullstackopen 课程:https://fullstackopen.com/en/
学习 MLOps
此外,还有一些专门针对机器学习的软件工程和开发实践(MLOps)。要学习如何在整个生命周期中管理和开发机器学习产品,fullstackdeeplearning 是一个极佳的资源,可以为你提供整体流程的概览。
选择那些能够让你作为机器学习工程师工作更轻松的实践,并将它们应用到你的项目中。这样的努力绝对是值得的。
fullstackdeeplearning:https://fullstackdeeplearning.com/course/2022/
04
结语
到这里就结束了。如果你按照这份指南进行学习,我相信你可以成为初级机器学习工程师职位的有力竞争者。
通过学习以上材料,你将掌握必要的理论知识,而通过完成项目,你将在一些重点领域成为专家。
然而,要找到工作,掌握技能只是成功的一半。你还需要展示并有效地传达这些技能。你可以通过实习、获取良好的推荐信(或留任邀请),以及展示作品集来实现这一点。
FreeCodeCamp 的创始人 Quincy Larson 写了一本关于他成为软件工程师之旅的好书。虽然他的目标职位略有不同,但他的经历对你即将踏上的旅程非常有借鉴意义。这本书还可以作为有声读物收听,例如在 FreeCodeCamp 播客的第 100 集上,可以在 Spotify 上找到。
需要提醒的是:尽管路线图看似简单,但实施起来并不容易。学习机器学习和软件工程确实具有挑战性,但这并非不可能。已有许多人在你之前完成了这些,如果你全心投入,你也可以做到。
为了给你一个大致的时间预估,我会根据你的起点来预计这将花费你多长时间。
Quincy Larson 关于成为软件工程师之旅的书:https://www.freecodecamp.org/news/learn-to-code-book/
Spotify 收听地址:https://open.spotify.com/episode/7hz0vgue0AQWoB2CFsmwar
从零开始
如果你能够全职专注于这条路线图,我预计从零开始学习所有内容大约需要 18 个月。
如果你正处于上大学的阶段,并且经济条件允许,我认为这是最简单的路径。大学不仅为你提供社区、指导、系统化的课程,还能帮助你获取实习机会,并让父母或其他期望你成才的人更加安心。
如果你是从一个不相关的行业转行,一定要充分利用你之前的经验。即使你想转行离开当前的行业,你的领域知识仍然是你的独特优势。一旦你获得了相关职位,你将可以在工作中继续学习,跳槽也会变得更加顺利。
开发人员转行
如果你已经是一名开发人员,你很快就能展现出你的价值。利用业余时间,大约六个月的时间来学习浅层机器学习和深度学习,以及补充你所缺乏的数学知识。
你之前的软件工程经验非常宝贵,也会受到雇主的高度认可,甚至可能不需要牺牲任何资历。一旦转行,你就可以在工作中继续学习和成长。
数据科学家转向机器学习领域
如果你是一名数据科学家,可能会因为缺乏软件工程能力而感到职业发展的瓶颈。
我当时就是这种情况。对于数据科学家来说,转向机器学习是一个相对自然的职业进阶,如果你能投入额外的时间学习,可以加速你的职业发展。
可以在你当前的岗位中寻找机器学习项目,或者从上面提到的资源中精挑细选一些内容,花几个月的时间学习,然后建立一个作品集,申请新的职位。
05
总结
通过遵循这条路线图,你可以成为一名有力的初级机器学习工程师候选人:
-
使用 CS50 课程和专门的 Python 资源,学习计算机科学基础和 Python 编程
-
学习经典(浅层)机器学习,打好基础并培养处理数据的直觉
2.1) 建立微积分、线性代数和概率论的数学基础(掌握数值方法和优化理论则更佳)
-
选择特定课程学习深度学习,例如 Yann Le Cun 的 NYU 讲座、fast.ai 或 deeplearning.ai 的深度学习专修课程
-
通过 fullstackdeeplearning 学习 MLOps
4.1) 如有需要,可以先通过 fullstackopen 课程学习软件工程,涵盖 Web 开发、分布式系统、DevOps 和关系型数据库的基础知识
-
寻找你感兴趣的细分领域,通过建立作品集来发展专长。可以从 Huggingface 的课程入手,深入探索你的兴趣点,并通过实现学术论文中的算法来构建一些有趣的项目。
然后,去争取那份工作吧。
祝你好运!
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。
👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)
👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓