社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

6年机器学习踩坑总结:如果重来,我一定会避开这些弯路!

活水智能 • 1 年前 • 369 次点击  

点击上方↗️活水智能关注 + 星标🌟

作者:Boris Meinardus

编译:活水智能

 

去年我说过这些话,今年我再说一遍。

但现在,我是一家全球顶尖 AI 初创公司的研究科学家,这个职位我花了 6 年多才达到。

而如今,有许多新的、令人惊叹的学习资源存在,但知道它们的人却少之又少!

所以,今天我将分享如果我能够重新开始学习机器学习(ML),我会采取的六个关键步骤。

让我们开始吧!

Python

好吧,这一点似乎显而易见,不是吗?但并不那么显而易见的是,这个阶段你应该学多少 Python。

一般来说,这些步骤并不需要严格按照某个特定顺序完成,但我不会从最后一步(可以说是最重要的一步)开始。

也就是说,我强烈建议从学习 Python 的基础知识开始。

Python 是几乎所有从事机器学习工作的人都会使用的编程语言,接下来的每一步都以它为基础。

所以,我一定会先学习列表(list)和字典(dictionary)是什么,以及如何写简单的 if-else 语句或 for 循环。我甚至会说,我还会想要学习列表推导式(list comprehensions)和类继承(class inheritance)。

说实话,我不知道还能说什么,只能建议你直接在 YouTube 或 Google 上搜索“Python 教程”或“Python 初学者课程”,然后开始学习。有太多惊人的免费内容,但你需要记住的一点是:一定要边看教程边动手写代码。

接下来是一个重要的部分:在学习了这些基础知识之后,我会想要做几个有趣的小项目。例如,一个简单的计算器、一款贪吃蛇游戏、一个小型网站之类的东西。

尽情享受这个过程,但不要花费太多时间在这上面!

如果你从未编程过,这一步会很重要;但如果你已经编程过,只是想专门学习 Python,那么在掌握基础后,不需要过多纠结这些步骤。

机器学习在大多数情况下是一个非常经验导向、实践性很强的领域。所以,良好的编程能力非常重要,但我们稍后会详细讨论这一点。

那么现在……让我们来看看让人害怕的数学吧!

数学

学习机器学习并不需要复杂的数学。真的不需要!经过多年的学习,我坚信这一点!

很多机器学习工程师所需的数学知识并不超过基础的大学数学!

如果让我重新开始学习,我会主要学习以下 3-4 个内容:

  • • 如何求导数和积分(虽然积分很少真正相关)

  • • 什么是向量和矩阵,以及它们的基本运算规则(这些规则其实就是你可以学习并直观理解的规则)

  • • 概率论的基本概念。这主要归结为一小部分概念,尤其是贝叶斯定理。

  • • 最后,一些让我们生活更轻松的数学技巧,比如对数规则和求和规则,但这些可以在学习过程中逐步掌握。

只要掌握这些概念和规则,你在学习机器学习的路上就会走得非常远。

每当你学习一个新的模型时,你都会以不同的方式应用这些概念和规则。对我来说,概率论部分可能是最难直观理解的,但即便如此,你需要学习的内容并不多,而且绝对不是火箭科学。

当然,学得越多越好。如果你想从事研究,你需要更多的数学知识,练习应用这些不同的规则,并培养更强的直觉。

那么,话虽如此,2025 年我会如何具体学习相关的数学知识呢?

当然,有很多资源,但有一本非常新颖、直击重点、令人惊叹的书叫《Why Machines Learn》(为什么机器会学习)。

我知道,我知道,书本有点让人害怕,而且似乎已经过时了,而视频课程要方便得多。但视频和书本并不需要互相排斥。

事实上,这是我在本文中会多次推荐的一个方法:使用多种不同的资源来理解一个概念。没有任何一门课程/讲座/书籍能够在你第一次观看或阅读时完美地教会你所有东西。

但这本书涵盖了你需要的许多基础数学知识,而且以一种非常有趣且易于理解的方式呈现。我真的非常推荐它!

当然,这本书并不能涵盖所有内容。例如,它没有详细讲解如何计算导数。

所以,每当我遇到作者解释得不够清楚的地方,或者他略过的细节时,我会使用其他资源,比如 YouTube 或其他课程。或者,我现在非常喜欢做的一件事,也是我重新开始学习时会做的,就是使用大语言模型(LLMs)来提出具体问题!

不过,你需要始终意识到这些模型可能会“幻觉”(即自信地陈述错误信息)。但当涉及到互联网上广泛可用的这些基础知识时,它们实际上表现得相当不错!

如果还需要推荐一个数学课程资源,我可能会使用的仍然是去年推荐的 Khan Academy(可汗学院)!

尽管如此,总体来说,我会以这本书为主,并从此扩展。

有趣的是,这本书已经专注于在机器学习的背景下理解数学,并且涉及了许多机器学习的概念。

但在完成这本书之后,我还是会看看接下来该做些什么!

机器学习

接下来,我会继续学习机器学习(ML)和深度学习(DL)相关的所有内容!

终于到这一步了,对吧?!

现在,我有意将机器学习和深度学习分开,因为它们有些不同,而且通常是分开教授的。不过,当谈论整个主题时,我会直接称之为机器学习(ML)。

传统机器学习并不是你现在看到的那些炫酷的东西,但它绝对是每个真正的机器学习工程师、数据科学家、研究员或其他相关人员需要掌握的核心知识!

所以,我绝对不会跳过这一部分。

《Why Machines Learn》已经涵盖了很多内容。但并不是全部,所以在这一阶段,我会简单地观看 Andrew Ng 的机器学习专业课程。

在这门课程中,我会学习许多机器学习的基础知识,例如逻辑回归、决策树、推荐系统,以及许多关于如何训练和开发模型的实用策略。

另一个很棒的地方是,这门课程还包含实际的编程练习!所以,我终于可以开始学习如何实际编写机器学习管道并训练一些模型了,这非常令人兴奋!

这门课程的内容可能会与《Why Machines Learn》中学到的内容有些重叠,但这完全没问题!

如果我对某些主题已经非常自信,我会跳过它们,但更多时候,“重新学习”某些已经学过的内容会帮助我理解之前没有理解的细节!

所以,我不会急于求成!

即使现在作为一名实际的研究科学家,我仍然会观看一些我已经学过的课程,并每次发现新的细节,或者只是刷新我对已经遗忘的内容的记忆。

到目前为止,我已经学习了 Python 的基础知识、机器学习和深度学习所需的基本数学知识,以及一些传统的机器学习技术,并实际编写了我的第一个机器学习模型。

现在到了真正酷炫的部分了。

深度学习

这是令人兴奋的部分,但也是你需要做出重要决定的部分。

你是想学习深度学习到可以开始使用现有模型并将其应用于某些问题的程度,还是 真的 想学习深度学习,包括许多非主流模型、更注重理论以及更复杂的数学基础组合?

你看,机器学习仍然是一个非常新的、经验导向的领域,它通常需要比理论理解更多或不同的技能。因此,构建基于机器学习的酷炫项目或产品通常并不需要深入的机器学习理论知识。

如果我想尽快找到一份机器学习相关的工作(这仍然需要一段不短的时间),我会选择第一种方法,也就是所谓的“应用”方法。

在这种情况下,我不会花费太多时间学习大量的深度学习理论。我会简单地观看 Andrew Ng 的深度学习专业课程,在那里你可以学习很多深度学习的基础知识,并获得一些实际的编程练习。

然而,没有任何资源是万能的!不幸的是,这门课程并没有 真正 涉及 transformers,而 transformers 是必须了解的。所以,为此,我会观看像 Stanford 的 CS25 系列课程(可在 YouTube 上找到)。我还会观看 Andrej Karpathy 的几乎所有 YouTube 视频,并尝试跟着写代码!

现在,我应该已经具备了进入机器学习学习旅程下一章的能力,而这也是整个过程中最重要的章节之一!

但在我们进入下一步之前,让我们看看如果我想 真正 学习机器学习、在世界上最好的公司找到工作,甚至为自己设定成为研究员的目标,我会怎么做!

好吧,我会做的就是通读一本名为《Understanding Deep Learning》(理解深度学习)的书。这是一本绝对令人惊叹的资源,涵盖了深度学习的很多内容!几乎涉及了你需要了解的所有相关模型。

更令人印象深刻的是,这本书可以免费下载为 PDF,并且它包含大量实际的理论和实践练习!!

我个人也购买了这本书,但只是为了支持这一惊人的免费资源。PDF 更好用,因为它会不断更新,你还可以点击相关链接。

这本书的阅读难度比《Why Machines Learn》高……相当多,哈哈,但它几乎教会了你需要了解的所有理论和不同的模型,以帮助你在机器学习领域找到一份很棒的工作。

不过,请不要误解我的意思,仅仅通读这本书并不能让你获得面试机会。我们将在本文的下一部分讨论这一点,但它会教会你所有最相关的理论和不同的模型。

然而,再次强调,没有任何资源是完美的!

你很可能不会在第一次阅读时完全理解所有内容,或者可能作者解释某个概念的方式并不适合你。这完全正常!

在这种情况下,再次建议你去 YouTube、Google(查找优秀的博客文章)或使用任何大语言模型,尝试通过其他资源学习它。

我的意思是,即使是这本书也无法涵盖所有内容!例如,它并没有真正涉及 RNN 和 LSTM,这有点遗憾,但我猜它更多地关注 transformers,因为这是当今流行的架构。所以,每次我发现作者略过的内容时,我也会想要在其他地方查找相关信息。

互联网上的资源应有尽有,你只需要知道该查找什么。这本书正好提供了一个优秀的学习课程。

总之,如果我想真正学习深度学习(我确实想!),这本书非常棒,但通读它可能需要一段时间!

不过,你不需要一次性快速完成这本书!

还有一件事至少与对这些机器学习和深度学习模型理论的理解同样重要。

事实上,我不会急于一次性学习完这本书的所有内容!我会将其分解,并与下一章的内容结合起来学习。

项目

我无法强调项目的重要性。

如前所述,机器学习在很大程度上是一个非常经验导向和实践性的科学领域。不管你想从事什么类型的工作,你通常都需要大量编程。

首先,有一些基础的机器学习开发栈库你应该学习,比如 pandas(数据分析库)、numpy(数值计算库)和 matplotlib(绘图库),用于操作和可视化数据。

同样,YouTube 上有非常简单明了的教程。甚至一个 20 分钟的教程通常就足够了。之后,你需要实际使用这些工具。

至于像 Tensorflow 和 PyTorch 这样的机器学习框架,你已经在之前提到的机器学习和深度学习课程中有了初步了解。

再强调一次,如果你在理解某些内容时遇到困难,只需 Google 或询问大语言模型即可!这就是在 2025 年学习机器学习的神奇之处:你可以在网上找到所有资源。但没有什么比实际应用更能教会你一项技能。

所以,一开始,我会简单地从 Kaggle 上的挑战开始。

不要低估这些挑战的复杂性,从更简单的挑战开始,这样你就不会感到沮丧和失去动力。如果你确实参加了那些更难的挑战(也伴有奖金),不要指望获胜。达到那种水平真的很难,而且需要大量的计算资源。

那么,好吧,在完成 Kaggle 挑战之后,就到了从一个学习过机器学习课程的人转变为一个优秀的机器学习工程师/科学家的绝对最重要的一步。

那就是开展更大、更具挑战性的项目;我最喜欢的项目类型是重新实现一篇论文。

如何做到这一点对于这篇已经很长的文章来说太复杂了,但总体来说,只需确保选择一个合适的难度级别,既能挑战你,但又不会让你完全放弃。

通过阅读论文的现有代码,你真的可以学到很多很多。

如果你真的在机器学习方面变得很厉害,也许你甚至可以找到一些方法来改进现有的最新研究成果,或者将它们应用于一个新问题。

但在那时,你已经在机器学习的旅程中走得很远了!

现在,我会清楚地告诉自己,每完成一个项目,我都会变得更好,可以承担越来越令人印象深刻的项目。第一个项目不会是最棒、最令人印象深刻的,但这没关系!

知道这一点很好,因为这会让我的最终小贴士变得没那么可怕。

无论我处于什么阶段,我都希望以某种方式展示我的工作。

在学习机器学习基础知识时,可以在 LinkedIn 或 X(推特)上分享你学到的东西。

如果你学到了一个很酷的深度学习技术,可以用另一篇 LinkedIn 帖子甚至一篇博客文章来解释它!

最重要的是,在完成项目时,以某种方式将它们展示给世界。不管它们在一开始看起来多么简单。

这就是当初让我获得与一位 Google DeepMind 研究员的实习面试机会的原因。我写了一篇关于我完成的一个项目的博客文章,并展示了我的工作。

更酷的事情可能是开发一些演示网站!

而最终的目标是实际上将你的工作写成一篇论文。

你始终可以这样做,并将其上传到一个名为 arxiv 的网站,但最好的事情是,它被接受到一个很酷的会议上!

但在这一点上,我们已经基本上成为了一名研究员!

看,这需要很多时间,至少取决于你开始这段旅程的水平以及你能投入学习的时间!

所以,总之,不要放弃,并且尽量享受学习的过程。

祝你学习愉快,拜拜啦!👋🏻

 



活水智能成立于北京,致力于通过AI教育、AI软件和社群提高知识工作者生产力。中国AIGC产业联盟理事。

活水现有AI线下工作坊等10+门课程,15+AI软件上线,多款产品在研。知识星球中拥有2600+成员,涵盖大厂程序员、公司高管、律师等各类知识工作者。在北、上、广、深、杭、重庆等地均有线下组织。

欢迎加入我们的福利群,每周都有一手信息、优惠券发放、优秀同学心得分享,还有赠书活动~

👇🏻👇🏻👇🏻

 点击阅读原文,立即入群

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178585