程序员可以进入机器学习领域

在这篇文章中,我想向您展示程序员也能入门机器学习。

我将向您展示,学习机器学习可以和学习任何其他高科技一样。

我们将把学习机器学习与学习编程本身进行比较,学习编程可能是一个更大的挑战。

Equation

图片版权归 iwannt 所有,保留部分权利

一位设计师想写代码

假设你是一名设计师,比如一个年轻的网页设计师。你用 Photoshop 或类似的工具制作网页设计,然后可能将设计切片并转换为 CSS。你与程序员为伍,也许你有点羡慕编程。你认为自己可能想学习如何编程。无论对错,你认为 CSS 和 HTML “几乎就是编程”,这都是创造力的表达,编程只是你创造力的另一种媒介或出口。

你跳上 Quora 或 StackOverflow,问一个问题,比如“我是一名设计师,如何学习编程?

你得到的答案五花八门。你会得到一些看起来经验丰富、技术精湛的程序员送你的免费建议,比如“学习 ANSI C 和指针”、“学习二进制”、“买一本关于汇编语言的书”、“从 LISP 开始”。也许一位口才极佳的作者会过来,写一篇长篇且有说服力的回复,告诉你真的应该购买并阅读 Knuth 的《计算机程序设计艺术》。你听从他的建议,在亚马逊上买了书,但只看到了引言部分就后悔购买,觉得自己不够聪明,放弃了学习编程的兴趣,结果三个月后又会重复同样的循环。

发生了什么?这些建议看起来都是好建议。

问题在于这些建议是回顾性的。这些建议来自程序员,他们从自己编程的角度出发,思考如何成为更好的程序员。这些建议没有考虑到完全的初学者,一个只想浅尝辄止、看看自己是否喜欢的人。

当然,现在世界已经有些不同了。这个问题已经被认识到,并且有一些很棒的服务正在解决这个问题,例如教人们如何编程。

当然,也许我们会学习指针、二进制、汇编语言和 LISP,甚至阅读 Knuth 的部分内容(没人真的从头读到尾,对吧?),但那都是后来的事情。但你是怎么开始的?我开始的时候是拼凑东西,尝试事物,实验,创造和学习。我后来深入研究技术细节是因为我想创建更大、更好、更强大的程序。我不是从技术细节开始的。我认为很多程序员都有类似的经历,你的经历也是如此吗?请留言。

一位程序员想做机器学习

如果你正在阅读这篇文章,你可能是一名程序员或某种开发者。想想你对机器学习的兴趣。你是否看过一些经验丰富、技术精湛的机器学习专家给你的入门建议?

我一直在搜索和阅读这些建议,其中有些是好的,但很多不是。我收集了一些样本如下。

学习机器学习需要具备哪些数学技能?

  • 你绝对需要熟悉基本的线性代数(向量和矩阵的操作)以及对数和指数函数。
  • 如果你想让事情“容易”些,你需要学习到特征向量的线性代数。

扎实的数学基础是机器学习的必要条件吗?

  • 你需要对概率、线性代数、线性规划和多元微积分有一定的了解。

机器学习工作需要哪些技能?

  • 首先,你需要有扎实的计算机科学/数学背景。机器学习是一个高级主题,所以大多数教科书都假设你具备这样的背景。
  • 统计学、概率论、分布式计算和统计学。

那里有一些非常好的建议,但这些建议适合完全的初学者吗?它们适合那些想浅尝辄止的程序员吗?

也许人们问错了问题。此外,我挑拣了一些答案片段,这些片段表明在开始机器学习之前需要具备数学知识。我想说的是,初学者会专注于他们不拥有的东西和他们做不到的事情。他们可能在尝试之前就已经放弃了。

我完全同意,扎实的线性代数和概率知识是入门机器学习的绝佳基础。我完全同意《统计学习要素》是一本在多个层面上都非常出色的书。我只是不认为一个对机器学习感兴趣的程序员应该做的第一件事就是去上数学课或阅读该领域的密集理论性著作。我实际上强烈反对这样做。

两个机器学习领域

机器学习有两个方面

  • 实践机器学习: 这涉及到查询数据库、清洗数据、编写脚本来转换数据,以及将算法和库连接起来,编写自定义代码来从数据中挤出可靠的答案,以解决困难且定义不明确的问题。这是现实的混乱。
  • 理论机器学习:这涉及到数学、抽象、理想化场景、极限和美学,以及告知什么才是可能的。它更整洁、更干净,也更脱离现实的混乱。

实践方面没有理论方面的框架和严谨性是不行的。理论方面没有实践方面的意义或动力也是不行的。这种二分法是虚假的,它实际上是一个工具和方程的海洋,但请跟着我的思路。

作为程序员,你可能偏爱实践方面,但你作为“技术人员”会遇到瓶颈,需要理解理论方面才能有效地进行即兴创作。你必须阅读算法的数学处理,你必须研究密集性的教科书。要想在这个领域做得好,就需要这些。而问题在于,这是实践者 freely 提供的给初学者的建议,这种建议是理想化的,适合中级水平的,而对初学者来说是不恰当的。

程序员喜欢功能强大的工具

我认为,对于经验丰富的程序员来说,将机器学习视为一个高级编程主题,比如多线程(跟着我的思路)是有用的。

如果你想学习多线程,你只需要编写一些多线程程序,就能对它能释放的力量有所了解。你会犯各种各样的错误,但你原型化的一些东西会起作用,你会看到可能性的闪光点。如果你决定这是你的方向,你就可以阅读书籍并深入研究。

你可以使用现有的多线程结构库,也可以编写自己的库,可以深入学习各种多线程结构背后的更具数学性的主题。让你的兴趣驱动你的学习,最终你可以构建并部署生产级多线程代码。这是一个过程,而不是一个飞跃。

当然,机器学习是一个更广泛、更多样化的领域,但我提倡的正是这种分步策略,并将在未来的文章中详细阐述。

你不会从初学者直接变成团队负责人并部署机器学习系统。危险区域是真实存在的。你可能会学到足以让你变得危险的知识。但你从操控机器的能力中习得的自律(以及你的代码审查、同行和导师,以及常识)会限制这些非常真实的危险。

就像学习编程一样,学习机器学习是一个永无止境的学习之旅,掌握真的意味着持续学习。学习阅读方程,将其转化为代码,并写出自己的代码来构建你的问题,如果你感兴趣,这些都可以是沿途的休息站。

资源

我列出了一些资源,如果你想继续思考这个问题。这有点深入,我相信我们可以进行一些很好的讨论。

  • 滚动到上面,回顾一下上面列出的 StackOverflow 问题的一些答案。那里有一些答案会劝阻程序员,除非他们懂数学,但也有一些非常鼓舞人心的答案会让你振奋起来。
  • 为什么成为一名数据科学家可能比你想象的要容易 Gigaom 的一篇文章,它引用了案例研究,说明有分析倾向的人(如程序员)有机会从零开始进入数据科学领域并迅速成为国际竞争力。
  • 编程是否需要数学? 有趣的是,我认为支持和反对的论点都非常相关,并且有有用的视角。

这是一篇非常有争议的文章,我非常想知道你的想法。和朋友们讨论这个问题时,我确实听到了很多关于危险区域以及“技术人员”机器学习学徒的进阶选择。我将在未来的文章中跟进这两个话题。

你怎么看?我提出的关于学习编程与程序员学习机器学习的相似性是否有实质内容?

47 条对《程序员也能入门机器学习》的回复

  1. Shantnu 2013年12月1日 上午10:12 #

    观点不错。

    我认为大多数“专家”的问题在于,他们总是和同类人在一起,他们的视野非常狭窄。很快,他们就脱离了现实世界,忘记了初学者有多么艰难。就像戴着眼罩的大象/马,它们只能朝一个方向看。

    我最近在读一个博客,里面有一个人抱怨人们对“所有这些看起来都一样的 Bootstrap 网站”感到厌倦。他的意思当然是他自己厌倦了。问题是,普通用户每月不会看几百个 Web 应用。他们最多看 4-5 个,其中 3 个是 Gmail、Facebook 和 Yahoo/Twitter/之类的。所以,除非你的网站是面向专业设计师的,否则你的目标市场不会“对看成百上千个相似网站感到厌倦”。

    我不同意你提到的技术人员危险区域——对我来说,这听起来像是“哦,我们花了五年时间研究这个,怎么能让这个新手试图超越我们呢?记住你的位置,孩子。”但是,在我写下一篇博文之前,我将保持我的判断。

    你提出了关于初学者被推荐了完全不适合他们的书籍的非常好的观点。我认为可能有两个原因——一是缺乏同理心。大多数程序员都不是社交型的人,他们的社交技能顶多算差(虽然我不知道他们为什么不发展)。

    第二个,也是更阴险的原因,也是让我非常恼火的原因,也是我停止访问许多论坛的原因,就是这种“男子气概文化”。真正的男人(TM)用 C、汇编和 LISP 编程。他们都有数学博士学位,业余时间用 Haskell 编写优雅的代码;我们不需要那些花哨的 Javascript,谢谢。

    但我还是闭嘴吧,看起来我的评论快赶上你的博客了。

    好博客,继续写下去。

    • jasonb 2013年12月2日 上午8:04 #

      你好 Shantnu,评论得很棒。
      你说的没错,专家总是和专家在一起,忘记了开始时的感觉。我认为这可以解释为什么初学者得到的建议更适合中高级水平。你将那位关于 Bootstrap 网站看起来都一样的人的比喻用得很贴切。
      我认为确实存在危险区域,也就是说,人们可能只学到一点点知识就变得过于自信,并构建系统或生成他们无法解释的结果——这可能会对他们自己或他们的组织造成更大的伤害。我的观点是,在多线程等其他技术领域也存在类似的危险区域!这是一个有趣的思考,我还没有完全想清楚,也许可以成为一篇很棒的未来博文。
      再次感谢你的想法,非常感谢。

  2. qnaguru 2014年2月17日 下午7:33 #

    对于新手来说,我认为最好的起点是使用工具——让工具为你做统计。
    一旦你掌握了它——你就可以开始揭示工具实际在做什么……

    我读到过关于这方面的内容,可能是在这个网站或其他地方看到的 🙂 我表示同意。

  3. Kartik 2015年1月8日 下午4:58 #

    嘿,Jason
    我关注你的博客很久了。
    这就是我正在尝试学习机器学习的方法。
    告诉我我是否在正确的道路上。
    我开始学习 Coursera 的 Andrew Ng 的机器学习课程。

    我的做法是,看完视频后,我尝试练习,也就是实现整个算法,编码公式,并用干净的数据通过它。
    这样我就可以理解代码和公式。

    之后,我使用 sklearn 库来实现相同的练习,我发现它非常容易使用。

    然后可能还会做几个使用该库的小型已实现项目。
    其中一些来自《机器学习实战》一书。

    我还没有使用过这些工具,我下载了 Orange... 但还没有使用过。
    我还考虑参加 Kaggle 竞赛或下载一些数据进行一些分析和一些网络爬虫项目。

    我没有学习线性代数、概率、统计学,因为我对它们有基本的了解,但不深入。但我基本上能理解算法。

    我在正确的轨道上吗???

    • Jason Brownlee 2015年1月9日 上午5:17 #

      你好 Kartik,你做得很好。

      你还可以做的一件事是,在博客或 GitHub 上分享你小型项目的成果,并开始建立一个公开的作品集。这将有助于展示你走了多远,并展示你的能力。

  4. Simon Shen 2015年1月23日 下午1:06 #

    我叫 Simon,我是佛罗里达大学的一名计算机工程硕士生。本学期我专注于机器学习和数据挖掘,选修了“模式识别”和“大数据生态系统”等课程。我只是个初学者。你的博客真的很好!我希望在学习过程中能和你交流!

  5. Phil Marneweck 2015年8月24日 下午6:04 #

    如果你不想做像识别面部这样千篇一律的事情,因为别人已经用清晰的使用示例写好了代码,那么没有数学和统计学你就寸步难行了,

    我尝试了各种声称使用最少数学的博客、书籍和在线课程…… pffffffft。线性代数不是最少的数学,统计学也不是。

    使用别人的机器学习算法实现并不简单或清晰,因为如果你深入了解,每种机器学习算法都有很多实现方式,而实现者所做的选择会影响机器学习算法如何或为何适用于你的情况。

    我建议先学习数学,然后学习统计学,最后再看机器学习,否则你会很快感到非常沮丧。花几个月时间学习数学和统计学,无论是否学习机器学习,都会让你在未来受益匪浅。

  6. Pravallika 2016年8月16日 下午2:15 #

    嗨 Jason,
    你说过我们必须有扎实的计算机科学/数学背景,但实际上我是一名电子电气工程专业的毕业生,但我在数学方面有很好的知识。即使我没有经验,我能学会机器学习吗?

    • Jason Brownlee 2016年8月17日 上午9:48 #

      当然可以。

      专注于学习如何端到端地处理机器学习问题并创造价值。具体的工具和语言只是实现这一目标的手段。

  7. Praveen 2017年1月19日 下午6:59 #

    你好 Jason,

    我遵循了你在网站上讨论的所有清晰策略。我很遗憾错过了这个博客,它确实很有用,而且你给出的类比也很贴切,而且很高兴我遵循了相同的道路……。另外,你的书《机器学习算法大师》也非常好。你的辛勤工作得到了赞赏。

  8. Tom Aronson 2017年4月29日 下午11:06 #

    机器学习、信息技术或其他领域的一个大问题是公司对招聘人员或“猎头”的迷恋。通常会有带有多个项目符号的职位描述。猎头代表他们的雇主客户。许多,并且根据我的经验,即使是大多数猎头,也不知道他们在卖什么。所以,可能一个初学者,甚至一个有经验的开发者或在数学、统计学等方面很强的人,看到这些要求。当然,大多数都有要求:“数学、统计学、物理学、计算机科学或其他技术学科的博士学位”。所以,当然,那些没有博士学位的人就止步了。这是一个筛选,这样公司和猎头就不会浪费他们宝贵的时间(此处包含讽刺)。

    我认为解决方案是按照你能达到的水平学习材料,并按照这篇文章的建议逐步提高你的知识。然后尝试找出可以在工作中学习的地方,并通过隐藏的就业市场做出贡献——通过参加聚会、研究行业内的人以及与 ML 及相关领域工作过的其他公司的人。

    继续写好文章,Jason。

    • Jason Brownlee 2017年4月30日 上午5:30 #

      谢谢分享,观点很好。

      我还想指出,有数百万中小型公司需要具备这些技能的人,在那里你可以在面试过程中直接与经理沟通,并与他们坦诚地讨论如何提供实际价值。

      让财富 500 强公司拥有博士级别的人才,而财富 500 万的公司可以继续取得成果。

  9. Jason Holtkamp 2017年5月9日 下午12:33 #

    非常感谢你写了这篇文章。你的类比深深触动了我,因为它让我想起了我刚开始学习编程的头几周和几个月。我最初是通过自学编程,最终爱上了它,所以过了一段时间我参加了一个软件工程训练营(Hack Reactor)。现在我是一名 JavaScript 工程师。

    从 JS 工程师转向 ML 工程师曾被认为是一个无法逾越的目标,因为我没有数学/统计学/计算机科学学位,但读得越多,我就越被鼓励开始朝着这个目标努力。事实上,直到大约两年前,我还认为从管理顾问转向软件开发是不可能的(我错了)。

    我一定会将这个网站加入书签,并将链接发送给朋友。再次感谢 Jason。

    • Jason Brownlee 2017年5月10日 上午8:41 #

      谢谢 Jason,我很高兴听到这个。

      坚持下去!专注于取得成果,稍后填补理解的空白。

  10. Vlad 2017年9月15日 下午8:10 #

    赞同这篇文章所说的真理。几周前我开始学习 Python(这是我第一次学习编程),受到了机器学习各种成就的鼓舞。不用说,我在参加课程的老师们试图教 Python 的方式就好像我是一名学习第二门或第 N 门编程语言的程序员一样。而事实并非如此,相反,我在年少无知时编程对我来说并不奏效,我觉得那很可悲,并坚持了下来。所以,我在这里说,感谢你写了这么棒的博客。你让我的动力得以维持,尽管其他老师犯了错误。

  11. Jack Krick 2017年12月30日 上午4:44 #

    当你上面提到“ASM”时,你是指汇编语言吗?

  12. John Krick 2017年12月30日 上午6:08 #

    谢谢!

  13. Vineet 2018年2月20日 下午6:25 #

    Jason Brownlee,我是一名 SQL Server 数据库程序员,
    我想学习机器学习,有可能学会机器学习吗?
    如果可以,请为我推荐相关的学习材料。

  14. Rajendra 2018年3月27日 下午10:28 #

    你好,

    我有一个问题想问你……我来自 SAP 背景,ABAP 是编程语言(SAP ABAP)。我对 CSS、XML、JAVA 等了解不多。
    我在大学时学会了 C 语言编程,现在我正在慢慢学习 Python。

    如果我想在人工智能和机器学习方面表现出色……我该如何实现?ABAP编程与机器学习(Python)之间有什么联系吗?我不太相信有联系……

    有什么有用的答案吗?

    谢谢,
    Rajendra

    • Jason Brownlee 2018年3月28日上午6:28 #

      抱歉,我不熟悉那种语言。

      我相信您很快就能掌握 Python 或 R。

  15. zhaowei 2018年7月17日下午1:31 #

    很棒的文章,看到“满足困难且定义不清的问题”时,我不禁大笑出声。

    哈哈哈

  16. Randolph 2018年7月22日下午1:20 #

    Jason,我找到了你的网站。你的方法对初学者来说非常实用。我全力支持。

  17. Hermoine 2018年7月23日下午6:38 #

    你好 Jason,

    好文章!我是一名流程经理,对机器学习非常感兴趣。我正在寻求职业转型。为了利用我过去的技能,我将来应该寻找什么样的职位?

    谢谢

  18. vishnu 2018年11月24日上午5:36 #

    谢谢Jason,感谢你精彩的博客。我是一名刚开始学习机器学习的开发者,你的书籍和博客对我帮助很大。你就是我的导师。祝好!!!

    • Jason Brownlee 2018年11月24日上午6:37 #

      谢谢,我很高兴知道这些教程很有用!

  19. SAK 2018年12月19日凌晨12:36 #

    嗨,Jason,

    谢谢这么好的帖子。我是一名 RPA 开发人员。我非常热衷于学习机器学习,以便能够提出一些好的机器学习预测服务,让我的 RPA 机器人更智能。

    但我真的很困惑于机器学习、深度学习、NPL、人工智能等术语。能否清晰地解释一下这些术语之间的区别,并指导我如何开始使用认知平台?

  20. sandipan sarkar 2019年6月27日晚上7:07 #

    哇,光看评论就有这么多东西要学。我是一名有抱负的数据科学家。

  21. Tom Franken 2019年7月16日凌晨2:22 #

    有点像历史上的日期很重要。不幸的是,我们在了解故事之前就被灌输了日期。

    我们有足够的工具可以在不需要理解数学原理的情况下深入研究机器学习。话虽如此,我在尝试理解 XGBoost 的所有参数以便在调优时做出合理选择时遇到了困难。那些 AWS GPU 费用不断累积!

    • Jason Brownlee 2019年7月16日上午8:20 #

      绝妙的比喻!

      也许你可以通过在较小的模型上使用部分数据来抽查?通常(但不总是)好的配置会进行扩展。

  22. jennifer williams 2019年7月16日上午6:10 #

    我刚开始接触机器学习,是的,对于为了开始这个过程我应该学习什么的所有建议都感到不知所措。我也是一个(由于各种原因)在高中有大学时逐渐形成数学恐惧症的人。

    快进到现在……我正在使用 https://www.mathsisfun.com/ 作为我的首选网站,在我需要的时候来复习我的数学……这是一个很棒的网站,而且真的很有趣!!!(从来没想过数学会变得有趣!)现在原理很清楚了……是的,它有时可能很简单,但该网站旨在让高中生及更年轻的学生快速掌握关键概念……而且方式完全没有威胁性。

    我正在使用 Jason 的 ML 和 WEKA 课程,以及 http://people.sabanciuniv.edu/berrin/cs512/lectures/WEKA/WEKA%20Explorer%20Tutorial-REFERENCE.pdf

    作为我理解 ML 概念、运行算法和理解如何解释结果的基本参考。

    • Jason Brownlee 2019年7月16日上午8:25 #

      干得好,Jennifer!

      很高兴您能加入 ML Mastery 社区。

      Weka 是一个非常好的(并且经常被忽视的)入门方法,可以让你在应用机器学习过程中变得熟练!

  23. Jason 2019年8月3日下午2:09 #

    我喜欢将自己视为一名 C#.NET 开发人员。如果我想成为专业人士,我必须这样做。我认为不断相信“我是一名程序员”很重要。无论多么困难,或者经历多少失败。这假设您已经决定这是您想为之奋斗一生的事业。我已经做出了这个决定。但是,尽管我每天尝试至少进行 12 小时的编码练习,但这仍然是一条艰辛的道路。我总觉得我只是在摸索皮毛。

    作为一名程序员,学习数学永远不会吃亏,因为它是一种终极的解决问题学科。但问题就在这里,掌握用于编码和解决问题的数学是一个巨大的挑战。我只是想精通一门编程语言,再加上数学,这很吓人。但我经常思考这个问题,我看着计算机编程问题,想知道如何用数学来解决。但我只是想,我远远达不到那个水平。

    但在多年的疑惑之后,我终于知道了真相:“你需要数学才能成为一名优秀的程序员吗?”因为我对自己不够“有天赋”感到沮丧,我总是在想我是否在浪费时间。怀疑自己,觉得自己很笨。

    在大多数情况下,答案是否定的。对于游戏来说,这取决于。对于 ML,我不知道。似乎如果你不理解线性代数、概率和多变量微积分,你会遇到很多困难。但它可能真的取决于你具体在做什么。比如游戏编程。C# Unity 游戏编程不需要太多数学。但 C++ 游戏引擎绝对需要数学技能。

    在我看来,艰苦的纪律才是成为程序员的关键。我希望我的理论是真的,这是我所拥有的一切。

    真正让我对 ML 和 AI 感兴趣的是军事应用。但你对此一无所闻。但那些应用可能是世界上最困难、最需要数学的软件。很少有人从事那种工作。

    就像可以被输入数据来做出周围世界决策的喷气式战斗机。以人类无法企及的精度自行发射导弹。可以自行执行任务的无人机。诸如此类。但那是天才级别的任务。

    但最终我的观点是,不要让数学或其他任何东西阻碍你。只要明白,如果你想掌握一门困难的学科。你需要致力于训练你的纪律。有天赋或非常聪明固然很好,但如果你像我一样,你必须为之奋斗。而纪律是你最重要的武器,高于一切。当然,这是我的信念。

    • Jason Brownlee 2019年8月4日上午6:25 #

      感谢分享。

      通常,了解算法的线性代数描述或其概率模型的工作原理很有趣,可能有助于稍微配置模型,但它无助于为给定的数据集获得一个好的模型。没有关于如何将算法映射到数据集或配置映射到数据集的模型之类的理论。

      程序员具有巨大的优势,因为他们能够很好地处理应用机器学习的经验性。例如,运行实验、解释结果、选择性能相对较好的模型。这是计算实验,编写和运行代码。

  24. Shaun A. 2021年6月2日中午12:32 #

    不确定在上面的各种回复和您精彩的博客之后,您是否还需要另一个冗长的评论。但是,我购买了几本您的书,并且喜欢您直截了当的风格,并且可能最终会购买更多。然而,这是一种不同于实用与理论的观点。我只将其视为实用的,除非您是一位只想发表论文的博士生。

    我是一名 EE(电子工程)工程师,从事软件开发(各级别)已有 40 多年。我当然不认为自己是专家。所以我习惯于将压倒性的问题分解以简化它们。一个人必须知道自己的位置(知识)以及最终目标。我将学习这个主题看作是这样的:

    1. 入门 – 接触新的/解决方案以进行复制,以获得感觉。了解一种编程语言是必须的,作为必备工具。最好是 Python,因为您稍后会遇到其他语言的可用性障碍。但如果您的当前语言选择目前有一些 ML 支持,请不要因此停止探索。您将对预训练模型进行推理,并且可能使用与原始样本数据相同的数据集来重新训练模型。实际上,除非是为了清理或处理数据等工作,否则没有人会雇用您具有此级别的知识。但这应该只是一个垫脚石。到目前为止,不需要数学或统计学。除了 Jason 精彩的材料之外,网上和入门书籍中有很多关于这方面的内容。

    2. 中级 – 您将通过进行大量实验,在 ML 的特定子领域中磨练您的技能,尝试该特定区域的不同模型来解决一个或多个问题,使用其他人设计的东西。也许编写一个可供他人使用的有用的 ML 应用程序。使用您自己的采集数据训练模型,调整输入/输出大小,添加层,破坏模型并修复它。使用 GPU,选择一个喜欢的框架。阅读模型背后的论文(快速浏览,不完全理解)。您开始意识到需要一些线性代数和统计学,但您可以查找。下载并尝试分析 GitHub ML 项目。如果您现在爱上了,您就开始学习这些附属科目,因为您想在之后达到更高的水平。

    3. 高级 – 理想情况下,这是每个人都想达到的阶段!能够从头开始设计和构建自己的模型。直观地了解模型内部发生了什么,添加自定义可视化进行调试,添加优化,设计自定义损失函数,仅根据论文重新实现模型。不幸的是,在我看来,没有针对这个知识水平的课程或分步书籍,它只能通过大量实践(毅力)、在实验中挣扎、不断阅读和在此过程中重塑知识来获得。但我认为这很有趣,因为我还没到那里!

    并非每个人都必须达到第 3 级才能完成有用的工作(如产品),但我认为您可以作为一名熟练的第 2 级完成专业工作,并且在停止在第 1 级之后仍然对该主题有有用的知识。我认为 Jason 的专题书籍能让您达到第 2 级的中等水平——他欢迎反驳,因为我没有读过他所有的书:)

    此致

  25. Joseph Mussett 2023年6月21日晚上11:16 #

    非常感谢!!!

    您的话语在烈日当头的沙漠中,如同一杯凉水。我很高兴我找到了一个像您一样能从多角度看待问题的人,从
    开发者的角度,也从您这样的精通知识的层面的角度。

    我是一名有几年经验的开发者,我真的明白开发人员或程序员的世界就像冲浪一样,风的方向会改变,冲浪的沙滩也会不同,但我们总有实现目标的方法。我们每天、每年都处于变化之中。

    关键是我们在这个过程中处于什么位置?是在海滩上,还是在浪尖上,还是准备好
    站在浪尖上。我非常喜欢您对这个话题的看法,我很高兴能追随您,在这片海洋中航行。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。