ChatGPT 人工智能 GPT4 伦理 生成式 医疗 监管 安全 机器学习 深度学习 神经网络 计算机视觉 强化学习 模型 算法 应用 开发 研究 工具 平台 框架 数据集 训练 部署 安全 合规 培训 投资 LLM,llm AI,ai,Ai 大模型 大语言模型 制图 生图 绘图 文生图 文生视频 生成式AI AGI 世界模型 sora chatGPT,chatgpt,ChatGpt claude openai Llama deepseek midjourney 红熊猫模型 Red panda,panda Stable Diffusion,StableDiffusion,stable DALL- E 3 DALL E DALL Flux,flux 扩散模型 混元大模型 文心一言 通义千问 可灵 Pika PixelDance 豆包 月之暗面 零一万物 阶跃星辰 搜索增强 MiniMax Talkie Agent prompt fastai LangChain TTS 微调 提示词 知识库 智能体
# 热门搜索 #
搜索
人到中年,成功转行机器学习工程师?国外小哥狂刷吴恩达LeCun,教你18个月转行
9207点击    2024-07-28 22:13

转行成为一名机器学习工程师,可行吗?


国外一位成功转行的Max Mynter告诉我们——完全可以!



收到了多条X私信后,他决定把自己的成功经验写下来。


他强调说:我不是Karpathy,但我可以算一名扎实的中级机器学习工程师。


他是通过刻意的努力,才成为一名工程师的。而且,就是在最近,他刚刚从业余爱好者转成了一名专业人士。



以前,Mynter从事的是社会学和物理学


因此,他写下来这篇博文,希望为有类似愿望的人们提供可行的路线图和资源,从而为职业生涯奠定基础。


什么是机器学习工程师?


在开始,Mynter给我们提了一个问题:什么是机器学习工程师?


因为机器学习以及相关职位名称及其混乱,Mynter特意和人合写了一份34页的白皮书。



在指南中,机器学习工程师指的是在组织中工作,并使用机器学习来解决业务案例的人,这就意味着创建、改进产品,或让组织更高效地工作。


注意,机器学习研究人员与之不同。他们强调的是在科研中开发新颖的方法,但并不需要解决眼前的业务需求。


机器学习工程师的必备技能


机器学习工程是一个跨学科的职业,我们需要掌握软件工程、数据科学和数学等不同领域的技能,以及应用领域的一些知识。


软件工程


当然,一个合格的机器学习工程师必须会写代码,但最重要的是,你需要是一位有能力的软件工程师。原因如下——



首先,由于机器学习是在数据中发现模式,因此机器学习工程师必须能够处理足够数量的数据。通常这意味着数据量超出了手动处理的量。


其次,由于机器学习工程师的绩效是通过业务反映的,因此这个岗位就需要能部署模型,并且将其集成到更大的产品环境中。


可以说,如果没有为用户提供任服务,那一个工程师的工作就是失败的。


最后,如果了解计算机的内部工作原理,以及构建定制工具的能力,你的开发速度就会大大提高。


直觉和专业知识确实可以极大地帮助你设计模型,但在实验过程中构建机器学习模型,始终是必要的。


在这个过程中,机器学习工程师需要尝试大量有根据的猜测,并且探究怎样会让效果更好。


这个过程迭代得越快,最终的输出就越好。而软件工程技能有助于更快地自动化和迭代,并且使得各个实验更加高效。


作者还援引了OpenAI联创Greg Brockman的观点。



Brockman曾表示:学习机器学习其实比学习软件快得多,优秀的软件工程师潜力巨大


可以说,机器学习最终是一门计算机科学的学科,而软件工程,就是让计算机科学成为有效应用的方式。


数据科学


由于ML是从数据中学习模式,因此ML工程师需要具备处理数据的能力。


他们需要能够处理混乱的现实世界数据记录,知道如何收集、理解这些数据,还要能设计出有用的特征,并且解释模型输出的敏感性。



最棘手的错误并不是内存不足,而是当训练循环运行后,模型输出了看似正确但其实是错误的结果时。


数据科学家一次又一次地尝到惨痛的教训:想要构建一个优秀的模型,最优秀的方法就是花大量时间处理数据。


ML工程师还需要的一个技能就是做研究。


你需要识别与你手头问题相关的论文,并且能够复刻这些方法,应用到自己的领域。


数学与统计学


机器学习工程师需要掌握什么样的数学技能?这个问题很难量化。


在大多数情况下,你在日常中不会明确地需要用到它们。


然而它总是隐性地被需要。



因为了解正确的数学知识,对于理解当前问题的数据、选择合适的算法来说至关重要。


为此,机器学习工程师需要具备实数微积分、线性代数和概率论的基础。这些是用于构建和训练许多机器学习模型的核心数学理论。


而在训练LLM或处理大型数据集时,你会从数值方法和优化理论的知识中受益。


最后,为了理解特定问题的数据,你还需要掌握统计知识。


应用领域


虽然ML更像是一个通用工具箱,但ML工程师却可以从特定领域知识中受益匪浅。


一方面,它们会帮你更了解你的用例、用户和可用数据。


另一方面,他们发展了处理特定类型数据和合适模型的专业知识。


例如,用于文本的语言模型、用于视觉的CNN或用于时间序列的RNN。


成为机器学习工程师,有哪些途径


通常,进入机器学习工程有两种途径——


  1. 数据科学路线。首先,你需要精通数学和数据工作,开始使用机器学习,然后学习必要的软件工程技能。



  1. 软件工程路线。当你成为一名有能力的软件工程师,可以在职业生涯的某个时候转向学习数学、数据和机器学习技能。



在作者看来,对于自学者来说,2是更好的路线。


这是因为,即使拥有基本的数据和机器学习技能,你对公司也是有用的。


许多业务问题相对简单,只要部署简单模型,就已经可以产生价值,而困在Jupyter笔记本中的出色模型,只是一个玩具而已(尽管非常有趣)。


当然,这并不意味着你可以放弃数学了——永远不要保平庸!


如果你碰巧在大学攻读定量学位,那在默认情况下,你上的课会或多或少遵循路线1。


在这种情况下,请在上学期间或学期结束后,花一些时间来学习软件工程知识。


学习计算机科学并专门研究机器学习,同时进行大量实习,以学习行业级的协作开发,这两条路可以同时进行。


对于路线1,这可能是最佳选择。


实用资源


以下是一系列帮助你进入ML工程的结构化课程。


它们更多是为你提供相关技能的建议,而不是明确的课程。


你可以随时进行切换,使用你更喜欢的资源,或者通过直接做项目来掌握所需技能。


你肯定最清楚如何最有效地学习。涵盖本路线图的内容,比如何涵盖它更重要。


学习编码


上述两条路线的基础,都是学习编程,使用计算机。


由于Python的机器学习和数据科学生态系统最为强大,且拥有最多的可用资源,因此是一个安全的选择。


哈佛的CS50课程,涵盖了Python的基础知识,对编程和软件工程做了精彩的介绍。



如果想更深入了解一下,可以去看赫尔辛基大学的《编程基础》。对于已经学过CS50的人,可以浏览一下前几章。



虽然你并不需要了解Python的内部工作原理,就可以将其用于数据科学和机器学习,但这些东西在以后会非常有用。


请将《Dead Simple Python》之类的书放在床头柜上,并时不时地阅读一章。



学习浅层机器学习


学会了编码,你就可以开始学习机器学习了。


你应该从浅层的学习算法开始。它们比神经网络更直观,你可以藉此培养处理数据的技能,无需增加复杂性。


吴恩达的《机器学习专业化》是一个很好的资源,它一直是许多人进入AI的门户。



学习深度学习


了解了ML的基础知识后,接下来你就可以转向深度学习、当前的行业标准和强大的工具箱。


如果你喜欢吴恩达的教学风格,就可以继续学习深度学习专业课程。


如果你喜欢更具大学风格的课程,我推荐Yann LeCun在纽约大学的深度学习讲座。



如果你需要更实用的方法,fast.ai和随附的《程序员实用深度学习》一书可以帮你。



这些资源还涵盖了一些必要的数学知识。如果你发现自己的知识缺乏,deeplearning.ai有深度学习数学课程。



这本书让我受益匪浅。它的章节和实际示例既可以用作教学,也可以作为参考。



建立领域专业知识


一旦掌握了深度学习的基础,就该选择一个领域进行深入研究了。


如果你还不确定选择哪个领域,Huggingface上就有大量课程。



这些课程本身当然不够,但它们是很好的入门读物,可以为您提供研究出论文的基础、背景和词汇,并为你可以构建的项目提出想法。


如果想要开始做项目呢?


软件、编码、机器学习——对于所有这些项目,一些理论知识都是必要的,但工程其实是一种实践,你可以通过实践来学习。


如果你已经完成了课程练习,构建了一些项目,就可以做一些更具野心的事情。


通过建立作品集,你可以更自由地探索自己的兴趣,由新手升级为专家。



拥有许多基本项目要更好。


而且,它会让你学到更多。


想要申请成功,让这些项目变得切实可行就变得非常重要。


你可能需要写一篇博客或推文,来介绍自己的学习成果。


但你能做的最令人印象深刻的事,就是构建一个前端,以便其他人可以尝试。


学习软件工程


Fullstackopen课程是Web开发和分布式系统的很好的切入点。



它不涉及机器学习,但涵盖了许多工具和实践,它们对于机器学习工程师来说非常有价值,例如构建分布式系统、数据库和容器化。


通过这些知识,你就可以部署模型,为用户提供界面。


本课程使用的是JavaScript,因为它是网络语言。


虽然这一开始可能令人畏惧,但竟然你已经走了这么长一段路,此时硬着头皮给自己的工具包添加另一种语言,也是值得的。


学习MLOps


还有特定于ML的软件工程和开发实践 (MLOps)。


要了解如何在整个生命周期中管理和设计ML产品,fullstackdeeplearning 是一个很好的资源,可以让你了解一个大概。



选择让你的ML工程师生活更轻松的实践,应用到你的项目中,这些努力都是值得的。


结束语


作者表示,如果你遵循本指南,一定可以成为入门级ML工程职位有竞争力的候选人。


因为你既掌握了必要的理论知识,做过的项目也使你成为了几个重点领域的专家。


然而,要成功找到工作,拥有技能只是做到了一半。


你还需要与人交流,展示你的技能。


你可以通过选择实习获得良好的推荐,或者留下来,另外还可以试着获得投资。


FreeCodeCamp的创始人Quincy Larson,就写了一本很棒的书,关于他成为软件工程师的旅程。



尽管他的目标角色略有不同,但这些经历会非常适合你前半段的旅程。


FreeCodeCamp播客上有这本书前100集的有声读物,比如在Spotify上。



需要注意的是:路线图看起来很简单,但实践起来并不容易。


学习机器学习和软件工程很困难,但这不是巫术。


其他人在你之前就已经做到了,如果你下决心,就可以做到(这里有另一篇文章,指导你如何有效地学习困难的东西)。



为了给您一个粗略的了解,这是我预计需要多长时间,具体取决于您的起点。


从零开始学习


如果您全职致力于此路线图,预计需要大约18月的时间,从0开始学习所有内容。


如果你可以上大学,这是最简单的途径。大学可以为你提供所需的社区、指导、课程、实习资源。


如果你想从不相干的行业转行,请一定要利用起之前的经验。即使想要离开,你的专业知识也会让你与众不同。


作为开发转行


如果你已经是一名开发人员,你将很快变得有价值。


下班后,你可以花大约六个月的时间,学习浅层和深层的机器学习,以及你缺乏的数学知识。


你此前的软件工程经验非常有价值,会受到雇主的高度重视。


甚至你会更加幸运,不需要做出任何牺牲。


一旦转行成功,你就可以在工作中学习,并获得报酬。


作为数据科学家进入机器学习领域


如果你是一名数据科学家,你大概率迟早会因为缺乏软件工程能力,而触到职业天花板。


作者直言:自己就是如此。


对于数据科学领域的从业者来说,转向机器学习或多或少是一种自然的职业发展轨道。


如果投入额外的时间来学习,就可以加速你的职业生涯。


你可以在当前的工作资源中寻找ML项目,花几个月时间来完成它们,然后构建一个组合,来让自己转型。


概括


总的来说,你需要做到以下这些事——


  1. 学习计算机科学基础知识以及编程,通过CS50课程和专用Python资源
  2. 学习经典(浅层)的机器学习,为数据工作奠定基础,培养直觉


2.1) 建立微积分、线性代数和概率论的数学基础(数值和优化会更加分)


  1. 按照特定课程学习深度学习,例如Yann LeCun的NYU讲座、fast.ai或deeplearning.ai的深度学习专业课程
  2. 从fullstackdeeplearning中学习MLOps


4.1) 如果有必要,可以通过fullstackopen来学习软件工程,比如学习Web开发以及分布式系统、DevOps和关系数据库的基础知识


  1. 寻找您想要从事的领域,通过建立你的作品集来发展专业知识。你可以从Hugginface课程中找到一个起点,跟随你感兴趣的兔子洞,通过论文实现构建一些有趣的项目。

做完这些,你就可以去投简历了。


祝你好运!


文章来源于“新智元”,作者“新智元