SuooL's Blog

蛰伏于盛夏 藏华于当春

【译文】机器学习从零开始

Introduction

文章翻译自 Machine Learning from Scratch-ish

The Problem

“I am really interested in Machine Learning, but I don’t have a background in Computer Science or Math.”

你以前可能遇到过这种情绪,而且如果你带着任何目的和意图阅读这篇文章,那么很有可能你经常遇到这种情绪。而且,事实上,我猜你个人经历过这种情绪的可能性比一般人要大。

我当然有,因为这就是本文的起源和基础。有很长一段时间,我真的感到沮丧到发狂的程度,因为我真诚地相信,像我这样的教育背景和经验的人很可能无法理解或使用机器学习技术。

Can an “average” person do Machine Learning?

简而言之,答案是肯定的。在这种情况下,我们可以争论“平均”是什么意思,但是我个人的经验(不可否认是相当有限的)告诉我,那些被认为是必需的学科的背景(例如计算机科学、微积分和其他形式的高级数学、统计学、编程等),虽然肯定有所帮助,但不是要么完全不需要,就是如果实际需要,通常在表面上比最初想象的要多得多。

Becoming a Machine Learning Beginner

Overview

我不能告诉你如何成为一个机器学习专家,没有其他原因,只是我自己刚刚开始在这条道路上。但是,我可以很自然地说,我开始学习机器学习的道路是可行的,而且应该可以在具有各种背景的人之间进行重复。

Who am I?

明确的说,按照社会将文凭等同于实际智力成就的奇怪标准,我被认为受过良好的教育。我在达特茅斯学院(Dartmouth College)获得俄罗斯语言文学学士学位,在哈佛大学(Harvard University)获得俄罗斯语言文学硕士学位,在萨福克大学(Suffolk University,位于马萨诸塞州波士顿市)获得法律学位。

直到2016年,我一直在一家非常著名的大型国际律师事务所担任公司律师,在那儿我只专注于私募股权交易。2016年年中,我做出了一个与年龄完全相符的决定(在45岁时),放弃了一份非常赚钱的律师职业,成为了一名计算机程序员。在这一领域,我之前没有接受过正式培训,也没有真正的实质性知识。

我一直对计算机感兴趣,在进入法学院之前,曾为几家软件公司工作过,但我的任何编程经验都是(一)非常少,(二)完全自学,以及(三)在2001-2002年获得的,这意味着实际上这些知识基本上是无用的。

经过大约一年的自学,我说服了一家公司给我一个机会。我利用这份工作学习了 C#,改进了我的 JavaScript,继续学习网络应用程序架构等。快进到今天,我在临床数据科学中心工作,但不是作为一名数据科学家。

所以,这就是我在2019年下半年开始我的数据科学之旅的地方:

  • 我没有接受过任何正规的计算机科学教育,而且从1989年我上高中三年级开始,我就没有上过数学课。
  • 自2016年以来,我一直是一名专业的程序员,但是我在Python方面的经验非常有限。
  • 我与数据科学家的工作关系密切,但我没有与他们中的任何一位共事,当然也不知道从他们那里学到了什么,否则这些东西是不可能从谷歌上轻易获得的。

如果你相信你是,或者可能是,和我一样的人,我真诚地敦促你继续阅读。

How to fail

教程和帮助类文章很擅长告诉你应该做什么,但是它们通常会花更少的时间来解释不应该做什么。但是我觉得为成功做好准备包括确保避免潜在的陷阱和失败,而对于粗心大意的人来说,这段旅程中有太多的陷阱和失败。

在以下情况下,你几乎肯定很难成功的成为机器学习初学者:

You lack patience and resolve

我可以告诉你,作为一个程序员,如果不是一个机器学习的实践者,学习编程是一种耐心的练习。从一种非常重要(但也颇具讽刺意味)的意义上说,计算机是极其愚蠢的机器,它们只做你告诉它们的事情,除此之外别无它用。如果你没有耐心坐在电脑前参与编码、调试、研究的迭代过程,那么这个过程你肯定不会感到愉快。

You lack curiosity

无论你最终选择获取机器学习知识的途径如何,几乎可以肯定的是,你将得到类似这些建议:“输入所有代码”或“一边练习一边工作”或“着手以略有不同方式构建刚刚完成的东西”。
这些都是同一个想法的变体,也就是说,进行“修补”是有价值的——进行实验,在出现问题时阅读文档,查看其他人的源代码等等。
如果你不是从根本上基于自己的好奇心来驱动和支持“构建”,那么你肯定不会跟上那些人。

You overestimate the difficulty of the learning curve
从本质上讲,这是对最初关注点的重述,即是这仅是关于具有非传统背景的人是否可以在机器学习领域中取得成功的关注点。
如果本文能够完成一些事情,我希望它至少能够消除机器学习对于非传统学习背景的人是完全无法完成的神话,或者仅是碰巧拥有计算机科学和应用数学/统计博士学位的少数幸运者。

You underestimate the difficulty of the learning curve

我假定这一切都是可行的,而不是容易的。如果这是容易的,只要说每个人都会这样做就够了,但是从逻辑上说,如果每个人都这样做,教育背景就不可能是一个相关的因素,这意味着这篇文章试图解决的可操作的问题将是没有意义的。

简单地说,这条路上会有很多困难,你如何处理这些困难可能会成为你成功的决定性因素。你会开始搜索论坛、邮件列表、推特、Medium 等等,然后真的开始上街找工作直到你得到一个令人满意的答案吗?还是你会面对陌生的材料而感到不安?
参考上面的You lack patience and resolve

You are intending to learn all of Machine Learning/AI next week, next month, this year…

在成为机器学习初学者的过程中可以/可以学习的材料数量实在是太多了。更复杂的是,相关工作产品的增长速度如此之快,以至于我们倾向于用几个月和几年而不是几十年来衡量相关性。现在或在可预见的将来,技术的发展没有“尽头”,试图确定某个点,你将知道“关于机器学习的一切”就是敬拜假神。

别着急慢慢来,第二遍和第三遍阅读相关材料,编写更多代码,构建更多的结果,记录您的学习过程,并欣赏和庆祝过程中不管大小的的成就。

因此,很显然,很可能会失败,而且并非难事。但是,再次避免大多数这些问题也不是特别困难。

How to succeed at this

Pick a course and stick to it

泡面一杯