对于那些希望成功进入机器学习领域的人来说,仅仅停留在千篇一律的入门项目和基础教程上,就好比试图驾驶卡丁车去赢得一级方程式赛车比赛。
虽然能有所行动,但无法参与真正的竞争,更不可能取得胜利。
在对数百份机器学习项目组合进行评估,并面试了数十位真实数据科学和机器学习职位的候选人后,可以明确指出:那些最终获得录用的人才,他们所构建的项目都远超基础教程的范畴。
因此,本文将深入剖析那些真正能帮助求职者获得面试机会乃至工作录用的项目类型和实践框架。
这些项目并非易事。
但这恰恰是它们奏效的原因。
重新实现一篇研究论文
试想一下。
一篇机器学习研究论文,往往是该领域顶尖专家数月甚至数年工作的结晶,被浓缩在短短几页文字中。
这些论文中蕴含的知识量是巨大的。
因此,如果能够亲自去拆解、分析并重新实现这些论文中的内容,所能学到的东西将是不可估量的。
这就像是从蓝图开始重建一辆一级方程式赛车——或许没有原始工程师那样的工具,但通过理解每一个螺母和螺栓,就能掌握整个机器的运作原理。当最终成功运行自己的版本时,将对赛车运动的理解达到一个常人难以企及的高度。
重新实现一篇论文能让学习者掌握多项关键技能,包括:
- 理解与前沿模型相关的复杂数学理论。
- 使用从零开始编写的代码或仅依赖基础库来实现复杂的模型。
- 培养创造性思维,并将所学知识应用于新想法中。
更重要的是,绝大多数,可以说近99%的求职者都没有采取这种实践方式,因此,这样做能让个人瞬间脱颖而出。
然而,这项任务并不容易,但如今,轻松的途径已不足以帮助求职者获得理想职位。
虽然如何具体实现一篇论文可以单独写一篇长文,但这里概述一下关键步骤:
- 阅读论文。然后反复阅读,直到完全理解论文试图解决的问题、所使用的算法、数据,以及结果为何重要,是令人震惊还是在预期之中。根据个人经验,这可能需要一段时间。
- 如果遇到不理解的概念,应主动去学习。这并非浪费时间,而是在积极弥补知识上的空白。
- 草拟或编写高层级架构,例如输入和输出、整体系统的粗略设计以及机器学习模型的结构。
- 从最简单的部分开始实现,并确保其能够正常运行。
- 构建一个粗略可用的原型。
- 进行优化并尝试复现论文中的结果。
以下是一些值得推荐实现的研究论文:
- Attention Is All You Need
- An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale
- Language Models are Few-Shot Learners
- LoRA: Low-Rank Adaptation of Large Language Models
这些推荐论文主要集中在深度学习领域,但求职者可以根据自己感兴趣的研究方向寻找相关的论文。
以下是一些寻找研究论文的实用网站:
解决个人实际问题
“我应该构建什么样的项目?”
这是业内人士常被问到的问题之一。
关键在于,许多人并未意识到这个问题本身是错误的(指项目问题)。
如果直接给出一个具体的项目让求职者完成,那么在面试中讲述该项目时,其背后将缺乏引人入胜的故事。
届时将如何阐述该项目?
“哦,是网上某位人士建议我做的。”
这显然不是一个理想的面试场景。
真正能脱颖而出的项目,往往是与个人兴趣紧密结合,且具有内在驱动力去解决的问题。这类项目更具吸引力和趣味性,其独特的价值将在面试中充分展现。
项目示例
以下提供一个出色的项目示例。
这个故事曾在之前的文章中提及,此处再次重复,旨在强调求职者应当构建的项目类型。
在一家前公司,当时正在招聘一名初级数据科学家,主要负责解决运筹学方面的问题。
最终录用的一位候选人就拥有一个非常突出的项目,该项目不仅与职位高度相关,而且正是该候选人感兴趣并致力于解决的问题。
这位候选人对梦幻橄榄球(NFL)充满兴趣,并设计了自己的优化算法,以更好地分配每周的球员选择。
他们甚至更进一步,阅读了关于他人解决方案的学术期刊论文,并实现了其中一些想法。这与重新实现研究论文的理念不谋而合!
个人项目构建框架
以下是一个简单的框架,可帮助求职者构思出与上述类似的出色个人项目。
- 列出至少五项工作之外的个人兴趣。
- 针对每个兴趣点,写下五个希望解答或解决的问题。这样总共将得到25个潜在问题。
- 思考机器学习如何能帮助回答这些问题。即使某个问题看起来完全不可能,也不必担心,保持创造性思维。当然,不要尝试创造出机器狗之类的奇思妙想!
- 最后,选择一个最令自己兴奋的问题。理想情况下,选择一个感觉略微超出当前能力范围的问题;这样,就能真正学到新东西,并突破舒适区。
这项练习只需花费10分钟,因此没有理由不尝试,它将为求职者提供一个有助于获得工作的项目构想。
构建项目复杂度和规模
然而,仅仅拥有一个好的想法可能还不足够。为此,项目需要具备一定的复杂性和规模。
这可以通过多种方式来体现和表达:
- 可以利用生产级代码、AWS等云系统,并使用Docker和Kubernetes对算法进行容器化,实现项目的端到端部署。
- 可以采用真正复杂、最先进的算法或框架。阅读研究论文是实现这一目标的绝佳途径!
- 可以设计用户可交互的项目,例如一个在线应用程序。
- 可以将项目扩展为解决多种问题,构建一个模型套件。
可供选择的方案很多,容易让人感到不知所措。
建议从现在开始行动,边做边学。这是取得进展的唯一途径。
其他项目灵感
如果出于某些原因,上述两种项目(尽管它们极有可能帮助求职者获得工作)不合心意,以下是一些额外的项目构想。
- 向AI寻求项目灵感;当然,需要提供合适的提示词。
- 参与Kaggle竞赛,但需要取得靠前名次才能脱颖而出。
- 利用AI/基础模型解决个人问题。
- 使用基本的Numpy,甚至仅用原生Python从零开始编写机器学习算法。
如果需要更具体的指导,以下是一些可以尝试的更细致的项目列表:
- 为吃豆人或任何其他游戏应用强化学习。
- 从头开始构建一个语言模型。
- 构建一个用于分类任意图像的计算机视觉模型。
- 对社交媒体平台上关于特定话题的内容进行情感分析。
- 为你喜欢的App开发一个推荐系统。
- 针对特定用例对大型语言模型(LLM)进行微调。
再次强调,这里提供的是高层次的构想,因为只有与个人紧密相关的项目才能真正脱颖而出。
在完成这些项目之后,便可自信地开始申请工作了!
但要真正获得面试机会,一份坚实可靠的简历至关重要。
那么,被忽视的简历和引人注目的简历之间,究竟有何区别?
关于简历的奥秘,可以在之前的相关文章中找到答案。
