人到中年,想半路出家转行成机器学习工程师,可行吗?最近,这位成功转行的国外小哥用一篇干货满满的硬核博客告诉我们:完全可以!
他强调说:我不是Karpathy,但我可以算一名扎实的中级机器学习工程师。
他是通过刻意的努力,才成为一名工程师的。而且,就是在最近,他刚刚从业余爱好者转成了一名专业人士。
因此,他写下来这篇博文,希望为有类似愿望的人们提供可行的路线图和资源,从而为职业生涯奠定基础。
因为机器学习和相关职位名称及其混乱,Mynter特意和人合写了一份34页的白皮书。
在指南中,机器学习工程师指的是在组织中工作,并使用机器学习来解决业务案例的人,这就从另一方面代表着创建、改进产品,或让组织更高效地工作。
注意,机器学习研究人员与之不同。他们强调的是在科研中开发新颖的方法,但并不是特别需要解决眼前的业务需求。
机器学习工程是一个跨学科的职业,我们应该掌握软件工程、数据科学和数学等不相同的领域的技能,以及应用领域的一些知识。
当然,一个合格的机器学习工程师必须会写代码,但最重要的是,你需要是一位有能力的软件工程师。原因见下——
首先,由于机器学习是在数据中发现模式,因此机器学习工程师一定要能处理足够数量的数据。通常这意味着数据量超出了手动处理的量。
其次,由于机器学习工程师的绩效是通过业务反映的,因此这个岗位就需要能部署模型,并且将其集成到更大的产品环境中。
最后,如果了解计算机的内部工作原理,以及构建定制工具的能力,你的开发速度就会大大提高。
直觉和专业知识确实可以极大地帮助你设计模型,但在实验过程中构建机器学习模型,始终是必要的。
在这个过程中,机器学习工程师需要尝试大量有根据的猜测,并且探究怎样会让效果更好。
这个过程迭代得越快,最终的输出就越好。而软件工程技能有助于更快地自动化和迭代,并且使得各个实验更加高效。
Brockman曾表示:学习机器学习其实比学习软件快得多,优秀的软件工程师潜力巨大
可以说,机器学习最终是一门计算机科学的学科,而软件工程,就是让计算机科学成为有效应用的方式。
他们需要可处理混乱的现实世界数据记录,知道如何收集、理解这些数据,还要能设计出有用的特征,并且解释模型输出的敏感性。
最棘手的错误并不是内存不足,而是当训练循环运行后,模型输出了看似正确但其实是错误的结果时。
数据科学家一次又一次地尝到惨痛的教训:想要构建一个优秀的模型,最优秀的方法就是花大量时间处理数据。
你需要识别与你手头问题相关的论文,并且能够复刻这些方法,应用到自己的领域。
因为了解正确的数学知识,对于理解当前问题的数据、选择合适的算法来说至关重要。
为此,机器学习工程师需要具备实数微积分、线性代数和概率论的基础。这些是用于构建和训练许多机器学习模型的核心数学理论。
而在训练LLM或处理大型数据集时,你会从数值方法和优化理论的知识中受益。
虽然ML更像是一个通用工具箱,但ML工程师却可以从特定领域知识中受益匪浅。
数据科学路线。首先,你需要精通数学和数据工作,开始使用机器学习,然后学习必要的软件工程技能。
软件工程路线。当你成为一名有能力的软件工程师,可以在职业生涯的某个时候转向学习数学、数据和机器学习技能。
许多业务问题相对简单,只要部署简单模型,就已经可以产生价值,而困在Jupyter笔记本中的出色模型,只是一个玩具而已(尽管非常有趣)。
如果你碰巧在大学攻读定量学位,那在默认情况下,你上的课会或多或少遵循路线。
学习计算机科学并专门研究机器学习,同时进行大量实习,以学习行业级的协作开发,这两条路可以同时进行。
你可以随时进行切换,使用你更喜欢的资源,或者通过直接做项目来掌握所需技能。
由于Python的机器学习和数据科学生态系统最为强大,且拥有最多的可用资源,因此是一个安全的选择。
哈佛的CS50课程,涵盖了Python的基础知识,对编程和软件工程做了精彩的介绍。
如果想更深入了解一下,可以去看赫尔辛基大学的《编程基础》。对于已经学过CS50的人,可以浏览一下前几章。
虽然你并不需要了解Python的内部工作原理,就可以将其用于数据科学和机器学习,但这些东西在以后会非常有用。
请将《Dead Simple Python》之类的书放在床头柜上,并时不时地阅读一章。
你应该从浅层的学习算法开始。它们比神经网络更直观,你可以藉此培养处理数据的技能,无需增加复杂性。
吴恩达的《机器学习专业化》是一个很好的资源,它一直是许多人进入AI的门户。
了解了ML的基础知识后,接下来你就可以转向深度学习、当前的行业标准和强大的工具箱。
如果你喜欢更具大学风格的课程,我推荐Yann LeCun在纽约大学的深度学习讲座。
如果你需要更实用的方法,fast.ai和随附的《程序员实用深度学习》一书可以帮你。
这些资源还涵盖了一些必要的数学知识。如果你发现自己的知识缺乏,deeplearning.ai有深度学习数学课程。
这些课程本身当然不够,但它们是很好的入门读物,可以为您提供研究出论文的基础、背景和词汇,并为你可以构建的项目提出想法。
软件、编码、机器学习——对于所有这些项目,一些理论知识都是必要的,但工程其实是一种实践,你可以通过实践来学习。
一般来说,拥有一个或几个令人印象深刻、架构良好、值得花费一个月时间的创新性项目,比拥有许多基本项目要更好。
它不涉及机器学习,但涵盖了许多工具和实践,它们对于机器学习工程师来说非常有价值,例如构建分布式系统、数据库和容器化。
虽然这一开始可能令人畏惧,但竟然你已经走了这么长一段路,此时硬着头皮给自己的工具包添加另一种语言,也是值得的。
要了解如何在整个生命周期中管理和设计ML产品,fullstackdeeplearning 是一个很好的资源,可以让你了解一个大概。
选择让你的ML工程师生活更轻松的实践,应用到你的项目中,这些努力都是值得的。
作者表示,如果你遵循本指南,一定可以成为入门级ML工程职位有竞争力的候选人。
因为你既掌握了必要的理论知识,做过的项目也使你成为了几个重点领域的专家。
FreeCodeCamp的创始人Quincy Larson,就写了一本很棒的书,关于他成为软件工程师的旅程。
其他人在你之前就已经做到了,如果你下决心,就可以做到(这里有另一篇文章,指导你如何有效地学习困难的东西)。
如果你可以上大学,这是最简单的途径。大学可以为你提供所需的社区、指导、课程、实习资源。
如果你想从不相干的行业转行,请一定要利用起之前的经验。即使想要离开,你的专业相关知识也会让你与众不同。
下班后,你可以花大约六个月的时间,学习浅层和深层的机器学习,以及你缺乏的数学知识。
如果你是一名数据科学家,你大概率迟早会因为缺乏软件工程能力,而触到职业天花板。
对于数据科学领域的从业者来说,转向机器学习或多或少是一种自然的职业发展轨道。
你可以在当前的工作资源中寻找ML项目,花几个月时间来完成它们,然后构建一个组合,来让自己转型。
4.1) 如果有必要,能够最终靠fullstackopen来学习软件工程,比如学习Web开发以及分布式系统、DevOps和关系数据库的基础知识
寻找您想要从事的领域,通过建立你的作品集来发展专业相关知识。你可以从Hugginface课程中找到一个起点,跟随你感兴趣的兔子洞,通过论文实现构建一些有趣的项目。