Fast.ai和为什么Python不是杰里米·霍华德的ML的未来

2020-09-08 15:08:05

杰里米·霍华德(Jeremy Howard)是Fast.ai的创始研究员,这是一家致力于让深度学习更容易获得的研究机构。此前,他是位于加利福尼亚州旧金山的先进机器学习公司Enlitic的首席执行官和创始人。

霍华德是奇点大学的一名教员,他在那里教授数据科学。他也是世界经济论坛的一名年轻的全球领导人,并在世界经济论坛2014年年会上发表了关于机器的就业问题的演讲。

Howard建议Khosla Ventures担任他们的数据策略师,确定投资于数据驱动型初创公司的最大机会,并指导他们的投资组合公司建立数据驱动型业务。霍华德是两家成功的澳大利亚初创公司FastMail和Optimal Decisions Group的创始首席执行官。在此之前,他在麦肯锡公司(McKinsey&;Company)和科尔尼公司(AT Kearney)做了8年的管理咨询工作。

Fast.ai被世界上每个人使用,这一点对你来说很重要吗,超越了学习的范畴。

我们从权重和偏差开始为机器学习从业者建立工具,因为我们非常关心机器学习在世界上可能产生的影响,我们喜欢与构建这些模型的人一起在战壕中工作。关于这些构建工具,最有趣的事情之一就是与这些ML实践者的对话,了解他们正在做的有趣的事情。这个过程非常有趣,我们想把它以我们的新播客“梯度异议”的形式向世界开放。我们希望您能像我们制作它一样享受聆听的乐趣!

我们对学术和开源项目总是免费的。如有任何问题或功能建议,请发送电子邮件至[email protected]

卢卡斯:您现在收听的是梯度异议节目,在这个节目中,我们将学习如何让机器学习模型在现实世界中发挥作用。我是你们的主持人卢卡斯·比沃德。Jeremy Howard创建了Fast.ai课程,这可能是学习机器学习的最受欢迎的课程,而且有很多课程。他也是“使用Fast.ai和PyTorch的程序员的深度学习”一书的作者,在这个过程中,他创建了Fast.ai库,很多人都独立使用该库来编写深度学习。在此之前,他是Enlitic的首席执行官和联合创始人,这是一家令人兴奋的初创公司,将深度学习应用于医疗保健应用。在此之前,他是Kaggle的总裁,Kaggle是最令人兴奋的最早的机器学习公司之一。能和他谈话,我超级兴奋。那么,杰里米,很高兴和你聊天。在准备问题的过程中,我意识到每次我和你们交谈时,我都会想起一些我从未想过要问的珍宝。比如有一次你告诉我你是如何学习中文的,还有一次你给了我爸爸育儿方面的建议,非常具体的建议,实际上非常有帮助。

卢卡斯:嗯,你告诉我的是,当你换尿布的时候,用吹风机把一个非常令人沮丧的经历变成一个真正快乐的经历,这是一个很好的建议。我不知道你是怎么..。我想我可以想象你是怎么想的,但它是...

杰瑞米:是啊,是啊,我知道他们喜欢呼呼的声音,他们喜欢温暖。我有点痴迷于爸爸的事情。所以我总是乐于谈论爸爸的事情。这就是这个播客。

卢卡斯:我们能从这个开始吗?现在我女儿已经八个月大了。你对她有什么建议吗?

杰里米:哦,我的天哪!八个月大。你知道,这对任何一种学习都是一样的。这一切都关乎一致性。所以我认为我们对克莱尔做的最正确的事情就是,你知道,现在这个可爱的孩子是我们超级一致。比如,如果我们说,除非你做了Y,否则你不能拥有X,如果她不做Y,我们就永远不会给她X。如果你想把你的滑板车开到路的尽头,你就得再把它搬上来。我们读了一本伟大的书,书中说,如果你不一致,事情就会变成这样,它就像一个赌徒。这就好像有时候你会得到你想要的东西,所以你只需要不断尝试,这样才能成为我的头号建议。这与教授机器学习是一样的。我们总是告诉人们,对学生来说,坚韧是最重要的。要坚持下去,每天都要这样做。

卢卡斯:我想只是出于提问的精神,我真的很好奇,你知道,你构建了这个令人惊叹的框架和教学内容,我认为它可能是最受欢迎和最受欢迎的框架。我想知道您是否可以先告诉我是什么激发了您这样做的灵感,以及制作Fast.ai、课程和Fast.ai(ML框架)的过程。

杰瑞米:所以这是我妻子瑞秋和我一起创办的。瑞秋拥有数学博士学位,超强的技术背景,早期的数据科学家和工程师,优步(Uber)。我不知道。我刚刚勉强通过了一个哲学专业的本科生,没有任何技术背景。但从我们两个不同的方向来看,我们都感到沮丧,2012年的神经网络超级重要,显然将改变世界,但超级难以接近,所以我们会去开会,试图弄清楚我们是如何…。就像我知道基本概念一样,我在20年前就对神经网络进行了编码,但你如何才能让它们真正变得更好呢?当时还没有任何可以在GPU上运行的开源软件。你知道,丹·塞里森的东西是可以买到的,但你得付钱。没有源代码,我们只是想,哦,我们必须改变这一点,因为技术飞跃的历史表明,它通常会增加不平等,因为有资源的人可以获得新技术,然后导致社会动荡和许多不快乐。所以我们想,嗯,我们应该尽我们所能。所以我们想我们该怎么解决这个问题呢?基本上,我们的目标过去是,现在仍然是,能够使用深度学习而不需要任何代码,所以,你知道,因为世界上绝大多数人都不会编写代码,我们想,嗯,要做到这一点,我们首先应该看看现在存在什么?学习如何尽我们所能最好地使用它,教人们如何尽可能地最好地使用它,然后让它变得更好,这需要做研究,然后把它变成软件,然后改变课程,教授有望稍微简单一点的版本,然后在几年内反复重复这一点。因此,我们在某种程度上也在这个过程中。

卢卡斯:那太有趣了。你有没有担心你正在教授的东西,你会试图让它过时,对吗?因为您正在尝试构建更高级别的抽象?我认为人们真正欣赏你的课程的一件事是,它非常清楚、深入地解释了这些东西是如何工作的。你认为这最终是没有必要的吗,或者你是怎么想的?

杰里米:是啊,在某种程度上。我的意思是,如果你看这本新书和新课程,第一章从非常非常基础的东西开始,围绕什么是机器学习算法?我们学习算法是什么意思?解决同样问题的传统编程和机器学习有什么不同?我认为那些基本的基础永远是有用的,即使在你没有使用任何代码的时候也是如此。我觉得即使是现在,如果有人在使用PlatformAI或某种无代码框架,你仍然需要理解算法的这些基础知识,只有在你提供的数据基础上才能学习。它通常不能推断出它还没有见过的模式,诸如此类的东西。嗯,但是是的,我的意思是,到目前为止,我们每年都会推出两个新课程,你知道的,每年都是第一部分和第二部分,因为每年都是完全过时的。在第一部分开始的时候,我们总是对我们的学生说,你看,你知道,你重新学习的任何细节在一两年后都不会有任何用处。有一段时间,我们先弹钢琴,然后弹T

杰里米:嗯,你知道,我实际上有过很多这样的实践教学,但是这种非常非正式的方式,部分是因为我自己没有技术教育背景。所以我发现很容易同情那些不知道发生了什么的人,因为我不知道发生了什么。因此,回到25年前我做管理咨询的时候,我总是使用数据驱动的方法,而不是专业知识,面试驱动的方法来解决问题,因为我没有任何专业知识,而且我不能真正面试别人,因为我太年轻了,没有人把我当回事。然后我想要向我的客户和项目经理解释,嗯,我用这个叫做线性规划或多元回归或数据库之类的东西解决了这个问题。我在咨询业工作的几年内发现,我开始喜欢运行我们今天所说的数据科学的培训项目,但在我们没有使用这个词之前的20多年里。是的,基本上是教我们的客户,你知道的..。所以当我在科尔尼做IT的时候,我给整个公司开了一门课程,基本上每个副MBA都必须做我们今天所说的数据科学,你知道,一些SQL,一些回归,一些电子表格,一些蒙特卡洛。所以,是的,我实际上已经做了相当多,现在你提到它,当然还有瑞秋。但对于她来说,在纯数学方面,她在杜克大学(Duke University)开设了一些课程,并为研究生开设了一些课程。所以,是的,我想我们都有过一些练习,而且我们对此都很热情。我们还研究了如何教很多东西的文献,奇怪的是,大多数老师都不会这么做,所以这是件好事。

卢卡斯:你觉得在你的教学中有没有让你感到特别自豪的东西,或者与其他人可能选修的课程相比,你做得特别好的东西?

杰里米:是的,我的意思是,我不会说独一无二,因为总有其他人在做好事,你知道的。我认为我们特别值得注意的是两件事。一种是代码优先,另一种是自上而下。因此,我在做任何事情时都非常有意识地决定把重点放在作为观众的我身上。我不是一个好的数学家,现在我很有能力,但这并不是真正在我的背景中存在的东西,对我来说也不是自然而然的。对我来说,对技术问题的最好解释就像一些代码中的示例,我可以运行、调试、查看中间输入和输出。因此,我在教学中做出了一个有意识的决定,要教给和我一样的人。虽然大多数技术学位的研究生水平的人都不像我,但他们都做了大量的数学计算。大多数对这些材料感兴趣的人都和我一样,他们都是没有研究生学位的人,他们在教学小组中的代表性真的很低,因为几乎所有的老师都是学者,所以他们无法同情那些不喜欢希腊字母和积分学之类的人。所以我总是通过展示代码示例来解释。另一个是自上而下的,这也是绝大多数人,不一定是那些花了很长时间攻读技术学位并一路成为教授的绝大多数人,但大多数普通人在有背景的情况下学得更好。你为什么要学这个?你知道吗,它被应用的一个例子是什么?在你开始谈论如何将所有细节整合在一起之前,使用这种方法的一些利弊是什么,所以这真的很难做到,但我们试图做到这样,每次我们提出一个主题时,它都是因为我们需要展示它,以便解释其他东西或批准其他东西。这很难,因为很明显,我教的每一件事都是我非常熟悉的东西。所以对我来说,很容易说,好吧,你从这里开始,在这个基础上再接再厉,然后你就在这里,这是尝试教东西的自然方式,但这并不是学习它的自然方式。我认为人们没有意识到自上而下的教学有多难,但人们往往会真正欣赏它。

卢卡斯:是啊,他们似乎真的很欣赏。你认为,我真的很愿意和瑞秋直接谈这件事吗?但你认为瑞秋的做法和你一样吗?因为听起来她的背景完全不同。

杰里米:是的,她确实有不同的背景,但她的做法肯定是一样的,因为我们已经谈过了。我们都跳到对方身上说,嘿,因为我们一起做了很多开发工作,或者我们在她更多地谈到数据伦理问题之前就做了;有时,你知道,我会对她说,嘿,这看起来很自下而上,你不觉得吗?而且她也是

杰里米:是的。我是说,你知道,我是说,调度是关键。事实上,Python中没有内置Julia样式调度,所以对类型文档的函数调度,我们觉得我们必须解决这个问题,因为实际上数据科学,你拥有的数据类型会影响必须发生的事情,所以如果你说旋转,那么取决于它是三维CT扫描,还是图像,还是点云,还是人体姿势的一组关键点,旋转在语义上意味着相同的事情,但需要不同的东西,这取决于它是三维CT扫描,还是图像,还是点云,还是人体姿势的一组关键点,旋转的语义意义是相同的,但需要不同的东西,这取决于它是三维CT扫描,还是图像,还是点云,还是人体姿势的一组关键点,旋转的语义意义是相同的,但需要的是不同的。所以,是的,我们建造了这个朱莉娅式的调度系统。我还意识到,再加上一次,我猜这实际上都是关于类型的,当你有语义类型时,它们需要一直走进走出,我的意思是你把一个图像放进去,它是一个枕头图像对象,而在另一边一直走出来就是一个图像张紧器。进入你的模型,这个模型需要产生图像张紧器或类别类型或任何东西,然后它需要在另一边一直出来,才能正确地显示在你的屏幕上。所以我们必须确保整个转换管道是可逆的。所以我们必须建立一个新的可逆组合变换系统。所以这些东西就是全部,我们尽可能地把它隐藏在幕后,但是如果没有这些东西,我们最终没有代码的目标将是不可能的,因为你必须告诉计算机,哦,这个时态实际上代表了三个边界框以及相关的类别,你知道,并描述如何显示它和其他东西。所以这对两者来说都是非常基础的--让编码过程变得容易,然后在接下来的几年里走上正轨,你知道,完全消除了对代码的需求。

Lukas:发布V2库背后的大目标是什么?这是个很大胆的选择,对吧?完全重写一遍。

杰里米:是的,我是第二套系统的铁杆粉丝。有点像乔尔·波尔斯基的对立面。我喜欢重写。我不是亚瑟·惠特尼,但是,你知道,亚瑟·惠特尼,他创造了K和KDB,每个版本,他从头开始重写整个东西,他做了很多版本。总的来说,我真的很喜欢这种方法,如果我没有学到太多东西,以至于我之前的版本看起来天真可笑和可悲,那么我就不会前进了。所以我发现,每年我回顾我得到的任何代码,都会想,哦,那可能会更好。然后你从头开始重写它。我对这本书也做了同样的事情。我从头开始第二次重写了每一章。因此,部分原因是这样,部分原因是我花了几年时间才达到这样的地步,我觉得自己确实对所需要的东西有了扎实的理解,就是我刚才描述的那种东西。其中很大一部分来自与克里斯·拉特纳的对话,克里斯·拉特纳是SWIFT和LLVM的发明者。因此,当我们一起授课时,与他坐在一起,谈论与斯威夫特一起登上Fast.ai以及斯威夫特的打字系统,然后与亚历克西斯·加拉格尔(Alexis Gallagher)合作是一件很棒的事情,他可能是世界上最顶尖的斯威夫特专家。的值类型系统,他帮助我们为SWIFT构建了一个新的数据块API,所以通过这个过程,它让我意识到,是的,这实际上是一个真正持久的想法,实际上,我应该提一下,它可以追溯到数据块API的想法,它实际上可以追溯到Fast.ai版本1,这是一种基于真正仔细考虑基础的想法,而不是拥有一个库,每个可能的输入和输出组合最终都会成为这个完全不同的类。让我们有一些可以是输入或输出的类型,然后让我们计算出您需要的实际步骤。这就像,好吧,你怎么弄清楚输入项是什么?您如何计算出输出项目是什么?您如何确定如何获取验证集呢?你怎么弄到标签的?所以,再一次,这些东西是。

.