无论是 Google 备受瞩目的 DeepMind AlphaGo 胜利,还是 Apple 将“使用深度神经网络技术”编织到 iOS 10 中,深度学习和人工智能如今都非常流行,有望将应用程序提升到与我们凡人互动的新高度。
为了更深入地探讨这个主题(是的,我就是故意的),我联系了专注于深度学习的公司 Skymind 的团队,他们是 Deep Learning For Java (DL4J) 的创建者,也是最近发布的 O'Reilly 书籍 Deep Learning: A Practitioner's Approach 的作者 Josh Patterson 和 Adam Gibson。Josh 和 Adam 在本次采访中为我们温和地介绍了这个主题,并深入了解了他们如何围绕深度学习构建基于开源的业务。
https://open-source.net.cn/sites/default/files/images/life/Interview%20bann…" title="" typeof="foaf:Image" width="520">
对于不熟悉的人来说,什么是深度学习 (DL),为什么我应该关注它?
Adam Gibson (AG): 深度学习只是神经网络的另一个术语,神经网络是一组已经存在了几十年的算法。长期以来,人们对它们持怀疑态度,但随着芯片变得越来越强大,以及我们收集了更多数据来训练它们,深度神经网络开始打破记录。我们在许多问题集上达到了专家级人类准确率,准确率高达 90% 以上,这比其他算法有了质的飞跃。因此,如果你的业务存在重要问题,你可能会为准确率的提高附加一个美元价值,如果你是一家大型企业,那么这个价值可能是巨大的。这是一个具有巨大利润影响的竞争优势。
Josh Patterson (JP):为了进一步说明 Adam 所说的,借助深度学习,我们正在从手动特征创建转向自动化特征学习。深度学习的诀窍在于识别输入数据类型,并将其与正确的深度网络架构相匹配,以实现强大的自动化特征学习。一个例子是 卷积神经网络 (CNN) 如何自动学习复杂图像数据中的特征,而从历史上看,这对于其他机器学习方法来说更加困难。
深度学习最适合解决哪些问题?Skymind 的典型用例是什么?
AG: 深度神经网络可以对数据进行分类、聚类和预测。你可以将它们应用于非结构化数据,如语音或图像,这正是你在新闻中看到的关于自动驾驶汽车、AlphaGo 和 Alexa 的应用。但它们对于结构化数据(如交易和网络活动)也非常有用,尤其是在你寻找随时间变化的模式时。这可以应用于欺诈检测、推荐系统、客户流失预测或市场预测。这就是深度学习的优势所在。因此,企业面临的许多古老而棘手的问题将通过应用深度学习而得到改变。
JP: 我看到的大多数用例是大数据浪潮中难题的混合,以及由于更准确的模型使其在生产中可行而在企业研究中出现的问题。大数据用例的一个例子是任何使用交易数据的用例,我们通常在 Hadoop 中看到这些数据。DL4J 在 Spark 上本地运行,因此它可以轻松安全地使用长短期记忆 (LSTM) 循环神经网络 为交易传感器数据构建模型。较新的用例包括使用 CNN 的高级图像建模,我们可以帮助企业分析场景中的物体,这在零售等领域具有应用。
向我们的听众介绍一下 Deep Learning 4 Java (DL4J)。它有哪些特性,与 TensorFlow 和/或其他值得注意的深度学习框架相比如何?
AG: 首先要注意的是,Deeplearning4j 背后有商业支持。其他框架没有公司签署服务级别协议来保证其性能。其余的只是库,如果你的关键任务应用程序崩溃了,那么,祝你好运。如果你使用 Deeplearning4j,Skymind 会为你提供一个电话号码。它是唯一一款以企业为中心设计的框架。
其次,Deeplearning4j 专注于 Java 和 Scala,并与 Java 虚拟机 (JVM) 栈(如 Hadoop、Spark、Akka 和 Kafka)集成。其他库要么是 Python,要么是 Lua,并且它们在没有大量定制的情况下无法很好地部署到生产环境。Deeplearning4j 捆绑在一个名为 Skymind Intelligence Layer 或 SKIL 的企业发行版中。SKIL 已 Docker 化,并在数据中心操作系统 (DCOS) 和 Mesos 之上运行。因此,它是平台无关的,并带有资源管理。这很独特。许多云供应商正在设计非平台中立的库,因此你将面临锁定和切换成本。SKIL 包括一种微服务部署方法,你可以弹性地自动扩展我们的推理模型以处理高流量。
最后,Deeplearning4j 包括深度强化学习以及神经网络。这就是今年击败围棋冠军的那种目标导向算法。
JP: 财富 500 强在深度学习方面需要的是一种普及深度学习能力的方式,并以他们看待 Facebook 和 Google 等公司使用它的方式来使用它。我们在 Hadoop 和大数据方面看到了这一点,财富 500 强希望使用与 Yahoo 类似的科技,但他们需要一个版本,该版本符合他们运行数据中心的方式。这催生了 Hadoop 发行版,如 Cloudera Distribution Including Apache Hadoop (CDH) 和 Hortonworks Data Platform (HDP)。以类似的方式,我们看到 DL4J 扮演着这个角色,并且 IT 部门可以轻松安全地运行它,同时仍然能够在他们已经进行的 Hadoop 投资之上,使用 Spark 和图形处理器 (GPU) 构建高级模型。
我需要什么样的背景才能从事深度学习工作?我该如何入门?我应该先学习非深度学习的机器学习吗?
AG: 我们看到构建机器学习解决方案所需的技能发生了转变。传统的算法,如随机森林或梯度提升机 (GBM),可能需要大量的特征工程。也就是说,你需要领域专家特征工程师来告诉算法要寻找什么。这些工程师的数量不足,因此这是使机器学习更普及的真正瓶颈。此外,学习如何在不再是最先进的算法上进行特征工程也没有多大意义。
深度学习是不同的,因为神经网络自动提取特征;你无需告诉它们要寻找什么。现在必要的技能包括调整这些网络的超参数。有很多最佳实践。我们通过这本书和我们的研讨会教人们如何做到这一点,许多人通过加入我们的开源社区来学习。
JP: 深度学习需要对统计学和线性代数的基础知识进行一些投入。然而,通过扎实的技能提升,让一个只是感兴趣的人入门成为基本的从业者是可能的。在某种程度上,Adam 和我与 O'Reilly 合著了一本书,《深度学习:实战方法》,专门为任何想要开始这段旅程的人而设计。
为了满足对更先进和智能的应用程序的巨大市场需求,我们需要进一步普及深度学习的概念。我们认为这本书对于从业者来说是一个坚实的选择,可以逐步学习以熟悉深度学习中的概念。
我可以从你的书中学习到什么?你的目标受众是谁?
AG: 一方面,我们的目标受众包括刚开始接触深度学习的人:他们可能是数据工程师和架构师、Java 系统工程师或想要掌握机制并了解它可以应用于什么的商务人士。另一方面,我们编写了一本书,将教深度学习专家如何通过使用 JVM 工具扩展神经网络来部署到生产环境。他们也可能会学到一些其他技巧。
机器学习和深度学习应用的市场在某些方面类似于 20 世纪 90 年代 HTML 和 Web 如何扩展到几乎所有领域。本书旨在适用于所有级别,从具有基本 Java 经验的人到只需要一套关于神经网络调优技巧的章节的博士研究员。较新的用户将希望从第 1 章开始,从头到尾阅读本书,而高级用户可能只想查看两个调优章节。神经网络和深度网络调优不限于 DL4J,这些章节适用于任何深度学习框架。我们还花时间讨论提取、转换、加载 (ETL) 和向量化技术,这些技术在真实世界机器学习建模的实际工作流程中非常重要。我们以关于 Spark 的一章结束本书,并展示 DL4J 的代码如何在几乎没有更改的情况下转移到 Spark,然后查看一些示例。有超过 10 个附录章节,主题从“什么是人工智能?”到强化学习入门。
Skymind 是如何起步的,以及它如何处理基于像 DL4J 这样的开源项目开展业务?
AG: Skymind 于 2014 年初起步。我的联合创始人 Chris 和我认为,企业需要一个开源人工智能 (AI) 层,就像它拥有用于大数据存储的 Hadoop 开源层或用于操作系统的 Linux 一样。看起来 AI 层有可能创造比这些更大的价值。Josh 帮助我们看到了这一点。因此,我们与他一起创建了 Deeplearning4j,从那时起,它已成为 JVM 最大的深度学习框架。我们遵循典型的开源核心策略:Skymind 为我们的企业发行版 Skymind Intelligence Layer 提供支持、培训和服务。每个开源业务都在某个地方划出一条界限,SKIL 也捆绑了几个闭源软件包。我们帮助大公司使用易于部署到他们拥有的堆栈的发行版构建深度学习解决方案。而且由于它是 Java,他们可以利用他们现有的团队来使用它。
JP: 我想我们已经在当今机器学习领域流行的东西与财富 500 强 IT 部门在生产环境中运行合理的东西之间找到了一个有趣的平衡点。
我听说深度学习需要非常高端的硬件和大量的 GPU,典型的部署是什么样的?
AG: 我们有只有中央处理器 (CPU) 的客户,也有拥有 GPU 的客户。GPU 对于图像处理非常有用,更普遍地用于深度学习的训练阶段。对于神经网络,首先你训练它们,然后你使用它们来对数据进行推理。训练阶段是计算密集型的,因此如果你想快速获得训练好的模型,你应该考虑 GPU。推理阶段可以使用 CPU 完成。你可以在两个阶段都使用这两种芯片,但对于大型数据集的训练,多 GPU 配置非常方便。
JP: 我觉得我们是一家使 GPU 成为数据仓库的实用选择的商店。Adam 在 ND4J 方面做得非常出色,使得从 CPU 到 GPU 的切换非常简单无缝,用户不必等到以后才做出这些芯片决策。借助 ND4J,芯片决策随后成为“更快地训练是否使这成为更好的商业案例?”的函数,当答案为“是”时,它为我们的 GPU 供应商朋友创造了一个有趣的机会。
机器学习通常需要大量的幕后“人工循环”工作,包括清洗和标注数据、调整参数和验证结果。将基于深度学习的解决方案投入生产的典型工作流程是什么样的?
AG: 没错。你需要收集相关数据,使其可访问,并确保它足够干净,可以教算法一些东西。深度神经网络可以容忍非常大的数据集中的大量噪声,因此清洗不像在较小的数据集中那样重要。如果你要构建分类器,则需要标注数据,而人们使用 Mechanical Turk 或 CrowdAI 等初创公司来解决这个问题。我们实际上制作了一张使用猫的典型 数据工作流程 的图片,这有点有趣。一旦你有了数据,你就可以进入神经网络的调优和训练阶段。这是迭代的。你调整超参数并设置架构,然后查看网络是否学习。反复进行。这就是为什么 GPU 在训练阶段很有用的原因,因为你希望快速迭代,而不是坐在那里无所事事。最后,你用从未见过的数据测试你的模型,如果它通过了该测试,你就可以在现实世界中试用它。
JP: 从实际环境来看,我们知道 ETL 和向量化对于大多数财富 500 强机器学习团队来说都很困难。考虑到这一点,我们都在书中专门用了一章,并在 DL4J 套件 DataVec 中构建了一个特定工具来处理这些功能。DataVec 允许我们从原始数据创建复杂的、多维的向量和张量输入到 DL4J。它还允许在向量化的准备和清理阶段执行许多常见的 ETL 功能。DataVec 可以在你的本地笔记本电脑上运行,也可以作为 Hadoop 集群上的 Spark 应用程序本地运行。我们在 GitHub 仓库和书中的所有示例都使用 DataVec 作为首选的向量化工具。
现在这个领域有很多炒作。作为企业,你如何利用这种炒作,而不会徒劳无功或失去对现实的关注?
AG: 来自在这个领域并不真正认真的公司的炒作和噪音很多。每个初创公司都知道,通过说他们做人工智能,他们可以将自己的估值提高 20%,而实际上这只是逻辑回归。我担心解决方案提供商会通过过度承诺和交付不足来破坏信任。早期在人工智能方面遇到挫折的企业在一段时间内不会回来,这会伤害所有人。他们应该做功课并获取参考。我们在深度学习方面取得的进展是真实的,它们将在未来几年以我们甚至无法预料的方式改变社会和商业。人们阅读得越多,他们就越会看到只有少数公司和初创公司将人工智能作为自己的使命。我们是一家纯粹的深度学习初创公司。我们已经在这个领域工作多年,拥有数万用户。我们专注于为我们的用户和客户提供良好的体验,通过支持和更好的产品帮助他们成功。我们倾听他们并解决他们面临的问题。最终,其他人会注意到我们已经解决了他们遇到的重大问题,例如使用 Spark 进行分布式训练、为 JVM 带来硬件加速、为 JVM 构建 Numpy 和 Cython 以及使生产部署变得容易。这就是关键时刻。
JP: 我经历了智能电网、云计算、大数据以及现在的深度学习的浪潮。这些浪潮很像海洋潮汐,它们涌入,每个人都沉浸在营销主题中,然后潮水退去,许多基础不牢固的东西被冲走。正是在高潮中保持冷静并找到稳固立足点的人才能在潮水退去时维持自身。
在 Skymind,我们以客户和合作伙伴为中心,专注于他们今天面临的实际问题。我们努力避免被任何可能在未来 12 个月内无法投入生产的东西所吸引,或者仅仅用于新闻稿。我们可能并不总是有上个月才发布的新网络架构变体,但我们将成为最安全、互操作性最强、最易于使用且最适合财富 500 强的企业深度学习平台。
我们正在积极寻找方法来帮助财富 500 强企业实现他们在大数据基础设施(例如,我们早期与 Hadoop 和 Spark 的集成)投资上的回报。从我们的概念验证过程到我们的 GitHub 仓库再到本书,一切都以这种心态和方向为重点。
你什么时候为我构建一个有感知能力的机器人来为我写这个专栏?
AG: 我不是告诉过你我雇佣了一个机器人来回答这些问题吗?现代科技真是神奇。
JP: 嗯,我们基于 LSTM 的机器人还不会写专栏,但我们确实有一个写啤酒评论的机器人,Lager Bot。
1 条评论