原文:Domino Blog
Voicebox 的众包语言理解
原文:https://www.dominodatalab.com/blog/data-science-at-voicebox
我们最近采访了 Voicebox 的数据科学和众包总监 Daniela Braga 博士。
丹妮拉,谢谢你的面试。让我们从谈论你的背景开始我们在一起的时间。
我的背景是言语科学。我在这个地区工作了十五年。我在葡萄牙和西班牙的学术界呆了六年。在过去的九年里,我一直在这个行业工作,包括在葡萄牙、北京和华盛顿州雷德蒙的微软演讲小组工作了七年。最近,我一直专注于数据科学,在微软集团和最近的 Voicebox Technologies 将众包引入了演讲。这些努力为两家公司节省了近 50%-80%的成本。我一直致力于在数据驱动的技术世界中构建高质量的控制工作流程和可扩展的吞吐量,这需要无止境的数据供应。
你是如何对语音识别感兴趣的,更具体地说,是对自然语言理解感兴趣的?
这是一个有趣的故事,因为它是偶然发生的。当我获得语言学学士学位后,我在葡萄牙的大学里看到了一份招聘启事。Porto 的工程学院正在寻找一位语言学家来帮助他们开发欧洲葡萄牙语的首个文本到语音和自动语音识别系统。这发生在 2000 年 7 月中旬。求职截止日期已过,大学里空无一人。我的一个朋友鼓励我无论如何都要打这个号码,当场就打。我以为这毫无意义,但我做到了。一个低沉的男声拿起电话,原来还没人申请。所以我得到了这份工作。我采访了波尔图大学语音实验室的负责人,他告诉我,“在这个新领域(语音技术),聘请语言学家与工程师合作已经成为一种新趋势。整个欧洲都在发生。我们还不知道语言学家如何以及为什么有用,但如果你能帮助我们搞清楚,你就有这份工作。”我在这里,仍然在语音技术领域工作。我想我找到了答案。
你有非常丰富的学术和专业背景,能分享一些职业亮点吗?
让我看看。我相信第一个是我博士论文的主题。这是在数据驱动技术完全成为语音科学主流之前。即使在今天,文本到语音(TTS)技术也有许多基于规则的技术。我是第一个为文本到语音转换开发完全基于规则的前端的人,并成功地将其应用于欧洲葡萄牙语、巴西葡萄牙语和加利西亚语,加利西亚语是西班牙使用的一种语言,与葡萄牙语有着共同的过去。这是非常独特的,考虑到在那之前,已经用数据驱动技术进行了几次尝试,但没有一次取得相同的结果。
第二个是能够说服微软的语音团队来处理 TTS 系统的开发和葡萄牙大部分欧洲语言的重要语言组件。在两年内,我的团队能够向他们发布 Project Exchange 14(包含 26 种语言)。
最新的亮点是能够说服 Voicebox Technologies,与机器学习相关的众包是扩大语音技术产品规模的最佳方式,可以更快、更具成本效益地覆盖全球,同时保持质量。
你在 Voicebox 做什么工作?
我已经重组了 Voicebox 的数据团队。我刚来的时候,这家公司曾经依赖客户提供数据。我改变了公司在数据方面的能力,使我们能够通过网络服务和 API 向客户公开数据服务,以及我们的对话理解产品。在过去的两年里,我一直在发展一个由 15 人组成的团队,服务于公司对多语言数据收集、数据清理/处理/标记、机器学习、数据评估、摄取、存储、数据库、安全、报告和分析的需求。
你发现的最令人惊讶的见解或发展是什么?
出于基于规则的思维模式(因为我的语言学背景),我目睹的最令人惊讶的发展是语音技术的科学范式从基于规则到数据驱动技术的转变。现在这说得通了,但它并不总是显而易见的。我很快适应了从基于规则到众包的转变,这一切都是为了服务于数据驱动技术日益增长的需求。
数据科学和语音识别的未来会是什么样子?众包如何融入这一切?
它不再仅仅是语音识别;是语言理解。语音识别在语音层面处理命令和控制,而语言理解解释用户的意图,并以有意义的结果做出响应。语音技术需要大量的数据。虽然我们可以说自然语言理解在美国英语中相对成熟,但对于世界上其余的 7000 种口语来说,情况并非如此。
众包为语音技术使用的机器学习技术带来了必要的人类判断
国际上对支持语音的技术的市场需求正在增长。当前的数据驱动技术需要大量的数据来训练和测试语音识别和自然语言理解模块。数据永远不会完整,因为它需要持续更新的企业、兴趣点、名人、书籍和音乐发行等列表。众包为语音技术使用的机器学习技术带来了必要的人类判断。例如,为了训练一个声学模型(这是一个语音识别组件),您需要至少 1000 个扬声器,每个扬声器讲一个小时。这些发言者需要在性别、年龄和地区方面保持平衡。你可以训练一个系统来识别不同的方言和社会学家。这就是众包的用武之地,在这种类型的变化中,仍然没有办法取代人类。
今年你在做什么个人/专业项目,为什么/如何让你感兴趣?
自动化我们的众包工作流程,通过报告和分析功能以及数据可发现性创建数据可视化。这是一项新的服务,允许内部和外部客户浏览和查询我们所有不同的数据库和数据类型,从声音到文本数据。
哪些出版物、网站、博客、会议和/或书籍对你的工作有帮助?
我关注并参加传统的语音技术活动,在这些活动中,您可以看到该领域的最新和最大的发展(如 Interspeech、ICASSP、ACL、LREC 等会议)。我阅读了谷歌研究博客(T0)和微软研究博客(T1),Crowdsourcing.org 新闻,以及《企业家》、《商业内幕》和 TechCrunch 等出版物。我也一直在关注数据科学领域正在发生的事情,但我的注意力仍然非常分散。
你发现了哪些最有帮助的机器学习方法?你认为最有帮助的是什么?你最喜欢使用的工具/应用程序是什么?
目前,深度神经网络是语音技术的 ML 技术的圣杯。如果你将 DNNs 应用于你的主题,你可以在任何地方得到一篇被接受的论文。在我们的领域中,Word2vec 和其他技术也显示出非常有趣。
对数据科学/机器学习的学生或从业者有什么忠告吗?
在大数据世界中,开源数据正变得越来越流行,构建机器学习包并将其作为服务提供似乎是将你的技能集货币化的最佳方式之一。
丹妮拉,非常感谢你抽出时间!我们很高兴了解你和你在 Voicebox 所做的革命性工作。
在 Linkedin 上关注丹妮拉,并访问【语音信箱】(丹妮拉·布拉加语音信箱)。
AWS 上的数据科学:优势和常见陷阱
两年多前,我们写了许多企业对云的错误恐惧。事情变化得多快啊!如今,我们合作的每一家企业要么是在使用云技术的 T2,要么正在迁移到那里。我们与一些公司合作,这些公司仅在两年前还坚持认为他们“不能使用云”,现在正在采取战略举措,“到 2017 年底在 AWS 中开展实际工作。”我们看到这种情况发生在各个行业,包括金融、保险、制药、零售,甚至政府。
AWS 对于数据科学工作负载尤其具有吸引力,这些工作负载受益于针对计算密集型实验的弹性计算的爆发,并且通常受益于 GPU 等专用硬件。例如,对冲基金和银行公司可以通过在机器上分散工作来更快地回溯测试投资策略。制药研究团队可以运行更快的蒙特卡罗模拟来加速药物设计。试验驾驶员遥测模型或图像识别的保险公司可以更容易地从深度学习技术中受益。
为了实现云在数据科学方面的全部潜力,组织必须解决一系列外围用例,而不仅仅是提供对基础架构的访问。因为我们从第一天起就用一流的 AWS 集成构建了 Domino ,它为云中的数据科学工作流提供了一个集成的、完整的解决方案。下面,我们介绍了过去两年观察数据科学团队向云迁移时遇到的一些常见问题和陷阱。
DevOps 自动化
您不希望您的数据科学家在开发运维任务上花费时间,比如创建 ami、定义安全组和创建 EC2 实例。数据科学工作负载受益于 Jupyter 或 RStudio 等工具中用于探索性分析的大型机器,以及支持团队突发需求的弹性可扩展性,或数据科学实验的并行执行,这些实验通常是计算密集型的。
成本控制、资源监控和报告
数据科学工作负载通常受益于价格昂贵的高端硬件。当数据科学家能够更多地访问可扩展计算时,您如何降低成本失控的风险、强制实施限制以及在多个小组或团队之间进行分配?
环境管理
数据科学家需要敏捷性来试验新的开源工具和软件包,这些工具和软件包的发展速度比以往任何时候都快。系统管理员必须确保环境的稳定性和安全性。如何在紧张中平衡这两点?
绘图处理器
神经网络和其他有效的数据科学技术受益于 GPU 加速,但配置和利用 GPU 仍然是说起来容易做起来难。如何为您的数据科学家提供对 GPU 的高效访问,而不使他们陷入 DevOps 配置任务中?
安全性
AWS 在其环境中提供了世界一流的安全性,但是您仍然必须选择如何为运行在 AWS 上的应用程序配置安全性。当您的数据科学家转移可能代表您最有价值的知识产权的逻辑(源代码)和数据集时,这些选择可以在降低风险方面发挥重要作用。
了解更多信息
Domino 本机运行在 AWS 中,可以安装在您的 VPC 中,或者在我们的托管环境中使用。包括孟山都、Mashable、Eventbrite、DBRS 在内的公司,以及对冲基金、银行和保险公司都在 AWS 中使用 Domino 作为其数据科学家的力量倍增器。如果你想学习如何操作,请告诉我们。
银行业中的数据科学:过去、现在和未来
这是德克萨斯州奥斯汀数据科学论坛上众多精彩会议之一。不要错过 2016 年 9 月 14 日在洛杉矶数据科学弹出式窗口向世界领先的数据科学家学习的下一次机会。查看演讲者阵容并立即获取门票。
利用 Docker 实现数据科学敏捷性
这篇文章描述了 Domino 如何使用 Docker 为数据科学家和研究人员解决许多相互关联的问题,这些问题与环境敏捷性和工作的可重复性有关。
背景
在 Domino,我们非常依赖 Docker。但是,虽然大多数关于 Docker 的讨论都集中在工程师如何使用 Docker 来发布他们的软件,但我们在我们的产品本身中使用 Docker,以允许数据科学家轻松控制什么样的环境(包、库等)。)工作时使用。换句话说,我们将 Docker 公开为一个面向用户的特性(除了在内部将其用作 DevOps 工具之外)。
对于那些不熟悉 Domino 的人来说,快速了解一下背景:这是一个平台,数据科学家在这里运行他们的代码(例如 R、Python 等),跟踪他们的实验,分享他们的工作并部署模型。集中式基础架构和知识管理使数据科学家更具生产力,并支持更具可重复性的协作式数据科学。
环境管理问题
研究人员和数据科学家的一个共同难题是“环境管理”我用这个术语来描述与安装软件和软件包、配置设置、个人或团队进行分析工作相关的一系列问题。我们最常看到的一些问题是:
- 研究人员在安装新的软件包时经常受到中央 IT 资源的限制。如果这个过程太慢或太费时,组织就不能停留在现代技术和工具的前沿。开源生态系统比以往任何时候都发展迅速,组织需要测试和采用新技术和方法的灵活性。
- 撇开新的包不谈,缓慢或官僚的过程会延迟对标准工具和包(新版本的 R、Python 等)的更新,导致关键组件过时多年。
- 对于不同的人,代码的工作方式是不同的(或者有时根本不起作用),因为他们的环境是不同的(例如,不同版本的包)。
- 新员工或团队成员难以入职,因为设置他们的环境需要很长时间。
- 旧的项目变得不可用,旧的结果变得不可能重现,因为自代码编写以来,环境已经发生了变化。
- 升级(例如,更改 R 或 Python 的底层版本,或者升级特定的包)是有风险的,因为很难知道什么会停止工作。
通常,公司在环境管理方面遵循两种途径之一。其中的每一个都解决了上面的一些问题,但是加剧了其他问题:
- 公司让用户控制他们自己的环境。这给用户带来了灵活性和敏捷性,但不可避免地会导致不一致的环境。通常,这意味着工作被孤立在研究人员的机器上,使得共享和协作更加困难,也限制了用户的计算资源。
- 公司锁定中央环境,例如大型共享“研究服务器”。它控制这些机器。用户可以访问一致的环境,但是这些环境很难改变。
基于 Docker 构建的计算环境
Domino 定义了计算环境的一级概念:一个包含一组软件和配置文件的环境,当分析代码运行时,这些文件应该在适当的位置。这是强大的,原因有几个:
- 环境附加到您的代码所在的项目。因此,如果有人在 12 个月后重访一个项目,或者一个新员工加入一个项目,您可以确保代码将按预期工作,不管您的计算机上安装了什么。
- 研究人员可以改变环境,升级或安装新的图书馆,而不需要通过它,关键是,不影响任何其他人的环境。
- 与研究人员操纵他们自己的机器的设计不同,Domino 的环境是集中存储和管理的。研究人员可以很容易地共享环境,并且环境可以一次为每个人升级。
实际上,计算环境是基于 Docker 映像构建的。当研究人员运行代码时,他们的代码是在一个从该图像开始的容器中运行的。
使用 Docker 是特别强大的,因为它让我们保存图像的过去版本,这样我们就可以记录用于生成任何过去结果的确切环境。
新功能
让我们来看看这种设计支持的一些工作流。
使用不同版本的常用工具
假设您的一些用户使用 Python 3,一些用户使用 Python 2。或者有些使用标准 R 分布,有些使用 R 的 Revolution Analytics 分布。您可以为每种配置创建环境,数据科学家可以选择他们工作时想要使用的环境:
创建尽可能多的环境,并管理它们的共享和许可方式,以便在您的组织内创建各种标准环境选择。
升级重要的库
在幕后,Domino 允许您通过运行 Docker 命令来指定环境的内容。要了解这一点,假设默认环境是 R 3.2,而您想升级 R 3.3。因为我们很谨慎,假设我们想在我们自己的项目中测试这种变化,以验证它在向所有人推广之前是否正常工作。
我们可以复制“默认”环境,并在其上添加我们想要运行的任何 Docker 命令。
现在,我们只需更改我们的项目以使用这个新环境,并重新运行我们的代码。
我有一个过去运行过的回归测试脚本,“test。r”。一旦我更改并选择了新环境,我就可以重新运行该脚本。至关重要的是,我可以重新运行上次运行的确切版本,因此我可以肯定,我在结果中看到的任何差异都将完全是由于 R 升级,而不是我的代码中的更改。
我们甚至可以比较在一个环境和另一个环境中运行的结果,以确保没有任何变化。
要深入了解如何比较 Domino 中不同实验的结果,请查看我们过去关于数据科学的“单元测试”和模型调优和实验的帖子。
复制过去的作品
除了给数据科学家带来更多的灵活性,Domino 为代码的每次执行保留了一个不可变的记录,包括它在哪个环境中运行的信息。因此,对于任何过去的结果,很容易找到并恢复用于重现任何过去结果的确切软件集。
我们可以更进一步。除了在改变环境后比较实验结果之外,还可以配置 Domino 在运行代码时保存环境状态的文本快照。这让您可以使用我们的区分功能来检查在同一个实验的两次不同运行之间哪些包或软件可能发生了变化。
在这个例子中,我们有一个在不同时间运行的 python 脚本,我们感兴趣的是识别底层环境中的任何变化。比较也能告诉我们这一点。
结论
Docker 是一项非常强大的技术。除了为 DevOps 团队启用新的工作流之外,它还可以优雅地解决数据科学家日常面临的许多问题。以 Docker 为基础,Domino 的“计算环境”功能使研究人员能够灵活地轻松试验新的包,而不会破坏同事环境的稳定性。与此同时,计算环境使研究人员能够重现结果,并审核已安装软件和软件包的变更。
企业中的数据科学:来自易贝、Stitch Fix、Teleon Health 和 RISELab 的见解
原文:https://www.dominodatalab.com/blog/data-science-enterprise
最近,我们与几位数据科学领导者就企业数据科学的组织设计和工具举行了一次小组讨论。观看完整视频:
面向鸟类(和所有人)的数据科学
原文:https://www.dominodatalab.com/blog/data-science-for-the-birds-and-everyone
奥杜邦的数据科学工作是如何产生影响的
编者按:这是一系列文章的一部分,分享公司在成为模型驱动的道路上的最佳实践。一些文章将包含关于他们使用 Domino 的信息。
我是一名训练有素的科学家。我有生态学博士,保护生物学硕士,生物学本科。今天,我是一个已经有 100 多年历史的非营利组织的临时首席科学家:国家奥杜邦协会。
你可能听说过我们。我们关注整个美洲的鸟类保护。为什么是鸟?生态学家早就观察到,鸟类繁衍的地方,人类也繁衍生息。因此,如果我们能保护鸟类,我们就能更好地保护地球。
在过去的六年里,我们的数据科学实践显著增长。我们希望了解气候变化对鸟类数量的影响,并为我们的保护和宣传工作提供信息。像大多数组织一样,我们经历了通过使用移动电话和网络服务捕获的数据量的急剧增加。这些技术扩展了我们所谓的“社区科学”,志愿者可以分享观察和其他相关数据。我们构建了 180,000 个模型,分析了来自科学家和社区成员的超过 1.4 亿次观察,并预测了不同变暖情景对 604 种鸟类的影响。然后我们建立了鸟类和气候可视化工具,这是一个基于邮政编码的在线工具,任何人都可以看到气候变化对他们社区的影响。
从表面上看,在 Audubon 建立一个数据科学团队似乎与在盈利世界建立一个团队不同。许多人可能认为在这里扩展数据科学会很容易,因为毕竟我们的组织是建立在科学和数据之上的。但在现实中,我们面临着许多相同的文化和组织挑战,各行各业的公司在跨组织扩展工作时都会面临这些挑战。奥杜邦有“业务单元”,专注于不同的优先事项,如海岸、耕地或气候。此外,还有州政府的实地办公室,致力于解决更多的地方性保护问题。正如我提到的,我们是一个有 100 多年历史的科学组织。已经有很多伟大的量化工作在进行。我们必须展示机器学习模型将如何为我们已经在做的事情增加价值。此外,我们不得不从一个孤立运作的科学团队转变为一个与业务部门整合以解决其问题的团队。
为了打破孤岛、简化流程和留住人才,我们的科学团队像数据科学卓越中心(CoE)一样运营。在这篇博客中,我将讨论我们建立一个强大的科学团队的旅程,以及我们采取的步骤,以确保我们拥有正确的技能、流程和技术,将模型驱动的方法纳入鸟类保护工作。
我们从哪里开始?
在最近的数据科学弹出窗口中,Domino 首席数据科学家 Josh Poduska 和来自 Slalom Consulting 的代表讨论了定义 CoE 的能力。我们的科学团队今天解决了他们描述的许多相同的元素。
我们正处于工作的中游,但我们的努力已经在产出和最终用户采用方面产生了重大影响。
以下是我们创建科学团队时采取的五个步骤,旨在建立一个功能卓越的中心:
- **围绕我们的“客户”**调整我们的工作,使所有数据科学工作与组织目标保持一致。我们花了大量时间会见奥杜邦保护战略的领导者,讨论每个小组的优先事项,并展示了与我们工作的明确联系。这是关键的第一步,涉及大量的文化变革和交流。我们建立的牢固关系和取得的成功带来了更多的机会。例如,我们为我们的一个州办公室开发了一个模型,这是第一个州办公室的数据科学项目。项目成功的消息不胫而走,其他国家领导人希望与我们合作的机会开始像滚雪球一样越来越多。
- **阐明了我们可以提供的能力。**我们还确定了哪些类型的数据科学将为组织提供最大的价值。因此,我们现在关注三个关键领域:
-
预测模型帮助团队确定可能影响鸟类的问题或威胁,预测未来的挑战,并确定成功缓解这些威胁的政策。
-
显示鸟类数量下降和增加的趋势,以便团队可以衡量他们的计划是否成功。
-
跨数据进行空间优化,帮助我们的组织找到开展保护工作的最佳地点。
-
**制定核心价值观指导人才管理。我们的数据科学团队已经从 2 人发展到 16 人。为了帮助吸引和留住顶尖人才,并确保我们在扩大工作规模时拥有技能,我们制定了核心价值观来指导我们的团队。当然,我们寻找强大的数据科学技能来创造出版质量的科学。但除此之外,我们的价值观强调软技能,如谦逊、同理心和耐心,这对于赢得最终用户对我们工作的认可至关重要。我们还在我们的核心价值观中加入了成长思维,以确保作为一个团队,我们不断学习和应用新技能。拥有增长思维有助于我们进行更多创新,并提高我们的数据科学家的工作满意度。我们有很高的保留率,我相信给人们一个在他们的岗位上学习和成长的机会是关键。 投资技术基础设施、工具和数据合作伙伴关系,促进大规模数据科学。例如,我们评估了不同的数据集,这些数据集将有助于确定对保护最重要的地方。我们现在从一些收集观鸟信息的组织中获取数据,比如 eBird、iNaturalist 和 Movebank。我们仍然有数据缺陷,但我们有程序来帮助我们确定新的数据源来填补空白。我们还希望确保我们的数据科学团队尽可能高效。这将我们带到了 Domino 数据科学平台,它允许我们更快地协作、迭代和探索不同的参数设置。我们为 604 种物种中的每一种建立了 160 个机器学习模型,覆盖了两个不同的季节——冬季和夏季——在短短几个月内总共超过 18 万个模型。能够复制和利用结果对我们的产出产生了相当大的影响。最近,我们开始重新评估我们的技术基础设施。我们有很多 CSV 文件的数据和各种操作系统。数据仓库将允许我们更有效地向最终用户部署数据服务。 **确定成功指标以显示我们的影响力。**在营利性组织中,Coe 通常会确定成本节约或收入增长的关键绩效指标(KPI ),以衡量其数据科学工作的成功与否。在这里,我们做同样的事情,但是我们谈论的不是成本和收入,而是栖息地。具体来说,我们保护了多少栖息地,拯救了多少鸟类?
数据告诉我们什么?
今天,气候变化是鸟类数量的最大威胁。通过我们的工作,我们已经能够展示在不同的变暖情景下,鸟类的活动范围会发生怎样的变化。如果一个物种现有的范围不再适合居住,它会扩展到一个新的区域吗?或者,它们会面临灭绝吗?最脆弱的物种是那些面临其现有分布范围严重丧失的物种,它们不太可能迁移到新的区域。预后不佳。根据我们关于鸟类和气候变化的最新报道,,如果气温上升 3 摄氏度,将近三分之二的北美鸟类将面临灭绝的危险。但随着我们近年来获得的深刻见解,我们现在也可以看到潜在政策变化的影响:立即采取积极行动,将全球气温上升控制在 1.5 摄氏度以内,可以提高 76%的濒危物种的机会。我们的数据科学工作将继续为这一对话提供有价值的见解,并帮助动员我们近 100 万会员和支持者采取行动。随着我们在 CoE 模式下建立我们的科学团队,我们相信我们作为一个组织的影响力将会增长。
欲了解更多信息
- 国家奥杜邦学会案例研究
- 新闻稿:新奥杜邦科学:由于气候变化,三分之二的北美鸟类濒临灭绝
- 鸟类和气候可视化器
- 奥杜邦杂志的气候问题
感官中的数据科学
原文:https://www.dominodatalab.com/blog/data-science-in-the-senses
By Paco Nathan, Managing Partner, Derwen, Inc. on May 10, 2019 in
本博客最初发布于 KDnuggets 这里。
今年 Rev 大会的晚间活动将是意义上的数据科学。那是在纽约,5 月 23 日星期四。
今天就注册 Rev 并使用此代码获得折扣: PACORev25 —参见本文末尾了解更多关于会议的详细信息。
感官中的数据科学活动将展示目前在人工智能艺术领域掀起波澜的惊人项目——博特尼克、福克·RNN、本·斯内尔、乔希·厄本·戴维斯等——利用数据和机器学习实现感官体验的项目。下面先睹为快:
Botnik 是一个由作家、艺术家和软件开发人员组成的社区,他们使用机器来创造有趣的东西。例如,在网上查看他们的画廊,比如由一个经过 70,000 多首现有乡村歌曲训练的模型生成的新鼻音曲调。或者深度学习生成的言情小说已经在超过 20,000 个丑角言情标题上进行了训练。谁能否认这样不可抗拒的罪恶快感,如助产士牧牛人或医生丈夫的男人,出于艾的礼貌?或者(我最喜欢的)这个超级有用的整理,把玛丽·近藤所有杂乱的剧集整理成一个浓缩的剧本:
现在,这无疑点燃了欢乐的火花。他们的作品是大数据、一些文本分析、概率和大量讽刺的结果,Botnik 将其作为现场表演,有时甚至是卡拉 ok 式的人工智能增强滑稽动作。在我们的感官中的数据科学活动中,他们将发表演讲来解释魔法并现场表演!
民谣 RNN ,总部位于伦敦金斯敦大学,利用深度学习从乐谱中学习凯尔特民谣音乐,然后生成新的乐谱供人演奏。查看他们的开源 GitHub repo 。O’Reilly AI London 2018 大会在圣詹姆斯苏塞克斯花园举行的激动人心的 AI 音乐:音乐制作的深度学习活动中展示了民谣 RNN。在感官数据科学上,民谣 RNN 将放映一段介绍他们作品的短片,此外他们还为活动的 DJ 提供了一份播放列表。他们还会有一个带耳机和显示器的展台来演示 https://folkrnn.org/软件,Rev 的与会者可以在那里创作他们自己的歌曲。
有传言说,博特尼克和民间 RNN 一直在合作的基础上介绍了通过 Rev 会议。一个用 AI 生成新的乐谱,另一个写歌词。我们渴望看到接下来会发生什么!
本·斯内尔 ,住在纽约,是一位研究计算的物质性和生态的人工智能艺术家。举一个有趣的例子,本训练他的电脑成为一名雕塑家:花几个月的时间筛选博物馆藏品,广泛研究大师作品,磨练技术,试图根据记忆重现它曾见过的每一件古典雕塑。机器学习应用程序被亲切地命名为 Dio(以希腊神狄俄尼索斯的名字命名),它已经将其研究转化为组件的视觉词汇,并从中构建更复杂的形状和表情。作为所有这些工作之后的顶点项目,本向迪奥提出了一个简单的挑战:“闭上你的眼睛,然后梦见一种新的形式,一些以前从未存在过的东西。”
“计算机无形处理能力的痕迹存在于它的身体形态和包含其思想和记忆的物质碎片中。”在我们的感官数据科学活动中,来看看 Ben 的展览,体验 Dio 的梦想成真的物质性,这是 AI 创作的第一批雕塑之一。
**
Josh 将介绍一个关于创建动画的简短演讲,并有一个以他的 GAN 生成的动画合成为特色的装置,在整个晚上循环播放。
声纹——上一次你在餐馆或酒吧时,你是否几乎听不到同桌其他人的声音?你一定要大喊大叫,只是为了互相交谈吗?是啊,我也是。我们都应该感谢臭名昭著的“顶级厨师”马雷欧·巴塔利在美国餐馆建立了震耳欲聋的趋势。
作为回应,SoundPrint 开始开发一款智能手机应用来测量和分析声音水平。他们建立了一个声纹“大使”网络(真的包括你的),悄悄收集世界各地餐馆、酒吧、咖啡馆和其他公共场所的分贝测量值——收集到一个声音估计的地理空间数据库中,“像 Yelp!,而是为了噪音。”他们的众包解决方案非常适合检查一个场所是否适合谈话,是否对听力健康安全,非常适合寻找一个更安静的地点进行约会或商务会议。
最近,SoundPrint 一直在扩展他们的数据库工作,以包括听力健康分析、办公室和医院环境分析,以确保符合噪音指南、预测评分、声学取证等。SoundPrint 将在 Data Science in the Senses 上展示,此外,他们还将为与会者提供一个展台,让他们了解如何使用该应用程序及其数据集。顺便说一句,SoundPrint 正在寻找数据科学团队的合作伙伴——那些对数据有兴趣的用例的人。在 Rev 抓住他们!
分析风味系统—美食图 AI 的制作者——利用机器学习为食品和饮料生产商创造服务,帮助他们为目标消费者人口统计数据建模、理解和优化风味/香气/质地。他们的创新量化了产品的风味特征及其原料成分。
在感官中的数据科学活动中,分析风味系统公司将设立一个展位,与会者可以使用一个应用程序根据他们的口味设置偏好,然后配制个性化的饮料。双份的!
Kineviz 利用其 GraphXR 平台开发视觉分析软件和解决方案,用于执法、医疗研究和知识管理等领域。GraphXR 使用 Neo4j 在统一的动画上下文中分析链接、属性、时间序列和空间数据。在感官数据科学活动上,Kineviz 将展示他们对 权力的游戏 数据的分析和可视化。说真的,托蒙德·巨人贝恩会是莱安娜·莫尔蒙的父亲吗?# gameoftrones
我对 Rev 会议、我们的感官中的数据科学晚间活动(作为会议讲座后的社交活动)、我们的优秀演讲者阵容介绍数据科学领域的领导力以及企业团队可以相互学习的内容感到非常兴奋。此外,我们将邀请诺贝尔奖获得者 丹尼尔·卡内曼 作为我们的主题演讲,展示“直觉判断和选择心理学”——通过现代行为经济学和长期以来关于人类理性在决策中的假设角色的假设,详细探索机器学习。
今天注册 Rev 并使用此代码享受折扣: PACORev25 。
那里见!
Twitter Facebook Gmail Share**
Instacart 的数据科学:按需盈利
原文:https://www.dominodatalab.com/blog/data-science-instacart
在本次数据科学弹出式会议中,Instacart 数据科学副总裁 Jeremy Stanley 深入探讨了 Instacart 如何利用数据科学实现利润最大化。
数据科学采访:首席科学家 d stillery Claudia per lich
原文:https://www.dominodatalab.com/blog/data-science-interview-claudia-perlich-chief-scientist-dstillery
我们最近采访了 Dstillery 的首席科学家 Claudia Perlich。在加入 Dstillery 之前,她赢得了许多数据挖掘比赛,以及来自行业和学术界的多个奖项。
Claudia,请简单介绍一下你自己,以及你是如何对数据工作感兴趣的。
我在东德长大,这很有趣,因为那里根本没有广告。所以我直到 15 岁左右才看到自己的第一个广告。早期,我对数学非常感兴趣,并决定在德国学习几年计算机科学,之后我作为交换学生来到科罗拉多州的博尔德,在那里我上了第一门课程,即现在所知的数据科学。这门课是关于人工神经网络的,那时我就迷上了。我真的很喜欢看数据和故事中令人着迷的部分,试图对其进行建模。从那时起,我继续走这条路;我在德国完成了我的学位,最终回到了纽约市的商学院。我获得了信息系统的博士学位,但主要还是在追求我对机器学习、预测建模和数据挖掘的兴趣。
后来,我加入了沃森中心的 IBM 研究机构,该机构因制造沃森计算机而闻名,该计算机最近赢得了一场危险游戏。在那里,我是预测建模小组的一员,使用数据和预测建模处理各种事情,或者在内部为 IBM 工作,或者在外部为他们的客户工作,这些客户是通过咨询服务进来的,并且有非常具体的数据相关问题。我还花了很多时间参加数据挖掘比赛,并赢得了很多比赛:)。我一直喜欢接触非常不同的数据集,并挑战自己构建最佳解决方案。
我发现我可以传播我学到的一些东西,并帮助把我的发现带到医学和其他与生活相关的领域。
你是如何开始使用 Dstillery 的?
2010 年,Media6Degrees 找到了我,现在叫做 Dstillery ,一家数字广告领域的公司。他们通过我在 NYU 的学术顾问找到了我,他向我推荐了一些我在博士期间研究的用于广告定位的技术。他们邀请我加入他们的团队,从那以后我一直担任 Dstillery 的首席科学家。这是一个很好的场所,提醒我为什么喜欢在广告行业工作,这真的是尝试不同事情的最终机会,并找出什么在数据科学中行得通,什么行不通。我们拥有难以置信的数据访问权限,这既具有挑战性,也非常有益。我发现我可以传播我学到的一些东西,并帮助把我的发现带到医学和其他与生活相关的领域。
您记得使用的第一个数据集是什么?你用它做了什么?
我工作的第一个数据集,对我个人来说并不十分鼓舞人心,然而,从数学难题的角度来看,它非常鼓舞人心。这可能是在 1995 年左右,人工神经网络的全盛时期,现在被改造成“深度学习”,但那时我们还没有计算能力。我从事的项目使用了教育数据;我们试图看看是否可以根据学生的成绩和考试分数来预测他们的成功。我最难忘的学习经历是:即使我们真的想打败线性模型,你也无法打败它。我们真的很努力地让神经网络看起来很好,我们只是无法击败一个相对简单的模型,它的性能至少与标准相当,甚至更好。在我的工业生涯中,我注意到,如果你能很好地使用它们,总是更简单的模型具有不可思议的力量。经过这次实验,我意识到 50 年代的好的旧统计数据可以让你走得更远。
如果你能很好地使用它们,总是简单的模型拥有不可思议的力量。
【Dstillery 解决什么具体问题?你会如何向不熟悉它的人描述它?
Dstillery 是围绕使用机器学习和预测建模的原则建立的,以帮助放大正确的人群,让他们看到正确的广告。当我加入 Dstillery 时,我没有任何营销经验,因为我上过商学院,所以知道一些基本知识。然而,数据给营销带来的根本转变是能够将许多“粗糙的概念”抛在身后。营销人员倾向于以某种方式思考和谈论他们的受众,例如:“中年足球妈妈。”事实是,尽管我可能在技术上合格,但我讨厌被归类为中年足球妈妈…!对我来说还有很多,我的兴趣是如此广泛,以至于营销人员长期以来因为缺乏更好的数据而使用的这些非常“粗糙”的受众描述是非常不够的。
现代看待人口统计的方式是弄清楚,你到底想和谁交往?你到底想给谁看广告?我们能让机器帮助我们反映人类生存的全部复杂性吗?我们可以找到点击广告的人,但是我们如何解决如何吸引他们并改变他们的行为呢?这就是 Dstillery 正在尝试做的事情,查看精细的信息:你查看的 URL,你正在使用的应用程序,可能是我昨天看到你的物理位置,并以匿名方式解析所有这些数据, 将它输入一个算法,然后说:“根据我在这个非常精细的层面上对你的了解和观察,你对这个特定营销商的这个特定报价感兴趣的概率是多少——以及利用数据和机器学习的能力来说,“根据对产品的兴趣排名,我只会向 1%的人显示广告”。
你想解决的最大的机会/问题是什么?
发展数据科学技术的另一个重要领域是测量因果关系。我们需要超越相关性与因果性的争论,并且说我们实际上可以了解这一点,如果某种互动真的有某种影响以及为什么。如果这些技术被证明是可行的,我们可以把它们带到医学领域,并在几乎个人的基础上应用于测试环境。如果你想到个性化医疗,这是非常相似的。过去,一种诊断只有一种药物,如果你看看人们今天在癌症研究中所做的事情,就会发现为你个人开发的特定药物——对你最有效的药物。我在许多不同的行业中都看到了这一点。我们正从宽泛的消费者描述转向关注个人以及我们能为他们做的最好的事情。这反映在我们处理更多数据的能力上。Dstillery 在广告中是这样做的,但是我们正在创造的技术有更广泛的应用。
我们正在创造的技术有着更广泛的应用。
你最喜欢使用哪些工具/应用程序?
我们使用了很多非 SQL 解决方案,比如 Cassandra。在数据科学的另一端,我们有一个基于 Hive 的 Hadoop 堆栈,它为数据团队提供对数据的访问。我们记录每一条到达我们服务器的数据;数量级大约是一万亿字节。我们希望让我们的数据科学团队能够轻松访问这些传入的数据,以便他们能够在此基础上构建模型。我们的整个系统几乎都是自动化的。建模部分是添加了新技术的逻辑回归。我们通常从学术研究中提取,并在产品中实现我们自己的版本。在工业环境中使用它的贡献是真正实现鲁棒性,并找出我们如何自动化整个过程。我们一天要制作成千上万个这样的模型。在早期,当我还是 IBM 的数据科学家时,我有大约三周的时间来构建一个模型,而现在我们每周都在构建数千个模型。我正在设计一个基于机器学习构建解决方案的流程。我们的数据科学团队在制作原型时使用 Python、R 和 Perl,并使用 Hive 和 Cassandra 从 Hadoop 中提取数据。
哪些出版物、网站、博客、会议和/或书籍对你的工作有帮助?
我个人很喜欢面对面的互动,所以我真的很喜欢会议。我的主要会议在 kdd.org 举行,这是一个有 20 年历史的学术会议,有很强的应用性。他们有来自医药、制造、能源和广告的论文,我发现跟上学术界正在做的事情以及行业中的应用状态是非常有意义的。如果你在寻找更理论化的东西,你会去日本、 ICML 、 ECML 。诸如 O’Reilly’s Strata 和预测分析世界等行业会议对于行业内的网络和实施状态非常重要。有一份名为大数据杂志的新出版物,他们试图在算法和分析的学术界之间架起一座桥梁,同时也着眼于应用方面。机器学习期刊,机器学习研究, KDNuggets 和数据科学中心都有一些有趣的文章。
除了 Dstillery,你最近还参与了哪些有趣的项目?
我通过在 NYU 大学授课以及在许多行业会议上发言来分享我的知识。去年,我在纽约市组织了一次数据挖掘会议,有 2500 人参加,主题是数据科学对社会有益。我们把非营利组织聚集在一起,让他们与具备分析型技能的个人配对,帮助他们解决重要问题。如你所知,对拥有数据科学技能的人有很大的需求,而且供应越来越多。然而,最大的问题实际上是将这些技能与正确的工作相匹配。只要“数据科学家”这个头衔没有明确定义,招聘经理就不确定他们需要什么样的技能,公司也很难表达他们想要什么。有很多不同的模型。例如,Facebooks 和 Googles 希望工程师了解数据,而在 Dstillery,我们寻找的主要是懂数据并有一定编码能力的人。一个完全不同类型的人可以胜任这两种不同类型的角色。我热衷于将人们连接到合适的职位,在那里他们可以努力工作并发挥影响力。
对于刚开始学习机器的学生或从业者,有什么至理名言吗?
做一些你真正喜欢做的事情。
做某事没有意义,因为它在某个时间流行。尤其是有了数据,你可以专攻的东西多了去了;真正让你兴奋的是什么,这完全取决于你自己。对我来说,这是一个侦探游戏,找出我的数据中发生了什么,以及真正能够建立最佳模型的竞争力。你需要在你真正擅长的和你喜欢做的之间找到一个很好的平衡,这种兴奋正是我在面试中说服我雇佣你的原因。
克劳迪娅——非常感谢你抽出时间!我真的很喜欢了解你在 T2 的工作。
在推特上关注克劳迪娅。
Pinterest 的众包和机器学习
我们最近采访了 Pinterest 的数据科学家詹姆斯·鲁宾斯坦。詹姆斯,首先感谢你接受采访。让我们从你的背景和你如何对数据科学感兴趣开始。
你的 30 秒简历是什么?
我是 Pinterest 探索团队的数据科学家,但我更喜欢被称为“迪斯科科学家”。
在加入 Pinterest 之前,我是苹果地图和 iTunes 团队的统计学家。在此之前,我在易贝担任投标团队和搜索度量的产品经理,在那里我介绍了一个实验赌博市场、一个新的投标层、在线调查和众包搜索质量评估。
在我的空闲时间,我制作音频组件,破解干衣机,酿造啤酒,和家人一起出去玩。
你记得使用的第一个数据集是什么?你用它做了什么?
他们说你永远不会忘记你的第一次,这是完全错误的。然而,我确实记得自己是克莱姆森大学的本科生,在我工作的商店里向学生和顾客分发调查问卷。然后我会手动输入数据,并使用 t 检验或其他一些基本统计数据通过 SPSS 运行数据,以寻找人群中的差异。
你和一些最具创新性的公司合作过。有什么想分享的亮点吗?在你的职业生涯中,到目前为止你最自豪的是什么?
我为我(和我的团队,因为数据科学是一项团队运动)在易贝完成的工作感到非常自豪。我们通过创建调查平台,为易贝团队创造了倾听“客户声音”的新渠道。
我们还通过提供独立于实时网站指标(即相关性)的数据,推动了搜索团队内部的许多决策。这些见解现在仍在推动公司的决策,尽管是以不同的方式,由不同的团队来做。
我也很自豪能成为 Pinterest 团队的一员。我和了不起的人一起工作,把了不起的产品带给世界。我们的团队非常努力地工作,以确保 discovery 团队发布的每一个 algo 都是“Pinterest 质量”,对此我也感到自豪。
你认为众包和数据科学以及 ML 将走向何方?什么是近期然后是远期?
我们使用人工评估做两件事:驾驶和得分。转向是提供输入来告诉你哪里情况不好/好,提供 ML 的输入。评分是衡量事情进展的好坏。在短期内,我认为我们会看到更多的从得分到使用这些人为标记的数据进行指导的转变。
在未来,我们可能会看到人和机器之间更紧密的循环,机器学习、训练数据收集和测量都在近乎实时地进行。在遥远的未来,我们将在训练机器方面做得如此出色,以至于我们都可以在没有任何人工监督的情况下在海滩上放松。
你能告诉我们你在 Pinterest 做的工作吗?
我主要致力于测量各种发现算法的性能。探索团队负责帮助你在 Pinterest 上找到你喜欢的东西,无论是通过搜索、Homefeed 还是推荐。我们通过人工评估和现场实验来衡量这种体验。我还致力于测量引脚质量,试图训练 ML 算法区分什么是好引脚,什么是不太好的引脚。
你想解决的其他机会/问题领域有哪些?
一个很大的挑战是我们如何知道一个 Pin 什么时候是好的。什么使它变得好?为什么人们使用一些图钉而不使用其他图钉?当我们第一次看到一个图钉创作时,我们如何知道这个图钉是否会引起图钉爱好者的兴趣?
我最感兴趣的另一个主题是构建评估管道,以便公司中的任何人都可以轻松获得我们在网站上使用的所有不同算法的度量。
你在实验设计和统计方面有着有趣的背景,你能谈谈你的背景如何给你作为数据科学家的职业生涯带来一些优势吗?
我认为我所做的很多事情都是设计调查。在某种程度上,这和我在大学时在布莱凯特礼堂给学生发调查问卷没什么不同。
你需要适当的调查设计,不会让回答者产生偏见,你需要确保结果是因为数据,而不是因为用户的偏见。
建立适当的实验控制也是至关重要的,这并不总是被认为是实验的关键组成部分。
最后,还有统计数据——理解如何以及何时应用它们是很重要的。不过我承认,有很多人比我更擅长更广泛的统计数据,我很乐意寻求帮助或第二种意见。这是在 Pinterest 工作的好处之一:尽管我们的团队很小,但我们有一些在各自领域非常优秀的人,他们愿意帮我找到正确的答案。
你最喜欢使用的工具/应用程序是什么?
嗯,在众包方面,我们通常使用 Crowdflower 或 Mechanical Turk。不过,我们确实在不同的市场使用不同的供应商。你必须将正确的人群与正确的任务相匹配。
说到数据分析,我和 R 合作过很多事情。在过去的几年里,我学习了更多关于 Python 的知识,这很棒。
对数据科学/机器学习的学生或从业者有什么忠告吗?
是的,学习科学。去和真实的人做些真实的实验。找出混淆因素,询问噪音的来源,尝试从尽可能少的参与者那里获得意义。数据科学不会取代科学,而是补充科学。
在 Twitter 和 Pinterest 上关注詹姆斯。在 Pinterest 工程博客上关注 Pinterest 的数据科学。
数据科学采访:Reonomy 首席数据科学家 Jason Dolatshahi
我最近采访了 Reonomy 的首席数据科学家 Jason Dolatshahi。
Jason,请告诉我们一些你的背景,以及你是如何对数据科学感兴趣的。
我一直喜欢学习和解决问题,所以我学了数学和物理。我以前从事金融营销,数字广告,现在在 reonomy 工作。我最初来自圣地亚哥,现在我住在布鲁克林。
你是如何对数据科学和机器学习产生兴趣的?
在我人生的某个阶段,我有一份有点无聊的工作。所以我下定决心学习 Python,它帮助我建立了金融模型。我就是这样发现了数据科学和机器学习。这个话题似乎涉及了很多我不太了解的很酷的东西,所以我被吸引住了。
你还记得你是什么时候意识到数据的力量的吗?
第一次了解是在大学的时候;我第一次亲眼看到是在一个交易台上。在此期间,我的工作是自营交易。我从金融市场发现并驱动交易信号,收集数据,并根据这些见解执行策略。
你在经济学院做什么工作?
我们是商业地产市场的初创公司。我们业务的很大一部分是通过智能地使用数据来创造价值。我们的产品是为投资者、贷款人、经纪人和其他市场参与者提供的研究平台。像许多其他小公司一样,数据科学工作包括大量的后端工程。
你发现的最令人惊讶的见解或发展是什么?
到目前为止,我发现的最基本的物理模型是谐振子,例如钟摆的运动。此外,我喜欢套用一位最著名的物理学家的话,他说*“一个年轻的理论物理学家的职业生涯包括以不同的抽象程度对待谐振子”*。但类似地,数据科学家的职业生涯包括了解这样一个事实,即在不同的抽象程度上,“你 80%的问题解决发生在建模之前”。
数据科学家的职业生涯包括了解这样一个事实,即在不同的抽象程度上“80%的问题解决发生在建模之前”
你认为商业地产和数据科学以及 ML 将何去何从?
我认为商业地产将变得更加数据驱动。数据科学的应用领域也将越来越广。例如,我认为这将增加私人和公共部门对具有定量问题解决技能的人的需求。医学是头号关键领域,我希望在这个领域看到一些重要的突破。测序一个基因组的成本在 1000 美元左右,这比第一个人类基因组计划后的 20 年要少得多。
在雇佣数据科学家时,你们有哪些方法(如果有的话)?一个成功的候选人最重要的是什么?
我有兴趣看到候选人运用定量推理。我也喜欢了解他们对自己不知道的事情的态度。但对我来说最重要的技能是统计直觉。为此,我会给你一个实际的任务带回家,稍后展示结果。这将向我展示候选人是否具备所需的数据和沟通技巧。我现在正在应聘经济学的职位,如果你认为你具备所需要的条件,我们就来聊聊吧。
在大会上教授数据科学时,您是如何应用自己的知识的?对实习学生有什么建议吗?
未来的数据科学家应该专注于基本技能和统计推理。他们应该试着用简单的术语理解技术,例如为什么他们以的方式工作。不要被数学符号、编程语言、技术吓倒;这些都只是一种工具,或者达到目的的手段。数据科学是一门实践学科,它是围绕权衡取舍而构建的。你需要在自己的工作中认识到这些权衡,并做出明智的选择。这包括但不限于构建预测模型的环境。最后但同样重要的是:“深入思考简单的事情”——另一句名言。
试着用简单的术语理解技术,例如为什么它们以这样的方式工作。不要被数学符号、编程语言、技术吓倒;这些都只是一种工具,或者达到目的的手段
你有如此丰富的数据科学背景,你能分享一些你做过的最有趣的工作吗?还是一两个有纪念意义/有意义的项目?
我在一家移动广告初创公司建立了一个后端数据处理架构,基于 Python、redis 和亚马逊 EMR。即使在我们被收购后,它仍然存在于生产中。然后,我在一个大型广告合作项目中创建了可视化效果,获得了很大的吸引力,并最终被各种商业用途所采用。最近,我开发了一个功能,让 Reonomy 的用户在使用 ElasticSearch 时,可以获得某个人或公司所有权的整体情况。这是一个大项目,因为你必须建立简化的工作流程,许多市场参与者必须与一群人一起手动进行,这将洞察力的时间减少了几个数量级。
未来的数据科学家应该专注于基本技能和统计推理
到目前为止,在你的职业生涯中有什么让你感到最自豪的事情吗?
关于数据科学,我最喜欢的是学习新事物和创新的机会。我真的很喜欢我所做的工作,它带来了惊人的结果,我也很喜欢教学和帮助人们看透复杂性。
今年你在做什么个人/专业项目,为什么/如何让你感兴趣?
我目前专注于函数式编程或数学家编程。我最喜欢的科目之一是机器学习在生物和医学问题上的应用。
你发现了哪些机器学习方法,或者你认为这些方法最有帮助?你最喜欢使用的工具/应用程序是什么?
一般来说,越简单越好。我日常使用的工具是 Python、pandas、tmux、vim 和 unix。我也用 scikit-learn。
Jason——非常感谢你抽出时间!真的很高兴能更多地了解你在经济学院所取得的成就。
数据科学访谈:Thoughtworks 的资深数据科学家 Sean McClure
我们最近采访了 Thoughtworks 的高级数据科学家 Sean McClure 博士。肖恩,首先感谢你的采访。让我们从你的背景和你如何对数据科学感兴趣开始。
你的 30 秒简历是什么?
我的学术背景是科学计算,我曾用高性能计算机和尖端算法来计算基于纳米技术的设备的分子属性。我爱上了使用计算机和数据来解决非常具有挑战性的问题。获得博士学位后,我开始了自己的高级分析业务,利用机器学习和数据库技术帮助企业进行分析竞争。在做了几年之后,我加入了 T2 的 ThoughtWorks,成为了我现在工作的数据科学家。我喜欢写作和公开演讲,也喜欢弹钢琴。
你是如何对数据科学和机器学习产生兴趣的?
在我读博士期间,我接触了各种试图在计算机上解决挑战性问题的方法。我很快认识到机器学习技术在解决我的领域中的问题的力量。我看到,我作为一名科学研究人员的经验可以与机器学习中使用的方法相结合,以解决远远超出学术界的问题。当我毕业时,数据科学刚刚开始升温,我觉得这是我的技能和热情的自然延伸。
当你意识到数据的力量时,有没有一个特定的“啊哈”时刻?
我早期的一个项目是在医疗保健领域,涉及构建一个试图将各种症状与疾病结果关联起来的应用程序。尽管该产品远非完美,但它让我看到了数据的力量,以及它在世界上的变革性。这是我意识到我们可以用数据做很多重要工作的时刻之一,它可以对我们的人性产生积极的转变影响。
数据的力量可以改变世界
你在 ThoughtWorks 做什么工作?
在 TW,我构建自适应应用程序,通过从环境中学习来帮助自动化决策。我与软件开发人员合作,将我构建的模型集成到现实世界应用程序的工作代码库中。在 ThoughtWorks,我们认为这是下一代软件,其中敏捷性的理念超越了设计阶段,贯穿于软件的整个生命周期。
在你的职业生涯中,到目前为止你最自豪的是什么?
这是我第一次从企业领导那里得到证实,我的工作为组织增加了价值。从领域专家那里得到积极的反馈,说你的工作产生了真正的影响,这是一种很棒的感觉。
你发现的最令人惊讶的见解或发展是什么?
我在一家搜索引擎营销(SEM)公司工作,我们试图在大量的市场数据中寻找模式。我们发现,虽然许多营销活动被员工处理得很好,但也有其他一些活动与普遍持有的信念相去甚远。虽然这是我们在那里的核心原因,但在组织的数据中发现新的机会仍然是一个令人愉快的惊喜。
今年你做了哪些个人/专业项目,为什么/如何让你感兴趣?
今年,围绕将自动化构建到现有的业务流程中,充满了许多激动人心的事情。我最近完成了一个应用程序,它吸收了成千上万手动输入的文本描述,并呈现出正在讨论的核心主题。这被用来发现大型系统中出现的主要故障;多年来在文档中手工描述的故障。这是一个很好的例子,教一台机器做一些需要很多人和数千小时才能完成的事情。它使用了自然语言处理中的概念,我认为这将在未来的智能数据产品中扮演非常重要的角色。
数据科学的未来是什么样的?
我们仍处于定义这一领域的早期阶段,以及它对寻求分析竞争的组织意味着什么。我认为,在未来,我们将会看到大量的宣传逐渐消失,并成为一个坚实的学科,将数据转化为有价值的产品。将数据转化为价值的需求只会增加,而实现这一点的方法就是进行高质量的科学研究;导致模型的研究,这些模型捕捉驱动我们感兴趣的领域的潜在模式。我个人正在努力在我的写作和公开演讲中帮助定义这个领域,并确保炒作不会干扰对基于大量数据的伟大科学的需求。
我认为,在未来,我们将会看到大量的炒作逐渐平息,并成为一个坚实的学科,将数据转化为有价值的产品
哪些出版物、网站、博客、会议和/或书籍对你的工作有帮助?
亚塞尔·s·阿布·穆斯塔法的《从数据中学习》是一本值得不时阅读的好书。它很好地解释了制造机器的可行性,这些机器可以学习和描述我们作为数据科学家每天应用的许多核心概念。我也经常使用 DeepDyve ,它允许人们租借学术文章。这样我们就可以了解最新的研究,而不必支付大量的期刊订阅费。
你发现了哪些机器学习方法,或者你认为这些方法最有帮助?你最喜欢使用的工具/应用程序是什么?
机器学习构成了我们作为数据科学家使用的各种算法的核心。我不认为你可以将任何一种方法置于另一种之上,直到你试图解决的特定挑战暴露了它的一些秘密。这些就像在发现过程中突然出现的标志,暗示可能证明可行的方法和途径。但最终,采用多种方法,让大自然告诉你什么可行,什么不可行,这才是关键。对于工具和应用程序,我首先使用 R 和 Python,因为它们拥有最丰富的科学计算库。这种多样性对于允许科学家从各种不同角度探索数据并揭示如何对感兴趣的系统建模的洞察力至关重要。我在使用 R 和 Python 的 IPython 时也使用 R studio。当缩放模型有意义时,我会寻找像 Spark 这样的工具,这些工具在使机器学习可扩展和快速方面取得了很大进展。H20 也开始看起来有希望成为扩展我们科学的工具。除此之外,我还负责 NoSQL 数据库和 Hadoop 生态系统。
对数据科学/机器学习的学生或从业者有什么忠告吗?
- 关注核心概念,因为它们是永恒的
- 投入并不断练习。失败是学习的唯一途径。我最近就此写了一篇文章,名为你应该关注的唯一技能。
失败是学习的唯一途径
肖恩-非常感谢你的时间!我非常喜欢深入了解你在 Thoughtworks 取得的成就。
肖恩·麦克卢尔可以在这里在线找到,并访问 Thoughtworks 。
数据科学:唐纳德·特朗普的另一个不同之处
原文:https://www.dominodatalab.com/blog/data-science-just-one-way-donald-trump-different
如果你是一名对政治工作感兴趣的数据科学家,不要费心申请特朗普竞选团队——但希拉里有一份工作给你。
在最近的一次美联社采访中,唐纳德·特朗普对数据作为竞选战略工具的价值大打折扣。他的计划是基于他的人格力量去赢得胜利。这位假定的共和党提名人指出了奥巴马的个性,他说:“奥巴马比他的数据处理机器获得更多的选票,我想我也是如此。”
就像特朗普的许多事情一样,这是一个非传统的观点。大多数政治专业人士认为奥巴马 2008 年的竞选在使用数据方面具有开创性,尤其是在获得选票方面。奥巴马在初选中对右翼战场的关注为他赢得了希拉里·克林顿都没有意识到的代表票。
对于任何重大的政治竞选活动,数据科学都是运作的大脑。数据科学家可以回答的问题涵盖了竞选的每一个方面:在哪里筹款,为哪个州而战,向观众传达什么信息,谁是摇摆选民。在这些问题上,数据每次都胜过意见。
抛开战略问题不谈,政治活动的很大一部分就是直接营销。候选人在广告上花费数千万美元。政治广告与汽车、尿布和啤酒的广告同时出现。数据科学是公司将广告瞄准正确受众的方式。这就是地毯式轰炸和智能炸弹的区别:用少得多的钱产生多得多的影响。
对于特朗普来说,他筹集到的资金还不到希拉里·克林顿的一半,努力扩大他的广告收入是有意义的。相反,到目前为止,他从新闻自由中获益匪浅。他的竞选花费比⅓少,只有希拉里竞选花费的 20%。
但是随着竞选转向大选,新闻自由的优势可能会缩小。此外,他控制媒体的能力很大程度上是因为他愿意发表非常规言论。如果他需要传递有针对性的信息,无法运行数据驱动的广告活动将成为一个巨大的负担。
另一方面,克林顿竞选团队正在寻找更多的数据科学家来帮助他们找出如何最好地分配资源以获得最佳结果。他们的分析师从事筹款、广告、地理分析等工作。目前分析团队有十几个空缺职位,从初学者到有经验的研究员都有。一些有趣的工作包括:
- 战场州分析师
- 国家数据和分析总监
- (或者你经验少,可以做个副主任
- 数据科学领导
- 数据科学家
想要帮助唐纳德·特朗普(Donald Trump)“让美国再次伟大”的数据科学家可能会在他们和他们的候选人之间发现一堵墙。另一方面,克林顿竞选团队准备利用数据做出决策。
**更新:**今天早上在一篇关于 fivethirtyeight.com的文章中,Joshua Darr 探讨了川普限制数据在其竞选中的作用的决定将对共和党产生的影响。不是在影响选举结果方面,而是总统选举提供了一个难得的机会,既可以比其他选举收集更多的数据,又可以培养下一代能够利用这些数据的人才。
数据科学发起了一场全球对抗新冠肺炎的战斗
原文:https://www.dominodatalab.com/blog/data-science-launched-a-global-fight-against-covid-19
By David Bloch, Data Science Evangelist, Domino on April 21, 2020 in Perspective
随着世界以疯狂的速度限制新冠肺炎的影响和传播,数据科学行业呼吁采取行动,帮助加快新预防措施和技术的研究,并就指数增长率和呆在家里限制传播的重要性等主题教育人们。
在前所未有的规模上,卫生、学术和政府组织开始公开数据集,以供分析、探索和研究。这些相同的数据集正被新闻媒体用来讲述新型冠状病毒的故事,并教育公众有关社交距离等措施,这些措施可以降低感染率,并帮助医院应对病毒。
在 Domino,我们响应了这一号召,为希望为新冠肺炎研究做出贡献的数据科学家提供了一个免费的环境。该环境已经预先配置了对数据的访问,许多代码片段使其易于开始。注册后,数据科学家可以请求访问更多计算。
我们希望提供这样的环境能让数据科学家更容易起步,并为新冠肺炎研究做出贡献。我们还在下面提供了一些资源,我们发现这些资源发人深省,对我们自己的探索和实验很有帮助。
如何在 Domino 中访问新冠肺炎项目
- 参观 try.dominodatalab.com 并报名。
- 完成入职培训后,查看并注册访问新冠肺炎传染病数据项目。
- 请遵循项目中提供的 readme.md 文件,以获得有关所包含内容的更多信息。
- 有关 Domino 环境的更多信息,请查看我们在 docs.dominodatalab.com的入门指南。
Source:
Domino Try
数据科学家如何帮助对抗传播
科学研究进程中的一个关键原则是“站在我面前的巨人的肩膀上”的能力。对于研究人员来说,获得以前的假设、实验和其他科学家的知识来帮助建立新的见解是很重要的。
云计算的采用以及笔记本工作解决方案的流行,使得研究人员可以轻松分享他们的工作笔记、算法和数据等底层资源。许多组织寻求利用其内部数据科学能力来帮助加快对该病毒的研究。例如:
- 阿里巴巴集团的科学研究院开发了一种 T2 新冠肺炎诊断模型 T3,利用计算机断层扫描(CT)和医学成像分类来诊断新冠肺炎病毒。该系统将由经验丰富的医生进行的典型的 10-15 分钟诊断缩短到 20 秒钟,这在医疗资源不堪重负的情况下是至关重要的时间节省。
- ka ggle-一个举办一系列比赛的平台,在这些比赛中,企业提供挑战和数据,以找到财务奖励的解决方案-已经创建了资源中心和一系列起点文章,以帮助数据科学界在追求提供新智能的过程中轻松起步。
- Zindi-一家总部位于南非的初创公司一直在连接非洲的数据科学家社区,宣布向其 12,000 名数据科学家提供现金奖励,以参与寻找可用于帮助抗击新冠肺炎的新见解和信息。
- 微软与分享了一系列学术论文,这些论文配有一些工具,可以更容易地使用自然语言处理技术搜索文献,帮助研究人员快速找到相关信息。他们还结合了以前对与新冠肺炎病毒作用方式相似的病毒的研究实例,如 SARS 病毒。
- 再保险供应商 SCOR 专门成立了一个工作组来分析新冠肺炎疫情危机。该团队由来自其知识社区的专家组成,包括医生、流行病学家、精算师和数据科学家。基于约翰·霍普金斯大学提供的数据存储库,他们在 Domino 中构建并发布了一个公共 web 应用程序,以帮助在基本信息的实际显示中可视化新冠肺炎趋势。最初成立的目的是建立生物特征风险模型,多专业工作组意识到共享数据有助于更好地向公众提供信息。
- Bayer 数据科学家 Jeffrey Pobst 在 Domino 中开发了一个应用程序,来分析维基百科中与新冠肺炎相关的跨语言词汇的趋势——查看标题为“冠状病毒”、“疫情”、“新冠肺炎”的页面流量,以及有趣的“卫生纸”、“洗手液”、“抗病毒药物”、“远程办公”等相关页面。该应用程序强调了社会一直在研究什么,好奇心如何在不同的地理区域内上升和下降,并可能围绕这个疫情随着时间的推移在区域内看到的文化影响呈现有趣的相关性。
- 感受到数据科学和人工智能应用的潜力,白宫敦促技术机构为研究做出贡献。
科学界迫切需要发现有助于抗击病毒传播的新见解来源,这导致了前所未有的跨国和跨国信息共享。大型跨职能虚拟团队聚集在一起,更好地通知人们,提供更好的洞察力和清晰度,最终帮助政府共同努力解决问题。
数据可视化如何更好地传达故事
数据科学家应用数据可视化技术来探索信息,并在形成和测试假设之前获得大量数据集。
随着政府寻求实施各种政策,如社会距离和要求人们自我隔离,数据越来越多、也是最重要的用途之一是向人们提供政策原因以及为什么这些政策会有效的建议。
下面是一系列文章和博客帖子,它们使用数据可视化来创建新的见解,并清晰地传达给读者。它们也可以作为研究者可能寻求的不同方法和假设的思想启动器。
-
信息是美丽的发表了一系列信息图表,这些图表从大量数据中提炼出受病毒影响者的人口统计信息。
-
纽约时报为提供了一系列模拟和滑块;让人们能够根据疾病的传染性和死亡率轻松评估影响;按照国家和州提供信息,利用人口统计数据以及我们目前对病毒的了解。
-
约翰霍普金斯大学的团队已经在 T2 建立了一个惊人的资源中心,里面充满了数据集和信息,其中包括 T4 的一个综合仪表板,记录了与病毒及其在人群中传播有关的关键数据。
-
《华盛顿邮报》提供了一系列的 T2 动画,展示了疾病传播的不同场景。他们介绍了社会距离背后的目的,并展示了它如何帮助减缓病毒的传播,给卫生部门一个更好的机会来管理其影响。
Source:
Information is Beautiful
其他资源
-
Fast AI 为提供了一系列关于数据科学在解决新冠肺炎问题中的作用的见解和想法,有助于定义和描述手头的问题,并展示了数据科学家如何提供帮助。
-
走向数据科学发表了一篇博客,帮助人们建立了一个与冠状病毒传播相关的仪表板,以及他们的对 COVID 增长模式的探索性分析,并访问了他们的底层代码库。
-
约翰·霍普金斯大学通过 GitHub 公开了其数据集,全天发布多次数据更新,供数据科学家和分析师访问。
-
哈佛大学在其中国数据实验室网站上发布了 T2 的文献、学术案例研究、数据集和代码库。
Source:
Towards Data Science
来自英国最大零售银行的数据科学领导者将在 Rev 2 中讨论负责任的人工智能
By Karina Babcock, Director Corporate Marketing, Domino on March 27, 2019 in Perspective
随着组织越来越多地将大量模型部署到生产中,以及这些模型影响重要的商业决策,“可解释的人工智能”已经成为一个热门的讨论话题。至关重要的是,要了解每种模型的基础、演变和使用,以确保它们正在做它们在野外应该做的事情,并且如果它们偏离了轨道,能够有效地识别和排除故障。
Domino 首席数据科学家 Josh Poduska 解释说,“在更广泛的模型管理框架的背景下,我们将允许组织掌握每个模型的活动、成本和影响的支柱称为‘模型治理’。”"
在处理金融服务等受监管行业时,这一概念尤为重要。英国最大的零售银行劳埃德银行集团(Lloyds Banking Group)将于今年 5 月派遣其数据科学负责人汤姆·克罗宁(Tom Cronin)和数据科学家托拉·孙心怡(Tola Schmidt)前往纽约,在数据科学领导者峰会上深入探讨这一主题。
汤姆领导着一个由 50 多名“探路者和开拓者”组成的团队,他们正在向劳埃德的同事和客户提供人工智能产品。作为 Tom 团队的一员,Tola 在最近于伦敦举行的数据科学会议上发表了评价最高的演讲;她的个人使命是通过统计技术在现实生活中的应用来激励年轻一代,从而“将数学带入生活”。
以下是他们 Rev 演讲的简短概要,题为“负责任的人工智能”:
随着统计模型在决策中的使用在生活的各个领域变得越来越普遍,从我们可以获得的抵押贷款到我们可以在 Tinder 上向左滑动的人,我们解释这些模型的能力从未如此重要。在本次会议中,我们将向您介绍可解释人工智能(XAI)的概念,它使我们能够解释机器学习模型做出的决定。
数据科学领袖播客探讨了 MLOps、数据道德、团队结构等
今天,我们推出了“数据科学领导者”,这是一个新的播客系列,致力于通过记录和分享真实故事、突破性战略和关键见解,帮助团队扩展蓬勃发展的数据科学实践,构建企业数据科学成功模型,这些都来自那些已经做到的人。
我们最近采访了“数据科学领导者”的主持人戴夫·科尔(Dave Cole),听听他在采访领导者时学到了什么,并希望听众能够了解,这些领导者的丰富经验推动了数据科学团队所能实现的极限。
你为什么要启动数据科学领袖播客?
科尔:我曾经是首席分析官,当时,我作为一名从业者,在分析和理解数据科学方面有着丰富的经验。但我不太明白的是,成为数据科学领导者意味着什么。这意味着理解诸如你的数据科学家应该在你的组织中的什么位置;如何衡量数据科学团队;团队应该如何与业务用户互动。
我觉得成为数据科学领域的领导者有点与众不同,关于这一领域伟大领导者的报道很少。这个角色有一些非常独特的方面,我只是想解释一下。我们的目标是帮助所有的数据科学领导者以及有抱负的数据科学领导者相互学习。
这一点尤其重要,因为有很多不同的方法可以成功胜任这一角色,而且很多取决于各种变量,比如你所处的行业、你所在的组织类型、你的团队规模等等。这也是我喜欢跨行业跟各种领导对话的格式的原因。这是一种有助于理解不同的方法的格式,这些方法适用于不同的高管构建高绩效团队。
你的第一集是《纽约时报》首席数据科学家克里斯·维金斯。关于那次谈话,你印象最深刻的是什么?
科尔:对于像《纽约时报》首席数据科学家这样的人来说,数据伦理是一个重要的问题,我认为这并不奇怪。但真正有趣的是,意识到——坦率地说,定义——作为一名有道德的数据科学家意味着什么,被视为时报数据科学团队的一项重要职责和一个方面。听到 Chris 谈论他如何处理数据伦理,他们如何写下道路规则,甚至创建角色和委员会来支持数据伦理工作,我很感兴趣。
回答数据伦理问题很有意思。我希望在数据科学家中看到更多。这是一个非常重要的话题,尤其是考虑到像欧盟一般数据保护条例或加州消费者隐私法案这样的法规。我在本期播客中采访了另一位嘉宾,我们就数据的未来进行了一些数据伦理的讨论。虽然《纽约时报》可能对数据伦理有独特的强调,但这应该是每个数据科学家都必须真正思考的问题。
关于克里斯的领导风格,有趣的是他对自己团队的期望。你会听到他在播客中谈到他期望他的数据科学家可能会不时向他们的首席执行官展示。所以,他们必须是伟大的沟通者;他们必须能够回答问题,并将他们所做的工作转化为 CEO 能够接受的清晰而简明的建议。这是我在整个对话中看到的一个主题:理解代码和统计数据还不够好;你也必须能够翻译它。
通过采访这些嘉宾,您对数据科学的当前或未来状态有什么了解?
Cole:首先,我了解到数据科学领导者面临一些共同的挑战。例如,围绕数据科学家是否应该集中或嵌入到各个业务部门,或者是否应该有某种混合模式,有这样的对话。关于这场辩论的利弊,我学到了很多,我们也谈了很多。
此外,数据科学领域的领导者强烈希望宣传数据科学的成功,并衡量不仅仅是 ROI。人们一致认为,成功不仅仅在于我们将这种模式投入生产后节省了多少成本。数据科学的领导者需要考虑一些措施,例如数据科学团队应该进行的适量研究,或者如何为可以获得资金的项目寻找好主意。有趣的是,这些想法不一定总是来自你的传统业务领域。他们可以来自您的数据科学团队本身。对我来说,了解不同的公司是如何做到这一点的真的很有趣。
最后,我惊讶地了解到各行各业的数据科学领导者是如何专注于提供业务影响的。我了解到没有一个行业能引领他们所有人。总的来说,各行业似乎都有一种对数据幻灭的共同情绪,这促使我采访的领导者确保他们将模型放在公司业务的最前沿。我希望这个播客能帮助更多的人做好这件事。
你能告诉我们一些你很想让观众听到的即将播出的剧集中的瞬间吗?
科尔:我和赛默飞世尔公司 DNA 测序部门的生物信息学主管菲奥娜·海兰谈过,在那次谈话之前,我从来不知道什么是生物统计学家,什么是生物信息学。我们包括了一本“生物学 101”入门书,以更好地理解一些基本的人类 DNA 概念如何转化为数据科学,这真是一场令人着迷的对话。我们甚至继续谈论冠状病毒以及数据科学本身是如何被用来制造疫苗的;我们略微谈到了测试,这是一个热门话题,非常有趣。
此外,我和作家约翰·汤姆逊的谈话非常激动人心。他是一名作家,已经写了两本书,他正在写第三本,围绕着数据的未来。我们讨论了他关于如何使用数据、数据隐私以及数据伦理的哲学。
最后,我和 Paylocity 的首席数据科学官 Adam McElhinney 就 people analytics 进行了一次非常有趣的谈话。每个公司都有一个人力资源部门,从他那里听到一些数据科学如何被用来试图限制面试过程中的偏见、公平薪酬和类似性质的事情的使用案例真的很有趣。
你希望在以后的剧集中回答哪些问题?
Cole:每次与新的数据科学领导者交谈时,我都会发现有不同的方法适合他们。虽然我认为有一些方法绝对更好,但我发现每种方法都有利弊。
我得出的结论是,数据科学领导者的风格,以及他们的数据科学团队所处的阶段,可以真正决定他们如何最好地管理和构建他们的团队。而且,那将会进化。因此,在某个时候,退一步谈谈数据科学团队随着规模和责任的增长而发生的演变将是一件好事。
数据科学领导者:你们人太多了
原文:https://www.dominodatalab.com/blog/data-science-leaders-there-are-too-many-of-you
感谢 Cassie Kozyrkov 贡献了这篇博客,它最初发表在 Medium 的迈向数据科学。
数据科学有一个问题。实际上是几个问题,但是从头开始,让我们从一个问题开始:领导力。
今天,我在数据科学(该学科涵盖了、人工智能、统计、数据汇总和可视化)领导者的峰会上发表了演讲。当我看着领导当今数据科学团队的最聪明的开拓者的脸的海洋时,我发现自己在想,“你们太多了。”
FiveThirtyEight 的 Nate Silver 向同样的数据科学领导者听众发表演讲
想想这是怎么一回事!在峰会上问任何人,他们可能会告诉你,如果你认为人才短缺很糟糕,那么数据科学领域的领导人才短缺就更糟糕了。
如今,大多数数据科学领导者都是我喜欢称之为“超越数据科学家”的人那些追求科学、工程或统计方面的正规训练的人,然后,奇迹般地,有一天醒来发现他们更感兴趣的是让数据变得有用,而不是为了追求数学的复杂性。
数据科学的领导者克服了所有的困难。
数据科学领导者:你们有太多的人,因为你们克服了所有的困难而存在。由于几乎没有做任何事情来训练你,你比我们应得的要多。这个幸福的意外是怎么发生的?没有人教你如何做你所做的,所以你的存在是我们的幸运。你的计划是希望在研究了十几年的方程式后,你就能知道如何领导了吗?如何做出好的决策?正如我的 SRE 同事所说,“希望不是策略。”
你应该有更多的人,但是计划是什么?
如果你喜欢定理,这里有一个:你的时间是有限的,所以如果你用它来学习费曼或德费内蒂,你就不会花同样多的时间来培养其他技能。我们不能指望数据科学家超越并立即知道如何成为优秀的领导者和决策者。谁会教他们这些?你不会通过整天写代码或证明定理来学习它。
相反,要成为优秀的领导者和决策者,他们必须谦逊地认识到自己萎缩肌肉中的弱点,并勤奋地掌握第二项技能。有时他们会带着很多伤痕艰难地学习。作为一个一开始就认为概率论是宇宙中最热门的东西的人,我非常清楚这有多痛苦。
有个态度问题。我们真的重视这些技能吗?
如果你的经历和我一样,你可能已经在一个亲数学的亚文化中长大,在这个亚文化中,对任何闻起来像“软”技能的东西表现出蔑视是一种时尚。这都是关于你是多么热衷于熬夜证明一些定理或用你的第六语言编码。当你被夹在那种视角中间时,你可能不会想到你应该重视领导力(或者沟通、商业意识、创造力和同理心等)……如果你变得软弱,你的同学会尊重你吗?
部分解决方案是改变时尚,让这些技能成为像原始数据科学这样有吸引力的领域中不可或缺的一部分。如果昂首阔步必须是年轻人的一部分,那么至少让他们相信,最高的荣誉是同时拥有两种肌肉。毕竟是事实。
说到确保数据科学团队得到有效领导,我们是依靠运气还是训练?
门槛很高,并不是每个有工作的人都能真正做到。
数据科学领域的领导力不仅仅是一学期的数字。是它自己的怪兽。你不仅必须对决策和信息如何推动行动有深刻的理解,还需要敏锐的嗅觉来发现如何有效地影响特定业务领域的细微差别,如果这还不够,你还需要了解各种技能的生态系统,这些技能需要汇集在一起才能使大规模数据科学项目取得成功。而这只是进入这个游戏的最低要求。
这是一个相当高的门槛,并不是每个领导数据科学团队的人都能达到。雇主们,你怎么知道你是否真的在雇佣一个人来领导你的数据团队呢?如果您的团队已经有了糟糕的数据科学领导,该怎么办?你怎么知道的?几乎没有任何关于这个角色的智慧可供你依靠。你能问谁呢?
数据科学是泡沫吗?
当今世界正在产生前所未有的数据。然而,有时我会被问到这样的问题,“数据科学是泡沫吗?“我希望我能坚定地回答,”肯定不会!“事实是,这要看情况。可悲的是,当我与各行各业的人聊天时,我总是听到同样的故事:“我们的数据科学家毫无用处!他们所做的就是坐着发表论文。我们会有足够多的有技能的领导者来防止这种司空见惯的现象吗?如果数据科学家不能证明自己的价值,他们不会在这些岗位上呆很久。
期望一个刚毕业的科学博士知道如何对商业做出有意义的贡献是不公平的。那不是他们花了那么多年学的东西。如果没有了解数据科学所涉及的内容并知道如何将数据与业务联系起来的人的指导,他们将面临重重困难。为了确保数据科学不是泡沫,我们迫切需要专业化的领导。它将从哪里来?
数据科学领导者的培训项目在哪里?希望不是策略。
人们,让我们感激我们是多么幸运!不知何故,优秀的数据科学领导者确实存在,技能也在那里。不是有效获得的技能,因为双重掌握是连续获得的,也许很痛苦,但仍然是正确的技能。我希望你和我一样强烈地感受到这种紧迫性。我们中少数几个经历了艰难困苦的人需要开始用更好的方式训练我们更多的人。
就我而言,我承诺尽我的一份力量。在过去的几年里,我一直在谷歌努力培养一种新的思考者,定位于作为团队的一部分,有效地领导或工作,专注于将数据科学应用于实际问题。为了培养正确的技能,我们从数据科学和工程中汲取了一些想法,并用行为科学和管理科学对其进行了补充。结果只是看起来跨学科,直到你看到共同的核心:决策和驱动它们的信息。这就是为什么我们开始称它为决策智能工程(不过如果你愿意,你也可以把它想成应用数据科学++的原因)。
让我们培养一种新的思考者:拥有让数据科学团队成功的技能的决策者。
我一直认为,数据科学是一项受益于技能多样性的团队运动,所以我设计了我们的培训计划,以鼓励各种背景的人参与进来。事实证明,伟大的数据科学领导者不一定是被超越的数据科学家。
我为我们在谷歌员工中培养这些技能所取得的成就感到骄傲…但这还不够。没有必要让每个人都依赖快乐的意外和完全沉浸在一个以上的学科中来建立相同的技能。我希望阅读这篇文章至少能激发一些了解数据科学决策者技能的人和我一起认识到数据科学本身就是一门学科,并尽可能广泛地分享我们的智慧。
面向企业的数据科学素养
原文:https://www.dominodatalab.com/blog/data-science-literacy-for-the-enterprise
By Zachary Brown, Lead Data Scientist, S&P Global Market Intelligence on February 07, 2019 in
数据科学、高级分析和开源技术提供的优势对于现代企业在快速发展的技术环境中保持相关性和竞争力至关重要。创业公司正在通过利用新的技术和分析技术来改变客户对整个行业的期望,从而颠覆各种行业。许多较大的组织可能难以采用新的分析方法,而广泛采用的最佳方式是通过在业务的各个方面利用分析的文化转变。
无论是大公司还是小公司,都在成倍增加他们的数据科学团队,以此来转变他们的业务,并通过数据科学推动整个企业的技术变革。但是仅仅雇佣数据科学家并不能保证大多数公司设想的范式转变。这一关键转变的关键是数据科学素养。
S&P Global-信用评级、数据和分析、研究和基准的金融服务提供商-我们以提供重要见解的悠久历史而自豪。该公司的历史可以追溯到 1860 年,当时 Henry Varnum Poor 出版了一本美国铁路行业投资者指南,为投资者做出明智的投资决策提供了重要的见解。
该公司诞生于数据和分析流程的智能、有效的应用,现在我们可以在任何地方用预测模型补充这些应用;我们的核心竞争力围绕着我们的模型驱动能力。正如许多公司可能意识到的那样,保持和发展这种方法不仅仅意味着数据科学家团队处理数据——要真正实现文化变革,我们需要用基本数据科学素养武装员工。
从哪里开始?
首先,我们必须决定用什么机制来对分布在全球各地的 17,000 名员工进行数据科学教育。我们需要弄清楚如何实施一个能够以有趣和互动的方式扩展的培训计划。我们还需要考虑对广泛的参与者群体有价值的一套正确的资源和材料,教育那些数据科学新手,同时也为更高级的学习者提供有用的实践经验。
我们决定提供一种数据科学教育的混合方法,利用大规模在线开放课程(MOOCs)中提供的开源学习材料,并补充额外的内部资源,将所有课程模块与特定的“熟悉”应用联系起来。为此,我们确定了本次会议的四个主要组成部分:
- 来自开源 MOOC 的视频和练习
- 由内部专家主持的实时互动审查会议
- 促进参与者之间讨论和交流的在线论坛
- 在线数据科学平台,用于促进技术材料的管理、交付和执行
在选择正确的课程时,我们开始寻找一个既能提供足够的广度和深度来吸引广泛的基础,又不牺牲技术严谨性的课程。信不信由你,虽然数据科学对业务至关重要,但对普通员工来说,学习数据科学可能不是最大的吸引力。
我们的目标是确定一门与员工工作优先级相一致的课程,以及一门我们可以将领域和公司特定信息融入其中的课程。在互动会议中,我们邀请了 S&P 全球市场智能数据科学部门的成员来主持讨论,并展示现有的计划,以展示数据科学技术目前在组织中的应用情况。我们还希望找到一个免费且易于使用的论坛平台,让参与者与讲师互动,更重要的是,与其他参与者互动。最后,我们需要从技术上简化员工设置数据科学环境并获得所需的技术支持。
我们是这样做的。
- 我们求助于 Udacity 的开源课程 UD120:机器学习简介进行基于计算机的指导培训,包括讲座(视频)和编码练习,员工在 GitHub 库中进行了为期 10 周的培训。
- 我们利用 Piazza 的免费 Q & A 平台来促进员工之间的异步沟通和协作。
- 我们主持了每周一次的现场会议,进行同步评审。在这些会议期间,我们做了几件有助于评估项目进展和持续成功的事情:
- 复习本周的材料。
- 提供补充信息或推荐资源,为员工提供进一步研究的话题。
- 回顾编码练习并解决任何障碍或挑战。
- 参与互动、开放式的问答。
- 将课程学习和练习应用到标准普尔的实际数据科学项目中。
- 我们求助于 Domino 数据实验室平台,从本质上充当支撑这个程序的“粘合剂”。多米诺:
- 托管我们的课程材料。
- 为员工提供了一个共享的工作平台,使他们能够根据需要轻松增加和减少计算资源,并促进轻松的协作和结果共享。
- 简化了向员工“推送”课程材料更新的流程。
最近怎么样?我们看到了什么结果?
该计划首次运行了 10 周,在此期间,来自多个全球部门的 130 多名员工参与其中。在整个 10 周中,在每次指导学习会议和在线论坛中,参与都很活跃。
我们一直在收集非常积极的反馈。以下是我最喜欢的一些参与员工的轶事:
- “复习课是有用的,因为它指导了课程,澄清了中途出现的疑问。”
- “很难在 10 周内涵盖数据科学模型的广度。我认为数学课和编码实践的结合是理解的最好方法。”
- “我认为技术练习很好地激发了你的好奇心,人们会一头扎进有趣的部分。引导式会议非常有利于看到真实世界的例子,也是提问的机会。”
- “我喜欢听不同的数据科学家解释概念。视觉效果很棒,回答问题也很有帮助。”
在所有 17,000 名 S&P 员工都具备“数据科学素养”之前,我们还有很长的路要走,但我们已经有了一个良好的开端,并期待看到该计划如何培养一种比我们今天更受模型驱动的文化。
数据科学模型互为基础
原文:https://www.dominodatalab.com/blog/data-science-models-build-on-each-other
亚历克斯·利兹,在多米诺数据科学弹出窗口上展示了“建立本地客户模型”。Leeds 讨论了 Squarespace 数据科学团队如何构建模型来解决关键的业务挑战,以及如何利用复杂的组织结构来加速数据科学工作。这份 Domino 数据科学领域笔记提供了他演讲的亮点和视频剪辑。完整的视频记录也可用于观看。此外,如果您想了解关于在整体数据科学实践中构建和管理模型的更多信息,那么可以考虑 Domino 的模型管理论文或大规模管理数据科学的实践指南。
数据科学实践
在“建立本地客户模型”中,Alex Leeds 讨论了 Squarespace 数据科学团队如何应对业务挑战,或者说,“我们应该在哪里、在哪些城市进行有针对性的本地化营销”?在几周内,数据科学团队通过构建一个模型来解决业务问题,该模型可以预测成功,并使业务利益相关方能够确定关注哪些城市。数据科学团队能够在几周内构建预测模型(和许多其他模型),因为他们已经有了一个生态系统。包括但不限于数据科学实践的生态系统。
Leeds 指出“数据科学实践依赖于大量其他步骤”,包括数据收集、定性研究和市场测试(即每年 30 多次实验),这些步骤“也为我们在模型中进行的分析提供了素材”。利兹还指出,数据科学家和数据工程师“并肩”工作是“公司的巨大优势”,因为它使数据科学家能够“非常快速地获得数据”,并“对我们正在利用的信息充满信心,甚至只是开始”。在演讲的结论中,利兹还指出,“有许多模型进入了分析”,如何“数据科学模型相互建立”,“模型多样性迫使技能集多样性”,“并与组织流程互动”。
处理业务问题或挑战
在演讲中,Leeds 概述了数据科学团队解决业务问题的方法。该方法包括确定 Squarespace 表现良好的城市,“收集特定地点的数据”,“确定绩效的驱动因素”,以及“利用这些驱动因素来制定商业战略”。这种方法使该团队发现,在城市层面“重要”或预测成功的一些因素包括 30-44 岁之间的人口比例。潜在的上下文含义是,这个年龄范围内的人正在建立业务,并使用网站开展业务。这是一个有趣的发现,因为利益相关者的假设是更年轻的人口统计将是成功的预测者。利兹还指出,有许多预测成功的附加指标,但只有两个附加指标包括拥有研究生学位的人的百分比和食品车的数量。
虽然预测指标很有趣,但是 Squarespace 是如何利用这些结果来影响业务战略的呢?利兹指出,这些结果有助于 Squarespace 确定关注哪些地点。
数据科学实践的意义
Leeds 以这个项目作为讨论“在实践中做数据科学”的载体来结束他的演讲。利兹指出,虽然该团队建立了一个模型来预测成功,但“有许多模型进入了这一分析。”
他指出“模型建立在彼此的基础上”,并使团队能够“进行非常快速的分析”,并为组织提供具体的建议。利兹还主张在模型集合中有“一些有趣的多样性”。他还指出
这些数据来源和模型来源将会创造出这个有趣的组织过程。您需要有足够接近您的组织的某些分支的数据科学家来构建知情的模型。甚至在这个非常干净、非常简单、非常普通的问题中,我们在不同的城市做得怎么样?我们下一步应该关注哪里?….我们实际上描述了一个系统,它在组织结构和实践方面都非常复杂。”
结论
在“构建本地客户模型”中,Alex Leeds 深入探讨了 Squarespace 数据科学团队如何通过构建模型和组织结构来加速数据科学工作,从而解决关键的业务挑战。虽然这份 Domino 数据科学领域笔记提供了演讲的亮点,但的完整视频可供观看。此外,如果您想了解在整体数据科学实践中构建和管理模型的更多信息,那么可以考虑 Domino 的模型管理论文或大规模管理数据科学的实践指南。
^(Domino 数据科学领域笔记提供数据科学研究、趋势、技术等亮点,支持数据科学家和数据科学领导者加快工作或职业发展。如果您对本博客系列中涉及的数据科学工作感兴趣,请发送电子邮件至 writeforus(at)dominodatalab(dot)com。)
数据科学不仅仅是机器学习
原文:https://www.dominodatalab.com/blog/data-science-more-than-machine-learning
本 Domino 数据科学领域笔记提供了来自 Addhyan Pandey 的 Domino 数据弹出式演讲“在汽车行业利用数据科学”的亮点和视频剪辑。Addhyan Pandey 是 Cars.com 的首席数据科学家。这篇博文中的亮点包括 Pandey 使用 word2vec 来识别平台上的重复车辆,他的数据科学团队如何将预测模型称为“数据产品”,以及该公司的整体数据科学方法。虽然这篇文章涵盖了亮点和视频摘录,但他的演讲的完整视频是可用的。如果您对此类内容感兴趣,请访问 Domino 数据科学弹出播放列表或考虑参加 Rev 。
汽车行业的数据科学
Cars.com 首席数据科学家 Addhyan Pandey 在他的演讲中探讨了数据科学如何在整个公司实施,以及数据科学如何不仅仅是机器学习,“在汽车行业利用数据科学”。潘迪报道如何
- 一个电子商务网站的核心价值主张是他们的推荐系统的相关性
- 他在公司开始工作时,使用了 word 2 vec T1 来识别平台上的重复车辆
- 数据科学团队将预测模型称为“数据产品”
- 该公司目前的数据科学工作方法包括建立“一个强大的产品,建立一个可扩展的、准确的、真正具有非常低的计算时间的模型”。
当问题不仅仅是联系买家和卖家时
Pandey 以讨论 Cars.com 的收入流如何包括订阅和广告模式开始了他的演讲。因此,数据科学团队试图解决的问题不仅仅是连接买家和卖家。目标是“管理汽车的整个生命周期”,与电子商务市场中的买家和卖家进行多点接触。Pandey 指出,推荐系统,尤其是其相关性,是确保用户继续参与电子商务市场的核心价值主张。
使用 word2vec 进行关联
潘迪指出,当他开始在 Cars.com 工作时,他看到“一大堆文字”的卖家信息,“如果我要买车,我永远不会去读这些信息,因为我在一个能给我提供精确信息的网站上接受过培训……”甚至要弄清楚“两辆相似的车,真的很难”。这是一个相关的建议问题。潘迪决定通过“把所有这些单词放在一个向量空间中……”来解决这个问题。将所有这些词聚集在向量空间中,并得到特定车辆的向量”。这使得数据科学家可以“计算两者之间的余弦相似度”。此外,识别平台上的重复车辆是使用 word2vec 的额外好处。
作为数据产品的预测模型
Pandey 还在演讲中指出,“当你谈论数据科学时,只谈论特定的模型是不公平的…如果我只是建立一个模型,而不知道如何实现它,我就没有公平对待整个系统。我们把所有的预测模型都称为数据产品”。他讨论了三种数据产品,包括
- “数据管道化,基本上是聚合,为数据科学家做大量的数据准备,这样他们就不会浪费 80%的时间,而且还能很快提高整体实时推荐预测。”
- “算法本身。数据科学家真的花了很多时间试图为给定的问题建立最佳模型。这是我们第二大技术产品。”
- “第三个问题是,一旦你有了这个,你如何扩展它?你如何确保你的系统完美无缺?或者如果不是完美无缺,你怎么能达到艺术完美的特定状态?这就是我们的机器学习平台。这基本上是扩展所有这些预测模型,供每个人使用,这是我们在组织内民主化或去中心化数据科学的另一种方式。”
数据科学的“全貌”。很复杂。
在演讲的最后,Pandey 讨论了他对数据科学的观点是如何在这些年里发生变化的。2011 年,他认为数据科学是一种预测模型。然后,随着他与更多的团队合作,他扩展了自己的视角。2017 年,他指出数据科学的“全貌”更加“复杂”,数据科学团队需要“构建一个强大的产品……构建一个可扩展、准确、计算时间非常短的模型。”
虽然这篇博文涵盖了潘迪演讲的一些重点内容,但完整视频可供观看。多米诺数据科学事件的其他录音演讲也可在获得。但是,如果您更喜欢亲自参加活动,那么可以考虑参加即将到来的 Rev 。
^(Domino 数据科学领域笔记提供数据科学研究、趋势、技术等亮点,支持数据科学家和数据科学领导者加快工作或职业发展。如果您对本博客系列中涉及的数据科学工作感兴趣,请发送电子邮件至 writeforus(at)dominodatalab(dot)com。)
数据科学的过去和未来
原文:https://www.dominodatalab.com/blog/data-science-past-future
Paco Nathan 在 Rev .上发表了“数据科学,过去&未来”这篇博文提供了一个简明的会议摘要、一段视频和一份书面文字记录。
会话摘要
在 Rev 的"数据科学,过去&未来", Paco Nathan 涵盖了对几十年来一些常见的有影响的主题的背景洞察,也提供了一个帮助数据科学家、研究人员和领导者考虑未来的“镜头”。通过这个镜头,行业能够吸收和重复一些当前的“热点问题”,并推断在其工作过程中可能出现的决策、结果和见解的潜在影响。Nathan 还提供了最近调查的摘录和见解,以帮助提供额外的背景。
会议的主要亮点包括
- 数据科学作为跨学科领域的出现——来自工业界,而不是学术界
- 挑战现状的进步遵循类似的公式,包括“硬件能力以戏剧性的飞跃发展”;“作为响应,软件层提供了新型的控制系统和概念抽象”;总之,这些表现为计算资源和数据速率的大幅增长”;以及“行业团队利用日益先进的数学来解决新颖的商业案例”。
- 为什么在机器学习的背景下,数据治理不再是一个“枯燥的话题”,以及《华尔街日报》的“数据治理全球清算”如何与“利用数据科学团队进行新业务案例的奖金”潜在相关。
- 如何“看到数据科学的价值并了解模型的企业高管,他们现在正在加倍下注,并投入更多资金。”是调查中的一个意外收获
https://www.youtube.com/embed/dwvbKzdq1NI?feature=oembed
副本
帕科·内森:
谢谢你,乔恩[鲁尼]。我真的很感激。我很荣幸能够在这里发言,也很高兴能够参与 Rev。这是一种平衡。今年 Rev 真的发出了一种声音。这是关于谈话和讨论的混合。是关于出席者的。这是关于观众和走廊谈话。这是商业、工程、数据科学等领域中重要事物的完美融合。很少遇到这种情况,我们真的很兴奋。我肯定想提供一些呼喊。你也看到了乔恩在这里,做着出色的主持工作。此外,Karina Babcock 是我们的另一位联合主席,她真正将所有这些整合在一起,值得我们鼓掌。我应该提一下卡瑞娜刚发来的统计数据。我们已经有将近 700 人注册了。我们有 668 人注册。只有大约 600 人登记并获得了徽章…这是我们去年的两倍多,增长非常好。恭喜你。
回到我的话题。如果你想看幻灯片,它们会在 Twitter 上。如果你有智能手机,使用二维码,你可以在你的手机上加载它。会有很多幻灯片,可能比需要的材料更多,但如果你想深入了解一些背景知识和很多链接。我有一种预感,其中的一些链接你以后可能会想追查。
我做的很多工作是开发主题,走出去进入行业,找出什么是有趣的项目,这些项目意味着什么样的变化,谁是改变发生的人,他们有哪些共同的问题,他们正在努力解决,我们如何才能让这些问题浮出水面?这是我和多米诺一起做的事情之一。我做了一个每月专栏,试图揭示我们看到的一些主题。
我想展示一下我们的过去。在数据科学领域,肯定还有其他人对此谈得更多,我们将指出他们。但是,我将提供一个视角来审视数据科学在过去几十年中发生了怎样的变化,然后将其应用于四个紧迫的问题。我们现在正在应对的一些非常棘手的问题,这对我们未来的发展意味着什么?
首先,如果你没看过这个,约翰·图基…对了,我们有给约翰·图基的袜子。约翰·图基是贝尔实验室的数学家。早在 1962 年,他写了一篇名为“数据分析的未来”的论文简单来说,在 1962 年,甚至很多大学都还没有电脑。能够使用机器来处理数据的想法还是比较新的。这是未来。对很多人来说,这几乎是科幻小说。即将到来的事情的影响,能够进行大量的数据分析,进行大量的数据处理,以及将会产生什么影响,这些都是非常新的。图基完成了这篇论文。这是一本很棒的读物。这是 50 年前,差不多 60 年前,但他谈论的是跨学科的东西。他说这不仅仅属于统计学。如果你看看图基,为什么他会在那里,他在统计上做了令人难以置信的工作。
他也确实提供了很多关于数据可视化的早期想法。如果你读过《爱德华·塔夫特》或者上过这门课,你会听到关于约翰·图基的一切。但问题是,新兴事物是跨学科的。它涉及大量的计算机械和自动化工作。它涉及到许多有趣的新东西,即数据管理。它涉及到大量的应用数学工作,一些统计学和可视化的深度,以及大量的沟通技巧。其他谈论过这类历史的人要多得多。此外,今天晚些时候,我们将邀请《纽约时报》的克里斯·维金斯和哥伦比亚的记者发表演讲。克里斯已经做了出色的工作,记录了许多深入的历史,现在也在教授这方面的知识。我也绝对推荐克里斯。
我最近做了“五十年的数据管理和超越”,它着眼于大致相同的时间段。几十年来,我们看到,在每一个十年中,行业都面临着数据管理业务需求方面的挑战。大约每十年就有新类型的框架出现,以满足这类需求。借用马歇尔·麦克卢汉的一句话,如果你听说过“媒介就是信息”这个委婉的说法,真的,这是一个非常密集的陈述[听不清 00:05:09]。麦克卢汉所说的是,当新媒体被引入时,它不会取代以前的媒体。这只会让事情变得更复杂。从我们管理数据的历史来看,我们也看到了这一点,随着新型数据管理框架的出现,它们并没有取代以前的框架。
可以说,60 年代的层次数据库是最重要的数据库之一,现在普遍用于信用卡交易。关系数据库并没有取代它们,但问题是它们使它们变得更加复杂。了解如何以及为什么使用不同类型的数据框架,以及这对您所做的决策、结果以及您提出的见解有什么影响。
这里有几段历史。还有很多其他的。然而关键是,这是来自工业界,而不是学术界。在某种程度上,学术界仍在努力将数据科学融入某种学科。甚至我在大学里看到的一些很棒的课程,他们会把它和这边的电子工程或者那边的统计学联系起来,有点把它束之高阁。但这是跨学科的,我们会详细讨论。
在过去的 60 年里,自从图基首次描述了一些这种现象,有一种效应一次又一次地发生。你可以用它作为一个镜头,来分析在这段历史中的任何一个特定的时间点,或者仅仅是未来会发生什么。这个镜头分四步描述。第一,硬件能力在发展。它们通常以脉冲形式出现——有阶跃函数。这是因为硬件能力是物理学中非常基础的工作,也是研究和电子工程中的大量工作。但是,在材料科学方面也有很多工作要做,这并不是一步一步来的。这是一步一步来的。
然后软件会适应。软件在很多方面对硬件发生的事情做出反应。软件不断发展,出现了新的抽象层。作为一名计算机科学家,我们一直在兜售不同类型的抽象层以及不同类型的控制系统的概念方法。总之,这些因素导致计算能力、CPU、内存、网络、存储等方面的激增。与此同时,我们看到了数据速率的跃升。随着时间的推移,这两者逐渐增加。
行业对此的典型反应是将越来越多的高级数学应用于业务用例。最终,将更高级的数学放入硬件层在经济上变得非常重要。你知道,举个例子,如果你在 20 年前谈论预测分析,这个领域的主要人物会把你笑出房间。他们会说,“你知道吗?预测分析,是的,没那么多。”我的教授们,像布拉德·埃夫隆和其他人,也因在这个问题上犯了一些真正的 T2 式的错误而出名。
如果你 10 年前出去谈论机器学习在工业中的重要性——我当时就在那里——你会遭到很多反对。人们会说,“你知道,也许是谷歌、亚马逊。但是对于大多数企业来说,使用机器学习…不完全是。这是不可能的。你知道,像电信和保险这样的公司,他们并不真的需要机器学习。”但这改变了。
如果你五年前在工业领域谈论图形和图形算法以及图形数据表示的重要性,因为大多数商业数据最终都是某种形式的图形。你要谈论数学,高级数学,它需要在图形硬件的底层,你会遇到巨大的阻力。我知道,是我干的。因为你开始讨论,不仅仅是矩阵和向量,你会讨论一些叫做张量和张量分解的东西。五年前,人们笑了。这就像为什么商业人士会关心一个叫做张量的东西?现在,谷歌花了多少,10 位数营销 TensorFlow?我不知道。抱歉。如果我弄错了,向谷歌道歉?这种事情一次又一次地发生。
其中一个应用是关于数据治理。同样,我们在 Domino 上做了一个关于这个的专栏。此外,在过去的一年里,我为奥赖利做了一份行政简报。如果您愿意,可以查看这些链接,其中有更多关于数据治理的详细信息。我知道了数据治理,这是一个有趣的想法,但有很多错误的开始,有点枯燥的话题。但在过去几年机器学习的背景下,这突然不是一个干巴巴的话题了。这突然成为我们正在处理的最重要的问题之一。
让我们深入研究一下。顺便说一下,奥赖利的本·洛里卡给我布置了一个课题,研究…数据治理正在发生什么变化?我们可以从一些历史背景中得出这个结论。早在 70 年代,我们有大盒子,大型机。我从 70 年代开始编程。我不知道是否有人在 70 年代开始编程。拜托了。这会让我感觉好点。谢谢你。太好了。好吧。我感觉好多了。我们有这些大盒子,它们没有明显的区别。你在这些大机器上运行应用程序,应用程序会调用操作系统中的一些库。但是,就像每个应用程序都运行一些数据一样,如果需要的话,还会运行一些网络,这并不是真正的差异化。他们有其他终端设备,如读卡器,可能还有绿屏或电传打字机。这些都是通过专有线路连接的,事情就是这样。
到了 80 年代,盒子变得与众不同。你有不同类型的服务器在运行。他们中的一些人开始充当客户,他们可以通过开放的网络标准打电话。现在,以太网出现了。你有开放的协议标准,一个服务器可以调用另一个服务器并访问 API。你得到了一些区别,你得到了这个大的客户机/服务器体系结构。当我在研究生院的时候,我们系见证了两个新想法的推出。其中一个,开始有点不确定,但后来变得很大,它被称为 SUN 工作站。另一个,有点不确定,他们被大学查封了,但是它变得很大,所以大学获得了相当多的股权。它叫做思科。与此同时,楼上有个家伙,温顿·瑟夫,他创造了这个叫 TCP/IP 的新东西。作为一名研究生,看到许多这样的东西被发射出去是一种乐趣。有一点数据治理,因为现在有数据库服务器,但仍然不多。
进入 90 年代,我们从网络转向了互联网络。我们有 TCP/IP。我们有很多有趣的网络协议,这导致了事物的爆炸,万维网等等。不仅仅是客户机/服务器,现在我们有了更多的区别。这变得更加复杂。我们有三层,三层。表示层是关于,比如说,web 浏览器,对,你可以在 web 浏览器中做什么。但是业务逻辑越来越多地回到中间层,也称为应用服务器、web 服务器,后来被称为中间件。然后在底层,你有你的数据管理,你的后台,对不对?除了数据库服务器,您还拥有数据仓库和商业智能。一些数据治理开始真正出现在那里,但它实际上更侧重于数据仓库。
后来事情发生了变化。进入 2000 年,你可以确定一个时间,1997 年第三季度,有四个团队确定。到那时,他们都得出了同样的结论。他们追求几乎相同的解决方案。回去真的很棒,再一次,在幻灯片上追踪链接。 Greg Linden 关于拆分亚马逊网站的文章。埃里克·布鲁尔谈论 Inktomi,雅虎的起源!搜索。杰夫·迪恩谈论谷歌的起源,这甚至让我无从下手。然后我的朋友 Randy Shoup 讲述了易贝是如何从四台服务器发展成多台服务器的。
事实是,他们都认识到,在当时,当您拥有数据库服务器时,随着您的业务增长,您将获得越来越大的硬件设备,并且您将从 Oracle 获得越来越大的许可证。他们意识到,电子商务和他们看到的增长率,第一,他们不能得到足够大的盒子。第二,他们买不起甲骨文的许可证。相反,这四个团队,他们所做的就是说,“好的。让我们把这个庞大的整体式 web 应用程序拆分开来,在数千台商用硬件服务器上运行,主要是 Linux。我们会有服务器农场。现在,服务器农场的问题是,这种商品硬件,他们经常摔倒。你想有很多关于他们的日志,只是检查他们做得怎么样。
凭借这一点,如果你获得客户互动的日志文件,你将它们聚集起来,然后你获得聚集的数据,对它们运行机器学习模型,你可以产生数据产品,你将这些数据产品反馈到你的网络应用中,然后你就可以在业务中获得这种效果。这导致了吴恩达著名的“数据的良性循环”这就是云的起源,服务器农场。这就是大数据的起源。这是机器数据世界中数据快速增长的起源,也是机器学习的商业用例。
现在,这里发生的另一件事是这是 2000 年。这就是 cloud 推出的时候。我们在建筑领域得到了更多有趣的工作。还有许多有趣的威胁,以及安全方面正在发生的变化。那时我在网络安全部门工作。你有id,你有嵌入式应用网关,你有模拟人生和其他的东西。更多的智慧被推到了边缘,这是一个主题。你还推出了智能手机。有更多的移动设备。这种情况开始变得相当复杂。然而,数据治理在很大程度上仍然在数据仓库之上。然后我们十年后推出。2000 年代末是你开始组建团队和行业的时候,正如 Josh Willis 昨晚精彩展示的那样,你开始组建一些被称为“数据科学”团队的团队。当时,我领导了几个早期团队,被称为“数据科学”。
进入 2010 年,我们有了数据科学实践,我们有了大数据工具的发展,我们有了大数据的更复杂的使用以及云中正在发生的事情。你开始看到点解决方案。就在他们 2012 年推出之前,我去星巴克和 Alation 的创始人见了一次面,画的是众所周知的餐巾背面。基于大数据的数据治理已经开始发生。你也看到了数据科学更具战略性的应用。这些工作流将反馈到您的业务分析中。安全性继续发展,云继续发展,越来越多的移动设备。
然后我们滚动时钟到现在,我们在哪里。这是一个更加复杂的景观。进入 21 世纪 20 年代,这是托马斯和亚历克斯在小组讨论中描述的非常精彩的内容。我喜欢那样。他们提到了许多重要的观点。事实上,我的演讲更多的是解开这些主题,并展示其背后的时间线。我们有这个复杂的环境,大量的数据共享,数据经济,外部数据,大量的移动设备。现在,我们有低功耗的设备和推理在上面运行。你可以使用 TensorFlow.js,将深度学习模型的资源占用降低 5-6 个数量级,并在甚至没有电池的设备上运行它。
好吧,我们有一个非常复杂的景观。it 中的数据治理部分变得越来越重要。所有这些都有合规性,因为这现在真的很重要,但是,数据治理解决方案,他们的点解决方案,有些用于移动设备,有些用于边缘推理,有些用于边缘安全和 cdn,如 Cloudflare 和 AWS Shield 等。有的针对大数据,有的针对数据仓库等。没有共同之处。那里真的没有技术栈。有一些正在发展的开放标准,但这部分确实需要解决。可以说,这是我们面临的最大问题之一。它也是数据科学的驱动力。《华尔街日报》称 2018 年为“数据治理的全球清算年如果你不知道,2018 年全球有数亿人受到安全漏洞和数据隐私泄露的影响。也是在这一年, GDPR 开始生效。我对受此影响的几家最大的公司进行了视频采访,就在它生效前两天,在伦敦,这很棒。现在,我们有 CCPA 将于明年在加州和美国其他州上线,紧随其后的是 GDPR 风格的法规。
当然,也是在那一年,我们有了关于脸书和《剑桥分析》的整个新闻周期。可以说,许多有趣的基于广告的商业模式和企业监控平台正在浮出水面。你可以在新的周期中看到脸书。你可以看到脸书站在国会前。可以说,甲骨文在这方面是一个更大的玩家,尽管他们在如何做公关方面更老练一些。就企业监控而言,甲骨文可能是那里最大的鱼。
我想说的是,系统架构、驱动软件层的硬件以及威胁和风险方面的整个格局都发生了变化。它改变了我们应对它的方式。你会看到这些驱动因素包括风险和成本,但也包括机会。
这也是托马斯和亚历克斯谈论的一些内容。这些事情改变了我们,改变了我们的行业。事实上,这就是我们如何利用数据科学团队的优势所在。这就是你获得数据科学投资回报的原因。这就是我们现在的处境,这就是我们面临的挑战。
我的同事,O’Reilly 的 Ben Lorica,他和我为 ABC 做了三个关于采用的大型调查,即人工智能、大数据和企业中的云。我们在 Domino 上有一篇关于这个的文章。还有,这些调查,这些都是迷你书:如果你想抢,都是免费下载的。我们刚做了三个。我们还有另外两个在筹备中。但我们试图做的是一项对比研究。我们试图寻找大鱼,寻找采用数据科学的企业公司,那些成功的,已经在生产中进行机器学习模型五年或更长时间的公司。让我们来对比一下这些人和那些刚刚开始的人。你知道,什么是德尔塔?我们能从中学到什么?
我试图将一些高层次的发现描述为生存分析。你可以考虑有三个水桶。有些公司基本上是不成功的。他们还没有真正进入这个领域。还有一些公司已经做了几年了。他们正在发展他们的实践。他们正在评估和采纳。还有一些公司,他们在机器学习和生产方面已经取得了五年或更长时间的成功。每个桶的共同点是什么?
当你看到落后者,不成功的人,排名第一,他们被埋在技术债务中。如果你看一下他们的数据基础设施,你会发现他们抱怨的一件事,尤其是他们在协作工具方面有太多的技术债务需要解决。他们的数据基础设施不支持它。他们正在与数据孤岛作战。事实上,这需要数年时间——这种企业转型需要数年时间来修复。那么问题是,即使他们今天开始,也需要很长时间。问题是他们今天不会开始,因为从高层来看,公司文化没有认识到这种需要。这不是当务之急。这是来自高层管理人员、董事会等。如果你没有这种公司文化,你就无法跨越这些障碍。即使你有高层的支持,另一个问题是,他们没有足够的人来有效地管理产品,这些人可以将技术能力转化为商业机会。如果没有这些人在一线单位,这是不会发生的。如果你把这三个挑战加在一起,就会淘汰超过 50%的企业。超过 50%的企业还需要数年时间才能在这一领域具有竞争力。此外,不仅仅是要有竞争力,而且正如过去的专家小组所讨论的那样,要考虑业务效率。他们需要投资多少亿美元,与那些拥有先发优势的公司相比,效率如何?他们还需要数年时间才能达到这一点。
如果您查看中间的部分,他们有三个共同的报告内容。一个是数据质量,清理数据,缺乏标记数据。你猜怎么着他们应该对此感到担忧,这是一个大问题。太好了,他们正在努力。他们还抱怨人才短缺。他们就是找不到足够多的有合适技能的人来雇佣,而且他们在现有劳动力的再培训和技能提升方面有困难,这是一个永恒的问题。另一件事,我们去年报道的另一个现象是,一旦你开始做好准备,一旦你完成了桌面赌注,你开始有协作基础设施来展现数据洞察力,有些事情就会浮现出来。你开始注意到,“嘿,我们有一些安全问题。”“嘿,我们遇到了一些数据隐私问题。”“嘿,我们有一些公平和偏见的问题.”“嘿,我们有一些其他的道德和合规问题,我们将不得不处理这些问题。”你会陷入很多资本和时间的竞争中。
现在,深入到成熟的部分,他们报告了两个共同点。一个是关于工作流程的再现性。就机器学习而言,这非常重要,因为你在处理随机系统。所以可重复的工作流程是一个非常困难的问题。另一件事是关于超参数调整。有一些公司,比如 Determined AI,在这方面做得非常出色。这意味着成熟的实践不想把所有的钱都花在云供应商身上。当他们训练大量深度学习模型时,他们希望做一些更有效的事情。成熟阶段的问题是优化,而不是阻碍。这些都是很好的问题。
所以这是一种观察公司和评估的方式,他们在哪里?他们面临的困境是什么?此外,这也是了解供应商并了解他们正在解决的棘手问题的好方法。这个机会有多大?另一种方法是你可以把它分成不同的部分,看看负债和资产。坦率地说,处于中间的公司,不一定是科技独角兽,它们真的很有趣,因为它们往往有很多拥有领域专业知识的人。他们还倾向于访问大量有趣的数据集,这些数据还没有被货币化。他们有办法,他们有一条路,如果他们想与先行者,科技巨头竞争,因为通常科技巨头不具备该领域的专业知识。
有一些研究——O ’ Reilly 正在做这些研究,麻省理工学院斯隆管理学院也做了一些很棒的研究——我在这里总结了一些,并放了一些链接。此外,麦肯锡全球研究所的 Michael Chui 和其他人进行了一项不可思议的研究,这有点可怕。问题是,这些研究是趋同的,它们倾向于显示同样的东西。基本上,在使用数据的公司、了解数据的公司、正确了解模型的公司等方面,富人和穷人之间存在差距。,而且这个差距还在扩大。
现在,在我们的对比研究中,有哪些公司做得很好?他们报告的共同点是什么?第一,他们使用专门的角色。他们已经接受使用数据科学团队和数据工程团队,而不是仅仅说,“不,不,那是业务分析师。”这是一个标记。另一个原因是,Nick 在昨天的主题演讲中提出的观点是,在使用专家、内部数据科学团队方面非常出色。这是游戏中赢家的做法。那些经营不善的公司倾向于依赖外部顾问。
另一件让我们感到惊讶的事情是,更复杂的公司有使用可靠清单的实践。他们以前犯过错误,他们不会再犯同样的错误。当他们在生产中推出机器学习模型时,他们正在整理什么该做,什么不该做的清单。那很好。我真的很高兴看到这一点。实际上,我们对他们的积极主动感到惊讶。第四点是完全出乎我们意料的事情。你知道,通常,当你考虑运行项目、运行团队时,在设定项目优先级方面,在描述项目成功的关键指标方面,这通常取决于产品管理。但就使用数据科学的成熟公司而言,他们更依赖于他们的数据科学领导,而不是他们的产品经理。
再一次深入探究。这意味着,如果你把产品管理从网络应用程序开发和游戏开发中分离出来,并尝试使用这种嵌入式系统?它不起作用。这本书实际上还没有写这个领域的产品管理,尽管 Pete Skomoroch 今天晚些时候会讲,并且肯定会听他讲些什么。他所说的还没有出现在生产线上,但这是必须的。
好吧——这是在哪里发生的?这种差距是从哪里开始出现的?我可以指出 2001 年。非常有趣。首先,有些事情…一件小事叫做。发生的公司破产,只是一件小事。此外,这也是数据仓库和商业智能的全盛时期。我的意思是,可以说,商业智能的概念来自 50 年代末。他们在 80 年代末确实表达得很好,但他们在整个 90 年代得到了重视。这变成了一种嵌入式机构。坦率地说,在早期领导数据科学团队时,您几乎总是不得不与 BI 团队竞争。也是在 2001 年,发表了“敏捷宣言”。这变成了另一种嵌入式机构,一种我们仍在努力的机构。问题是…这里有多少人读过“敏捷宣言?”好吧。我会说大概 20%或 30%。“数据”这个词没有出现,这也不是他们的首要任务。他们没有考虑数据。那是后来才想到的。他们在考虑基于代码的迭代。一代开发人员,他们把数据库等同于关系数据库,这是不正确的。凭借这一点,他们对数据的复杂程度是系统的易读性,关系型的卖点的一部分,等同于数据的易读性,这是不正确的。这是一种搞垮公司的方法。
但是那些有先发优势的公司,他们向 NoSQL 做了一个急转弯。我们在数据科学方面所做的,他们真的抛弃了很多以前的做法。你知道,他们动作很快,而且他们打破了东西。真正的编年史…我喜欢的是 Leo Breiman 的论文,名为“两种文化”,始于 2001 年,他真实地记录了这种巨变,真实地谈论了预测分析的兴起,尽管他的许多同事都嘲笑他。
我对此的描述是,我们已经有了一代主流开发人员,他们被告知编码是最重要的,数据是第二位的,这在业界仍然很普遍。但是,先行者公司已经改变了观念,认为学习是最重要的,数据是一种竞争优势。现在,这两种说法不一致。有很多人相信前者,不会采纳后者。如果他们不相信,你就不能重新训练他们。这是我们正在努力解决的一个根本性的脱节问题。可能对于前一类的人来说,如果他们达不到这个水平,嗯,有一些好的建筑工作。
原因如下,因为企业高管更清楚。看到数据科学的价值并了解模型的企业高管们现在正在加倍下注,他们投入了更多的资金。这是我们调查中最大的惊喜。我们有 5%、10%、15%的预算,然后我们有 20%或更多的 IT 预算投资在机器学习上。在成熟阶段,43%的受访者表示他们将总 IT 预算的 20%或更多用于机器学习和数据科学。这对我们来说是一个非常非常大的惊喜。我想说的是,这个差距正在扩大。如果你没有认识到这一点,并且不理解为什么会发生变化的驱动因素,这个行业将会继续前进。
现在我想转到,我们如何利用这些工具并加以应用?我有四个场景和一些有争议的话题,但希望能提供一个基于我们从哪里来的视角,来看它是如何解决的,以及它在未来会走向哪里。
第一个是关于公司文化。再说一次,谈论高管…去年 12 月,我参加了世界经济论坛的一个研讨会。我们为今年早些时候在瑞士举行的达沃斯会议制定了人工智能议程。我们在这方面的许多运营原则都是基于这样的发现,当你去 50%或更多的企业时,那只是不了解机器学习,问题在高层,在执行人员中的人,甚至更多的是董事会。我提到我在 70 年代开始编程,但是这些人可能比我老。事情是这样的,他们已经了解了六个适马,他们在此基础上建立了自己的事业。他们了解了精益。他们学到了很多需要你摆脱不确定性的过程。但现在,他们被告知这些更年轻的科技独角兽正在追赶他们,他们正在使用机器学习,而董事会并不理解这一点。你知道,这些是概率系统。这怎么可能有意义呢?他们被告知必须接受不确定性。这说不通。但问题是,如果他们不果断采取行动,他们的竞争对手就会采取行动,当然监管者也会采取行动。
有一些很棒的声音在谈论这个。雅各布·沃德,他是《大众科学》的资深编辑他现在在斯坦福大学。雅各布·沃德是第一个…除了皮特·斯科莫罗奇,这两个人最先提醒我,丹尼尔·卡内曼和他的同事才是真正遇到这个问题并描述它的人。我强烈推荐 Jacob Ward 谈论行为经济学对基于数据的决策的影响。另外,另一个真正有趣的人是凯西·科兹尔科夫。她是谷歌云的首席决策科学家,她有一些关于经验教训的精彩演讲,在谷歌部署机器学习时犯的错误。谷歌能从他们在机器学习上的错误中学到什么?这如何适用于其他公司的决策呢?对此最好的总结来自 Ajay Agrawal 代表麦肯锡撰写的文章,他谈到了决策的分解,以及如何让人和机器的团队合作做出大规模决策。这里的要点是,我们在拆分决策方面存在很多问题。行为经济学是这方面的北极星。
在公司治理方面,我们有很多工作要做。好消息是,对于我们这些做业务开发的人来说,你总是想在有利的时候卖出。好消息是一半的可用市场甚至还没有开始。太好了。坏消息是,对于我们这些使用 GPT 和 J 曲线等工具做一些未来情景的人来说,当你开始把数据和研究放在一起时,真的有一个交汇点。仅仅过了四五年,富人和穷人之间的差距就变得至关重要。那些还没有开始的公司,他们真的太落后了,不值得投资。他们变得很多…嗯,这可能表明很多 M&A 活动。你知道,其他更进步的大公司会吞并他们来获得客户。这是一条不归路。另一个例子是大量的需求,就像大卫·多诺霍在他的数据科学史中谈到的需求迷因,数据科学的工作迷因。那个位置很好。将来我们会有工作的。
好吧。接下来,如果我能通过这里…一个不同的场景。其他四个中的一个,更有争议。是关于硬件的。硬件发生了什么变化?这可能是我遇到的最大阻力,但也有一些比我更著名的演讲者开始使用它。在过去的 20 年里,我们一直在软件工程中学习硬件,处理器的硬件形式并没有真正改变。因为摩尔定律,我们只会得到更好、更快、更便宜的处理器。看都不要看。我们有 Java 和 JVM 语言。我们根本不需要探测硬件。这不是一个真正的问题。我们有虚拟化。你知道,只是…不要在意。问题是这样的。硬件比软件发展得更快。软件比过程发展得更快。你知道,在过去的 20 年里,我们一直被教导在软件工程中,过程是一把大伞。你可以把它应用到很多不同种类的项目中。但这一点以及硬件方面的事实都变了。
现在,硬件发展更快。当然,在处理器方面,你可以看到 GPU…Nvidia 真的很幸运有 GPU 在那里,他们不明白为什么他们突然变得流行机器学习,但它对他们有利。但不仅仅是 GPU,还有 TPU、IPU、DWPUs 和一系列 ASICs。已经有一些非常有趣的公司开始这样做了。这不仅与处理器有关,还与交换机结构中发生的事情有关。
如果你看看 TensorFlow 的一些起源, Jeff Dean 的早期谈论,他们谈论使用新型网络设备,不一定使用 TCP/IP,甚至更远。实时流传输的延迟可以达到亚毫秒级。这也是被驱动的原因…就像亚历克斯在上次演讲中提到的。它还与内存结构有关,英特尔正在与项目 Arrow 合作,在大型内存结构上使用 FPGAs 作为智能前端,以及由此可以获得的令人难以置信的效率。摩尔定律已死,但还有希望。有一些项目,比如 Project Jupyter——就开源协议而言,Jupyter 的开放标准部分比其他许多项目都更能说明问题。Apache Arrow 是我在 Apache 最喜欢的项目,它真的在那里的驾驶座上。但是也要看看加州大学伯克利分校里塞实验室和整个射线星座以及他们在做什么。这些项目非常了解这种变化,硬件比软件移动得快,比过程移动得快。好吧,我还有一点时间。
2005 年,一位同事搬到了西雅图,他正在做一个新项目,他一直打电话给我,问我一些关于一种新服务的奇怪问题。我对此感到困惑,但我试图做这件事的试验品。然后在 2006 年,他们告诉我去看看一个网站,注册一个东西。我做到了,不经意间成为了亚马逊之外最早做 100%云架构的三个人之一。我的团队是许多早期 AWS 服务的试验品。我签了很多保密协议。我和亚马逊的关系由来已久,但我能说的也就这么多了。
开始计时。2006 年底,我们在管理一些 NLP 工作流时遇到了麻烦。其中一个工程师建议了一个刚刚出来的新的开源项目,我们成为了它的早期用户之一。它被称为 Hadoop。然后我们在云中运行 Hadoop 遇到了一些瓶颈。2008 年,有一张 JIRA 门票,作为一名工程经理,我给伦敦一位名叫汤姆·怀特的年轻工程师开了一张 3000 美元的支票,他推动了一项修复工作。我们能够获得在云中运行 Hadoop 的效率。然后我们在亚马逊的朋友打电话来说,“嘿,你已经有了云中最大的 Hadoop 集群。”我们成了什么的案例研究…当时它被称为“157 项目”——你仍然会在文档中看到它,但它被重命名为弹性 MapReduce 。
大约一年后,伯克利…在这个领域成长起来的我心目中的英雄之一是戴夫·帕特森。Dave 带领他的研究生采访了许多与云有关的人,许多不同的竞争对手,并试图了解正在发生的事情。他们写了这篇论文,这篇论文是有先见之明的。它阐明了未来 5 到 10 年云计算将会发生什么。它就这么搞定了。我被邀请去评论它,然后在伯克利做了一个客座演讲。在我评论了戴夫·帕特森的论文后,你可以看到一段视频,视频中我被戴夫·帕特森从体内取出内脏。但在观众中,有研究生,一年级的博士生,他们是 Apache Mesos 和 Apache Spark 的创始团队。这些年来,我和这两个团队一起做了很多工作。
戴夫带领他现在的研究生发表了一项后续研究,名为《一天中的 10 年》,书名为“伯克利对无服务器的看法”。“如果你想在这个领域工作,如果你还没有读过这篇论文,停下你正在做的事情,拿起论文读一读。值得投入时间。关键是,它真的需要处理很多来自 Eric Jonas 在云经济学方面的工作,以及事情是如何变化的。埃里克将于明年前往美国芝加哥大学,加入迈克尔·富兰克林的行列,似乎伯克利的许多有趣的人也是如此。
他们的观点是,你可以想到…当 AWS 第一次发布时,他们把它简化了。他们内部有非常复杂的服务,但是他们把它简化了,让那些习惯使用 VMware 的系统管理员和企业可以识别它,他们可以把他们的应用程序分割开来。但那是 10 年后的事了。现在,对更高级的功能有了更多的需求,并且有了一个被称为无服务器的整体。这很重要,他们在这里详细说明了原因和方式,风险是什么,以及一些限制。但这就是正在发生的事情。如果说上一篇论文对未来五年有先见之明的话,说真的,这一篇更有先见之明。他们所指的部分内容是计算和存储如何持续脱钩,换句话说,不要涉足太多电气工程,但那里正在发生的事情基本上是 Hadoop 和 Spark 的驱动因素已经逆转。这就是为什么这个实验室有雷,这基本上是,指定的火花杀手。
关于硬件发展的另一件事…我们在 Domino 上写了一篇关于这个的文章。我会指出这一点。阿拉斯代尔·艾伦和皮特·沃顿谈论边缘推理,并在非常低功耗、小尺寸的设备上运行巨大的机器学习模型。在这个房间的墙壁单元里可能有一些这样的设备。他们说的话有点吓人,但这就是正在发生的事情。这甚至超过了我刚才谈到的其他变化的范围。展望未来,摩尔定律已经结束,但库米定律和与之相伴的、兰道尔原理,这些都在起作用。我们将会看到巨大的效率,因为在某些方面,摩尔定律允许我们非常草率。还有,看向雷。即…当你分解用例时,那就是摆脱 Spark 的东西。看看 Ray 和 Modin 以及其他同行,他们如何利用服务,如何利用当代硬件。
此外,数据科学越来越不注重业务分析,而更注重边缘推理。如果你的团队不这么想,你应该评估一下。一个是共享基础设施和政府会议企业。我是 JupyterCon 的主席,布莱恩·格兰杰和我注意到在会议的准备阶段,很多企业进入了 Jupyter。我会说,从一个朋友的角度,大卫·沙夫,他是第一资本公司的数据工程总监。你知道,大卫说,“嘿,看,一方面,我可以购买数据基础设施的专有系统,然后我必须培训我的员工,可能需要六个月。另一方面,我可以雇佣知道如何进行机器学习的研究生。他们可以在第一天使用 Python 和 Jupyter 部署银行需要的机器学习应用程序。我到底为什么要花钱买一个专有系统,然后让我的员工在六个月内脱离正轨,却发现它甚至没有那么有效?”我们看到很多开源软件,尤其是 Jupyter,进入了像 Capital One 这样的组织。毫无疑问,彭博下了大赌注,做出了很多贡献,亚马逊和其他公司也是如此。此外,国防部正在基于 Jupyter 的基础设施上做大量工作。对我来说,那里的一个工作论点是,数据科学中的难题不再是硅谷的问题。他们在现场,尤其是在大型组织中,尤其是在受监管的环境中。越来越多的开源项目正在关注那些需要优先考虑特性的监管环境。这也是企业和政府能找到很多共同点的地方。
我们有 Julia Lane 谈论 Coleridge Initiative 和支持元数据和数据治理和传承的项目 Jupyter 的工作。我也参与其中,为 NYU 做顾问。此外,如果你看看戴夫·斯图尔特的演讲,他谈到 nbgallery 和国防部如何使用基于 Jupyter 的大规模基础设施。此外,国防部如何在 GitHub 上公开源代码[https://nbgallery.github.io/]。我认为我们会在开源中看到更多的非厂商贡献,以及更少的承诺者之争。当然,这来自政府和企业。
好吧。我知道我没时间了,但是很快,我会讲完的。最后同样重要的是模型解读,不是你想的那样。这真是一个超级难的问题。我会指出…我们有…上个月关于多米诺骨牌的专栏文章详细介绍了。本·洛里卡对做了一次很棒的播客采访。Forough 博士研究的是模型解释,然后她意识到,“嘿,等一下。这里存在一些大问题。”几个月前,我和扎克·利普顿在 CMU 参加了一个小组讨论,他也是另一个会说“嘿,等一下。模型解释,可解释性。这其中有些确实是错误的。”有重要的理由和呼吁使模型更易解释和说明。数据科学团队需要接受这一点,并使用这些工具来反映和理解正在发生的事情。但是就现在将这种工具放到利益相关者面前而言,这是非常有问题的。只是解释一下,从弗洛夫所说的…我绝对推荐她的采访。
要点是这样的。Twitter 上流传着一个笑话“如果是用 Python 写的,那就是机器学习。如果是用 PowerPoint 写的,那就是 AI。”我是说,这是有道理的,但也是有害的。我觉得那真的是错误的视角。机器学习是数学优化的一个子集。我们可以画出损失函数和正则项的方程。但是,我们可以说 ML 是关于工具和技术的,但是 ML 的使用…套用 Forough 的话,“机器学习的使用最终会涉及到大量的人机交互。”涉及到很多社会系统。如果你只是认为机器学习是关于工程的,你就失去了等式的另一半。
展望未来,它的应用是什么?如果你试图解释机器学习中正在发生的事情,而你只看到了一半,你就会弄错。我认为一个定义应该是说人工智能是关于对社会系统的影响。为了说明这一点,如果我们观察复杂的工作流来准备数据训练集,然后创建模型并评估它们…如果我们看部署机器学习模型的商业风险以及如何理解正在发生的事情,如果我们只是简单地看着工件,模型,并试图解剖它,那就是一个窥视孔分析。我们正透过窥视孔盯着一个非常复杂的问题。相反,如果我们要降低风险并试图理解和解释模型以及正在发生的事情,我们必须查看整个工作流程中的信息,一直追溯到最初从业务流程中收集数据。有人正在研究更好的方法,不要在很多很多步骤中丢弃信息和人工输入。
这一点极其重要。这就是数据治理的用武之地,因为这是血统的本质。有很多人比我更擅长谈论这个。斯坦福大学的克里斯·雷(Chris Ré)有一个完整的项目深入研究,我甚至不打算进入这个领域。但是浮潜是开源项目,克里斯又在谈论如何利用血统。他们用通气管谈论的是弱监管,他们称之为数据编程的东西。你如何用数学函数来描述提供标签的专家,以及他们的好坏?你如何能一直追溯到数据收集?同样在斯坦福大学的珀西·梁(Percy Liang)研究了影响背后的数学原理。我们将会看到越来越多的这种技术被应用到机器学习过程中。有一些来自微软的事后分析,叫做 InterpretML 使用 EBM,可解释的商业机器,上周发布,非常好。
但这里的要点是,数据科学团队需要重新思考他们如何管理数据工作流,一直到拥有非常严格的方法来整合训练集,不要在每一步都丢弃信息。当审计人员来敲门时,这将是一个问题。Chris Ré有一个关于血统的观点,以及模型管理和血统在哪里遇到困难,以及数据治理如何解决我们目前在机器学习方面遇到的最困难的问题。我有一个关于主动学习(半监督学习)的 exec 简报,这将有助于这方面的一些工作,但我不会详细谈论它。
这确实指出了一个事实,第一,人工智能的产品管理,这本书还没有写。我们正在了解。皮特·斯科莫洛奇将报道更多。在更大的范围内,如果有人来找你说,“机器学习只是工程”,认真地送他出门。我的意思是,这是我们现在必须处理的最困难的问题。这是我们看到的脱节的一部分,如果没有它,我们将无法解决监管问题和治理问题。六十年来,我们已经有了这种镜头。这就是事物如何演变和改变的,而且仍在继续。
谢谢您们。我期待着事后与人交谈。如果你想找到我,这里有一些地方。谢谢你。
编辑注:为了可读性,文字稿经过了编辑。
新手的数据科学问题解决
原文:https://www.dominodatalab.com/blog/data-science-problem-solving-for-novices
本文概述了数据科学,然后介绍了一个将数据科学应用于交通规划的真实示例。
什么是数据科学?
目前围绕数据科学,尤其是 AI(人工智能)有很多炒作。根据我 20 年的数据科学经验,我发现以下定义很有帮助:
- 数据科学:在复杂的数据集中寻找模式,以建立预测未来可能发生的事情和/或解释系统的模型的学科。
- 机器学习:应用算法和技术建立数据科学模型的过程。
- 深度学习:一类机器学习算法,使用具有许多隐藏层的神经网络。深度学习通常用于图像分类和自然语言处理。
- AI(人工智能):一类系统或解决方案,其运行方式在自主程度和范围上与人类不相上下。
要做好数据科学,你需要结合计算机/编程技能、数学和统计知识以及行业/领域专业知识。
如果没有数学和统计知识,数据科学模型可能会被误用,结果可能会被曲解。
分析的演变
在过去十年中,公司内部的数据科学发生了巨大的变化。大多数《财富》500 强公司现在都处于“主动”阶段,能够对其业务的某些领域做出准确的预测,例如预测对直邮营销活动的回应率。该行业现在渴望达到“动态”阶段,在这一阶段,他们的运营完全是模型驱动的。
数据科学生命周期
我经常看到数据科学生命周期的六个阶段。
- 构思:这是最初确定项目范围、确定价值/投资回报、决定是否投资数据科学项目的地方。
- 数据获取和探索:这是识别有前景的数据源、捕获和探索数据,然后准备数据(清理、组合等)的地方。).
- 研发:一旦准备好数据,团队就能够测试假设,用不同的模型进行实验,并评估结果。
- 验证:这是一个质量保证阶段,在投入生产之前,模型在技术上、伦理上和功能上都要经过企业的验证。高度监管行业中的公司通常有完整的团队负责模型验证,在某些情况下,还会任命一名首席合规官。
- 交付:这是模型发布的地方。模型实际上可以是任何数据产品。Web 应用程序、集成 API、仪表板、报告,甚至自动电子邮件都是流行的形式。
- 监控:数据和行为会随着时间的推移而变化,因此监控数据漂移、模型准确性、使用、性能和价值非常重要,这样可以尽早发现问题,并改进模型。
现在,我将介绍如何将这种数据科学生命周期应用到现实世界的项目中。
真实世界示例:将数据科学应用于交通规划
几年前,我帮助一个大城市优化公交线路。他们试图鼓励市民使用公共交通,但偶尔会在一个车站排长队,乘客无法挤上巴士,会被滞留。我的任务是开发一个模型,这样可以提前两天优化路由表,大容量公交车可以与当天的高需求路线配对,人们不会被困。
客户要求除模型交付之外的整个项目在六周内完成,这对于这种性质的项目来说太短了。我在这段时间里尽了最大努力。在项目的事后分析中,我发现回顾我能交付什么和不能交付什么是非常有教育意义的。由于时间压力,我不得不跳过的步骤是经常被跳过的步骤,这些步骤提供了对数据科学项目中实际发生的事情的见解。
构思阶段
在构思阶段,我评估了可行性,并在与企业主的一系列会议中定义了问题陈述。我没有时间做一个彻底的现有技术审查。这是关键的一步,因为你很少是第一次处理一个问题,从内部和外部的同事那里可以学到很多东西。量化这个项目的价值/投资回报率也被忽略了。在这种情况下,估计滞留乘客的成本,然后随着滞留乘客的减少而合计价值是可行的。
数据采集和勘探阶段
完成构思阶段后,我开始探索和获取相关数据。最后,我收集了前两年以下方面的数据:
- 过去的骑手
- 总线容量
- 路线和站点详细信息
- 天气
根据这些数据源,我设计了以下附加功能来丰富数据集:
- 星期几
- 一天中的时间
- 季节
- 假日
- 温度
- 降雨
- 地理标识符
我从 BI 团队收集数据(我后来发现,他们的数据是从 BI 团队获得的)。事后看来,直接找到来源(IT)会更好,因为 BI 团队的数据并不像原始来源那样完整。
我准备数据的目标是让每一行都代表一个停止,以便尝试一个数字预测模型(回归模型而不是经典的时间序列)。该站点前几天的数据需要在该行上可见。下图显示了我设计的一些输入/列。最后三列用于绘图和作为预测的目标。其他列是模型的输入。
我希望当时能够使用像 Domino 这样的平台,因为我会受益于以下 Domino 特性:
- 数据科学家可用的硬件灵活性和选择。可以使用功能较弱的硬件在数据样本上编写数据准备代码以节省成本,然后使用功能更强的硬件在整个数据集上执行。不幸的是,客户端没有使用 Domino,所以我必须一直使用更强大(也更昂贵)的硬件。
- 文件和再现性。只有大量的商业和研究逻辑进入数据准备阶段。它是文献和机构知识最重要的地方之一。在代码文件的注释中,您只能写下这么多。而且实验血统几乎不可能人工追踪。不幸的是,如果没有 Domino,我们就无法访问任何早期的文档,未来参与该运输机构的数据科学家将无法全面了解数据准备工作是如何展开的。
研发阶段
在完成数据获取和探索阶段之后,我开始了研究和(模型)开发阶段。我特别使用一种机器学习软件解决方案,在建模环境中连续测试了大约 30 种算法。这是在具有数亿行的数据集上完成的。我捕获了每种方法的准确性度量,例如 RMSE、R 平方和残差分析。
最终的模型,一个带有正则化的回归模型,被证明是相当具有预测性的。80%的止损预测与实际发生的相差在+/-1%以内。
我对这些结果很满意,但是,我希望我那时能有像 Domino 这样的平台。在这个模型开发阶段,我会受益于更快的开发。Domino 支持对硬件、环境和代码包的弹性访问,所以我可以并行执行而不是串行执行模型。Domino 还支持各种各样的开源和专有算法以及 ide,这些对我的实验会有所帮助。如果没有这些限制,我可能会开发出一个更精确的模型。
验证、交付和监控阶段
由于时间限制,验证不在本项目的范围内。领导者应该确保为生命周期中这个越来越重要的步骤做好预算,以减少模型风险。BI 团队在企业数据仓库的基础上构建了一个 Power BI 仪表板,以提供预测的路线容量,并允许探索未来的预测以及过去的结果。
客户本可以从 Domino 这样的平台中获益,原因如下:
- Domino 本来可以支持有用的工具,使从验证到交付的转换变得容易。对于这个客户来说,在验证和交付之间有一个清晰而痛苦的中断。从 BI 系统的角度来看,该模型是一个完全的黑箱。Domino 是解释黑盒是如何构建和工作的解码器。
- 交付团队不得不重新创建在初始建模中完成的大部分工作,并且只有代码和一个 Microsoft Word 文档来帮助他们。使用 Domino,工作的可再现性和版本控制被自动捕获,跨团队的协作得到了极大的改进。
- 此外,甚至没有人在任何团队会议上提出模型监控。有了 Domino Model Monitor,监控工具就可以确保对模型性能的持续审查,并与业务目标保持一致。
结论
希望这篇博客能让你对数据科学有一个很好的概述,它是如何在现实世界的项目中应用的,以及当约束不考虑现实时,通常在哪里偷工减料。数据科学可以成为解决大型数据集预测问题的极其强大的工具。
随着团队的成长,像 Domino 这样的数据科学平台对于尽可能有效地应用数据科学来说是无价的。Domino 可以在整个过程中提供帮助,包括:
- 从灵活、有弹性的计算环境中加快数据准备和模型测试。
- 鼓励开发可以修改和部署的文件和机构知识。
- 为模型操作提供完整的沿袭,使从研究到验证再到部署的过渡变得无痛而透明。
- 通过单一平台简化所有数据科学模型的模型监控。
数据科学!软件工程
原文:https://www.dominodatalab.com/blog/data-science-software-engineering
为什么理解数据科学和工程之间的关键差异很重要
随着数据科学在组织内变得越来越成熟,工程领导者经常被拉进与数据科学团队成员的领导,促成协作。虽然数据科学和软件开发之间有相似之处(例如,两者都包括代码),但善意的工程领导者可能会对数据科学做出假设,从而导致可避免的冲突和无效的工作流。冲突和非生产性的工作流程,然后由工程领导负责解决。与软件开发不同,数据科学更类似于研究,具有独特的计算需求,团队通常与业务利益相关者密切合作,而工程团队通常不会与他们合作。
数据科学更像研究而不是工程
工程包括建造一些事先已经被理解的东西。这允许工程团队跟踪、监视、预测和控制工程过程。然而,数据科学项目通常以回答一个可能转变为洞察力或模型的问题为中心。这种对回答问题的专注是数据科学成为探索性和实验性研究过程的原因。这也导致对数据科学基础架构和工具的灵活性和敏捷性的需求超过了工程领域的需求。
可变计算需求
工程团队构建可以在高性能架构上运行的软件。工程团队使用基础设施进行测试和 QA,并且基础设施需求是静态的和可预测的。个人工程师通常在一台 16-32GB 内存和四至八个内核的机器上工作。相比之下,数据科学项目的计算能力是不可预测和不变的。数据科学工作涉及计算密集型实验。内存和 CPU 可能是一个瓶颈。例如,为一个实验编写代码可能需要 30 分钟,然后在笔记本电脑上运行这个实验可能需要八个小时。为了避免这种类型的瓶颈,数据科学家可以利用大型机器在内核之间并行处理工作,或者将更多数据加载到内存中。
与组织的其他部分整合
虽然工程与组织的整体优先事项相一致,但工程团队通常是独立的,他们的工作不需要与财务、营销或人力资源团队紧密集成。数据科学项目通常专注于回答业务利益相关者的问题。例如,在构建员工保留模型时,数据科学团队将与人力资源团队密切合作。
在这篇文章中,我们讨论了数据科学与研究的相似性,数据科学的可变计算需求,以及数据科学家如何经常与工程团队通常不接触的业务利益相关者密切合作。如果您有兴趣阅读有关如何在您的组织内实现数据科学的更多信息,请参见大规模管理数据科学实用指南。
数据科学工具:理解多元宇宙
在数据科学的多元宇宙中,工具选项继续扩展和发展。虽然肯定有工程师和科学家可能固守在一个或另一个阵营中(例如,R 阵营与 Python,或者 SAS 与 MATLAB),但数据科学工具的分散趋势越来越明显。
随着具有不同背景的新团队成员的加入,随着来自不同平台的新数据源的出现,或者利益相关者需要新的可交付成果,效忠于特定的阵营会适得其反。Domino 的 Enterprise MLOps 平台在设计时就考虑到了这种多样性,因此随着您的项目和数据科学工具生态系统的发展,您的团队可用的选项将不会局限于单一的方法。
什么是数据科学工具?
像大多数专业人员一样,数据科学家需要专业的工具来高效地工作。这些数据科学工具用于访问、清理和转换数据、探索性分析、创建模型、监控模型以及将模型嵌入外部系统。
数据科学工具的类型
工具可以是开源的,也可以是商业的。它们可能基于 GUI,或者需要丰富的编程经验。有些非常专业,有些则更像是“瑞士军刀”,可以执行多种功能。工具的主要类别和一些示例包括:
数据源
数据科学家使用的数据源几乎是无穷无尽的。从平面文件(如 csv)到关系数据库(如基于 SQL 的数据库),再到大数据存储(如 Hadoop)和云数据库(如雪花)。对于数据科学家来说,他们需要一种方法来轻松访问这些数据源,并清理、转换和组合数据。通常,数据库的处理能力可用于复杂的计算或记录评分。一旦发生数据访问,他们通常会在分析之前使用喜欢的语言/IDE 来处理数据。
数据语言
语言通常分为两类,商业语言和开源语言。SAS 和 MATLAB 是两大商业语言。 MATLAB 既是一种专有的编程语言,也是一种用于集成大量数据、函数和算法的软件平台。同样, SAS 是一个语言和软件平台,以其处理大量数据的能力和广泛的分析能力而闻名。
当今最流行的开源语言是 R 和 Python。r 是一种用于各种数据科学任务的编程语言,其功能可以通过包和不同的 ide 进行扩展。Python 最初是为软件开发而创建的,现在用于各种环境,包括深度学习研究和模型部署。对于不同类型的任务,数据科学家对于他们更喜欢哪种语言非常固执己见。至关重要的是,他们可以在最新版本中轻松访问它们,这样他们就可以高效地完成工作,而不必在每次想要做模型时手动构建环境。
集成开发环境(ide)
IDEs(有时也称为笔记本)是一种编码工具,它使开发和测试代码变得更加容易。它们提供了一个单一的地方,其中包括将不同的包放在一起,原型模型,与存储库集成和组织工作。一些常见的 ide 有 RStudio 和 Jupyter Notebook。RStudio 是 R 语言的 IDE,主要用于统计分析和数据可视化。Jupyter Notebook 是一个 Python IDE,允许数据科学家创建和共享代码、等式、可视化和叙述性文本。
与数据科学语言一样,程序员对他们喜欢使用的 ide 非常固执己见。
包装
包是一组代码模块,它们在 ide 或语言中提供专门的功能或编程构建块。通过消除每次构建模型时从头编写代码的需要,它们为数据科学家节省了大量时间。例子包括 Shiny、PyTorch 和 Tensorflow。闪亮的是一个 R 包,它支持构建交互式 web 应用程序,这些应用程序可以在后端执行 R 代码。 PyTorch 主要用于 Python 的高级功能,如多维数据数组上的计算,并提供强大的 GPU 支持。 TensorFlow 是一个用于机器学习的开源框架,特别专注于深度神经网络的训练和推理。
计算
数据科学是计算密集型的,因此数据科学家需要轻松、快速地访问适当的计算环境——无论是在云中还是在本地。图形处理单元(GPU)是专门为加速计算机图形和图像处理而设计的电路。它们已经成为并行处理大数据块的算法的关键要求。数据科学家的关键是创建对这些环境的自助访问,这样他们就不会浪费时间执行开发任务来设置他们的环境。
图书馆
Spark、Dask 和 Ray 等计算库和引擎旨在为各种数据科学用例加速大量数据的处理,提高工作效率和利用计算密集型算法的能力。
外部系统
大规模工作的数据科学家需要一种方法来跟踪工作并相互协作。应用程序开发界也使用的两个常见系统是 GitHub 和吉拉。
选择数据科学工具时的关键考虑因素
数据科学工具需要高效且相对易用。通常,编码必须手工完成,但是要求越少,工作就越快,效率就越高。因此,像 GUI 和数据可视化这样的特性实际上是大多数数据科学工具的标准。包和库通过消除日常任务也有助于提高工作速度。这种效率扩展到了工具之间的协同工作,避免了在工作继续之前重新编码模型或重新格式化数据。
当考虑自动化数据科学生命周期中主要步骤的工具(如 AutoML 工具)时,请确保您可以利用您的数据科学家来改进模型,以确保您可以获得最大的竞争优势。一种方法是使用自动化大部分工作的工具进行概念验证,然后用代码构建最终的生产就绪模型。
工具的普及性也很重要。新工具不断出现,并且可能具有吸引人的特性。但是在将产品添加到您的生态系统之前,您需要考虑支持、获得团队成员的能力以及更新和支持该产品的严格程度。
任何工具都有一个最重要的特点,那就是用户对它的喜爱,这一点从未在技术规格中列出。例如,你会注意到,那些使用 R 多年的人通常对 Python 有抵触情绪,而那些非常熟悉 MATLAB 的人会更喜欢它。与此同时,当一种不同的工具可以比他们一直使用的工具做得更好时,数据科学家本质上很少拒绝创新的号召。
数据科学工具:企业 MLOps 平台中的集成
在企业环境中,使用的数据科学工具能够相互协调工作至关重要,无论它们的基础语言或结构有何不同。如果工作必须重新编码才能投入生产,或者数据必须在使用前用中间程序重新格式化,这将是巨大的资源浪费,并且有可能引入错误和破坏沿袭。这就是企业 MLOps 平台的用武之地,它提供了一个可以在同一个项目中使用不同工具的地方,以获得无缝、高效的体验。
Domino Enterprise MLOps 平台
将所有这些工具结合在一起是 Domino Enterprise MLOps 平台的好处之一。
它包括四个关键工具领域,用于在专为协作而构建的集中平台上构建、培训、部署和管理多个模型:
- **工作台:**允许您构建和运行不同的模型,同时比较它们之间的结果。
- Launchpad: 允许您以不同的格式发布您部署的模型。
- Domino Model Monitor: 允许您从单一门户监控生产中模型的性能。
- **知识中心:**允许您在整个企业中轻松查找和重用项目结果,同时在整个组织中保持一致的标准和最佳实践。
在企业环境中,有各种背景不同的优秀团队成员一起工作,他们能够专注于自己的专业知识,同时能够与他人合作,这一点很重要。有了 Domino 'sEnterprise MLOps platform,数据科学家就有了他们需要的平台,可以将项目的最佳工具整合在一起,确保高效的工作流程,并轻松地相互协作…
要亲自体验 Domino Enterprise MLOps 平台,您可以注册免费试用,或者观看该平台的演示。
David Weedmark 是一位出版作家,曾担任过项目经理、软件开发人员和网络安全顾问。
数据科学用例
原文:https://www.dominodatalab.com/blog/data-science-use-cases
在这篇文章中,唐·迈纳讲述了如何识别、评估、优先处理和挑选下一步要解决的数据科学问题。
评估数据科学用例的三个阶段
规划下一步要处理的数据科学用例与决定下一步在其他领域处理的用例没有太大区别。在计划任何用例之前,您需要理解您的总体业务策略和目标。然而,在数据科学中进行深思熟虑的规划是非常重要的,因为数据科学带来了其独特的挑战,商业世界仍在努力适应其现有的流程。这些挑战大多源于高风险、不确定的工作需求和多种潜在结果。在这篇文章中,我将分享一些关于如何决定首先或其次处理哪些数据科学用例的想法,这些想法基于我作为数据科学顾问帮助公司(从财富 500 强到初创公司)的成功经验。我喜欢将用例评估和选择过程分成三个阶段,使其更易于管理。我将在这篇文章中深入讨论的三个阶段是:
- 列出您的潜在用例
- 评估每个用例
- 区分用例的优先级
我将在这篇文章中描述的这个过程是为了能够足够灵活地适应你和你的企业所处的任何情况。在你列出、评估和优先化你的用例之后,你将能够绘制它们。整个过程旨在帮助您做出决策,同时以一种有效的方式与组织的其他成员分享决策。
绘制用例:风险与工作量
我的方法来自一些人可能熟悉的规划方法。它使用一个正方形的图表来描绘用例的风险和他们的努力程度,并使用气泡的大小作为值。一般来说,你想做的用例在右上角,是大气泡。不幸的是,对我们来说,通常最高价值的目标是高努力和高风险,所以这是一个决定你可以投入多少努力,你对风险的容忍度是多少,以及你今天需要多少价值的问题。
从一个用例列表到这个数据科学的图表,比一开始看起来更具挑战性,这也是本文的主题。首先,我将谈论构建一个良好的用例列表,然后我将谈论如何度量每个用例的工作量、价值和风险,然后剩下的就是制作我们的图表了!
列出您的潜在用例
什么是数据科学用例?通常是假设或者问题。有时它是在寻找一个答案,有时是一个解释,或者有时它只是确认一些事情是真实的。归根结底,这是一个可以用数据来回答的问题。
对于数据科学来说,列出潜在的用例似乎很容易。每个人都有很多想法,但有两个偏见的来源会导致他们留下好的想法。
- 偏爱自己亲身了解的事物。 没有人能够完全了解整个组织,尤其是在数据方面。有太多的数据需要每个人去了解。
- 对人们认为太难或不可能的事情抱有偏见。 数据科学中的新技术和方法从根本上改变了什么问题可以回答,但人们被他们的数据库管理员训练成有些问题不应该问。数据科学越来越受欢迎的整个原因是因为一系列新的技术和技巧,它们开辟了解决以前不可能解决的问题的方法——所以让我们利用这一点。
承认这种偏见确实是克服它所需要做的一切,但我确实一次又一次地在刚刚开始数据科学的组织中看到这种偏见。建立一个健康的列表将有助于把所有事情都放在桌面上,让每个人都在同一页面上,并且将让您比较和对比多个不同种类的用例的价值、风险和工作水平。
克服这些偏见的最佳方式是每个人之间的协作交流:数据科学家、遗留系统的 DBA、业务线所有者和最终用户。
每个角色都给画面带来了独特的视角。如果你把列出用例的工作留给任何一个角色,你可能会留下一些好的东西。DBA 可能对计算上不可能解决的“未解决问题”有很好的感觉,比如两个数据集之间的大规模连接,或者“不太适合”数据库技术,比如自然语言处理用例。业务线和最终用户会知道什么是重要的,但需要数据科学家的鼓励,以确认他们想要的是可能的。最终用户可能已经习惯于从他们的数据库管理员那里要求某种类型的查询是不可能的,但是数据科学家现在可以说“是”。
我发现最好的方法是让每个人在一个房间里呆一个小时,在白板上写尽可能多的用例!在本练习结束时,您应该知道每个用例的名称,以及该用例的简短描述。
评估用例
对于每一个用例,我们都希望对三个方面有一个好的认识:价值、努力程度和风险。每个用例都有不同的组合。一开始,评估数据科学中的用例对组织来说很难。主要原因是人们认为数据科学项目是软件或 IT 项目,而不是它自己独特的东西。一旦有人开始在 JIRA 制造“数据科学故事”,我会努力让他们停下来。数据科学项目不是软件或 IT 。
数据科学项目与软件工程项目
在软件工程中,你有一个想法,你对你想要构建什么有一个非常好的想法,你知道如何构建它,并且你猜测它需要多长时间。这仍然很难,但是这个项目有一个明确的目标和一条清晰的道路。软件项目因超出预算和延迟而臭名昭著,但如果不认真对待,数据科学可能会更糟。
在数据科学中,你可以在一个用例上工作多久都行。如果你做的时间“不够长”,你的结果会很糟糕。如果你在上面工作“太长时间”,你开始得到递减的回报,并且产出不值得努力。规划数据科学更多的是付出适当的努力,在特定的时间框架内做到最好,而不是达到某种目标。
在练习的这个阶段结束时,您将为每个用例分配一个价值分数,为每个用例分配一个工作量的数量级,以及为每个用例分配一个发生风险的可能性百分比。这些将为您提供构建我之前展示的图表所需的值。
价值
数据科学中的价值是通过科学从数据中获得的知识——而不是机器学习或某些应用程序或其他东西。机器学习或应用是我们通过数据科学获得的有价值的知识的应用。知识第一。
因此,要找出数据科学用例的价值,您需要考虑几个问题:
- 从对该用例进行数据科学研究中获得的知识的价值是什么?
- 你将从数据集中学到什么?
- 关于你将要测试的假设,你会学到什么?
- 如果你得到一个好的结果,这些知识的价值是什么?
- 如果你得到一个不好的结果,那知识的价值是什么?
为每个用例考虑所有这些问题,并把它们总结成获得这个特定问题的知识有多有价值的一般意义。
对于不同的人和不同的组织,价值也有不同的含义。一些组织可能更看重公司的价值而不是利润。一些组织处于竞争极其激烈的商业环境中,需要真正拓展有价值的东西。或者在政府组织或慈善组织的情况下,价值可以是非货币的。不管怎样,用例的价值必须考虑组织整体目标的环境。
我更喜欢用 0-10 的线性标度来衡量价值。使用像货币数字这样的东西工作量太大,容易出错。我们只是在寻找一个大概,更重要的是用例之间的相对价值。7 比 6 稍微值钱一点,但是比 2 值钱多了。
努力程度
就像我之前说的,在数据科学中,评估工作量确实很有挑战性。数据科学中的评估工作与其说是计算数据科学家的工作时间,不如说是让了解问题的数量级。我发现,估算一名数据科学家的时间量级要容易得多,同时还能向组织中的每个人解释获得结果有多难。
以下是我通常使用的“数量级”:
- 1 小时。 超级简单,我可以通过启动一个 SQL 查询并构建一个快速图表来完成。没有风险。我知道数据摆在那里,结果是可以预测的。如果这里用了机器学习,那是因为我知道数据是有预测性的,只是懒得自己写规则。
- 1 天。 相当容易,但我想确保我有适当的时间来测试和理解我的结果,建立一些关于结果的合理演示,并可能尝试一两种不同的方法。我有很好的预感,这些数据是有预测性的,或者已经准备好产生这样的结果。我要做的事情几乎没有风险。
- 1 周。 这种情况越来越严重,但仍处于谱的低端。可能会有一些风险,但如果这个问题无法解决,我会很快弄清楚。我们需要做一些数据探索,因为我不确定数据是否完全准备好了,但我很确定是这样的。我应该有一些时间来微调我的结果,提高准确率。
- 1 个月。 这是我们开始能够探索未知问题的时候,但我们有一种很好的感觉,如果问题是可以解决的,那么它应该很容易解决。我们不知道数据是否准备好了,我们可能需要花一周的时间来收集和整理一些数据。在第一周之后,做一个“检查”并做一个数据探索报告,以便与利益相关者重新同步,并重新估计工作的价值和水平,这可能是好的。我们也不确定哪种方法会奏效。如果有监督的标签不够好,我们可能需要对无监督学习进行某种黑客攻击,或者一种奇特的深度学习方法可能是合适的,但我们不确定会进入这种方法。
- 1 季度。 这是一个复杂的问题,我们不确定数据中有什么,我们将如何解决它,以及结果会是什么。一个季度应该给你足够的时间来获取数据,克服任何数据挑战,尝试几种方法,以及调整结果,提交报告,并在整个过程中进行分析。
- 1 年。 这就是事情变得有趣的地方。这是一个需要一些创新的方法来解决的问题。我们会做一些研究,发明新的算法或方法,如果有时间,我们可能会在研究杂志上发表。这越来越冒险,大多数组织没有胃口做这么长的事情。每当我把一个问题放进这个桶里,它几乎意味着你不应该在这个问题上工作,除非这个问题的价值是天文数字或者是你的企业生存的基石。
- 一生一世。 基本上解决这个问题会是某人一生的工作,是开玩笑的意思。我保留这个标签是为了当有人让我做我认为不可能的事情时。基本上,这个问题的解决方案很可能在解决问题本身上更有价值。
当评估每个用例时,尝试将它们放入其中一个类别。通常,要做到这一点,您需要终端用户或业务线向数据科学家解释他们想要做什么。也许数据科学家可能需要向了解数据的人询问一些问题。最后,数据科学家应该能够给你一个问题数量级的感觉。这就是资深的、更有经验的数据科学家的用武之地,因为他们对这类事情有更好的理解。
风险
很多时候,我们渴望仅仅停留在评估某件事情的价值和努力程度上。软件和 IT 项目很多时候没有太多的技术风险,所以我们通常可以忽略它。然而,在数据科学中,在某些情况下很可能出现负面结果,甚至更有可能出现这种情况。我用风险的度量来说明一个事实,即并不是所有的事情都会如我们所愿。
有两个主要方面的风险需要考虑。第一个是,数据实际上有足够的预测性来找到我们正在寻找的答案的可能性有多大?如果数据质量差或者问题很难回答,那么风险会更高。第二个是正在使用的技术中的风险。如果有一种全新的、未经证实的技术需要用来解决问题(比如深度学习),那么风险就会增加。或者,如果数据量非常大,我们不确定我们的数据平台能否处理,那么风险就会增加。同样,与衡量价值一样,一名经验丰富的数据科学家或一些外部帮助将在适当评估风险方面发挥很大作用。
我喜欢给风险一个粗略的%分数,它告诉我们整个用例进展顺利的可能性有多大(例如,我们得到了一个有价值的结果)。就像价值的数量级和价值的线性标度一样,这些都有些武断,你应该关注数字的整体意义。例如,50%是一个掷硬币的机会,我们不确定会发生什么。99%意味着我们确信它会成功,但我们会为一些不好的事情发生留有余地。80%意味着我们非常确定会没事,但仍有一些未知的问题需要解决。10%的可能性很小,我们不指望它会起作用,但还是有机会的。
确定数据科学用例的优先级
既然我们已经有了一个好的用例列表,并且已经评估了每一个用例的价值、工作量和风险,那么我们现在可以弄清楚要做什么了。
优先级排序可能是三个阶段中最简单的,但是只有当你建立了一个潜在用例的良好列表并且正确地评估它们的时候。基本上,如果您在此之前做得很好,那么应该清楚应该首先处理哪些用例。优先化是考虑每一个潜在用例的价值、努力和风险,并看到哪一个应该首先完成。一般来说,我们应该向高价值、低努力和低风险的方向发展,但不幸的是,对我们来说,这些因素通常是相关的。很多时候,我们需要选择风险来获得一个非常有价值的结果,或者选择一个低努力和低价值的用例来展示一些增量价值和证明一个概念。
有一些显而易见的选择,应该首先处理用例。那些低工作量、高价值和低风险的。这些在正方形的右上角,有一个大泡泡。如果你有这些中的任何一个,先做它们。还有一个显而易见的选择是根本不考虑去做。这些是高努力、低价值和高风险。有时人们只是需要一个了结,并同意不值得花时间。一旦发生这种情况,你可以停止被它分散注意力,专注于更实际的用例。
一旦显而易见的用例被排除,选择首先做哪个用例可能会很复杂,因为这取决于您的个人情况。这取决于你有多厌恶风险,你有多需要一场胜利来证明价值,或者其他几个因素。从处理风险的能力、推动价值的需求以及需要投入多少人力资源来解决这个问题等方面考虑,现在对你的组织来说什么是重要的。
随着时间的推移,你的优先顺序可能会改变,因为你雇佣了更多的人,从高层获得了更多的信心,或者愿意承担更多的风险,所以要经常进行重新评估!
结论
我希望通过阅读这篇文章,你已经了解到,无论有没有我的特定过程,都有可能理性地思考接下来要解决哪些数据科学用例。归根结底,我认为任何好的流程都会做到以下几点:
- 尝试在列出潜在用例时消除偏见。敢于对你曾经认为不可能的事情说“是”。
- 不仅要评估用例的价值和努力程度,还要评估风险程度。
- 对自己诚实,你的组织的优先事项是什么,并调整你在风险和人力方面的限制,以及你需要从某事中获得多少价值。
数据科学与工程:紧张点
原文:https://www.dominodatalab.com/blog/data-science-vs-engineering-tension-points
这篇博文提供了亮点和来自专家组的完整文字记录,“数据科学与工程:真的必须这样吗?”与艾米·海尼克、帕科·内森和皮特·沃顿在多米诺总部。讨论的主题包括围绕构建和部署模型的协作的当前状态、可能出现的紧张点,以及如何解决这些紧张点的实用建议。
介绍
最近,我有机会主持了一个名为“数据科学与工程:真的必须这样吗?与艾米·海内克、帕科·内森和皮特·沃顿在多米诺总部。作为 Domino 的内容负责人,我的责任是确保我们的内容提供高度的价值、密度和分析严谨性,从而从多个角度激发出令人尊敬的坦诚的公共话语。直接应对挑战的演讲,包括未解决的高风险问题。也是为了帮助加速数据科学工作。
数据科学和工程之间的合作只是我在 Domino 任职期间以及之前在 O’Reilly Media 担任数据科学和数据工程方面的数据编辑期间听到的故事之一。正是在这个先前的角色中,我第一次见到了杰出的小组成员,他们友好地拨出最近的周四晚上来讨论在构建和部署模型时关于协作的不同观点。小组讨论中坦诚讨论的几个主题包括出现的潜在紧张点、解决紧张点的问题以及对潜在未来状态的乐观思考。这篇博客文章涵盖了小组讨论的要点以及一份完整的文字记录。关于此主题的其他内容已经发布,其他行业专家也将发布更多内容。
视角:围绕构建和部署模型的协作的当前状态
每位小组成员都在工程、数据科学、机器学习和研究领域拥有丰富的行业经验。我们从他们现在所看到的,以他们自己目前的状态开始讨论,为晚上的讨论提供一个基准。这也有助于我们每个人了解关键差异和观点,以便让我们所有投资于数据科学的人能够相互学习。
Amy Heineike 转述说,在她大约 55 人的初创公司 Primer
“我们最终引进了能够沟通数据科学和工程的人。我们将这个团队称为“产品工程”,其中包括知道如何构建机器学习模型、知道如何进行数据科学、有一点产品直觉以及知道如何将东西投入生产的人。”
皮特·沃顿赞同这一观点,并补充说
“当我和 Amy 早些时候就这个问题聊天时,我们讨论了全栈机器学习的想法。因为我也看到了,如果你没有最终用户体验的所有权,你最终只会构建学术模型,这些模型对于在 ImageNet 之类的东西中获取指标非常有用,但你不会学习所有你需要学习的东西,以将其转化为最终用户的真正有效的模型。拥有产品和研究技能的结合;这是一种超能力。你实际上能够以一种方式将产品提供给人们,这种方式是许多理论上不知道机器学习的团队,如果他们没有这种经验,可能会很难做到的。试图鼓励人们真正掌控整个过程非常重要。”
Paco Nathan 根据他对各公司的建议和 T2 在奥莱利地层和人工智能会议上的工作,看到了广泛的模型开发工作流程,他指出
“我可能会从另一个角度看问题,因为就像你说的,我认为这些都是很好的例子。我将从与我交谈过的许多公司和案例研究中了解一些观点,在企业内部,数据科学和数据工程团队之间存在很大的分歧。它们几乎是孤立的。好像一年前,我会听到这样的争论,比如说,数据科学团队中想使用 Python 或 R 的人和数据工程团队中想用 Java 重新编码的人之间的争论。这种情况已经持续了很长时间。我相信这种情况已经改变,我们正在看到一个大的上升,例如,Jupyter 正在被用于公平和乏味的环境中,并弥合了多语言之间的差距,我认为 Arrow 和其他人可能也对此有所贡献……我希望筒仓正在倒塌。”
尽管在开发和部署模型的过程中存在一些影响协作的细微差别,有趣的是,主人翁意识是一个共同的主题。不管模型开发是在一个新公司还是一个更大的组织。然而,这种对工作和成果的拥有感可能会导致跨职能的协作团队或筒仓。组织以不同的方式团结在协作周围,与构建和部署模型相关的大量工作可能会导致潜在的紧张点,团队需要解决这些问题。
张力点
在讨论了协作的当前状态之后,讨论转变为坦率地识别在开发和部署模型时出现的潜在紧张点。确定具体的紧张点以及潜在的“为什么?”在它们的背后,让我们所有数据科学领域的人都可以迭代和解决问题的方法,以解决紧张点。讨论中出现的潜在紧张点包括围绕模型开发的“大量工作”、不同技术的组织需求、不一致的期望以及缺乏可重复性。
喜力指出,有一个
“构建一个数据驱动的产品需要大量的工作……其中一小部分是构建机器学习模型。整个管道的其余部分是广阔的…它包括“我们如何定义我们实际上试图解决的问题?“,”我们将要运行的原始数据是什么?“我该如何清洗和准备呢?“,”我可以使用什么标记的数据来训练算法?我需要带一组人来做标记吗?我需要建立什么工具来实现它们?“所有那些东西。然后,有很多关于“这个模型如何适应我的整个应用程序和代码库”的问题。然后输出它“;”它属于用户体验的哪一部分?我需要展示什么东西,以便人们理解模型的输出,使它可以被解释?“这整个宇宙的东西并不是在构建模型,而是与构建模型密切相关。这是一个技术性和挑战性的问题。我认为思考谁对这些不同的部分负责是有用的。….我认为,如果你的团队视野非常狭窄,只对那块馅饼的一部分感到兴奋,并认为完成其余部分是其他人的工作……或者,如果你处于这样一种情况,他们不能接触其余部分,因为这是其他人的工作,他们不被允许进入,也许有一个他们不能接触的不同的代码库,这似乎将成为紧张局势的来源。”
Nathan 为工作量、需求和“为什么”提供了另一种视角在企业内部出现的潜在孤岛和紧张点背后
“这种跨团队是多学科的。这是正确的道路。我在企业中看到的另一个方向是,可能有一个根深蒂固的现任团队在做商业智能,并且已经做了很多年,他们拥有自己的数据仓库。一些团队尝试不同的技术,显然他们要做的是创建一个不同的团队,给他们不同的角色,不同的名字。然后你在同一个组织里有竞争的团队。现在,我们正在引入更多的学习和令人兴奋的事情,这些事情超出了企业中的数据科学家正在做的事情的范围。所以,现在他们为机器学习工程师引入了一个新的角色,有了一个新的团队,它将分成两部分。我认为这是企业中出现的一种紧张关系,但另一方面,由于合规性问题,组织选择孤立 it 是有原因的。在金融领域的一些地方,我们看到可能有一个团队处理数据并开发模型,他们必须将这些模型交给另一个团队进行审计。实际上,不同的人在它进入生产之前会查看它,他们会给团队设置防火墙,这样他们就不能一起工作了。这在某种程度上破坏了跨学科的东西,但这正是我们努力解决合规性问题的方式。”
在讨论过程中,我指出,在我之前担任 O’Reilly 的数据编辑时,我听到了许多最近毕业的数据科学家的故事,他们在比较他们在学术界的工作和他们在行业内的预期工作时遇到了紧张点。然后我询问小组,他们是否仍然看到不一致期望的例子,
典狱长:“我想,我们谈到了安德烈·卡帕西,他的滑球很棒。他是特斯拉的人工智能主管。他有一张他攻读博士学位时的幻灯片。他只是在展示他的饼状图…他 90%的时间都在考虑模型,10%的时间在考虑数据。他有这个图表,现在他在工业界,他花 80%的时间思考数据,纯粹是因为在学术环境中,数据集是给定的。你试图将你的结果与其他人进行比较,所以你必须在数据集和如何保持稳定上达成一致。然而,在这个行业的大部分时间里,你实际上可以通过更新、改进、改变你的数据集、改变标签来进行改进,这可能会对系统产生真正的冲击,因为这是一种完全不同的技能,在学术界很难掌握。我认为这是最大的冲击之一。”
海尼克:“对,没错。我认为这又回到了一个问题,要实现一个数据驱动的产品,需要预先做大量的工作。我想,我们以前谈过。有几个人已经成功地扮演了一个角色,他们真的花了所有的时间去思考更多的模型架构。只有少数人能做到这一点,我认为只有少数几个问题让人们超级专注地制作这些模型,但我认为大多数正在做的工作需要这种子问题的参与广度。我认为它们非常有趣,但它们与人们期待的不同。”
这导致了关于可复制性或缺乏可复制性的讨论,这是学术界、整个科学界和行业内的一个紧张点
内森:“因为我相信你们很多人已经看过了,但是现在有一场关于科学中可重复性的大讨论。我们从这个数据和分析过程中开发的一些工具现在正在反馈到更传统的科学研究中,以帮助使研究报告更具可重复性。有一场对话,是关于我们如何不仅在科学中,而且在企业和行业中实现这一点,以使整个组织的结果具有可重复性,这样你就不会对你看到的结果争论不休。”
典狱长:“在再现性方面重复一下…对于现有的许多机器学习论文来说,这也是一个巨大的挑战。我想,如果你拿起一张机器学习的纸,试着从阅读开始,实际上复制结果,这通常会非常非常棘手。有时候,即使对谷歌内部的人来说,这也很棘手。我们也有自己的重复性问题,在机器学习方面,我们需要真正改进工具,提高期望值。挑战的一部分是,这些论文中的一些,数据集很难得到。所以,这确实阻碍了我们的许多尝试。”
虽然完全有可能花整整一个小时的小组讨论来确定潜在的紧张点,但我们将讨论转移到了迭代和解决问题的方法上,以解决紧张点。
解决紧张点的实用建议
当迭代和解决问题的方法来解决与围绕构建和部署模型的协作相关的紧张点时,出现了许多主题。一个主题包括考虑心态的转变。心态的转变包括拥有一种主人翁意识,对子问题产生“好奇心”,并考虑采取“不断学习”的观点。另一个主题包括通过配对、产品原型(即“Ozzing 向导”)、技术讲座/每周研讨会和组织文化期望来建立或强化不同职能角色之间的沟通渠道。通过跨职能工作或交叉培训努力实现跨学科理解也是出现的另一个主题。
所有权
关于主人翁意识,海涅克指出
“如果你对自己所负责的事情有一个非常开阔的视野,如果你对许多难题感到好奇,并且在你看来,如果你拥有许多难题的所有权,…因此,如果你的最终目标是“我想建造并发布一些有趣的东西”,这就消除了一些紧张感。
典狱长还表示
“当你有一个围绕一组需求团结一致的团队,每个人都沉浸在所有这些需求中,你会从中获得非常惊人的结果。这是紧张的反义词,但对一切就绪的团队来说,这是一个很好的对比。”
好奇心和学习心态
完全透明,所有小组成员在小组会议开始前会面,就紧张点的协作和问题解决进行初步讨论。考虑“好奇”或“对问题空间好奇”最初是由 Heineike 提出的,当时所有的小组成员都表示兴奋。这让我询问海尼克,请他在面板上解释一下:
海涅克:“我真正喜欢的一件事是意识到从工程的角度看这些问题有多少种不同的方式;数学,机器学习镜头或 UX 镜头,并让它在 Primer 上工作。我们四年前就开始了。我们四个人在一个房间里,两台坏掉的电脑,不知何故现在我们有 55 个人了。我环顾房间,看到所有这些人都有深厚的技能,所有这些不同的领域,实际上,非常兼收并蓄,不同类型的背景。只是看到所有这些汇集在一起,并意识到当你回头看时,天体物理学家花了一年时间来优化这一点,工程师花了一年时间在百老汇上,然后她回到大师赛去思考语言的一代。这需要所有这些兼收并蓄的人走到一起去做。”….“我认为,当我们进入问题时,如果你能真正接受存在子问题的事实,一些很大的子问题,如果你能以此为乐,那么我认为你有一个非常伟大、快乐的职业生涯在你面前。我认为归根结底就是这样。这里有一个折衷的作品…我们实际上在 Primer 团队中有相当多的计算科学家,Anna 是计算化学工作的博士[指向观众],这些人对算法感兴趣是因为他们想帮助解决一个问题。我认为,如果你把用户问题看作是需要解决的有趣的事情,如果你发现自己走在所有这些不同的道路上,有一段时间你沉浸在 UX,你会想,“哦,用户是如何看待机器学习输出的。“也许他们不像我理解他们那样理解他们,他们已经在这个模型上钻研了很长时间,并且已经解决了这个问题。或者,你突然发现你自己被桥接了,所以我们有你包装的文件,编码,贴在服务器上很快。你对这些作品越好奇,我觉得这很有趣。你可以让不同的人聚在一起,一起工作,一起娱乐。”
Nathan 讲述了他在为数据科学团队招聘时寻找的好奇心是一种怎样的品质:
“只是其中的一个片段…为数据科学团队招聘员工,这一直是我们招聘员工时做得更好的事情…是去特别是物理科学或物理工程领域,雇佣那些在某个领域的人,比如航空/航天,或者我雇佣了很多物理领域之外的人。因为他们有很多天生的好奇心。现在也有很多很好的方法让硬科学…我们在数据科学中看到的…正在帮助通知对方……”
进入一种学习的心态也与“好奇”有关,和海涅克有关
“我认为在这个行业里,一切都在不断变化,唯一不变的是感觉你不知道自己在做什么。你必须不断学习。我觉得每六个月我都会做一次总结,并意识到有一些我不知道如何去做的巨大的新事物要学。通常在关键时刻,你会说,“好吧。我明白了。“我认为如果你能接受这一点,”好吧,我会一直学习,我会做一些新的事情,这没关系。“也意识到其他人都在那条船上。会有一些你知道的事情,也会有一堆你不知道的事情。如果你能谦虚地说,“实际上我不知道你在说什么。“当他们告诉你他们非常兴奋的事情,而你在等待解释,这样你们可以很快地互相学习。我认为这是真正的关键。”
沟通
在解决面向协作的紧张点时,建立和强化沟通渠道非常重要。几个可行的执行方法包括配对、产品原型(即“Ozzing 向导”)、技术讲座/每周研讨会和组织文化期望。
喜力建议配对作为解决紧张点的一种方式
“我们发现 Primer 的一个很好的做法是,在产品团队中,数据科学家、工程师和产品经理都在一个团队中。他们将每天相互交流,直接对话。我想可能会有一些组织方面的东西可以帮助你…所以你们坐在一起,这是件好事。实际上你只需要多说一点。您希望数据科学家不要害怕去阅读应用程序的代码,然后开始询问关于它的问题,并开始解释他们遇到的问题。然后,工程师将询问有关数据科学部分的问题,以及它们所依赖的是什么。然后让对话继续下去。”
沃顿建议对合作持积极开放态度
…我喜欢把类似“嘿,这是我的简单语音识别工具”的东西放在一起,所有的基础设施就像“嘿,这是我创建的数据集,这是我创建的一些指标”,然后就把它放在那里。当知道人们比我更关注模型时,他们的眼睛会亮起来,他们会说“啊,我们可以做得比这更好。“他们不必担心数据清理的所有棘手问题。数据收集,以及所有其他的东西。这是一种很好的激励方式。”
沃顿还建议进行一次产品原型的练习,或“Ozzing 向导”,以帮助建立和强化沟通渠道:
“这有点不同,但我最喜欢的方法之一,尤其是当我们是一个小团队时,实际上产品原型是一种叫做 Ozzing 向导的东西,在那里你实际上有一个人在幕后而不是一个瓶子。另一端的东西,比如,聊天,或者你知道,谁得到了像一个屏幕截图,但实际上并没有进入。所以人们…根据他们在屏幕上看到的实际情况,基本上必须假装是模特。这就像是一个非常有趣的派对游戏。但它真的,就像你在实际产品上得到的迭代。因为通常情况下,产品团队或产品人员(如果是一家初创公司)不会真正理解他们必须考虑的所有问题,也不会像机器学习解决方案那样在头脑中建模。如果你能告诉他们,即使是一个在这个世界上活了 25 年的人,也不能用他们得到的信息解决这个问题,那么我们很可能无法训练一个模型来做到这一点。”
沃登还建议清楚地阐明这项工作对研究人员的回报和影响
“我看到的最鼓舞研究人员的事情之一是,人们非常清楚他们需要研究人员正在研究的东西,实际上给他们指明方向,并说,“看,如果你能解决这个问题,这将是一件非常重要的事情。“一个例子是,我在我的一些微控制器上做了很多工作,并喜欢尝试做一些非常小的负足迹设备。为了在上面进行图像识别,你只能使用 250 千字节的内存…你没有太多的空间。我真的很关心,“好吧,那么小的图像网络能有多好?一些研究人员在内部会说,“哦,是的,我确实想过用这样的东西来玩,但是我不知道是否有人会真的使用它,所以我不打算发表它。但这是我的结果。嘿,你想合作什么的吗?”这是满袋的另一面。不一定要把这整件事都强加给研究人员。也许我与之交流和交谈的只是研究人员,他们实际上愿意和我交谈。他们真的很兴奋听到他们的研究可以被使用的方法,并得到关于方向的想法,他们应该思考的重要的未解决的问题。这真的让他们的一天,当你喜欢,“哦,我们实际上采取了这一点,我们认为它很有趣,我们打开它,我们这样使用它。你的工作确实有所作为。你不仅仅是一个 PDF 创建者。”
Nathan 深入探讨了每周一次的研讨会或技术讲座如何成为解决协作紧张点的潜在解决方案
“在一家规模较大的公司,比如 170 人,我们会把不同的数据科学家分配到不同的产品团队。但是我们想从那些不经常互相交谈或者看不到他们的项目的人们那里得到更多的反馈。所以我们做了每周一次的研讨会,我们会邀请利益相关者。我们会邀请财务负责人来听听。我们会要求人们不要在许多试探性的问题上过于咄咄逼人,但有点像,你可以参与,但不要试图让他们为难,因为我们真的想在这里分享。他们让我们开的更像是研究生研讨会。总体来说效果不错。通过这种方式,团队之间有很多很好的反馈。”
内森还指出了组织文化期望是如何帮助像网飞这样的公司的
“我喜欢的另一个很好的例子是网飞的数据基础设施。米歇尔·乌福德是这方面的领导者之一。我想我们在 JupyterCon 就此进行了辩论。真正打动我的是米歇尔真正强调了文化对于解决这类问题的重要性。我认为这是我们在小组中讨论的广泛范围…他们的例子是,团队想出了某种文化方式来解决问题,并让很多人一起工作。我认为,尝试通过角色来发现这一点,或者清单是什么?我认为你真的需要在文化上传播这一点。”
Nathan 还指出,监管环境通常对合作有文化期望
“我认为这个行业有一个有趣的趋势,高度监管的环境有如此多的要求,但他们也有如此多的需要去尝试和完成一些事情,这成为一个明确的要求。 我们在情报界、金融、医疗保健以及对隐私进行外部控制的地方看到了这一点。但是我们在开源领域看到了更多有趣的发展。一年前我绝不会想到这一点。但它正在发生。”
交叉训练
在之前关于当前状态的对话中,Heineike 和 Warden 都提到自己是多学科跨职能团队的一员,或者目前正处于多学科跨职能团队中,而 Nathan 则提到了企业内部有意识的交叉培训是如何有效解决以协作为导向的紧张点的:
“我看到的一个建议是多做交叉训练。一个我可以参考的好例子…Richa Khandelwal 是波特兰耐克公司数据工程经理之一。她在 OSCON 大学做了一个非常棒的演讲,讲述了他们如何让数据工程团队的人参加数据科学训练营,以便他们能够体会到与数据科学家一起工作意味着什么,反之亦然。他们把一个团队的人带到另一个团队进行交叉训练。我认为这是一个很好的方法,可以打破一些障碍,也可以设定期望值,并有望让人们拥有更多筹码。”
这些只是解决紧张点的一些建议。如果感兴趣,在这篇博文的完整文字记录部分有更多的见解。
你希望未来的状态是什么样的?
在花了大部分时间反复讨论面向协作的紧张点的识别和问题解决之后。我们讨论了潜在的未来状态,结束了小组讨论。或者他们希望未来的国家是什么样子。毫不奇怪,尽管扮演着不同的角色,但每个小组成员对数据科学未来的希望都有相似之处。每个小组成员都提到了好奇心,并提供了额外的见解。
海涅克:“…当数据科学第一次被创造出来的时候,它正在成为一种东西。有很多人最终认同了这个术语。来自各种背景的人,因为对一些数据集好奇而走进来。我认为随着该领域的成熟,这有点有趣,因为你可以参加这些正式的项目,有很多人参加机器学习项目和计算机科学系。我很好奇这将如何发展。我们看到这个领域正在走向成熟,人们可以遵循一些更清晰的路径。从某种意义上说,这意味着人们进来时背景的缩小。另一方面,你有所有这些可用的工具、模型和方法,让真正广泛的人群参与进来,带来不同的观点。我真的希望我们能保持这种多样性,并利用这些工具的存在,这很好,而不是最终走上这样一条道路,即每个人都必须通过相同的项目和相同的公司,只有一条道路,这样我们就可以保持一些创造力。”
内森:“我喜欢好奇心这部分。你认为你要去法学院并成为一名执业律师,你的职业就是持怀疑态度。我们需要另一种被认为是好奇的职业。他们可以互相制衡。我喜欢调查,我们做了很多调查,我看到一些有趣的谈话,关于人们做关于雇佣数据科学家的故事,以及分析数据需要什么。TapRecruit 已经做了很多这样的工作。他们发现一件有趣的事情是,寻找“高级数据科学家”的角色实际上不如试图让某人担任“数据科学家”的角色。因此,你会看到那些出色的环境科学家、天体物理学家或诸如此类的人转而申请后者。然后,尝试看看对初级数据科学家的要求真的很有趣,因为它们切入了基本的特质,比如好奇心,比如愿意花 80%的时间清理数据。我认为,我更愿意少关注高层,而更多地关注未来的发展道路和那里的特点。”
典狱长:“我也很喜欢好奇心这个主意。我在 Jetpac 花费大量时间试图寻找优秀的旅行照片,并试图浏览数十亿张 Instagram 照片、脸书照片和 Flickr 照片,以找到某个特定地方的完美照片的原因之一。我们做了一些事情,比如通过识别人们脸上的胡子来寻找潮人经常出没的地方,诸如此类。但是我意识到,我们团队中的一些人比程序员更善于找出指导应该是什么。但是他们必须通过我们给我们需求,让我们建立模型。我最自豪的事情之一…我能够建立一个系统,在一个预先训练好的图像分类器上进行转移学习,我们的营销人员可以给它 100 张照片,分为 10 个不同的类别,它实际上会学习识别,比如,“哦,你想在照片中识别狗吗?给它一堆有狗在的照片,一堆没有狗的照片就行了。“没有任何程序员的干预,他们可以在应用程序中部署并创建自己的模型。我真正希望的是,我可以帮助自己摆脱程序员的工作。我们有这种非常奇怪的结构,我们有懂得如何用这种非常神秘的语言写规则的神职人员。我们必须尽量减少这些琐事,以便能够与计算机对话。如果我们能改变一些事情,这样任何能给出一堆例子的人都可以选择正确的模型,然后给它一堆例子,得到一些像样的东西,然后快速迭代,这就是我未来真正兴奋的事情。我也是这么想的。我希望它能在整个组织中扩散,而不是如此孤立和条块分割。我有点希望 web 服务像 21 世纪初一样在企业中兴起。人们只需启动一个 web 服务器,其他人将在内部网内访问它,it 部门根本不参与。他们(它)变得非常恼火,然后他们不得不最终放弃,让人们去做。我有点希望机器学习成为销售、营销、支持和其他人都能轻松掌握并解决问题的东西。”
结论
数据科学和工程之间的协作是一个众所周知的挑战。这一挑战有可能阻碍创新,阻碍数据科学工作的加速。在数据科学领域,我们是否应该耸耸肩,说“事情就是这样。”或者说“*这是一个太难解决的问题。我宁愿去解决别的事情。”*然而,数据科学不正是基于解决以前无法解决的问题的理念吗?我从杰出的数据科学家和杰出的工程师那里听到了很多关于他们在开发和部署模型的合作中遇到挫折的故事。这不是一个不可克服的问题。例如,小组成员友好地提供了不同的见解来帮助解决这个问题。从我的角度来看,在这个问题上,缺乏从多个角度进行深入分析的严格公共话语。具体来说,分析严谨的话语是基于互相帮助和利用彼此想法的意图。主持该小组并提供来自多位行业专家的其他见解的目的是积极参与公共讨论,并致力于解决以协作为导向的紧张点。如果你有兴趣参与这次公开演讲,请随时联系我。
完整抄本
这部分提供了小组讨论的完整记录。为便于阅读,对文本进行了编辑。
安·斯潘塞,你好。非常感谢你和我们共度良宵。感谢您抽出时间,我还要特别感谢我们的小组成员。我叫安·斯潘塞,是达美乐的内容主管。Domino 是一个数据科学平台,致力于加速数据科学工作。我的责任是确保我们的内容反映我们的核心价值观之一。我们的核心价值观之一是寻求真理,讲真话。对我们来说极其重要的是,我们的内容注入了这种价值观,并且贯穿始终。因为我们的内容旨在提供高水平的价值,并引发关于如何推动数据科学发展的对话,真正诚实、坦率、尊重的对话。在前世,我是 O’Reilly Media 的数据编辑,专注于数据科学和数据工程,这就是我如何认识这些小组成员的。在过去的生活中,我与他们合作,我非常感谢今天我在 Domino 的当前角色,我可以继续与他们合作,并受到他们的启发。如果你们每个人能花点时间向观众介绍一下自己,我会很高兴的。
帕科·内森,德文:大家好,我叫帕科。帕科·内森。我在塞瓦斯托波尔的德文公司工作。直到最近,我还一直为奥赖利工作。我的背景是机器学习,并在该行业领导数据团队多年。然后我去了一段时间,成为 Apache Spark 的开源传道者。主要是我一直在和 Strata Data 大会和 AI 大会合作;世界各地的会议。我真的喜欢尝试鸟瞰这个行业正在发生的事情,并与许多不同的团队交谈,了解他们在做什么。
艾米·海尼克,Primer :大家好,我是艾米·海尼克,Primer 的产品工程副总裁。我的背景是数学,最初是一名数据科学家。我之前就在思考这个问题,我作为数学家的背景引导我进入 Quid,然后是 Primer,这是四年前开始的。我们正在建造可以读写文本的机器,包括大型语料库和非结构化数据,将见解汇总成有用的报告。
皮特·沃顿,谷歌:我是皮特·沃顿。TensorFlow 移动嵌入式方面的技术领导者和我有一家名为 JetPac 的初创公司,大约四年前被谷歌收购。我真的很喜欢 TensorFlow,我可以和很多谷歌团队以及很多外部团队一起工作,他们有各种非常有趣的数据问题,我可以学到各种东西,偶尔还可以帮助他们。
安·斯潘塞:非常感谢你们的自我介绍。所以,今晚小组的主题是关于合作。特别是在开发和部署模型上的协作。我们今晚谈话的结构;我们将从围绕模型开发和部署的当前协作状态开始。然后我们会稍微讨论一下潜在的未来状态,或者人们希望的未来状态。然后我们将向观众提问。只是一件家务事,我确实要求,如果你决定提出一个问题,如果你的问题能够一口气说完,并以一个问题结束,那就太好了。我觉得这对观众来说不成问题,但我想我们都经历过。此外,我们将在明天结束对拉科西娜的捐赠和抽奖活动,让每个人都有机会捐赠。我非常感谢我们迄今为止已经为 La Cocina 筹集了数百美元,如果您想参加抽奖赢取 Strata 的青铜级通行证,请在活动结束后自由活动。让我们从围绕模型开发和模型部署的当前协作状态的讨论开始。根据小组中每个人在数据科学和工程方面的丰富经验,您对当前状态有什么看法?
Amy Heineike: 我们在 Primer 所做的其中一件事,我们已经谈了很多次[向 Pete Warden 做了手势],就是我们最终引进了能够沟通数据科学和工程的人。我们将这个团队称为“产品工程”,其中包括知道如何构建机器学习模型、知道如何进行数据科学、有一点产品直觉以及知道如何将东西投入生产的人。我认为对我们来说,我们真正考虑的是如何让团队(个人或分享他们技能的个人组成的小团队)能够解决有趣的数据问题,然后实际发布该功能,这实际上是一个非常简单的过程。我们有能力做出贡献,这真的很有趣,实际上也很自由。我应该说,这里有几个来自 Primer 的人。我们现在正在疯狂招聘,他们超级聪明,和他们聊天真的很有趣,如果你对任何事情都感兴趣,你应该在之后和他们聊天。
Pete Warden: 我想你之前提到过全栈机器学习。
艾米·海涅克:我确实说过,是的。
Pete Warden: 这是我和 Amy 早些时候讨论这个问题时非常喜欢的一个阶段,是关于全栈机器学习的想法。因为我也看到了,如果你没有最终用户体验的所有权,你最终只会构建学术模型,这些模型对于在 ImageNet 之类的东西中获取指标非常有用,但你不会学习所有你需要学习的东西,以将其转化为最终用户的真正有效的模型。拥有产品和研究技能的结合;这是一种超能力。你实际上能够以一种方式将产品提供给人们,这种方式是许多理论上不知道机器学习的团队,如果他们没有这种经验,可能会很难做到的。试图鼓励人们真正掌控整个过程非常重要。
Paco Nathan: 我可能会从另一个角度来看,因为就像你说的,我认为这些都是很好的例子。我将从与我交谈过的许多公司和案例研究中了解一些观点,在企业内部,数据科学和数据工程团队之间存在很大的分歧。它们几乎是孤立的。好像一年前,我会听到这样的争论,比如说,数据科学团队中想做 Python 或 R 的人和数据工程团队中想用 Java 重新编码的人之间的争论。这种情况已经持续了很长时间。我相信这种情况已经改变了,我们正在看到一个大的上升,例如,Jupyter 正在被用于公平和乏味的环境中,并弥合了多语言的差距,我认为 Arrow 和其他人可能也对此有所贡献。我希望筒仓正在倒塌。
**安·斯潘塞:**说到筒仓,听起来筒仓肯定存在潜在的协作紧张点。你愿意就此谈一谈吗?
艾米·海尼克:当然。我们真正学到的一件事是,如果你考虑构建一个数据产品…这是假设数据中会出现一些有趣的东西…构建一个数据驱动的产品需要大量的工作…其中一小部分是构建机器学习模型。整个管道的其余部分是广阔的…它包括“我们如何定义我们实际上试图解决的问题?”“我们将要运行的原始数据是什么?”“我该如何清洗和准备?”,“我可以使用哪些带标签的数据来训练算法?我是否必须引入一个团队来做标记,我需要构建什么工具来支持他们?”所有这些东西。然后,还有所有这些关于“这个模型如何适应我的整个应用程序和代码库?然后是它的输出它属于用户体验的哪一部分?我需要展示什么东西,以便人们理解模型的输出,使它可以被解释?“这整个宇宙的东西并不是在构建模型,而是与构建模型密切相关。这是一个技术性和挑战性的问题。我认为思考谁对这些不同的部分负责是有用的。…."我认为,如果你的团队视野非常狭窄,只对那块馅饼的一部分感兴趣,并认为完成其余部分是其他人的工作……或者,如果你处于这样一种情况,他们不能接触其余部分,因为这是其他人的工作,他们不被允许进入,也许有一个不同的代码库,他们不能接触,这似乎将是紧张局势的来源。我觉得光是反思他们就很有意思。思考这种广泛的问题和技能,这些都是整合一些东西所需要的。很有意思。我真正喜欢的一件事是意识到从工程的角度看这些问题有多少种不同的方式;数学,机器学习镜头或 UX 镜头,并让它在 Primer 上工作。我们四年前就开始了。我们四个人在一个房间里,两台坏掉的电脑,不知何故现在我们有 55 个人了。我环顾房间,看到所有这些人都有深厚的技能,所有这些不同的领域,实际上,非常兼收并蓄,不同类型的背景。只是看到所有这些汇集在一起,并意识到当你回头看时,天体物理学家花了一年时间来优化这一点,工程师花了一年时间在百老汇上,然后她回到大师赛去思考语言的一代。这需要所有这些兼收并蓄的人走到一起去做。
Pete Warden: 这实际上让我想到了我在谷歌认识的许多成功团队,即移动视觉团队,以及他们所做的工作;他们是开发 MobileNet 的团队,MobileNet 是业界领先的模型之一,实际上在非常非常小的空间内进行图像识别和图像分类,因此非常适合移动应用程序。但是他们的方法真正有趣的是他们是这样的…再次回到全堆栈的想法,他们有安德鲁·霍华德,他是提出这种真正突破性架构的人,他的驱动力是“嘿,我们需要尽可能精确、尽可能小和尽可能快的东西”。所以,相对工程权衡。但是他实际上是和收集新奇数据的团队坐在一起工作。他们实际上在试图找出更好的标注数据的方法,想出去除不正确标签的方法,获得更多数据,并找出他们何时需要更多数据。在同一个团队里,他和 Benoit Jacob 以及其他一些人一起工作,他们正在做这些低级的组装优化,以使这个东西在手机上运行得非常非常快。他们正在做所有这些 ARM NEON 工作,这实际上反馈到模型的设计中,因为他们喜欢,“嘿,如果这一层中有 8 的倍数,这意味着我的汇编例程实际上可以运行得更快一些”。另一方面,如果他们可以通过包括训练数据或填写标签来使模型更加准确,那么这意味着他们可以将准确性保持在同一水平,缩小模型,并看到准确性从更高的水平下降,因此他们可以通过改善数据集的标签来改善延迟。当你有一个围绕一组需求而统一的团队,并且每个人都沉浸在所有这些需求中时,你会从中获得非常惊人的结果。这是紧张的对立面,但对一切都准备好的团队来说,这是一个很好的对比。
Paco Nathan: 这种跨领域团队是多学科的。这是正确的道路。我在企业中看到的另一个方向是,可能有一个根深蒂固的现任团队在做商业智能,并且已经做了很多年,他们拥有自己的数据仓库。一些团队尝试不同的技术,显然他们要做的是创建一个不同的团队,给他们不同的角色,不同的名字。然后你在同一个组织里有竞争的团队。现在,我们正在引入更多的学习和令人兴奋的事情,这些事情超出了企业中的数据科学家正在做的事情的范围。所以,现在他们为机器学习工程师引入了一个新的角色,有了一个新的团队,它将分成两部分。我认为这是企业中出现的一种紧张关系,但另一方面,由于合规性问题,组织选择孤立 it 是有原因的。在金融领域的一些地方,我们看到可能有一个团队处理数据并开发模型,他们必须将这些模型交给另一个团队进行审计。实际上,不同的人在它进入生产之前会查看它,他们会给团队设置防火墙,这样他们就不能一起工作了。这在某种程度上破坏了跨学科的东西,但这正是我们努力应对合规性的方式。
**安·斯潘塞:**我想稍微解释一下这种紧张感,我记得几年前我在 O’Reilly 做数据编辑的时候,我记得当时有许多数据科学家来找我,他们表示他们刚刚获得博士学位,他们刚刚开始工作,有一段时间因为错误的期望而感到紧张。对吗?“我以为我会在这个项目上工作,但在开始日期,这不是我正在做的事情”。当时,我记得有像 Insight Fellows 这样的项目来帮助解决这个问题。你在目前的会议上有没有看到类似的事情,或者对真正进入这个领域的人的期望与他们开始后的经历有什么不同?
**皮特·沃顿:**我非常喜欢谷歌的一点是,它有一种非常好的文化,人们期待我们从事工程工作。在研究方面,很大程度上有一种工程文化,它不是关于“嘿,你不能做研究”,而是关于思考所有的权衡以实现最终目标。我认为这是一个非常有利的环境,你可以…我说的是安德鲁·霍华德,他在日本出版了一些东西。他在做这些开创性的架构,但他也花了很多时间倾听客户团队的意见,并与 NEON 汇编人员交谈,了解他们的目标是什么?我有什么选择来权衡呢?这可能很难向一个有学术背景的人解释。我认为,我们谈到了安德烈卡帕西,他有一个伟大的幻灯片。他是特斯拉的人工智能主管。他有一张他攻读博士学位时的精彩幻灯片。他只是在展示他的饼状图…他 90%的时间都在考虑模型,10%的时间在考虑数据。他有这个图表,现在他在工业界,他花 80%的时间思考数据,纯粹是因为在学术环境中,数据集是给定的。你试图将你的结果与其他人进行比较,所以你必须在数据集和如何保持稳定上达成一致。然而,在这个行业的大部分时间里,你实际上可以通过更新、改进、改变你的数据集、改变标签来进行改进,这可能会对系统产生真正的冲击,因为这是一种完全不同的技能,在学术界很难掌握。我认为这是最大的冲击之一。
**艾米·海尼克:**对,没错。我认为这又回到了一个问题,即要实现一个数据驱动的产品,需要做的工作范围非常广泛。我想我们以前谈过。有几个人已经成功地扮演了一个角色,他们真的花了所有的时间去思考更多的模型架构。只有少数人能够管理它,我认为只有少数几个问题需要人们超级专注地制作这些模型,但我认为大多数正在做的工作需要这种子问题的参与广度。我认为它们非常有趣,但它们与人们期待的不同。
Paco Nathan: 我看到的一个建议是多做交叉训练。一个我可以参考的好例子…Richa Khandelwal 是波特兰耐克公司数据工程经理之一。她在 OSCON 大学做了一个非常棒的演讲,讲述了他们如何让数据工程团队的人参加数据科学训练营,以便他们能够体会到与数据科学家一起工作意味着什么,反之亦然。他们把一个团队的人带到另一个团队进行交叉训练。我认为这是一个非常好的方法,可以打破一些障碍,也可以设定期望值,并有望让人们拥有更多筹码。
安·斯潘塞:我记得我们其他的一些对话…听起来我们肯定是在解决问题,解决一些紧张局势,对吗…我记得艾米有一个很好的“好奇”或“对问题空间更好奇”的框架。你能帮我打开包装吗?
Amy Heineike: 是的,我认为当我们进入问题时,如果你真的能接受存在子问题,一些很大的子问题的事实,如果你能以此为乐,那么我认为你有一个非常伟大、快乐的职业生涯在你面前。我认为归根结底就是这样。这里有一个折衷的作品…我们实际上在 Primer 团队中有相当多的计算科学家,Anna 是计算化学工作的博士[指向观众],这些人对算法感兴趣是因为他们想帮助解决一个问题。我认为,如果你把用户问题看作是一件有趣的事情来解决,如果你发现自己走在所有这些不同的道路上,有一段时间你沉浸在 UX,你会想,“哦,用户是如何看待机器学习输出的。”也许他们不像我理解他们那样理解他们,我已经在这个模型上研究了很长时间,并且已经解决了这个问题。或者,您突然发现自己对如何更容易或可伸缩地部署代码感兴趣。你对这些作品越好奇,我觉得这很有趣。你可以让不同的人聚在一起,一起工作,一起娱乐。
帕科·内森:只是其中的一个片段…为数据科学团队招聘,这一直是我们配备人员时更好的做法…是去特别是物理科学或物理工程领域,雇佣那些在某个领域的人,比如航空/航天,或者我雇佣了很多物理领域之外的人。因为他们有很多天生的好奇心。现在也有很多很好的方法让硬科学…我们在数据科学中看到的…正在帮助彼此传递信息。因为我确信你们中的很多人已经看过了,但是现在有一个关于科学中可复制性的大讨论。我们从这个数据和分析过程中开发的一些工具现在正在反馈到更传统的科学研究中,以帮助使研究报告更具可重复性。有一个对话,是关于我们如何不仅在科学中,而且在企业和行业中实现这一点,使整个组织的结果具有可重复性,这样你就不会对你看到的结果争论不休。
皮特·沃顿:在再现性方面重复一下…对于现有的许多机器学习论文来说,这也是一个巨大的挑战。我想,如果你拿起一张机器学习的纸,试着从阅读开始,实际上复制结果,这通常会非常非常棘手。有时候,即使对谷歌内部的人来说,这也很棘手。我们也有自己的重复性问题,在机器学习方面,我们需要真正改进工具,提高期望值。挑战的一部分是,这些论文中的一些,数据集很难得到。所以,这确实阻碍了我们的很多尝试。
Paco Nathan: 那你有什么要求吗?如果人们在谷歌内部发布一些东西?他们需要附上他们的代码吗?或者有某个回购的网址?这是怎么回事?
皮特·沃顿:我总是喜欢他们使用 TensorFlow(带着微笑和咯咯的笑声),我的意思是,严肃地说,有某种代码工件是非常受鼓励的。我觉得甚至不一定要写下来。人们只知道,为了对世界有用,甚至对谷歌的其他人有用,这种事情需要发生。
Paco Nathan: 现在你越来越多地看到研究论文使用芝诺多[【https://guides.github.com/activities/citable-code/】]和其他方式作为参考,作为 Github 的书面回购,甚至作为媒体发布后可以更新的链接。我知道 Fernando Perez 最近发表了关于这一点的文章,这是保持报告可持续性的一些小技巧。
Amy Heineike: 我想对论文问题有一点不同的看法。因为我们发现的一件事是,有时会有一份非常酷的文件出来,当你打开它时,你会意识到里面有很多你不需要的复杂内容,你可以扔掉它们。阅读这篇论文的关键是试图找出他们有什么真知灼见?然后你即兴发挥。我觉得有很多想法都是因此而产生的。从某种程度上来说,再现性并不重要,如果你完全复制它。我们希望有更好的方法来知道我们是否会对一篇论文感到非常失望,或者它是否真的很酷。进入出版物没有什么酷的,实际上当你把它剥开的时候,没有任何东西可以让你继续下去。
**安·斯潘塞:**为了解决一些紧张点,特别是关于论文的问题,我记得以前的谈话中人们都在谈论取舍…关于发表论文和接触研究人员的支持网络之类的。你愿意打开一点吗?
**皮特·沃顿:**我看到的最鼓舞研究人员的事情之一是,人们非常清楚他们需要研究人员正在研究的东西,实际上给他们指明方向,并说,“看,如果你能解决这个问题,这将是一件非常大的事情。”一个例子是,我在我的一些微控制器上做了很多工作,并喜欢尝试做一些非常小的负足迹设备。为了在上面进行图像识别,你只能使用 250 千字节的内存…你没有太多的空间。我真的很关心,“好吧,那么小的图像网络能有多好?”一些研究人员在内部会说,“哦,是的,我确实想过用这样的东西来玩,但是我不知道是否有人会真的使用它,所以我不打算发表它。但这是我的结果。嘿,你想合作什么的吗?”这是全部筹码的另一面。不一定要把这整件事都强加给研究人员。也许我与之交流和交谈的只是研究人员,他们实际上愿意和我交谈。他们真的很兴奋听到他们的研究可以被使用的方法,并得到关于方向的想法,他们应该思考的重要的未解决的问题。这真的让他们的一天,当你喜欢,“哦,我们实际上采取了这一点,我们认为它很有趣,我们打开它,我们这样使用它。你的工作确实有所作为。你不仅仅是一个 PDF 创建者。”
Paco Nathan: 我们在一次 Jupyter 会议上看到了一个非常有趣的案例。是国防部发来的。我想提出来是因为这是一种不同的借款。从某种意义上说,这类似于人们在研究他们想要分享的东西。只是,在情报界,你不能直接走到隔壁房间的人面前分享结果,因为你可能会进监狱。他们必须想办法让我们继续进行这种交叉合作,而不违反真正严格的数据隐私控制。有一个产品叫做 nb gallery[https://nbgallery.github.io/]出自 In-Q-Tel 的 41 号实验室。国防部的戴夫·斯图尔特一直在谈论这个问题。他们刚开始接触我们时有点害羞,因为他们说,“你认为国防部以外的人会感兴趣吗?”坦白说,任何银行都应该对此感兴趣。他们想出了在笔记本上记录问题陈述和解决方案的方法。然后能够自动地撕掉笔记本中的任何数据,以便其他团队可以查看和使用它。表面上,他们会放入其他数据,但仍然具有安全合规性。奇怪的是,现在你可以让情报部门将他们的代码提交回 GitHub。就像为 Jupyter 开发的东西被放回平台,然后像 Capital One 或其他公司进入并采用。我认为行业中有一个有趣的趋势,即高度监管的环境有如此多的要求,但他们也有如此多的尝试和完成一些事情的需求,这正是我们在情报界、金融、医疗保健以及完全控制隐私的地方看到的。这就是我们在开源中看到的更有趣的发展。一年前我绝不会想到这一点。但它正在发生。
Amy Heineike: 是的,对我们来说,我们产品的设计原则之一是,我们获取大量文本并对其进行总结,我们展示的所有内容都应该能够点击进入并查看其来源。这是为了向你展示这是一件非常有趣的事情…它从何而来。也许它是作为一个事实出现在很多文献中的。我们想到的一个问题是,如果它出现在不同的地方…它以什么不同的方式出现?哪一种方式具有代表性?当你试图解决问题时,会出现很多有趣的子问题。
皮特·沃顿:关于动力还有一件事。当你谈论那个的时候,我正在想这个。我实际上喜欢做的一件事是…我不擅长做模型…我喜欢把类似“嘿,这是我的简单语音识别工具”的东西放在一起,所有的基础设施就像“嘿,这是我创建的数据集,这是我创建的一些指标”,然后就把它放在那里。当知道人们比我更关注模型时,他们的眼睛会亮起来,他们会说“啊,我们可以做得比这更好。”他们不必担心数据清理带来的所有痛苦。数据收集,以及所有其他的东西。这是一种很好的激励方式。这导致了像卡格尔这样的事情。这是一个数据竞争框架网站,你可以在这里竞争,看看你能与世界各地成千上万的人一起解决机器学习问题。你可以得到这些现成的列,上面有所有这些公司提供的指标。我发现这是一个很好的进入机器学习的方式,并学习它的实际应用。
艾米·海内克:皮特的博客[【www.petewarden.com】T2]是关于一些最好的小教程。我想我最喜欢的是当你有一个猫探测器。[笑声]。几行。就几行。
**安·斯潘塞:**关于这一点,既然我们似乎是在为人们提供实用的建议,那么对于人们,或者刚刚开始尝试解决他们所看到的一些合作问题的人们来说,你还有什么想说的吗?
Paco Nathan: 我喜欢的另一个很好的例子是网飞的数据基础设施。米歇尔·乌福德[https://twitter.com/MichelleUfford是这方面的领导者之一。我想我们在 JupyterCon 就此进行了辩论。真正打动我的是米歇尔真正强调了文化对于解决这类问题的重要性。我认为这是我们在小组中讨论的广泛范围…他们的例子是,团队想出了某种文化方式来解决问题,并让许多人一起工作。我认为,尝试通过角色来发现这一点,或者清单是什么?我认为你真的需要在文化上传播它。
Amy Heineike: 我认为在这个行业中,一切都在不断变化,唯一不变的是你不知道自己在做什么。你必须不断学习。我觉得每六个月我都会做一次总结,并意识到有一些我不知道如何去做的巨大的新事物要学。通常在关键时刻,你会说,“好吧。我得到了这个。”我认为如果你能接受这一点,“好吧,我会一直学习,我会做一些新的事情,这没关系。”也意识到其他人都在那条船上。会有一些你知道的事情,也会有一堆你不知道的事情。如果你能谦虚地说,“实际上我不知道你在说什么。”当他们告诉你他们非常兴奋的事情,而你在等待解释,这样你们可以很快地互相学习。我认为这是真正的关键。
Pete Warden: 关于实用的建议,重复一下,如果你能找到合适的材料,那么用机器学习做一些有用的事情会出奇的快。传统的学术道路是博士之类的东西,如果你想真正深入研究,从头开始创造新的模型之类的东西,这是非常有价值的。但是对于开始和实际使用这些东西来说,有很多很棒的材料,你可以随便拿起。我认为 Fast.ai 有很棒的免费课程,非常侧重于工程,非常实用。有各种各样非常棒的解决方案。不要因为想“哦,我必须学会所有这些术语”而感到厌烦。有很多方法可以让你一头扎进去,开始玩东西,边玩边学。
Paco Nathan: 我能说说敏捷吗?这是我经常遇到的一件事,尤其是在企业中,因为你提到任何关于工程或数据的事情,你都会听到敏捷这个词作为回应。这是一种回声反应。所以有一代管理人员是在这种环境下成长起来的,对吗?我会提到大卫·塔尔比,我很喜欢他在《太平洋 AI》的演讲。他和 NLP 在医疗保健和医院做了很多工作。他进来展示了这些失败案例,当他们部署的模型与他们部署后的意图相反时。当你考虑一个敏捷团队时——无论你使用敏捷、看板,还是任何方法变体。当你在考虑构建一个 web 应用程序时,你会让你真正资深的人提前考虑这个问题,所以你的架构师、你的团队领导,他们会很早就参与到这个过程中来。然后随着产品的成熟,越来越多级别不高的人参与进来。所以他们正在构建不同的单元测试和更小的功能。这是一条成熟度曲线,与天赋水平相对应。大卫·塔尔比提出的一件事是,随着机器学习,随着数据科学部分投入生产,基本上是相反的。如果你只有一个数据集,你想创建一个模型,这就像一个家庭作业。你可以做现成的。一旦你在生产中就地部署了模型,你开始看到所有没有人预料到的奇怪的边缘情况,你必须解决这些问题,这是真正资深的人必须参与的地方,他们有这方面的专业知识。你可以从小处着手,然后真正引进大的武器。在我看来,什么是数据科学?机器学习、数据管理和统计的一些组成部分可能会变得非常奇怪——我在大学时不得不处理很多事情。这是对生产中的机器学习模型进行故障诊断,理解统计中的一些真正深度是你可以避免作为一个公司陷入困境的地方。不是很多人有这种能力。我就说不是敏捷,是相反。我不知道敏捷反过来是什么意思,但它难倒了我。[笑声]
Amy Heineike: 我认为正在发生的一件有趣的事情是…所以有一天,当数据科学第一次被创造出来的时候,它正在成为一种东西。有很多人最终认同了这个术语。来自各种背景的人,因为对一些数据集好奇而走进来。我认为随着该领域的成熟,这有点有趣,因为你可以参加这些正式的项目,有很多人参加机器学习项目和计算机科学系。我很好奇这将如何发展。我们看到这个领域正在走向成熟,人们可以遵循一些更清晰的路径。从某种意义上说,这意味着人们进来时背景的缩小。另一方面,你有所有这些可用的工具、模型和方法,让真正广泛的人群参与进来,带来不同的观点。我真的希望我们能保持这种多样性,并利用这些工具的存在,这很好,而不是最终走上一条道路,每个人都必须通过相同的项目和相同的公司,只有一条道路,所以我们可以保持一些创造力。
Paco Nathan: 我很好奇,你们公司会有首席数据科学家吗?你会走那条路吗?比如在管理层。这是我们已经问过很多公司的问题。或者你更愿意尝试让它在团队中多样化?那种领导能力。
Amy Heineike: 在 Primer,我们所有的产品都是数据驱动的,所以我认为大多数人,大多数工程团队都有某种计算算法的经验。这是一个非常成熟的(公司)问题。
皮特·沃顿:我不知道。我的第一直觉是,这听起来像有一个首席编程官,你知道吗?[笑声]就像这个技能应该有点像这个横向技能。你希望管理层的人能真正理解。我不能说他们是否知道。
**安·斯潘塞:**听起来我们正在慢慢进入这种未来状态,艾米正在讨论团队可能会是什么样子。对吗?包括 Paco 反复强调首席数据科学家角色的潜力。[笑声]基于这一点。我们去未来状态吧。艾米稍微提到了她想看到的东西。就潜在的未来状态而言,其他人呢?要么是你认为会发生的,要么是你想看到的。
帕科·内森:我喜欢好奇心这部分。你认为你要去法学院并成为一名执业律师,你的职业就是持怀疑态度。我们需要另一种被认为是好奇的职业。他们可以互相制衡。我喜欢调查,我们做了很多调查,我看到一些有趣的谈话,关于人们做关于雇佣数据科学家的故事,以及分析数据需要什么。TapRecruit 已经做了很多这样的工作。他们发现一件有趣的事情是,寻找“高级数据科学家”的角色实际上不如试图让某人担任“数据科学家”的角色。因此,你会看到那些出色的环境科学家、天体物理学家或诸如此类的人转而申请后者。然后,尝试看看对初级数据科学家的要求真的很有趣,因为它们切入了基本的特质,比如好奇心,比如愿意花 80%的时间清理数据。我想我会更少地关注更高的层面,而更多地关注未来的道路和那里的特征
皮特·沃顿:我也很喜欢好奇心这个想法。我在 Jetpac 花费大量时间试图寻找优秀的旅行照片,并试图浏览数十亿张 Instagram 照片、脸书照片和 Flickr 照片,以找到某个特定地方的完美照片的原因之一。我们做了一些事情,比如通过识别人们脸上的胡子来寻找潮人经常出没的地方,诸如此类。但是我意识到,我们团队中的一些人比程序员更善于找出指导应该是什么。但是他们必须通过我们给我们需求,让我们建立模型。我最自豪的事情之一…我能够建立一个系统,在一个预先训练好的图像分类器上进行转移学习,我们的营销人员可以给它 100 张照片,分为 10 个不同的类别,它实际上会学习识别,比如,“哦,你想在照片中识别狗吗?给它一堆有狗在的照片,一堆没有狗的照片就行了。”无需任何程序员的干预,他们就可以在应用程序中部署并创建自己的模型。我真正希望的是,我可以帮助自己摆脱程序员的工作。我们有这种非常奇怪的结构,我们有懂得如何用这种非常神秘的语言写规则的神职人员。我们必须尽量减少这些琐事,以便能够与计算机对话。如果我们能改变一些事情,这样任何能给出一堆例子的人都可以选择正确的模型,然后给它一堆例子,得到一些像样的东西,然后快速迭代,这就是我未来真正兴奋的事情。我也是这么想的。我希望它能在整个组织中扩散,而不是如此孤立和条块分割。我有点希望 web 服务像 21 世纪初一样在企业中兴起。人们只需启动一个 web 服务器,其他人将在内部网内访问它,it 部门根本不参与。他们(它)变得非常恼火,然后他们不得不最终放弃,让人们去做。我有点希望机器学习成为销售、营销、支持和其他人都能轻松掌握并解决问题的东西。
艾米·海涅克:还有一部分是关于收养的。与各种各样的客户一起工作很有趣的一个原因是,有时实际上意识到,对于一些人来说,看着机器学习算法的结果,理解如何思考它是多么困难。例如,如何理解精确回忆?事实证明,对于那些想要一个能为他们提供结果的系统的人来说,精确回忆并不是那么容易解释的。其实概念上挺难的。这将是有趣的,因为模型和系统是建立在人们在正常情况下使用的数据之上的…所以他们家里有谷歌助手,对吧。他们有 Siri,他们开始想我怎么理解这个?有许多逻辑问题我们必须解决。当算法出错时。虽然谷歌搜索没有马上找到你想要的东西没关系,但是有很多系统…包括银行合规…很多严肃的事情我们需要小心。我认为这其中有一部分是关于让更多的人参与进来,因为我们可以建设。可能还有另一个部分,就是让更多的人参与进来,这样他们可以带来他们的专业知识,帮助我们思考我们正在构建的东西的含义,以及这对我们算法的用户意味着什么。
安·斯潘塞:让我快速核对一下时间。我想我们可以开始提问了。但是在我开始之前,在我们开始提问之前,有没有人对模型开发和部署的合作有什么最终的想法?
Paco Nathan: 好的,最近在 O’Reilly 会议上有一个趋势:深度学习在这些会议上做得非常好,有太多关于模型和机器学习的内容,但现在我们开始看到它有更多的分支,不仅仅是关于学习的部分。我的意思是,智力和认知还有很多其他方面,比如理解环境,能够做像时间表这样的事情。还有很多其他领域可能真的很有趣,所以我真的希望我们会有很多人致力于学习部分。但是,同样,作为一门计算机科学学科,追求更困难的问题。就像我们在 80 年代早期的“人工智能研究”一样,人工智能是关于一个更广泛的背景的东西,而学习部分只是其中的一小部分。所以我希望我们能解决这个问题,然后转向更难的事情。
安·斯潘塞:我们开始提问吧。让我们看看他们是否能让麦克风的情况继续下去。既然你拿着它,你想问个问题吗?
索思哈德·琼斯:当然。我是索萨德。我在多米诺公司做营销。作为一名营销人员,我的问题是,我有很多关于数据工程、数据科学、部署模型的人和开发模型的人之间合作的谈话。像我这种什么都不懂的营销人员怎么办?我是说真的。业务线呢?在哪里…[麦克风熄灭]
安·斯潘塞:你如何看待他们的融入?你如何看待商业利益相关者融入整个事件?
Paco Nathan: 主要是我们可以开始定义什么是风险方面的指标,什么是绩效方面的指标。kri 和 KPI 可以通过这种方式修改业务规则?答案是,在很多方面是的,但可能不完全是。到底怎么贴合?你如何让机器学习产品做的事情更加透明?我认为我们必须努力解决这个问题。我认为这是目前高管层和董事会面临的一个真正的难题。做决策的人让机器参与他们的决策,我们该如何权衡呢?
Amy Heineike: 我认为作为构建算法的人,我们有一种责任,去找出如何解释它们,并讨论其中的一些核心问题。我认为标签是一个有趣的例子,模型从标签中的模式反射回新的信息。你知道,这是一种令人惊讶的思考方式,如果你进入它,这种数据是什么并不明显。但是,是的,我认为我们应该非常认真地考虑如何向订婚的人解释这件事。
Pete Warden: 我认为一个真正重要的角色是你,你知道,营销人员,还有电话支持人员,他们实际上比坐在他们办公桌前的任何人都更了解我们的客户需要什么,更不用说做模型创建、编码或类似的事情了。你得到的机会越多,你就有越多的机会坐下来和那些标注数据的人,那些建立模型的人,那些写度量标准来评估模型做得有多好的人,说,“我知道你没有想过这个,但是我们有这个巨大的问题。每个人都在抱怨,你知道,不管它是什么,你的模型没有帮助。”然后,很多时候,人们会说“哦,哦,好吧,”那是…如果你真的可以…这不应该是你的责任,但不幸的是,这经常发生。
Paco Nathan: 在 Velocity 有一个有趣的演讲,GitHub 的一位机器学习人员(Ojomu Miller)做了一个主题演讲[https://www . oreilly . com/ideas/a-new-vision-for-the-global-brain-deep-learning-with-person-inst-of-machines],她谈到了深度学习模型以及你在不同层次中看到的那种架构。然后她拿起组织结构图,把它旋转了 90 度,做了同样的事情,并说“我们习惯了拥有相似结构的人组成的组织。机器学习模型看起来像是单向流动的,但是对于人的组织,我们看起来像是反方向流动的。但应该差不多”。这说明有很多反馈循环。看看我们如何为客户将机器学习部署到组织中,我认为你必须考虑你的员工及其领域专业知识。你想想你的模型在做什么,你想想你的客户,这三者之间都有双向反馈。你的人在帮助训练模型,应该向他们学习。你应该像这样,在某种程度上聚合你的组织在模型中所知道的东西。来自模型的反馈应该反映出这一点,如果没有,那么就有问题了。同样,模型通过产品与客户互动,如果这不起作用,你会接到支持电话,对吗?希望你也有专业的服务,销售人员等等,和你的客户交流。每个接触点都有双向对话。我认为,如果你不把一件事看成线性系统——这是一些输入,这是一个黑盒,这是一些输出——但如果你把一件事看成一个有机体,有许多反馈循环和许多动态,那么你就有一个更好的方式,让知道如何经营企业的人真正以一种真正健康、动态的方式与它互动。
观众 B: 所以我想把这个问题反过来问一下,如果你坐在数据科学或工程的包厢里,你如何在你和…我是一名数据科学家…你和工程师之间,或者相反,或者你和产品之间,或者市场营销,或者类似的事情?甚至是我们今天一直在谈论的,比如成为一名全栈数据科学家,或者别的什么。
安·斯潘塞:谁愿意先回答这个问题?
Amy Heineike: 我们发现 Primer 的一个很好的做法是,在产品团队中,数据科学家、工程师和产品经理都在一个团队中。他们将每天相互交流,直接对话。我想可能会有一些组织方面的东西可以帮助你…
观众 B: 我们是一家初创公司,所以我们很小
艾米·海涅克: …所以你们坐在一起,这是件好事。实际上你只需要多说一点。您希望数据科学家不要害怕去阅读应用程序的代码,然后开始询问关于它的问题,并开始解释他们遇到的问题。然后,工程师将询问有关数据科学部分的问题,以及它们所依赖的是什么。然后开始对话。
Paco Nathan: 在一家规模较大的公司,比如 170 人,我们会做的是将不同的数据科学家分配到不同的产品团队。但是我们想从那些不经常互相交谈或者看不到他们的项目的人们那里得到更多的反馈。所以我们做了每周一次的研讨会,我们会邀请利益相关者。我们会邀请财务负责人来听听。我们会要求人们不要在许多试探性的问题上过于咄咄逼人,但有点像,你可以参与,但不要试图让他们为难,因为我们真的想在这里分享。他们让我们开的更像是研究生研讨会。总体来说效果不错。通过这种方式,团队之间有很多很好的反馈。
Amy Heineike :我们在 Primer 内部进行技术对话,我们这样做…每隔一周,我们会举行机器学习团队展示的会议,然后是全公司范围的会议。每个人都非常兴奋,特别是技术讲座,销售人员会出现,每个人都会出现,因为很多人都在公司,因为他们很兴奋我们可以真正追求最先进的模型并解决这些超级有趣的问题。我认为有时这种论坛是一件好事。来展示,或者谈谈我们遇到的有趣的挑战,诸如此类的事情。
Pete Warden: 这有点不同,但是我最喜欢的方法之一,特别是当我们是一个小团队时,实际上产品原型是一种叫做 Ozzing 向导的东西,在那里你实际上有一个人在窗帘后面而不是一个瓶子。另一端的东西,比如,聊天,或者你知道,谁得到了像一个屏幕截图,但实际上并没有进入。所以人们…根据他们在屏幕上看到的实际情况,基本上必须假装是模特。这两种都像是一个非常有趣的派对游戏。但它真的,就像你在实际产品上得到的迭代。因为通常情况下,产品团队或产品人员(如果是一家初创公司)不会真正理解他们必须考虑的所有问题,也不会像机器学习解决方案那样在头脑中建模。如果你能向他们展示,即使是一个在这个世界上活了 25 年的人,也不能用他们得到的信息来解决这个问题,那么我们可能无法训练一个模型来做到这一点。让他们思考“好吧,我们到底需要生产什么?”。是的,这是我最喜欢的破冰方式之一,如果你想的话。
Southard: 我们现在让它(麦克风)工作了。
安·斯潘塞:哦,真可爱。这边有个问题,我不知道具体在哪里。
约翰:嗨,我叫约翰。关于这个问题,生产后的调试周期。对这种情况会持续多久有什么指导吗?它收敛吗?生产目标之间有任何差异吗?你知道,像 API,web 应用程序,或者某种嵌入式目标呢?然后,当您进行更新时,it 部门的预期行为是什么?
帕科·内森:我们的很多东西真的很重要。第一部分很简单。正在进行中。我的意思是,如果你的业务中有可操作的东西,它应该是持续的。你应该监视它。这是问题的第二部分。一旦你将这些类型的产品部署到自动化的东西中,或者与你的客户一起自动化的东西中,他们将改变与你的客户的交互。我们正在寻找改变输入数据的方法。你会期望它必须被调整和校准。但我不认为它会停止。我认为这应该是对运营的观点,就像 C-Level 式的业务运营,这是你所给予的一部分。
我愿意考虑我们现在正在处理的任何问题。我想我可以笼统地说,因为现在几乎所有公司都在研究技术,所有公司都必须处理数据。我认为我们应该着眼于这些问题,我们将通过一个团队和自动化来解决它们。对于任何给定的问题,这将是一个权衡。有些问题一开始会少人。有些在开始时自动化程度较低。但我认为,以此为基准和期望,我们部署的模型将会不断调整和校准。我们现在只是勉强能够理解我们称之为公平的数学。这将是一个非常长的对话,围绕着它有许多合规性。这是另一个正在进行的领域。那是不是-
约翰:是的。
Amy Heineike: 我认为数据也总是在变化,因为世界总是在变化。即使模型在某一点得到了重建,它也不一定会继续成为一个好模型。
皮特·沃顿:是的,至少当我在一家初创公司的时候,我们曾经开玩笑说,我们在模型中真正关心的最终指标是应用商店的评级。因此…
约翰:那目标呢,对吗?我的意思是,部署在汽车视觉系统中的东西和全球应用程序是有区别的,对吗?有什么智慧或经验吗?
帕科·内森:嗯,请讲…我的一些背景是在广告技术领域,所以在一个大型广告网络中,主管们总是问有什么好处。你必须证明这一点,他们很友好地在每个团队的区域顶部放置了显示器,大液晶显示器,这样你就可以报告你每小时的指标,他们可以在大楼里走动,只是看着并指出当时表现不太好的人。没有压力…但是,是的,我认为最终你必须通过某种初始部署阶段,到你展示这对于降低风险有什么样的提升或什么样的暴露,或者不管你的意图是什么,你的目标是什么。希望你能从某个角度看到积极的一面。你得到一些周转投资。如果你达不到这一点,那么可能会有更大的问题。或者至少我是这么看的。这回答了吗?
约翰:嗯。
安·斯潘塞:我想我们已经超时了,但是有没有人有最后一个想挤进来的问题?哦,等等,有吗…你需要近一点吗,还是你很好?好吧。让我们看看麦克风是否工作。
观众 C: 是的,当你想到即将到来的全球关注的自动化用户友好的媒体助理的最新情况,如谷歌云、AutoML,你认为它们不会在几年内成熟,或者你认为你会说这些数据科学家的工作遇到了麻烦?
帕科·纳森:好吧,我就说一个数据点。我们刚刚在奥赖利做了一个大调查。我们进行了调查,我们在全球范围内获得了超过 11,000 名关于采用机器学习的受访者,大多数是在企业中。我们希望看到,这是问题之一,我认为 AutoML 的采用率为 2%。离完全过时还有很长的路要走。
Amy Heineike: 我确实认为你试图解决的问题的框架,并确保你实际上是在定义一个值得解决的问题,并且输入的数据和输出的标签实际上反映了你想要解决的问题。这并不是微不足道的,所以如果我们能达到模型部分微不足道的程度,仍然有所有这些工作在进行,而且是巨大的…因为卡格尔一直在附近。如果你想走出去,让成千上万聪明的博士生用一个惊人的模型解决你的问题,只要把它贴在 Kaggle 上就行了。问题是 Kaggle 竞赛的准备工作非常困难,所以这就是为什么我们没有通过 Kaggle 来解决数据科学的问题。
艾米·海尼克:你喜欢 AutoML 吗?****
皮特·沃顿:你说的。
安·斯潘塞:好的,非常感谢你今晚抽出时间。我们实际上在接下来的 15 分钟左右都不会关闭。当我参加这些活动时,我实际上不是那个在所有人面前提问的人。我通常是在这部分关闭后问问题的人。所以放心吃吧。我想有一些糖果和甜食之类的东西。我们要到 8:30 以后才会关门。
帕科·内森:还有披萨吗?
安·斯潘塞:我想还有披萨。我从这里看到了披萨,所以请随意上来问问题。非常感谢你。
为便于阅读,本文经过编辑。
数据科学家访谈:来自 Wix.com 的 Robert Woolfson
原文:https://www.dominodatalab.com/blog/data-scientist-interview-robert-woolfson-from-wix-com
我们最近采访了 Robert Woolfson,他是曼彻斯特大学的计算机科学博士,现在领导着 Wix.com 大学的数据科学团队。
罗伯特,首先感谢你接受采访。先说你的背景。
到目前为止,数据科学只是我生活中很小的一部分。数据没有。在我的职业生涯中,我们使用人工智能(主要是神经网络和遗传算法)来创建自动化交易系统,首先根据历史数据进行训练、优化和测试,然后再投入实际交易。我的博士学位致力于建立一个优化、测试和证明交易系统可靠性的框架。在我之前的工作中,我也开始学习大数据和 Hadoop,但无法真正找到一种方法将它实际用于我正在做的事情,但我抓住了并行、分布式系统的想法,并行处理是我开始考虑的事情。
金融数据一直是我的专长,但我确实厌倦了它,几年来我一直在攻读博士学位,几年来我一直在研究数据。我很沮丧总是处理同样的问题,我觉得我需要一个新的挑战。从那时起,我开始更积极地关注数据科学领域,最后我参加了 Wix 的面试,当时我不知道他们在处理大数据。面试真正让我兴奋的是,我们做了一个案例研究,这是一个分析性的例子,不是专门使用大数据,而是更理论化,对我来说非常有趣,我做得足够好,通过了面试,现在我在这里。
提前思考是做好研究的关键。
您记得使用的第一个数据集是什么?你用它做了什么?
我记得我工作的第一个数据集是在大学期间,我在处理历史金融数据。道琼斯的历史价格和过去 100 年的历史平均价格。这是我用来运行神经网络的数据,以寻找日常变化运动中的不同模式。这是一个本科生项目,它更侧重于创建神经网络的工作,而不是准确预测股票市场的运动。当时我对交易和股票市场非常感兴趣,它们都是关于数字和数据的。但这是一个本科项目,从那以后我已经走了很长一段路。技术发生了变化,数据变得更大了。
如何看待数据科学家这个头衔?
有些人真的很喜欢*“数据科学家”*因为听起来比分析师好听。就像任何事情一样,你可以称自己为工程师、程序员或开发人员,这取决于你在和谁说话。我真的不在乎。有时当人们不知道什么是数据科学家时,我会告诉他们我是一名分析师,有时我会告诉他们我是一名程序员。
现在,我们来谈谈 Wix。
Wix 有一系列不同类型的分析师。我们试着不要把头衔看得太重,我们可以有任何我们想要的头衔,只要不是首席头衔。我的内部头衔是“数据魔术师”,我的一个同事是“数据科学教授”。我们只是乱搞头衔,因为我从来不想把自己从团队中分离出来,我们都一起工作,每个人都做一份部分分析、部分统计、部分数据科学的工作。
简单介绍一下 Wix。你会如何向不熟悉它的人描述它?
Wix 是一个自己做网站的平台。如果你不知道如何编码,如果你不知道 Javascript 和 HTML,你可以来 Wix,你可以使用我们的平台来建立一个专业的网站。它非常简单,只需拖放,Wix 和第三方应用程序中有许多功能,您可以添加这些功能,使您的网站不仅看起来漂亮,而且具有大量功能,如商店或博客。创建一个好看的网站真的很容易,而且你可以免费完成。
您如何在 Wix 使用数据科学?
我和我在 Wix 的团队正在推动一个分析过程。作为一名博士,我从一个假设开始,提出一个假设,检验我的假设,我不是在专门讨论 P 值检验。我试图实现的是一个思维过程。我们已经开始完成一项研究,我想看看数据和如何提出正确的问题。这不是说*“我们可以看看这些数据吗,因为它可能很有趣”*,而是看一看我们可以从中提出正确问题的数据。在我看数据之前,我试着问这些问题,它们的答案不是 A 就是 b,这是我的两个选择,然后我可以更进一步。在开始我的分析之前,我大概知道我会期待什么,因此我知道如果我得到答案 A 或答案 b,我会做什么。我的路在我面前,很清楚。我只需要做一些技术性的工作来找出下一步该怎么走。
我们方法中的最后一步是,如果您对需要做出的更改有所了解,那么数据科学家的工作就是成为该更改的产品经理。因此,我们将问题概念化,这将由遇到问题的产品经理或高级员工来处理,然后我们提出正确的问题并创建一个假设,这将导致可操作的洞察力,并在我们得到答案后管理这一变化。这是我们试图在 Wix 的所有分析任务中实施的数据科学流程。
今年你一直在做什么,为什么/如何让你感兴趣?
在 Wix,我们知道提供更好的产品意味着更多的用户会转向 premium。我们使用数据提供持续的产品反馈。我们有产品本身,开发者正在构建。产品中的功能将数据作为事件发送,由于 BI 团队是数据架构师和工程师,这些数据存储在 Hadoop 文件系统中。这些数据被聚合并存储到 SQL 数据库中。整个分析团队可以访问 Hadoop 和数据库来研究数据并给出反馈。创建一个持续的反馈回路,向管理层反馈我们的工作情况,同时也向产品本身反馈他们的表现如何,是否存在任何问题。因此,我们可以不断创造出优秀的产品。很多都涉及到 A/B 测试,与产品团队坐在一起的分析师管理 A/B 测试,所以任何时候我们想要做出改变,我们都可以看到它是在伤害我们还是帮助我们。
如果我们发现性能方面的问题,我们会专注于减少滞后时间等。来自数据的知识是我们的专长,我们目前是整个组织中每个人的知识和数据之间的纽带。目前,分析师是数据、开发人员和产品经理之间的桥梁。但随着时间的推移,我们正在寻找有助于此的工具,这样产品经理自己就可以访问数据集,这将从本质上解放分析师,使他们可以专注于更深入的研究。
来自数据的知识是我们的专长,我们目前是整个组织中每个人的知识和数据之间的纽带。
我们经历了某种转变。Wix 做了一个超级碗广告,全是关于“开公司,建网站”的概念。我们不仅仅是建立一个网站,还有商业元素。我们去年发布了酒店,允许人们管理一个小酒店,你可以在前端为你的酒店增加房间,也可以在后端管理预订,包括支付和所有的功能。就数据而言,我们接下来要考虑的是,我们如何继续利用这些数据来帮助我们的用户在业务上取得更大成功。整个公司都参与帮助人们建立他们的企业。
我们也从 OKCupid 和 Pinterest 数据博客中受到很大启发,我们正在考虑在 Wix 实施类似的东西。这一举措的唯一问题是许多数据是专有的。因此,我们正在考虑创造性的方法来发布数据见解并进行讨论。
您发现哪些数据科学方法最有帮助?
我们在 Wix 实施的流程是一种工具。方法论的一部分是能够在任何时候呈现。我希望人们从空白的 PowerPoint 演示文稿开始他们的研究,并在进行过程中开始构建。最棒的是,你可以从你的团队得到持续的反馈,这样你可以节省很多时间。我一直在思考的是,如何更好地管理这些流程,如何让我的数据科学家更高效。
对刚开始学习数据科学的学生或从业者有什么忠告吗?
关键是要学会如何提出正确的问题。问正确的问题,但也要考虑可能的结果。我在高中时从一位物理老师那里学到了一些东西,他说,“在你接触计算器或电脑之前,估计一下正确答案是什么。”你大概可以估计得足够接近,考虑一下,至少当你从你的计算机得到一个答案时你会知道,如果它不是正确的数量级,那么你在某个地方犯了一个错误,它需要第二次检查。提前思考是做好研究的关键。
非常感谢您的宝贵时间!真的很高兴在 Wix 了解更多关于你的研究和你正在做的事情。
参观Wix.com跟随罗伯特@ type 1 cycling
数据科学家?程序员?它们是互斥的吗?
原文:https://www.dominodatalab.com/blog/data-scientist-programmer-mutually-exclusive
这篇 Domino Data Science Field Note 的博文提供了 Hadley Wickham 的 ACM Chicago 的演讲中的亮点,“你不能在 GUI 中做数据科学”。在他的演讲中,Wickham 主张,与 GUI 不同,使用代码提供了可再现性、数据来源和跟踪变化的能力,以便数据科学家能够看到数据分析是如何发展的。作为 ggplot2 的创造者,Wickham 也提倡将可视化和模型结合起来使用,以帮助数据科学家找到他们数据中的真实信号,这并不奇怪。这篇博文还提供了来自原始视频的剪辑,并遵循了附属于原始视频记录的知识共享许可。
数据科学:迭代过程中的价值
RStudio 的首席科学家 Hadley Wickham 在 ACM 芝加哥会议上发表了题为“你不能在 GUI 中进行数据科学”的演讲,该演讲涵盖了数据科学的工作流程和工具。例如,Wickham 提倡使用可视化和模型来支持数据科学家在他们的数据中找到真正的信号。他还建议利用编程语言的优势,包括可再现性、数据来源和查看数据分析如何随时间演变的能力。他还谈到了他喜欢 R 编程语言的什么。从他的角度来看,使用 GUI 没有考虑到这些好处。根据本次演讲的幻灯片,他将数据科学定义为“数据成为理解、知识和洞察力的过程”,这一点尤为重要。GUI 故意混淆这个过程,因为你只能做 GUI 发明者希望你做的事情。
可视化和模型
在回答“为什么编程?”这个问题之前在他的演讲中,Wickham 讨论了两个“主要引擎”,这两个引擎有助于数据科学家理解数据集内正在发生的事情:可视化和模型。可视化是一种工具,使数据科学家能够迭代“模糊的问题”,并帮助他们完善它。或者提出问题并“试图让它足够精确,这样你就可以定量地回答它。”Wickham 还提倡使用可视化,因为它可能会让数据科学家感到惊讶,或者让他们看到他们没有想到会看到的东西。在演讲中,Wickham 指出“你看到的第一个可视化总是会揭示数据质量错误,如果它没有揭示数据质量错误,那就意味着你还没有发现错误。”然而,他也指出可视化并不能很好地扩展,并建议使用模型来补充可视化。当数据科学家能够使他们的问题足够精确以使用算法或汇总统计时,就使用模型。模型比可视化更具可扩展性,因为“在问题上投入更多的计算机比投入更多的大脑要容易得多。”
为什么编程?再现性、出处和跟踪变化
Wickham 提倡使用编程语言而不是 GUI 来进行数据科学,因为它提供了再现工作、理解数据来源(这也与再现性相关)的机会,以及查看数据分析如何随着时间的推移而发展的能力。Wickham 特别指出的两个有用的工作流程包括剪切粘贴和使用堆栈溢出。虽然在《幽默》中提到了这些工具,但代码是文本,很容易剪切和粘贴文本,包括错误消息到堆栈溢出中以找到解决方案。此外,理解数据来源能够实现可再现性,因为它使数据科学家能够“稍后用新数据重新运行代码,并获得您可以使用的更新结果”。使用代码还可以让数据科学家通过 GitHub 等开放方式分享他们的工作。在他演讲的这一部分,Wickham 提到了 GitHub 上的一个项目,在这个项目中,人们可以看到一系列提交,深入到提交,并看到“数据分析现在的情况,但你可以看到它是如何随着时间的推移而发展的。”他将此与 Excel 进行了对比,后者为人们提供了在不知道出处或没有回滚选项的情况下意外随机化数据的机会。
为什么用 R 编程?尽管有怪癖?包裹。
由于 Wickham 是 RStudio 的首席科学家,他表示,虽然他认为“Python 也很棒”,但他“特别喜欢”。吸引韦翰的几个 R 特征包括
- 它是一种函数式编程语言,允许你“通过用各种方式组合函数来解决问题”
- R 如何提供查看代码结构的能力
- R 如何“赋予我们这种不可思议的能力,来创建适合数据科学过程某些部分的小领域特定语言”。
这也导致了构建 R 包的可能性。Wickham 指出,软件包允许人们通过将复杂的问题分解成更小的部分来解决它们,这些更小的部分可以从一个项目中取出,然后“以不同的方式重新组合”(可再现性),来解决一个新的问题。
结论
正如 Wickham 将数据科学定义为“数据成为理解、知识和洞察力的过程”,他提倡使用数据科学工具,从迭代、惊喜、可再现性和可扩展性中获得价值。特别是,他认为成为数据科学家和程序员并不相互排斥,使用编程语言有助于数据科学家理解他们数据中的真实信号。虽然这篇博客文章只涵盖了 Wickham 的 ACM 芝加哥演讲的一些关键亮点,但完整的视频可以观看。
^(Domino 数据科学领域笔记提供数据科学研究、趋势、技术等亮点,支持数据科学家和数据科学领导者加快工作或职业发展。如果您对本博客系列中涉及的数据科学工作感兴趣,请发送电子邮件至 writeforus(at)dominodatalab(dot)com。)
数据科学家访谈:埃森哲 EBay 的 Skylar Lyon
原文:https://www.dominodatalab.com/blog/data-scientist-series-skylar-lyon-from-ebay-for-accenture
最近,我们采访了代表埃森哲在 EBay 工作的高级数据科学家 Skylar Lyon。
你的 30 秒简历是什么?
我在密苏里州的堪萨斯城出生并长大,去了东部的学校获得了本科学位,在那里我对数据工程和科学产生了兴趣。我在国防行业工作了大约七年,开发和部署预测分析,主要是时空类型的分析,然后决定尝试咨询生活,看看硅谷发生了什么。到目前为止,它很短,但非常令人兴奋,我真的很乐观,充满希望,只是这里的能量,它真的很有感染力,很有趣。当我不玩数据或坐在电脑前时,我通常会参加耐力运动,或者尝试爬山或在山里跑很长的距离。山脉和海洋是真正让我扎根的地方,我认为花时间审视自己很重要——这是我做得最好的方式。
数据在你的个人生活中有多重要?
不久前,在我的生活中有很长一段时间,我完全被自己的个人健康和表现的数据所驱动。我每天早上起床,在起床前检查我的静息心率和心率变异性分数,然后立即检查水合程度,然后称体重。很多天,我会整天戴着心率监测器,并且总是在锻炼期间,只是为了收集所有这些统计数据。每个星期天,我都会坐下来,计划下一周每天的锻炼计划,并坚持下去。如果我骑自行车,我会使用功率表通过功率数据进行训练,停留在非常具体的功率/目标区域,我会每周进行调整。我接受了季度血液测试,以确保所有这些水平都在我希望的水平。即使是现在,如果有人给我一个植入芯片的机会,可以记录很多生物特征,我也绝对会接受。
是什么让你不再关注数据驱动?
I wanted to return to “truer” just racing for the fun of it and not worrying about my results and performance quite as much and just enjoy the moment
你不能改进你没有测量的东西。在我生命的那个时期,我测量一切,寻求运动的进步。我参加了更激烈的比赛,我被激烈的比赛搞得精疲力尽,我想回到*【更真实】*的状态,只是为了乐趣而比赛,而不是太担心我的成绩和表现,只是享受这一刻。所以这是一个组合,我的佳明手表也坏了。我发现如果不记录和分析数据,我就无法健身。我不得不立即买一块新手表。我已经变得依赖数据,如果不能实时看到我的数据,我就无法进行锻炼。它变得有点痴迷,现在我什么都不看了。但是我确信在我们知道之前,我会回到那列火车上;很难远离苹果手表。
你是如何对数据工作感兴趣的?
我加入了弗吉尼亚大学的系统工程项目,事实上,我选择这个项目只是因为它关闭的门最少,它没有给我任何职业道路上的束缚。当时我不确定自己想要什么。我记得在我的第三年,我们真的一头扎进了系统工程,这实际上是应用数学和统计学——大量的商业应用——一般问题的解决。在我们的数据建模课上,我们研究了挑战者号的灾难,并对导致爆炸的 o 形圈运行了回归模型。就在那时,我意识到数据是多么强大和有洞察力。通过更好地理解数据和提出更好的问题来获得这些见解,您可以节省数千小时的劳动、人类生命和资本,这些都在事故中化为乌有。那是我的*“啊哈时刻”*,也是我真正对数据的力量感兴趣的时候。
您记得使用的第一个数据集是什么?你用它做了什么?
第一组固定数据[挑战者数据]让我兴奋不已。在现实世界中,我在联邦计算机研究公司工作,负责我们为军队开发的预测分析平台。这个想法是帮助预测路边炸弹,IED(简易爆炸装置),这非常令人兴奋和有趣,因为我真的觉得我在帮助部队保护和拯救生命,并为此使用数据。我们开发的这些模型被部署到伊拉克和阿富汗,我实际上两次去伊拉克部署这些模型,和士兵们坐在一起,和他们一起工作,这是一次改变生活的经历。
你能分享一些你在战壕里的有趣经历吗?
The idea there was to help predict roadside bombs, IEDs … It rose out of need for IED prediction but we generalized the model for all sorts of event prediction.
在更冒险的层面上,我乘坐黑鹰直升机在巴格达上空飞行,飞到伊拉克东部各省,并驾驶车队在城市中穿行。当我们经过这个国家时,透过 MRAPs 非常小非常厚的窗户向外看去,真是太迷人了。除此之外,另一件令人难以置信的事情是我们在那里行动的规模和范围,因为你并不真正了解(VBC)胜利大本营是什么;在真正到达那里之前,很难真正理解它是什么样子的。它确实是一个独立的城市,有自己的基础设施、电网、洗衣设施和餐饮设施。它是巨大的!我永远不会从美国的新闻报道中知道。这确实改变了我对现代行动的范围和规模的看法。
关于我们的预测建模,另一件很酷的事情是,它源于对 IED 预测的需要,但我们将该模型推广到所有类型的事件预测。只是展示了如何用一个非常具体的用例开发一个模型,然后将其一般化以捕获一个更广泛的问题集。太令人兴奋了。
今年你一直在做什么,为什么/如何让你感兴趣?
The amount of data EBay has captured over the years is absolutely enormous! They have one of the largest data warehouses in the world. So the data is all there, now it’s a matter of figuring out what we do with it.
不到一年前,我改变了想法,决定看看除了国防之外,世界上还有哪些其他的数据应用。因此,我开始与易趣和营销界合作,试图更好地了解客户及其意图和行为。尤其是在硅谷,在这个最近的项目中,我最感兴趣的是与外部供应商合作,将其他工具集整合到现有环境中,并研究我们如何真正理解这一切。EBay 这些年捕获的数据量绝对是巨大的!他们拥有世界上最大的数据仓库之一。所以数据都在那里,现在的问题是弄清楚我们用它做什么。过去使用的许多传统工具无法处理这种规模的真正大数据。
说到工具,你有没有发现你喜欢的很棒的工具或应用?
我认为我最初的研究有两个主要焦点,那就是数据库中的内存处理,我认为两者都为不同的问题提供了实用的解决方案。内存中对于交互式数据操作和洞察建模是非常好的,对于数据-即然而,事实证明,对于 EBay 来说,内置数据库在一个完全不同的规模上非常有效;横向扩展到 Pb 大小的数据,这种数据目前很难在内存中捕获,但对于夜间批处理作业等同样重要。这两种技术很好地互补了。
从建模的角度来看,看到神经网络和深度学习模型的复兴很有趣。最近,随着许多令人兴奋的最新发展,它们被证明是特别强大的。像大多数事物一样,模型时有时无,目前神经网络非常热门,它被证明可以将回归和随机森林类型模型推进一步。然后就变成了可用的计算量,你能训练这些模型并足够快地运行它们以证明它们的复杂性,越来越多的答案是肯定的——这是非常强大和有趣的。
你认为机器学习和深度学习的未来在哪里?我们要去哪里?
这个领域是半新的,又是新的。我认为这是因为现在我们有了早期没有的计算能力和能力来真正利用深度学习,所以正如我前面提到的,现在它正在复苏,每个人都在投入金钱、时间和精力,这是一个热门话题。我看到了趋势的形成和整个景观——创新的速度只会加快,我认为这将让许多人措手不及,他们周围的世界将会变化得多快。当我到了我母亲的年龄时,世界将会完全不同,我的父母已经看到了世界的许多变化,但他们现在看到的世界,大部分在 30 年前对他们来说是可识别的,我不确定再过 30 年这个世界会有多可识别。我认为,这很大一部分将由机器学习模型和运行这些模型的难以置信的计算量来驱动。自动驾驶汽车和无人机,那只是冰山一角。一旦每个人都在一个他们都连接在一起的容器中移动,当效率真的达到我们难以理解和认识的水平时。
机器学习领域有哪些创新者和思想领袖?谁是在早期做正确事情的创新者?
老实说,这个社区。我认为它的大部分是由社区驱动的,我认为研究机构下到孩子们只是在一台旧电脑上黑客,他们都在驱动它。我认为这是因为它的前景和潜力。谷歌在提供这方面的思想领导力方面取得了巨大进步,并为这些举措投入了大量资金和人力资源。忽视它们和它们的影响是愚蠢的。 H2O 是我合作过的另一家供应商,他们在推进这些数学模型方面做了很多工作。他们刚刚举行了他们的第一次会议——H2O 世界——今年有一群非常聪明的人,他们不仅展示和证明了你提到的思想领导力,而且还参加了会议,进行了学习。与会者将带着自己的想法运行,找出利用这些工具的方法,并提出新的应用程序。我最近看到的一个巧妙的应用是帮助预测一个生长年份是否会生产出顶级葡萄酒。那很有趣。
对刚开始学习数据科学的学生或从业者有什么忠告吗?
I think the most important part is to keep an open mind and also not discount assumptions in the data because it’s very easy to do and to gloss over that.
数据科学现在是一个非常热门的领域,它令人兴奋,而且变化很快。我认为最重要的部分是保持开放的心态,也不要低估数据中的假设,因为这很容易做到,也很容易掩盖。很多时候,你只是想获得数据,然后在数据上加上一个模型,然后说这是结果,这是结果,但实际情况要比这微妙得多。实际上,它的大部分涉及准备阶段,回到旧的 80/20,它的大部分涉及清理数据,搜索异常值,拟合正确的分布,并真正了解数据的形状。我认为数据的形状是最重要的部分。我认为,一旦你理解了这一点,并且能够对数据、假设、可用的工具、要使用的模型保持一种非常开放的思维和观点,那么你就不仅仅是随大流,而是发现原创的见解——这是令人兴奋的部分。而这一切都源于对数据形态的理解和保持开放的心态。
我们非常感谢 Skylar 抽出时间。可以关注他@ skyyhigh
数据科学家:仍然是“21 世纪最性感的工作”?
原文:https://www.dominodatalab.com/blog/data-scientist-still-the-sexiest-job-of-the-21st-century
早在 2012 年,《哈佛商业评论》宣称:“数据科学家:21 世纪最性感的工作。”作者 Thomas Davenport 和 D.J. Patil(现任美国白宫首席数据科学家)在他们的文章中花了很多篇幅来定义数据科学家的工作。当时,大型企业刚刚意识到数据科学在释放数据力量方面的重要性。作为一个相对较新的学科,他们指出,对数据科学家的需求远远超过了供应,“数据科学家的短缺正在成为一些行业的严重制约因素。”
结合起来,它日益增长的影响力和达文波特和帕蒂尔预测的人才短缺让数据科学有了更多的能见度,特别是在 Glassdoor 随后进行的劳动力市场调查之后。该组织广受期待的年度报告通过三个因素分析工作:1)基本工资中位数,2)美国公司的职位空缺数量,3)担任该职位的员工的总体工作满意度。不出意外,Glassdoor 在 2016 、 2017 、 2018 以及 2019 再次将“数据科学家”列为“全美最佳工作”。虽然在 2020 年已经滑落到第三位,但很明显,现在仍然是成为数据科学家的大好时机。
对于数据科学家来说,看到薪水、工作机会和工作满意度的上升令人兴奋。他们当然赢得了这一荣誉,因为数据科学已经成为许多财富 500 强公司的关键竞争优势,并在制定关键业务决策时为数据科学家赢得了董事会席位。但是…达文波特和帕蒂尔八年前预测的供应短缺仍然成立吗?或者,技术进步和商业环境的变化是否给了公司更多机会来大规模建立数据科学团队?
根据定义,数据科学家是独角兽
在我们深入探讨这些问题之前,让我们先来看看导致合格数据科学家短缺的主要因素之一。数据科学和数据科学家的定义有很多,但无论来源如何,数据科学家都需要三种非常重要的技能:
- **数学和统计学。**数据科学的端到端流程深深植根于数学和统计学。例如,从通常杂乱和不同的数据中创建理解需要统计分析。数据科学家应用的技术,包括所有的机器学习,在很大程度上是基于数学公式的。
- **领域专长。**关于特定行业或部门的知识,包括其业务挑战和各自的术语,极大地增加了数据科学家找到(然后解决)正确的业务问题的可能性。
- **DevOps。**数据科学家在其工作的研发阶段对数据、存储、计算等有高度专业化的需求。之后,他们需要应用重要的 DevOps 步骤来将他们的模型投入生产。
考虑到数据科学家必须掌握的各种技能,难怪公司很难找到他们!
更少的 DevOps =更多的合格候选人
在这个博客网站上,我们谈论了很多关于数据科学平台可以给想要扩展数据科学和机器学习的组织带来的好处。例如,我的同事大卫·布洛赫在 6 月份写了一篇很棒的博客,其中有一些关于公司如何增加其机器学习实践成功机会的指导原则。他提到了给予数据科学家实验自由的重要性,并以验证和复制新建模方法的强大流程作为支持。但是,像 Domino 这样的数据科学平台的出现真的能帮助公司改善他们招聘和聘用合格数据科学家的方式吗?
在数据科学平台的众多优势中,它们为数据科学家提供了对可扩展计算的自助式访问,以进行强大的实验。强大的资源,包括多核 CPU、GPU 和最新的分布式计算框架,如 Spark 和 Ray,只需点击几下,就可以轻松启动,而无需非常了解 DevOps。Domino 将自动分发所有必需的包和依赖项,这样就不会再有开发人员头疼的问题和浪费 IT 时间。
在过去的几年中,我们看到人们越来越担心数据科学模型能否将其应用到生产中,从而增加商业价值。事实上,一些估计已经将永远达不到生产的模型的数量置于高达 80-90%的位置!作为回应,任何普遍接受的安全性、可伸缩性、集成等 DevOps 实践都被应用到模型世界中。由此产生的系统和流程通常被称为 ModelOps 或 MLOps,旨在更快地将模型投入生产,并克服传统上阻止模型部署的障碍。
一些公司已经建立了单独的团队来处理机器学习模型的部署,但我们也看到许多公司正在转向一个框架,让数据科学家负责端到端的过程。在这些情况下,数据科学家必须从熟悉的数据科学世界中转移出来,开始使用新型工具(例如 Kubernetes、Docker 和 EC2)、约束和技能。
数据科学平台简化了部署流程,只需点击几下鼠标即可将模型投入生产。例如,您可以使用一种简单的自助式 API 端点部署方法在 Domino 中部署和托管模型。在 Domino 中部署模型可以深入了解完整的模型谱系,以及用于创建调用模型的函数的所有软件的确切版本。它还提供了所有生产资产(API、应用程序等)的概述。)并将这些资产链接到个人、团队和项目,以便可以跟踪使用情况,并且可以在其他项目中轻松重用这些资产。
数据科学平台为扩展数据科学创造了一个理想的环境,包括面向数据科学家的各种研发选项和 MLOps,以及改进的 IT 治理。它们消除了数据科学家成为 DevOps 大师的需要,并允许他们将更多时间放在数据科学上,而不是花在克服 DevOps 麻烦和与之斗争上。数据科学家的好处显而易见,但对于人力资源招聘团队来说,使用数据科学平台消除了寻找独角兽的需求。这使得他们可以将搜索重点放在更深层次的潜在合格候选人上。
大规模招聘数据科学团队时的其他因素
传统上,大学在培养具有很强的数学和统计技能的人才方面做得很好。现在,随着对数据科学家的大量需求,有超过 500 所大学提供专门的数据科学学位课程。这些项目的毕业生进入职场时都有使用 Python 和 R 等语言的经验,并且通常非常熟悉许多最新的开源软件包和数据科学工具。在某些情况下,他们甚至有使用 MATLAB 或 SAS 等流行商业软件的经验。
随着时间的推移,这些毕业生在特定领域或部门与数据分析师、商业领袖和其他同事密切合作,积累了他们的专业知识。他们对数据中的细微差别有着敏锐的理解,并本能地知道该问什么问题,这样他们就能更快地开发出更好的模型。
地理位置曾经是公司招聘数据科学家能力的重要因素。总部位于旧金山或纽约等数据科学家高度集中的地区的公司拥有丰富的人才库,如果他们愿意,可以建立拥有数百名数据科学家的数据科学团队。但是,对于美国其他地区的公司来说,这根本不是一个可行的选择。随着公司适应新的工作环境和运营模式以应对新冠肺炎,他们对远程员工变得更加开放。我们看到农村地区的公司正在与大都市地区的跨国公司有效竞争数据科学人才。而且,生活在农村地区的数据科学家有更多的就业机会。
我们还看到数据分析师、软件开发人员和其他非传统数据科学家使用自动化机器学习和其他工具来扩展他们的技能。随着公司寻求将数据科学应用于其运营的更多方面,这些“公民数据科学家”正在尝试基本的数据科学任务。这是一个供给和需求同时增加的情况。在实践中,传统的、代码优先的数据科学家仍在从事他们一直关注的相同战略项目,但现在承担了指导公民数据科学家和刚刚进入劳动力市场的初级数据科学家的额外责任。
那么…供给赶上需求了吗?
自从达文波特和帕蒂尔写了关于数据科学家的开创性文章以来的八年里,我们已经看到美国数据科学工作的数量以及在 LinkedIn 上自称数据科学家的人数都有了显著增长。Job site Indeed 报道称,自 2013 年以来,数据科学职位发布量增加了两倍多,在许多其他网站上也可以找到类似的统计数据。数据技能平台 QuantHub 在 2020 年 4 月做了一项深度分析,得出的结论是职位发布仍然比职位搜索快 3 倍。
当然,新冠肺炎的出现改变了几乎所有行业的就业增长预测。数据科学和其他技术工作受到了沉重打击,需求和供给之间的差距已经缩小。也就是说,我们看到许多客户在 COVID 期间增加了对数据科学的投资。一些人将数据科学视为进一步区分和创造可持续优势的一种方式,而另一些人则将其视为生存的手段。
没有人确切知道 2021 年会发生什么,也没有人知道“数据科学家”是否会再次登上“美国最佳工作”的榜首。但是,如果过去的历史和我们从客户那里看到的迹象有任何意义的话,我敢打赌是数据科学家。
数据科学家是分析师,软件工程师
原文:https://www.dominodatalab.com/blog/data-scientists-analysts-software-engineers
在这个数据科学弹出式会议中,电子艺界的数据科学主管 W. Whipple Neely 解释了为什么数据科学家的职责不仅仅是数据科学。
DataOps 更快地为 Moneysupermarket 提供数据科学价值
By Harvinder Atwal, Chief Data Officer, The Moneysupermarket Group on May 28, 2020 in Perspective
编者按:这是一系列文章的一部分,分享公司在成为模型驱动的道路上的最佳实践。一些文章将包含关于他们使用 Domino 的信息。
几年前,我在 Moneysupermarket 的团队偶然发现了 DataOps。我所说的失误是指我们没有积极着手实施 DataOps 方法,该方法作为一种更快地运营和扩展数据科学的方式已经开始获得关注。相反,出于基本需要,我们开始应用来自软件开发、产品管理和产品工程的最佳实践。
发生了什么事?
它始于一个简单的问题:我们能否利用数据科学,根据客户的金融需求、风险状况和态度,为他们提供个性化的沟通和内容?
Moneysupermarket 的主要使命是帮助消费者在从保险和信用卡到公用事业和旅游的所有事情上省钱。去年,我们服务了超过 1300 万活跃用户,并通过我们的四个品牌(MoneySuperMarket、TravelSupermarket、MoneySavingExpert 和 Decision Tech)为消费者节省了约 20 亿英镑。
我们有数千种产品,但当时,我们的营销团队在与客户沟通时采用了一刀切的方式。我们认为个性化是增加收入的关键。例如,营销团队可以使用数据科学来定制时间、语言和内容,向不同类型的客户发送不同版本的简讯,而不是向所有客户发送一份简讯。
商业利益相关者对这个概念很感兴趣,但是为了获得他们的全力支持和资助,我们需要向他们展示结果——而且要快。我们只有两个月的时间来证明模型驱动的个性化方法比利益相关者最初打算的假设和规则驱动的方法更好。
我们的数据科学流程没有针对速度进行优化。这种情况并不罕见。大多数数据科学团队可能会指出数据科学生命周期中的瓶颈,例如无法快速访问他们需要的数据、工具和计算资源,或者无法快速部署实验并与利益相关方进行迭代。这些瓶颈阻碍了他们实现投资的全部回报。
事实上,根据 NewVantage Partners 最近的调查,只有 7.3%的组织认为他们的数据和分析状况非常好。
我们必须改变我们的工作方式。
我们决定借鉴软件开发、产品工程和产品管理的最佳实践,快速创建一个最小可行的产品,用于个性化通信。我们希望整合三种基本方法:
- **敏捷实践,**尤其是在与商业利益相关者合作的时候。我们与营销利益相关者坐下来确定最终目标(例如,是改善客户体验还是增加收入?),要测试哪些假设,以及哪些数据产品可以满足这些目标。通过这样做,我们可以确保我们的最终产品能够满足他们的需求,并获得他们的全力支持。我们还创建了快速反馈循环,使我们能够通过营销测试新模型,这样我们就可以看到哪些有效,哪些无效,然后快速完善我们的模型。
- 精益制造原则帮助消除数据科学生命周期中的浪费和瓶颈,提高最终数据产品的质量,并监控数据流。我们还希望让数据科学家更加自给自足,并确保工作的可重复性和可重用性。例如,我们的 Domino 平台是我们的 DataOps 生态系统的重要组成部分,帮助我们减少浪费,并在数据科学家构建和部署模型时实施更好的控制。
- **DevOps 文化,**应用版本控制、配置管理、持续集成和持续运营等概念,更快、更可靠地开发和部署模型。
甚至我们都对结果感到惊讶。
通过应用这些实践(所有这些都是 DataOps 的基础),我们大大缩短了开发、测试和部署新的个性化模型所需的时间。在三个月的时间里,我们在分析实验。不到六个月,我们的新个性化模型就部署完毕并开始发挥作用,这比我们最初的预期要早得多。
如今,我们有 1,400 种不同的简讯,每一种都是根据客户的金融态度和知识量身定制的。例如,我们的模型发现,积极情绪和专有名词的使用增加了客户的转化率,这些客户更懂金融,知道他们想从我们的价格比较网站上得到什么和需要什么。相比之下,不太懂金融的客户更容易对使用负面情绪和“可能”、“应该”和“会”等情态动词的内容做出反应
从那以后,我们更加正式地采用 DataOps 来衡量我们的成功。
这项工作为我们最终的 DataOps 之旅奠定了基础,这一旅程使我们能够使用可扩展和可重复的流程以及高度优化的工具快速前进。
通过 DataOps,我们缩短了几周、几个月甚至几年的流程,使 Moneysupermarket 能够更快地创新并释放新的市场机会。
我们现在已经生产了 50 多种型号,从优化客户旅程和客户体验,到个性化产品和内容,再到与合作伙伴协商价格,我们的运营涉及方方面面。这带来了数百万英镑的额外收入,并使我们能够在竞争激烈的市场中保持领先地位。
DataOps 需要基于收集数据和根据反馈采取行动的持续改进心态。我们不断寻求通过不断提高我们创建和迭代数据产品的速度来增加我们对客户和利益相关者的影响。
了解更多信息:
- 阅读关于货币超级市场的多米诺案例研究。
- 阅读哈文德在转移到数据运营接受《计算机周刊》的采访
- 阅读哈文德的书,实用数据操作:大规模交付敏捷数据科学
无需 Domino 环境设置的 GPU 深度学习
原文:https://www.dominodatalab.com/blog/deep-learning-gpus-without-environment-setup
我们已经看到数据科学家对使用 GPU 来训练深度学习模型的兴趣激增。虽然支持这一点的库(例如 keras、TensorFlow 等)已经变得非常强大,但数据科学家仍然受到限制其生产力的配置问题的困扰。
例如,最近在 keras 博客上的一篇帖子描述了如何在 AWS 上使用 keras——它有九个步骤,其中许多涉及 DevOps 工作,例如设置端口转发。如果你没有使用深度学习 AMI,你需要安装 GPU 驱动程序,正确配置软件包以识别 GPU 设备,并处理许多其他技术细节。
Domino 通过 Docker 将基础设施自动化(例如,启动 EC2 机器,包括 GPU)与“环境配置”无缝结合,让用户使用已经设置好的配置来构建和共享可重用的计算环境。我们最近构建并共享了一个安装并正确配置了通用 GPU 工具的环境,因此它们将在 AWS GPU 硬件上无缝工作。
有了这一改变,在 Domino 上使用最新的深度学习包只需两步:
- 选择 GPU 硬件层。
- 选择支持 GPU 处理的环境。
看起来是这样的:
Domino 可以让您轻松地将您的机器扩展到亚马逊强大的 P2 实例,该实例号称具有高达 70 万亿次单精度浮点性能!
为了让你的深度学习包利用它运行的 GPU 硬件,你必须正确地配置和构建环境。不用通读关于如何安装 CUDA 、 cuDNN 以及最后你最喜欢的深度学习库的文档,Domino 让你轻松地构建你的定制环境一次,并轻松地共享该环境。
为了方便云用户使用 GPU,我们提供了一个名为“[Domino 托管] GPU 工具”的公共环境如果您想将 GPU 与 Theano、Tensorflow(有或没有 Keras)或 Neon 一起使用,请随意使用该环境并跳过设置。
如果你是深度学习的新手或者仍然在学习 Domino 平台,我们最近发布了几个 Domino 项目,它们使用 GPU 和深度学习库来训练 LSTM 模型。这些项目中的演示使用 IMDB 数据集来训练 LSTM 模型,该模型根据评论的文本来预测电影评论的情感。
- 涅槃乐队
- 提亚诺
- TensorFlow
你可以自由地对项目进行分支,进行实验,并探索自己使用 GPU 进行深度学习的新世界。尽情享受吧!
深度学习图解:构建自然语言处理模型
非常感谢 Addison-Wesley Professional 提供了从书中摘录《自然语言处理》的权限,深度学习图鉴作者克罗恩, Beyleveld ,以及 Bassens 。该摘录涵盖了如何创建单词向量并将其用作深度学习模型的输入。一个补充的 Domino 项目是可用的。
介绍
虽然计算语言学或自然语言处理(NLP)领域已经存在了几十年,但对深度学习模型的兴趣和使用的增加也推动了 NLP 在行业内的应用。数据科学家和研究人员需要大量的技术、软件包和工具来加速核心工作流任务,包括准备、处理和分析数据。利用 NLP 有助于研究人员和数据科学家更快地完成核心任务。由于 Domino 致力于加速数据科学工作流程,我们联系了 Addison-Wesley Professional (AWP)以获得从书中摘录大量“自然语言处理”章节的权限,*深度学习插图。*我们感谢AWP·皮尔森提供摘录作品的许可,并使我们能够提供一个补充的多米诺项目。
第一章介绍:自然语言处理
在本书的第 2 章[]中,我们介绍了语言的计算表示,特别强调了单词向量是一种定量捕捉单词含义的有效方法。在本章[摘录]中,我们将介绍一些代码,这些代码将使您能够创建自己的单词向量,并将其作为输入提供给深度学习模型。
你在本章中建立的自然语言处理模型将结合我们已经应用的神经网络层:本书第五章到第九章的密集层和第十章的卷积层。我们的 NLP 模型还将包含新的层类型——来自递归神经网络家族的层类型。rnn 本身处理自然语言等序列中出现的信息,但事实上,它们可以处理任何序列数据,如金融时间序列或给定地理位置的温度,因此它们非常通用。本章最后有一节是关于通过多个并行流处理数据的深度学习网络的,这一概念极大地拓宽了设计模型架构时的创造力范围,正如你将看到的那样,还可以提高模型的准确性。
预处理自然语言数据
您可以采取一些步骤来预处理自然语言数据,这样您在下游执行的建模可能会更准确。常见的自然语言预处理选项包括:
- 记号化:这是将一个文档(例如一本书)拆分成一系列离散的语言元素(例如单词),我们称之为记号。
- 将所有字符转换为小写字母。句首大写的单词(如她)和后面用在句子中的单词(她)意思相同。通过将语料库中的所有字符转换成小写,我们忽略了任何大写的使用。
- 去除停用词:这些是经常出现的词,往往包含相对较少的区别意义,如的、的、的、的*。对于停用词的精确列表没有普遍的共识,但是根据您的应用程序,确保某些词是(或不是)可能是明智的。)被认为是停用词。例如,在本章中,我们将建立一个模型来将电影评论分为正面或负面。一些停用词列表包括否定,如没有、不是和不会,这对我们的模型识别电影评论的情感可能是至关重要的,所以这些词可能不应该被删除。*
- 删除标点符号:标点符号通常不会给自然语言模型增加太多价值,因此经常被删除。
- *词干化:*词干化是将单词截断到词干。例如,单词 house 和 housing 都有词干 house。特别是对于较小的数据集,词干分析可能会很有成效,因为它将具有相似含义的单词汇集到单个标记中。将会有更多这种词干标记的上下文的例子,使得像 word2vec 或 GloVe 这样的技术能够更准确地识别单词向量空间中标记的适当位置(参见图 2.5 和 2.6) [【书中的 ]。[注意:词汇化是词干化的一种更复杂的替代方法,需要使用参考词汇。就本书的目的而言,词干提取是将多个相关单词视为单个单词的充分方法。]
- 处理 n-grams :一些单词通常以这样一种方式共同出现,即单词的组合比几个单独的概念更适合被认为是一个单独的概念。举个例子,纽约是一个二元模型(一个n-长度为二的克数),而纽约是一个三元模型(一个n-长度为三的克数)。当链接在一起时,单词 new、 york 和 city 具有特定的含义,用单个标记(因此是单词向量空间中的单个位置)比用三个单独的标记更好地捕捉这些含义。
根据我们设计模型所针对的特定任务,以及我们要输入的数据集,我们可能会使用所有、部分或不使用这些数据预处理步骤。当您考虑将任何预处理步骤应用到您的特定问题时,您可以使用您的直觉来衡量它最终是否对您的下游任务有价值。我们已经提到了一些例子:
- 词干可能对小语料库有帮助,但对大语料库没有帮助。
- 同样,将所有字符转换为小写可能有助于处理小型语料库,但是,在包含更多单词单独使用示例的大型语料库中,比如、将军(形容词,意为“广泛传播”)与将军(名词,意为军队指挥官)之间的区别可能很有价值。
- 删除标点符号并不是在所有情况下都有好处。例如,考虑一下,如果您正在构建一个问答算法,它可以使用问号来帮助它识别问题。
- 例如,否定作为停用词对于一些分类器可能是有帮助的,但是对于情感分类器可能不是。在停用词列表中包含哪些词对您的特定应用程序至关重要,因此要小心使用。在许多情况下,最好只删除有限数量的停用词。
如果你不确定给定的预处理步骤是否有帮助,你可以通过合并该步骤并观察它是否影响你的深度学习模型下游的准确性,来根据经验调查这种情况。一般来说,语料库越大,有用的预处理步骤越少。有了一个小的语料库,你可能会担心遇到罕见的单词或者在你的训练数据集的词汇之外的单词。通过将几个罕见的单词集中到一个普通的单词中,您将更有可能根据一组相关单词的含义有效地训练一个模型。然而,随着语料库变得越来越大,生僻字和未登录词变得越来越不是问题。有了一个非常大的语料库,这很可能有助于避免将几个单词汇集成一个单一的公共符号。这是因为将会有足够多的实例,即使是出现频率较低的单词,来有效地模拟它们的独特含义,以及模拟相关单词之间相对微妙的细微差别(否则可能会被汇集在一起)。
为了提供这些预处理步骤的实际例子,我们邀请您查看我们的自然语言预处理 Jupyter 笔记本【或者互补多米诺项目】。
它首先加载许多依赖项:
import nltk
from nltk import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
from nltk.stem.porter import *
nltk.download('gutenberg')
nltk.download('punkt')
nltk.download('stopwords')
import string
import gensim
from gensim.models.phrases import Phraser, Phrases
from gensim.models.word2vec import Word2Vec
from sklearn.manifold import TSNE
import pandas as pd
from bokeh.io import output_notebook, output_file
from bokeh.plotting import show, figure
%matplotlib inline
这些依赖项大多来自于nltk
(自然语言工具包)和 gensim(另一个 Python 的自然语言库)。当我们在下面的示例代码中应用它时,我们解释我们对每个独立依赖项的使用。
标记化
我们在本笔记本中使用的数据集是一个小型语料库,其中包含古登堡计划(Project Gutenberg)中的过版权书籍。[注:古登堡计划以印刷机发明者约翰内斯·古腾堡的名字命名,是数万本电子书的来源。这些书是来自世界各地的经典文学作品,它们的版权已经过期,可以免费获得。参见gutenberg.org。]
这个语料库在 nltk 中可用,因此可以使用下面的代码轻松地加载它:
from nltk.corpus import gutenberg
这部小小的文集只有 18 部文学作品,包括简·奥斯汀的《爱玛》,刘易斯·卡罗尔的《爱丽丝梦游仙境》,以及一个名不见经传的人威廉·莎士比亚的三部戏剧。(执行gutenberg.fileids()
打印所有 18 个文件的名称。)通过运行len(gutenberg.words())
,您可以看到语料库达到了 260 万个单词——这是一个易于管理的数量,意味着您可以在一台笔记本电脑上运行本节中的所有代码示例。
要将语料库标记成句子列表,一种选择是使用 nltk 的sent_tokenize()
方法:
gberg_sent_tokens = sent_tokenize(gutenberg.raw()
通过运行gberg_sent_tokens[0]
访问结果列表的第一个元素,您可以看到古登堡计划语料库中的第一本书是 Emma,因为这第一个元素包含书的标题页、章节标记和第一句话,所有这些都(错误地)与换行符(\n)混合在一起:
'[Emma by Jane Austen 1816]\n\nVOLUME I\n\nCHAPTER I\n\n\nEmma Wood-
house, handsome, clever, and rich, with a comfortable home\nand happy
disposition, seemed to unite some of the best blessings\nof existence;
and had lived nearly twenty-one years in the world\nwith very little to
distress or vex her.'
第二个元素中有一个独立的句子,可以通过执行gberg_sent_tokens[1]
来查看:
"She was the youngest of the two daughters of a most affectionate,
\nindulgent father; and had, in consequence of her sister's marriage,\nbeen
mistress of his house from a very early period."
您可以使用 nltk 的word_tokenize()
方法将这个句子进一步标记到单词级别
word_tokenize(gberg_sent_tokens[1])
这将打印一个单词列表,去掉所有空格,包括换行符(见图 11.1)。例如,单词父亲是第二句中的第 15 个单词,通过运行这行代码可以看到:
word_tokenize(gberg_sent_tokens[1])[14]
虽然sent_tokenize()
和word_tokenize()
方法可以方便地处理您自己的自然语言数据,但有了这个古腾堡语料库项目,您可以方便地使用其内置的sents()
方法来一步实现相同的目标:
gberg_sents = gutenberg.sents()
这个命令产生gberg_sents
,一个列表的标记化列表。较高级别的列表由单个句子组成,每个句子包含一个较低级别的单词列表。适当地,sents()
方法也将标题页和章节标记分离成它们自己的单独元素,正如您通过调用gberg_sents[0:2]:
所观察到的
[['[', 'Emma', 'by', 'Jane', 'Austen', '1816', ']'],
['VOLUME', 'I'],
['CHAPTER', 'I']]
正因为如此,艾玛的第一个实际句子现在单独作为gberg_sents
的第四个元素,因此为了访问第二个实际句子中的第 15 个单词(父亲),我们现在使用gberg_sents[4][14]
。
将所有字符转换为小写
对于剩余的自然语言预处理步骤,我们首先将它们迭代地应用于单个句子。当我们稍后结束这一部分时,我们将在整个 18 个文档的语料库中应用这些步骤。
回头看图 11.1,我们看到这个句子以大写的单词 She 开头。
如果我们想忽略大小写,这样这个单词就被认为与 she 相同,那么我们可以使用string
库中的 Python lower()
方法,如例 11.1 所示。
示例 11.1 将句子转换为小写
[w.lower() for w in gberg_sents[4]]
这一行返回与图 11.1 相同的列表,除了列表中的第一个元素现在是 she 而不是She
。
删除停用字词和标点符号
图 11.1 中的句子的另一个潜在的不便是,它充满了停用词和标点符号。为了处理这些,让我们使用+
操作符将 nltk 的英语停用词列表与string
库的标点符号列表连接在一起:
stpwrds = stopwords.words('english') + list(string.punctuation)
如果你检查一下你创建的stpwrds
列表,你会发现它包含了许多通常没有太多特殊含义的常用词,比如 a 、a,以及a。[注意,这三个特定的单词被称为冠词,或者限定词。然而,它也包含像 not 这样的词和其他负面的词,如果我们建立一个情感分类器,这些词可能是至关重要的,比如在句子中,“这部电影不好。”]
在任何情况下,为了从一个句子中去掉 stpwrds 的所有元素,我们可以使用一个列表理解,就像我们在例 11.2 中所做的那样,它包含了我们在例 11.1 中使用的小写。
例 11.2 用列表理解删除停用词和标点符号
[w.lower() for w in gberg_sents[4] if w.lower() not in stpwrds]
相对于图 11.1,运行这一行代码返回一个更短的列表,现在只包含每个单词都倾向于表达一点意思的单词:
['youngest',
'two',
'daughters',
'affectionate',
'indulgent',
'father',
'consequence',
'sister',
'marriage',
'mistress',
'house',
'early',
'period']
堵塞物
要词干,可以用波特算法【注:波特,M. F. (1980)。后缀剥离算法。程序,14,130–7。]由 nltk 提供。为此,您创建一个PorterStemmer()
对象的实例,然后将它的stem() method
添加到您在示例 11.2 中开始的列表理解中,如示例 11.3 所示。
例 11.3 在我们的列表理解中添加词干
[stemmer.stem(w.lower()) for w in gberg_sents[4] if w.lower() not in stpwrds]
这将输出以下内容:
['youngest',
'two',
'daughter',
'affection',
'indulg',
'father',
'consequ',
'sister',
'marriag',
'mistress',
'hous',
'earli',
'period']
这类似于我们之前输出的句子,除了许多单词已经被词干化:
- 子代到子代(允许复数和单数术语被同等对待)
- 房屋到房屋(允许类似房屋和房屋的相关词语被视为相同)
- early 到 earli (允许不同时态如 early 、early和 earliest 被视为相同)
这些词干示例对于像我们这样小的语料库可能是有利的,因为任何给定单词的示例都相对较少。通过将相似的单词汇集在一起,我们获得了汇集版本的更多出现,因此它可以被分配到向量空间中更准确的位置(图 2.6)。然而,对于一个非常大的语料库,其中有更多的罕见词的例子,区别对待一个词的复数和单数变化,将相关词视为唯一的,并保留多种时态可能是一种优势;这些细微差别可能会传达出有价值的意义。
搬运n-克
要将像 New York 这样的二元模型视为单个令牌而不是两个,我们可以使用 gensim 库中的Phrases()
和Phraser()
方法。如例 11.4 所示,我们以这种方式使用它们:
Phrases()
训练一个“检测器”来识别任意给定单词对在我们的语料库中一起出现的频率(技术术语是二元搭配)相对于该对中每个单词单独出现的频率Phraser()
获取由Phrases()
对象检测到的二元搭配,然后使用该信息创建一个可以有效地通过我们的语料库的对象,将两个连续标记中的所有二元搭配转换为单个标记
示例 11.4 检测并置二元模型
phrases = Phrases(gberg_sents)
bigram = Phraser(phrases)
通过运行bigram.phrasegrams
,我们输出每个二元模型的计数和分数的字典。图 11.2 提供了本词典最上面的几行。
图 11.2 中的每个二元模型都有一个计数和一个与之相关的分数。例如,在我们的古腾堡语料库中,二元组两个女儿只出现了 19 次。这个二元模型的得分相当低(12.0),这意味着相对于分开出现的频率而言,两个和的女儿这两个词出现的频率并不高。相比之下,二元模型 Miss Taylor 出现的频率更高(48 次),术语 Miss 和 Taylor 一起出现的频率远远高于它们单独出现的频率(得分为 453.8)。
浏览图 11.2 中的二元模型,注意它们被大写单词和标点符号破坏了。我们将在下一节解决这些问题,但同时让我们探索如何使用我们创建的
bigram
对象将两个连续的二元模型转换成一个。让我们通过对一串有空格的字符使用split()
方法来标记一个短句,如下所示:
tokenized_sentence = "Jon lives in New York City".split()
如果我们打印tokenized_sentence
,我们只输出一个单字列表:['Jon', 'lives', 'in', 'New', 'York', 'City']
。然而,如果我们通过使用bigram[tokenized_sentence]
将列表传递给 gensim bigram 对象,那么列表就包含了 bigram*:['Jon', 'lives', 'in', 'New_York', 'City']
。*
*在您通过运行 bigram 对象在您的语料库中识别出 bigram 之后,您可以通过将这个新的、填充了 bigram 的语料库通过Phrases()
和Phraser()
方法来检测三元模型(例如 New York Cit y)。这可以再次重复以识别 4-gram(然后再次识别 5-gram,等等);然而,这样做的回报是递减的。二元模型(或至多三元模型)应该足以满足大多数应用。顺便说一下,如果你继续用古腾堡语料库项目检测三元组,纽约州不太可能被检测到。我们的古典文学文集并没有经常提到它。
在对单个句子的预处理步骤进行了一些示例之后,我们现在编写一些代码来预处理整个古腾堡语料库项目。这也将使我们能够在一个清理过的不再包含大写字母或标点符号的语料库上并置二元模型。
在本章的后面,我们将使用斯坦福大学的安德鲁·马斯和他的同事整理的电影评论语料库,用 NLP 模型预测评论的情绪。[注:马斯等人(2011 年)。学习用于情感分析的词向量。计算语言学协会第 49 届年会会议录,142-50。]在他们的数据预处理步骤中,马斯和他的同事决定留下停用词,因为它们是“情绪的象征”[注意:这符合我们的想法,正如我们在本章前面提到的。]他们还决定不词干化,因为他们觉得他们的语料库足够大,以至于他们基于词向量的 NLP 模型“在数据表明时,学习相同词干的词的相似表示。”换句话说,在模型训练期间,具有相似含义的单词应该在单词向量空间(图 2.6)中找到它们到相似位置的方法。
在他们的带领下,我们也将在预处理古腾堡语料库时放弃停用词去除和词干提取,如例 11.5。
示例 11.5 从古登堡计划语料库中删除大写和标点符号
lower_sents = []
for s in gberg_sents:
lower_sents.append([w.lower() for w in s if w.lower()not in list(string.punctuation)])
在这个例子中,我们从一个名为lower_sents
的空列表开始,然后使用 for 循环将预处理过的句子添加到这个列表中。[注意:如果您正在预处理一个大型语料库,我们建议使用可优化和可并行的函数式编程技术来代替我们的简单(因此也容易理解)for 循环。]为了预处理循环中的每个句子,我们使用了例 11.2 中的列表理解的变体,在这种情况下,仅删除标点符号,同时将所有字符转换为小写。
去掉标点符号和大写字母后,我们可以重新开始检测语料库中的搭配二元模型:
lower_bigram = Phraser(Phrases(lower_sents))
相对于示例 11.4,这次我们通过将Phrases()
和Phraser()
方法链接在一起,在一行中创建了 gensim lower_bigram 对象。图 11.3 显示了对lower_bigram.phrasegrams
的调用输出的顶部:将这些二元模型与图 11.2 中的进行比较,我们确实观察到它们都是小写的(例如泰勒小姐),而包含标点符号的二元模型是看不到的。
然而,进一步检查图 11.3 中的结果,似乎计数和分数的默认最小阈值都太宽松了。也就是说,像两个女儿和她的妹妹这样的词对不应该被认为是双字词。为了获得我们认为更合理的二元模型,我们试验了更保守的计数和分数阈值,将它们增加 2 的幂。按照这种方法,我们通常满足于将可选的Phrases()
参数设置为 32 的 min(imum) count 和 64 的 score threshold ,如示例 11.6 所示。
示例 11.6 用更保守的阈值检测并置二元模型
lower_bigram = Phraser(Phrases(lower_sents,
min_count=32, threshold=64))
虽然并不完美,[注:这些当然是统计近似值!]因为仍然有一些有问题的二元模型,如大交易和几分钟,对lower_bigram.phrasegrams
的调用的输出现在基本上是合理的,如图 11.4 所示。
有了例 11.6 中指定的lower_bigram
对象,我们终于可以使用一个 for 循环来迭代地为自己添加一个清理过的句子语料库,如例 11.7 所示。
示例 11.7 创建包含二元模型的“干净”语料库
clean_sents = []
for s in lower_sents:
clean_sents.append(lower_bigram[s])
用 word2vec 创建单词嵌入
有了自然语言 clean_sents 的干净语料库,我们可以很好地将语料库中的单词嵌入到单词向量空间中(图 2.6)。正如您将在本节中看到的,这样的单词嵌入可以用一行代码生成。然而,这一行代码不应该盲目执行,它有相当多的可选参数需要仔细考虑。考虑到这一点,在深入研究示例代码之前,我们将讨论单词向量背后的基本理论。
word2vec 背后的基本理论
在第二章中,我们提供了对什么是词向量的直观理解。我们还讨论了潜在的想法,因为你可以“通过一个单词的朋友来了解它”,那么一个给定单词的意思可以很好地表示为它周围出现的单词的平均值。word2vec 是一种无监督的学习技术——也就是说,它应用于自然语言的语料库,而不使用任何可能或可能不存在于该语料库的标签。这意味着任何自然语言的数据集都适合作为 word2vec 的输入。[注:Mikolov,t .等人(2013 年)。向量空间中单词表示的有效估计。arXiv:1301.3781]
当运行 word2vec 时,您可以在两种底层模型架构之间进行选择— skip-gram (SG)或连续单词包(CBOW 发音为 see-bo),尽管从“相反”的角度最大化了概率,但这两种方法通常都会产生大致相当的结果。为了理解这一点,请重新考虑图 2.5 中玩具大小的语料库:
you shall know a word by the company it keeps
在其中,我们认为单词是目标单词,它右边的三个单词和左边的三个单词都被认为是上下文单词。(这对应于三个单词的窗口大小——这是我们在应用 word2vec 时必须考虑的主要超参数之一。)利用 SG 架构,给定目标单词,预测上下文单词。[注意:用更专业的机器学习术语来说,skip-gram 架构的成本函数是在给定当前目标单词的情况下,最大化来自语料库的任何可能的上下文单词的对数概率。]对于 CBOW,情况正好相反:基于上下文单词预测目标单词。[注意:同样,在 ML 技术术语中,CBOW 的成本函数是在给定当前上下文单词的情况下,最大化来自语料库的任何可能的目标单词的对数概率。]
为了更具体地理解 word2vec,让我们更详细地关注 CBOW 架构(尽管我们同样可以关注 SG)。使用 CBOW,目标单词被预测为所有上下文单词的平均值,所有上下文单词被共同考虑为*。“共同地”意味着“一次全部”:不考虑上下文单词的特定位置,也不考虑上下文单词是出现在目标单词之前还是之后。CBOW 架构具有这种属性,就在它名字的“单词包”部分:*
** 我们取目标单词左右两边窗口中的所有上下文单词。
- 我们(形象地说!)把所有这些上下文单词扔进一个袋子里。如果这有助于你记住单词的顺序是不相关的,你甚至可以想象摇动袋子。
- 我们计算包中包含的所有上下文单词的平均值,使用该平均值来估计目标单词可能是什么。
If we were concerned about syntax—the grammar of language (see Figure 2.9 for
a refresher on the elements of natural language)—then word order would matter.
But because with word2vec we’re concerned only with semantics—the *meaning* of
words— it turns out that the order of context words is, on average, irrelevant.
考虑到 CBOW 名字的“BOW”组件的直观性,让我们也考虑一下它的“连续”部分:目标单词和上下文单词窗口从语料库的第一个单词一直到最后一个单词连续地滑动一次一个单词。在沿途的每个位置,给定上下文单词,估计目标单词。通过随机梯度下降,词在向量空间中的位置可以被移动,从而这些目标词估计可以被逐渐改进。
实际上,如表 11.1 所总结的,当你处理一个小语料库时,SG 架构是一个更好的选择。它很好地代表了词向量空间中的稀有词。相比之下,CBOW 的计算效率要高得多,因此当您处理非常大的语料库时,它是更好的选择。相对于 SG 来说,CBOW 也代表了出现频率稍好的词。[注意:无论您使用 SG 还是 CBOW 体系结构,在运行 word2vec 时,您还有一个额外的选择,那就是训练方法。为此,你有两种不同的选择:分层 softmax 和负采样。前者涉及规范化,更适合生僻字。另一方面,后者放弃了规范化,使其更适合普通单词和低维单词向量空间。就本书的目的而言,这两种训练方法之间的差异是微不足道的,我们不会进一步讨论它们。]
尽管 word2vec 是将自然语言语料库中的单词嵌入到向量空间中最广泛使用的方法,但它绝不是唯一的方法。word2vec 的一个主要替代品是 GloVe——单词表示的全局向量——它是由杰出的自然语言研究人员 Jeffrey Pennington、Richard Socher 和 Christopher Manning 引入的。【注:15。Pennington 等人(2014 年)。GloVe:单词表示的全局向量。自然语言处理经验方法会议论文集。]当时——2014 年——三人是斯坦福大学的同事。
GloVe 和 word2vec 的基本方法不同:word2vec 使用预测模型,而 GloVe 是基于计数的。最终,这两种方法都倾向于产生在下游 NLP 应用中表现相似的向量空间嵌入,一些研究表明,word2vec 在选择的情况下可能会提供稍微更好的结果。GloVe 的一个潜在优势是,它被设计为在多个处理器甚至多个机器上并行化,因此如果您希望创建一个包含许多独特单词和非常大的语料库的单词向量空间,它可能是一个不错的选择。
word2vec 和 GloVe 的当代领先替代品是 fastText。[注:开源 fastText 库可在 fasttext.cc. Joulin,a .等人(2016)处获得。高效文本分类的窍门。arXiv: 1607.01759。Bojanowski,p .等人(2016 年)。用子词信息丰富词向量。arXiv: 1607.04606。请注意,具有里程碑意义的 word2vec 论文的主要作者托马斯·米科洛夫是这两篇具有里程碑意义的 fastText 论文的最终作者。这种方法是由脸书大学的研究人员开发的。fastText 的一个主要优点是它在子单词级别上操作——它的“单词”向量实际上是单词的子组件。这使得 fastText 能够解决与本章开始的预处理部分中提到的稀有单词和词汇表外单词相关的一些问题。
评估单词向量
无论你如何创建你的词向量——无论是用 word2vec 还是其他方法——在评估词向量的质量时,有两个广泛的角度可以考虑:内在和外在评估。
外部评估包括评估你的词向量在你感兴趣的下游 NLP 应用中的性能——比如,你的情感分析分类器,或者你的命名实体识别工具。虽然外部评估可能需要更长的时间来执行,因为它们需要您执行所有的下游处理步骤-可能包括训练一个计算密集型深度学习模型-如果它们与 NLP 应用程序的准确性的明显改善有关,那么您可以确信值得保留对您的词向量的更改。
相比之下,内在评估包括评估你的词向量的性能,而不是在你的最终 NLP 应用上,而是在一些特定的中间子任务上。一个常见的任务是评估你的单词向量是否与图 2.7 所示的算术类比很好地对应。例如,如果您从 king 的单词向量位置开始,减去man
和add woman
,您会在 queen 的单词向量位置附近结束吗?注:托马斯·米科洛夫和他的同事在他们 2013 年的 word2vec 论文中开发了一个包含 19500 个此类类比的测试集。这套测试设备在 download.tensorflow.org/data/questions-words.txt 的[有售。]
相对于外在评估,内在测试更快。它们还可以帮助您更好地理解(从而解决)更广泛的 NLP 过程中的中间步骤。然而,内在评估的局限性在于,它们可能不会最终提高下游 NLP 应用程序的准确性,除非您已经确定了中间测试和 NLP 应用程序的性能之间可靠的、可量化的关系。
运行 word2vec
如前所述,如示例 11.8 所示,word2vec 可以在一行代码中运行——尽管有相当多的参数。
示例 11.8 运行 word2vec
model = Word2Vec(sentences=clean_sents, size=64,
sg=1, window=10, iter=5,
min_count=10, workers=4)
下面是我们从 gensim 库中传递给 Word2Vec()方法的每个参数的明细:
sentences
:传入一个类似 clean_sents 的列表列表作为语料库。较高级列表中的元素是句子,而较低级列表中的元素可以是单词级标记。size
:运行 word2vec 将产生的单词向量空间中的维数。这是一个可以从外部或内部变化和评估的超参数。像本书中的其他超参数一样,也有一个金发女孩的最佳点。比如说,通过指定 32 个维度并以 2 的幂来改变这个值,您可以找到一个最佳值。维度数量加倍将使下游深度学习模型的计算复杂性加倍,但如果这样做会导致明显更高的模型准确性,那么这种外在评估表明,额外的复杂性可能是值得的。另一方面,将维数减半将下游的计算复杂度减半:如果这可以在不明显降低 NLP 模型精度的情况下完成,那么就应该这样做。通过执行一些内在检查(我们很快就会看到),我们发现对于这种特殊情况,64 维比 32 维提供了更合理的单词向量。然而,将这一数字增加一倍至 128,并没有带来明显的改善。sg
:设置为 1 选择跳格结构,或保留默认值 0 选择 CBOW。如表 11.1 所总结的,SG 通常更适合像古腾堡语料库这样的小数据集。- 对于 SG 来说,窗口大小为 10(总共 20 个上下文单词)是一个很好的选择,所以我们将这个超参数设置为 10。如果我们使用 CBOW,那么窗口大小 5(总共 10 个上下文单词)可能接近最佳值。在任一情况下,这个超参数都可以从外部或内部进行试验和评估。然而,对这个超参数的微小调整可能没有明显的影响。
iter
:默认情况下,gensimWord2Vec()
方法在输入的语料库上迭代五次(即,滑过所有单词)。word2vec 的多次迭代类似于训练深度学习模型的多个时期。对于像我们这样的小语料库,单词向量经过几次迭代后会得到改进。另一方面,对于一个非常大的语料库,即使运行两次迭代,在计算上也可能是极其昂贵的——而且,因为在一个非常大的语料库中有如此多的单词示例,单词向量可能不会更好。min_count
:这是一个单词在语料库中出现的最少次数,以适应单词向量空间。如果给定的目标单词只出现一次或几次,则需要考虑的上下文单词的例子数量有限,因此它在单词向量空间中的位置可能不可靠。因此,大约 10 的最小计数通常是合理的。计数越高,可用于下游 NLP 任务的词汇就越少。这是另一个可以调整的超参数,外部评估可能比内部评估更有启发性,因为您必须处理的词汇表的大小可能会对您的下游 NLP 应用程序产生相当大的影响。workers
:这是您希望专门用于培训的处理核心的数量。如果您机器上的 CPU 有八个内核,那么八个内核就是您可以拥有的最大并行工作线程数。在这种情况下,如果您选择使用少于八个内核,您会将计算资源留给其他任务。
在我们的 GitHub 存储库中,我们使用 word2vec 对象的 save()方法保存我们的模型:
model.save('clean_gutenberg_model.w2v')
不用自己运行 word2vec,您可以使用下面的代码加载我们的单词向量:
model = gensim.models.Word2Vec.load('clean_gutenberg_model.w2v')
如果您选择我们创建的单词 vectors,那么下面的例子将产生相同的输出。[注意:每次运行 word2vec 时,词汇中每个单词在单词向量空间中的初始位置都是随机分配的。因此,提供给 Word2Vec() 的相同数据和参数每次都会产生唯一的单词向量,但是语义关系应该是相似的。]我们可以通过调用len(model.wv.vocab)
来看自己词汇量的大小。这告诉我们,在我们的 clean_sents 语料库中,有 10,329 个单词(更确切地说,是标记)至少出现了 10 次。[注意:词汇大小等于我们的语料库中出现至少 10 次的标记的数量,因为我们在示例 11.8 中调用Word2Vec()
时设置了min_count=10
。[英语背诵文选我们的词汇中有一个词是 dog。如图 11.6 所示,我们可以通过运行model.wv['dog']
输出它在 64 维词向量空间中的位置。
作为对我们的单词向量质量的基本内在评估,我们可以使用 most_similar()方法来确认在我们的单词向量空间中的相似位置找到具有相似含义的单词。[注意:从技术上讲,两个给定单词之间的相似度是通过计算余弦相似度来计算的。]例如,要输出单词向量空间中与父亲最相似的三个单词,我们可以运行以下代码:
model.wv.most_similar('father', topn=3)
这将输出以下内容:
[('mother', 0.8257375359535217),
('brother', 0.7275018692016602),
('sister', 0.7177823781967163)]
这个输出表明母亲、兄弟和姐妹是我们的词向量空间中与父亲最相似的词。换句话说,在我们的 64 维空间中,最接近的词。[注意:即,在那个 64 维向量空间中具有最短的欧几里德距离。[英语背诵文选对父亲来说就是母亲这个词。表 11.2 提供了一些额外的单词示例,这些单词与我们从单词向量词汇表中挑选的特定单词最相似(即最接近),考虑到我们的小型古腾堡语料库,这五个单词看起来都非常合理。[注意,表 11.2 中的最后一个测试词“夫人”是因为二元搭配才可用的(见例 11.6 和 11.7)。]
假设我们运行下面一行代码:
model.wv.doesnt_match("mother father sister brother dog".split())
我们得到输出 dog,表明 dog 相对于所有其他可能的单词对是最不相似的。我们还可以使用下面的行来观察父亲和狗之间的相似性得分仅为 0.44:
model.wv.similarity('father', 'dog')
这个 0.44 的相似性分数远低于父亲和母亲、哥哥或妹妹中的任何一个之间的相似性,因此毫不奇怪的是狗在我们的词向量空间中相对远离其他四个词。
作为最后一个小的内在测试,我们可以计算如图 2.7 所示的词向量类比。例如,我们可以执行以下代码:
model.wv.most_similar(positive=['father', 'woman'], negative=['man'])
得分最高的词出来是母亲,这是类比的正确答案。
假设我们同样执行以下代码:
model.wv.most_similar(positive=['husband', 'woman'], negative=['man'])
在这种情况下,得分最高的单词是 wife,也是正确的答案,因此
表明我们的单词向量空间可能总体上是正确的。
A given dimension within an n-dimensional word-vector space does not necessarily
represent any specific factor that relates words. For example, although the real-world
differences in meaning of gender or verb tense are represented by some vector direction
(i.e., some movement along some combination of dimensions) within the vector space,
this meaningful vector direction may only by chance be aligned—or perhaps correlated—with
a particular axis of the vector space.
这与涉及 n 维向量空间的一些其他方法形成对比,在 n 维向量空间中,轴旨在表示一些特定的解释变量。许多人熟悉的一种方法是主成分分析(PCA),这是一种用于识别对给定数据集中的方差有贡献的线性不相关(即正交)向量的技术。PCA 和词向量空间中以点的形式存储的信息之间的这种差异的必然结果是,在 PCA 中,第一个主成分贡献了大部分方差,因此您可以专注于它们而忽略后面的主成分;但是在词向量空间中,所有的维度都可能是重要的,并且需要被考虑。这样,像 PCA 这样的方法对于维数减少是有用的,因为我们不需要考虑所有的维度。
绘制单词向量
人类的大脑不太适合在大于三维的空间中想象任何东西。因此,以其原始格式绘制单词向量(可能有几十甚至几百个维度)是不可能的。令人欣慰的是,我们可以使用降维技术将高维单词向量空间中的单词位置近似映射到二维或三维空间中。我们推荐的降维方法是t-分布式随机邻居嵌入(t-SNE;发音为 tee-SNE),由 Laurens van der Maaten 与 Geoff Hinton 合作开发(图 1.16)。[注:范德马滕,l .,&辛顿,G. (2008)。使用 t-SNE 可视化数据。机器学习研究杂志,9,2579–605。]
示例 11.9 提供了来自我们的自然语言预处理笔记本的代码,用于将我们的 64 维古腾堡项目导出的词向量空间降低到二维,然后将得到的 x 和 y 坐标存储在熊猫数据帧中。对于TSNE()
方法(来自 scikit-learn 库),我们需要关注两个参数:
n_components
是应该返回的维数,因此将其设置为 2 会产生二维输出,而设置为 3 会产生三维输出。n_iter
是输入数据的迭代次数。与 word2vec(示例 11.8)一样,迭代类似于与训练神经网络相关的时期。更多的迭代对应于更长的训练时间,但是可以改善结果(尽管只是在一定程度上)。
示例 11.9 用于降维的 t-SNE
tsne = TSNE(n_components=2, n_iter=1000)
X_2d = tsne.fit_transform(model.wv[model.wv.vocab])
coords_df = pd.DataFrame(X_2d, columns=['x','y'])
coords_df['token'] = model.wv.vocab.keys()
运行示例 11.9 中的 t-SNE 可能会在您的机器上花费一些时间,所以如果您对运行以下代码感到不耐烦,欢迎使用我们的结果:
coords_df = pd.read_csv('clean_gutenberg_tsne.csv')
[注意:我们在使用以下命令对我们的单词向量运行 t-SNE 之后创建了这个 CSV:coords_df.to_csv('clean_gutenberg_tsne.csv'
,index=False
)。请注意,因为 t-SNE 是随机的,所以每次运行它都会得到一个唯一的结果。]
无论你是自己运行 t-SNE 来生成coords_df
还是加载我们的,你都可以通过使用head() method
来检查数据帧的前几行:
coords_df.head()
执行 head()的输出如图 11.7 所示。例 11.10 提供了用 t-SNE(例 11.9)创建二维数据的静态散点图(图 11.8)的代码。
示例 11.10 词向量空间的静态二维散点图
_ = coords_df.plot.scatter('x', 'y', figsize=(12,12),
marker='.', s=10, alpha=0.2)
就其本身而言,图 11.8 中显示的散点图可能看起来很有趣,但是我们几乎不能从中获得可操作的信息。相反,我们建议使用散景库来创建一个高度互动的——且可操作的——绘图,如示例 11.11 中提供的代码。[注意:在示例 11.11 中,我们使用 Pandas sample()方法将数据集减少到 5,000 个标记,因为我们发现在交互使用散景图时,使用比这更多的数据会导致用户体验不佳。]
示例 11.11 二维字向量数据的交互式散景图
output_notebook()
subset_df = coords_df.sample(n=5000)
p = figure(plot_width=800, plot_height=800)
_ = p.text(x=subset_df.x, y=subset_df.y, text=subset_df.token)
show(p)
示例 11.11 中的代码使用 t-SNE 生成的x
和y
坐标生成了图 11.9 中的交互式散点图。
通过切换图右上角的滚轮缩放按钮,您可以使用鼠标放大云内的位置,以便文字变得清晰可见。例如,如图 11.10 所示,我们确定了一个主要由衣服组成的区域,附近有相关的聚类,包括人体解剖、颜色和面料类型。以这种方式探索提供了一种很大程度上主观的内在评估,即相关术语(尤其是同义词)是否如您所期望的那样聚集在一起。进行类似的操作时,您可能还会注意到自然语言预处理步骤的特定缺点,例如包含标点符号、双字母或其他您可能不希望包含在单词向量词汇表中的标记。
ROC 曲线下的面积
我们很抱歉打断了有趣的,互动的文字矢量绘图。我们需要在这里从特定于自然语言的内容中短暂休息一下,引入一个将在本章的下一节中派上用场的度量,届时我们将评估深度学习 NLP 模型的性能。
到目前为止,我们的大多数模型都涉及到多类输出:例如,当处理 MNIST 数字时,我们用 10 个输出神经元来表示输入图像可能代表的 10 个数字中的每一个。然而,在本章的剩余部分,我们的深度学习模型将是二元分类器:它们将只区分两个类别。更具体地说,我们将建立二元分类器来预测电影评论的自然语言是对应于好评还是差评。
与处理多类问题的人工神经网络不同,人工神经网络需要与类一样多的输出神经元,而作为二元分类器的人工神经网络只需要一个输出神经元。这是因为没有与具有两个输出神经元相关的额外信息。如果向二元分类器提供某个输入 x,并且它为其中一个类计算某个输出[latex]\hat{y}[/latex],那么另一个类的输出就是 1 - [latex]\hat{y}[/latex]。例如,如果我们将一个电影评论输入到一个二进制分类器中,它输出该评论是正面评论的概率是 0.85,那么该评论是负面评论的概率一定是 1 0.85 = 0.15。
因为二元分类器具有单一输出,所以我们可以利用相对于主导多类问题的过度黑白准确性度量而言复杂的度量来评估我们的模型的性能。例如,典型的精度计算会认为,如果[latex]\hat{y}[/latex] > 0.5,则模型预测输入 x 属于一个类,而如果它输出小于 0.5 的值,则它属于另一个类。为了说明为什么像这样具有特定的二进制阈值是过于简单的,考虑这样一种情况,其中输入电影评论导致二进制分类器输出[latex]\hat{y}[/latex] = 0.48:典型的准确度计算阈值将保持这一点-因为这个[latex]\hat{y}[/latex]低于 0.5 -它被分类为负面评论。如果第二次电影检查对应于[latex]\hat{y}[/latex] = 0.51 的输出,则该模型几乎不再有信心认为该检查相对于第一次检查是正面的。然而,因为 0.51 大于 0.5 的准确度阈值,所以第二次评论被归类为正面评论。
准确性度量阈值的严酷性可以隐藏我们的模型输出质量的细微差别,因此在评估二元分类器的性能时,我们更喜欢称为接收器工作特性曲线下面积的度量。ROC AUC,作为度量标准的简称,起源于第二次世界大战,当时它被开发用于评估雷达工程师在试图识别敌方目标时的判断性能。
我们喜欢 ROC AUC 有两个原因:
- 它将两个有用的指标——真阳性率和假阳性率——混合成一个汇总值。
- 它使我们能够在从 0.0 到 1.0 的整个[latex]\hat{y}[/latex]范围内评估我们的二元分类器的输出性能。这与准确性度量形成对比,准确性度量仅在单个阈值评估二元分类器的性能,通常为[latex]\hat{y}[/latex] = 0.50。
混乱矩阵
理解如何计算 ROC AUC 指标的第一步是理解所谓的混乱矩阵,正如您将看到的,它实际上并不那么混乱。相反,该矩阵是一个简单的 2 × 2 表格,显示了一个模型(或者,就像二战时的一个人)在试图充当二元分类器时有多混乱。你可以在表 11.3 中看到一个混淆矩阵的例子。
为了用一个例子来说明混淆矩阵,让我们回到热狗/非热狗二进制分类器,我们在前面的许多章节中用它来构造愚蠢的例子:
当我们向一个模型提供一些输入 x,并且它预测该输入代表一个热狗,那么我们正在处理表格的第一行,因为预测 y = 1。在这种情况下,
- 真正:如果输入是实际上一个热狗(即实际上 y = 1),那么模型正确地对输入进行了分类。
- 假阳性:如果输入是实际上不是热狗(即实际 y = 0),那么模型是混淆了。
- 假阴性:如果输入实际上是一个热狗(即 actual y = 1),那么模型在这种情况下也是混淆的。
- True negative:如果输入实际上不是热狗(即 actual y = 0),则模型正确地对输入进行了分类。当我们向一个模型提供一些输入 x,并且它预测该输入确实而不是代表一个热狗时,那么我们正在处理表格的第二行,因为预测 y = 0。在这种情况下,
计算 ROC AUC 指标
简单介绍了混淆矩阵后,我们现在可以使用一个玩具大小的例子来计算 ROC AUC 指标本身。假设,如表 11.4 所示,我们为二元分类模型提供了四个输入。
这些输入中有两个实际上是热狗(y = 1),有两个不是热狗(y = 0)。对于这些输入中的每一个,模型输出一些预测的[latex]\hat{y}[/latex],所有四个都在表 11.4 中提供。
为了计算 ROC AUC 指标,我们依次将模型输出的每个[latex]\hat{y}[/latex]值视为二元分类阈值。先从最低的[latex]\hat{y}[/latex]开始,为 0.3(见表 11.5 中“0.3 阈值”一栏)。在此阈值,只有第一个输入被分类为非热狗,而第二个到第四个输入(所有[latex]\hat{y}[/latex] > 0.3)都被分类为热狗。我们可以将这四种预测分类与表 11.3 中的混淆矩阵进行比较:
- 真阴性(TN):这实际上不是热狗(y = 0),并被正确预测为热狗。
- 真阳性(TP):这实际上是一个热狗(y = 1),并被正确预测。
- 假阳性(FP):这实际上不是一个热狗(y = 0),但它被错误地预测为一个。
- 真阳性(TP):像输入 2 一样,这实际上是一个热狗(y = 1),并被正确预测。
将分类阈值设置为 0.5,再次将阈值设置为 0.6,重复相同的过程,允许我们填充表 11.5 的剩余列。作为一个练习,仔细阅读这两列可能是明智的,将每个阈值的分类与实际 y 值和混淆矩阵(表 11.3)进行比较,以确保您很好地掌握了这些概念。最后,请注意,最高的[latex]\hat{y}[/latex]值(在本例中为. 09)可以作为潜在的阈值跳过,因为在这样高的阈值下,我们会认为所有四个实例都不是热狗,使其成为上限而不是分类边界。
计算 ROC AUC 指标的下一步是计算三个阈值的真阳性率(TPR)和假阳性率(FPR)。等式 11.1 和 11.2 使用“0.3 阈值”栏来分别提供如何计算真阳性率和假阳性率的示例。
为了方便起见,在表 11.5 的底部还提供了计算阈值 0.5 和 0.6 的 TPR 和 FPR 的算法的简写版本。同样,也许你应该测试一下你是否可以用自己的时间来计算这些值。
计算 ROC AUC 的最后一步是创建一个图,如图 11.11 所示。构成受试者工作特性(ROC)曲线形状的点是表 11.5 中每个可用阈值(在本例中为 3 个)的假阳性率(横坐标,x 轴坐标)和真阳性率(纵坐标,y 轴坐标),加上图的左下角和右上角的两个额外点。具体来说,这五个点(在图 11.11 中显示为橙色点)是:
- (0,0)为左下角
- (0,0.5)从 0.6 开始
- (0.5,0.5)从 0.5 开始
- (0.5,1)从 0.3 开始
- (1,1)用于右上角
在这个玩具大小的示例中,我们只使用了四个不同的[latex]\hat{y}[/latex]值,因此只有五个点决定 ROC 曲线的形状,使曲线更像阶梯形。当有许多可用的预测提供许多不同的[latex]\hat{y}[/latex]值时——这是现实世界中的典型情况 ROC 曲线有更多的点,因此它不那么呈阶梯状,而更呈曲线状。ROC 曲线的曲线下面积(AUC)正是它听起来的样子:在图 11.11 中,我们用橙色标出了该区域,在本例中,AUC 占所有可能面积的 75%,因此 ROC AUC 指标为 0.75。
与 chance 一样有效的二元分类器将生成一条从图的左下角到右上角的直线对角线,因此 ROC AUC 为 0.5 表示该分类器与掷硬币一样有效。完美的 ROC AUC 为 1.0,这是通过在所有可用的[latex]\hat{y}[/latex]阈值中 FPR = 0 和 TPR = 1 来实现的。当您设计二元分类器以在 ROC AUC 指标上表现良好时,目标是在[latex]\hat{y}[/latex]阈值范围内最小化 FPR 和最大化 TPR。也就是说,对于您遇到的大多数问题,达到完美的 ROC AUC 1.0 是不可能的:在数据中通常有一些噪音——也许是很多噪音——使得完美无法实现。因此,当您处理任何给定的数据集时,都会有一些(通常是未知的!)最大 ROC AUC 分数,因此无论你的模型作为问题的二元分类器有多理想,都有一个 ROC AUC 上限,没有模型可以突破。
在本章的剩余部分,我们使用具有启发性的 ROC AUC 指标,以及您已经熟悉的更简单的准确性和成本指标,来评估我们设计和训练的二进制分类深度学习模型的性能。
基于相似网络的自然语言分类
在本节中,我们将本章中介绍的概念(自然语言预处理最佳实践、词向量的创建和 ROC AUC 度量)与前几章的深度学习理论联系在一起。正如我们之前已经提到的,在本章的剩余部分,你将实验的自然语言处理模型将是一个二元分类器,它预测一个给定的电影评论是正面的还是负面的。我们首先使用您已经熟悉的神经网络类型(密集和卷积)对自然语言文档进行分类,然后转向专门处理序列中出现的数据的网络。
加载 IMDb 电影评论
作为性能基线,我们将首先训练和测试一个相对简单的密集网络。完成这项工作的所有代码都在我们的密集情感分类器 Jupyter 笔记本【或者互补多米诺项目】中提供。
示例 11.12 提供了我们的密集情感分类器所需的依赖性。这些依赖关系中的许多都可以从前面的章节中识别出来,但其他一些(例如,加载电影评论的数据集,在我们训练时保存模型参数,计算 ROC AUC)是新的。像往常一样,我们将在稍后应用这些依赖项时详细介绍它们。
示例 11.12 加载情感分类器依赖性
import keras
from keras.datasets import imdb # new!
from keras.preprocessing.sequence import pad_sequences # new!
from keras.models import Sequential
from keras.layers import Dense, Flatten, Dropout
from keras.layers import Embedding # new!
from keras.callbacks import ModelCheckpoint # new!
import os # new!
from sklearn.metrics import roc_auc_score, roc_curve # new!
import pandas as pd
import matplotlib.pyplot as plt # new!
%matplotlib inline
将尽可能多的超参数放在文件的顶部是一个很好的编程实践。这使得试验这些超参数变得更加容易。这也使你(或者,事实上,你的同事)在稍后(可能更多)返回文件时,更容易理解你在文件中做了什么。考虑到这一点,我们将所有的超参数放在 Jupyter 笔记本的一个单元格中。示例 11.13 中提供了代码。
示例 11.13 设置密集情感分类器超参数
# output directory name:
output_dir = 'model_output/dense'
# training:
epochs = 4
batch_size = 128
# vector-space embedding:
n_dim = 64
n_unique_words = 5000
n_words_to_skip = 50
max_review_length = 100
pad_type = trunc_type = 'pre'
# neural network architecture:
n_dense = 64
dropout = 0.5
让我们来分解一下这些变量的用途:
加载电影评论数据是一行程序,如例 11.14 所示。
示例 11.14 加载 IMDb 电影评论数据
(x_train, y_train), (x_valid, y_valid) = \
imdb.load_data(num_words=n_unique_words, skip_top=n_words_to_skip)
来自 Maas 等人(2011)的这个数据集由来自公开可用的互联网电影数据库(IMDb;imdb.com。它由 50,000 条评论组成,其中一半在训练数据集(x_train)
中,一半用于模型验证(x_valid)
。当提交他们对给定电影的评论时,用户还提供一个星级,最多 10 颗星。根据这些星级标准,(y_train and y_valid)
的标签是二元的:
- 得分为四星或更低的评论被视为负面评论(y = 0)。
- 与此同时,得分为 7 星或以上的评论被归类为正面评论(y = 1)。
- 中等评论——五星或六星的评论——不包括在数据集中,这使得二元分类任务对于任何模型都更容易。
通过在调用imdb.load_data()
时指定参数num_words
和skip_top
的值,我们分别限制了单词向量词汇表的大小并删除了最常见的(停止)单词。
In our Dense Sentiment Classifier notebook, we have the convenience of loading our IMDb
film-review data via the Keras imdb.load_data() method. When you’re working with your own natural language data, you’ll likely need to preprocess many aspects of the data yourself. In addition to the general preprocessing guidance we provided earlier in this chapter, Keras provides a number of convenient text preprocessing utilities, as documented online at keras.io/preprocessing/text. In particular, the Tokenizer() class may enable you to carry out all of the preprocessing steps you need in a single line of code, including - Tokenizing a corpus to the word level (or even the character level) - Setting the size of your word-vector vocabulary (with num_words) - Filtering out punctuation Converting all characters to lowercase - Converting tokens into an integer index
检查 IMDb 的数据
执行x_train[0:6]
,我们可以检查来自训练数据集的前六个评论,其中前两个如图 11.12 所示。这些评论本身采用整数索引格式,数据集中的每个唯一标记都由一个整数表示。前几个整数是特殊情况,遵循 NLP 中广泛使用的通用约定:
- 0:保留作为填充标记(我们很快会将它添加到比
max_review_length
短的评论中)。 - 1:将是开始标记,它将指示审查的开始。但是,按照下一个要点,起始标记是前 50 个最常见的标记之一,因此显示为“未知”
- 2:在语料库中非常频繁出现(即,它们在前 50 个最常见的单词中)或很少出现(即,它们在前 5050 个最常见的单词之下)的任何记号将在我们的单词向量词汇表之外,因此用这个未知记号来替换。
- 3:语料库中出现频率最高的词。
- 4:出现频率第二高的单词。
- 5:出现频率第三高的,依此类推。
使用示例 11.15 中的以下代码,我们可以看到训练数据集中前六个评论的长度。
示例 11.15 打印六个评论中的令牌数
for x in x_train[0:6]:
print(len(x))
它们是相当可变的,范围从 43 个令牌到 550 个令牌。简而言之,我们将处理这些差异,将所有评论标准化为相同的长度。
电影评论以图 11.12 中的整数索引格式输入到我们的神经网络模型中,因为这是一种存储令牌信息的高效内存方式。例如,将标记作为字符串输入,这将需要更多的内存。然而,对于我们人类来说,以整数索引的形式来检查评论是没有意义的(坦率地说,也是无趣的)。为了将评论视为自然语言,我们创建了如下单词索引,其中PAD
、START
和UNK
习惯上分别表示填充、开始和未知标记:
word_index = keras.datasets.imdb.get_word_index()
word_index = {k:(v+3) for k,v in
word_index.items()} word_index["PAD"] = 0
word_index["START"] = 1
word_index["UNK"] = 2
index_word = {v:k for k,v in word_index.items()}
然后,我们可以使用示例 11.16 中的代码来查看我们选择的电影评论—在这种情况下,是来自训练数据的第一个评论。
示例 11.16 以字符串形式打印评论
' '.join(index_word[id] for id in x_train[0])
得到的字符串应该与图 11.13 所示的输出相同。
记住图 11.13 中的评论包含了输入到我们神经网络中的标记,我们可能会发现阅读没有所有UNK
标记的完整评论是令人愉快的。在调试模型结果的某些情况下,能够查看完整的审查甚至可能是实际可行的。例如,如果我们在n_unique_words
或n_words_to_skip
阈值上过于激进或保守,通过比较图 11.13 中的回顾和完整的回顾,这可能会变得明显。有了我们的词汇索引(index_words)
,我们只需下载完整的评论:
(all_x_train,_),(all_x_valid,_) = imdb.load_data()
然后我们修改例 11.16,在我们选择的全检查列表上执行join()
(即all_x_train
或all_x_valid
),如例 11.17 所述。
示例 11.17 以字符串形式打印完整审核
' '.join(index_word[id] for id in all_x_train[0])
执行此操作将输出我们选择的评估的全文——同样,在本例中,是第一次培训评估——如图 11.14 所示。
标准化审查的长度
通过执行前面的示例 11.15,我们发现电影评论的长度存在可变性。为了运行 Keras 创建的 TensorFlow 模型,我们需要指定在训练期间将流入模型的输入的大小。这使得 TensorFlow 能够优化内存和计算资源的分配。Keras 提供了一个方便的pad_sequences()
方法,使我们能够在一行中填充和截断文本文档。这里我们用这种方法标准化我们的训练和验证数据,如例 11.18 所示。
示例 11.18 通过填充和截断标准化输入长度
x_train = pad_sequences(x_train, maxlen=max_review_length,
padding=pad_type, truncating=trunc_type, value=0)
x_valid = pad_sequences(x_valid, maxlen=max_review_length,
padding=pad_type, truncating=trunc_type, value=0)
现在,当打印评论(例如,用x_train[0:6]
或它们的长度(例如,用例子 11.15 的代码),我们看到所有的评论都有相同的长度 100(因为我们设置了max_review_length = 100
)。用类似于示例 11.16 的代码检查 x _ train[5]——它以前只有 43 个标记——我们可以观察到审查的开始被填充了 57 个PAD
标记(见图 11.15)。
密集网络
有了足够的 NLP 理论,以及我们加载和预处理的数据,我们终于准备好利用神经网络架构来根据电影评论的情感对其进行分类。例 11.19 给出了这项任务的基线密集网络模型。
示例 11.19 密集情感分类器架构
model = Sequential()
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(Flatten())
model.add(Dense(n_dense, activation='relu')) model.add(Dropout(dropout))
# model.add(Dense(n_dense, activation='relu'))
# model.add(Dropout(dropout))
model.add(Dense(1, activation='sigmoid'))
让我们一行一行地分解架构:
- 我们使用一个 Keras
Sequential()
方法来调用一个顺序模型,就像我们在本书中对所有模型所做的那样。 - 与 word2vec 一样,
Embedding()
层使我们能够从文档语料库中创建单词向量——在本例中,是 IMDb 训练数据集的 25,000 条电影评论。相对于用 word2vec(或 GloVe 等)独立创建单词向量。)正如我们在本章前面所做的,通过反向传播训练你的单词向量作为你的更广泛的 NLP 模型的一个组成部分有一个潜在的优势:单词在向量空间内被分配的位置不仅反映了单词的相似性,还反映了单词与模型的最终特定目的的相关性(例如,通过情感对 IMDb 评论的二元分类)。单词向量词汇表的大小和向量空间的维数分别由 n_unique_words 和 n_dim 指定。因为嵌入层是我们网络中的第一个隐藏层,所以我们还必须将输入层的形状传递给它:我们使用 input_length 参数来实现这一点。 - 正如在第 10 章中一样,
Flatten()
层使我们能够将多维输出(这里是来自嵌入层的二维输出)传递到一维密集层。 - 说到
Dense()
层,我们在这个架构中使用了一个由 relu 激活组成的层。 - 我们为基线模型选择了一个相当浅的神经网络架构,但是您可以通过添加更多的
Dense()
层来稍微加深它(参见注释掉的行)。/李> - 最后,因为只有两个类要分类,所以我们只需要一个输出神经元(因为,正如本章前面所讨论的,如果一个类的概率为 p,那么另一个类的概率为 1p)。这个神经元是 sigmoid,因为我们希望它输出 0 到 1 之间的概率(参见图 6.9)。
In addition to training word vectors on natural language data alone
(e.g., with word2vec or GloVe) or training them with an embedding layer
as part of a deep learning model, pretrained word vectors are also
available online.
正如使用在 ImageNet(第 10 章)中的数百万幅图像上训练的 ConvNet 一样,这种自然语言迁移学习是强大的,因为这些词向量可能已经在极大的语料库(例如,所有维基百科或英语互联网)上训练过,这些语料库提供了大量细微差别的词汇,训练自己将是昂贵的。预训练单词向量的示例可在本报告和本报告中找到。快速文本库还提供 157 种语言的子词嵌入;这些可以从 fasttext.cc 下载。
在本书中,我们不涵盖用预训练的单词向量(无论它们是下载的还是从你的深度学习模型中单独训练的,就像我们在本章前面的Word2Vec()
中所做的那样)代替嵌入层,因为你可能会喜欢如何做这一点有许多不同的排列。请看 Keras 的创造者 françois·乔莱的这个简洁的教程。
执行model.summary()
,我们发现我们相当简单的 NLP 模型有相当多的参数,如图 11.16 所示:
- 在嵌入层,320,000 个参数来自 5,000 个单词,每个单词在 64 维单词向量空间中指定一个位置(64 × 5,000 = 320,000)。
- 6,400 个值从嵌入层流出,通过展平层进入密集层:我们的每个电影评论输入由 100 个标记组成,每个标记由 64 个词向量空间坐标指定(64 × 100 = 6,400)。
- 密集隐藏层中的 64 个神经元中的每一个都从扁平化层流出的 6400 个值中的每一个接收输入,总共 64×6400 = 409600 个权重。当然,64 个神经元中的每一个都有一个偏差,这一层总共有 409,664 个参数。
- 最后,输出层的单个神经元有 64 个权重——前一层中每个神经元的激活输出一个权重——加上其偏置,总共有 65 个参数。
- 总结每一层的参数,我们总共有 730,000 个。
如例 11.20 所示,我们用一行在最近的章节中应该已经熟悉的代码来编译我们的密集情感分类器,除了——因为我们在二进制分类器中有单个输出神经元——我们使用binary_crossentropy
成本来代替我们用于多类 MNIST 分类器的categorical_crossentropy
成本。
示例 11.20 编译我们的情感分类器
model.compile(loss='binary_crossentropy', optimizer='adam',
metrics=['accuracy'])
使用示例 11.21 中提供的代码,我们创建了一个ModelCheckpoint()
对象,该对象允许我们在训练期间的每个时期后保存我们的模型参数。通过这样做,我们可以在稍后的模型评估中返回到我们选择的时期的参数,或者在生产系统中进行推断。如果output_dir
目录不存在,我们使用makedirs()
方法来创建它。
示例 11.21 在每个时期后为检查点模型参数创建对象和目录
modelcheckpoint = ModelCheckpoint(filepath=output_dir+ "/weights.{epoch:02d}.hdf5") if not os.path.exists(output_dir):
os.makedirs(output_dir) ###Insert Figure
像编译步骤一样,我们的情感分类器的模型拟合步骤(例 11.22)应该是熟悉的,也许除了我们使用回调参数传入modelcheckpoint
对象。[注意:这不是我们第一次使用回调参数。我们以前使用过这个参数,它可以接受多个不同的callbacks
的列表,向 TensorBoard 提供关于模型训练进度的数据(参见第 9 章)。
示例 11.22 拟合我们的情感分类器
model.fit(x_train, y_train,
batch_size=batch_size, epochs=epochs, verbose=1,
validation_data=(x_valid, y_valid),
callbacks=[modelcheckpoint])
如图 11.17 所示,在第二个时期,我们实现了最低的验证损失(0.349)和最高的验证准确性(84.5%)。在第三个和第四个时期,模型严重过拟合,训练集的精度远远高于验证集。到第四个时期,训练准确率达到 99.6%,而验证准确率低得多,为 83.4%。
为了更彻底地评估最佳历元的结果,我们使用 Keras load_ weights()
方法将第二个历元(weights.02.hdf5
)的参数加载回我们的模型,如例 11.23 所示。[注意:虽然该方法被称为load_weights()
,但它加载了所有模型参数,包括偏差。因为权重通常构成模型中的绝大多数参数,所以深度学习实践者通常将参数文件称为“权重”文件。Keras 的早期版本对纪元使用零索引,但是最近的版本从 1 开始索引。]
示例 11.23 加载模型参数
model.load_weights(output_dir+"/weights.02.hdf5"
然后,我们可以通过在x_valid
数据集上传递predict_proba()
方法来计算最佳历元的验证集 y_hat 值,如示例 11.24 所示。
示例 11.24 预测所有验证的 y_hat
y_hat = model.predict_proba(x_valid)
例如,使用 y_hat[0],我们现在可以看到模型对验证集中第一个电影评论的情绪的预测。对于此评论,[latex]\hat{y}[/latex] = 0.09,表明模型估计有 9%的几率评论是正面的,因此有 91%的几率是负面的。执行 y_valid[0]通知我们,此评论的[latex]\hat{y}[/latex]= 0—也就是说,它实际上是一个负面评论—因此模型的[latex]\ hat { y }[/latex]相当不错!如果你对负面评论的内容感到好奇,你可以对例 11.17 稍加修改以访问all_x_valid[0]
列表项的全文,如例 11.25 所示。
示例 11.25 打印完整的验证审查
' '.join(index_word[id] for id in all_x_valid[0])
检查单个分数可能会很有趣,但是通过查看所有的验证结果,我们可以更好地了解模型的性能。通过运行示例 11.26 中的代码,我们可以绘制所有验证[latex]\hat{y}[/latex]值的直方图。
示例 11.26 绘制验证数据[latex]\hat{y}[/latex]值的直方图
plt.hist(y_hat)
_ = plt.axvline(x=0.5, color='orange')
直方图输出如图 11.18 所示。
该图显示,该模型通常对给定评论的情绪有强烈的意见:25,000 个评论中的约 8,000 个评论(其中约 32%)被赋予小于 0.1 的[latex]\hat{y}[/latex],约 6,500 个评论(约 26%)被赋予大于 0.9 的[latex]\hat{y}[/latex]。
图 11.18 中的橙色垂直线标志着 0.5 的阈值,通过简单的准确性计算,高于该阈值的评论被认为是正面的。正如本章前面所讨论的,这样一个简单的阈值可能会产生误导,因为相对于[latex]\hat{y}[/latex]刚刚超过 0.5 的评论而言,模型预测 yˇjust be-low 0.5 的评论在情感上不会有太大差异。为了更细致地评估我们的模型作为二元分类器的性能,我们可以使用 scikit-learn 度量库中的roc_auc_score()
方法直接计算验证数据的 ROC AUC 得分,如示例 11.27 所示。
实施例 11.27 计算验证数据的 ROC AUC
pct_auc = roc_auc_score(y_valid, y_hat)*100.0
"{:0.2f}".format(pct_auc)
使用format()
方法以易读的格式打印输出,我们看到接收器工作特性曲线下的面积百分比是(相当高的)92.9%。
为了了解模型在哪里崩溃,我们可以使用示例 11.28 中的代码创建一个 y 和[latex]\hat{y}[/latex]验证集值的数据框架。
示例 11.28 创建 y 和 y 值的 ydf 数据帧
float_y_hat = [] for y in y_hat:
float_y_hat.append(y[0])
ydf = pd.DataFrame(list(zip(float_y_hat, y_valid)),
columns=['y_hat', 'y'])
用ydf.head(10)
打印得到的ydf
数据帧的前 10 行,我们看到如图 11.19 所示的输出。
像我们在示例 11.29 和 11.30 中所做的那样查询ydf
数据框架,然后通过改变示例 11.25 中的列表索引来检查这些查询表面的各个评论,您可以了解导致模型产生最大错误的评论的种类。
示例 11.29 具有高[latex]\hat{y}[/latex]分数的十个负面验证审查案例
ydf[(ydf.y == 0) & (ydf.y_hat > 0.9)].head(10)
示例 11.30 十个低[latex]\hat{y}[/latex]分数的阳性验证审查案例
ydf[(ydf.y == 0) & (ydf.y_hat > 0.9)].head(10)
在图 11.20 中提供了一个假阳性的例子——一个具有非常高的模型分数([latex]\hat{y}[/latex] = 0.97)的负面评论(y = 0),它是通过运行示例 11.29 中的代码来识别的。[注意:我们通过运行下面的代码来输出这个特定的评论——验证数据集中的第 387 个评论:' '.join(index_word[id]
for id in all_x_valid[386])
。]图 11.21 提供了一个假阴性的示例,即一个模型得分非常低([latex]\hat{y}[/latex] = 0.06)的阳性综述(y = 1),它是通过运行示例 11.30 中的代码识别的。[注:R un ' '.join(index_word[id] for id in all_x_valid[224]
)自己打印出同样的评论。]
对我们的模型进行这种事后分析,一个潜在的缺点是,我们的密集分类器不是专门用于检测可能预测电影评论情绪的序列中出现的多个标记的模式。例如,像标记对不好这样的模式很容易被模型检测出来,作为负面情绪的预测,这可能很方便。
卷积网络
如第 10 章所述,卷积层尤其擅长检测空间模式。在这一节中,我们使用它们来检测单词之间的空间模式——如不好的序列——并看看它们是否可以改善我们的密集网络在根据情感对电影评论进行分类方面的性能。这个 ConvNet 的所有代码都可以在我们的卷积情感分类器笔记本中找到。
该模型的依赖关系与我们的密集情感分类器的依赖关系相同(见示例 11.12),除了它有三个新的 Keras 层类型,如示例 11.31 中所提供的。
示例 11.31 其他 CNN 依赖项
from keras.layers import Conv1D, GlobalMaxPooling1D
from keras.layers import SpatialDropout1D
例 11.32 中提供了我们的卷积情感分类器的超参数。
示例 11.32 卷积情感分类器超参数
# output directory name:
output_dir = 'model_output/conv'
# training:
epochs = 4
batch_size = 128
# vector-space embedding:
n_dim = 64
n_unique_words = 5000
max_review_length = 400
pad_type = trunc_type = 'pre'
drop_embed = 0.2 # new!
# convolutional layer architecture:
n_conv = 256 # filters, a.k.a. kernels
k_conv = 3 # kernel length
# dense layer architecture:
n_dense = 256
dropout = 0.2
相对于来自我们的密集情感分类器的超参数(参见示例 11.13):
- 我们有一个新的、唯一的目录名(“
conv
”),用于在每个训练时期之后存储模型参数。 - 我们的时代数和批量大小保持不变。
- 我们的向量空间嵌入超参数保持不变,除了
- 我们翻了两番,达到 400 人。我们这样做是因为,尽管输入量有了相当大的增加,并且我们的隐藏层数也有所增加,但是我们的卷积分类器相对于我们的密集情感分类器来说仍然具有少得多的参数。
- 使用
drop_embed
,我们将在嵌入层中添加 dropout。
- 我们的卷积情感分类器在嵌入层之后将具有两个隐藏层:
- 具有 256 个滤波器(
n_conv
)的卷积层,每个滤波器的单个维度(长度)为 3 (k_conv
)。当在第 10 章中处理二维图像时,我们的卷积层有二维过滤器。自然语言——无论是书面语言还是口头语言——只有一个与之相关的维度(时间维度),因此本章中使用的卷积层将具有一维滤波器。 - 具有 256 个神经元(
n_dense
)和 20%脱落的密集层。
- 具有 256 个滤波器(
加载 IMDb 数据和标准化评论长度的步骤与我们的密集情感分类笔记本中的步骤相同(参见示例 11.14 和 11.18)。模型结构当然是相当不同的,并在例 11.33 中给出。
示例 11.33 卷积情感分类器架构
model = Sequential()
# vector-space embedding:
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(SpatialDropout1D(drop_embed))
# convolutional layer:
model.add(Conv1D(n_conv, k_conv, activation='relu'))
# model.add(Conv1D(n_conv, k_conv, activation='relu'))
model.add(GlobalMaxPooling1D())
# dense layer:
model.add(Dense(n_dense, activation='relu'))
model.add(Dropout(dropout))
# output layer:
model.add(Dense(1, activation='sigmoid'))
分解模型:
- 我们的嵌入层和以前是一样的,除了它现在应用了 dropout。
- 我们不再需要
Flatten()
,因为Conv1D()
层接受嵌入层输出的两个维度。 - 我们在一维卷积层中使用
relu
激活。该层有 256 个独特的过滤器,每个过滤器都可以在通过特定的三令牌序列时自由地专门激活。对于 256×398 的输出形状,256 个滤波器中的每个滤波器的激活图具有 398 的长度。[注:如第 10 章所述,当二维滤波器在图像上卷积时,如果不先填充图像,我们会丢失周边的像素。在这个自然语言模型中,我们的一维卷积过滤器的长度为 3,因此,在电影评论的最左侧,它以第二个标记为中心开始,在最右侧,它以倒数第二个标记为中心结束。因为在将电影评论送入卷积层之前,我们没有在两端填充电影评论,因此我们从两端丢失了相当于 40011 = 398 的信息。我们对这次失败并不难过。 - 如果你喜欢,欢迎你添加额外的卷积层,例如,取消第二个
Conv1D()
的注释 - 全局最大池常见于深度学习 NLP 模型中的降维。我们在这里用它把激活图从 256 × 398 压扁到 256 × 1。通过应用它,最大值计算操作仅保留了给定卷积滤波器的最大激活的幅度,并且我们丢失了滤波器可能已经输出到其 398 元素长的激活图的任何时间位置特定的信息。
- 因为来自全局最大池层的激活输出是一维的,所以它们可以被直接馈送到密集层,该密集层(再次)由 relu 神经元组成,并且应用了丢弃。
- 输出层保持不变。
- 该模型总共有 435,000 个参数(见图 11.22),比我们的密集情感分类器少几十万个。尽管如此,在每个时期,该模型将花费更长的时间来训练,因为卷积运算在计算上相对昂贵。
关于该模型架构,需要注意的一个关键事项是,卷积滤波器并不检测简单的三个一组的字。相反,他们正在检测单词向量的三元组。根据我们在第 2 章中的讨论,将离散的、一个热点的单词表示与在高维空间中逐渐模糊含义的单词向量表示进行对比(见表 2.1),本章中的所有模型都变得专门将单词的含义与评论情绪相关联——而不是仅仅将单个单词与评论情绪相关联。例如,如果网络得知标记对“不好”与负面评论相关联,那么它也应该将该对“不好”与负面评论相关联,因为好和好具有相似的含义(因此应该在词向量空间中占据相似的位置)。
编译、检查点和模型拟合步骤与我们的密集情感分类器相同(分别参见示例 11.20、11.21 和 11.22)。模型拟合过程如图 11.23 所示。具有最低验证损失(0.258)和最高验证准确度(89.6%)的时期是第三个时期。将该时期的模型参数加载回来(使用示例 11.23 中的代码,但指定了weights.03.hdf5
),然后我们为所有验证数据预测[latex]\hat{y}[/latex](与示例 11.24 中完全一样)。创建这些[latex]\hat{y}[/latex]值的直方图(图 11.24)(使用与示例 11.26 中相同的代码),我们可以直观地看到,我们的 CNN 比我们的密集网络具有更强的评论情感意见(参见图 11.18):大约有一千多个[latex]\hat{y}[/latex] < 0.1 的评论,还有几千个[latex]\hat{y}[/latex] > 0.9 的评论。计算 ROC AUC(使用示例 11.27 中的代码),我们输出了 96.12%的高分,表明 CNN 的信心没有放错地方:这是对密集网络已经高达 93%的分数的显著改进。
为顺序数据设计的网络
我们的 ConvNet 分类器优于我们的密集网络——可能在很大程度上是因为它的卷积层擅长学习预测某些结果的单词模式,例如电影评论是正面还是负面。卷积层中的过滤器往往擅长学习短序列,如三个一组的单词(回想一下,我们在示例 11.32 中设置了k = 3
),但自然语言的文档,如电影评论,可能包含更长的单词序列,当考虑在一起时,将使模型能够准确预测一些结果。为了处理像这样的长数据序列,存在一系列深度学习模型,称为递归神经网络(RNNs),其中包括专门的层类型,如长短期记忆单元(LSTMs)和门控递归单元 (GRUs)。在这一节中,我们将介绍 RNNs 的基本理论,并将它们的几种变体应用于我们的电影评论分类问题。我们还介绍了注意力——一种特别复杂的自然语言数据建模方法,为 NLP 应用程序设定了新的基准。
正如本章开始时提到的,RNN 家族,包括 LSTMs 和 GRUs,不仅非常适合处理自然语言数据,还非常适合处理任何出现在一维序列中的输入数据。这包括价格数据(例如,金融时间序列、股票价格)、销售数字、温度和发病率(流行病学)。虽然除了 NLP 之外的 RNN 应用超出了本教材的范围,但是我们在标题时间序列预测下整理了在 jonkrohn.com/resources 随着时间建模定量数据的资源。
递归神经网络
考虑下面的句子:
乔恩和格兰特正在一起写一本书。他们真的很喜欢写它。
人类的大脑可以很容易地理解第二句话中的概念。你已经知道第二句中的“他们”指的是你的作者,“它”指的是我们正在写的书。虽然这个任务对你来说很容易,但是,对一个神经网络来说却不是那么简单。
我们在上一节中构建的卷积情感分类器只能在一个单词两侧的两个单词的上下文中考虑这个单词(k_conv = 3
,如示例 11.32 所示)。在这么小的文本窗口中,神经网络没有能力评估“他们”或“它”可能指的是什么。我们人类的大脑可以做到这一点,因为我们的思想相互循环,我们重温早期的想法,以形成我们对当前环境的理解。在这一节中,我们介绍了递归神经网络的概念,它就是这样做的:它们的结构中内置了环路,允许信息随着时间的推移而持续存在。
递归神经网络(RNN)的高级结构如图 11.25 所示。在左边,紫色的线表示在网络的步骤之间传递信息的环路。正如在一个密集的网络中,每个输入都有一个神经元一样,这里的每个输入也有一个神经元。我们可以在右边更容易地观察到这一点,这里是打开的 RNN 示意图。句子中的每个单词都有一个递归模块(为了简洁起见,这里只显示了前四个单词)。[注意:这也是为什么我们必须在预处理过程中填充较短的句子:RNN 期望一个特定长度的序列,因此如果序列不够长,我们添加填充标记来弥补差异。然而,每个模块接收来自前一模块的额外输入,并且这样做时,网络能够传递来自序列中较早时间步长的信息。在图 11.25 的例子中,每个单词由 RNN 序列中不同的时间步长表示,因此网络可能知道“乔恩”和“格兰特”正在写书,从而将这些术语与序列中后来出现的单词“他们”联系起来。
从计算上来说,递归神经网络比专门的“前馈”神经网络(如我们在本书中使用的密集网络和 CNN)更复杂。如图 8.6 所示,前馈网络包括从输出层向输入层反向传播成本。如果网络包括一个递归层(如SimpleRNN
、LSTM
或GRU
),那么成本不仅要反向传播到输入层,还要反向传播到递归层的时间步长(从后面的时间步长返回到前面的时间步长)。请注意,当我们从后面的隐藏层反向传播到前面的隐藏层时,学习的梯度会消失(见图 8.8),同样,当我们从递归层中后面的时间步长反向传播到前面的隐藏层时,学习的梯度也会消失。因此,序列中较晚的时间步长比较早的时间步长在模型中有更大的影响。[注意:如果您怀疑序列的开头(例如,电影评论开头的单词)通常比结尾(评论结尾的单词)与您使用模型(情感分类)解决的问题更相关,您可以在将序列作为输入传递到网络之前反转序列。这样,在网络的循环层中,序列的开始将在结束之前反向传播。]
在喀拉斯实施 RNN
在 Keras 中,向神经网络架构添加递归层以创建 RNN 是很简单的,正如我们在我们的 RNN 情感分类器 Jupyter notebook【或互补多米诺项目中所阐述的那样。为了简洁和可读性,请注意以下代码单元在本章的所有 Jupyter 笔记本中都是相同的,包括我们已经介绍过的密集和卷积情感分类器笔记本:
- 加载依赖项(例 11.12),除了在给定的笔记本中通常有一个或两个附加的依赖项。
- 我们将分别记录这些添加内容——通常在我们介绍笔记本电脑的神经网络架构时。
- 加载 IMDb 电影评论数据(示例 11.14)。
- 标准化审查长度(示例 11.18)。
- 编译模型(例 11.20)。
- 创建
ModelCheckpoint()
对象和目录(例 11.21)。 - 拟合模型(示例 11.22)。
- 从最佳历元加载模型参数(例 11.23),关键例外是我们选择加载的特定历元根据哪个历元具有最低验证损失而变化。
- 为所有验证数据预测[latex]\hat{y}[/latex](示例 11.24)。
- 绘制[latex]\hat{y}[/latex]的直方图(例 11.26)。
- 计算 ROC AUC(例 11.27)。
变化的代码单元是那些我们:
- 设置超参数
- 设计神经网络架构
我们的 RNN 的超参数如例 11.34 所示。
示例 11.34 RNN 情感分类器超参数
# output directory name:
output_dir = 'model_output/rnn'
# training:
epochs = 16 # way more!
batch_size = 128
# vector-space embedding:
n_dim = 64
n_unique_words = 10000
max_review_length = 100 # lowered due to vanishing gradient over time pad_type = trunc_type = 'pre'
drop_embed = 0.2
# RNN layer architecture:
n_rnn = 256
drop_rnn = 0.2
相对于我们以前的情感分类器笔记本的变化是:
- 我们将训练的时期翻了两番,达到 16 个,因为在早期的时期没有出现过度适应。
- 我们将
max_review_length
降低到 100,尽管这对一个简单的 RNN 来说已经太多了。在学习的梯度完全消失之前,我们可以用 LSTM 反向传播大约 100 个时间步长(即,自然语言模型中的 100 个标记或单词)(在下一节中讨论),但是在普通的旧 RNN 中的梯度在大约 10 个时间步长之后完全消失。因此,在我们注意到这个模型的性能降低之前,max_review_length 可能会降低到小于 10。 - 对于本章中的所有 RNN 家族架构,我们尝试将单词向量词汇增加一倍,达到 10000 个令牌。这似乎为这些架构提供了改进的结果,尽管我们没有严格测试它。
- 我们设置了
n_rnn = 256
,所以我们可以说这个循环层有 256 个单元,或者,我们可以说它有 256 个单元。同样,256 个卷积过滤器使我们的 CNN 模型能够专门检测 256 个独特的单词含义三元组,43 这种设置使我们的 RNN 能够检测 256 个独特的单词含义序列,这些序列可能与评论情绪相关。[注意:“单词含义”在这里是指单词向量空间中的位置]
例 11.35 提供了我们的 RNN 模型结构。
示例 11.35 RNN 情感分类器架构
from keras.layers import SimpleRNN
model = Sequential()
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(SpatialDropout1D(drop_embed))
model.add(SimpleRNN(n_rnn, dropout=drop_rnn))
model.add(Dense(1, activation='sigmoid'))
在这个模型的隐藏层中,我们用一个 Keras SimpleRNN()
层来代替一个卷积层或一个密集层(或两者都有),它有一个 dropout 参数;因此,我们不需要在单独的代码行中添加 dropout。与将密集层放在卷积层之后不同,在递归层之后添加密集层相对不常见,因为它提供的性能优势很小。无论如何,你都可以尝试添加一个Dense()
隐藏层。
运行这一模型的结果(在我们的 RNN 情感分类器笔记本中完整显示)并不令人鼓舞。我们发现,训练损失在前六个时期稳步下降后,在那之后开始跳跃。这表明,即使在训练数据中,模型也很难学习模式,相对于验证数据,它应该很容易做到这一点。事实上,到目前为止,本书中适合的所有模型都有训练损失,可靠地衰减了一个又一个时期。
随着培训损失的反弹,验证损失也在反弹。我们在第七个时期观察到最低的验证损失(0.504),这对应于 77.6%的验证准确性和 84.9%的 ROC AUC。对于情感分类器模型来说,这三个指标都是最差的。这是因为,正如我们在本节前面提到的,在梯度减小到参数更新小到可以忽略不计之前,rnn 只能反向传播大约 10 个时间步长。因此,简单的 rnn 在实践中很少使用:更复杂的递归层类型,如 LSTMs,可以反向传播约 100 个时间步长,更为常见。[注意:我们能想到的简单 RNN 实用的唯一情况是,您的序列只有 10 个或更少的连续时间步长的信息,这些信息与您用模型解决的问题相关。对于某些时间序列预测模型,或者如果您的数据集中只有很短的自然语言字符串,可能会出现这种情况。]
长短期记忆单位
如前一节末尾所述,如果相关信息和需要它的上下文之间的空间很小(少于 10 个时间步长),简单的 rnn 就足够了;然而,如果任务需要更广泛的背景(在 NLP 任务中经常是这样),有另一种循环层类型非常适合它:长短期记忆单位,或 LSTMs。
LSTMs 是由塞普·霍克雷特和 jürgen·施密德胡伯在 1997 年提出的[注:霍克雷特,s .,&施密德胡伯,J. (1997)。长短期记忆。神经计算,9,1735-80。]但如今它们在 NLP 深度学习应用中的应用比以往任何时候都更广泛。LSTM 层的基本结构与图 11.25 中的简单重现层相同。
LSTMs 接收来自数据序列的输入(例如,来自自然语言文档的特定标记),并且它们还接收来自序列中的前一时间点的输入。不同的是,在一个简单的递归层(例如,Keras 中的SimpleRNN()
)的每个细胞内,你会发现一个单一的神经网络激活函数,如双曲正切函数,它转换 RNN 细胞的输入,以生成其输出。相比之下,LSTM 层的细胞包含更复杂的结构,如图 11.26 所示。
这个示意图可能会让人望而生畏,不可否认的是,我们同意,对 LSTM 细胞内部的每个组件的完整的一步一步的分解对于本书来说是不必要的详细。[注:要想彻底了解 LSTM 细胞,我们推荐克里斯托弗·奥拉的高度可视化的《解释者》,这本书在 bit.ly/colahLSTM.大学有售]也就是说,有几个关键点我们还是应该在这里涉及一下。第一个是横跨 LSTM 单元顶部的单元状态。注意,细胞状态不通过任何非线性激活函数。事实上,细胞状态只经历了一些微小的线性转换,但除此之外,它只是从一个细胞传递到另一个细胞。这两个线性变换(乘法和加法运算)是 LSTM 层中的像元可以向像元状态添加信息的点,这些信息将被传递到该层中的下一个像元。在任一情况下,在信息被添加到单元状态之前,都有一个 sigmoid 激活(在图中由σ表示)。因为 sigmoid 激活产生 0 和 1 之间的值,所以这些 sigmoid 充当“门”,决定是否将新信息(来自当前时间步长)添加到单元状态。
当前时间步的新信息是当前时间步的输入和前一时间步的隐藏状态的简单连接。这种连接有两次机会被合并到细胞状态中,要么是线性的,要么是在非线性 tanh 激活之后,无论是哪种情况,都是这些 sigmoid 门决定信息是否被合并。
在 LSTM 确定了将什么信息添加到单元状态之后,另一个 sigmoid 门决定是否将来自当前输入的信息添加到最终单元状态,并且这产生当前时间步长的输出。请注意,在不同的名称(“隐藏状态”)下,输出也被发送到下一个 LSTM 模块(它代表序列中的下一个时间步),在那里它与下一个时间步的输入组合,再次开始整个过程,并且(与隐藏状态一起)最终的单元状态也被发送到代表下一个时间步的模块。
我们知道这可能很难处理。另一种提取 LSTM 含量的方法是:
- 通过给定 LSTM 单元中的每个时间步长,单元状态使得信息能够沿着序列的长度持续存在。这是 LSTM 最长的记忆。
- 隐藏状态类似于简单 RNN 中的循环连接,代表 LSTM 的短期记忆。
- 每个模块代表数据序列中的特定点(例如,来自自然语言文档的特定标记)。
- 在每个时间步长,做出关于序列中特定时间步长的信息是否与局部(隐藏状态)和全局(单元状态)上下文相关的几个决定(使用那些 sigmoid 门)。
- 前两个 sigmoid 门确定来自当前时间步长的信息是否与全局上下文(单元状态)相关,以及它将如何组合到该流中。
- 最终的 sigmoid 门确定来自当前时间步长的信息是否与本地上下文相关(即,它是否被添加到隐藏状态,其兼作当前时间步长的输出)。
我们建议花点时间重新考虑图 11.26,看看你是否能理解信息是如何通过 LSTM 细胞的。如果你记住,乙状结肠门决定信息是否通过,这个任务应该更容易。无论如何,本节的主要要点是:
- 简单的 RNN 单元在时间步长之间只传递一种类型的信息(隐藏状态),并且只包含一个激活函数。
- LSTM 细胞明显更复杂:它们在时间步长之间传递两种类型的信息(隐藏状态和细胞状态),并包含五种激活功能。
使用 Keras 实现 LSTM
尽管有额外的计算复杂性,正如我们在 LSTM 情感分类器笔记本中展示的,用 Keras 实现 LSTMs 是轻而易举的事情。如例 11.36 所示,我们为 LSTM 选择了与简单 RNN 相同的超参数,除了:
- 我们更改了输出目录名。
- 我们将变量名更新为
n_lstm
和drop_lstm
。 - 我们将训练的历元数减少到 4,因为 LSTM 比简单的 RNN 更早地开始过度适应训练数据。
示例 11.36 LSTM 情感分类器超参数
# output directory name:
output_dir = 'model_output/LSTM'
# training:
epochs = 4
batch_size = 128
# vector-space embedding:
n_dim = 64
n_unique_words = 10000
max_review_length = 100
pad_type = trunc_type = 'pre'
drop_embed = 0.2
# LSTM layer architecture:
n_lstm = 256
drop_lstm = 0.2
我们的 LSTM 模型架构也和我们的 RNN 架构一样,只是我们把SimpleRNN()
层换成了LSTM()
;见例 11.37。
示例 11.37 LSTM 情感分类器架构
from keras.layers import LSTM
model = Sequential()
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(SpatialDropout1D(drop_embed))
model.add(LSTM(n_lstm, dropout=drop_lstm))
model.add(Dense(1, activation='sigmoid'))
我们的 LSTM 情感分类器笔记本中提供了训练 LSTM 的完整结果。总之,训练损失随着时代的推移而稳步下降,这表明模型拟合比我们简单的 RNN 进行得更常规。然而,结果并不是一帆风顺的。尽管它相对复杂,我们的 LSTM 只执行以及我们的基线密集模型。验证损失最小的 LSTM 纪元是第二个纪元(0.349);它的验证准确率为 84.8%,ROC AUC 为 92.8%。
双向 LSTMs
双向 lstm(或简称为 Bi-lstm)是标准 lstm 的巧妙变体。后者涉及仅在一个方向上的反向传播(通常在时间步长上向后,例如从电影评论的结尾向开头),而双向 LSTMs 涉及在一些一维输入上在两个方向上的反向传播(在时间步长上向后和向前)。这种额外的反向传播使计算复杂度加倍,但是如果准确性对您的应用程序至关重要,那么它通常是值得的:Bi-lstm 是现代 NLP 应用程序中的一种流行选择,因为它们能够在输入文档中的给定标记之前和之后学习模式,这有助于实现高性能的模型。
将我们的 LSTM 体系结构(例 11.37)转换成双 LSTM 体系结构是没有痛苦的。我们只需要在Bidirectional()
包装器中包装我们的LSTM()
层,如例 11.38 所示。
示例 11.38 双向 LSTM 情感分类器架构
from keras.layers import LSTM
from keras.layers.wrappers import Bidirectional # new!
model = Sequential()
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(SpatialDropout1D(drop_embed))
model.add(Bidirectional(LSTM(n_lstm, dropout=drop_lstm)))
model.add(Dense(1, activation='sigmoid'))
从 LSTM 到双 LSTM 的直接转换产生了巨大的性能收益,正如模型拟合的结果所示(在我们的双 LSTM 情感分类器笔记本中提供了完整的信息)。具有最低验证损失(0.331)的纪元是第四个,其验证准确率为 86.0%,ROC AUC 为 93.5%,使其成为我们迄今为止第二好的模型,仅次于我们的卷积架构。
堆叠递归模型
堆叠多个 RNN 家族层(无论是SimpleRNN()
、LSTM
还是其他类型)并不像在 Keras 中堆叠密集层或卷积层那样简单,尽管这并不困难:它只需要在定义层时指定一个额外的参数。
正如我们所讨论的,递归图层接受有序的输入序列。这些层的循环性质来自于它们对序列中每个时间步长的处理,以及将隐藏状态作为输入传递给序列中的下一个时间步长。在到达序列中的最终时间步长时,循环层的输出是最终隐藏状态。
所以为了堆叠循环层,我们使用参数return_sequences=True
。这要求递归层返回层序列中每个步骤的隐藏状态。结果输出现在有三个维度,与输入序列的维度相匹配。递归层的默认行为是只将最终隐藏状态传递给下一层。如果我们将这些信息传递到一个密集的层,这种方式非常有效。然而,如果我们希望网络中的后续层是另一个循环层,那么该后续循环层必须接收一个序列作为其输入。因此,为了将来自序列中所有单个时间步长的隐藏状态数组(而不是只有单个最终隐藏状态值)传递给这个后续的递归层,我们将可选的return_sequences
参数设置为True
。[注意:还有一个 return_state 参数(和 return_sequences 一样,默认为 False)要求网络除了返回最终的隐藏状态之外,还要返回最终的单元格状态。这个可选参数不经常使用,但是当我们想要用另一个层的单元状态初始化一个循环层的单元状态时,它很有用,就像我们在“编码器-解码器”模型中所做的那样(在下一节中介绍)
为了观察这一点,我们来看看例 11.39 中所示的双层双 LSTM 模型。(注意,在这个例子中,我们仍然保留最终递归层的缺省值return_sequences=False
,以便仅返回这个最终递归层的最终隐藏状态,用于网络中的进一步下游。)
示例 11.39 堆叠递归模型架构
from keras.layers import LSTM
from keras.layers.wrappers import Bidirectional
model = Sequential()
model.add(Embedding(n_unique_words, n_dim,
input_length=max_review_length))
model.add(SpatialDropout1D(drop_embed))
model.add(Bidirectional(LSTM(n_lstm_1, dropout=drop_lstm,
return_sequences=True))) # new!
model.add(Bidirectional(LSTM(n_lstm_2, dropout=drop_lstm)))
model.add(Dense(1, activation='sigmoid'))
从本书第一章开始,你已经多次发现,神经网络模型中的附加层可以使它学习越来越复杂和抽象的表示。在这种情况下,由辅助双 LSTM 层促成的抽象转化为性能增益。堆叠的 Bi-LSTM 以显著的优势胜过其非堆叠的表亲,其 ROC AUC 为 94.9%,验证准确性在其最佳时期为 87.8%(第二,其验证损失为 0.296)。完整的结果在我们的堆栈式 Bi LSTM 情感分类器笔记本中提供。
尽管我们的堆叠式双 LSTM 架构比我们的卷积架构复杂得多,尽管我们的堆叠式双架构专为处理自然语言等顺序数据而设计,但其性能仍落后于我们的 ConvNet 模型的精度。也许一些超参数实验和微调会产生更好的结果,但最终我们的假设是,因为 IMDb 电影评论数据集如此之小,我们的 LSTM 模型没有机会展示它们的潜力。我们认为,更大的自然语言数据集将有助于在与 LSTM 层相关的许多时间步长上进行有效的反向传播。[注意:如果你想自己测试我们的假设,我们在第 14 章提供了适当的情感分析数据集建议。]
RNNs 家族中 LSTM 的一个亲戚是门控循环单位(GRU)。gru 的计算强度略低于 lstm,因为它们仅涉及三个激活函数,但它们的性能通常接近 lstm 的性能。如果多一点计算能力对你来说不是一个障碍,我们认为选择 GRU 而不是 LSTM 没有什么优势。如果您有兴趣尝试 Keras 中的 GRU,只需导入 GRU()图层类型并将其放入模型架构中即可,否则您可能需要放置 LSTM()图层。查看我们的 GRU 情感分类器笔记本,获取实际操作示例。[注:Cho,k .等人(2014 年)。使用统计机器翻译的 RNN 编码器-解码器学习短语表示。arXiv:1406.1078。]
Seq2seq 和注意
涉及所谓的序列到序列(seq 2 seq;发音为“查找到查找”)模型接受一个输入序列并生成一个输出序列作为它们的乘积。神经机器翻译 (NMT)是 seq2seq 模型的典型类别,谷歌翻译的机器翻译算法是 NMT 在生产系统中使用的一个例子。【注:谷歌翻译自 2016 年起纳入 NMT。你可以在 bit.ly/translateNMT.了解更多信息]
NMTs 由一个编码器-解码器结构组成,其中编码器处理输入序列,解码器生成输出序列。编码器和解码器都是 RNN,因此在编码步骤中存在隐藏状态,该隐藏状态在 RNN 的单元之间传递。在编码阶段结束时,最终的隐藏状态被传递给解码器;这个最终状态可以被称为“上下文”这样,解码器以输入序列中正在发生的内容开始。尽管这个想法在理论上是合理的,但是上下文常常是一个瓶颈:模型很难处理真正长的序列,因此上下文失去了它的影响力。
注意力是为了克服与上下文相关的计算瓶颈而开发的。[注:Bahdanau 等人(2014 年)。通过联合学习对齐和翻译的神经机器翻译。arXiv:1409.0473】。简而言之,我们将隐藏状态的完整序列传递给解码器,而不是将单个隐藏状态向量(最后一个)从编码器传递给解码器。这些隐藏状态中的每一个都与输入序列中的单个步骤相关联,尽管解码器可能需要来自输入中多个步骤的上下文来告知其在解码期间任何给定步骤的行为。为了实现这一点,对于序列中的每一步,解码器计算来自编码器的每个隐藏状态的分数。每个编码器隐藏状态乘以其分数的 softmax。[注意:回想一下第 6 章,softmax 函数采用一个实数向量,并生成一个概率分布,其类别数与输入向量相同。]
这有助于放大最相关的上下文(它们会有较高的分数,因此有较高的 softmax 概率),同时屏蔽不相关的上下文;本质上,注意力对给定时间步长的可用上下文进行加权。加权的隐藏状态被求和,并且这个新的上下文向量被用于预测解码器序列中每个时间步长的输出。
按照这种方法,模型有选择地检查它所知道的关于输入序列的信息,并且只使用必要的相关信息来通知输出。是关注整个句子最相关的元素!如果这本书专门讨论 NLP,我们至少会有一章讨论 seq2seq 和注意力。就目前情况而言,我们必须让您来进一步探索这些技术,这些技术提高了许多 NLP 应用程序的性能。
自然语言处理中的迁移学习
机器视觉从业者多年来一直受益于已经在大型、丰富的数据集上进行了预训练的细微差别模型的现成可用性。正如第 10 章末尾的“迁移学习”一节所述,临时用户可以下载具有预训练权重的模型架构,并快速将其特定的视觉应用扩展到最先进的模型。最近,这种迁移学习也很容易应用于 NLP。[注意:当我们在本章前面介绍 Keras Embedding()层时,我们谈到了单词向量的迁移学习。本节涵盖的迁移学习方法(ULMFiT、ELMo 和 BERT)在精神上更接近于机器视觉的迁移学习,因为(类似于由深层 CNN 表示的分层视觉特征;见图 1.17)它们允许自然语言元素的层次化表示(例如,子词、单词和上下文,如图 2.9 所示)。相比之下,单词向量没有等级;它们只捕捉语言的单词层次。]
首先是 ULMFiT(通用语言模型微调),其中工具被描述和开源,使其他人能够使用模型在预训练期间学习的很多东西。[注:霍华德,j .,和鲁德,S. (2018)。用于文本分类的通用语言模型微调。arXiv:1801.06146]通过这种方式,可以根据特定任务的数据对模型进行微调,从而需要更少的训练时间和更少的数据来获得高精度的结果。
此后不久,ELMo(来自语言模型的嵌入)被公之于众。【注:彼得斯,M.E .等人(2018)。深层语境化的词语表达。arXiv:1802.05365。]在本章介绍的标准单词向量的更新中,单词嵌入不仅依赖于单词本身,还依赖于单词出现的上下文。ELMo 不是为字典中的每个单词嵌入一个固定的单词,而是在为每个单词分配特定的嵌入之前查看句子中的每个单词。ELMo 模型是在一个非常大的语料库上进行预训练的;如果您必须自己训练它,它可能会占用您的计算资源,但是您现在仍然可以在自己的 NLP 模型中使用它作为一个组件。
我们要提到的最后一个迁移学习开发是来自 Google 的 BERT(来自 transformers 的双向编码器表示)的发布。[注:Devlin,j .等人(2018 年)。BERT:用于语言理解的深度双向转换器的预训练。arXiv: 0810.04805。]与 ULMFiT 和 ELMo 相比,针对特定 NLP 任务调整的预训练 BERT 模型可能更有助于在广泛的应用中实现新的最先进的基准,同时需要更少的训练时间和更少的数据。
非顺序架构:Keras 功能 API
为了解决给定的问题,有无数种方法可以将我们在本书中已经讨论过的层类型重新组合,以形成深度学习模型架构。例如,参见我们的conv·LSTM 堆栈情感分类器笔记本,其中我们特别创造性地设计了一个模型,该模型涉及一个卷积层将其激活传递到一个双 LSTM 层。57 然而,到目前为止,我们的创造力受到了我们使用 Keras Sequential()
模型的限制,该模型要求每一层直接流入下一层。
虽然顺序模型构成了深度学习模型的绝大部分,但有时非顺序架构——允许无限的模型设计可能性,并且通常更复杂——可能是有保证的。58 在这种情况下,我们可以利用 Keras functional API ,它利用模型类而不是我们在本书中迄今为止使用的顺序模型。
作为一个非顺序架构的例子,我们决定重复使用我们性能最高的情感分类器——卷积模型,看看我们能否从众所周知的柠檬中挤出更多的果汁。如图 11.27 所示,我们的想法是有三个并行的卷积层流,每个卷积层从一个Embedding()
层接收字向量。
在我们的卷积情感分类器笔记本中,这些流中的一个将具有三个令牌的过滤器长度。其中一个过滤器的长度为 2,因此它将专门学习似乎与将电影评论分类为积极或消极情绪相关的词向量对。第三个卷积流将具有四个令牌的过滤器长度,因此它将专门检测单词含义的相关四元组。
我们的三卷积流模型的超参数在示例 11.40 以及我们的多 ConvNet 情感分类器 Jupyter 笔记本【或互补多米诺项目中提供。
示例 11.40 多 ConvNet 情感分类器超参数
# output directory name:
output_dir = 'model_output/multiconv'
# training:
epochs = 4
batch_size = 128
# vector-space embedding:
n_dim = 64
n_unique_words = 5000
max_review_length = 400
pad_type = trunc_type = 'pre'
drop_embed = 0.2
# convolutional layer architecture:
n_conv_1 = n_conv_2 = n_conv_3 = 256
k_conv_1 = 3
k_conv_2 = 2
k_conv_3 = 4
# dense layer architecture:
n_dense = 256
dropout = 0.2
新的超参数与三个卷积层相关联。所有三个卷积层都有 256 个滤波器,但如图 11.27 所示,这些层形成并行流,每个层都有一个唯一的滤波器长度(k)
,范围从 2 到 4。
例 11.41 中提供了我们的多 ConvNet 模型架构的 Keras 代码。
示例 11.41 多 ConvNet 情感分类器架构
from keras.models import Model
from keras.layers import Input, concatenate
# input layer:
input_layer = Input(shape=(max_review_length,),
dtype='int16', name='input')
# embedding:
embedding_layer = Embedding(n_unique_words, n_dim,
name='embedding')(input_layer)
drop_embed_layer = SpatialDropout1D(drop_embed,
name='drop_embed')(embedding_layer)
# three parallel convolutional streams:
conv_1 = Conv1D(n_conv_1, k_conv_1,
activation='relu', name='conv_1')(drop_embed_layer)
maxp_1 = GlobalMaxPooling1D(name='maxp_1')(conv_1)
conv_2 = Conv1D(n_conv_2, k_conv_2,
activation='relu', name='conv_2')(drop_embed_layer)
maxp_2 = GlobalMaxPooling1D(name='maxp_2')(conv_2)
conv_3 = Conv1D(n_conv_3, k_conv_3,
activation='relu', name='conv_3')(drop_embed_layer)
maxp_3 = GlobalMaxPooling1D(name='maxp_3')(conv_3)
# concatenate the activations from the three streams:
concat = concatenate([maxp_1, maxp_2, maxp_3])
# dense hidden layers:
dense_layer = Dense(n_dense,
activation='relu', name='dense')(concat)
drop_dense_layer = Dropout(dropout, name='drop_dense')(dense_layer)
dense_2 = Dense(int(n_dense/4),activation='relu', name='dense_2')(drop_dense_layer)
dropout_2 = Dropout(dropout, name='drop_dense_2')(dense_2)
# sigmoid output layer:
predictions = Dense(1, activation='sigmoid', name='output')(dropout_2)
# create model:
model = Model(input_layer, predictions)
如果您以前没有见过 Keras 模型类,这种架构可能看起来有点令人担忧,但是当我们在这里逐行分解它时,它应该会失去它可能具有的任何令人生畏的方面:
- 使用
Model
类,我们独立地指定Input()
层,而不是将其指定为第一个隐藏层的 shape 参数。我们明确指定了数据类型(dtype
):16 位整数(int16
)的范围可以达到 32,767,这将容纳我们输入的单词的最大索引。59 与该模型中的所有层一样,我们指定了一个可识别的名称参数,这样当我们稍后打印该模型时(使用model.summary()
)将很容易理解所有的内容。 - 每一层都被赋予一个唯一的变量名,如
input_layer
、embedding_layer
和conv_2
。我们将使用这些变量名来指定模型中的数据流。 - 使用 Model 类最值得注意的方面是任何层调用后第二对括号中的变量
name
,使用函数式编程语言的开发人员对此会很熟悉。 - 这指定哪个层的输出流入给定层。比如
embedding_layer
的第二组括号中的(input_layer
)表示输入层的输出流入嵌入层。 Embedding()
和SpatialDropout1D
层采用本章前面相同的参数。SpatialDropout1D
层的输出(带有一个名为drop_embed_layer
的变量)是三个独立的并行卷积层的输入:conv_1, conv_2, and conv_3
。- 如图 11.27 所示,三个卷积流中的每一个都包括一个 Conv1D 层(具有唯一的
k_conv
滤波器长度)和一个GlobalMaxPooling1D
层。 - 由三个卷积流的每一个的
GlobalMaxPooling1D
层输出的激活由concatenate()
层连接成激活值的单个阵列,该阵列接受输入列表([maxp_1, maxp_2, maxp_3
])作为其唯一的参数。 - 级联的卷积流激活作为输入提供给两个
Dense()
隐藏层,每个隐藏层都有一个与之相关联的Dropout()
层。(根据n_dense/4
的说法,第二个致密层的神经元数量是第一个致密层的四分之一。) - 由 sigmoid 输出神经元([latex]\hat{y}[/latex])输出的激活被分配给变量名预测。
- 最后,模型类通过两个参数将模型的所有层联系在一起:输入层的变量名(即
input_layer
)和输出层的变量名(即predictions
)。
我们精心设计的并行网络架构最终为我们提供了一个适度的能力提升,使我们在本章中获得了性能最佳的情感分类器(见表 11.6)。正如我们在 Multi ConvNet 情感分类器笔记本中详细描述的那样,最低的验证损失出现在第二个时期(0.262),这个时期的验证准确率为 89.4%,ROC AUC 为 96.2%,比我们的Sequential
卷积模型好 0.1%。
摘要
在这一章中,我们讨论了预处理自然语言数据的方法、从自然语言语料库中创建单词向量的方法,以及计算接收机工作特性曲线下面积的过程。在本章的后半部分,我们将这些知识应用于各种深度学习 NLP 模型的实验,以将电影评论分为好评或差评。其中一些模型涉及您在前面章节中熟悉的层类型(即密集层和卷积层),而后面的模型涉及 RNN 家族的新层类型(LSTMs 和 GRUs),并且在本书中首次涉及非顺序模型架构。
表 11.6 总结了我们的情感分类实验的结果。我们假设,如果我们的自然语言数据集更大,双 LSTM 架构可能会优于卷积架构。
Domino 编辑提示:我们已经将“脚注”嵌入到叙述中,以增加在线可读性。**