作者 | Daniel Bourke
译者 | 盖磊
编辑 | 海边的拾遗者公众号
在机器学习技能自学成才的过程中,我们必须对自身的教育和启蒙负责。本文列出了十条不应掉以轻心的戒律。前车之鉴,后车之师。
在机器学习技能自学成才的过程中,我们必须对自身的教育和启蒙负责,对下面十条戒律不应掉以轻心。前车之鉴,后车之师。
1. 数学、代码和数据是“三位一体” 的
任何行之有效的机器学习流水线,都是数学、编程和数据的三位一体。三个方面同等重要。
如果数据质量不高,那么数学公式再漂亮,代码再高效,也于事无补。
即便有了高质量的数据,但如果我们对数学一窍不通,那么就会给出令人失望,甚至是南辕北辙的结果。
即便具有世界一流的数学基础和数据,但是面对低效的编程代码实现,我们依然无法实现大规模的收益。
数据提供了一处富含天然瑰宝的矿场,数学就是挖掘工具,而编码则提供了一队挖掘机。
数学、编程和数据的“三位一体”,构成了系统输入(即手头具有的数据)和输出(即期望的结果)之间的桥梁。
注意:数学还包含统计学和概率论等分支,因此你可以把“三位一体”想成是一只海星。
2. 在三者之外,还需考虑具体需求
除了考虑如何在三位一体上取得平衡,还需谨记三者的最终服务对象是客户需求。如果无法向客户提供服务,那么即便有执行最好的代码、最完备的数学理论和对数据最丰富的洞察,也于事无补。
工程人员常常沉迷于具体的过程,而忽视了最终产出。即使出发点再好,也不应忘记实际成果并不取决于出发点。
哪怕我们并未向客户提供很好的性能,也要好过那些根本无法给出任何表现的解决方案。
举个例子,如果一个最先进的模型需额外运行 47 倍的时间,最终实现了精度提高 1%的效果,这对客户是否提供了最佳的体验?
3. 不要被“三位一体”蒙蔽
即使我们非常推崇三位一体,但也不要被感情蒙蔽了一切。
自学成才的机器学习工程师,自身就是最大的怀疑论者。
他们知道数据本身并无法去确认某事,但可以用于推翻某事。例如,在十亿个数据点中只要有一个异常点,就能证明先前确认某个重要的理念是错误的。大自然并非线性的,在数学上的一点缺陷,就会导致严重的后果。而代码的性能则取决于其最薄弱之处。
无论三位一体多么完备,都不应忽视自己的直觉。一旦结果似乎过于完美,让你怀疑其中可能有问题,那么事实上就是如此,除非我们的确很幸运。
4. 维护与潜在客户的关系
让机器去完成其所擅长的工作,即实现重复性操作。人们应该去做自己所擅长的,包括关怀、同理心、质疑、聆听、领导和教学等。
客户并不像我们那样关注数学、编程和数据,而是关心自己的需求是否得到满足。
对于数据伦理等复杂问题时,需要从“道德银律”(Silver Rule)的角度审视,即“己所不欲,勿施于人”。
5. 尊敬前行者的工作
提及计算科学、机器学习、人工智能、数学,我们可能立刻会想到 Ada Lovelace、Geoffrey Hinton、Yann LeCun、Yoshua Bengio、阿兰·图灵、李飞飞、Grace Hopper、吴恩达、冯·诺伊曼、Alan Kay、Stuart Russel、Peter Norvig 等前行者。
当然,除了上述耳熟能详的人物,还有数千位做出贡献的人并未被铭记。
崭露头角的新手,应该知悉各位前行者所做出的巨大贡献。同时也应该认识到,对于每一位机器学习新手,前辈们都对我们有着一致的期望,就是这一领域的未来取决于各位当下的努力。
6. 推翻重来的功效不可低估
我们的目标是在第一时间给出可靠的解决方案。随着技能的提高,我们会重新审视原先的工作,打破旧世界,从新的视角重新构建。
对于自学成才的机器学习工程师,应该认识到和自然界一样,软件和机器学习项目同样是生生不息的,处于不断的发展中。数据会不断变更、代码也会在新硬件上执行。还有,一位数学天才提出了称为“Adam”的优化器,它适用于大型数据集的有效计算,占用内存资源更低。
对变化我们应秉持开放的态度,去欢迎它们。一旦发生变化,我们就应对是否适合实施给出最好的判断。变化仅是一些新事物,但并不意味着是必需的。
7. 不要成为工具的奴隶
编程界的一个常用隐喻是自行车棚刷漆问题。它指的是程序开发人员或团队在担心一个自行车棚应该刷成什么颜色,而不是该车棚是否可以实际存放自行车这样的重要问题。
当然,这里自行车棚对应的是面向具体用途的计算机程序。
在机器学习领域,我们能听到许多无休止的争论,R 还是 Python、TensorFlow 还是 PyTorch、读书自学还是报班教学、数学优先还是代码优先,Spark 还是 Hadoop、Amazon Web Services 还是 Google Cloud Platform,VSCode 还是 Jupyter、英伟达还是其它等等。事实上,并不存在绝对正确的选择。
所有选项均适用,没有必要争个高下之分。
我们真正需要去回答的问题是:哪种选项能最快、最可靠地实现我们的想法?
一旦考虑及此,我们会发现所有的人都在思考着同样的问题。
工程人员的一个最大问题,就是常常会从工具入手去寻找问题,而不是从发现问题开始,再去寻找工具。在面对问题时,如果没有合适的工具,那么就需要去构建工具。
对教育资源同样如此。无论采用何种学习方式,数学,代码和数据是不变的,关键在于如何使用它们。
谨记,很多问题其实并不需要机器学习的介入。
8. 想法同样有交流的价值
不要混淆想要窃取你想法的人和想要遵循你想法做事的人。一个想法可能对于他人的价值要比对你而言大得多。
作为一名工程人员,我们的作用不仅是去构建自己的想法,而且还应该与他人进行交流,说明该想法如何能令他人同样从中受益。如果我们缺乏这种交流能力,那么就去找具有或有意推进自身交流能力的人搭档。
身处真伪难辨的社会中,真诚会使我们胜出。应诚恳地让他人了解自己工作所能提供的,以及自己所不知道的。承认自己的不足是一种优势,而非劣势。
好的技术将永立不败之地,谎言却并非如此。多做技术少吹嘘。
9. 同台竞争
看到别人的进步,我们会嫉妒吗?还是视其为潜在的工作灵感?
我们对他人成功的感受,也是我们对自身成功的感受。
10. 切忌贪心
我们努力去具备运用数学、数据和编程为目标客户提供解决方案的能力,但不应对此过于苛求。欲望会令人对未来期望过高,而不是去享受现在的生活。
保持学习的热情,是解决苛求技能提高的良药。
通过自学成才的机器学习工程师,可以快速地去掌握驾驭数学、编程和数据所需的知识,但千万不要存在急躁情绪。需明确,学习掌握任何有价值的技术都需要时间。由此,乐趣在于过程之中。
我们一旦开始自学,就需要完全承担起自身的启蒙和教育责任。在选择项目上不应寄希望于撞大运,而是应审慎遴选。项目是否能满足自己的求索心?是否会挑战自己现有的技能?是否可以让你遵循准则?如果答案是肯定的,那么就够了。
最后一点,自学成才者应走出一条适合自身的道路,永立于潮头:
夯实知识,再去追求证书。
扎实做事,不要过度空想。
寓教于乐。
独树一帜。
实践出真知。
明确各工具的目的性。
在交付前,不要吹嘘。
心存质疑,并提出假设。
巧妇难为无米之炊。
立足现在,谋划长远。
万变不离其宗,机器学习的最重要基础是数学、编程和数据。