戒律和自学这两个词不能掉以轻心。一个人必须对自己的教育和启蒙负责。如果你忽略它,别人就会为你做选择。

Gists 摘要

数学,代码和数据是你最重要的Trinity

任何有效的机器学习管道都是数学、代码和数据的交叉。每一项只有和另一项在一起时才会有效果。

如果你的数据质量很差,那么无论你的数学计算多么优雅或代码多么高效都没用。

如果你的数据质量最高,但你的数学计算错误,那么你的结果可能会不是很好,甚至会更糟,造成伤害。

如果你的数据和数学都是世界级的,但是你的代码效率很低,那么你将无法获得扩展带来的好处。

数据为你提供了一个包含自然瑰宝的采矿地点。数学就是你的十字镐。代码可以让你建立一支挥舞着十字镐的机器人队伍。

Trinity是你系统的输入(你拥有的)和输出(你想要的)之间的桥梁。

唯一例外

除了不能平衡Trinity,还有一个更大的罪过:忘记这Trinity是为谁服务的。即使是执行得最好、由最优雅的数学驱动的代码,如果不能为客户提供服务,从最丰富的数据中获得洞察也毫无意义。

工程师经常会发现自己迷失在一个过程中,忘记了最初想要的结果。尽管他们怀着良好的意图进行,但他们忘记了,意图并不像行动那么重要。

Trinity至少要为客户提供点好处,总比什么都不提供要好。

需要澄清的是,如果你的先进模型需要47倍的时间才能提高1%的准确率,那么它是否提供了最好的体验?

不要被Trinity给骗了

无论你多么崇拜这Trinity,你都不应该被你的爱蒙蔽。自学成才的机器学习工程师是他们自己的最大的怀疑者。

他们知道,数据不能进行证明,只能进行反驳(只要在十亿数据中有一个数据点就能证明之前的概念是错误的),一点点糟糕的数学运算就会产生极端的后果(自然不是线性的),代码的效率只有在它最薄弱的地方才有。

无论Trinity多么神圣,直觉也不应被忽视。如果一个结果好得令人难以置信,除非你很幸运,否则它很可能就是错的。

和客户保持好关系

让机器做它们擅长的事情(反复重复过程)。让你去做你擅长的事情时(关心、设身处地、提问、倾听、领导、教学)。

你的客户不像你那样关心Trinity。他们关心他们的需求是否得到满足。

向先驱致敬

当你想到计算机、机器学习、人工智能、数学等领域时,你会想到谁的名字?

Ada Lovelace,Geoffrey Hinton,Yann LeCun,Yoshua Bengio,Alan Turing,Fei Fei Li,Grace Hopper,Andrew Ng,Jon Von Neumann,Alan Kay,Stuart Russel,Peter Norvig?

当然,在你听到或记住的所有名字中,有1000个名字功不可没,但却从历史书中消失了。

后起之秀应该认可前辈们做出的巨大努力,但也应该认可他们中的每一个人都会告诉这位新晋的机器学习工程师同样的事情:这个领域的未来取决于你的工作。

适时重写

你的目标应该是在第一时间构建可靠的东西。但随着技能的提高,你可能会重构之前的作品,拆掉它们,用新的视角重新创造它们。

自学成才的机器学习工程师都明白,就像大自然一样,软件和机器学习项目永远不会完成,它们一直在运动。数据变化,代码在新的硬件上执行,一个天才发现了一个计算高效,低内存依赖的优化器适合,并称之为“亚当”。

你不仅应该对这些变化持开放态度,还应该欢迎它们。一旦它们出现,请使用你最好的判断力来判断它们是否值得实现到你的系统中 —— 因为有些东西是新的,并不意味着它是必需的。

不要成为工具奴

在编程界,一个常见的轶事是粉刷自行车棚。它说的是一个程序员,或者一组程序员,担心的是车棚应该是什么颜色,而不是问一些重要的问题,比如车棚是否真的可以存放自行车。

当然,这个自行车棚也可以用电脑程序来代替。

在机器学习的世界里,你会听到关于R还是Python、TensorFlow还是PyTorch、书籍还是课程、数学还是code first(两者都有,记得这Trinity吧)、Spark还是Hadoop、Amazon Web Services还是谷歌云平台、VSCode还是Jupyter、Nvidia还是……的无休止的争论。

所有的比较都是有效的,但没有一个值得与对方争论。

你应该回答的真正问题是:用什么可以让我以最快、最可靠的方式建立我的想法?

一旦你问自己这个问题,你会发现其他人都在问自己同样的问题。

工程师的诅咒是从工具开始,然后寻找问题,而不是从问题开始,然后寻找工具,只有到了那个时候,如果没有合适的工具,才应该去构建它。

学习资源也是如此。数学、代码和数据的Trinity,在你学习它的时候就是不变的,唯一重要的是你如何使用它。

不要忘记:许多问题可以在没有机器学习的情况下解决。

想法就是生意

不要把一个执行好想法的人与窃取你想法的人混为一谈。你的想法在别人手中比在你的头脑中更有价值。

作为一名工程师,你的角色不仅是建立自己的想法,而且还要与他人沟通,向他们展示如何从这些想法中获益。如果你缺乏这样的沟通能力,你应该与有这种能力的人合作,或者寻求培养这种能力。

在一个没人知道该相信什么的世界里,你可以通过做真实的自己来区分自己。诚实面对你做的东西所能提供的和你所不知道的。能够承认自己的无知是一种优势,而不是弱点。

好的技术总是胜利的,撒谎永远不会胜利。构建技术。不要撒谎。

你的邻居、同事、同学和伙伴也在思考这个问题

你看到别人的进步而嫉妒吗?或者你把它看作是你能做到的事情的动力?

你对别人的成功的感觉就是你自己成功时候的感觉。

不能贪

你应该寻求建立你运用Trinity的技能,回答那些你想要提供服务的人的问题,但你不应该带着欲望这样做。欲望会诅咒你,让你永远过于严肃地看待未来,而不是享受你现在所拥有的。

对提高技能的渴望的治疗方法是培养对学习的热爱。

自学成才的机器学习工程师能够很快地学习利用数学、代码和数据力量所需的概念,但不能匆忙行事。他们明白学习任何有价值的技术都需要时间,如果是这样的话,还不如享受这个过程。

从一开始,你就是对自己的启蒙和教育负责的人。知道了这一点,你就应该选择那些无论你有什么样的运气都能成功的项目。这个项目是否满足了你的好奇心?它是否对你的技能构成挑战?它可以让你遵守这些戒律吗?如果是这样,就足够了。

最后,在沿着自己的道路行进的同时,自学成才的机器学习工程师在他们的脑海中一直保持着这样的印象:

  • No certifications without knowledge.
  • No (over)thinking without doing.
  • No learning without enjoyment.
  • No creations without style.
  • No skill without practice.
  • No tools without purpose.
  • No showboating without shipping.
  • No assumptions without scepticism.
  • No consumption without contribution.
  • No desire for the future without love for the present.

最重要的是,No machine learning without the trinity

Reference 参考

[1] The 10 Commandments of Self-Taught Machine Learning Engineers