从机器学习中学习 | Vincent Warmerdam Calmcode,Explosion,数据科学
Learning from Machine Learning系列第二次采访:Explosion ML Engineer Vincent Warmerdam,calmcode的创始人
欢迎回到“Learning from Machine Learning”系列采访,这是一系列深入研究机器学习的采访。随着人工智能改变着我们的世界,每一集都提供了技术洞见、职业建议和领先从业者的生活教训。
在这一集中,来自Explosion的ML Engineer和calmcode和koaning.io的创始人,前Rasa研究倡导者Vincent Warmerdam分享了他的经验和建议。他在数据科学领域担任过咨询师、倡导者、培训师、领导、教育家和招聘人员等多个角色。他的工作重点是简化流程、有效利用模型和教育他人。
他的网站calmcode提供高质量、易于消化的数据科学教育内容,赢得了广泛的赞誉和用户。它目前每月吸引数千名用户,并成为数据科学家的宝贵资源。Vincent帮助组织了PyData Amsterdam,并一直是PyData和NormConf的演讲者。他的演讲富有乐趣和吸引力(请在YouTube上查看)。
Vincent创建了数十个工具来帮助机器学习开发、数据处理、测试和自然语言处理。
koaning – 概述
🙂Vincent D.
github.com
Vincent对于构建实用工具、公开分享自己的工作、以简单和平静的方式解决现实世界的问题的热情影响了我工作的方式。
总结
Vincent的职业生涯非传统,他在数据科学领域还处于兴起阶段时就进入了这个领域。他将自己的成功归因于运气、博客的受欢迎程度、组织聚会和他的开源贡献,这些贡献直接来自CEO和CTO的工作机会,而不是通过传统的招聘过程。他的学术背景包括研究运营研究和设计,这使他对算法和约束有了独特的视角。他还提到,他在喜剧俱乐部当酒保的工作有助于提高他的演讲技巧。
受家庭成员错误的医学诊断的启发,Vincent被吸引到机器学习领域,利用算法做出更好的决策和预测。在他的硕士论文期间,他有机会专注于机器学习。
他的开源工作是由他解决特定问题的愿望驱动的,有时是为了解决他自己的问题。他从第一个PyPI项目evol开始,开发了像scikit-lego、human-learn、whatlies和doubtlab这样的库,并根据他在不同公司的需求和经验开发了这些库。
bulk library是基于他在human-learn和whatlies上的工作而出现的。它利用嵌入、降维和聚类来促进批量标记和数据探索。虽然该工具不能提供完美的标签,但它有助于降低进入门槛,并在处理新数据集时建立直觉。
他创建calmcode是为了回应数据科学教育内容的缺乏,旨在提供简洁而有见地的教程,重点是有效传达思想的系列短视频。他专注于教授工具和方法,以改善日常数据科学工作。
Vincent在这个领域的经验提供了很好的视角,让我们讨论了生成模型的限制、基于规则的系统在补充ML模型方面的作用、地面真实标签的复杂性。
Vincent的建议是真实而深刻的。他警告不要过分强调职业生涯早期的经济收益,要优先发现你的激情和真正的动机。他探索了ML领域的有用性和需要熟练的专业人员的对比感受,同时认识到炒作的丰富性。最重要的是,Vincent强调了清楚理解你可以和不能影响的事情的重要性,并将你的精力集中在你可以产生影响的领域。
建议和要点
- 正确理解问题最重要-如果将更好的算法应用于错误的问题上,可能不会产生更好的结果。
- 重新表述问题可能有益——从系统优化的整体角度考虑,而不仅仅是专注于改善单个组件。
- “人们经常忘记算法通常只是系统中的一个齿轮。我们对于构建一个更好的系统感兴趣,而不是一个更好的齿轮。因此,如果您正在构建一个更好的齿轮,但它与其他部分不匹配,那么它不是一个更好的齿轮,因为您没有得到更好的系统。”
- 考虑开始一个博客,分享你所学到的。写一些简短的“今天我学到了”片段可以是建立在线存在和展示你不断学习的简单方法。
- 在开始时不必感到压力,不必知道一切。考虑相关的角色,如分析师,它可以提供有价值的技能和知识,有利于你的数据科学之旅。
- “您可以更频繁地制作Python包,因此请创建一个。”更多的人应该创建自己的Python包,即使是用于内部工具或小帮助函数。不足够多的人利用包装和重复使用自己的代码的好处。
- 走出机器学习泡沫可能会令人耳目一新,并提供灵感。与不在该领域的人互动并了解他们的观点可以帮助你创建更好的应用程序并关注你工作的人类方面。
- 在职业生涯早期不要过分关注金钱。重要的是找出你喜欢什么和你的动力是什么,而不仅仅是追逐更高的薪水。
- “当调用.fit和.predict时,只是简单的部分。周围的所有东西都要困难得多。特别是当你考虑到公平的主题时,所有可能出错的事情,我们真的可以事先知道吗?我不知道你总是可以。”
- “有一些你可以控制的东西,有一些你不能控制。只要确保你了解你可以和不能控制的东西,然后从那里继续。”
完整采访
(此采访已经进行了轻微编辑以提高清晰度)
欢迎
Seth:欢迎来到“学习机器学习”节目。在这一集中,我很荣幸邀请到了Vincent Warmerdam。他目前是爆炸公司(SpaCy和Prodigy背后的公司)的机器学习工程师。Vincent是一位教育家、博主和持续的PyData演讲者。
他创建了许多有价值的开源工具。他在LinkedIn上被认可为超过一百次的“棒极了”。在数据科学社区中真正的启发力量。欢迎来到这个播客节目。
Vincent:嗨。那个评论。它让我检查一下。我有一百个认可吗?我不知道。
Seth:超过了。
Vincent:哦,好的,太棒了。
这是我与一位前同事的一个内部玩笑,看看谁能得到最多的认可。我现在在LinkedIn上获得了超过99个“棒极了”的认可,太好了!
背景
Seth:你能告诉我们一下你的职业发展背景吗?你是如何走到今天的位置的?
Vincent:这有点难以给出正确的职业建议,因为我想承认我有一点特权,并且我很幸运,因为当我开始这个数据科学的事情时,随机森林还很新。如果你能够使用随机森林,你已经比所有经济传统的线性vols好得多了。所以你可以运行适合和预测——嘭。你有了一份工作。而且,我在那个时代正好处于合适的时间。
之后,我开始写博客。我开始帮助组织一些聚会。阿姆斯特丹有一个机器学习聚会——我帮助组织PyData阿姆斯特丹。
我的博客也很受欢迎,所以人们开始认识我。在某些时候,这种认可会让你得到一些机会,你会被邀请演讲,然后人们会把你看作权威人物。我不是,我想我有合理的想法,但我试图谦虚。但这就是我的职业生涯的故事,因为人们知道我的博客,其中通常会包括一个公司的首席技术官。然后首席技术官会说,“嘿,我喜欢你的博客。我们可以一起喝杯啤酒吗?”
然后通常,那就会导致工作机会。到目前为止,我还没有和招聘人员交谈过。说实话。在我的职业生涯中,我从来没有通过招聘渠道被聘用过。
它总是通过首席执行官或首席技术官,因为他们事先知道我的工作。这很奇怪,这是一个很糟糕的故事,因为这很难为其他人复制,因为我在这方面非常幸运。我认为拥有博客并能够得到认可非常有用,但很难复制。但我也认为我为开源做的一些副项目肯定有所帮助。Calmcode是人们现在知道我的东西。有一句话,“种一千朵花,总有一朵莲花。”
…种一千朵花,总有一朵莲花。
我认同这个想法,但很多情况下还是需要运气和一点特权。我只想诚实地说出来。能够被认可已经被证明对我很有用。
Seth:是的。绝对的。我的意思是,每个人的旅程都是独特的。你在不同公司担任的角色是什么?
我知道你曾经是一名顾问,一名倡导者。你有一些有趣的头衔。对吧?
Vincent:在之前的公司有一个阶段,他们真的让你自己取名字,我和几个同事觉得很有趣,想看看我们能把它伸展多远。所以我称自己是口袋妖怪大师,因为我觉得这很有趣。我最喜欢的头衔是高级职位,因为有时候,我只是公司里的老人之一。所以我就称自己是那样的。
至于职位,我一直在进行大量的培训,所以有时候你会称自己为教练。因为你在进行咨询,你在不同的团队中有不同的职位。所以有时我也是领导。
我也帮助一家招聘公司为特定的数据团队招聘人员。有时我的角色是非常临时的。有时候是两年。但通常情况下,我是数据团队中的一个人,试图让团队变得更加高效,做任何事情。通常,我认为我擅长的是保持事情非常简单。
我可以从线性模型中获得很多里程,这通常运行得非常好。在那之前,我在大学里也做了很多不同的工作,我认为这也有所帮助。我的背景是运营研究,但在那之前,我实际上学习了设计。我的晚间工作是在荷兰的一个喜剧剧院当酒保,我认为这可能在某种程度上有助于我的演讲技巧。学了一段时间的设计也让我对算法有了不同的思考方式。
运营研究让我在做数据科学时更多地思考约束。我喜欢认为我的背景有些多样化,正是这样的多样化背景使我容易做我现在所做的事情。这就是总结。
学术背景
Seth:这很有道理。那么,你的学术背景是什么?是运营研究和设计吗?听起来很独特。
Vincent:是的,我学习了一年的工业设计工程,然后我发现这不适合我。所以我不得不转专业。然后我学士学位是计量经济学和运营研究,硕士学位是运营研究。我认为这是两个中最有趣的。但也因为这是计算机科学的一个小门户。
所以如果我想学习计算机科学课程,这对我来说是一种比较容易的方法。但是,在大学时我也参加划船比赛和派对,所以我不能立即开始我的硕士课程。所以有一年时间,我只上我感兴趣的课程。我学了一些神经科学课程,这非常有趣,还学了一些心理学和生物学等课程。
我喜欢认为知识的多样化已经被证明是非常有用的,但我的学术背景的官方头衔是运营研究。因此,那是优化系统背后的数学,那是你在那里学到的东西。
Seth:非常酷。在运营研究中,人们试图解决的是典型或经典问题是什么?
Vincent:因此,在机器学习中,通常会尝试优化某些东西。你想让损失最小化或准确性尽可能高。你有算法来做到这一点。通常情况下,你会拿你的数据和你想要预测的标签,然后制定一些损失函数,你尝试尽可能地使它们小。在运营研究中,你做的事情有点类似。
只是在运营研究中,你通常不是在处理机器学习算法,但你在处理,例如,“嘿,我们想要投资一些股票,顺便说一下,这也引入了约束条件。因为,是的,我们希望获得最高的回报,但当然,我们不想超出预算,我们也有风险偏好。”而这些都被定义为硬数学约束。然后,如果你想优化,这就是一种不同的游戏,因为如果你的算法超过了约束的范围,那么你就处于一个很糟糕的地步。所以我认为这是主要的。
如果你正在进行运营研究,那么你就会知道约束非常重要,你会想以数学上正确的方式处理这些约束。这是一种不同的游戏。但这就是他们正在处理的主要问题,这就是约束优化。这就是他们所做的。
Seth :非常酷。是的。听起来你需要非常强的数学背景。里面也有一些线性代数吗?
Vincent :很多微积分和线性代数。虽然,我会说这有点取决于你做什么。当你读硕士学位时,当然,你要学习理论课程,你必须做出证明。但是一旦你开始写论文,事情就会发生改变。我有一个教授基本上说,“Vincent,我对机器学习一无所知,但你似乎很热衷。你做机器学习,你教我如何运作,因为我一点都不知道。”
那很好。教授们让我做我想做的事情,我也能够通过这种方式自学。但是,如果你真的想做适当的运筹学,特别是如果你想做博士学位,它会超级数学重。这是真的。
说实话,对我来说有点太重了。我在应用方面更多一些,但仍然认识一些最终做博士学位的人,他们绝对是数学证明型的人。他们是线性代数的“食谱”的人。这绝对是这个领域的人。
机器学习的吸引力
Seth :是什么吸引你去做机器学习?最开始是什么引起了你的兴趣?
Vincent :总有一种做出预测的酷炫感。不是吗?所以这方面我觉得很有趣。不过,更长远的故事是,我记得我有一个非常亲密的家人被误诊了。
误诊是他们告诉这个人他患有一种非常严重的疾病,但这个人实际上并没有。感谢上帝,我们及时发现了这个错误。但是,他们可能会因为那个错误做出一些非常奇怪的人生决定,比如立即卖房子。所以这让我想到,做出错误决定是有明显后果的。我们可以做些什么来作出更好的决策,这很有趣。
也许这个机器学习中有些东西。尝试通过使用机器从数据中学习更多,这是有说服力的。看起来非常有趣。所以那时我想,嘿,是的,让我们看看这些算法能否做些什么。
然后职业前景也非常棒。这是去那个领域的另一个动机。但最初的火花是做出了错误决定。这就是我开始思考的方式,嘿,也许我们可以在这里改进系统。
Calmcode
Seth :非常有趣,我们将深入探讨机器学习。但作为 calmcode 的创建者和维护者,这是一个难以置信的资源。
[Vincent 笑了]
Seth: 不要,没有什么好笑的。Calmcode 是令人难以置信的。
这是我向每位新数据科学家推荐的前两三件事之一。你将非常复杂的事情分解成一个美好,冷静和合理的方式,这是非常有价值的。
Vincent: 很高兴听到。
Seth: 那么,你能谈谈 calmcode,为什么要开始它吗?那它是什么?请给大家一个简要说明。
Vincent :首先,很高兴听到这个消息,你喜欢 calmcode。我很高兴听到它有所帮助。基本上,calmcode背后的故事是,有一段时间,我正在寻找有关数据科学的教育内容。作为一名教育工作者,我开始注意到有太多的垃圾内容。
举个例子,也许四五年前,关于 scikit-learn 工作原理的第一个教程,发生了什么事情,使用了一个叫 Load Boston 的数据集,它是有关波士顿房价的。有很多教程使用这个数据集,从所有的 O’Reily 书籍到很多开源软件包都是如此。但是你看看数据,结果发现他们用来预测房价的变量之一是肤色。
我忘了确切的名称,但它类似于镇上黑人的百分比。你不想把它放在预测模型中。这是一个非常糟糕的想法。此外,为什么这个数据集在 scikit-learn 上?为什么有这么多人在使用它?
这导致我感到非常沮丧。我还注意到有些企业课程使用了Load Boston并收取了一千美元一天的费用。你看看这个,你会感到很乱。然后我想,如果我这么沮丧,也许我可以通过免费发布这些内容来释放能量。
我知道我足够有知识去教授这些课题,因为我以前教过它们。但我也注意到很多这种教育内容似乎更侧重于创作者而不是传达思想。所以我想这可能是一个有趣的小实验。如果我要做一个学习平台,我会怎么做呢?这就是CalmCode的创造方式。
这个想法就是你只需要最多五个一分钟的视频来解释一个单一的主题,这些视频的顺序可以形成关于pandas或其他主题的小课程。
…对于每一个主题,我都可以问自己,这是一个平静的工具吗?它是否能让你的日常更美好?如果答案是不确定的,那我就不教它。
我喜欢做CalmCode的原因是,对于每一个主题,我都可以问自己,这是一个平静的工具吗?它是否能让你的日常更美好?如果答案是不确定的,那我就不教它,这也是我不教Spark的原因之一。因为安装它太麻烦了。有时候分析数据有更简单的方法,而不是使用一个非常大的数据工具。
所以这只是一个非常有个人观点的学习环境,人们似乎非常喜欢它。我收到了很多非常好的反馈。自从孩子出生以来,我做的事情少了很多。
但很酷的是,这个小爱好项目没有干扰,是非常平静的。似乎每个月都有一万到两万人使用它。我还有很多人在会议上突然给我买啤酒。这种事情非常酷。
Seth:是的,这是一个很好的资源。绝对是在向前付出,为数据科学家创造了一个学习任何内容的地方。你有没有发现自己回到以前的CalmCode中刷新这些技能?
Vincent:是的。这也是CalmCode对我来说非常有用的另一个原因。因为我知道我制作的课程,我知道我肯定在那门课程中提到过这个问题,但我需要一个配置文件,那在哪里?
就在今天,我在看typer课程,因为我需要“哦,选项是怎么工作的?复制粘贴。”所以这也几乎成为我自己的代码片段工具。虽然这不是最初的目的,但它似乎也在发生。
此外,我现在正在为CalmCode建立搜索功能。这是一种爱好项目。我正在考虑,也许搜索功能的主要任务应该是找到正确的代码片段,这对于自己来说是一种有趣的搜索问题。
但是,是的,我也需要提醒自己。有许多课程。我不能一直记得所有的东西。我仍然会看自己的东西。是的。
Seth:是的,这对你来说是一个好的资源,你可以使用它,同时也成为了许多其他人可以使用的东西。我在想我的第一次使用是什么时候。我想是在其中之一的args kwargs,这是第一个。是的。我每隔一段时间就会回来看一看。
Vincent:很好。是的,很好。
Seth:谢谢。
Vincent:嗯,那么我会更喜欢做更多的事情。
但事实是,由于有了孩子,我的生活有点不同。所以,我有很多想法可以用CalmCode实现。我也非常喜欢这个项目的一个方面,我不能花费任何精力,这个网站仍然可以运行。对吧。所以这也是它平静的设计。
我真的很喜欢有一个爱好项目,它是不可能被破坏的。如果任何部分被破坏了,修复起来也非常容易,因为它只是一个静态网站。所以这使得它非常容易。
Seth : 如果没有时间或资源限制,你会怎么样改进calmcode?
Vincent : 我会做一些特别想做的课程。其中之一就是嵌入,因为似乎有点炒作,但你可以让嵌入做不同的事情,并且有其有效的原因。但它们并不能解决所有问题,我可以做一个有趣的课程,从字母嵌入开始,然后进一步探讨其他嵌入和图像,还可以展示它们如何失败。我认为这可能会非常酷。
贝叶斯MCMC [马尔可夫链蒙特卡罗]也很好,因为你可以制定非常精确的模型,这是不够多的人欣赏到的技巧。
然后我想在网站上新增一个部分,其中包括演示和基准测试。这是因为我认为很难做出错误的基准测试。所有基准测试都是错误的,但其中一些可能非常有见地。我认为更多地庆祝这一点也会很有趣。我已经准备好了一些例子,但我没有时间去实现它。
但像这样的东西在我脑海中。总有东西可以做。另外,我正在思考的另一件事是,合作完成这个项目会不会很有趣?也许。我不知道。但当然,没有什么急迫性。所以如果我现在不花时间在上面,也没关系。
开源
Seth : 是的。很棒。稍微转换一下方向,谈谈你的一些开源工作。我想我接触的第一个你的库是bulk。可能之前还有其他的,但那是我真正使用的第一个。然后你还有embetter、human-learn、whatlies、doubtlab、cluestar。这些是我最熟悉的。我知道还有大约两三十个。
Vincent : 是的。现在是个小型的十几个。
Seth : 你是什么时候决定这个项目值得成为一个开源库的?你认为它是一个工具时?
Vincent : 也许解释一下开源的事情是如何开始的会有所帮助。我的第一个在PyPI上发布的开源项目叫做evol,它基本上是一种用于进化编程的DSL。我和我的一个同事一起制作的。这是一个非常可爱的想法。我想要有自己的小库。
所以我在寻找问题。然后我发现,如果我有一个种群对象和进化对象,这两个对象可以以不错的方式相互作用,并且很容易制作遗传算法。好吧。很酷的库,我做了很多关于它的演讲。
但是在某个时候,我学会了如何制作Python包。然后我成为了一名顾问,我开始注意到在不同的客户端,我会编写相同的scikit-learn组件。所以我想,我必须有一个包含这些我一直在复用的组件的库。这就是scikit-lego的来由,也是我熟悉scikit-learn生态系统的方式。
然后,我开始在Rasa工作。在那里,我们对句子分类进行了大量基准测试,因为Rasa构建聊天机器人。当你构建聊天机器人时,句子会进来,我们需要确定意图。好的。所以我编写了一些基准测试工具,因为那是我需要的,其中一些可以开源。
whatlies就是其中一个例子,因为我想要一个库,可以很快地拥有许多非英语嵌入并查看它们是否更好。然后事实证明,有一个完整的非英语社区围绕Rasa,他们对此非常感兴趣。
所以我能够构建一些Rasa插件来支持所有这些非英语工具。然后,在某个时候,我开始维护自己的库,然后我注意到我需要一些单元测试来测试我的文档,因为我不想让我的文档出错。所以我做了一些工具来帮助我做到这一点。Mktestdocs是其中之一。
我注意到Rasa的测试运行非常缓慢,所以我制作了pytest持续时间洞察力,以便我可以找出哪些测试最慢。你可以看到所有这些事情是如何累积的,但这总是因为我在解决另一个问题。而我操作的首选方式是在公众场合进行。
当然,也有一些我无法在公众场合操作的工具。我在一家公司工作。有些工具是私有的,那没关系。但大多数情况下,我遇到了一个问题,我只是想以极低的投入再次解决它。因为我以前做过包,所以重复起来非常容易。
这也是doubtlab和embetter的产生方式,而且老实说,bulk也是这样。只是在某个时刻,我意识到我需要这个工具来完成我的工作。它很方便,所以我们将其打包并在公共环境中构建,这对我非常有效。这就是主要故事。
Seth:非常酷。这是一个很棒的故事。似乎建立一个工具,你建立了某些技能,然后一件事引导着另一件事,然后它不再是大事。
我猜,一旦你拥有约三十多个惊人的工具,你就可以添加第三十七个工具了。
Vincent:是的,但我想发表一些评论,因为我认为一般来说,如果我看看我访问过的公司,以我的顾问背景为背景,我认为没有足够的人制作自己的Python包。
例如,想象一下,你有一个要处理时间序列或正在处理这个非常特定数据库的pandas查询。好的。那么从数据库中读取数据的函数可能是需要重复使用的函数。也许你必须添加会话,或者你有一个非常特定的机器学习模型,你想要重复使用它。
对于所有这些实用程序,你不想让它们存在于笔记本中。你想让它们存在于Python包中。我看到不够多的人制作自己的内部工具,我认为这很遗憾。当时我周围有几个成熟的同事,我们会写我们自己的Python工具。
…你可以更经常地制作Python包,即使只是为了你自己喜欢使用的pandas中的小助手函数。
因为我们有这个习惯,所以对我来说也很容易制作一个公开的工具。因此,这是我对更广泛的人群的建议,你可以更经常地制作Python包,即使只是为了你自己喜欢使用的pandas中的小助手函数。这是完全合理的用例。
Bulk
Seth:是的。要深入到我使用最多的一个,bulk。你能谈谈bulk吗?它的管道和要求是什么?哪些机制在起作用?
Vincent:是的。所以可能很有趣的是解释一下那个库是如何偶然发生的。所以我有一个叫做human-learn的库。有一些非常酷的功能,但human-learn的整个功能是,作为一个人,你现在可以制作scikit-learn模型,而不需要了解任何关于机器学习的知识。你可以做的一件事是将Python函数转换为scikit-learn兼容的组件,这是有用的。因此,你可以在kwargs上进行网格搜索等等。
但是,我认为还有一件事也很酷,通常你会看到一幅图,上面有一些蓝点,一些黄点,一些红点。人们说,这就是我们需要机器学习的原因,然后算法对它们进行了解剖。但是,我想,你可以在绿色点周围画一个圆,在蓝色点周围画一个圆,然后将该圆转换为scikit-learn模型。因此,这是human-learn的一个特点。在human-learn中,我们有bokeh组件可以从笔记本中执行此操作。
而当我在Rasa上为所有这些单词嵌入工作时,我也在研究whatlies。然后在某个时候,我开始意识到,当你获取这些单词嵌入,并将它们通过UMAP传递时,你会得到这些聚类。然后我想,哦,我只想选择它们。等等。我有这个叫做human-learn的工具,可以做到这一点。
在不到一个小时的时间内,我就在笔记本上做出了这个工具。然后,我向一大群同事展示了它,他们都说:“这非常有用,Vinny。干得好。“所以这个笔记本被分享了很多次。
现在,我不再在Rasa工作了,我开始在这家叫Explosion的公司工作。我们有一个标注工具。我想再次使用批量处理技巧,但我不想在笔记本上使用它。所以我把它变成了一个小型Web应用程序,你可以在本地运行它,它是我喜欢在开始使用Prodigy进行注释之前使用的预处理步骤之一。你只需要把数据嵌入到UMAP的2-D图中,然后通常会看到一些聚类,你可以尝试探索这个空间,进行选择,就完成了。
这是一种非常好的批量标注方式,因为从这些嵌入中通常会出现聚类。这基本上就是整个技巧。这些批量标注技术有些效果,但并不完美。它们对我来说似乎足够实用,可以在不到一个小时的时间内开始工作。这就是它的力量。以前需要花费我六个小时的时间,现在只需要一个小时。
这是一个只适用于开始工作的技巧,但我经常使用许多新数据集。所以对我来说,它完全解决了一个问题。Bulk也是这些项目之一,我希望有更多的时间来修复一些粗糙的边缘,但它是一个完全可行的小技巧,我喜欢使用它。还有一些人似乎非常欣赏这个工具,尤其是因为它可以处理文本和图像。它可以直接使用。
Seth:非常酷。是的。我在笔记本上使用过bulk。我记得我联系过你。你非常慷慨地花时间帮助我在不同的环境中运行它。
Vincent:是的,第一个笔记本确实有一些错误。这是肯定的。是的,我确实记得那件事。
Seth:仍然起作用。
Vincent:是的。在Rasa时,我养成了制作这些视频的习惯。所以bulk也有一个附加的YouTube视频,这就是许多人了解它的方式。我认为有这个存储库仍然有那个笔记本,这些天它仍然在得到星星。
但我建议人们现在只使用命令行工具,因为它更简单,更稳定。
Seth:是的。有趣的是,当我把我的工作大部分从笔记本移到脚本中时,我再次使用了bulk,现在我正在使用更多的Web应用程序。我喜欢它们两个。它们是很棒的工具,你说的很对。
有时降低解决问题的门槛非常重要,因为这样你就开始让问题进展,开始有一些想法,你可以取得一些有意义的进展。我喜欢它的原因是,通过探索数据,你开始建立一些直觉,开始思考,“哦,好的。这些可能是一些潜在的类别。“
Vincent:在其中肯定有一个人类学习方面,我也认为这非常有用。特别是当他们把一个新数据集放在你面前时。是的,你可以把它扔到一个算法中,那很好。但是,真正理解数据集中的内容通常是最耗时间的事情。通过bulk,暴露自己到这些聚类中,这本身似乎就很有用。
现在,你可以对句子和图像进行批量标注。我正在努力做的一件事是也对文本中的短语进行标注。所以现在我可以嵌入整个句子,但我想要的是,我也能够说,取出该句子中的每个名词短语,然后为其创建一个小点。因为这样,如果你对命名实体识别或类似的东西感兴趣,我们也可以为你进行批量标注。
特别是像电子游戏这样的缩写——星球大战是两个标记。如果我们可以将其转换为一个短语,那会很好。在我们公司的Explosion中,我们有很多技巧完全解决了所有这些问题。只是我需要有一个下午的时间来让它在bulk中工作。
但是在路线图中,我一定有兴趣解决这些问题。
理解问题
Seth : 是的。所以我注意到在你的工作中,很多都是关注于创建高质量的数据集。但在那之前,实际上是要理解问题。我看了你在 PyData 上的一个讲座,基本上是关于重新阐述问题。
你举了一个关于某个人正在寻找豆子、牛肉和面包的问题的不可思议的例子。
Vincent : 哦,是的。
Seth : 你能说一下那个例子吗?
Vincent : 所以这不是我的故事。我实际上遇到了在世界粮食计划组织进行运营研究的人。他们面临的一个问题是世界上的饥饿问题。有时候,一个饥饿的村庄会说,我们需要更多的豆子或我们需要更多的鸡肉或者某些产品的需求。然后世界粮食计划组织试图以便宜的价格采购这些食品。
这里的成本结构的一部分是物流。那么,我们能否把食物放在卡车上?得到卡车的成本有多高?以及所有的物流。正如这个人所说,他们最初定义了错误的问题,因为当一个人说,我需要豆子,是的,他们可以这么说,但他们需要的不是豆子,而是营养。而豆子,它们富含纤维和蛋白质。
好吧。还有其他富含纤维和蛋白质的食品,比如小扁豆。如果我们在与饥饿作斗争,那么我们不会在乎我们是否得到了豆子或扁豆。也许如果我们这样做,我们可以在不需要造船厂的情况下获得食品。我们只需发送卡车。
通过重新定义这个问题,我相信他们获得了五个百分点的成本削减,这对于已经花费多年时间优化的问题来说是一个非常高的数字。获得五个百分点的成本削减几乎是不可想象的,但这基本上是因为他们正在解决错误的问题。我的理论至少是这样的,就像这是发生在世界粮食计划组织的一个人身上的轶事。重新阐述这个问题是一个非常有用的练习,也许我们没有足够的人这么做。
NLP 中的一个例子,我们有时会在我们的支持论坛上看到一个问题,比如说,他们有一个简历,他们想解析。然后他们说,我想要每个工作的开始日期和结束日期。所以我想要一个算法,可以检测开始日期。你可以构建一个算法来检测开始日期,这没问题。但是,如果你重新阐述问题,首先找到所有的日期,然后再找出哪个是开始日期和结束日期,那么第二个问题就变成了,开始日期可能是第一个,结束日期可能在其后面。如果你只是重新阐述这个问题,那么整个问题就会变得简单得多。
还有很多这样的机会,人们经常会忘记。我认为,部分原因是一些机器学习教科书的原因,因为很少有机器学习的书告诉你,如果有更好的理解方式,你可以选择忽略一半的数据。你可以选择解决一个更容易解决的问题。但这似乎不是我看到的思维方式,特别是对于新毕业生来说,这有点可惜。
但是世界粮食计划组织的那个故事,我必须相信告诉我这个故事的人,但那确实发生了。世界粮食计划组织通过重新阐述一个数学问题的方式,找到了一种降低运输成本五个百分点的方法。它确实发生在现实生活中。
“这不是算法拯救了这一天,而是对世界的理解。如果它被用于错误的问题上,更好的算法将产生更糟糕的结果。”
Seth : 对,是的。在那个规模下进行任何减少,五个百分点的减少都是巨大的。我最喜欢的一句话是你在那个演示中说的,“这不是算法拯救了这一天,而是对世界的理解。如果它被用于错误的问题上,更好的算法将产生更糟糕的结果。”我真的很喜欢那句话。
Vincent:哦,很高兴听到这个消息。那么,这个故事里还有更多趣闻。但如果人们对此感兴趣,有一位运筹学家[Russell] Akhoff。
他在八十年代写了一篇关于运筹算法为何可能失败的论文,题目为“运筹学的未来在于过去”。这篇文章基本上概述了为什么运筹算法可能会失败。它与这个趣闻有关。我要提出这个问题的原因是因为其中一些论点也适用于数据科学。这是一篇八十年代的文章,但每个人都应该阅读它:“运筹学的未来在于过去”。
我写了一篇类似的文章,叫做“数据科学的未来在于过去”,只是重复了其中的一些论点。但人们经常忘记算法——通常只是系统中的一个齿轮,我们有兴趣建立一个更好的系统,而不是一个更好的齿轮。因此,如果您正在构建一个更好的齿轮,但它不适合其余的部分,那就不是更好的齿轮,因为您没有得到更好的系统。
但人们经常忘记算法——通常只是系统中的一个齿轮,我们有兴趣建立一个更好的系统,而不是一个更好的齿轮。因此,如果您正在构建一个更好的齿轮,但它不适合其余的部分,那就不是更好的齿轮,因为您没有得到更好的系统。
Akhoff 在他的书中也很擅长解释很多这些系统理论。他有一句话我可以推荐大家多思考一下:也许不要想要制造一个更好的齿轮,而是试着看看是否可以使两个部分之间的沟通更好。因为从系统的角度来思考,这样做就可以优化两个部分。
而且,您会获得清晰度,这总是好的。在数据科学中,这绝对是一种让人迷失在一个数字中,不考虑其他任何因素的方式,我认为这通常是一个兔子洞。
Seth:是的。这非常有趣,因为我认为有很多时候,人们处理问题时有时会集中关注不同的模块,他们有一种模块化的思考方式,然后他们会说:“噢,如果我使这一部分变得最好,那么整个系统就会变得更好。”在某些情况下,这将会有很大的改进,但在其他情况下,了解支持系统及其如何集成是非常重要的。这让我想起,您必须有良好的集成测试,并确保每件事都正确地适合系统。
Vincent:为了举个例子,在其自传中,bol.com 的前首席执行官写到了这个问题。因此,bol.com 就像荷兰的亚马逊。亚马逊在这里不是很大。Bol.com 基本上就是亚马逊,但是是蓝色和荷兰的 —— 这是我们这里的一件事情。
但是他们在某个时候聘请了他们的第一个数据科学家。这本书中有一章讲述了此事——当我们得到第一个数据科学家时发生了什么?在这本书中,第一个数据科学家被描绘成一种傲慢的人。他总是抱怨所有这些人类不如他的算法好。
然后,他做的一件事就是找出了在社交渠道上发布新视频游戏的最佳时间,等等。所以这是他做的一件事。在荷兰,我们有这个叫做纪念日的东西。我相信是七点钟,但在纪念日期间,我们纪念第二次世界大战。基本上,整个国家会安静两分钟。
您可能已经看到了一些关于人们在自行车上送披萨的照片,他们会从自行车上下来,静止两分钟。这是人们非常认真对待的事情。因此,在纪念日的七点钟,发布新的使人们可以射杀很多人的 Call of Duty 射击游戏的推文将是非常糟糕的。如果您在纪念日期间发布了有关在纪念日期间射击人们前景的推文,那么情况将尤其糟糕。但这正是他的算法确定的七点钟开始发布此类内容的最佳时间。
还有很多这样的故事。对吧?在纸面上,我不能责怪数据科学家做他或她的工作。但这是一个系统的问题。第一组担心可能会出现问题,而第二组不担心。
如果你让它们彼此交流,那么通常世界会变得更美好,这是我想说的主题。
Seth: 当你得到问题的答案并且你必须问自己,这是否有意义?这是很多人会忽略的一个小步骤,但这非常重要。
Vincent:我想承认这也很困难,对吧?我认为调用 .fit 和 .predict 是最容易的部分。
所有这些都是围绕它们的。这很棘手,特别是当你考虑到公平性的主题,所有可能出错的事情,我们真的能预先知道吗?我不知道你总是能做到。
但是我想给一个赞?有这个项目。它叫做deon,Deon清单。有一个calmcode课程。
Deon是一个数据科学清单。所以只是一些在不同公司出错的事情,其中有报纸文章,比如解释了情况变得多么糟糕。他们只有一个检查项的清单,像“嘿,在你发布之前检查这个,因为可能会出错。”而对于清单上的每一项,他们还有两篇过去发生的事情的报纸文章。所以你作为数据科学家可以向你的老板说,“我想[最小化]风险,因为这个事情真的出错了。”
这是一个非常酷的项目,因为他们实际上做了正确的轶事收集,这在今天是一种强有力的行为。
机器学习中未回答的问题
Seth:是的。在数据科学中,将任何故事与其联系起来都是有价值的。
放大并谈论机器学习的一般情况,您认为机器学习中仍存在一个重要问题是什么?
Vincent:好。所以我在PyData Afterparty上喝酒。有一些人走向我,这些人我认为是相对资深的人。他们知道自己的东西,他们问我预测机器学习的未来。
我有点想开个玩笑,因为你知道,你在酒吧。我并不想深入探讨这个问题。开个玩笑,我想说,“你知道我对数据科学的未来的看法,人们将真正意识到我们领域中大量的废话。我们也许应该完全停止。”
但我决定更多地考虑一下,我会说,这实际上有些真相。我确实有点担心我们正在做的很多事情更多的是炒作,而不是我们确定理解了问题吗?
那么机器学习中缺少什么?好吧,也许我们正在做太多了。这是我有的一种感觉。
当然,未来机器学习是有位置的。它肯定会发生,但不必成为一切。这是我更担心的事情。
有一位作家写了一本关于人工奇异性的书。就像人工智能可以产生的所有奇怪物品一样。
这本书叫做《你看起来像一件东西,我爱你》(You Look Like a Thing and I Love You),作者是Janelle Shane。阅读一下。这本书从我拥有所有这些Tinder文本开始,并且我想让一个算法找出要发送的最佳Tinder文本。该算法提供了“你看起来像一个东西,我爱你”的东西,这是一件非常有趣的事情,但在Tinder上发送这个东西可能不是应该发送的东西。
但这本书充满了这些例子,在这些例子中,你必须小心,人工智障不会同时发生。对吧?有很多这样的例子。就像使命召唤一样,这只是一个例子。
我发现自己是那个对云咆哮的脾气暴躁的老家伙。有点像,“当然,机器学习有它的位置,但我们可以先不用吗?”首先尝试简单的事情,因为人们似乎忘记了要做的事情。这是我个人更紧迫的关注点。
Seth:在自然语言处理中,现在有生成模型和ChatGPT等所有事情。您如何看待炒作和现实之间的差距?我很兴奋听到老家伙的观点。
Vincent:所以我实际上是在专业地玩这些东西。如果你看一下,Explosion的存储库现在是openai/prodigy recipes。那是存储库的名称。所以我们正在试验一下,比如说,嘿,ChatGPT是否可以仅仅通过一句话来检测所有的日期。
这样我们就可以在我们的prodigy界面中预先突出显示它们。这是我们现在正在探索的东西。结果发现,它在某些例子中真的很好用,但在其他例子中却很糟糕。我们还没有完全理解原因。
但我承认这可能非常有用。如果这是你可以用来更快地获得更好的训练数据的东西,因为注释只是回答是或否,比在用户界面中突出显示每个项目更容易。那似乎完全没问题。
但我认为更值得关注的是,人们会说,“哦,这是魔法。这就是它的工作原理。这是魔法。”它不是魔法。在某种程度上,这有点像马尔可夫链的东西,它只是预测下一个单词。你可以想象,如果你给它足够的文本和计算能力,你可能能够使它生成非常合理的文本,你可能会在互联网上找到这些文本。然后你可以问一些问题,比如,它是否正在泛化?还是只是记忆?
这些都是公正的问题。但它还没有智能。它还不是真正的推理。我有很多愚蠢的例子可以证明,在这个领域内并没有实际的智能发生。
话虽如此,只要有人参与其中并且证明它是有用和生产力的,那么我认为这很好。但再次说,这是当我带着“专业利益”的视角来看待问题时的情况。当然,还有一些有害因素需要考虑。你肯定可以发送更多的大量电子邮件,也许可以拥有更多的Twitter机器人,这些我并不特别喜欢。
所以,那是一方面。另外一件事是,我也想强调一下,因为我也尝试过Midjourney的东西。我试图生成《魔法:聚光灯》的卡牌。
Seth:好的。我看到它们了,它们很有趣。
Vincent:我想在某个时候制作一个办公室兽人的《魔法:聚光灯》卡牌会很有趣。你会有一个兽人军阀产品经理,一个兽人风险投资家和一个兽人TED主题演讲人。这个想法马上就很有趣,因为如果你想象一下办公室,你会想到一种单调的灰色西装。如果你想到一个兽人,你会想到魔兽世界和一个好战者等等。所以,这很有趣。
但接下来的问题是,我们是否可以真的生成非常有趣的图片?这事情有点难。所以我有这样一张图片,一个兽人圣骑士,基本上全身覆盖着铁,像网状物一样,身后是电脑。你会想,好吧,数据工程师,还不错。已经很有趣了。
但我希望这个兽人是一名数据分析工程师,因为他们正在谈论数据湖。然后我认为有趣的事情是一个穿着沉重的铁甲的兽人,但头盔上却带着一个小小的黄色浮潜管。那将是最有趣的事情。但我就是想不出来如何生成一个黄色的浮潜管。
你开始思考,为什么会这样?然后你也会想,嗯,文森特,你已经在办公室里把这些《魔兽世界》和《龙与地下城》的风格拉得够远了。这两种风格甚至都不兼容,这已经是一种伸展了。更不用说你还从中生成了一些奇怪的浮潜管。对吧?
所以,如果人们认为这些工具就像魔法一样,我最好的建议是尝试想出一种尴尬的奇怪任务,尝试触摸这些算法舒适区域的边缘,那通常会给你一些例子,可以帮助你考虑到发生的事情并不真正是魔法。它只是在尝试记住。它试图生成它之前看到过的东西。在这方面有很多边缘情况的例子,这些情况下这种东西只是“你看起来像一个东西,我爱你。”读一读那本书吧,它有非常引人入胜的例子,而且这本书的风格也很可爱。我强烈推荐。
生成式和预测式机器学习
Seth:谢谢。是的,我会去看一看的。我认为生成模型非常有趣,因为与预测模型不同,在文本分类等预测模型中,你可以知道它是否正确吗?通常有一个基本事实。但是使用生成模型时,例如你想创建一个戴浮潜镜的兽人,你怎么知道它是否正确呢?
这不是那么简单。
Vincent:你需要多少张不相关的照片才能生成那个呢?对吧?哦,但也因为这里显然用户界面也是解决方案的一部分。有很多可以用文本作为输入的神奇方法。但在这种情况下,你也可以这样:我们快到了,我只需要选择头盔周围的区域,那里需要出现一个黄色的浮潜镜。
类似的事情迟早会发生,这将使这些系统变得更好。然后我可以继续研究企业精灵并找出其他边缘案例。对吧?这将是一个持续的过程。
但是,是的,一般而言,因为你提到了基本事实-基本事实也很棘手。这也是很多人工智障的产生原因。这是我个人的抱怨-例如考虑图像分类,著名的猫狗问题:这是一张狗的照片还是一张猫的照片?
标准分类会说,好吧,这是一个二元任务。但是你会想,我们可能有没有猫或狗的照片。所以,我们需要三个类别吗?好的。那么对于同时有猫和狗的照片呢?哦,是的。对吧。
好的。现实更加复杂。那么我们该怎么办呢?
好吧,也许我们必须说,照片中有狗吗?是或不是。照片中是否有猫?是或不是。也许这些只应该是两个二元分类器。也许那样更明智。好的。当照片中有四只狗时,你该怎么办?
再次,你越来越开始思考,你也意识到,即使是定义良好的文本分类也不总是与现实结合得很好。即使你有基本事实标签,你也必须思考,基本事实标签也可能不与现实结合得很好,因为一个句子可能涉及多个主题,照片也可能涉及多个事情。
因此,退一步并真正思考,一些细节可能是可以忽略的,只要我们真正理解问题,但也许我们应该专注于那一点。也许我们应该跳过超参数调整,只关注-我们真正理解问题吗?
Seth:是的。这是一个非常好的观点。我认为当你面对一个问题时,人们往往会跳到解决方案。如果你正在做类似文本分类的事情-哦,好的。我将创建一个多类文本分类器。但事实证明,它永远不会那么简单。对吧?
它真的是多标签。我应该使用层次结构吗?我应该这么做吗?你知道,更好地了解问题总是有助于你找出更多。这比在原始的多类文本分类器上进行超参数调整要有价值得多。
“模型可以做一步,但如果需要,你的系统可以做两步或三步。所以一定要考虑一下两步法,我们有几个分类器检测几个属性,然后我们有一个基于规则的系统,之后会说,‘好的,这个组合看起来很有趣。让我们去做吧。’人们忘记了可以在其上构建基于规则的系统。这有点错失了机会。但也是80%的时间,这也是解决方案。”
Vincent:嗯,总的来说,我确实有一点建议。我在Prodigy论坛上帮助一些SpaCy用户解决问题。我给人们在这个领域里最常见的建议是:也许模型只能完成一步,但如果需要的话,你的系统可以完成两到三步。所以,一定要考虑使用两步系统,其中有几个分类器检测几个属性,然后我们有一个基于规则的系统,之后会说:“嗯,好的。这些东西的组合看起来很有趣。我们来试试吧。”
人们常常忽略了可以构建在其上的基于规则的系统。这是一个失误。但八成的时间,这也是解决问题的方法。亲爱的观众,你们可以根据这些信息进行决策,但我认为总体上采用两步方法是有效的。
Seth:我认为这是很好的建议,特别是现在所有深度学习的热潮。我认为我们仍处于找到机器学习模型和启发式方法之间正确组合的世界,有时候是相当基本的启发式方法,这往往会产生最好的结果。
影响
Seth:我们将会进入我们谈话中机器学习的学习部分。我们将从这里开始。在机器学习领域,有哪些人对你有影响?
Vincent:我有一些非常可爱的直接同事,我们依然保持着联系。所以,当然是他们。当我开始学习R的时候,Hadley Wickham是一个我非常仰慕的人。我也在几个场合见过他,非常酷。他曾经做了一个高级课程,大约在五年前,我是一个TA。非常棒的经历,我有机会见到这个人。
Katharine Jarmul是一个值得一提的人。她是PyLadies背后的发起人之一,但她也一直是机器学习中隐私和公平的积极倡导者。她过去为我的几个演讲审查过幻灯片,她非常棒。她是我所想到的人之一。
Vicki Boykis,我认为,是最有趣的人之一——她应该得到更多的荣誉,她很棒。NormConf也是她帮助启动的一个惊人的事情。
然后是Bret Victor,我认为他有最好的演讲,我曾经看过,也会一年一度地看。Brett Victor的程序设计未来是我所见过的最震撼、最具启发性的事情。我不会告诉你这件事情是关于什么的。你只需要去看看就好了。
Seth:我期待着看到。
Vincent:然后,我想,[Russel] Ackoff,但Ackoff的主要作用是我在运筹学方面获得了硕士学位,然后一个教授要退休了,我是他派对上的演讲者之一。然后在某个时刻,他说我想让你来这里是因为你真的让我想起了Ackoff。我当时说“他是谁?”
“他是这个了不起的家伙。只要买他的书。”然后你读这些东西。他就像是80年代的我一样。所以这绝对也是一个很好的灵感来源。
…普通人很有启发性,但普通人认为他或她不应该上台。
关于这件事,我想提一下的是,当我组织PyData的时候。你会想,“哪些人是好的主题演讲者和受邀演讲者等等。”我的印象是,普通人很有启发性,但普通人认为他或她不应该上台。
最好的例子是,在PyData伦敦,有一个普通的演讲,由一个人进行,他正在建造无人机,以在婆罗洲雨林中寻找濒危物种的猩猩。
Seth:哇!
Vincent:他有一个小房间,但他的演讲非常棒。所以我想,别瞎扯了。你是阿姆斯特丹的主题演讲者。这是我听过的最惊人的事情。这是你的业余爱好。
于是他成为了次年的主题演讲者。他很感激并很好玩。但是,他没有意识到那是绝对的主题演讲素材。类似地,我曾经读过一篇博客文章,其中这个人试图弄清楚哪些词最金属。
他这样做的方法是在金属歌词和非金属歌词上训练一个巨大的马尔可夫链。博客文章的结论是,最不金属的词是“合作”,因为它只出现了一次。你读了这篇文章,感觉很惊人。因为你基本上是在一个相当幽默的愚蠢问题上正确地应用了这个理论,也许。
但这里有激情。这个家伙,当我接近他时,[我说]你真的需要申请PyData。我不需要审查你的东西,我觉得你会进入。
他只是没有意识到这是他可以做的事情。我想,还有很多更多的人受到这种困扰,他们可能会有一个非常伟大的、令人鼓舞的时刻,但并没有考虑到他们能够分享。当然,有些人是真正的内向者,这也是可以的。但我在PyData上学到的一课是,灵感真的可以来自你意想不到的角度。所以不要过于关注那些大牌。
那也是一个问题。
Seth:是啊。最好的人之一就是非常谦虚,他们在工作上做得非常好,你可以感受到他们对自己的工作是多么的关心,以及他们多么认真地对待自己的工作。他们关心…
Vincent:他们关心,是的。你可以是最聪明的人,但如果你不关心你的话题,那就不会是一个很棒的演讲。
假设你可能走了一些捷径,但你计算出了最佳的宝可梦。我不知道,类似这样的事情。它仍然可以是一个很棒的演讲。
再说一遍,更多的人应该这样做。如果人们有兴趣做更多的博客和演讲,考虑一下闪电演讲和非常短的博客帖子称为“今天我学到了什么”。世界绝对需要更多的这种东西。我很高兴看到PyAmsterdam,每年一次的聚会,他们会举行闪电演讲聚会,让十个人进行五分钟的演讲。
那些聚会往往是惊人的。任何PyData的组织者都可以借鉴这个想法。那些聚会总是很有趣的。
职业建议
Seth:非常酷。到目前为止,你已经给了很多建议,但我想问一下,你收到的一条建议或留下的印象深刻的东西,对你的机器学习或职业道路有帮助吗?
Vincent:我在职业生涯的早期就得到了这个建议。我仍然和我以前的首席技术官一起出去玩,他在我23岁时给了我非常好的职业建议。他说,“小心获得加薪。因为如果你的工作开始赚很多钱,但有点无聊,那么钱可能是你留下来的一个原因。”
在你职业生涯的早期,这是一件危险的事情,因为也许你必须弄清楚你在生活中喜欢什么。也许你必须弄清楚什么让你感到兴奋。如果你过度关注钱,这有点像过度关注指标。你会过度优化一些可能并不那么重要的东西。所以这是一个相当酷的建议,有点元信息。但我认为总的来说,我已经能够很好地应用它了。
再次说一遍,这里是一个特权的发言人。对吧?但是,我已经能够很好地应用它。所以这很酷。
这是一个有点奇怪的轶事,但它也是令人惊奇的灵感来源。所以我有很多没有从事数据科学的朋友。我喜欢这样。我是个书呆子文森特,当我和他们喝啤酒时,他们会说,停止成为书呆子文森特,你在正常人中间,你现在可以谈论生活了。
我住在一个社区,你几乎认识所有的邻居。这个社区还算是中产阶级的社区——因为有贵族化趋势而正在变化,但我们都认识彼此。所以我的街上有个人。他是个画家。当天气好的时候,他会在他的长凳上放一箱啤酒。
整条街都去喝一杯,这是最可爱的事情。这是最可爱的社区。但是,他最近成为了一名独立承包商,是一名画家,这也意味着他买了他人生中的第一台笔记本电脑。他今年42岁。
他需要帮助,不仅仅是他的网站,而且是让更多人知道。他的整个生活中,他主要使用的电脑是他的手机,他一直运用良好,但他发现电脑非常复杂。坦白地说,我觉得这是一件非常令人耳目一新的事情。同时也提醒我,我体验计算机的方式不一定是正常的。这是一个非常有用的提醒。所以,这是最好的启示。
也许不要一直处在机器学习中。这是我的建议。特别是如果你正在为普通人使用的应用程序制作机器学习。记住他们真的不关心你的算法。他们真的不关心。
有时候我发现自己被机器学习的泡泡包围着。我发现走出去非常令人耳目一新。
我在咨询工作中也曾这样做过。我在制作卡车司机必须使用的物流应用程序,但在某些时候,我会在吸烟的角落与所有卡车司机一起晒太阳,以了解他们是什么样的人。并了解他们对应用程序的不满之处。然后就是更多地成为人类中的一员。
专注于人类的事情,这正是我尝试做更多的事情,也是我找到灵感的地方。
新数据科学家的建议
Seth:是啊。对于刚刚进入这个领域的人,让我们说,他们刚刚被聘为初级数据科学家,或者他们正在考虑开始学习数据科学,你会给他们什么建议?
Vincent:好的。所以第一步,我在NormConf上做了一个有关此主题的演讲。因此有一个名为Group-by statements that save the day的演讲。这个演讲是专门为你设计的。
尽管如此,我是一个非常糟糕的职业指导人,因为回想过去,我认为我今天所处的大部分地方都是由于运气导致的,这是一种很难优化的东西。
我认为总的来说,有用的是,也许你可以拥有自己的博客,在那里你可以分享今天学到的东西。就像calmcode仍然是我的代码片段库一样。你的博客可以成为你的同类。总的来说,我发现对于这些“今天我学到的”片段——如果你能够每月写两篇,每篇文章需要半小时而不是需要几小时的大博客文章,这个东西不应该花费超过几十分钟,假设你这样做了一年,你就有了一个有24篇文章的博客。
如果你正在学习并且能够分享知识,那么人们将承认你拥有一些简历,证明你正在学习东西。所以如果你想在互联网上拥有一定的存在感,而且付出很少的努力,这是一件相当容易的事情。这是我推荐的。
我确实认为,如果你是一个超级初学者,我想承认这有点困难。现在,招聘市场的状况和所有这些都有点遗憾。但是,你可以做一些事情,以使自己的生活可能稍微容易一些,即你不必知道所有东西才能得到工作。
你也可能能够获得相关的工作。我给我的一些朋友提供的建议是,学习R可能会更容易,而学习Python可能会更容易,而且可能只需成为分析师一年或两年。
当你成为一名分析师时,你所学到的所有技能将非常有用,如果以后想成为数据科学家,这些技能都将非常有用。因此,如果更容易并且你在工作中得到了报酬,请不要针对职称进行优化,只针对在工作中学到的东西进行优化。这似乎更容易。成为一名优秀的分析师没有任何问题。
也许我们需要的是更多优秀的分析师,而不仅仅是优秀的数据科学家。是吧?也许我们需要更多的group by语句来拯救局面。提示:观看演讲。
但我认为在工作职称方面存在一些势利。”就像,哦,我是超级高级员工,超级工程师。当然。”但如果你只是一个真正优秀的分析师,我们需要更多非常不错的分析师。这也很好。去追求它。
从机器学习中学习
Seth:是的。这绝对是好建议。现在我们一直在等待的问题是,从机器学习的职业生涯中,你学到了什么关于生活的道理?
Vincent:有些问题在你忽略它们时会自己解决。说真的,我遇到了很多这样的情况,问题的解决是通过忽略机器学习部分来解决的,你会开始想,也许一些问题会在你忽略它们时自己解决。
我也注意到,在某些情况下确实是这样。特别是当你有了孩子后,你会发现有一些东西你也可以过度优化。比如,哦,孩子睡眠不好。那么这个问题在某些时候会自己解决。这不是说我的影响不会产生很大的影响。
我想机器学习也是一样的。有些事情你可以控制,有些事情你不能控制。只需确保你了解你可以和不能控制的事情,然后从那里开始。而我的日常工作就是处理这些感受。
我希望这个回答在某种程度上回答了这个问题,但这也是我的看法。尝试冷静地处理,这是我的最终建议。同时,我也喜欢机器学习的第一个规则是你真的需要使用机器学习吗?
Vincent:是的。我同意。还有一件事,我真的很自豪地说一下雇主。
我非常喜欢SpaCy的一件事是,你不必使用SpaCy中的机器学习部分。你也可以只使用SpaCy中的非机器学习部分。它们也是高性能、快速和超级有用的。还有一些机器学习包,可以让你做一些基于规则的东西。如果你在做自然语言处理,这就是为什么我喜欢使用SpaCy的原因。
你不必一直使用统计学的方法。基于规则的引擎也很好用。推销结束。
Seth:我已经是SpaCy的忠实粉丝有一段时间了——至少四年了,可能更长时间了。它帮助我解决了很多命名实体识别、文本分类、匹配等问题。
Vincent:好吧,如果我能再推销一下。现在有很多关于以数据为中心的人工智能的讨论。但我开始对这些Explosion的人所做的事情感兴趣的原因是有一篇2017年的博客文章,名为”监督学习是伟大的——数据收集是有问题的”。他们在2017年就在做以数据为中心的工作,但那是我读过的最好的博客文章之一。
所以他们谈论了数据质量,其中最好的引用之一是如果你让那些被低薪而又枯燥乏味的人无聊,就不要期望有很好的数据,因为有时机械土耳其人还是人们的选择,所以请阅读那篇博客文章。我会在节目注释中给你一个链接。这也是一个极具启发性的东西,人们应该阅读。
Seth:非常感谢。和您交谈真的很愉快。你给了我很多好的资源。为这个节目制作节目笔记肯定会很愉快。如果有一些地方你希望听众了解你更多,那么这些地方会是什么?
Vincent :我最近在推特和Fosstodon上活跃。但最重要的是,我还不能宣布任何事情。因为我在Explosion工作,所以我可以看到正在开发中的东西。我正在从事非常酷的工作,我的其他同事也在从事超级酷的工作,只需关注Explosion即可听到宣布的超级酷的东西。
有一堆非常酷的东西正在开发中。如果你这样做,那么你在某个时候也会听到我在做的一些事情。
Seth :太棒了。非常感谢你,Vincent。真的很愉快。
Vincent:同样。
现在听
完整访谈视频请点击:
Vincent Warmerdam | Learning from Machine Learning Episode 2
此播客现已在所有播客平台上发布:
我们之前的一集介绍了Maarten Grootendorst,BERTopic和KeyBERT的创作者,他也是Towards Data Science的著名作者。他讨论了开源项目、心理学与机器学习及软件开发的交叉领域以及自然语言处理的未来。
从机器学习中学习|Maarten Grootendorst:BERTopic、数据科学、心理学
从机器学习中学习的第一期介绍了BERTopic的创作者Maarten Grootendorst。
towardsdatascience.com
参考资料
了解更多关于Vincent Warmerdam的资源:
- calmcode
- https://koaning.io/
- Vincent Warmerdam:The profession of solving (the wrong problem) | PyData Amsterdam 2019
- Group-by statements that save the day — Vincent D Warmerdam
- https://github.com/koaning
来自本集的参考资料
- You Look Like a Thing and I Love You:How Artificial Intelligence Works and Why It’s Making the World a Weirder Place
- The Future of Operational Research is Past
- Supervised Learning is great — it’s data collection that’s broken
- Deon — An ethics checklist for data scientists
- Hadley Wickham
- Katharine Jarmul
- Vicki Boykis
- Brett Victor
了解更多关于从机器学习中学习的资源:
- 在Youtube上订阅
- 在LinkedIn上了解Learning from Machine Learning
- 在LinkedIn上联系我
- 在小猪AI上关注我