François Chollet 是一位人工智能与深度学习研究者,Keras(Python 领先的深度学习框架)的作者,最近出版了新书 Deep Learning with Python。为配合新书发布,我通过电子邮件采访了 François。欢迎通过 @fchollet 和 @hugobowne 与我们交流。
François,您是谷歌的软件工程师兼人工智能研究员。我想进一步了解您的工作。但在此之前,人们对某人“做什么”的流行印象与实际工作常常大相径庭。大家以为您在做什么?
这是个敏锐的观察:通常会存在偏差——人们所知、本人希望被了解的内容,与实际在做的事并不一致。就我而言,大家最熟悉的可能是我创建了深度学习框架 Keras。
那您实际在做什么?
我在谷歌山景城的 Brain 团队工作,大部分时间都在开发 Keras。所以我认为我的实际工作与大家的认知基本一致。
我也为谷歌的机器学习框架 TensorFlow 做贡献,Keras 可与之集成。除此之外,我还在多个方向开展研究。最近我做了关于机器翻译、计算机视觉,以及将深度学习用于定理证明的论文。我的主要研究兴趣在于理解 AI 中的抽象与推理问题——如何从感知走向抽象的、高度可泛化的模型。
您因编写 Keras 包而知名——这是一个用于 Python 的开源深度学习神经网络:什么是深度学习?
深度学习是一种特定的机器学习方法,被证明比以往方法更强大、更灵活。在大多数应用中,我们所说的“深度学习”可以理解为:把大量由人类标注的数据,转化为能自动以类似人类方式为新数据打标签的软件。通过这种方式,您可以自动化许多不同的任务。深度学习尤其擅长处理“感知类”数据,如图像、视频或声音。
这里有个具体的例子。设想一大批图片,每张图片都带有一些标签(“dog”“cat”等)。深度学习能让您自动把这些数据转化为一个“懂得”如何将图片映射到标签的系统,只需从样例中学习,无需任何手动微调或定制工程。然后,这样的系统就可以应用到新数据上,有效地实现图片自动打标签。
同样的方法可以用于广泛的问题,例如机器翻译、语音识别、文本转语音、光学字符识别等。
恭喜您出版新书 Deep Learning with Python。您为什么要写这本书?
这本书是我尝试为具备 Python 编码能力、但没有机器学习背景的人设计的一套深度学习课程。我希望在不“降维讲解”的前提下,让深度学习尽可能易于入门。事实证明这是可行的,因为在很大程度上,深度学习并不包含艰深难懂的观念。
Python 或许是增长最快的编程语言,至少在高收入国家是这样。为什么选择 Python?对您本人以及更广泛的开发者社区而言都是如此。
我非常喜欢 Python。它容易上手,而且无论您使用多久,只要用得越多,它的生产力就越高。与我用过的大多数其他语言相比,它非常直观、优雅。但 Python 的“杀手级特性”不在语言本身,而在其生态与社区。无论您需要做什么——解析某个特定文件格式、对接某个特定系统——几乎都能找到现成的 Python 库,从而省下自己实现的时间。对于数据科学和机器学习尤其如此:有大量优秀工具——numpy、pandas、scikit-learn、绘图库等等。这使得 Python 成为一种非常高效的语言。
此外,我喜欢 Python 不是某个垂直领域的专用语言,而是处在多个领域的交汇处,从 Web 开发到数据科学再到系统运维。这意味着,比如您无需切换到另一门语言就能把 Keras 模型部署为 Web API。无论您需要做什么——上线一个 webapp,调用 REST API,解析一些文件,训练最前沿的深度学习模型——Python 通常都是非常稳妥的选择。
很多人觉得进入机器学习和人工智能开发领域门槛不低。您如何看待相关技能与技术的“普及化”?
我并不这么认为。过去 5 年里,入门机器学习变得极其容易。没错,5-7 年前确实很难。您可能需要读研,需要自己用 C++ 或 Matlab 编写大量底层算法。我也走过那条路。如今不一样了。您只需要 Python,这要容易得多,而且还有像 Keras 这样高级且易用的工具。此外,网上有大量高质量学习资源,您还可以在 Kaggle 上针对真实问题进行实战。学习从未如此容易。
所以在这个时间点,您只需,比如说,拿起我的书,安装 Keras,做几个 Kaggle 挑战,几个月后,您就能在实际问题上相当熟练地使用机器学习和深度学习。
Keras 和您的新书如何契合上述理念?
最初发布 Keras 时,我并没有特别想要“普及”深度学习。但随着时间推移,我看到无数人通过 Keras 入门深度学习,并以我意想不到的方式将其用于解决各式各样的问题,这令我着迷。我意识到,深度学习可以以颠覆性的方式应用到远比硅谷人想象的更多领域。外面有太多人能在工作中受益于深度学习。因此,我越来越重视让尽可能多的人能够用上这些技术,这也成为 Keras 的首要设计目标。这是我们把 AI 的潜力充分落地的唯一途径——让它被广泛获取。
我的这本书是在同一方向上再迈一步:我试图让尽可能多的人顺利上手深度学习,以便他们能用它来解决自己熟悉、甚至是我都未曾想到存在的问题。仅提供易用工具还不够,也应提供学习材料,教会大家如何使用这些工具。
初学者最重要需要学什么?他们该如何学习?
最重要的或许是建立对深度学习“能做什么、不能做什么”的直觉。此外,还要把握一些关键的最佳实践,比如如何正确评估模型、如何对抗过拟合。这需要形式化的讲解与在真实问题上的大量实践相结合。
“人工智能”这个词会让许多人想到有感知的机器人。我们会看到类似“谷歌 AI 创造出比人类系统更先进的‘子’AI”的标题。我需要您的帮助来揭开 AI 的面纱。人工智能实际上能做什么?
这个领域的炒作确实很多。媒体对 AI 和深度学习的报道常常与现实严重脱节——无论是耸人听闻的恐怖故事,还是把 AI 描述成万事大吉的神话。
至于今天 AI 能做什么,这是个难题。我会说,AI 能做的事情大致有三类:
- 完成那些我们能够将 AI 需要遵循的规则完整、明确地指定出来的任务。这本质上就是所谓的“符号主义 AI”,或者更务实地说,就是“软件开发”。任何写过程序的人都知道,这种方法很脆弱,只适用于一切都可控的场景——而现实问题中,这种情况很少。
- 完成那些涉及简单感知与直觉的任务,我们无法显式写出规则,但能提供大量示例。这包括整个深度学习领域:图像分类、语音转写等。这方面一个重要局限是,我们的模型只能处理与其见过的输入极其接近的数据——您无法偏离训练数据太远。我们在做的基本上是被“美化”的高维曲线拟合。
- 对以上两类的相当朴素的组合。比如,您可以设想一个机器人,配有一个深度学习模块,能从大量示例中学到如何提取其周围若干物体的类型与位置,同时配有一个模块,硬编码操纵这些物体的高层规则。另一个例子是 AlphaGo/AlphaZero,本质上是将暴力搜索(显式编程)与在大量对局上训练的深度学习模块相结合,从而能“直观地”评估某个棋盘局面的价值。
事实是,若将现有技术的潜力发挥到极致,您可以在许多重要任务上达到超越人类的表现,并在更多任务上取得不错的效果。但这只可能发生在非常狭窄的设定中。而且,也许有悖直觉的是,从在许多不同垂直任务上表现出色,到拥有哪怕是幼儿那样的通用智能与常识——更不用说其学习与适应能力——二者之间并不存在真正的路径。
尽管如此,在大量非常狭窄的任务上做到非常出色,对大多数行业来说已具变革性。因此,未来 20 年您可以期待 AI 带来巨大的经济推动。您可以把 AI 视为我们这个时代的蒸汽机——人类手中的强大工具,将在几十年内重塑经济版图。但看不到有感知机器人的踪影。
人工智能做不到什么?
在我们可能希望自动化的所有事项中,今天的 AI 只能处理很小的一部分。我们做不到的远多于做得到的。
总体而言,我们尤其不擅长:
- 任何需要“扎根”(grounding)或“理解”的事情。比如,AI 无法理解自然语言的含义,而是把语言当作统计依赖关系或硬编码处理规则来对待。“含义”,在人类心智中的存在,源于具身的人类经验,而我们的 AI 模型无法接触到这类经验,至少现在如此。因此,当下没有任何 AI 系统能够以对人类而言有意义的方式“理解”其任务。模型仅仅是在描绘其训练数据的统计流形。
- 任何涉及处理与 AI 先前见过的数据不同的数据。AI 只能应用您显式编码的规则,或识别与其训练数据非常非常接近的事物。任务中引入的不确定性或变化越多,我们的能力就会以指数方式衰减。
- 任何涉及推理与抽象的事情。要么我们能把显式的推理规则硬编码进机器,要么我们就根本无法进行推理。当前的 AI 无法自行构建某种情境的抽象模型。可以说,这是当今 AI 发展的主要瓶颈。如果解决了它,您很快也能跨越前两项瓶颈。
我写过一篇名为 博客文章,题为The limitations of deep learning,讨论了这些及相关问题。
深度学习社区面临的主要挑战是什么?
对抗炒作、提升伦理意识、增强科学严谨性。
炒作:这在困扰我们的领域。一些人以荒谬的方式夸大近期进展,严重高估我们的现实能力,且常把“人类水平”描述为近在咫尺——事实并非如此。如果我们把期望值抬到天花板,随后却无法兑现,我们就是在让公众反感。此外,这在智识上并不诚实,也会毒害公共讨论。
伦理:如今大多数部署 AI 系统的人并非来自特别多元的背景,往往对其所构建系统的伦理影响与有害副作用浑然不觉。这是个大问题,因为这些人将对他人拥有越来越大的影响力。我们需要更多讨论这些议题,提高对 AI 潜在不道德应用的认识,无论是带偏见的预测模型影响人们生活,还是在非常值得商榷的情境中应用 AI,抑或用 AI 以危险的方式操纵我们的行为与观点。
科学:每天都有大量深度学习论文发表,其中多数并未产生真正有意义的新知识,因为它们没有遵循科学方法。它们以模糊的方式“评估”模型,或者在训练数据上测试已过拟合的模型(这在生成式模型和强化学习中尤为常见,这两者是深度学习研究增长最快的方向),挑拣结果、使用人为偏弱的基线、以导致针对特定任务过拟合的方式调整超参数、只在 MNIST 上评估模型,等等。深度学习是一个科学上的“灾区”。同行评审往往无法以有意义的方式解决这些问题,或许部分原因在于大多数审稿人进入该领域一般也不过一两年(因为该领域在指数级增长)。如果我们想更快取得进展,就需要在研究可复现性、基线、模型评估与统计显著性方面,为这个领域注入更高的严谨期待。遗憾的是,我们当前的激励机制与科学背道而驰——我们鼓励发论文,而不幸的是,如果您把研究说得玄之又玄、同时又让他人无法正确评估其意义,反而更容易发表。
在您看来,深度学习的未来是什么样的?
我其实写过一篇 博客文章。总的来说,我预计 AI 将日益把“直觉式”的模式识别模块与形式化推理模块融合。我也预计 AI 将演化为一种更接近自动化软件开发的形态,借鉴当今软件工程中的诸多模式与实践。
您不仅是一名开发者。在 keras 博客、随笔、书中以及推特上,您都在深入、积极地讨论深度学习、AI 与技术的一般伦理问题。您认为开发者是否有义务参与到对其工作相关的伦理考量中?
当然。我认为近年来整个技术领域在这方面都有所欠缺。比如看看 Facebook,或者大多数手机游戏。技术从来不是“中立”的——因为它强大,因为它影响我们的生活。您设计产品与技术的方式,会主动把价值观注入其中——无论您是否意识到。因此,最好有意识地去做。如果您构建一个社交媒体平台,并试图最大化“参与度”,那么,这就是一个充满伦理取向的决策,且影响深远。要么我们在乎,并把伦理作为我们构建的技术与权力结构的明确设计目标;要么我们就拱手让出自己的价值观。如果您身在科技行业,您不可能选择“置身事外”,那不过是自欺欺人。
François Chollet 是一位人工智能与深度学习研究者,Keras(Python 领先的深度学习框架)的作者,最近出版了新书 Deep Learning with Python。为配合新书发布,我通过电子邮件采访了 François。欢迎通过 @fchollet 和 @hugobowne 与我们交流。
François,您是谷歌的软件工程师兼人工智能研究员。我想进一步了解您的工作。但在此之前,人们对某人“做什么”的流行印象与实际工作常常大相径庭。大家以为您在做什么?
这是个敏锐的观察:通常会存在偏差——人们所知、本人希望被了解的内容,与实际在做的事并不一致。就我而言,大家最熟悉的可能是我创建了深度学习框架 Keras。
那您实际在做什么?
我在谷歌山景城的 Brain 团队工作,大部分时间都在开发 Keras。所以我认为我的实际工作与大家的认知基本一致。
我也为谷歌的机器学习框架 TensorFlow 做贡献,Keras 可与之集成。除此之外,我还在多个方向开展研究。最近我做了关于机器翻译、计算机视觉,以及将深度学习用于定理证明的论文。我的主要研究兴趣在于理解 AI 中的抽象与推理问题——如何从感知走向抽象的、高度可泛化的模型。
您因编写 Keras 包而知名——这是一个用于 Python 的开源深度学习神经网络:什么是深度学习?
深度学习是一种特定的机器学习方法,被证明比以往方法更强大、更灵活。在大多数应用中,我们所说的“深度学习”可以理解为:把大量由人类标注的数据,转化为能自动以类似人类方式为新数据打标签的软件。通过这种方式,您可以自动化许多不同的任务。深度学习尤其擅长处理“感知类”数据,如图像、视频或声音。
这里有个具体的例子。设想一大批图片,每张图片都带有一些标签(“dog”“cat”等)。深度学习能让您自动把这些数据转化为一个“懂得”如何将图片映射到标签的系统,只需从样例中学习,无需任何手动微调或定制工程。然后,这样的系统就可以应用到新数据上,有效地实现图片自动打标签。
同样的方法可以用于广泛的问题,例如机器翻译、语音识别、文本转语音、光学字符识别等。
恭喜您出版新书 Deep Learning with Python。您为什么要写这本书?
这本书是我尝试为具备 Python 编码能力、但没有机器学习背景的人设计的一套深度学习课程。我希望在不“降维讲解”的前提下,让深度学习尽可能易于入门。事实证明这是可行的,因为在很大程度上,深度学习并不包含艰深难懂的观念。
Python 或许是增长最快的编程语言,至少在高收入国家是这样。为什么选择 Python?对您本人以及更广泛的开发者社区而言都是如此。
我非常喜欢 Python。它容易上手,而且无论您使用多久,只要用得越多,它的生产力就越高。与我用过的大多数其他语言相比,它非常直观、优雅。但 Python 的“杀手级特性”不在语言本身,而在其生态与社区。无论您需要做什么——解析某个特定文件格式、对接某个特定系统——几乎都能找到现成的 Python 库,从而省下自己实现的时间。对于数据科学和机器学习尤其如此:有大量优秀工具——numpy、pandas、scikit-learn、绘图库等等。这使得 Python 成为一种非常高效的语言。
此外,我喜欢 Python 不是某个垂直领域的专用语言,而是处在多个领域的交汇处,从 Web 开发到数据科学再到系统运维。这意味着,比如您无需切换到另一门语言就能把 Keras 模型部署为 Web API。无论您需要做什么——上线一个 webapp,调用 REST API,解析一些文件,训练最前沿的深度学习模型——Python 通常都是非常稳妥的选择。
很多人觉得进入机器学习和人工智能开发领域门槛不低。您如何看待相关技能与技术的“普及化”?
我并不这么认为。过去 5 年里,入门机器学习变得极其容易。没错,5-7 年前确实很难。您可能需要读研,需要自己用 C++ 或 Matlab 编写大量底层算法。我也走过那条路。如今不一样了。您只需要 Python,这要容易得多,而且还有像 Keras 这样高级且易用的工具。此外,网上有大量高质量学习资源,您还可以在 Kaggle 上针对真实问题进行实战。学习从未如此容易。
所以在这个时间点,您只需,比如说,拿起我的书,安装 Keras,做几个 Kaggle 挑战,几个月后,您就能在实际问题上相当熟练地使用机器学习和深度学习。
Keras 和您的新书如何契合上述理念?
最初发布 Keras 时,我并没有特别想要“普及”深度学习。但随着时间推移,我看到无数人通过 Keras 入门深度学习,并以我意想不到的方式将其用于解决各式各样的问题,这令我着迷。我意识到,深度学习可以以颠覆性的方式应用到远比硅谷人想象的更多领域。外面有太多人能在工作中受益于深度学习。因此,我越来越重视让尽可能多的人能够用上这些技术,这也成为 Keras 的首要设计目标。这是我们把 AI 的潜力充分落地的唯一途径——让它被广泛获取。
我的这本书是在同一方向上再迈一步:我试图让尽可能多的人顺利上手深度学习,以便他们能用它来解决自己熟悉、甚至是我都未曾想到存在的问题。仅提供易用工具还不够,也应提供学习材料,教会大家如何使用这些工具。
初学者最重要需要学什么?他们该如何学习?
最重要的或许是建立对深度学习“能做什么、不能做什么”的直觉。此外,还要把握一些关键的最佳实践,比如如何正确评估模型、如何对抗过拟合。这需要形式化的讲解与在真实问题上的大量实践相结合。
“人工智能”这个词会让许多人想到有感知的机器人。我们会看到类似“谷歌 AI 创造出比人类系统更先进的‘子’AI”的标题。我需要您的帮助来揭开 AI 的面纱。人工智能实际上能做什么?
这个领域的炒作确实很多。媒体对 AI 和深度学习的报道常常与现实严重脱节——无论是耸人听闻的恐怖故事,还是把 AI 描述成万事大吉的神话。
至于今天 AI 能做什么,这是个难题。我会说,AI 能做的事情大致有三类:
事实是,若将现有技术的潜力发挥到极致,您可以在许多重要任务上达到超越人类的表现,并在更多任务上取得不错的效果。但这只可能发生在非常狭窄的设定中。而且,也许有悖直觉的是,从在许多不同垂直任务上表现出色,到拥有哪怕是幼儿那样的通用智能与常识——更不用说其学习与适应能力——二者之间并不存在真正的路径。
尽管如此,在大量非常狭窄的任务上做到非常出色,对大多数行业来说已具变革性。因此,未来 20 年您可以期待 AI 带来巨大的经济推动。您可以把 AI 视为我们这个时代的蒸汽机——人类手中的强大工具,将在几十年内重塑经济版图。但看不到有感知机器人的踪影。
人工智能做不到什么?
在我们可能希望自动化的所有事项中,今天的 AI 只能处理很小的一部分。我们做不到的远多于做得到的。
总体而言,我们尤其不擅长:
我写过一篇名为 博客文章,题为The limitations of deep learning,讨论了这些及相关问题。
深度学习社区面临的主要挑战是什么?
对抗炒作、提升伦理意识、增强科学严谨性。
炒作:这在困扰我们的领域。一些人以荒谬的方式夸大近期进展,严重高估我们的现实能力,且常把“人类水平”描述为近在咫尺——事实并非如此。如果我们把期望值抬到天花板,随后却无法兑现,我们就是在让公众反感。此外,这在智识上并不诚实,也会毒害公共讨论。
伦理:如今大多数部署 AI 系统的人并非来自特别多元的背景,往往对其所构建系统的伦理影响与有害副作用浑然不觉。这是个大问题,因为这些人将对他人拥有越来越大的影响力。我们需要更多讨论这些议题,提高对 AI 潜在不道德应用的认识,无论是带偏见的预测模型影响人们生活,还是在非常值得商榷的情境中应用 AI,抑或用 AI 以危险的方式操纵我们的行为与观点。
科学:每天都有大量深度学习论文发表,其中多数并未产生真正有意义的新知识,因为它们没有遵循科学方法。它们以模糊的方式“评估”模型,或者在训练数据上测试已过拟合的模型(这在生成式模型和强化学习中尤为常见,这两者是深度学习研究增长最快的方向),挑拣结果、使用人为偏弱的基线、以导致针对特定任务过拟合的方式调整超参数、只在 MNIST 上评估模型,等等。深度学习是一个科学上的“灾区”。同行评审往往无法以有意义的方式解决这些问题,或许部分原因在于大多数审稿人进入该领域一般也不过一两年(因为该领域在指数级增长)。如果我们想更快取得进展,就需要在研究可复现性、基线、模型评估与统计显著性方面,为这个领域注入更高的严谨期待。遗憾的是,我们当前的激励机制与科学背道而驰——我们鼓励发论文,而不幸的是,如果您把研究说得玄之又玄、同时又让他人无法正确评估其意义,反而更容易发表。
在您看来,深度学习的未来是什么样的?
我其实写过一篇 博客文章。总的来说,我预计 AI 将日益把“直觉式”的模式识别模块与形式化推理模块融合。我也预计 AI 将演化为一种更接近自动化软件开发的形态,借鉴当今软件工程中的诸多模式与实践。
您不仅是一名开发者。在 keras 博客、随笔、书中以及推特上,您都在深入、积极地讨论深度学习、AI 与技术的一般伦理问题。您认为开发者是否有义务参与到对其工作相关的伦理考量中?
当然。我认为近年来整个技术领域在这方面都有所欠缺。比如看看 Facebook,或者大多数手机游戏。技术从来不是“中立”的——因为它强大,因为它影响我们的生活。您设计产品与技术的方式,会主动把价值观注入其中——无论您是否意识到。因此,最好有意识地去做。如果您构建一个社交媒体平台,并试图最大化“参与度”,那么,这就是一个充满伦理取向的决策,且影响深远。要么我们在乎,并把伦理作为我们构建的技术与权力结构的明确设计目标;要么我们就拱手让出自己的价值观。如果您身在科技行业,您不可能选择“置身事外”,那不过是自欺欺人。