机器学习的数据结构。第 2 部分:构建知识图。
在能够开发数据结构之前,我们需要构建一个知识图。在这篇文章中,我将建立如何创建它的基础,在下一篇文章中,我们将练习如何做到这一点。Part 1 是这里的,part 1-b 是这里的。
介绍
在本系列的最后一篇文章中:
语义学的新进展如何帮助我们更好地进行机器学习。
towardsdatascience.com](/the-data-fabric-for-machine-learning-part-1-2c558b7035d7) [## 机器学习的数据结构。第 1-b 部分:图上的深度学习。
图形的深度学习日益重要。在这里,我将展示思考机器的基础…
towardsdatascience.com](/the-data-fabric-for-machine-learning-part-1-b-deep-learning-on-graphs-309316774fe7)
我一直在笼统地谈论数据结构,并给出了数据结构中机器学习和深度学习的一些概念。并给出了我对数据结构的定义:
数据结构是支持公司所有数据的平台。它是如何被管理、描述、组合和普遍访问的。该平台由一个 企业知识图 组成,创建一个统一的数据环境。
如果你看一下定义,它说数据结构是由一个企业知识图形成的。因此,我们更好地知道如何创建和管理它。
目标
一般
建立知识图谱理论和构建的基础。
细节
- 解释与企业相关的知识图的概念。
- 给出一些关于建立成功的企业知识图的建议。
- 展示知识图表的例子。
主要理论
数据结构中的结构是从知识图构建的,为了创建知识图,你需要语义和本体来找到一种链接数据的有用方法,这种方法可以唯一地识别和连接具有常见业务术语的数据。
第一节。什么是知识图?
https://medium.com/@sderymail/challenges-of-knowledge-graph-part-1-d9ffe9e35214
知识图由数据和信息的集成集合组成,其中还包含不同数据之间的大量链接。
这里的关键是,在这个新模型**下,我们不是在寻找可能的答案,而是在寻找答案。**我们想要事实——那些事实来自哪里并不重要。这里的数据可以代表概念、物体、事物、人,实际上是你脑海中的任何东西。图表填充了概念之间的关系和联系。
在这种情况下,我们可以向我们的数据湖提出这个问题:
这里存在什么?
我们在不同的地方。一个有可能建立一个框架来研究数据及其与其他数据的关系的领域。在知识图中,以特定形式的本体表示的信息可以更容易地被自动化信息处理访问,如何最好地做到这一点是像数据科学这样的计算机科学中的一个活跃的研究领域。
本体语言中的所有数据建模语句(以及其他一切)和数据的知识图世界本质上都是增量的。事后增强或修改数据模型可以很容易地通过修改概念来实现。
使用知识图,我们正在构建的是一种人类可读的数据表示,它唯一地标识数据并将其与常见的业务术语联系起来。这个“层”帮助最终用户自主、安全、自信地访问数据。
还记得这张图片吗?
我之前提出过,数据结构中的洞察可以被认为是 it 中的一个凹痕。发现这种洞察力是什么的自动过程,就是机器学习。
但是这个面料是什么?是知识图形成的对象。就像在爱因斯坦的相对论中,织物是由连续体(还是离散体)构成的?在这里,当你创建一个知识图时,结构就建立起来了。
为了构建知识图,你需要关联数据。关联数据的目标是以这样一种方式发布结构化数据,即它可以很容易地被消费并与其他关联数据和本体相结合,作为我们可以连接实体并理解它们的关系的方式。
第二节。创建成功的企业知识图
https://www.freepik.com/free-vector/real-estate-development-flat-icon_4167283.htm
不久前,Sebastien Dery 写了一篇关于知识图表挑战的有趣文章。这里你可以看看:
从弦乐到事物——导论
medium.com](https://medium.com/@sderymail/challenges-of-knowledge-graph-part-1-d9ffe9e35214)
来自 cambridgesemantis.com的伟大博客
引言这一系列课程是对 RDF 的介绍,RDF 是语义网的核心数据模型,也是
www.cambridgesemantics.com](https://www.cambridgesemantics.com/blog/semantic-university/learn-rdf/)
还有更多资源,有一个概念我甚至没有在任何文章中提到过,但是非常重要,就是三元组的概念:主语、宾语、谓语(或者实体-属性-值)。通常,当您研究三元组时,它们实际上意味着资源描述框架(RDF)。
RDF 是三种基本语义 Web 技术之一,另外两种是 SPARQL 和 OWL。RDF 是语义网的数据模型。
注意:哦,顺便说一句,几乎所有这些概念都伴随着万维网语义的新定义而来,但是我们将把它用于一般的知识图。
我不会在这里给出一个完整的框架描述,但是我会给你一个他们如何工作的例子。请记住,我这样做是因为这是我们开始构建本体、连接数据和知识图表的方式。
让我们来看一个例子,看看这个三元组是什么。这与塞巴斯蒂安的例子密切相关。
我们将以字符串“geoffrey hinton”开始。
Here we have a simple string that represents first edge, the thing I want to know more about
现在开始构建一个知识图谱,首先系统识别出这个字符串实际上指的是 Geoffrey Hinton 这个人。然后它会识别与那个人相关的实体。
Then we have some entities that are related to Geoffrey but we don’t know what they are yet.
顺便说一句,这是杰弗里·辛顿,如果你不认识他的话:
然后系统将开始为这些关系命名:
Now we have named relationships where we know what type of connection we have for our main entity.
这个系统可以在一段时间内找到连接的连接,从而为我们的“搜索字符串”创建一个代表不同关系的巨大图表。
为了做到这一点,知识图使用三元组。像这样:
To have a triple we need a subject and object, and a predicate linking the two.
所以你可以看到我们有与对象 <研究者>相关的主语 < Geoffrey Hinton >由谓语 <构成>。这对我们人类来说可能听起来很容易,但需要一个非常全面的框架来用机器做到这一点。
这是知识图形成的方式,也是我们使用本体和语义链接数据的方式。
那么,我们需要什么来创建一个成功的知识图表呢?剑桥语义学的 Partha Sarathi 写了一篇关于这个的博客。你可以在这里阅读:
自从谷歌在 2012 年通过一个关于增强网络搜索的流行博客将知识图表主流化以来,企业已经…
blog.cambridgesemantics.com](https://blog.cambridgesemantics.com/creating-a-successful-enterprise-knowledge-graph?utm_campaign=data%20fabric%20drip%20campaign%202019&utm_source=hs_automation&utm_medium=email&utm_content=69101454&_hsenc=p2ANqtz-9BB7227QOhvpzRuILO6HfQFdI4PR1o-4SfjbxqhPYv3rlfuL27w3y9AKEfZ3cs3cbEFc4hmDnnCeu6heguyt8AwCwtcw&_hsmi=69101454)
总而言之,他说我们需要:
- **设想 it 的人:**你需要具备某种形式的业务关键主题专业知识和技术的人。
- 数据多样性和可能的大量数据:企业知识图的价值和采用规模与它所包含的数据的多样性成正比。
- 构建知识图的好产品 : 知识图需要治理良好、安全、易于连接到上游和下游系统、可大规模分析,并且通常是云友好的。因此,用于创建现代企业知识图的产品需要针对自动化进行优化,支持各种输入系统的连接器,向下游系统提供基于标准的数据输出,快速分析任何数量的数据,并使治理对用户友好。
您可以在此阅读更多信息:
企业知识图正在帮助公司连接他们复杂的数据源。有了 Anzo,您可以设计、构建…
info.cambridgesemantics.com](https://info.cambridgesemantics.com/build-your-enterprise-knowledge-graph)
第三节。知识图表示例
谷歌:
谷歌基本上是一个巨大的知识(有更多的补充)图,他们创造了可能是最大的数据结构。谷歌拥有数十亿个事实,包括数百万个对象的信息和关系。并允许我们搜索他们的系统以发现其中的洞见。
在这里,您可以了解更多信息:
LinkedIn:
我最喜欢的社交网络 LinkedIn 有一个巨大的知识图谱库,它建立在 LinkedIn 上的“实体”之上,如成员、工作、头衔、技能、公司、地理位置、学校等。这些实体以及它们之间的关系构成了专业世界的本体。
洞察有助于领导者和销售人员做出商业决策,并提高 LinkedIn 会员的参与度:
https://engineering.linkedin.com/blog/2016/10/building-the-linkedin-knowledge-graph
记住,LinkedIn(和几乎所有的)知识图谱需要随着新成员注册、新职位发布、新公司、技能和头衔出现在成员档案和职位描述中等而扩展。
您可以在此阅读更多信息:
作者:齐河,陈必忠,迪帕克·阿加瓦尔
engineering.linkedin.com](https://engineering.linkedin.com/blog/2016/10/building-the-linkedin-knowledge-graph)
金融机构知识图谱:
Conceptual model to harmonize data from diverse sources and to create governed data sets for business use case consumption.
在 Marty Loughlin 的这篇文章中,他展示了一个 Anzo 平台可以为银行做什么的例子,在这里你可以看到这项技术不仅与搜索引擎相关,还可以处理不同的数据。
在那里,他展示了知识图表如何帮助这类机构:
- 用于分析和机器学习的替代数据
- 利率互换风险分析
- 贸易监督
- 欺诈分析
- 特征工程和选择
- 数据迁移
还有更多。去看看。
结论
为了创建一个知识图,你需要语义和本体来找到一个有用的方法来链接你的数据,唯一地识别和连接数据和普通的业务术语,从而构建数据结构的底层结构。
当我们构建知识图时,我们需要使用本体和语义形成三元组来链接数据。此外,知识图表的制作基本上取决于三件事:设想它的人、数据多样性和构建它的好产品。
我们周围有许多我们甚至不知道的知识图表的例子。世界上大多数成功的公司都在实施和迁移他们的系统,以构建数据结构,当然还有其中的所有东西。
数据在艺术里!
利用颜色、形状和涂鸦来理解软数据和小数据
几周前,我让我的朋友和熟人填写了一份调查。我问的问题不一定会在谈话中出现,但却揭示了一个人性格的有趣细节。我喜欢做这个活动,因为在分析和可视化调查结果后,我觉得我比以前更了解每一个人。
我想集体看看这些结果,并对我们这些年轻的千禧一代的想法做一个快照。为了实现这一点,我决定以不同的方式来回答不同的问题,从而将本次调查的结果可视化。以下文章中的所有图片都可以在这里找到。
1.有哪些受欢迎的偏好?
我从一个简单的条形图开始,来理解不同的选择如何在整个组中进行比较。这是一种简单而有效的方法,可以直观地显示每个问题的热门选择。
2.个人喜好有哪些?
为了回答这个问题,我从 Giorgia Lupi 和她的工作室在创建数据画像方面的工作以及她诱导数据人文主义的哲学中获得了灵感。
假设有 38 个人,其中一些人有相同的名字或姓氏,需要一些排列来为每个人生成一个唯一的标识符。我选定了姓和名的组合。
1ˢᵗ姓氏的字母+ 2ⁿᵈ名字的字母+ 3ʳᵈ姓氏的字母+ 4ᵗʰ名字的字母
比如我的名字,Ruta Gokhale 就被编码为 GUKA。
通过这些数据画像,我试图突出个人偏好,同时也展示个人与整个群体相比如何。我意识到,将个性融入数据会使数据更丰富,更容易理解。
3.总体共识是什么?
我想创建一个高层次的响应图。为了以不同的方式呈现这些信息,我根据这些数据创作了一幅画。
我画了植物图案,并用丙烯颜料来编码这些丰富的信息。每个图案代表一个人,植物元素与他们的反应相对应。
这幅图并不是为了指出个别细节,而是为了理解信息的整体性质,从而理解我们的想法。这幅画,对我来说,是在说我们既相似又不同!创造这种数据艺术是一个同时具有逻辑性和创造性的过程。
所有这些图像都有高分辨率在这里。你从这些数据可视化中得出什么结论?你最喜欢哪一个,为什么?
一个著名的公平机器学习数据集(长版本)中的数据处理错误
ProPublica 的 COMPAS 评分和累犯数据
在最近的一篇研究 论文 中,我重新审视了 ProPublica 收集的 COMPAS 累犯风险评分和犯罪史数据,为其开创性的 2016 文章 论司法系统中的算法公正。
我发现发现 ProPublica 在构建 key sub 时犯了一个数据处理错误——用于文章分析的数据集。我发现的数据错误会对这些关键子数据集的几个更基本的方面产生相当大的影响*,例如样本大小、累犯数量和累犯率。我估计累犯率是偏向向上差不多 25% 。*
尽管如此,有趣的是,我发现的非平凡数据处理错误对 ProPublica 使用相同子数据集报告的最引人注目的结果几乎没有影响。即非裔美国人相对于白种人的假阳性率和假阴性率。
C
基于其分析,专注于一组预测指标,ProPublica 得出结论,COMPAS 累犯风险评分偏向不利于非裔美国人*。开发 COMPAS 风险评分系统的公司 Northpointe Inc. ,使用相同的数据,但侧重于一组不同的预测指标, 为 风险评分辩护为无偏。*
由于主题和结果的争议性,以及数据的公开可用性,ProPublica 调查性新闻的开创性工作在公平机器学习或算法公平 T21 这一新兴领域引发了激烈的辩论和研究。
ProPublica 的 COMPAS 分数和累犯数据可能已经成为研究人员用来测试新的或现有的算法公平性定义和程序的最重要的基准数据。(参见 Corbett-Davies 和 Goel 2018 以及我在下面列出的其他参考资料;或者是 中的一篇 中的几篇博文)
当 ProPublica 的 COMPAS 数据被越来越多的研究使用时,研究人员通常会按原样采用 ProPublica 创建的数据集,并且似乎没有仔细检查过它们的数据处理问题。我没有测试一个新的公平定义或程序,而是仔细观察了 ProPublica 收集的真实数据集
特别是,我检查了子——数据集 ProPublica 建立来研究一个两年内* 窗口中一个被告最初被捕后的再犯数据。这样做,我发现 ProPublica 在构造这些两年累犯数据集时,犯了一个实质性的数据处理错误。*
如下图所示, ProPublica 未能对惯犯实施两年窗口样本截止(然而对非惯犯实施了这样的样本截止)
因此,ProPublica 错误地在两年的数据集中保留了累犯的不成比例的份额。我估计这个将的两年一般累犯率向上大约九个百分点,将其从 36% 推至 45% 。
因此,ProPublica 计算的两年再犯率比正确处理的同一数据中的真实的两年再犯率高约25%。
在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体来说,我看了 ProPublica 的混淆矩阵对高/低 COMPAS 分数与两年累犯状态的分析。我发现有偏差的两年期数据集对阳性预测值*(或 精度 )和阴性预测值也有实质性的影响。***
另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率*、假阳性率和假阴性率。***
ProPublica 的关键发现是 的假阳性率高于假阴性率低于的非裔美国人比的白种人*高,因此,当一个人正确处理数据时不会改变**。*******
据我所知,这是第一次强调上述数据处理错误。在这篇博文中,我总结了我的研究 论文 。
(如果你想阅读更短的摘要,请参见我这篇博文的短* 版本 。我还用我写的 R 程序创建了一个 GitHub 资源库 来分析数据)***
数据
在 2016 年,ProPublica 的一个记者团队获得了一个超过一万一千名* 审前被告的数据集,这些被告来自佛罗里达州布劳沃德县已被逮捕,并在 2013 年1 月 1 日至 2014 年12 月 31 日期间用 COMPAS 筛选系统对进行了评估。(COMPAS 筛选调查由审前服务在被告被捕后与他或她合作完成)***
ProPublica 随后收集了截至 2016 年 3 月底的未来*逮捕的数据,以研究 COMPAS 风险评分对这些被告累犯的预测程度(并于 2016 年 5 月发表了其文章)。( ProPublica 的 数据和分析在这里 描述 )*****
ProPublica 的调查确实具有突破性。它使用公共记录请求来获取一组被告的 COMPAS 分数、放映日期和个人信息,以及他们的监狱和监狱信息。然后,它匹配并合并这些不同的数据源。
截至 2016 年 3 月底,ProPublica 从布劳沃德县书记官办公室网站上的公共犯罪记录中获得了该审前被告样本在 COMPAS 筛选日期后的犯罪历史信息。(它还从布劳沃德县警长办公室和佛罗里达州惩教署网站获得了公共监狱和监禁记录)
ProPublica 为其研究收集了数据,并创建了一个数据库。从那个数据库中,它构建了几个子*-数据集,合并并计算各种特征。例如,在最初犯罪两年内因新犯罪再次被捕的指示变量。然后,ProPublica 将这些子数据集导出到**。csv 文件**。这些文件是其他研究人员最常用的文件。(再次, ProPublica 在 Web 上的数据是可用 这里 )***
我主要用的是中的两个*。ProPublica 创建的 csv 文件,即 compas-scores.csv 和compas-scores-two-years . CSV。第一个CSV 文件包含 ProPublica 从布劳沃德县治安官办公室获得的审前被告的完整数据集。这份文件包含了超过 11,000 名审前被告,然后 ProPublica 将他们减少到 10,331 名被告,部分原因是数据质量问题,正如我在我的研究论文中所描述的。(我仍然将这个稍微精简的数据集称为完整数据集)***
上面列出的第二个 csv 文件是 ProPublica 专门为了研究两年一般累犯而创建的文件。术语一般累犯是用来区别于暴力累犯的更小子集。一般累犯包括暴力犯罪和非暴力犯罪。在这篇文章中,我重点关注两年期的普通累犯数据集,但由 ProPublica 创建的两年期暴力累犯数据集也存在我在这里发现的相同数据处理问题。**
理论上,这个两年累犯文件包含了观察至少两年的人的子集,ProPublica 将这个文件中两年内累犯的人标记为打开了two _ year _ recid指示器标志。ProPublica 两年普通累犯 csv 文件包含7214 人。****
COMPAS 屏幕日期分布
完整数据
我从查看 10,331 名被告的完整数据集开始。我做了一个直方图和的对比筛选日期(通常在逮捕当天或一天后执行)的案件或逮捕数量。为了清楚地看到数据处理错误,我做了分离比较累犯和非累犯的屏幕日期直方图。**
对于这些直方图和后续直方图,我使用 7 天(即一周)数据箱*。供(后)参考,我在2014 年 4 月 1 日画一条红色竖线,这是在之前到 ProPublica 犯罪记录数据收集窗口结束(2016 年 3 月下旬)的两年标记。***
首先,对于整个数据集,除了与无关的之外,非常明显的是,在 2013 年年中的 COMPAS 筛选日期中去掉了(对于惯犯和非惯犯都一样),下图显示合理*。*****
(Source: Barenstein, 2019; Figure 3)
不清楚为什么 2013 年年中 COMPAS 屏幕或案例中的会出现下降。就此而言,这似乎是 ProPublica 从布劳沃德县收到的原始数据集的问题,因为它在 ProPublica 的 compas-scores-raw.csv 数据集中也很明显。因此,这并不而不是似乎是 ProPublica 的数据处理错误,并且我在这篇文章或我的论文中并没有解决这个问题*。***
两年数据(处理错误)
为了构建两年的累犯数据集,ProPublica 可能希望在 2016 年 3 月下旬收集犯罪记录数据的时间窗结束时,对人们进行至少两年的观察。因此,我们不应该期望在 2014 年 4 月 1 日之后的两年数据集中看到任何被告。(也就是说,在 ProPublica 收集的犯罪记录数据结束日期之前两年内,人们对的观察少于)。******
然而,如下图所示,在两年的数据集中,有许多人(特别是惯犯)确实在这个潜在截止日期之后有一个 COMPAS 筛查(或逮捕)日期。他们的 COMPAS 筛选日期一直到 2014 年 12 月 31 日,这是 ProPublica 数据库中原始逮捕和 COMPAS 筛选的最后可能日期。**
原因是为了创建两年的数据集,ProPublica 使用了以下逻辑:**
- 如果在 2016 年 3 月下旬 ProPublica 收集数据时,在他们的 COMPAS 筛选日期之后被观察了两年或两年以上(在监狱和监狱之外】),请将他们保留在数据集中。
- 如果再犯,还要留人观察少于两年(监狱外和监狱内)。****
下面是 ProPublica 使用的 Python 代码(730 天的生存期*用于两年标记)😗****
(Source: ProPublica’s COMPAS analysis GitHub repository, 2016)
该代码的第二行保证对于非累犯的来说,他们的 COMPAS 筛选日期在 2014 年 4 月 1 日之前,因为他们需要在数据中被观察(监狱和监狱外)超过两年(或 730 天)。****
(这部分逻辑似乎成立。扣除引发对比屏幕的原始犯罪的监狱和服刑时间似乎 合理 因为一个人在服刑期间再犯的概率可能大不相同
然而,对于惯犯来说,上面代码的第一行表明这个要求是而不是到位的。据推测,ProPublica 意识到没有必要在监狱和监狱外观察累犯整整两年。鉴于他们在最初的 COMPAS 放映日期后再犯,可能会被投入监狱相当长的一段时间。人们仍然希望将这些人纳入数据中。
虽然实施要求惯犯必须在监狱外观察两年 是合乎逻辑的而不是,但仍应在 2014 年 4 月 1 日* 或之前为他们申请 COMPAS 筛选日期样本截止。但是 ProPublica 没能 这样做。*****
不清楚 ProPublica 是否打算以这种方式处理数据,在这种情况下,这是一个概念上的错误,还是它不打算使用这种错误的逻辑,在这种情况下,这是一个数据处理错误。无论哪种情况,都会导致相同的偏倚样本两年期子数据集*。*****
在下图中,基于现在的两年一般累犯数据集,我再次在 2014 年4 月 1 日用红色竖线表示潜在的两年窗口对比屏幕截止日期。****
(Source: Barenstein, 2019; Figure 4)
这是我研究论文中的关键人物。它显示了在两年的数据集中,ProPublica 处理惯犯和非惯犯的方式存在明显差异。在右侧-* 侧图中,对于非惯犯,我们看到 ProPublica 正确地删除了 COMPAS 筛选日期在2014 年 4 月 1 日之后的被告。*****
然而,在左侧侧图中,对于累犯,我们看到 ProPublica 没有而不是放弃 2014 年4 月 1 日之后的 COMPAS 放映日期的被告。事实上,左边的这张图几乎是前面显示的完整数据集中类似图形的复制品。两年数据集与完整数据集的惯犯数量基本相同。****
ProPublica 未能对累犯实施两年的窗口样本截止
为了计算 ProPublica 错误地保留在两年数据集中的总额外累犯数,我通过 2014 年 4 月 1 日前后的COMPAS 屏幕日期指示器标记对两年累犯*变量进行交叉制表,并计算每个单元格中的被告人数:*******
(Source: Barenstein, 2019; Table 5)
由于 ProPublica 保留了 COMPAS 筛选日期在2014 年 4 月 1 日之后的累犯(但没有保留非累犯),因此 COMPAS 筛选日期在此日期之后的两年累犯数据集中的所有人确实是累犯。ProPublica 两年数据中错误保存的 998 名累犯占该数据集中两年内累犯总数3251*人的 30.7% 。或者,我们可以说,ProPublica 保留了 **998/2253、**或 *44.3%、超过应有的两年累犯。
对关键统计数据的影响
两年累犯数据集构建中的这一基本问题对一些统计数据的影响比对其他数据的影响更大。正如我们刚刚看到的,它对累犯的总数有很大的影响,因此,对累犯的比例也有影响。特别是,它人为地膨胀了累犯率。ProPublica 两年期一般累犯数据集中的两年期累犯率如下:**
(Source: Barenstein, 2019; Table 4)
所以 ProPublica 两年数据集中的两年再犯率是 45.1% 。然而,如果我们再次通过 2014 年 4 月 1 日之前与之后的 COMPAS 屏幕日期指示器标志来查看两年累犯变量,正如我们在上面的第一个表中所做的那样,但现在以百分比的形式,我们有了下表:**
(Source: Barenstein, 2019; Table 6)
我们看到,如果对所有被告(包括累犯)应用2014 年 4 月 1 日的简单对比筛选日期截止规则,两年累犯率将为 36.2% 。ProPublica 计算的 45.1% 的比率几乎比高出9 个百分点,因此比高出 24% 。**
衡量 ProPublica 的数据处理错误对累犯率的影响的另一种方法是进行生存分析。在我的论文中,我做了这样的分析,它证实了刚刚提出的结果。**
在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体我看 ProPublica 的混淆矩阵*(或真值表)对 COMPAS 评分 vs 两年累犯状态的分析。为了进行这样的分析,ProPublica 将 COMPAS 分数转化为一个二元分类器,即低分数和高分数。(在我的论文中,我也是这样做的)***
除了累犯患病率(即累犯率),ProPublica 使用的有偏*两年数据集还影响正预测值 ( PPV )(通常称为*)负预测值(NPV)检出率。如果 ProPublica正确地处理了两年的数据,并因此降低了累犯的发生率,毫不奇怪,PPV(和破案率)会更低,NPV 会更高。****
另一方面,有偏差的两年期数据集对其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率、假阳性率 ( FPR )、假阴性率 ( FNR )。(或一减去这些比率,即特异性和敏感性)****
根据定义, FPR 与数据中的实际阳性(或累犯)数无关。它是预测呈阳性(或复发)但未实际呈阳性的病例数与未呈阳性的所有病例数之比。所以 FPR 只根据实际负数计算(即只做不做 recidivate 的人)。因此,当人们正确处理数据时,FPR 仍然与 ProPublica 两年数据中的 FPR 完全相同。****
同样的, FNR 仅仅是基于实际阳性或者确实复发的人。FNR 是预测不会复发但实际复发的人与所有复发的人的比率。当一个人正确处理数据时,复发的总人数是相当不同的。然而,只要在两年数据中错误保存的 998 名 ProPublica 额外累犯的 COMPAS 分数与正确保存此类数据的 2,253 名累犯的 COMPAS 分数相似,这将对 FNR 几乎没有影响。在我的研究论文中,我证明了这是事实。**
给定相同的 FPR 和非常相似的 FNR,在我的论文中,我还表明对受试者操作特性 (ROC) 曲线和该曲线下的面积几乎没有影响。****
在我的研究论文中,我还针对非裔美国人和白种人分别重复了混淆矩阵分析。这是 ProPublica 在 2016 年发表文章时获得最多关注的关键分析,显示与白种人相比,非裔美国人的 假阳性率【FPR】和假阴性率**(FNR)较低。******
正如预期的那样,类似于刚才讨论的合并种族结果,FPR 是相同的,并且当正确处理数据时,FNR 非常相似,因此非裔美国人仍然比白种人具有高得多的 FPR 和低得多的 FNR。因此,当正确处理数据时,ProPublica 的这一关键发现不会改变。****
虽然,就像合并的种族数据结果一样,当一个正确地处理两年的数据时,每个种族组的其他统计数据确实出现了实质性的变化。特别是,每个种族组的累犯率、PPV 和 NPV都有相当大的变化*。***
U 最后,我在这里认定的数据处理错误的实际重要性可能是有限的。例如,我并不是说 Northpointe 在开发 COMPAS 累犯风险评分时犯了一个错误(尽管用于此的数据和实际模型是专有的,并不公开)。**
然而,领域专业知识并不总是转化为正确处理的数据。例如,Northpointe 使用相同的 ProPublica COMPAS 数据集对 ProPublica 的分析进行的批评未能识别出 ProPublica 的数据处理错误。**
其他研究过这些数据的研究人员也未能发现 ProPublica 两年数据集的处理错误。结果,正如我在我的研究论文中详述的那样,他们得出的两年再犯率的数字是向上偏的。**
尽管如此,他们分析的主旨仍然有效。大多数公平的机器学习研究似乎针对 FPR、FNR 或准确度,如上所述,这些不受数据处理误差的而非影响。**
最后,许多潜在的测量问题可能会影响 ProPublica COMPAS 数据中估计的两年累犯率(正如我在论文中提到的)。其中一些因素可能会对估计值产生向下的压力,也许会在一定程度上抵消我在这里提到的向上的偏差。
然而,这最后一点并没有使我所指出的数据处理问题的重点和我所呼吁的随后的数据修正无效。我关注的是内部数据处理的有效性。我并不是说经过这次修正后,数据将不会有任何遗留问题,也不一定会有外部有效性,这超出了我的分析范围。**
无论如何,似乎没有人像我上面所做的那样,预先设想过两年累犯数据集的 COMPAS 筛选日期。(如果他们有,也没有被广泛传播)因此,我在这里确定的数据处理错误已经持续并传播了三年多(明显的例外是 Rudin et al. 2018 )。
我的帖子和论文试图将焦点放回数据处理阶段,并强调其中的潜在陷阱。
脚注
- 最近,研究人员指出了分类奇偶校验的算法公平性目标的一些潜在缺陷,该目标试图在人口亚组之间等同分类误差的度量,如 FPR 或 FNR(Corbett-Davies 和 Goel 2018 )。其他工作表明,几种流行的算法公平性目标是不相容的,不可能同时实现(例如 Chouldechova 2016 和 Kleinberg et al. 2018 )。****
- Rudin et al. 2018 从原始 ProPublica 数据库重建 ProPublica COMPAS 数据集(并使此可用)。通过这样做,他们似乎避免了犯 ProPublica 在两年累犯子数据集方面犯的同样的数据处理错误。然而,他们没有明确指出,或以任何方式强调,ProPublica 的两年数据处理错误。他们的关注点完全不同,因为他们试图对 T21 的 COMPAS 累犯风险评分进行逆向工程,以了解 Northpointe 是如何建立这些评分的。
****关于我的论文的一个更短的摘要,请参见我这篇博文的版本。我论文的一个长篇版本是 arXiv 上的 可用 。我还用我写的 R 程序创建了一个 GitHub 资源库 来做我的分析。
我是美国联邦贸易委员会的经济学家。这项研究与我在联邦贸易委员会的工作无关。本文所表达的观点仅代表作者个人观点。他们不一定代表美国联邦贸易委员会或其任何委员的意见。
一个显著的公平机器学习数据集(短版本)中的数据处理错误
ProPublica 的 COMPAS 评分和累犯数据
在最近的一次研究 论文 和博客 帖子 中,我重新审视了 COMPAS 累犯风险评分和犯罪史数据由 ProPublica 为其开创性的 2016 文章 关于算法公平性
我发现 ProPublica 在构建键* 子-用于文章分析的数据集时,出现了数据处理错误。我发现的数据错误会对这些关键子数据集的几个更基本的方面产生相当大的影响*,例如样本大小、累犯数量和累犯率。我估计累犯率是向上偏差不多 25% 。**
尽管如此,有趣的是,我发现的非平凡数据处理错误对 ProPublica 使用相同子数据集报告的最引人注目的结果几乎没有影响。即非裔美国人相对于白种人的假阳性率和假阴性率。
C
基于其分析,专注于一组预测指标,ProPublica 得出结论,COMPAS 累犯风险评分偏向不利于非裔美国人*。开发 COMPAS 风险评分系统的公司 Northpointe Inc. ,使用相同的数据,但侧重于一组不同的预测指标, 为 风险评分辩护为无偏。*
由于主题和结果的争议性,以及数据的公开可用性,ProPublica 调查性新闻的开创性工作在公平机器学习或算法公平 T21 这一新兴领域引发了激烈的辩论和研究。
ProPublica 的 COMPAS 分数和累犯数据可能已经成为研究人员用来测试新的或现有的算法公平性定义和程序的最重要的基准数据。(参见 Corbett-Davies 和 Goel 2018 以及我在下面列出的其他参考资料;或者是 中的一篇 中的几篇博文)
当 ProPublica 的 COMPAS 数据被越来越多的研究使用时,研究人员通常会按原样采用 ProPublica 创建的数据集,并且似乎没有仔细检查过它们的数据处理问题。我没有测试一个新的公平定义或程序,而是仔细观察了 ProPublica 收集的真实数据集
特别是,我检查了子——数据集 ProPublica 建立来研究一个两年内* 窗口中一个被告最初被捕后的再犯数据。这样做,我发现 ProPublica 在构造这些两年累犯数据集时,犯了一个实质性的数据处理错误。*
如下图所示, ProPublica 未能对惯犯实施两年窗口样本截止(然而对非惯犯实施了这样的样本截止)
因此,ProPublica 错误地在两年的数据集中保留了累犯的不成比例的份额。我估计这个将的两年一般累犯率向上大约九个百分点,将其从 36% 推至 45% 。
因此,ProPublica 计算的两年再犯率比正确处理的同一数据中的真实的两年再犯率高约25%。
在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体来说,我看了 ProPublica 的混淆矩阵对高/低 COMPAS 分数与两年累犯状态的分析。我发现有偏差的两年期数据集对阳性预测值*(或 精度 )和阴性预测值也有实质性的影响。***
另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率*、假阳性率和假阴性率。***
ProPublica 的关键发现是 的假阳性率高于假阴性率低于的非裔美国人比的白种人*高,因此,当一个人正确处理数据时不会改变**。*******
据我所知,这是第一次强调上述数据处理错误。在这篇博文中,我总结了我的研究 论文 。
(如果你想了解更多信息,但不是全文的研究论文,请看我以前的长* 版本 的这篇博文。我还用我写的 R 程序创建了一个 GitHub 资源库 来分析数据)***
在 2016 年的 中,ProPublica 的一组记者获得了一个数据集,该数据集包含超过一万一千名 *来自佛罗里达州布劳沃德县的审前*被告,这些被告在 2013 年1 月 1 日和 2014 年12 月 31 日之间被逮捕并用 COMPAS 筛选系统评估。****
ProPublica 随后收集了截至 2016 年 3 月底的未来*逮捕数据,以研究 COMPAS 风险评分对这些被告累犯的预测程度(并于 2016 年 5 月发表了文章)。( ProPublica 的 数据和分析在这里 描述 )*****
从这些数据中,ProPublica 创建了两个数据集,专门用于研究在最初犯罪和对比筛选日期的两年内的累犯。我特别检查了为研究一般累犯的可能性而构建的两年累犯子数据集 ProPublica。(一般累犯包括暴力和非暴力犯罪)
为了构建两年的累犯数据集,ProPublica 可能希望在 2016 年 3 月下旬收集犯罪记录数据的时间窗结束时,让人们观察至少两年。
因此,我们不应该期望在 2014 年 4 月 1 日之后的两年数据集中看到任何被告。(也就是说,在 ProPublica 收集的犯罪记录数据结束日期之前的两年内,人们观察到的少于)。******
为了验证这一点,我通过分析被告在 COMPAS 筛选日期的分布来可视化两年普通累犯数据集(筛选通常在逮捕当天或一天后进行)。这样做的时候,我发现 ProPublica 在创建这个数据集的时候犯了一个实质性的数据处理错误。**
ProPublica 未能对累犯实施为期两年的窗口样本截断(但它确实对非累犯实施了这样的样本截断)
(在之前的一篇 长 版本 的这篇博文中,我解释了可能导致 ProPublica 这样误入歧途的推理)
我在下图中展示了这个数据处理错误(我的研究论文中的关键图)。在这个图中,我做了一个直方图,显示了按 COMPAS 筛选日期(通常在逮捕当天或之后一天执行)划分的案件或逮捕数量。为了清楚地看到数据处理错误,我做了分离比较累犯和非累犯的屏幕日期直方图。**
对于这些直方图,我使用 7 天(即一周)数据箱*。作为参考,我在2014 年 4 月 1 日画一条红色竖线,这是 ProPublica 的犯罪记录数据收集窗口(2016 年 3 月下旬)结束前的两年标记*。****
Source: Barenstein, 2019. (Figure 4)
【注:该图还显示了一个,但非常明显, 在 2013 年年中的 COMPAS 放映(或案件)中 下降(对累犯和非累犯一视同仁)。这是一个 单独的问题 ,但是,它似乎存在于 ProPublica 从佛罗里达州布劳沃德县收到的 原始 数据集。所以这个 不是 看起来是 ProPublica 的数据处理错误,而 我不 解决这个问题】****
T 上面描述的关于累犯的数据处理错误导致到两年数据集中虚高的累犯率。这是由于 2014 年 4 月 1 日之后的所有额外累犯。ProPublica 应该从两年的数据集中剔除这些额外的累犯,但它没有这么做。(在我的长文博文和论文中,我计算出这些额外的累犯构成了 ProPublica 两年普通累犯数据集中总累犯的大约 30 %)****
于是,在 ProPublica 创建的两年普通累犯数据集里,两年累犯率为 45% 。但是,当我去掉多余的累犯时,我反而估计两年累犯率只有36% 。因此,在 ProPublica 的数据集中,两年的累犯率是向上偏移大约九个百分点或者 25% 。****
在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体我看 ProPublica 的混淆矩阵(或真值表)对 COMPAS 评分 vs 两年累犯状态的分析。为了进行这样的分析,ProPublica 将 COMPAS 分数转化为一个二元分类器,即低分数和高分数。(在我的论文中,我也是这样做的)**
除了累犯患病率(即累犯率),ProPublica 使用的偏倚两年期数据集也影响阳性预测值( PPV )(或 精度 )和阴性预测值( NPV )。如果 ProPublica正确地处理了两年的数据,结果是累犯的发生率更低,毫不奇怪,PPV 会更低,NPV 会更高。****
另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率、假阳性率 ( FPR )、假阴性率 ( FNR )。或者一个减去这些比率,即特异性和敏感性。(我在这篇博文的长 版本 和我的研究论文中解释了为什么会这样)****
ProPublica 发现非裔美国人比白种人假阳性率高假阳性率 假阴性率低,这是最受关注的关键发现。因此,当正确处理数据时不会改变。******
U 最后,我这里认定的数据处理错误的实际重要性可能是有限的。例如,我并不是说 Northpointe 在开发 COMPAS 累犯风险评分时犯了一个错误(尽管用于此的数据和实际模型是专有的,并不公开)。**
此外,大多数公平的机器学习研究似乎以 FPR、FNR 或准确性为目标,这些不受数据处理误差的影响。**
最后,请注意,许多潜在的测量问题可能会影响 ProPublica COMPAS 数据中估计的两年累犯率(正如我在论文中提到的)。其中一些可能会对估计值施加向下的压力,也许会在某种程度上抵消我在这里提到的向上的偏差。
然而,这最后一点并没有使我所指出的数据处理问题的重点和我所呼吁的随后的数据修正无效。我的重点是内部数据处理的有效性。我并不是说经过这种修正后,数据将不会有任何遗留问题,也不一定会有外部有效性,这超出了我的分析范围。****
在任何情况下,似乎没有人像我上面所做的那样,预先设想过两年累犯数据集的 COMPAS 筛选日期。(如果他们有,也没有被广泛传播)因此,我在这里指出的数据处理错误一般会持续和传播三年以上。**
我的博客文章和研究论文试图将焦点放回到数据处理阶段,并强调其中的潜在隐患。**
脚注
- 最近,研究人员指出了分类奇偶校验的算法公平性目标的一些潜在缺陷,该目标试图在人口亚组之间使分类误差的度量相等,如 FPR 或 FNR(Corbett-Davies 和 Goel 2018 )。其他工作表明,几种流行的算法公平目标是不相容的,不可能同时实现(例如 Chouldechova 2016 和 Kleinberg 等人 2018 )。****
- 在我的博客文章和论文中,我研究了 ProPublica 两年的一般累犯数据集。当我关注这个数据集时,ProPublica 也T21创建的两年期暴力累犯数据集也遭遇了我在这里指出的同样的数据处理问题。****
这篇博文是我上一篇走向数据科学 帖子 的短版。我的一篇长篇版本的论文是 可在 arXiv 上 。(我还用我写的 R 程序创建了一个 GitHub 资源库 )**
我是美国联邦贸易委员会的经济学家。这项研究与我在联邦贸易委员会的工作无关。本文仅代表作者个人观点。他们不一定代表美国联邦贸易委员会或其任何专员的意见。
数据产品设计思维过程
如何用设计思维解决棘手的数据可视化问题?
好奇心是我们所有人的主要驱动力。我们不断地对过程、原因和结果进行研究。
我们希望了解公司、运营流程和经济关系是如何运作的,它们由哪些步骤和部分组成,事情为什么会发生,以及一切是如何相互关联的。
一旦我们分析了一切,我们就可以利用这些知识以积极的方式对世界施加影响。
在寻找相关性的过程中,数据是一个越来越重要的因素。正确的数据(智能数据而不是大数据)让黑暗变得更加明亮。没有数据,对我们周围的世界进行准确、系统的分析和精确的设计就不再可能。仅靠直觉和直觉是不够的。
而是原始版本的数据(二进制、表、日志文件、数据库等。)实际上不能被人类阅读。如果我们想要更快,我们需要数据可视化,使正确的数据选择在适当的聚合级别上容易且精确地可见。这项任务由所谓的数据产品来完成。它们以一种合适的形式将我们的世界形象化,并使我们能够分析和寻找原因和结果。
谷歌地图、谷歌分析或天气、健康或时间表的移动应用等数据产品为我们提供了非常高水平的信息。我们所看到的吸引人的、清晰的展示是对数据、联系和结构的高度复杂的浓缩和复杂的视觉总结。
什么是数据产品?
数据产品是使用和可视化数据来支持决策和帮助控制复杂系统的数字产品。
数据产品是在算法的帮助下,对系统的统计的,主要是复杂的数据分析的可视化处理结果。系统可以是流程、设施、公司、城市、国家、基础设施、太阳系、有机体、生态系统、气候条件。事实上,我们的世界由无数的系统组成。
数据产品描述了该系统的历史、当前或未来的条件和发展。用户使用数据产品快速、直观地描述系统的复杂状况和发展,并从中获取信息和自己的决策。
使用数据进行设计
机器(数据产品)与人之间的视觉界面非常重要。
但是你到底是如何开发它们的呢?我们如何确保他们有效地完成任务?特别是在专业环境中,不同的用户对新的数据产品有不同的要求。你会很快发现自己处于一个必须解决棘手问题(邪恶问题)的境地。
棘手的问题有以下几个特点:
有许多相互依赖的影响变量
没有对错的解决方案,只有好的和坏的
你不能只用一个公式和逻辑来解决它们
你只能凭直觉解决,而不是逻辑上的
有社会、心理和文化方面的考虑。
What are wicked problems?
如何处理棘手的问题
数据产品面临的挑战是…
在内容方面:
底层系统复杂度高
在数据方面:
来自不同数据源的数据必须相互连接
数据质量通常不够
数据准备(ETL)复杂且耗时
必须正确集成数据科学技术
在可视化方面:
经典的可视化方法(条形图、饼图、点状图)已经不够用了
使用 Qlik、Tableau 和 PowerBI 等常用工具进行可视化的可能性受到了限制
在用户方面:
用户有非常不同的知识
他们必须做非常不同的工作(要做的工作)
解码数据产品中包含的信息并将其分配给你自己的知识是一项挑战
用户的工作环境(医疗技术、系统控制、车辆控制)非常复杂
关于所有这些方面的更多细节也可以在我们关于数据设计指南的文章中找到。此处
How to deal with wicked problems ?
什么是设计思维?
设计思维为解决棘手的问题提供了一种非常有效的方法。在这里,一个跨学科的团队从用户的角度出发,以单独的、系统的步骤来处理一个潜在的解决方案。然后由用户测试其适用性。
设计思维已经成为一种众所周知的、久经考验的发展创新的方法。许多大型技术和咨询公司都使用它。
互联网上充满了对设计思维的实用和描述性的解释,所以这里只是对设计思维过程中的四个基本阶段的简要概述。
发现——发现所考虑问题的环境和背景
定义——制定用户的要求和需求
开发——对解决方案提出初步想法
交付——创建解决方案并获得用户反馈。
The Data Design Thinking Process
数据产品的设计思维
我们想知道这种方法是否也可以用于数据产品。设计思维完全是关于用户和他们的需求。现在又增加了一个非常复杂的维度:数据或数据科学。然后,我们专门针对数据产品采用了经典的设计思维方法,并且自 2018 年初以来一直非常成功地与之合作。
在商业应用的数据产品开发中使用设计思维的挑战在于以下几点:
·大数据和数据科学应用的数据产品开发往往会有新的突破。在这一点上,目标用途(要做的工作)在开始时没有明确定义。使用环境和用户需求必须与数据产品同等开发。有时,它们只是在第一次可视化之前不可见的系统之后才变得明显。
用户的数据能力未知或太低,无法理解信息
设计者需要对数据结构、原始数据和数据管道有深入的了解。创造性开发的东西也必须在技术上是可能的。纯粹的 UX 观点是不够的。
许多数据产品都基于数据科学算法。数据以及统计学和数据科学的潜力是创造过程的原材料。数据产品只有在充分利用这种数据潜力时才会变得高效。在这里,如果不了解数据素养和数据科学,设计师也无法走得更远。
专业环境中的数据产品面向专业领域的用户和专家。因此,数据产品深度介入了所谓的业务领域——更高层次的复杂性。
作者:Evelyn münster/Christoph Nieberding
关于我们
Evelyn Münster 和 Christoph Nieberding 是 Designation 的管理合伙人,Designation 是一家位于慕尼黑的数据产品和商业设计设计公司。 www.designation.eu
电子竞技中的数据科学热潮
想找一份数据科学的工作?电子竞技可能是值得一看的地方!
仅在过去的几年里,电子竞技已经成为世界上最受欢迎的娱乐形式之一,与传统体育赛事如 NFL 超级碗和 MLB 世界职业棒球大赛相媲美。日益增长的电子竞技场景的核心是对数据科学和数据科学家的需求和依赖。虽然看起来可能不像,但电子竞技已经成为数据科学家和数据工程师的就业热点。如果你是一名数据科学家或正在探索新的工作机会,电子竞技可能是最好的选择。
十亿美元的产业
在今年早些时候由商业内幕发布的一篇文章中,电子竞技行业预计将在 2019 年历史上首次带来超过 10 亿美元的收入。这来自于分析公司 Newzoo 的一份报告,该报告预计电子竞技行业将带来约 11 亿美元的收入,较上年增长 26.7%。这种增长的一个重要因素是电子竞技领域在过去十年中投资、广告和媒体报道的增长。这个数字累积了各种游戏社区带来的收入,其中一些你可能知道像英雄联盟,守望先锋,堡垒之夜和超级粉碎兄弟终极版。Newzoo 估计,到 2022 年,电子竞技市场将接近约 18 亿美元。随着增长速度的加快,到 2022 年,这一数字可能会超过 30 亿美元。
Source: Newzoo
仅根据这些数字,它不仅证实了这个市场是有钱可赚的,还描绘了这些市场对数据科学家日益增长的需求。
电子竞技如何与世界上最大的体育赛事竞争
Source: The Rift Herald
除了资金,有助于电子竞技增长的因素之一是电子竞技比赛观众的持续增长。每年最受欢迎的体育赛事之一是 NFL 超级碗。超级碗和他们令人难忘的电视广告一起,经常被视为美国体育赛事中的圣杯。每年,这一活动吸引了大约 1 亿独立观众。根据体育媒体观察,洛杉矶公羊队和新英格兰爱国者队之间的超级碗比赛仅电视观众就有 9819 万人,另外还有 260 万人来自流媒体。与前几年相比,2018 年超级碗约有 1.03 亿观众,2017 年有 1.11 亿观众。
当将这些数字与电子竞技锦标赛相比时,它们相差不远。全球最大的电子竞技之一是英雄联盟,这是一个由 Riot Games 创建的多人在线战斗竞技场游戏。2018 年,传奇世界锦标赛联盟(League of Legend World Championship),或称“世界”,在最后一系列比赛(3 场比赛)中,观众人数超过 9960 万。高收视率可以归功于《传奇联盟》在海外的成功,因为它已经成为欧盟和亚洲最受欢迎的游戏之一。
大数据及其对电子竞技的影响
虽然数据科学和电子竞技联系在一起看起来很奇怪,但这种联系对游戏生态系统非常重要。与游戏分析师和体育类似,数据对于理解如何优化游戏性至关重要。就像在体育运动中一样,赢得比赛依赖于理解什么策略有效,什么策略无效。通过使用大量数据样本,数据分析师能够发现不同的策略、技术和游戏,优化结果以确保胜利。幸运的是,有了像《英雄联盟》这样的游戏,比赛可以被重新观看,并被放入数据库以备将来进一步检查。在每场比赛之后,数据被收集和分类,然后可以一步一步地分析和分解。
Source: Riot Games, League of Legends
像英雄联盟这样的游戏,都是依赖游戏数据的。玩家可以在每场比赛后通过仪表盘看到他们的影响力。它不仅显示了过去的比赛,而且提供了详细的图形处理的损害,黄金赚取,甚至顶部播放或游戏的杀戮条纹。除了游戏开发商提供的数据,最受欢迎的英雄联盟数据分析网站之一是一个名为 Mobalytics 的网站。
Source: Mobalytics
Mobalytics 是最大的数据库之一,专门用于英雄联盟和其他由 Riot Games 开发的游戏,如团队战斗战术。这个数据库包含不同的初学者入门指南、顶级团队构成、胜率最高的角色等等。其他流行的游戏网站,如 OP.GG,Overbuff.com,甚至更多,也为世界各地的玩家提供玩家统计数据。这些网站已经成为优化游戏性不可或缺的一部分。虽然它们很重要,但像 Mobalytics 这样的工具只是电子竞技中数据科学工作所需的一小部分。
电子竞技组织和数据科学职位
通过简单的谷歌搜索,你可以找到无数的电子竞技公司、组织和俱乐部的职位。这些职位的头衔包括数据工程师、数据科学家甚至游戏分析,电子竞技正成为数据科学的热点。
Source: Google
在对 Riot Games 提供的高级分析师职位的描述中,他们表示,
作为电子竞技团队的高级分析师,你将加入 Insights 团队,该团队由研究人员、分析师、数据科学家和战略家组成,他们执行分析,帮助暴徒做出艰难的决定。你将成为跨学科团队的一员,与其他学科的暴徒(设计师、艺术家、制片人等)一起工作。)进行研究和分析,了解我们产品的特性、系统和体验。你在数据分析和战略决策方面的背景将确保你是玩家的支持者,并能就他们的需求和行为提供战略指导。
像 Riot Games 和其他电子竞技组织这样的游戏公司需要并正在寻找有才华的数据科学家来帮助优化他们的游戏。如果你是一名数据科学家,电子竞技可能是下一个你想了解的地方!
作者注:
如果你对数据科学感兴趣或想进入数据分析领域,请查看 probotplayground.com 的。Probot Playground 是一个免费的人工智能游戏平台,允许你编写一个机器人,并在自动扑克游戏中玩。每次游戏结束后,您可以收集游戏数据,并使用它来练习您的数据科学技能,并进入游戏分析!现在就去看看吧!
数据科学实习搜索:财富 500 强的故事
如何在美国获得数据科学实习机会?
又到了一年中的这个时候,美国所有的硕士生要么在寻找实习机会,要么已经找到了。这有时令人困惑和沮丧,但每个学生都必须经历实习求职过程。各种各样的学生来到美国,包括两种类型:新生和有经验的候选人。数据科学家是 21 世纪最性感的工作,每个来自计算机科学、信息管理、工程管理、商业分析和数据科学领域的学生都渴望成为数据科学家。有几个数据科学实习的职位,接受从本科到博士级别的申请。目前有很多博士生在数据科学相关领域注册(因为现在超级热!)因此,对 MS 学生的竞争非常激烈。两个月前,我获得了财富 500 强公司的两个数据科学实习机会,这是一次值得分享的旅程。
免责声明:如果你是一个非常优秀的候选人,并且有信心通过第一次面试,这不适合你。
我是什么时候开始实习找工作的?
嗯,尽早开始总是明智的,我是说尽快开始。我的研究生学习于 2018 年 8 月 27 日开始,我于 2018 年 9 月 13 日提出了我的第一份实习申请。行业内的大公司会很早就开始招聘,所以,这是你全力以赴的时候了。不会有太多的实习机会,但会有一对夫妇让你每天忙于一两个申请。
您的应用程序需要什么?
首当其冲的是一份精致的简历。早点开始,你的简历上没有太多需要修改的地方,因为你刚刚进入研究生院,而不是增加学历。让我告诉你,建立你的简历是一个迭代的过程,因为你用经验和指导把变化推进你的简历。第二件重要的事情是你的求职信。人们说招聘人员首先看到的是求职信,但这可能不是真的。但是为什么要冒险呢?求职信基本上有两种类型:1。讲故事 2。注重技能,无论哪种方式,你都可以去,因为没有完美的求职信。你需要准备的其他东西是成绩单和实习证明(可选)。你应该让你大学的职业服务机构审查你所有的申请材料(因为你是付费的:p ),并利用他们的专业知识来制作你的申请材料。哦!忘了告诉你你需要的最重要的东西:时间。我知道这对你来说是一个新的国家,所以,专注于你的目标总是具有挑战性的,人们通常会从第一天开始就实现他们的美国梦。你应该享受在美国逗留的每一刻,但要优先考虑对美好未来重要的事情。感谢我的本科学长和亲戚,特别是 Heet Sheth 、 Vishal Ghadia 和 Nilmani Bhanderi ,他们经历了相同的阶段,并指引我一路走来。
如何搜索公开实习职位?
有几个来源:Linkedin、Glassdoor、Indeed、Angellist 等。最简单的开始方式是通过 LinkedIn。为这些平台上的相关职位设置每日电子邮件提醒,因为这将是你实习搜索的一个重要特征。是时候你应该滚动这些专业的网络门户,而不是你的脸书或者 Instagram 了!你应该每天花一些时间在这些平台上,并保存相关的工作,你可能会在晚上的空闲时间申请。如题所示,另一个可能的方法是浏览财富 500 强名单,在每个名单中寻找空缺的实习职位。
数据科学职位?
数据科学是一个广阔的领域,因此有各种各样的职位可供你申请:数据科学实习生、数据工程实习生、机器学习实习生、深度学习实习生、数据分析师实习生、商业分析师实习生、分析实习生等。根据你的个人资料,你永远不知道你适合哪个职位。永远不要局限于一个配置文件,因为你总是想保持你的选择开放。你可以根据这些职位来制作你的简历。
迭代,迭代,迭代!
没有完美的简历和求职信,除非你没有接到任何电话(这不包括编码测试和自动视频面试的一般电话),否则你应该反复阅读你的申请材料。一旦你开始接到真正的电话,在那一点上,你可以考虑停止你的申请材料的迭代过程。
利用你的寒假!
所有的大学通常都有一个月的寒假,我觉得这是你申请的最佳时机。毫无疑问,你应该享受寒假,同时为申请留出时间。甚至我在佛罗里达我叔叔家过寒假,我过去经常在空闲时间去那里旅行和申请。到目前为止,大多数大公司都在市场上提供实习职位,所以你应该试着每天至少申请 15 份(至少这是你的目标)。
拒绝,拒绝,拒绝!
消化你每天都会遇到的拒绝是整个过程中不可或缺的一部分。被拒绝了不过是给你一个动力,让你申请更多的职位,并在另一家公司寻找那个你最适合的职位!每当你申请时,你通常会收到一封确认申请的电子邮件,上面写着“如果你适合这个职位,招聘人员会与你联系,并有进一步的步骤”。你不会收到所有申请的回复,所以你能做的就是申请。我在实习求职过程中收到了 205 份申请,其中 70 多份被拒绝了。学长们总是告诉我要准备好申请一千份,我在来美国之前就已经做好了准备。
Linkedin 和网络的力量
Linkedin 是实习或求职的首选门户。申请过程的另一种方式是从在你想要的公司工作的人那里获得推荐。首先,与同行业的人建立关系网。所以,每当你发送联系请求时,不要忘记给对方写一封短信,说明你为什么想和他联系(不要在短信中要求工作,因为这看起来很绝望)。平稳前进!联系你居住在美国的本科生和研究生校友,向他们寻求关于公司职位的指导。不要犹豫!想象一下 5 年后你的某个下属向你求助。你不帮忙吗?他们会经历相同的阶段,并且总是乐于提供帮助。这种方法对我的很多朋友都有效,并且屡试不爽。这只是简历入围和接到面试电话的另一种方式。在大多数情况下,推荐可以直接让你得到面试机会。
这个电话!
所以,一旦你通过简历和求职信被列入候选名单,大多数情况下你要么得到一次编码挑战,要么得到一次面试。编码挑战可能会在技术方面考验您的 Python、R 和 SQL。它通常测试你的数据处理和分析技能。下一步是 n 次技术面试( n 因公司而异,范围从 1 到 5)。对于技术面试来说,你需要彻底检查你的简历(每一厘米),了解你所申请职位的基本知识。你不应该知道工作描述上写的所有事情,但是当在面试中被问到你不知道的事情时,你应该总是积极地回答,比如“我目前正在我的 X 课程中学习这个,到这个学期结束时会很好的”。面试官的脑海中一直有一张记分卡,你必须确保直到他/她愿意回答问题的最后一刻,你都不会在记分卡上留下负面印象。现在,这部分是游戏规则的改变者!你应该问一两个问题,比如“你在这家公司工作感觉如何?”“你能告诉我一个你的团队目前正在做的有趣的项目吗?”等。不管你的面试进展如何,总是以积极的语气结束面试,告诉面试官“为什么是你?”通过在他/她的记分卡上增加你的分数来推销你自己。此外,一定要问他们什么时候会给你回信。
技术面试
数据科学是一个技术职位,有一些技术回合,包括编码测试、数据挑战或技术面试。所以,这些是你应该准备好回答的问题类型:
- 基于简历的:关于你的项目和经历的问题。
- 建模:测试你基于情境变量(训练数据、特征集、测试数据、计算能力、预测时间、训练时间等)建立机器学习模型并做出选择决策的能力。
- 系统设计:测试你建立从提取、预处理到预测和洞察的整个管道。
- 数据库:关于 SQL、关系数据库和 NoSQL 数据库概念的问题。
- 编码:如果你申请的是数据工程的职位,就等着一轮现场编码吧。这些包括递归、回溯、分而治之、贪婪和动态编程的概念(这些是稀有品种。)
面试后?
现在,是你必须控制你的思想的时候了。你的大脑过度思考你的面试如何进行,如果你得到了这份工作,你读到了这家公司及其位置(哈哈!我以前就是这么做的:P)但是最好忘掉那段经历,回到你的申请轨道上来,直到你最终从他们那里得到反馈。一定要在你的联系人中给招聘人员发一封礼节性的电子邮件来安排面试,当你的面试官说面试时间超过一天的时候,询问一下申请的情况。
报价!
招聘人员通常会直接给你打电话,或者安排时间和你谈谈。这个电话是招聘人员给你提供实习机会的电话。你应该耐心地听他/她对这个提议说些什么,而不是兴奋地从椅子上跳起来。你当然应该在接到电话时表达你的兴奋之情,让招聘人员不知所措。
实习机会和薪资谈判?
如果是实习,你一般不会去协商薪酬,因为这是公司在你还在学习、研究和完成学位时提供给你的真实世界的体验。但是当你手上已经有了另一家公司的报价时,你当然可以试着去谈判,因为这家公司可以给你平价的报价,如果这不损害他们的标准的话,因为他们想要你。).
选择合适的机会!
如果你有多个工作机会,想象一下你在那家公司做工作描述中提到的工作,你就能明智地做出选择(报酬是次要的!🤑).
那我呢?
说实话,这是我整个申请过程中遵循的轨迹。为了得到合适的实习机会,我准备了一千份申请,但我开始得很早,不得不在 205 份申请中停下来。我收到了美国家庭保险集团的数据科学实习 offer 和 CBS 的数据工程实习 offer。我最终决定在佛罗里达州劳德代尔堡的 CBS 公司的 CBS 互动业务部门度过我的夏天。
我为什么选择 CBSi?
从我本科学习的第一年开始,我就梦想着为一家媒体和娱乐公司工作(因为我喜欢动画和设计),还有什么比在美国最受关注的网络和全球十大网络公司工作更好的机会呢?今年夏天,我可能会编写大数据管道来处理和建模 CBS、CBS News、CBS Sports、CNET、Gamespot、Comicvine、Download.com、MaxPreps、TV Guide、last.fm、Metacritic、MetroLyrics、Chowhound、TechRepublic、TV.com 等的数据:p
那都是乡亲们!在 LinkedIn 或 gmail dot com 的【my last name】【my first name】上提出关于数据科学和数据工程实习的问题。这个夏天我非常兴奋,我会让你了解我的实习经历。万事如意!
数据科学面试:期待什么
数据科学面试因其不确定性而令人恐惧。在这里,我分解了这个过程,并提供了一些帮助你成功的技巧
在许多行业中,面试过程是人们害怕的事情。在咨询和银行业,潜在客户要花无数时间学习,以掌握案例面试和技术问题。对于软件工程师来说,一种全新的商业模式已经完全建立在帮助潜在客户回答编码问题的基础上。许多关于面试的恐惧来自于对面试过程的不确定性。在数据科学这一相对较新的领域,这一点更加神秘。
所有公司对数据科学的面试都不一样;然而,在你申请的大部分工作中,还是有一些相似之处。在这篇文章中,我尽我所能分解了一般的面试阶段,并给出了一些如何在每个阶段脱颖而出的建议。希望这将缓解一些与数据科学面试中的不确定性相关的压力。
为了本文的目的,我们将跳过申请过程的细微差别。以后打算写一篇关于如何优化你的简历和你与公司的沟通渠道的文章,敬请关注!
第 1 阶段:电话面试(15-30 分钟)
对于大多数公司来说,第一步是和你通电话。你通常会与技术招聘人员(大公司)或数据科学经理(小公司)交谈。
这些对话很短,主要集中在了解你的适合度或你过去的项目经验。偶尔,他们会要求对你的相关技能进行广泛的评估。
成功秘诀:
- 仔细想想你为什么要为公司工作。招聘人员会因为对公司使命的热情或你申请的特定职位而兴奋
- 查看招聘启事,确保你能用任何相关工具讲述你的经历
- 回顾你的简历,确保你能清楚地讲述你过去参与的任何项目。为了加分,把这些项目和你可能在工作中做的工作联系起来
- 这是一个问自己问题的好机会。问一些深思熟虑的问题,表明你对这家公司进行了彻底的调查,可以增加你进入下一轮的机会
第二阶段:带回家测试
当你通过电话面试后,公司通常会给你一份带回家的评估。这可以是供您分析的数据集、编码评估或他们希望您演示的项目。这将因公司和角色的不同而有很大差异。
**数据分析:**我个人认为这个选项最能代表你每天要做的工作。对于这类问题,他们通常会要求您在相对较短的时间内完成分析。他们会说:“这应该不会花你超过 3 个小时”。从我的经验来看,他们几乎总是要花很长时间。如果可能的话,我会试着安排一下,这样你就可以在周末完成。
成功秘诀:
- 如果没有明确说明不能从外部来源引入数据,可以考虑添加其他有用的数据。
- 使用特征工程或特征缩减(并能够解释为什么)可以极大地提高你的分析质量
- 花些时间让业务涉众理解你的工作(详细的视觉效果),可以表明你了解如何推动业务价值
- 创建一个 API 端点或 web 应用程序说明了你的工作偏向于可操作性(这可能有点过头了)
**编码评估:**除非你申请的是机器学习工程师的职位,否则编码评估通常更容易获得数据科学职位。你应该预料到他们会让你选择你喜欢的编程语言来回答几个问题。
对于这些,一般都有严格的时间限制。他们要么让你登录一个会观察你进行评估的面试官,要么让你在无人监控的情况下通过一个在线平台参加测试。
老实说,这些即使相对简单,也让我紧张。当编码或解决问题时,时间压力会让人感到不舒服。
成功秘诀:
- 练习,练习,练习。网上有很多地方可以练习编码问题。最著名的可能是 leetcode
- 继续glassdoor.com看看你是否能对某些问题有所感觉
- 如果你是在面试官在场的情况下做评估,练习用你的方式讲述你的代码。有人在那里观察你是有帮助的,即使他们对编码或数据科学一无所知
**呈现:**这些都挺少见的。一些公司可能会要求你介绍一个过去的项目,或者进行一个简单的分析,并通过 powerpoint 展示你的发现。如果他们让你出席,他们可能是想测试你与商业利益相关者交谈的能力。
成功秘诀:
- 试着集中讲述一个关于你的项目的好故事,你为什么使用你所做的方法,以及结果是什么
- 花点时间让你的幻灯片在视觉上吸引人
- 用数据支持你的每一句话
- 提前准备好潜在的问题
如果你通过了前两个阶段,他们会带你去办公室进行面对面的面试。如果你住在全国各地或申请一份远程工作(视频面试),也有例外。
在办公室里,你通常会与团队和整个公司的人进行 2-5 次面谈。以下阶段可以按任何顺序进行。你的面试时间表很大程度上取决于面试你的人的时间表。
第 3 阶段:采访数据科学家(30 分钟-1 小时)
在你进入办公室后,公司会让你与团队中的一名数据科学家交谈。这次面试可能会变得相当专业。预计他们会问你简历上的项目和你方法背后的逻辑。他们可能还会要求你解释一些你所使用的算法背后的数学原理。
如果他们有任何关于带回家测试的问题,他们通常也会在这里问。由于这是一个他们熟悉的项目(他们可能自己参加了评估),所以要准备好回答有关数据清理、模型选择等问题。
最后,如果有时间,他们可能会问几个行为面试问题。这些很重要,因为如果你得到了这份工作,你很可能会和这个人一起工作。如果你能在这里建立一种联系,这将大有帮助。
成功秘诀:
- 花点时间彻底检查你简历上的项目。能够深入解释你使用的任何算法
- 回顾一般数据科学面试问题,这些问题通常基于统计数据。你可以在这里找到这些的例子
- 回顾你的评估,思考你可以改进分析的方法
- 询问他/她在公司的经历
第 4 阶段:现场编码考试(30 分钟— 1 小时)
通常,上一节中的同一位数据科学家会给你另一个快速的技术评估。这一篇主要关注 SQL 或一些轻量级的 python 数据操作。
对于这些问题,他们要么给你一台电脑,要么让你在白板上解决问题。他们希望你按照自己的方式来编写代码。
成功秘诀:
- 在线练习 SQL 问题。确保您了解查询基础知识(SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY)、连接类型、自连接、子查询等。
- 熟悉 pandas 和 numpy 的数据操作(如果可以使用 Python 的话)
- 有同伴在场的情况下,在一张纸上或白板上练习解决问题
第 5 阶段:与数据科学经理或主管面谈(30 分钟-1 小时)
在一天中的某个时候,你会和一位人事经理交谈。此人可以是数据科学总监、分析副总裁、数据科学经理等…他们会再次关注你是否适合这个团队。
期待他们询问你过去参与的项目。他们通常会更关注你所使用的过程,而不是技术算法。他们可能还会问你和项目经理相处的经验以及不同的项目管理哲学。在这种情况下,技术问题通常很少出现,除非这位经理有大量的量化背景。
在这次面试的行为部分,他们想更好地了解你的目标。他们可能会问你希望如何在公司成长,或者你想在工作中学习什么。
成功秘诀:
- 在早期阶段询问团队使用的 PM 哲学。做一些功课,这样你至少对它有一个基本的了解
- 想想你想在工作中学习什么,你想在公司里有什么样的发展轨迹
- 询问公司提供的管理理念、工作自主权和职业发展方面的问题
第 6 阶段:汇报(30 分钟-1 小时)
这个面试一般留到最后。在较大的公司,这将是与人力资源代表,但在一些较小的公司,这可能是一个机会,以满足首席技术官或首席执行官。此对话还将包含一个重要的 fit 部分。这是你重申你对公司及其使命的兴奋之情的机会,为什么你会是一个很好的人选,以及你如何能为组织创造独特的价值。
从我的经验来看,你的面试官会问一些问题,然后让你掌握主动权。
成功秘诀:
- 不要害怕谈论你自己,只要你把它与你为什么爱这家公司或者你如何能为它创造价值联系起来
- 赞美别人,如果你在和首席执行官或首席技术官谈话,不妨说你很喜欢其他面试
- 询问有关公司未来和下一步行动的问题
你可能面试的其他人
主要嫌疑人是数据科学团队的成员或技术招聘人员,但也有一些其他人可能是面试过程的一部分。也有可能会有多人同时面试你。
以下是一些其他类型的面试官:
- 项目经理——如果你得到了这份工作,你将每天和这些人一起工作。他们通常会问你关于你的工作风格和你使用不同类型的项目管理框架的经验。
- 商业利益相关者——这些人会从你的工作中受益。他们可能会问你如何传达信息和发现。
- 招聘经理——这个群体关注的是你在公司的适合度。他们想看看你是否对工作充满热情,是否认同公司文化。
- 数据工程师或软件工程师——如果你经常和他们一起工作,有时他们会让这些人面试你。他们还可以管理 SQL 评估。
最后的想法
希望这份指南能让你更好地理解面试中会发生什么。当这个过程的不确定性减少时,我相信它实际上是有趣的。如果你想成功,在行为部分和技术部分都表现出色是很重要的。很多次,我看到候选人得到工作,因为面试官相信他们的潜力和激情,尽管他们的技术能力有限。在面试之前,你应该尽可能多地对将要面试你的人进行调查。发现人们的共性和趋势与发现数据一样重要。
数据科学家独角兽
数据科学是一个热门话题。每个公司都在寻找数据科学家,让他们变得数据驱动,突然离开所有那些老式的基于知识的决策。
公司毫不犹豫地开始寻找数据科学家。但是,知道一个数据科学家到底应该做什么吗?
数据科学家职位发布
让我们来看看人们对数据科学家候选人的最大要求是什么:
- 定量学科的博士学位或同等经验(如统计学、生物信息学、计算机科学、数学、物理学等)。)
- 精通 ETL 技术(Talend,Pentaho DI,SQL Server Integration Services)。
- 丰富的可视化工具经验(Tableau、Qlik、Power BI 等)
- 精通大数据生态系统(Spark、Hadoop、Mahout、Kafka 等。)和编程语言:Python,R,Java,C++。
- 有机器学习和深度学习框架的经验:TensorFlow,PyTorch,Keras,Caffe 等。
这里我们暂停一下。数据科学家似乎是在定量领域有很强背景的人。
此外,数据科学家精通 BI 工具。候选人应该能够为我们的业务和产品团队提供出色的仪表板。
这个人将最终知道如何扩展我们的数据生态系统,这样我们就不用再等待计算复杂的查询。这变得令人震惊。
数据科学家将帮助我们实现每个人都在谈论的那些顶级算法。最后,不仅大数据,深度学习也将统治我们的业务!
看了这个,就没有疑问了。数据科学家可以为我们公司增加巨大的价值。我们的公司将成为数据驱动的公司,大数据和深度学习将推动公司走向成功。
啊!我们不要忘记一些基本的东西。数据科学家应该拥有优秀的沟通技巧、商业思维、主动性和尽可能多的软技能!
失望
我们提供的薪水高于平均水平,找不到像我们要问的这种数据科学家。
这是怎么回事?如果没有博士学位,为什么人们称自己为数据科学家?
一个数据科学家怎么可能不精通复杂的 SQL 查询呢?
我真不敢相信这个候选人从来没用过 Tableau!我如何知道我们的概念验证的影响?
缩小你的搜索范围
在现实世界中,找到一个在定量领域有很强背景并精通特定业务和数据技术的人是一项挑战。有时您可能会找到这些独角兽,但是您最好根据您的问题和特定需求缩小搜索范围。
有时,您可能需要商业智能专家来提供这些见解,以更好地了解您的业务,并做出人工数据驱动的决策。关键词: ETL,SQL,Pentaho,Tableau,Qlik,…
在其他情况下,您可能希望找到能够满足您数据需求的声音数据工程师。这些人可以将您的旧数据仓库转换成可扩展的东西。**关键词:**卡夫卡,EMR,S3,Dataproc,数据流,红移,数据湖,数据仓库,Java,Scala…
数据科学和数据工程是相对较新的术语,含义模糊。我觉得还是分析一下自己的具体需求,寻找合适的人选比较好。从小事开始,迭代通过一个完整的数据驱动的结构。但是,你需要数据科学家和那些拥有大量数据库和工程技能的人。
这位数据科学家负责 Kaggle 上的“数据科学为善”竞赛。
在与 Shivam Bansal 的对话中:一位数据科学家,一位 Kaggle 内核的特级大师,三次获得 Kaggle 数据科学良好竞争奖。
通信是一门艺术,也是数据科学领域的有用工具。能够交流见解是必要的,以便其他人可以根据这些发现的结果采取所需的行动。传达 数据的最有效方式之一是通过**讲故事。**但要成为引人注目的故事讲述者,我们需要简化事情,而不是复杂化,这样分析的真正本质才不会丢失。总之,不要单纯的展示数据,用数据讲一个故事。
在本期 Kaggle Grandmasters 的采访中,我将向您展示一位讲故事大师的惊人而鼓舞人心的旅程:Shivam ban sal,一位 Kaggle 内核大师和 H2O.ai 的高级数据科学家。他目前不在新加坡,正在参与 H2O.ai 的 APAC 活动。Shivam 是来自印度的计算机科学毕业生。他于 2019 年获得了新加坡国立大学的商业分析硕士学位,并获得了杰出顶点项目奖。
Shivam 有一个非常有趣和专注的 Kaggle 旅程,用他自己的话说:
“我在一月份加入 kaggle,到了年底,我成为了内核 特级大师, 达到了 综合排名第二, 获得了 10 个内核奖 (其中包括三个 周内核奖 和四个
以下是我与 Shivam 对话的摘录:
- Kaggle 最初吸引你的是什么,你是什么时候赢得第一次胜利的?
Shivam:2014 年我在第一家公司工作的时候认识了 Kaggle。我正在开发一个文本分析框架,包括情感分析,与此同时,一个类似的竞争也在 Kaggle 上运行。我当时并没有加入 Kaggle,而是把它作为一些好的讨论和知识的参考。2018 年初,我在四年后加入了 kaggle,并参加了一场关于有毒评论分类的比赛。在那次比赛中,我从别人分享的很多内核中学到了很多。我意识到 Kaggle 内核是任何试图学习和实践数据科学的人最有价值的工具之一。我还决定分享其中一个内核作为比赛的一部分,幸运的是它被选为其中一个奖项的获胜者。
在【2018 年 4 月,我参加了 DonorsChoose 、 Kaggle、和 Google 组织的Data science for good competition。我在一个内核中创建了一个混合推荐引擎,它被选为比赛的获胜者。这是我在卡格尔的第一次重大胜利。
- 你为什么为了好的竞争而决定进入数据科学?
Shivam’s Winning Submission: https://www.kaggle.com/shivamb/1-bulletin-structuring-engine-cola
希瓦姆 :我喜欢参与数据科学的有益挑战。这些竞赛提出了一系列特殊的、独特的、具有挑战性的问题陈述。与排行榜进行评估的传统 ML 特定竞赛不同,这些竞赛更加开放。这种竞赛要求解决方案在数据科学的几乎所有方面都是完整的,从数据挖掘、清理、工程、分析、建模、可视化、洞察力,以及最重要的讲故事。我喜欢这些比赛非常接近现实生活中的数据科学项目。
- 从你的内核可以推断,你通常会把一个问题分解成更小的部分。这种方法如何帮助你解决问题?
Shivam :任何分析或数据科学问题本质上都是非结构化的。这意味着没有明确的目标和任务要完成;因此,有时很难建模和接近。我总是试图通过将问题分解成更小的任务来使问题陈述有一个结构。然后,我试着将任务联系起来,准备一个粗略的管道,包含每项工作可能的解决方案/代码。
作为第一个目标,我确保创建一个端到端的内核版本,所有组件和任务都准备好了。在这一点上,结果可能不是有效的,并且是最先进的,但是我通过添加可视化、洞察力、解释、代码重构等来迭代地改进我的内核。这种方法使整个问题状态和解决方案变得清晰,也有助于提高与分析性思维、结构化思维和批判性思维相关的技能。
- 除了在您的内核中显而易见的全面分析之外,您还具有可视化结果的能力。数据可视化作为数据科学家的一项技能有多重要?
Shivam :可视化是整个数据科学工作流程的重要组成部分。清楚地显示数据集中存在的信息和见解的能力是业内高度赞赏和追求的技能。无论是在 EDA 阶段还是后建模阶段;可视化发挥了重要作用。您的作品的最终用户可能并不总是理解数据或结果的技术方面,但是当使用不同的图、交互、动画和各种图表进行可视化时,它会变得更加明显。视觉在许多领域都显示出了重要性——数据故事,向业务用户展示数据的洞察力,甚至解释黑盒机器学习模型。
- 你是 H2O.ai 大师库中的最新成员。作为 H2O.ai 的数据科学家,你的角色是什么?你在哪些具体领域工作?
Shivam with some of the fellow Kaggle Grandmasters at H2O.ai
Shivam :我的目标是为 H2O.ai 目前正在开发的新产品做出贡献,并通过新的功能和配方来帮助改善 DriverlessAI。我希望产生影响的一些领域是无监督的机器学习、自然语言处理、自动洞察、视觉分析、自动叙事的自然语言生成以及人工智能。我还积极与 APAC 地区的销售和售前团队合作,以吸引更多客户,教育潜在客户,并帮助他们解决具体的项目和问题。此外,我还与客户成功团队合作,帮助不同的组织在其项目中实现人工智能。
- 除了 Kaggle,能不能分享一些对数据科学初学者有用的资源?
Shivam :除了 Kaggle 之外,我还从像 Analytics Vidhya、Towards Data Science 和 KDnuggets 这样的博客和网站学到了很多东西。这些博客是了解新概念的好来源。为了获得更全面的数据科学知识,我推荐像 deeplearning.ai 和 fast.ai 这样的专家开设的课程。
- 你想在 ML 中应用你的专业知识吗?
【希瓦姆】 :为发展中国家的弱势人群解决小额信贷问题。许多个人或小企业无法获得贷款,因为他们无法从银行获得贷款,因此没有信用记录。我想使用网络科学、图论和非结构化数据等概念来开发模型,以帮助这部分人群。
- 对于刚刚开始或希望开始数据科学之旅的数据科学有志者,有什么建议吗?
Shivam :数据科学是关于想法和实验的。这都是关于尝试那些想法和实验,一次又一次地重复,直到达到一个成功的阶段。这是关于培养“愿意尝试”不同实验和失败的心态。也是要迈出第一步,不断进步。
Shivam won the Outstanding Capstone Project Award from the National University of Singapore for creating a platform for Alternative Credit Scoring for SMEs using unstructured data and deep learning.
另一个有价值的建议是始终从端到端的角度考虑问题。这意味着在开发数据科学解决方案时,有必要牢记业务视角。这种想法有助于为手头的任何业务问题提出一个创造性的相关解决方案。
最后,在开始学习数据科学时,互联网上有大量有用的资源,拿一个,开始一个,坚持下去,完成它。有这么多的资源在那里,很容易被分散注意力,我已经看到许多人没有做到这一点。要从任何课程中获得最大收益,最好的方法就是完成它。
Kaggle 上的 Shivam 内核总是彻底研究、清晰文档和高质量可视化的完美结合。他在工作背后付出的努力是巨大的,也是显而易见的。Ben Shneiderman 曾经说过可视化的目的是洞察力,而不是图片,Shivam 的内核就是这一事实的见证。
阅读本系列的其他采访:
- Bojan Tunguz :从学术界到 Kaggle:物理学家如何在数据科学中找到爱情
- Rohan Rao:数据科学家从数独到 Kaggle 的旅程
人员分析的新时代
用图表技术建立组织智能能力
对于每一个现代企业来说,要克服人力资本管理中最大的战略挑战——培养和留住人才、提高绩效、实现增长思维和发展敏捷的工作文化s——能够利用人员数据是至关重要的。然而,领先的全行业人力资本管理调查发现,大多数组织几乎只具备最基本的人员分析能力,即“运营报告”。在接受调查的行业领先组织中,只有相对较小比例的组织利用预测分析,更小比例的组织仍在利用这些预测算法来自动化和增强 HCM。
许多组织面临的现实是,“他们的人员数据”实际上并不属于他们。他们的人把他们的数据放在流行的职业网络上——当然是 LinkedIn 以及许多开放的职业网络/社区平台中的一个上。可以理解的是,价值部分来自于联系。
许多大型组织已经经历了无数次 HCM 平台和组织内部网络工具的尝试,一个接一个的失败。太多的人陷入了像 LinkedIn 这样的开放网络平台一样的前意识空间,并且在这样做的时候,很少被理解。虽然可以从这些开放网络工具的用户体验和算法行为中学到很多东西,但组织内部网络在很大程度上未能实现它们最重要的优势——在用户组织* 环境中获得有形和相关好处。*
重建社会企业
如今,企业比以往任何时候都更需要找到从员工数据中获取价值的方法,即*管理人才、理解网络和促进工作文化。事实上,调查反复发现,员工希望他们的雇主在这方面做得更好。这也得到了前所未有的员工流失率和蓬勃发展的招聘行业的支持。终身工作怎么了?*
如今,要想成功建立社会企业,意味着至少在员工的意识中创造和征服一个新的空间,让员工和公司都能找到相关性和价值。重建社会企业并不是为了与开放的网络平台竞争;这是关于建立一个内部联系的社区,在这里,获得学习、职业发展和个人成功的回报在组织文化中根深蒂固,参与的价值是巨大的。只要说“网络”是支撑这种智能能力的技术就够了,因为人与人之间的数据本质上是相互联系的。
People Data is Connected
人员数据已连接
如果能从 LinkedIn 等职业网络的统治地位中学到什么,那就是连接数据驱动价值。人员数据已连接。在隐私限制范围内,兴趣、奖励、经验、兴趣、职位、表现、技能以及这些与每个人的联系推动了巨大的洞察力和价值。
人员数据不仅相互连接,而且相互关联。例如,如果员工 Anne 拥有某个空缺职位所需的技能,我们可能会向她推荐该职位。相反,如果 Anne 对她感兴趣的角色需要一项技能,我们可能会向她推荐一门课程,使她能够获得这项技能。
Talent Management Scenario with Connected People Data
有了这些明确定义的数据之间的关系,组织发展和利用人才、评估和提高绩效的机会是巨大的。继续这个例子,安妮正在走的路;她尚未获得的技能;她在组织中的影响力和她被裁掉的几率更容易量化,因为人们对它们的理解更深入。更重要的是,因为个人愿望——远不止是报酬——得到了更好的理解,奖励也更有意义,参与数据处理的程度也更高了。
进入图形数据库的世界
能够理解人们学习什么、与谁互动、与什么互动的不断发展的关系是人力资本管理的关键。开发、维护和查询关系 SQL 结构以从人员数据中提取含义,是在错误的工作中使用错误的工具。另一方面,开发和维护一个图不仅仅是更高的性能,而且允许分析师通过来自业务用户的持续反馈进行迭代开发*,*,因为用图建模对用户来说足够直观,易于理解。这就是原生图技术的无模式本质,数据用户变成了数据分析师,人们数据探索的机会——通常保留给数据科学家的任务——变成了每个团队和每个员工的可能性,无论是初级还是高级。所有这一切开创了人员分析的新时代,在这个时代,人员数据是相互关联的,可供每个人使用,分析就像组织和决策者希望的那样敏捷。
展望未来,图表技术为人员分析带来了巨大的机遇,原因如下:
员工采用的社交企业应用需要建立在图表的基础上——因为围绕学习、职业发展和支持的个性化建议和预测性分析都可以通过图表轻松实现,内容将更加相关,因此员工更有可能与这些应用互动。
更好地洞察人员数据 —人员数据高度关联。图表为关联数据提供了理想的技术堆栈,而用于中心性和社区检测的图表算法提供了使用关系表结构难以获得的洞察力。
组织变得更具适应性 —图表支持以灵活的方式处理数据,这是适应不断变化和发展的人力资本市场的关键。特别是,通过图表,业务用户可以为定义和发展图表模型做出积极的贡献,这意味着数据的分析和视图总是相关的。
提高效率和分析能力 —数据分析师不必像查询关系结构那样编写耗时的连接,而是可以重新分配到更高级的任务,例如开发用于高级分析的图形模型。
分析变得大众化并推动决策制定 —查询图表比关系结构更直观,可视化工具为整个企业的决策者提供了强大的故事讲述功能。
接下来去哪里?
查看运行中的人员图表。在我的下一篇文章中,我将构建一个人物图表,向您展示图表如何提高 HCM 能力。如果你喜欢你所看到的,或者想要更多关于为你的组织建立一个人的图表的信息,Twitter DM @jamesdhope。
参考资料:
[1]德勤人力资本趋势 2019,https://www2 . Deloitte . com/insights/us/en/focus/Human-Capital-Trends . html
[2]https://neo4j.com/developer/
[3]BlueDataLab.com,人物数据分析案例研究
数据科学家之死
AutoML 会取代数据科学家吗?
AutoML 来了!
A brief history of AutoML platforms
在 2018 年,科技巨头谷歌和微软向世界介绍了他们的 AutoML 服务:谷歌云 AutoML 和 Azure 机器学习。从那以后,这些服务的受欢迎程度和受关注程度直线上升。在这篇博文中,我们将讨论 AutoML 是什么,目前有哪些平台,以及数据科学家最关键的问题:AutoML 会取代我们吗?
汽车简介
在介绍 AutoML 时,不能不提到机器学习项目的生命周期,它包括数据清理、特征选择/工程、模型选择、参数优化,以及最后的模型验证。随着技术的进步,传统的数据科学项目仍然包含大量的手动流程,并且仍然非常耗时和重复。
source: R. Olson et. al. (2016) “Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science.”
AutoML 的出现自动化了从数据清理到参数优化的整个过程。它在时间节约和性能方面为机器学习项目提供了巨大的价值。
有哪些 AutoML 平台可用?
1.谷歌云汽车
Google Cloud AutoML 于 2018 年推出,凭借其用户友好的界面和高性能迅速获得了人们的喜爱。下面的图表展示了谷歌与其他 AutoML 平台相比的表现(蓝条)。
Source: Tackling High-Value Business Problems Using AutoML on Structured Data (Cloud Next ‘19)
2.微软 Azure AutoML
同样在 2018 年发布的 Azure AutoML 为其不熟悉编码的用户提供了一个透明的模型选择过程。
3.H2o.ai
“H2O 一直是建造大规模模型的驱动力。我们谈论的是数十亿的索赔。你不能用标准的现成开源技术做到这一点。”— H2o.ai
H2o 成立于 2012 年,提供开源包和名为无人驾驶人工智能的商业汽车服务。自问世以来,H2o 已被广泛应用于金融服务和零售等行业。
4。 TPOT
TPOT(基于树的管道优化工具)由宾夕法尼亚大学开发,是一个免费使用的 Python 包。虽然是免费的,但该软件包非常强大,并在各种数据集上取得了出色的性能:虹膜数据集的准确率约为 97%,MNIST 数字识别的准确率为 98%,波士顿房价预测的准确率为 10 MSE。(资料来源:TPOT 文件)
AutoML 与数据科学家
现在我们知道了 AutoML 是什么,有哪些选项可用,我们将解决房间里的大象:这些平台将取代人类数据科学家吗?我们将从成本的角度来看这个问题,并运行一个黑客马拉松来评估汽车“与人类相比的性能”。
成本比较
根据 Indeed.com 的数据,美国数据科学家的平均年薪为 121,585 美元。与此同时,如果一家公司为一个全职职位(每周 40 小时,每年 52 周)雇用一名 AutoML,每年的成本将从 4160 美元到 41600 美元不等,具体取决于它选择的平台。
诚然,这不是一个科学上合理的比较,因为我们都知道数据科学家不仅仅是运行模型。然而,这是一种非常快速和简单的方式来显示数据科学家和 AutoML 在成本方面的立场。
Data Scientists vs. AutoML Cost Comparison
性能比较:黑客马拉松
我们将通过使用两个数据集运行黑客马拉松,继续比较人类数据科学家与 AutoML 平台的性能。在每个数据集中,一组人类数据科学家将与 AutoML 平台竞争。两个团队都将经历数据处理、特征选择/工程、模型选择和参数调整,以得出具有预定性能指标的最佳预测结果。
Hackathon Dataset 1: Speed Dating (Classification)
Hackathon Dataset 2: ASHRAE (Regression)
数据集 1:速配数据集
数据集概述
这个数据集是从实验性速配活动的参与者那里收集来的。在这些活动中,参与者会填写一份调查,其中包括关于他们自己的信息,以及他们在伴侣身上寻找的东西。例如,他们在 1-10 的范围内对自己的雄心有多高,他们参与的活动是什么,你希望你的伴侣有多高的雄心。该数据集的目标是预测个人是否能够根据他们对特征的偏好找到匹配。这是一个以“匹配”变量作为因变量的分类问题。
数据科学家的数据预处理和特征工程
为了获得比 AutoML 平台更好的结果,我们需要对数据集进行特征工程,处理类不平衡问题,处理缺失值,并对分类变量进行一次性编码。因为数据是通过调查收集的,所以我们面临着整个数据集中缺少值的问题。如果这个人没有参与或者觉得回答这个问题很舒服,他们就把它留为空白。这些缺失值通过适当地输入均值、中值或众数来处理。数据在一些独立变量之间存在共线性,因此某些变量被删除。只有 29%的从属标签的二进制值为 1,而其他的为 0。为了解决这个问题,我们使用了 SMOTE(合成少数过采样技术)。SMOTE 从少数类创建合成样本,而不是简单地复制数据。独热编码变量在 Google 平台上尤其麻烦,因为该平台无法以提取有意义信息的方式对它们进行分组。
我们现在将使用原始数据和功能工程数据来分析 Azure 和 Google 的 AutoML 平台的整体有效性。
数据科学家 vs AutoML 平台
**数据科学家:**我们尝试了几种不同的模型,发现 XGBoost 和神经网络模型表现最好。我们在这里查看 AUC ROC 分数,以便比较我们的模型与这些 AutoML 平台创建的模型的结果。我们的 XGBoost 模型和神经网络模型的 AUC ROC 值分别为. 77 和. 74。
**原始数据上的 AutoML 平台:**谷歌的表现比 Azure 的 XGBoost 模型好一点。谷歌的 AUC ROC 得分为 0.881,而 Azure 的 AUC ROC 得分为 0.865。谷歌的平台不会告诉我们哪个模型被选为最佳模型,因为这些信息被认为是专有的。另一方面,Azure 会告诉你到底运行了多少个模型,每个模型下的分数是多少,以及训练每个模型所花费的时间。
**基于已处理数据的 AutoML 平台:**我们现在想要测量我们的特征工程数据集的性能。我们注意到了一些事情:谷歌的性能下降了,而 Azure 的性能提高了。正如前面提到的,one-hot 编码对于 Google 的 AutoML 有一个问题,这个平台是为了执行它自己的功能工程而创建的。因此,为特征工程数据提供一次性编码变量会降低整体性能。Azure 的性能从. 865 提高到. 885。
这是 Azure 在这个数据集上运行的模型的图片:
你还可以在 Google 和 Azure 的平台上查看精确召回图、ROC 图、混淆矩阵和功能重要性图:
快速约会数据集的要点:
- 数据科学家可以通过向 AutoML 平台提供功能完善的工程数据集来增加价值。
- Azure 在告知预测中使用了哪个模型方面更加透明;谷歌的模型创建和选择信息是专有的。
- Google 没有很好地处理一次性编码变量。
数据集 2: ASHRAE
数据集概述
该数据集来自 ASHRAE 能源预测 Kaggle 竞赛,该竞赛要求参赛者为 1,449 栋建筑的热水、冷水、蒸汽和电表读数开发预测模型。数据由建筑物的元数据组成,包括平方英尺、建造年份和楼层数;按时间戳显示的仪表类型和读数;和天气数据,包括气温、云量、降水深度、风速、风向度数和海平面气压。天气数据由最近的气象站在现场收集。
数据科学家的数据预处理和特征工程
天气数据集中的缺失值是一个需要解决的重大问题,因为云覆盖率和降水深度要素分别缺失了 50%和 35%的值。一些气象站点丢失了所有的云覆盖率和降水深度数据。为了克服这一障碍,我们尝试对气温、露点温度、风速和海平面气压特征中的缺失值进行插值,这些缺失值包含很少的零值,并使用插值数据开发云覆盖率和降水深度的预测模型。
我们使用 10 重交叉验证为每个特征选择插值方法,并将其应用于我们的训练和测试数据。我们运行了一系列模型来预测云覆盖和降水深度,但没有找到一个足够精确的模型来生成缺失值。风向按区间重构为一组分类变量,由于风速严重向右倾斜,我们对其进行了对数变换。此外,我们还构建了一些特性,如假日、周末和特性的滞后项。总的来说,我们在 13 个原始特性的基础上构建了 19 个特性,总共有 32 个变量。
最后,我们删除了在一个气象站点收集的异常天气数据,然后应用向前、向后和逐步选择来确定最佳预测特征,最终使用了 32 个变量中的 13 个。
数据科学家 vs AutoML 平台
**数据科学家:**由于训练集和测试集包含相同的建筑物,因此我们没有为所有建筑物创建通用模型,而是为数据集中的每个建筑物构建了光梯度增强模型。通过这种方法,我们获得了 0.773 的 RMSLE。
**原始数据上的 AutoML 平台:**一个小时的训练时间,Google Cloud 取得了 1.017 的 RMSLE 额外训练 3 小时将 RMSLE 提高了 0.011。谷歌轻松超过 Azure,后者的 RMSLE 为 2.22。这不是一个完全公平的比较,因为我们将 Azure 限制为随机森林,因为只有这个方法会返回一个 RMSLE。
**处理数据的 AutoML 平台:**我们通过谷歌云运行处理后的数据,当经过 4 个小时的训练后,谷歌云达到 1.7 的 RMSLE 时,我们感到惊讶。经过进一步研究,我们发现我们的特征选择方法抑制了 AutoML 的性能,因为 AutoML 平台将执行自己的特征选择。我们再次在两个平台上运行处理后的数据,使用所有 32 个变量,而不是只有 13 个。这一次,两个平台的性能都有所提高。Google Cloud 在一个小时的训练后获得了 0.755 的 RMSLE,在四个小时后获得了 0.656 的 RMSLE,这是数据科学家表现的一个重大改进!Azure 在一个小时的训练中达到了 3.826 的 RMSLE,在四个小时后达到了 3.653。
ASHRAE 数据集的要点:
- 虽然 AutoML 是一个强大的预测工具,但它不能很好地预处理数据,以持续超越人类。
- 额外几个小时的培训可以大大提高 AutoML 平台的性能。
- 允许 AutoML 平台为您选择功能;否则,您将面临严重限制平台性能的风险。
- 将数据科学家对业务问题的专业知识与 AutoMLs 的特征选择、特征预处理、模型选择和超参数调整功能相结合,是获得有价值见解和强大预测结果的有效解决方案。
结论和关键要点
最后,我们想通过回答三个问题来结束我们的项目。
AutoML 会取代数据科学家吗?
答案是否。
虽然 AutoMLs 擅长建立模型,但它们仍然无法完成数据科学家的大部分工作。我们仍然需要数据科学家来定义业务问题。我们仍然需要数据科学家应用他们的领域知识来生成更多有用的特征。现在的 AutoML 只能处理有限类型的问题,比如分类和回归问题。目前,他们没有能力建立推荐和排名模型。最重要的是,我们仍然需要数据科学家从数据中得出可操作的见解,这不能仅靠 AutoMLs 来完成。
然而,AutoMLs 仍然是数据科学家为其利益相关者创造价值的强大工具。因此,下一个明显的问题是:我们应该如何以及何时使用 AutoML?
数据科学家何时能最好地利用 AutoML 平台?
这里我们想提一些可能值得考虑的例子。
- 性能超过可解释性:
有时,涉众可能只关心模型的精确性,而可解释性不是最重要的考虑因素。基于我们的实验,AutoMLs 与合理的特征工程一起,似乎可以获得令人满意的性能。然而,在我们的例子中,可解释性仅限于两个平台的特性重要性。换句话说,如果特性的重要性足以解决您的问题,那么 AutoMLs 可能是获得更高精度的正确选择。
- 生产速度:
Google 和 Azure 都提供了将模型部署到产品中的便捷方式。例如,谷歌云允许批量预测和在线预测,只需几次点击。它还允许您使用他们的 API 将您的模型部署到您的网站。这些功能可以让数据科学家加快生产过程并减少工作量。
- 更好地利用你的时间:
数据科学家有太多的职责,可能会让人不堪重负。作为一名数据科学家,时间可能是你最稀缺的资源。您的时间被与利益相关者(产品经理、业务部门的员工和客户)的无数会议所占据,维护现有的模型,收集/清理数据,准备下一次会议,并且列表还在继续。AutoML 是一个很好的工具,可以节省你的时间,因为它只需要你点击几下鼠标,花几块钱就可以训练出一个具有足够性能的模型。因此,您可以专注于产生最大价值的任务(有时花时间准备精彩的演示比提高 1%的模型准确性更有价值)。
哪个 AutoML 比较好?(Google Cloud AutoML vs. Azure 机器学习)
上表总结了我们在 Google 云和 Azure 上使用 AutoMLs 的经验。这里我们想指出一些细节。
- 用户体验:
我们在使用 Azure 时遇到了一些错误。当我们在 ASHRAE 数据集(大约 2000 万行,30 列)上训练模型时,三分之一的实验失败了。我们设置了训练时间限制,以使两个平台具有可比性,但对于像 ASHRAE 这样的大规模数据集,一个小时的限制可能会导致一些错误。然而,当运行一个更小的数据集时,比如我们的速配数据集,这个过程是相当有效的。另一方面,我们在谷歌平台上没有遇到任何问题。
- 可解释性:
谷歌的 AutoML 使用其专有的深度学习算法。因此,就可解释性而言,Google AutoML 能做的最好的事情就是打印出特性的重要性。另一方面,在 Azure 中,可解释性本质上取决于您使用什么模型。虽然 Azure 中的所有模型都比 Google 的模型更容易理解,但它仍然更灵活。例如,如果您使用由 Azure 调整的 XGB 模型,您可以下载该模型并在其上运行 SHAP,以了解功能如何影响模型的输出。
尝试 AutoMLs 前的一些提醒:
- 使用 Google 的 AutoML 时,让平台负责特性选择。正如我们的实验所示,在数据集上运行 Google 的 AutoML 之前选择/删除特征会损害性能。更好的方法是添加你认为适合原始数据集的任何功能,让 Google 的 AutoML 挑选最佳功能。
- 如果你正在处理一个大型数据集,谷歌的 AutoML 可能是一个更好的选择。如果你必须使用 Azure 的平台,确保你设置了更高的时间限制(或者根本不设置限制),以防止潜在的错误。另一方面,如果你的数据集相对较小(少于一百万行),Azure 可能会表现得更好。
- 命名不带空格的列。在两个平台上上传数据集时,包含空格的列名可能会导致错误,所以请确保正确命名列!在 Python 中,推荐使用下划线(_)代替空格。
- 熟悉评估指标。下面我们列出了两个平台上可用的评估指标。有时您可能找不到您想要用来训练模型的指标,因此您需要一个代理指标。因此,了解每个指标的特性有助于您选择评估指标以及合适的 AutoML 平台。
参考
- 速配数据集
- ASHRAE 数据集
- TPOT
- 比较机器学习即服务:亚马逊、微软 Azure、谷歌云 AI、IBM Watson
- 在结构化数据上使用 AutoML 解决高价值业务问题(Cloud Next’19)
贡献者
Joseph Chin ,UT joseph.chin@utexas.edu 奥斯汀 MSBA 20 年
艾法兹·戈瓦尼,aifazg92@gmail.com 奥斯丁 20 岁
20 年 gabejames@me.com 奥斯丁 183;MSBA
马修彭, UT 奥斯 MSBA 20:
围绕数据隐私的辩论没有抓住要点
Photo Credit: Polaris Pacific
数据处理席卷了整个世界。企业、政府和个人都开始意识到数据可以帮助他们做出更明智的决定,知道如何与其他国家谈判,或帮助改善他们的睡眠周期。虽然人工智能和机器学习领域已经并将继续给我们的世界带来新的理解水平,但在这条发展道路上并不是一帆风顺的。
所有人工智能和机器学习算法的发展都需要使用数据,而且是大量的数据。随着普通大众越来越多地了解他们的日常行为如何被用作开发这些算法的数据点,围绕数据隐私的对话正在获得巨大的吸引力。欧盟最近通过了一项围绕数据隐私的主要法律,名为《通用数据保护条例》(GDPR),对科技公司管理和收集用户数据施加了更多监管。在美国,加利福尼亚州最近通过了他们自己的消费者隐私法案,该法案也有类似的目的,以确保人们的数据受到保护和隐私,并且只用于用户同意的目的。我想提出的问题是:数据隐私是我们应该为之奋斗的东西吗?
首先,让我们谈谈人们以数据隐私的名义试图实现(或试图进一步实现)的一些解决方案。最容易的替罪羊之一就是匿名。大型科技公司表示,即使他们在各种分析中利用用户数据,也没有办法将数据追溯到用户,所有私人数据属性(姓名、社会保障/国民身份信息等)都将被删除。)都在分析前去掉了,而且那只是百万分之一,又有什么坏处呢?不幸的是,许多组织已经表明匿名数据并不像我们想象的那样匿名。虽然这些公司和政府对我们的数据感兴趣的目的可能并不关心我们的识别信息,但任何能够接触到数据集的人,只要有足够的技能,都可以很容易地识别出组成数据集的真实个人。这使我们都成为身份盗窃、勒索和无数其他剥削行为的目标,任何人都不应该遭受这些行为。
如果我们不能做到匿名,而数据又与我们密不可分,那么至少让我们从中赚点钱吧!让我们根据人们为所有这些组织产生的数据的价值向他们支付报酬。这是许多人提出的想法,特别是 Will.i.am,他认为下一个合乎逻辑的步骤是数据的商品化。隐私国际对他的文章进行了反驳,称“我们也有一些非常实际的担忧,这让我们对数据货币化持怀疑态度。你的个人数据实际上并没有那么有价值。虽然整个数据市场可能价值 3 万亿美元…但访问海量聚合数据才是有价值的。”
所以我们不能让它匿名,也不值得我们花时间去商品化它,我们该怎么办?对此的答案是加强对如何收集和使用数据的监管和限制(即欧盟和加州),但这种应对措施实际可行吗?
每天创建的数据量惊人。随着大量的大型科技公司、政府机构和手机上的小应用程序跟踪你花在游戏和窃听上的时间,我们几乎不可能跟上我们作为一个物种创造的所有数据。 IBM 估计人类每天会产生万亿字节的数据,我们的数字足迹每年都在翻倍。在数据创建的大部分历史中,消费者有责任意识到他们通过使用服务放弃了什么数据。他们需要通读隐私政策,了解科技公司的最新动向,并决定何时放弃通过某个软件提交更多数据。这不仅是令人生畏的只是打字,但对于这种数据使用方式的任何支持者来说,剑桥分析/脸书丑闻及其对我们脸书数据的自由支配应该让任何人暂停对用户的责任。正如 Brookings.edu 在他们最近的一篇研究论文中所说,
“也许知情同意在二十年前是可行的,但在今天却是一种幻想。在持续不断的在线互动中,尤其是在现在占大多数使用的小屏幕上,通读隐私政策是不现实的。而人们根本不会。”
我明白他们的意思。我都不知道上一次阅读我注册的新服务的隐私政策是什么时候了。当世界以我们过去十年设定的速度前进时,要筛选的信息太多了。这些政策也是具有法律约束力的文件,因此在任何组织保护自己的努力中,我们都“同意”的这些隐私声明不太可能在短期内改变。
Brookings 的文章接着说,有必要制定基本的隐私立法,以便用户始终了解他们的数据是如何被使用、存储和共享的,以及这些数据是根据他们的兴趣和收集这些数据的情况使用的。这个概念被称为数据最小化,虽然表面上听起来是个好主意,但它并不真正符合最近的人工智能实践。正如《国际数据隐私法》中的一篇社论文章所详述的那样,这种数据最小化的想法并不适合人工智能的发展。我们世界中的许多进步都发生在所谓的“黑盒”人工智能开发周期中,但在这些黑盒中,很难预先知道在一个意外相关的世界中什么是必要的。定义数据的目的有时是一个争论点,因为机器学习模型的目的可能会在整个学习过程中完全改变。如果在使用这些模型的过程中出现了意想不到的创新,偏离了一个用户认为他们的数据将如何实现的方式,我们该如何利用这种洞察力呢?在知道结果可能是什么的情况下,我们必须去找每一个用户并获得他们的许可才能重新进行实验吗?如果有人拒绝,我们是不是被迫把这种见解扔出窗外,因为它是通过百万用户之一不同意的方式炮制出来的?除了记录他们过去所做的决定,个人并没有真正参与到这种创新的创造中,所以一旦发现,他们在创新的发展中应该有什么发言权呢?
在这场辩论中,人们还经常忽视使用这项技术带来的隐私好处,而仅仅关注技术侵犯我们当前隐私状态的方式。与其说是明显的隐私损失,不如说是一种权衡。有了网上购物,我可以买一盒花生酱,并让他们送货上门,我从来没有机会碰到我的健身模特朋友,她会骂我奢侈。当我们没有机会让我们的朋友看到我们亲自购买这些东西时,购买性玩具甚至仅仅是避孕套是一种更加舒适和私密的体验。作为回报,我们告诉亚马逊算法我们喜欢什么样的东西,他们可以记录我们在他们的平台上做出的这些决定,以便从他们的合作伙伴那里向我们发送更准确的建议。我们可以在网飞看我们最喜欢的罪恶快感节目,我们的朋友都不知道,网飞可以看到电视和电影发展的总趋势。有一种技术让人们在搜索互联网时有更多的隐私,帮助那些在专制政权下的人获得免费和开放的数据。随着我们进入一个连通性更强、数据流动更自由的时代,我们将很难阻止这一趋势,特别是如果我们的决策记录的交换意味着人们生活在一个更安全的社会。
监控摄像头和面部识别软件,尤其是警方在调查中使用的监控摄像头和面部识别软件,已经成为一个热门话题。 Data Innovation 最近围绕这些预防性安全措施进行了一项调查,结果发现,首先,美国人并不那么关心面部识别软件及其开发。
Credit: Datainnovation.org
另一方面,监控摄像头的使用(在面部识别过程中广泛使用)人们更加警惕…直到摄像头的使用被置于安全的背景下,意见的分布发生了逆转。
Credit: Datainnovation.org
似乎人们很愿意牺牲隐私,如果这意味着他们在日常生活中感到更安全的话。公共卫生呢?虽然谷歌流感趋势的初始运行飞得很高,然后崩溃,但访问我们的更多数据可能正是一个新模型所需要的,以更准确地预测流感趋势。沃森正在研究一张又一张 x 光片,以了解如何比任何人类医生更好地识别肿瘤,这是因为患者向 IBM 放弃了一部分隐私,这无疑有助于确保他们发现任何癌症,并帮助下一位患者得到更好的诊断。
如果我们能够通过及早发现这一趋势来防止每年数百人死于流感,那会怎么样?如果从红色标记的谷歌搜索中,我们可以在悲剧发生前提醒当地警方一名可能的枪手前往一个节日?如果我们让癌症筛查变得如此具有预测性和可负担性,癌症死亡将成为一种罕见的事件,而不是我们所有人预期的年龄增长,会怎么样?这都是可能的,但这需要一个契约,放弃我们的一些安全来换取另一种安全。
许多年来,人类一直在个人经验高于一切的假设下运作。每个人都是自己命运的主人。我认为我们的文化越来越重视个人经历,越来越重视个人对整个人类知识和生存的贡献。我们数据的总和大于其组成部分,我们需要这些贡献来保持自己前进。“自由主义”被定义为个人经验是世界上最有价值的商品,尤瓦尔·哈拉里说,“如果谷歌做出足够好的决定,人们会授予它越来越多的权力。随着时间的推移,数据库将会增长,统计数据将会变得更加准确,算法将会改进,决策将会更好。自由主义会在系统比我更了解我自己的那一天崩溃。这并没有听起来那么难,因为大多数人并不真正了解自己……”
虽然关于我们的哪些数据是私人的,哪些公司和机构有权使用的辩论正在激烈进行,但它忽略了所有这些复合数据将我们引向一条新的道路,即集体比个人更有价值。我不知道这对我们来说是否是一条更好的道路,但我可以看到它作为一个物种将如何成长,并取得超出我们想象的成就。团队总能比个人做得更好。随着我们走向这种集体人性思维模式,隐瞒数据以让自己感觉更安全的想法变成了一个道德难题。如果我们的价值大部分来自我们为人工智能处理和发现见解而创造的数据,那么隐瞒这一点意味着我们从整体上降低了价值,我们正在犯道德错误。我们正在用数据隐私换取另一种隐私和惊人的增长,在我看来,这是一笔相当公平的交易。
与 R 闪亮的十年回顾!
用 R Shiny 可视化过去十年世界发展指标的演变
这是漫长的一年。确切地说,这是一个漫长的十年。ISIS 已经被正式消灭,抗击小儿麻痹症的战斗取得胜利,南苏丹隆重地成为一个国家,冥王星从可爱的小行星变成了绕着太阳转的矮星,莱斯特城赢得了英超联赛,Kanye 发布了他标志性的 Yeezy,我们现在可以在旅途中听音乐,而不用长电线缠绕我们的头发,苹果公司成为世界上第一个万亿美元的公司,Ted Mosby 最后告诉他的孩子他是如何遇见他们的母亲的,我学会了 R 闪亮!
在从郑中的 google 图表绑定中得到急需的灵感后,我决定好好利用我过去几十年的学习。
这是一个交互式的 R Shiny 应用程序,它描绘了世界银行在过去十年中所有国家的主要发展指标的演变。该应用程序允许您选择要在 X 和 Y 轴上动态绘制的指标以及所需的年份。
发布所需的选择后,将绘制一个气泡图,该图描绘了两个变量之间的关系,气泡由该国的地理区域(T3)和人口(T4)决定大小。
如上所示,当光标悬停在每个气泡上时,会弹出一个工具提示,指示其特征值。
你也可以通过点击位于年份滑块斜下方的“播放”按钮来观看这两个变量在过去十年中的演变。
有充分的理由欢呼!世界各地的人们越来越长寿,越来越富裕,越来越能上学&我们中的许多人甚至在空气中排放越来越少的二氧化碳。
为又一个十年的进步干杯&闪亮的应用程序阐明了这一点!
你可以在我的 github 这里找到数据集和代码。
感谢阅读!
人工智能的十年
过去十年人工智能影响的完整概述。
过去十年见证了人工智能的伟大崛起。这项技术几乎在所有领域都产生了影响。它已经成为一个超级大国,改变了我们互动的方式,在未来,它可能会改变我们的生活方式。吴恩达引用“人工智能是新的电力”,我们可以看到电力正在改变许多行业。我不得不等到 12 月 31 日才发布这篇博客,因为这个领域发展如此之快,以至于我们甚至可以在十年的最后一天发布一些突破性的消息。
这十年 AI 快速增长的两大原因是:
-
数据 —由于互联网和物联网设备,产生的数据量呈指数级增长。
-
计算——我们在之前几十年面临的阻碍被解决了,这反过来又助推了 AI 的力量。许多公司已经开始创建专门用于训练深度学习模型的硬件。
罗伯特·清崎有一句名言“预测未来的最好方法是研究过去,或预测”。
因此,让我们来看看过去十年中在人工智能领域发生的重要事件。这是我的概述,如果我错过了,你可以在评论区添加你的最爱,但我希望我已经涵盖了大部分,所以让我们开始吧。
十年的开始:
2010 年:
ImageNet 比赛的开始
ImageNet 大规模视觉识别挑战赛(ILSVRC) 评估大规模对象检测和图像分类的算法。这是迄今为止用于评估分类模型性能的基准。它还提供了训练大型模型的数据。
Source: https://syncedreview.com/
苹果收购 Siri:
据报道,苹果以大约 2 亿美元的价格收购了 Siri。该公司立即开始研究如何将 Siri 植入 iPhone。乔布斯亲自动手让人工智能助手变得对用户友好。Siri 是我们今天拥有的虚拟助手的开端。(不过托尼·斯塔克有 2008 年的贾维斯。)
**T21【deep mind】成立 **
Deepmind 科技公司是一家英国人工智能公司,创始人之一是戴密斯·哈萨比斯。这家公司在这十年里对 AI 产生了巨大的影响。
微软为 Xbox 360 推出 Kinect
首款使用 3D 摄像头和红外检测跟踪人体运动的游戏设备。 Kinect 可以以每秒 30 帧的速度对人体进行全动作追踪。这是游戏和计算机视觉领域的重大突破。
2011 年:
IBM 沃森赢得危险
IBM Watson,自然语言问答计算机,在 Jeopardy 上比拼!击败了两位前冠军。沃森是机器理解人类语言语境能力的重大飞跃。
source: youtube.com
CNN 的崛起
一个卷积神经网络以 99.46%的准确率(相对于人类的 99.22%)赢得了德国交通标志识别比赛。这是机器获得视觉能力的开始。
2012 年:
著名的猫 Vs 狗
杰夫·迪恩和吴恩达训练了一个由 16000 个处理器组成的大型神经网络,通过向它显示来自 YouTube 视频的 1000 万张未标记的图像来识别猫的图像(尽管没有给出背景信息)。
source: youtube.com
美国有线电视新闻网ImageNet 竞赛的艺术状态
多伦多大学研究人员设计的卷积神经网络在 ImageNet 大规模视觉识别挑战中实现了仅 16%的错误率,与前一年最佳参赛作品实现的 25%的错误率相比有了显著改善。
2013:
尼尔,永不落幕的形象学习者
永无止境的图像学习者(NEIL) 是一个 24/7 工作的计算机程序,学习关于它在互联网上找到的图像的信息。位于卡内基梅隆大学的 NEIL 并不只是寻找任何类型的信息。相反,它的目标是学习日常生活中的常识性关系。当然,这对人类来说是常识性的信息,但它早已超出了计算机的能力范围。
2014:
甘的发明
通过让神经网络相互对抗,伊恩·古德菲勒创造了一个强大的人工智能工具。现在他和我们其他人必须面对后果。甘给了机器想象力和创造力。
source: pathmind.com
Alexa
Amazons 虚拟助手,最早发布于 echo 和 echo dot。它能够进行语音交互,播放音乐,制作待办事项列表,设置闹钟,播放播客,播放有声读物,并提供天气,交通,体育和其他实时信息,如新闻。Alexa 还可以将自己作为家庭自动化系统来控制几个智能设备。
特斯拉自动驾驶
特斯拉汽车公司公布了其第一款自动驾驶仪。配备该系统的 S 型汽车能够根据信号图像识别进行车道控制,自动转向、制动和限速调整。该系统还提供自主停车,并可以接收软件更新,以随着时间的推移提高技能。
source: inverse.com
收购 Deepmind
谷歌以 4 亿欧元收购 deepmind ,facebook 也试图收购这家公司,但谷歌敲定了这笔交易。
我们的十年已经过去了一半,你可以看到人工智能已经开始产生很大影响,科技巨头们正在该领域进行大量投资。让我们看看在这个十年的后五年我们会有什么惊喜。
2015:
张量流释放
谷歌开源了其深度学习框架 Tensorflow ,这可以被认为是重要的时刻之一,因为它给了每个人构建伟大模型的工具。TensorFlow 是一个机器学习的端到端开源平台。它有一个全面、灵活的工具、库和社区资源的生态系统,让研究人员推动 ML 的最新发展,开发人员轻松构建和部署 ML 驱动的应用程序。
Facenet 论文
谷歌发布了关于人脸识别的论文 Facenet ,这标志着面向广大用户的人脸识别的开始。
在 Imagenet 中击败人类
在第六届 ImageNet 大规模视觉识别挑战赛上,微软和谷歌机器在图像识别方面击败了人类。这些机器超越了人类,因为深度学习算法使它们能够识别 1000 多种类别的图像和物体。这些算法源自各种版本的模拟人脑工作方式的人工神经网络。这一令人兴奋的新突破允许智能系统自动执行需要识别物体或人的任务,然后根据该识别决定如何进行。
开启 AI 创立
OpenAI 是一个研究人工智能领域的非营利组织,由埃隆·马斯克(Elon Musk)创立。它主要在深度强化学习领域发挥作用。
Yolo 纸
YOLO(你只看一次),一种新的物体检测方法。先前关于对象检测的工作重新利用分类器来执行检测。但 YOLO 是一个单一的神经网络,在一次评估中直接从完整的图像预测边界框和类别概率。由于整个检测管道是单个网络,因此可以直接对检测性能进行端到端优化。
source: Hackernoon.com
2016:
AlphaGo 击败世界冠军:
谷歌 DeepMind 的 AlphaGo 五次中有四次击败了世界冠军 Lee Sedol。围棋比国际象棋或西洋跳棋要复杂得多,它拥有巨大的棋盘、多样的策略和近乎无限的走法,除了人类的智慧之外,它从来就不意味着能被任何东西掌握。
source: youtube.com
TPU 被释放:
一个张量处理单元(TPU) 是 Google 专门为神经网络机器学习开发的 AI 加速器专用集成电路(ASIC)。这是在谷歌 IO 中透露的。正是硬件推动了谷歌的突破性技术。
索菲亚
索菲亚是由香港汉森机器人公司开发的一款社交人形机器人。索菲亚可以模仿人类的手势和面部表情,能够回答某些问题,并就预先确定的话题进行简单的对话。
source: businessinsider.com
释放 PyTorch:
PyTorch 是基于 Torch 库的开源机器学习库,用于计算机视觉、自然语言处理等应用。它主要由脸书人工智能研究实验室(FAIR)开发。它是在修改后的 BSD 许可下发布的免费开源软件。尽管 Python 接口更加完善并且是开发的主要焦点,PyTorch 也有 C++接口。
谷歌助手发布:
谷歌发布了自己的虚拟助手,与 Alexa 和 Siri 竞争。智能音箱使用人工智能作为“个人助理”,帮助用户通过语音记住任务、创建约会和搜索信息。
2017:
AlphaZero
继 2016 年击败最佳人类围棋选手后,AlphaGo 在一年后升级为更强大的通用化身, AlphaZero 。除了基本的游戏规则,AlphaZero 在没有任何人类指导的情况下,在短短四个小时内学会了如何独自玩大师级的国际象棋。然后,它在一场 100 局的比赛中击败了斯托克菲什(顶级人工智能国际象棋选手)——一局未输。
人工智能语言
脸书人工智能研究实验室训练了两个对话代理人(聊天机器人)互相交流,以学习如何谈判。然而,随着聊天机器人的交谈,它们脱离了人类语言(用英语编程),发明了自己的语言来相互交流——在很大程度上展示了人工智能。
ONNX
脸书和微软联手实现人工智能框架互操作性,这两家科技巨头在合作伙伴社区(包括 AWS、英伟达、高通、英特尔和华为)的帮助下,开发了开放神经网络交换(ONNX) ,这是一种表示深度学习模型的开放格式,也允许模型在一个框架中训练,并转移到另一个框架进行推理。
source: https://microsoft.github.io/
变形金刚 :
Transformer 是一个深度机器学习模型,主要用于自然语言处理(NLP)领域。像递归神经网络(RNNs)一样,转换器被设计为处理有序的数据序列,如自然语言,用于各种任务,如机器翻译和文本摘要。然而,与 rnn 不同,变压器不要求按顺序处理序列。因此,如果所讨论的数据是自然语言,转换器在处理句子结尾之前不需要处理句子的开头。由于这个特性,Transformer 在训练期间允许比 RNNs 更多的并行化。
2018:
剑桥分析丑闻:
脸书-剑桥分析公司数据丑闻是 2018 年初的一个重大政治丑闻,当时剑桥分析公司被披露在未经同意的情况下收集了数百万人的脸书个人资料,并将其用于政治广告目的。我们从这个问题中得到的一个好处是,人们开始知道他们的数据的重要性和安全性。
source: thegardian.com
1000 万英里乘 waymo
Waymo 正在打造世界上最有经验的司机,在公共道路上的自动驾驶里程超过 1000 万英里,模拟驾驶里程接近 70 亿英里。发现他们一路上看到和学到的东西,从我们前进道路上的文字曲线球,到低能见度沙尘暴的导航,以及更多意想不到的场景。
deep fakes:
Deepfakes 是一种媒体,它利用人工神经网络将现有图像或视频中的一个人替换成另一个人的肖像。他们经常使用被称为自动编码器和生成对抗网络(GANs)的机器学习技术将现有媒体组合和叠加到源媒体上。
source: miro.medium.com
AlphaFold:利用 AI 进行科学发现
AlphaFold ,建立在使用大量基因组数据预测蛋白质结构的多年前期研究基础上。AlphaFold 生成的蛋白质 3D 模型比以前的任何模型都要精确得多——在生物学的核心挑战之一上取得了重大进展
伯特
谷歌开发了 BERT ,这是第一个双向、无监督的语言表示,可以通过迁移学习用于各种自然语言任务。
2019:
用机械手解魔方
OpenAI 成功训练了一只名为 Dactyl 的机器人手,它在解魔方 d 中适应了真实世界的环境。机器人完全在模拟环境中训练,但能够成功地将知识转移到新的环境中。为了提高灵活性,OpenAI 使用了自动域随机技术,并提高了手解魔方的能力。虽然 Dactyl 解决了立方体问题,但关键是能够在机器人未经训练的环境中提供结果。
Deepfakes 检测挑战
Deepfake 检测挑战赛邀请世界各地的人们建立创新的新技术,帮助检测 deep fake 和被操纵的媒体。识别被操纵的内容是一项技术要求很高且快速发展的挑战,因此各公司正在合作开发更好的检测工具。挑战的组织者是 AWS、BBC、CBC、脸书、初稿、微软、纽约时报、WITNESS 和 XPrize。
Tensorflow 2.0 发布
TensorFlow 2 专注于简单易用,拥有急切执行、直观的高级 API、在任何平台上灵活建模等更新。TF 2.0 的开发考虑到了 Keras。与 TensorFlow 1.x 中默认的静态图形不同,它有动态图形。
source: tensorflow.org
比医生更能发现肺癌的 AI
谷歌研究人员最近与西北医学合作,创造了一个比人类放射科医生更准确地检测肺癌的人工智能系统。一种深度学习算法被用来训练这个系统,它解释计算机断层扫描(CT)扫描,以预测一个人患疾病的可能性。
项目通过 IP 连接家庭
苹果、谷歌和亚马逊正在合作开发一个开源智能家居标准,旨在确保设备协同工作,使新设备的开发更容易,并在此过程中保持一切安全。它的许多董事会成员,包括宜家、三星 SmartThings 和飞利浦 Hue 背后的公司 significance。
OpenAI 一款电竞游戏的五个世界冠军
DOTA 2 不是个人的游戏,它由一个五人团队组成。因此,重要的是人工智能能够与团队中的其他人工智能协调。 OpenAI Five 在总决赛中背靠背战胜 Dota 2 世界冠军 OG,成为第一个在电竞游戏中击败世界冠军的 AI。
source: openai.com
可交代艾
我们允许人工智能做出关键决定,在目前的场景中,理解人工智能做出的决定对我们来说很重要,它不应该再是黑盒了。许多公司发布了服务,允许企业强调导致其机器学习模型结果的主要因素。这是第一次,公司能够清除云,并深入了解黑匣子的工作方式。尽管人们还不能从模型中获得结论的所有方面,但它在民主化人工智能中有着更突出的作用。
十年总结
你可以看到人工智能对这十年的影响,大多数是积极的影响,但很少对社会产生负面影响。人工智能本身没有好坏之分,它是一项技术,它取决于我们人类是否将它用于正确的事业。
人工智能的未来
人工智能的发展似乎不会很快放缓。人工智能冬天现在似乎不会再发生了。随着该领域数据、计算和研究的增加,人工智能正在快速发展。有一件事是肯定的,人工智能会一直存在,你不能逃避它,所以我们最好适应和它比赛。我们可以想象未来有联网汽车带我们去各个地方,有比任何人都了解我们的虚拟助手,无人驾驶飞机在订购后一小时内交付产品,可能性是无限的。有一天我们可能会达到人工智能。
推进他们在人工智能的伦理、人工智能的偏见和人工智能的民主化方面必须回答的许多问题。政府和公司需要一起制定法律来管理人工智能的发展。我们正在建设未来,让我们确保为每个人建设未来。
感谢阅读这篇博客,我希望它让你对人工智能在过去十年的发展有了一个大致的了解。博客上有很多链接,你可以在那里探索每个事件的更多信息。如果你想对任何事件进行更多的讨论,请在下面留下评论。我祝愿你们都有一个令人敬畏的十年,让我们看到我们在这十年中共同跨越的界限。
您可以在上连接
推特: suryamaithreyan
邮件 ID:suryamaithreyan@gmail.com
领英:迈特瑞恩·凯萨万
深度音乐可视化:用声音探索比根的潜在空间
人工智能艺术家、视觉骑师、联觉者和心理学家的工具。
A deep musician
A deep music video
想做一个有深度的音乐视频?把你的思想放在比根身上。由布洛克等人(2018) 在谷歌开发的 BigGAN 是生成对抗网络(GANs)的简史中的最近一章。gan 是由两个竞争的神经网络训练的人工智能模型:一个生成器基于从一组示例图像中学习的统计模式创建新图像,一个鉴别器试图将图像分类为真实或虚假。通过训练发生器欺骗鉴别器,甘人学会了创造逼真的图像。
BigGAN 被认为是大的,因为它包含了在数百个谷歌 TPU 上训练的超过 3 亿个参数,估计花费了 6 万美元。结果是一个人工智能模型,它从 1128 个输入参数中生成图像:
I)对应于 1000 个 ImageNet 类或对象类别的权重{0 ≤ 1}的 1000 单位类向量。
ii)128 单位的噪声向量的值{-2 ≤ 2},控制输出图像中对象的视觉特征,如颜色、大小、位置和方向。
在花瓶类中,除了 1 以外的 0 的类向量输出一个花瓶:
在不改变噪声向量的情况下在类别之间进行插值揭示了潜在空间中的共享特征,如人脸:
随机向量之间的插值揭示了更深层次的结构:
如果你感兴趣,加入艺术家、计算机科学家和神秘动物学家在这个陌生前沿的探险。像art breader这样的应用程序已经为创建人工智能艺术品提供了简单的界面,当一些用户忙于搜索蒙娜丽莎时自主人工艺术家出现了。
其他人给比根配乐。
这些“深度音乐视频”获得了不同的反应,在美丽、迷幻、和恐怖之间变化。平心而论,明智的做法是害怕潜伏在潜在空间中的东西…
还有哪些不太可能的嵌合体、神秘的生物、无价的艺术品和熟悉的梦居住在比根?为了找到答案,我们需要覆盖更多的区域。这就是为什么我建立了 deep music visualizer,一个开源的,易于使用的工具,用声音导航潜在的空间。
一艘隐形飞船,带蓝牙。
带着它转一圈,一路上创作一些很酷的音乐视频。一定要分享你的发现。
教程:使用深度音乐可视化工具
克隆 GitHub 库,并遵循自述文件中的安装说明。
深度音乐可视化器使用 BigGAN (Brock et al .,2018),一种生成神经网络来可视化音乐。像这样…
github.com](https://github.com/msieg/deep-music-visualizer)
在您的终端中运行以下命令:
python visualize.py --song beethoven.mp3
就是这样。以下是输出结果:
这是怎么回事?deep music visualizer 将 pitch 与类向量同步,将音量和速度与噪声向量同步,这样 pitch 控制每一帧中的对象、形状和纹理,而音量和速度控制帧之间的移动。在歌曲的每个时间点,十二个半音音符的色度图确定类别向量中多达十二个 ImageNet 类别的权重{0 ≤ 1}。独立地,音量(主要是打击乐)的变化率控制噪声矢量的变化率。
视频定制
解决
- 128、256 或 512
- 默认值 : 512
比根很大,因此很慢。如果你在笔记本电脑上运行第一个例子,大概需要 7 个小时来渲染。分辨率为 128x128,只需 25 分钟(每分钟视频)。
python visualize.py --song beethoven.mp3 --resolution 128
然而,我建议你通过在 google cloud 上启动虚拟 GPU 来生成高分辨率视频,从而将运行时间从大约 7 个小时大幅缩短到几分钟。虽然它不是免费的,但谷歌会奖励新用户 300 美元的积分,而 GPU 的费用是每小时 1 美元。
持续时间(秒)
- 整数≥ 1
- 默认:音频全长
在测试一些其他输入参数时,生成较短的视频以限制运行时间可能是有用的。
音高敏感度
- 范围:1–299
- 默认 : 220
音高敏感度是类别向量对音高变化的敏感度。在更高的音高敏感度下,视频中的形状、纹理和对象变化更快,并且更精确地符合音乐中的音符。
速度敏感度
- 范围:0 ≤ 1
- 默认值 : 0.25
速度敏感度是噪声向量对音量和速度变化的敏感度。更高的速度敏感度产生更多的运动。
在本例中,由于音高敏感度较高,类与音高紧密相关,但由于速度敏感度较低,整体运动很少。
python visualize.py --song moon_river.mp3 --duration 60
--pitch_sensitivity 290 --tempo_sensitivity 0
在本例中,由于音高敏感度较低,类别混合几乎没有变化,但由于速度敏感度较高,整体移动较多。
python visualize.py --song moon_river.mp3 --duration 60
--pitch_sensitivity 10 --tempo_sensitivity 0.6
民数记班
- 1–12
- 默认 : 12
减少类的数量以混合更少的对象。
班级
- 多达 12 个索引{ 0–999 },对应于 1000 个 ImageNet 类
- 默认:12 个随机指数
您可以选择要在视频中包含哪些课程。这些类别按照半音顺序(A、A#、B…)与音高同步。
或者,如果您喜欢按优先顺序输入类,则将 sort_classes_by_power 设置为 1。
在这个例子中,视频包括雏菊 (#985)和水母 (#107),但其中雏菊比水母多:
python visualize.py --song cold.mp3 --duration 10
--pitch_sensitivity 260 --tempo_sensitivity 0.8 --num_classes 2
--classes 985 107 --sort_classes_by_power 1
帧长度
- 64 的倍数
- 默认: 512
帧长度是每个视频帧中音频样本的数量。默认帧长度为 512,视频帧速率约为 43 fps。减少帧长度会增加帧速率,因此图像会更频繁地更新(但视频会花费更长的时间来渲染)。这对于可视化快速音乐非常有用。
python visualize.py --song T69_collapse.mp3 --duration 30 --num_classes 4 --classes 527 511 545 611 --sort_classes_by_power 1
--frame_length 128
我希望你觉得这个教程很有趣,内容丰富。如果你想表达感谢,发推特给我一个你用这段代码创作的深度音乐视频!
你可以在这里找到更多我的视频。
开放式问题
- 甘斯不能创造什么样的艺术?艺术一定要模仿现实吗?
- 音乐有内在的视觉结构吗?某些声音、乐器、歌曲和流派是否由某些 ImageNet 类更好地表示?有联觉的人可能会这么想。
- 比格根的艺术能力是不是可以用深度神经网络和人类视觉皮层之间的表征相似性来解释?如果是这样,潜在空间能代表人类想象力的拓扑图吗?BigGAN 能预测物体的可成像性吗?例如,想象一个挂钟。你真的想象过所有的数字吗?比根也没有。
未来项目
- 构建一个实时响应现场音乐的可视化工具。
- 使用自然语言处理基于与歌词(或有声读物)的语义关联来自动选择 ImageNet 类。
- 在 fMRI 中向人们播放音乐,并将类别和噪声向量与神经活动相结合,以创建来自大脑的深度音乐视频。
- 所有这些同时发生吗?
参考
[1] A. Brock,J. Donahu 和 K. Simonyan,高保真自然图像合成的大规模 GAN 训练(2018),第八届学习表示国际会议。
[2] N. Kriegeskorte,深度神经网络:生物视觉和大脑信息处理建模的新框架(2015),视觉科学年度评论。
创建具有行业要求和约束的学术级数据集的明确指南
创建您自己的数据的指南,并附有有价值的信息,以帮助您做出关键决策。
Teenagers playing football, Ipanema beach, Rio De Janeiro, Brazil. Ektar 100 Film, by Ori Cohen.
在下面的文章中,我将讨论开始一个研究项目的过程,在这个项目中,一个新的全监督分类模型需要一个学术级别的数据集,如斯坦福大学和其他学术机构共享的数据集。我将分享我们做出的决定,我们创建和购买的工作流程和工具。请记住,即使本指南围绕一个特定的研究,我们在情感分类这个主题上做的许多研究之一,你也可以用它来概括许多其他的研究。但首先,让我们谈谈情感分类,以及我们 (Zencity )需要在公司内部开发一个创建学术级数据集的管道的原因。
情感分类是一个经典的任务,已经被研究、讨论和撰写了很长时间。在内部,我们使用了 VADER ,这是一种已知的情绪算法,使用专门调整的规则和词汇来理解社交媒体情绪。该算法在附加规则方面得到了改进,词典扩展了数千个单词,以支持一年内与城市相关的社交媒体内容。使用我们改进的算法,我们测量的准确率为 89.5%。然而,随着公司的发展,我们对客户需求的理解也发生了变化。因此,我们希望开发一个情感定义和一个新的算法,可以帮助我们更好地根据客户的感受来表达情感的概念。我们还需要保持非常高的精确度,这反过来使我们能够为城市提供可操作的见解。例如,通过使用 VADER,任何带有“警告”一词的帖子都可能被归类为负面情绪。然而,警报不一定是负面的。对于城市,警报可以是中性的,例如交通警报。此外,由于业务限制,到目前为止,每个样本都是由一个人在一本解释什么是城市情感的 4 页代码书的指导下进行标记的。
该项目的要求是了解情感分析的最新水平,以便设定基线,以及生成新数据集的适当标准和工作流程。我们希望根据推荐的最佳实践创建一个新的与城市相关的情绪定义,以简化手动注释的过程,训练并最重要的是验证新模型,并实现非常高的准确度和精确度,特别是对于新的“负面”类,这对于我们的客户非常重要。
基线
那么,社交媒体情感分类的最新水平(SOTA)是什么呢?最近在 ACM Transactions on Management Information Systems 上发表的一篇评论和基准评估文章,在 5 个独特的 Twitter 数据集上对 28 个顶级学术和商业系统进行了基准测试,显示跨系统和领域的总体平均情感分类准确率为 61%。最高测量精度为 76.99%,如图 1 所示。在另一项研究中,使用深度学习(图 2),我们看到高达 87.5%的分类准确率。这些数字让我们对什么是 SOTA 有了一个相对清晰的了解,在不同的领域使用不同的算法不会产生相同的结果。
Figure1: sentiment analysis results using 28 algorithms on 5 distinct datasets
Figure 2: sentiment analysis results using machine and deep-learning algorithms using binary and 5-class sentiment-based datasets.
标准和工作流程
回顾相关文献,学术级注释项目的重点似乎是:
- 按职位多数表决。
- 简单的定义和简短的任务描述。
- 定期测量注释者的表现和注释者之间的一致性。
- 适当采样并创建数据集。
- 小心选择注释解决方案
- 使用一个简单的注释界面来帮助注释者专注于一个简单明了的任务。
按样本多数投票
决定基于多数投票的项目是重要的第一步,这是任何注释项目的关键点,因为它增加了项目性质的复杂性。复杂性,比如在额外的注释器上花费更多的钱,创建一个支持多个注释器的基础设施,开发跟踪进度的脚本,以及在日常分析中投入时间,以确保每个注释器都在正轨上。我们不希望单个注释者影响我们的新数据集,给它添加偏见或引入噪声。例如,共享同一个房间的注释者可以影响他们自己,如果他们在相互交谈时重新解释指令的话。一个注释者可能在某一天醒来,完全改变了他们的方法,因此,拥有一个监控机制并在这种情况发生时微调他们的理解是明智的。
简单的定义和简短的任务描述
我们还想更换我们的 4 页说明书。我们的想法是决定一个新的与城市相关的情感定义,专注于我们客户的需求,并创建一个非常简短的任务描述,即新情感的单行定义和少于半页的说明。最终的定义是“居民对城市中发生的任何事情满意(积极)或不满意(消极)的表示”,如图 3 所示。
Figure 3: the new sentiment definition and annotator instructions.
如你所见,定义非常清晰,说明也很简短。我们可以在下面的例子中看到,中性的例子在古典情感方面可能被认为是负面的,然而,根据新的定义,它是中性的。作者没有明确地说他们对他们所写的问题是否满意。请注意,反面和正面的例子明显遵循新的定义。
中立:贝赛尔县大陪审团周二决定不起诉前圣安东尼奥警官,他被指控在他当时的女友公寓外用石头殴打她。
消极 : 不冷静。偷包裹的人已经在圣诞老人的淘气名单上了。这家伙从 X 巷 9999 街区的一户人家拿走了一个包裹。如果你认识他,请联系侦探。布兰科,电话 999–999–99999,或发电子邮件至
正面消息:阿灵顿警察局很自豪地雇佣了许多现任和前任美国军人。我们感谢他们的服务,我们很荣幸他们选择为我们部门工作。
衡量绩效和一致(或不一致)
在项目期间,我们需要测量几个度量标准,以便理解和控制注释过程的各个方面。衡量标准包括:
- 自我认同,这有助于我们识别低质量的注释者。我们通过每 K 个样本插入重复的帖子来做到这一点。
- 相互一致,这是对任务的客观难度的一个很好的估计。对于多注释者,我们使用 Fleischer 的 Kappa,对于两个注释者,我们使用 Cohen 的 Kappa。对我们来说,高于 0.55 的值被认为是一个好的估计值。
- 所有注释者之间的一致百分比。这是相互一致性的另一个估计值,对我们来说,值 0.65 与 Fleischer 的 kappa 高度相关,被认为是相互一致性的良好估计值。
- 事实验证。我们使用相同的多数投票程序,将我们内部标记的样本插入数据集。请记住,因为我们创建了新的定义,所以我们是专家,因此,如果我们针对一个小的标记良好的数据集来度量每个注释者,我们可以看到注释者是否同意我们的观点。
请注意,我们可以创建和测量许多其他指标,但这些对我们来说已经足够了。它们帮助我们了解每个标注者每天是否可以使用新标注的数据,以及我们是否需要调整标注者对新标注方案的理解。您可以使用下面的包来度量注释者之间的分歧。
采样
现在我们知道了要测量什么,我们需要创建数据集,这是许多决策对最终数据集质量有贡献的另一点。出现了几个问题:
- 要采样的数据。
- 何时遵循哪种抽样分布?
- 使用哪种采样算法。
- 要多少样品?
在我们的例子中,我们决定对已经标记的人类认可的数据进行采样,当然,我们不使用标签本身。我们知道最好的选择是遵循每个用例的分布。以下是对我们有用的几个指导原则,它应该为您自己的数据提供一个良好的开端:
1.地面真实样本应每班统一取样。想象一下,在一个类中只有很少的样本,也就是说,您让一个类挨饿,对于一个非常小的样本,您永远无法确定您的注释器在那个类中的表现有多好。
2.应根据生产数据的分布方式对主数据集进行采样,这将允许您的模型学习相同的分布。
请记住,如果您觉得这些规则不符合您的要求、数据或不适合您的需求,应该对它们进行更改。
创建数据集
既然我们已经知道了要采样的数据以及应该遵循的分布,那么就该决定如何进行采样了。您可能会想到许多简单或更复杂的方法,但我们尝试的基本方法有:
1.使用关键字——由了解该领域的人定义。
2.使用算法-它可能是现成的算法,是您可以轻松创建的快速算法,或者是从您的领域附近的数据集进行某种迁移学习。在我们的例子中,我们采用了一个用户评论的数据集,这个数据集与我们的领域有些相似,我们选择了被标为最积极和最消极的评论,并用它们来训练样本选择分类器。
两种方法都很有效。然而,在我们的例子中,关键字方法似乎产生了更好的结果。
现在是时候决定我们项目需要的样品数量了。显然,我们拥有的越多,我们的模型就越好。我发现了一个很好的计算器,如表 1 所示,它最初是为调查而创建的,帮助我估计已知人口规模和您想要保持的置信水平所需的样本数。在我们的例子中,对于 100,000 个不同作者的估计人口规模,置信度为 95%,大约 10,000 个样本就足够了。样本的数量直接影响我们的预算和算法的选择。假设我们有 5 个注释器,每个注释器需要 10,000 个样本,我们总共需要 50,000 个带注释的样本。在某些服务中,正如我们将在后面看到的,这相当于一大笔钱。幸运的是,我的公司愿意投入资金、时间和精力来构建这些数据集。我们知道,高质量的带注释的数据集直接有助于更好、更准确的模型,并最终有助于我们为客户提供价值。样本的数量也会影响我们对算法的选择,在我们的案例中,我们尝试了经典的机器学习和深度学习算法。然而,对于我们尝试的所有深度学习算法来说,我们的数据集似乎仍然很小。
Table 1: sample size calculation for a set population size based on a confidence level.
注释解决方案
有许多注释解决方案可供选择,有些比其他的便宜,有些会给你一个完整的解决方案,而其他的只会给你基础设施或人群。然而,各有利弊。首先,我将列出几个已知的,然后我们将深入几个值得注意的。您可以选择以下服务之一 1。亚马逊的机械土耳其人(AMT) ,2。八字(人群花)3。众包/劳动力/ Onespace ,5。勤杂工,6。 Samasource ,7。外包。此外,您可以选择或以下工具之一:1 . Lighttag.io 2神童 3。乳臭未干的小子
下面(表 2)代表了我对总共 50,000 个注释的初步计算。我选择比较 AMT、premium 和外包公司,因为它们代表了我们可用的服务和工具。
Table 2: various features for each annotation solution
如你所见,这是我们有多少选择的另一个好例子。总的来说,AMT 是最便宜的选择,你可以使用计算器来计算出你要花多少钱,但是请记住,如果你为每项任务支付基本的 1 美分,你可能不会被任何注释者选中。就可靠性而言,许多研究人员告诉我,这是一种赌博,即使你支付了额外费用。没有什么是可以保证的,因为任何人都可以为 AMT 工作。值得注意的是,文档是混乱和不清楚的,如果你想使用外部工具,你需要一个数据工程师来帮助你。最后,实验是完全管理的,你对过程的控制取决于你自己。
另一方面,高级服务与您合作管理几乎所有的事情。然而,一些人声称他们经历过注释,他们通过承诺超过 80%的真实可信来保持“信任”。您向他们提供您的任务描述,他们训练注释者,直到您对结果满意为止。
两全其美的方法可能是外包给外部注释公司,他们有全职员工,你可以定期与他们交流。他们有裁员计划,也就是说,如果一个员工生病了,其他人会代替他们。然而,你必须签署合同,并承诺雇佣他们一段时间,一旦开始,你就不能停下来。如果想获得最佳结果,还必须开发或提供注释的解决方案。
标注工具:
我找到了几个现成的注释工具,但最有前途的是 Brat 和 Prodigy。Brat 是开源的,似乎很少维护,它主要适合类似于 POS 或 NER 的任务。另一方面,Prodigy 对单个商业用户来说相对便宜(390 美元),拥有无限的注释器和终身许可,并且适用于 web 和智能手机。我们选择 prodigy 是因为它使用简单,高度可配置,并且在“工厂”模式下工作,专注于单一的超高速键盘快捷键。值得注意的是,prodigy 支持单用户主动学习,但是,如果您计划进行多用户主动学习,您将不得不在所有标注器之间进行同步,而这个特性还不存在。此外,不存在“用户”的概念,因此,支持管理一组注释者并将他们的工作保存到单个数据库需要一个数据工程师。Prodigy 还缺乏性能监控,并且缺少文档。然而,在他们的论坛上有积极的支持,这是一个巨大的优势。图 4。展示了 prodigy 的界面,它简单易用,允许注释者以最少的干扰专注于他的任务,即“工厂风格”。
Figure 4: Prodigy’s user interface.
成绩:
我们的项目产生了 14,000 个多数投票的样本,这意味着我们的注释者标记了大约 75,000 个帖子,超过了我们预期的每人 10,000 个帖子。在图 5 中,我们显示了 inter-agreement 和 Fleischer 的 Kappa 之间的相关性,每个都有自己的阈值。阈值有助于确定每日数据是否可信,以及我们是否应该将它包含在最终数据集中。
在图 6 中,我们看到,与注释者每天所做的量相比,基本事实度量之间存在着有意义的关联,我们看到,他们做得越少,基本事实的准确性就越高。我们还可以在图 7 中看到团队在整个时间内的平均地面实况准确性。我们选择了 70%的一致值,这将考虑到地面实况准确性不会是完美的 100%的各种原因,其中一个主要原因是一些地面实况帖子具有依赖于单一投票的多数,即 2:3 对 3:2,并且可能是地面实况中的错误。然而,这是一个过程,这就是为什么我们有门槛。
Figure 5: a correlation between Inter-agreement and Fleischer Kappa, showing the threshold we chose for keeping the daily annotated data.
Figure 6: a comparison of sample count vs ground truth accuracy
Figure 7: average annotators accuracy throughout time
使用最终数据集,我们使用各种方法(如 TF-IDF、LSA、W2V、深莫吉和 ELMO)创建要素,并使用反向翻译等方法扩充数据。我们训练了相当多的分类算法,例如校准的 SGD、ULMFit、Random Forest、XGboost、LightBoost、Catboost、LSTM、1DCNN,还堆叠了其中的几个。
我们最高的交叉验证模型使用 TF-IDF &校准的 SGD (SVM)实现了 89% 的准确率,如表 3 所示。
Table 3: precision and distribution figures for each class.
数据分析:
我们对来自美国 22 个城市的 245,469 个样本进行了测试。负面情绪下降了 6%,正面情绪下降了 19%,中性情绪上升了 25%,如图 8 所示。我们预计这些数字会根据新的定义发生变化,我们有效地从不相关的样本中清除了消极和积极的类别,例如类似“警报”的帖子、事故、交通、紧急情况等,这些现在属于中性类别,除非用户不满意出现在帖子中。
Figure 8: distribution statistics for the old sentiment vs the new sentiment
回过头来看,这个过程效果很好,我们发现了一个为我们创建高质量数据集的工作流程。请注意,我们训练的模型仅在单个时间点有效,必须定期重新训练。为此,我推荐使用具有相同多数投票过程的多注释者主动学习。然而,我们的旅程还没有结束,我们仍然需要在生产就绪环境中分析和验证该模型,并确保它符合我们客户的期望。
我要感谢来自 Zencity 的同事,他们是这个项目的重要组成部分:Samuel Jefroykin(研究)、Polina Sklyarevsky(新定义和数据)、Alon Nisser(工程)、Yoav Talmi、Eyal Feder-Levy、阿娜特 Rapoport、Ido Ivry 和 Gali Kotzer。我还要感谢我在开始这个项目之前咨询过的几位朋友和同事,Orgad Keller 博士、Eyal Shnarch 博士、Hila Zarosim 博士和 Netanel Davidovits。
Ori Cohen 博士拥有计算机科学博士学位,专注于机器学习。他领导着 Zencity.io 的研究团队,试图积极影响市民的生活。
双向注意力流动图解指南
BiDAF 的权威指南——第 1 部分,共 4 部分
本文展示了 BiDAF 的工作方式,BiDAF 是一个 NLP 模型,它在问答领域取得了突破。
Source: Unsplash
华盛顿大学的一个团队在 2016 年发表了 BiDAF。BiDAF 轻而易举地击败了当时最好的 Q & A 模型,并连续几周在斯坦福问答数据集(SQuAD) 的排行榜上名列榜首,这可以说是最知名的 Q & A 数据集。尽管 BiDAF 的性能已经被超越,但这种模式在问答领域仍然很有影响力。BiDAF 的技术创新激发了竞争车型的后续发展,如 ELMo 和 BERT ,最终 BiDAF 被淘汰。
当我第一次阅读 BiDAF 的原始论文时,我被它的复杂程度所震惊。
BiDAF 展示了一个模块化的架构——把它想象成一个由乐高积木组成的复合结构,积木是“标准”的 NLP 元素,如 GloVe、CNN、LSTM 和 attention 。理解 BiDAF 的问题是有太多的这些模块需要学习,它们的组合方式有时看起来相当“杂乱”。这种复杂性,加上原始论文中使用的令人费解的符号,成为理解该模型的障碍。
在本系列文章中,我将解构 BiDAF 是如何组装的,并以(希望)易于理解的方式描述 BiDAF 的每个组件。将提供大量的图片和图表来说明这些组件是如何组合在一起的。
计划是这样的:
- 第 1 部分(本文)将提供 BiDAF 的概述。
- 第二部分会讲到嵌入层
- 第三部分会讲到注意层次
- 第四部分将会谈到**建模和输出层。**它还将包括用非常简单的语言介绍的整个 BiDAF 架构。如果您对技术不感兴趣,我建议您直接跳到第 4 部分。
BiDAF 相对于其他 Q & A 车型
在深入研究 BiDAF 之前,让我们先把它放在更广阔的问答模型中。有几种方法可以对问答模型进行逻辑分类。以下是其中的一些:
- 开域 vs **闭域。**一个开放域模型可以访问一个知识库,它将在回答一个传入的查询时利用这个知识库。著名的 IBM-Watson 就是一个例子。另一方面,封闭形式的模型不依赖于预先存在的知识;相反,这样的模型需要一个上下文来回答一个查询。这里有一个术语的快速注释——“上下文”是一个附带的文本,包含回答查询所需的信息,而“查询”只是问题的正式技术术语。
- 抽象的 vs **抽象的。**一个抽取模型通过返回与查询最相关的上下文的子串来回答查询。换句话说,模型返回的答案总是可以在上下文中找到。另一方面, abstractive 模型走得更远:它在将子串作为查询的答案返回之前,将其解释为一种更易于阅读的形式。
- 能够回答非陈述性问题。 仿真陈述查询是其答案是简短事实陈述的问题。大多数以“谁”、“哪里”和“何时”开头的查询都是仿真陈述,因为它们期望得到简洁的事实作为答案。非仿真陈述查询,简单来说就是所有非仿真陈述的问题。非仿真陈述阵营非常广泛,包括需要逻辑和推理的问题(例如,大多数“为什么”和“如何”的问题)以及涉及数学计算、排名、排序等的问题。
那么 BiDAF 在这些分类方案中处于什么位置呢?BiDAF 是一个封闭领域的抽取式 Q 模型,它只能回答仿真问题。这些特征意味着 BiDAF 需要一个上下文来回答一个查询。BiDAF 返回的答案总是所提供的上下文的子字符串。
An example of Context, Query and Answer. Notice how the Answer can be found verbatim in the Context.
另一个小提示:你可能已经注意到了,我一直在大写单词“上下文”、“查询”和“回答”。这是故意的。这些术语既有技术含义也有非技术含义,大写字母是我用来表示我是在用它们的专业技术能力来使用这些词的方式。
有了这些知识,我们现在准备探索 BiDAF 是如何构建的。让我们开始吧!
BiDAF 结构概述
BiDAF 在上下文中精确定位答案的能力源于它的分层设计。这些层中的每一层都可以被认为是一个转换引擎,由转换单词的矢量表示;每个转换都伴随着附加信息的包含。
BiDAF 论文将模型描述为有 6 层,但是我认为 BiDAF 有 3 个部分。这三个部分及其功能简述如下。
1。嵌入层
BiDAF 有 3 个嵌入层,其功能是将查询和上下文中的单词的表示从字符串转换为数字向量。
2。注意力和建模层
这些查询和上下文表示然后进入关注和建模层。这些层使用几个矩阵运算来融合查询和上下文中包含的信息。这些步骤的输出是包含来自查询的信息的上下文的另一种表示。这个输出在本文中被称为“查询感知上下文表示”
3。输出层
然后,查询感知上下文表示被传递到输出层,输出层将将其转换为一组概率值。这些概率值将用于确定答案的起点和终点。
描述 BiDAF 架构的简图如下:
Architecture of BiDAF. Source: author
如果这些都还没有意义,不要着急;在接下来的文章中,我将详细研究每个 BiDAF 组件。第二部再见!
参考
[1] 机器理解的双向注意力流(闵俊 Seo et。阿尔,2017)
如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。另外,如果你能支持我通过我的推荐链接成为媒介会员,我会非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。
BiDAF 中的单词嵌入、字符嵌入和上下文嵌入——图解指南
BiDAF 的权威指南——第 2 部分,共 4 部分
BiDAF 是一种用于问答任务的流行机器学习模型。本文展示了 BiDAF 如何使用三种嵌入机制将单词转换成它们的向量表示。
Source: Brett Jordan from Unsplash
T 他的这篇文章是一系列四篇文章中的第二篇,旨在说明 双向注意力流(BiDAF)一种流行的问答机器学习模型(Q & A)的工作原理。
概括地说,BiDAF 是一个封闭领域,抽取的 Q & A 模型。这意味着为了能够回答一个查询**,BiDAF 需要查阅一个附带的文本,该文本包含回答查询所需的信息。这个附带的文本被称为上下文。 BiDAF 的工作方式是提取上下文中最能回答查询的子串——这就是我们所说的对查询的回答 。我有意将“查询”、“上下文”和“回答”这几个词大写,以表明我是在用它们的专业技术能力来使用它们。**
An example of Context, Query, and Answer. Notice how the Answer can be found Verbatim in the Context.
本系列的第一篇文章提供了 BiDAF 的高级概述。在本文中,我们将关注 BiDAF 架构的第一部分——当模型接收到一个传入的查询及其伴随的上下文时发生的第一件事。为了方便您的学习,最后提供了一个词汇表,其中包含了这些步骤中涉及的数学符号。让我们开始吧!
第一步。标记化
****在 BiDAF 中,传入的查询及其上下文首先被标记化,即这两个长字符串被分解成它们的组成单词。在 BiDAF 论文中,符号 T 和 J 分别用于表示上下文和查询中的字数。以下是对标记化的描述:
Step 1. The incoming Query and its accompanying Context are tokenized into their constituent words.
步骤二。单词级嵌入
产生的单词然后经过嵌入过程,在那里它们被转换成数字向量。这些向量捕捉单词的语法功能(句法和含义(语义),使我们能够对它们执行各种数学运算。在 BiDAF 中,嵌入是在三个粒度级别上完成的:字符、单词和上下文级别。现在让我们关注第一个嵌入层——单词 embedding。
**原 BiDAF 中使用的单词嵌入算法是 手套 **。在本文中,我将只给出 GloVe 的一个简要概述,因为已经有几个优秀的资源解释了该算法是如何工作的。但是如果你时间不够,这里有一个非常简单的 GloVe 总结:
****GloVe 是一种无监督学习算法,它使用语料库中单词的共现频率来生成单词的向量表示。这些向量表示在数字上代表了单词含义的各个方面。
由于组成手套向量的数字封装了它们所代表的单词的语义和句法信息,我们可以使用这些向量做一些很酷的事情!例如,我们可以使用手套向量减法来寻找单词类比,如下所示。
Pairwise distances of concepts such as aunt-uncle and woman-man are similar. Source: Stanford’s NLP Group
****BiDAF 使用预训练的手套嵌入来获得查询和上下文中单词的向量表示。“预训练”表示此处使用的手套表示已经过训练;他们的值被冻结,在训练期间不会更新。因此,您可以将 BiDAF 的单词嵌入步骤看作一个简单的字典查找步骤,我们用向量(字典的“值”)替换单词(手套“字典”的“键”)。
单词嵌入步骤的输出是两个矩阵——一个用于上下文,一个用于查询。这些矩阵的长度等于上下文和查询中的字数(对于上下文矩阵为 T ,对于查询矩阵为 J )。同时,它们的高度 d1 是预设值,等于从手套开始的向量尺寸;这可以是 50、100、200 或 300。下图描述了上下文的单词嵌入步骤:
Step 2. The word embedding step converts Context tokens into a d1-by-T matrix and Query tokens into a d1-by-J matrix
第三步。字符级嵌入
好了,有了 GloVe,我们得到了大多数单词的向量表示。然而,手套的表现对我们的目的来说是不够的!
预训练手套“字典”是巨大的,包含数百万个单词;然而,总有一天我们会在训练集中遇到一个单词,而这个单词不在 GloVe 的词汇表中。这样一个词被称为一个词汇外(OOV)词。GloVe 通过简单地给它们分配一些随机向量值来处理这些 OOV 单词。如果不加以纠正,这种随机分配最终会混淆我们的模型。
因此,我们需要另一种能够处理 OOV 词的嵌入机制。这就是字符级嵌入的用武之地。字符级嵌入使用一维卷积神经网络(1D-CNN),通过查看单词的字符级组成来找到单词的数字表示。
**你可以把 1D-CNN 想象成一个过程,我们有几台扫描仪一个字符一个字符地扫描一个单词。**这些扫描仪可以一次聚焦几个字符。当这些扫描仪扫描时,它们从聚焦的字符中提取信息。在这些扫描过程的最后,来自不同扫描仪的信息被收集以形成单词的表示。
字符嵌入步骤的输出类似于单词嵌入步骤的输出。我们获得两个矩阵,一个用于上下文,另一个用于查询。这些矩阵的长度等于上下文和查询中的字数——TT和 J——而它们的高度取决于 1D-CNN 中使用的卷积滤波器的数量(要知道什么是“卷积滤波器”,请阅读下一节)。高度在图中表示为 d2 。这两个矩阵将与我们从单词嵌入步骤中获得的矩阵连接在一起。
Step 3. The character embedding step converts Context tokens into a d2-by-T matrix and Query tokens into a d2-by-J matrix
1D CNN 的更多细节
上一节只是对 1D 有线电视新闻网的运作做了一个概念性的概述。在这一部分,我将详细解释 1D-CNN 是如何工作的。严格来说,这些细节对于理解 BiDAF 的工作方式并不是必需的;因此,如果你时间不够,可以随意跳下去。然而,如果你是那种不理解你正在学习的算法的每一个运动部分就睡不好觉的人,这一节是为你准备的!
使用 1D 有线电视新闻网的想法是,不仅单词作为一个整体有意义——单词的各个部分也可以表达意义!
例如,如果你知道“低估”这个词的意思,你就会理解“错误低估”的意思,尽管后者实际上并不是一个真正的单词。为什么?因为你从你的英语知识中知道前缀“mis-”通常表示“错误的”概念;这让你可以推断出“错估”指的是“错误地低估”某件事。
1D-CNN 是一种模仿人类理解单词部分能力的算法。更广泛地说,1D-CNN 是一种能够从长输入序列的较短片段中提取信息的算法。这个输入序列可以是音乐、DNA、录音、博客等。在 BiDAF 中,这个“长输入序列”是单词,而“较短的片段”是组成单词的字母组合和词素。
为了理解 1D-CNN 是如何工作的,让我们看看下面的一系列插图,这些插图摘自 Yoon Kim 等人的幻灯片。艾尔。哈佛大学的一个小组。
- **比方说,我们想把 1D-CNN 应用到“荒谬”这个词上。我们做的第一件事是将单词中的每个字符表示为一个维数为 d 的向量。这些向量是随机初始化的。这些向量合起来就形成了一个矩阵 C. d 就是这个矩阵的高度,而它的长度, l ,简单来说就是这个字的字符数。在我们的例子中, d 和 l 分别是 4 和 9。
**2.接下来,我们创建一个卷积滤波器H。这个卷积滤波器(也叫“内核”)就是一个矩阵,我们会用它来“扫描”单词。它的高度, d *,*与 C 的高度相同,但它的宽度 w 是一个比 l 小的数。在 H 内的值是随机初始化的,并且将在模型训练期间被调整。
3.我们将 H 叠加在 C 的最左边,取一个 H 及其在 C 上的投影的元素式乘积(描述这个过程的一个有趣的词是取一个 H 的 Hadamard 乘积及其在 C 上的投影)。这个过程输出一个与 H 相同维数的矩阵——adxl矩阵。然后,我们将输出矩阵中的所有数字相加,得到一个标量。在我们的例子中,标量是 0.1。这个标量被设置为名为 f 的新向量的第一个元素。
4.然后,我们将 H 向右滑动一个字符,并执行相同的操作(获得 Hadamard 乘积并对结果矩阵中的数字求和)以获得另一个标量 0.7。这个标量被设置为 f. 的第二个元素
**5.我们一个字符一个字符地重复这些操作,直到到达单词的末尾。在每一步中,我们给 f 增加一个元素,并延长向量,直到它达到最大长度 **l - w+1。向量 f 是单词“荒谬”的数字表示,当我们一次看这个单词三个字符时获得。需要注意的一点是,卷积滤波器 H 内的值不会随着 H 滑过单词而改变。用更好的术语来说,我们称 H 为“位置不变量”。卷积滤波器的位置不变性使我们能够捕捉某个字母组合的含义,无论这种组合出现在单词的什么地方。
6.我们在 f. 中记录最大值,这个最大值可以认为是 f. 的“汇总”,在我们的例子中,这个数字是 0.7。我们将这个数称为 f 的【汇总标量】,这个取向量 f 的最大值的过程也称为【最大池】*。*
7.然后,我们用另一个卷积滤波器重复上述所有步骤(又一个 H !).这个卷积滤波器可能具有不同的宽度。在下面的例子中,我们的第二个 H ,标为H’,宽度为 2。与第一个过滤器一样,我们沿着H’滑过单词以获得向量 f ,然后对 f 执行最大池化(即获得其汇总标量)。
8.我们用不同的卷积滤波器重复这个扫描过程几次,每个扫描过程产生一个汇总标量。最后,收集这些不同扫描过程的汇总标量,形成单词的字符嵌入。
这就对了——现在我们已经获得了一个基于字符的单词表示,可以补语的是基于单词的表示。1D-CNN 的这个小小的题外话到此结束;现在让我们回到 BiDAF 的话题上来。
第四步。公路网
在这一点上,我们已经为我们的单词获得了两组向量表示——一组来自手套(单词)嵌入,另一组来自 1D-CNN(字符)嵌入。下一步是垂直连接这些表示。
这种连接产生两个矩阵,一个用于上下文,另一个用于查询。他们的身高是 d ,是 d1 和 d2 的总和。同时,它们的长度仍然与它们的前任矩阵相同(对于上下文矩阵为 T ,对于查询矩阵为 J )。
Step 4. The concatenated matrices from the word embedding and the character embedding steps are passed into a highway network
****这些矩阵然后通过所谓的高速公路网。高速公路网络非常类似于前馈神经网络。你们可能已经熟悉前馈神经网络了。提醒您,如果我们将输入向量 y 插入到单层前馈神经网络中,在产生输出 z 之前会发生三件事:
- y 将乘以 W ,即该层的权重矩阵
- 偏置量 b 将被加到 W*y 上
- *非线性函数 g ,如 ReLU 或 Tanh 将被应用于 Wy + b
**在高速公路网络中,只有一小部分输入将经过上述三个步骤;剩余部分被允许不经转换地通过网络。**这些分数的比率由 t 转换门和 1-t 进位门管理。使用 sigmoid 函数计算 t 的值,该值始终在 0 和 1 之间。现在,我们的等式变成如下:
在退出网络时,输入的变换部分与其未变换部分相加。
****高速公路网络的作用是调整单词嵌入和字符嵌入步骤的相对贡献。逻辑是,如果我们正在处理一个 OOV 单词,比如“错误低估”,我们会想要增加该单词的 1D-CNN 表示的相对重要性,因为我们知道它的手套表示很可能是一些随机的乱码。另一方面,当我们在处理一个常见的、明确的英语单词时,比如“table ”,我们可能希望 GloVe 和 1D-CNN 做出更多的贡献。
高速公路网络的输出也是两个矩阵,一个用于上下文(a d -by- T 矩阵)T5),一个用于查询(a d -by- J 矩阵)。它们表示查询中单词的调整后的矢量表示,以及单词和字符嵌入步骤中的上下文。
第五步。上下文嵌入
**原来这些表象对于我们的目的还是不够的!**问题是这些单词表示没有考虑单词的上下文含义——从单词的周围环境中获得的含义。当我们单独依赖于单词和字符嵌入时,一对同音异义词,如单词“tear”(从眼睛排出的水样分泌物)和“tear”(撕开),将被分配完全相同的向量表示,尽管这些实际上是不同的单词。这可能会混淆我们的模型并降低其准确性。
**因此,我们需要一种嵌入机制,能够根据上下文理解单词。这就是上下文嵌入层的用武之地。**上下文嵌入层由长短期记忆(LSTM)序列组成。下面是对 LSTM 的一个快速介绍:
****LSTM 是一种可以记忆长期依赖关系的神经网络架构。当我们将一个输入序列(例如一串文本)输入到一个正常的前向 LSTM 层时,每个时间步长的输出序列将对来自该时间步长以及过去时间步长的信息进行编码。换句话说,每个单词的输出嵌入将包含来自之前单词的上下文信息。
****BiDAF 采用双向 LSTM (bi-LSTM ),其由前向和后向 LSTM 序列组成。来自前向和后向 LSTM 的组合输出嵌入同时编码来自过去(后向)和未来(前向)状态的信息。换句话说,从这一层出来的每个单词表示现在都包括关于单词周围短语的上下文信息。
上下文嵌入步骤的输出是两个矩阵——一个来自上下文,另一个来自查询。BiDAF 论文将这些矩阵分别称为 H 和 U (术语提醒——这个矩阵 H 不同于前面提到的卷积矩阵H**;这是一个不幸的巧合,两个来源为两个不同的概念使用相同的符号!).上下文矩阵 H 是一个 d -by- T 矩阵,而查询矩阵 U 是一个 d -by- J 矩阵。**
Part 5. The contextual embedding step uses bi-LSTM to embed contextual information into the output matrices H and U.
这就是 BiDAF 中嵌入层的全部内容!由于三个嵌入层的贡献,嵌入输出 H 和 U 在其中携带来自查询和上下文中所有单词的句法、语义以及上下文信息。我们将在下一步使用 H 和U**——注意力步骤——我们将把来自它们的信息融合在一起。关注步骤是 BiDAF 的核心技术创新,将是本系列的下一篇文章的重点——请查看!**
词汇表
- ****上下文:包含查询答案的查询附带文本
- ****查询:模型应该给出答案的问题
- ****答案:包含可以回答查询的信息的上下文的子字符串。这个子串将被模型提取出来
- T :上下文中单词/记号的数量
- J :查询中单词/记号的数量
- d1 :单词嵌入步骤(手套)的尺寸
- d2 :字符嵌入步骤的尺寸
- d :垂直串联单词和字符嵌入得到的矩阵的维数。 d 等于 d1 + d2。
- H :上下文嵌入步骤输出的上下文矩阵。 H 的尺寸为 2d 乘 T
- U :上下文嵌入步骤输出的查询矩阵。 U 的尺寸为 2d -by- J
参考
[1] 机器理解的双向注意力流(闵俊 Seo et。艾尔,2017)
【2】人物感知神经语言模型(Yoon Kim et。艾尔,2015)
以上所有图像和图表属于我,除非另有说明。
如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。另外,如果你能支持我通过我的推荐链接成为媒介会员,我会非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。
Seq2Seq 和 BiDAF 中的注意机制——图解指南
BiDAF 的权威指南——第 3 部分,共 4 部分
序列对序列(seq2seq)和双向注意流(BiDAF)是有影响力的自然语言处理模型。这些模型利用了一种叫做“注意力”的技术,这种技术涉及到两个序列的比较。在这篇文章中,我解释了在这两个模型中注意力机制是如何工作的。
T 他的这篇文章是一系列四篇文章中的第三篇,旨在说明 双向注意力流(BiDAF)一种流行的问答机器学习模型(Q & A)的工作原理。
概括地说,BiDAF 是一个封闭领域,抽取的 Q & A 模型。这意味着为了能够回答一个查询**,BiDAF 需要查阅一个附带的文本,该文本包含回答查询所需的信息。这个附带的文本被称为上下文。 BiDAF 的工作方式是提取上下文中最能回答查询的子串——这就是我们所说的对查询的回答 。我有意将“查询”、“上下文”和“回答”这几个词大写,以表明我是在用它们的专业技术能力来使用它们。**
An example of Context, Query, and Answer. Notice how the Answer can be found verbatim in the Context.
在本系列的第一篇文章中,我展示了 BiDAF 的高层次概述。在第二篇文章中,我谈到了 BiDAF 如何使用 3 个嵌入层来获得上下文和查询的向量表示。这些嵌入步骤的最终输出是两个矩阵— H (表示上下文中的单词)和 U (表示查询中的单词)。 H 和 U 是关注层的输入,其功能是组合它们的信息内容。
这些注意力层是 BiDAF 的核心组成部分,使其区别于早期的模型,并使其能够在团队排行榜中获得高分。关注层的工作方式将是本文的重点。让我们开始吧!
注意力机制的概念介绍
**在深入 BiDAF 中使用的注意机制的细节之前,我们应该先了解一下什么是注意。注意力于 2016 年首次作为序列到序列 (seq2seq)模型的一部分引入。**顾名思义,seq2seq 是一个神经网络模型,其目的是将一个序列转换成另一个序列。seq 2 seq 的一个应用示例是将🇫🇷法语句子翻译成英语🇬🇧句子,如下所示:
A sample translation task for seq2seq model.
seq2seq 模型由两个递归神经网络(rnn)组成:
- 第一个 RNN 称为“编码器”*,负责理解输入序列(在我们的例子中,是一个法语句子),并将其信息内容转换为固定大小的中间向量。*
- 第二个 RNN 称为“解码器”*,然后使用这个中间向量生成一个输出序列(在我们的例子中,是法语句子的英语翻译)。*
****在整合注意机制之前,seq2seq 模型只能处理短序列。出现这种限制是因为“普通”seq2seq 模型只能将有限数量的信息放入中间向量,并且在此过程中会丢失一些信息内容。
这种情况类似于试图翻译一本法语书,首先阅读整本书,记忆其内容,然后根据记忆将其翻译成英语。你可以想象,这样的尝试注定要失败——我们可怜的译者在开始写英文翻译的时候会忘记这本书的大部分内容!
注意力机制就是为解决这一信息瓶颈而开发的。注意力的核心思想是,在解码过程的每一步,我们都要直接连接到编码器的特定部分。
在我们的法语-英语翻译任务的上下文中,这意味着在 e 时刻,我们的模型将生成下一个英语单词,它将只关注输入法语句子的最相关部分。
从概念上讲,seq2seq 翻译模型的工作原理就像普通的人类翻译人员翻译法语文本一样。他会读法语文章的第一段,然后翻译成英语,接着读第二段,然后翻译这一段,等等。通过这样做,他不必把这本书的全部内容都记在脑子里,也不必冒忘记大部分内容的风险。
注意在序列对序列模型中的实现
实际上,我们可以通过执行下图中描述的以下三个步骤,在 seq2seq 模型中包含一个注意机制:
Attention mechanism in seq2seq
1。序列的比较和注意力分数的计算
在解码过程中的每个时间步,我们将比较解码器隐藏状态和所有编码器隐藏状态。 这种比较可以使用任何函数来完成,该函数采用两个向量并输出反映它们相似性的标量。这种函数中最简单的是一个简单的点积。相似性函数的标量输出被称为一个 “注意力得分”; 这些注意力得分用蓝色圆圈表示🔘在上图中。
2。注意力得分到注意力分布的转换
然后我们取所有这些注意力分数的最大值。soft max 函数将这些注意力分数归一化成一个概率分布(一组加起来等于 1 的数)。这种概率分布称为注意力分布*;它表示输入序列中与当前解码过程最相关的部分。*****
**上图中的蓝条显示了注意力的分布。我们看到,第二个🇫🇷法语单词对应的杠,“ me”,最高;这是因为这个单词在🇬🇧英语中被翻译成“I”,这是我们输出序列中的第一个单词。
3。将注意力分布与编码器隐藏状态相乘得到注意力输出
然后,我们将注意力分布的每个元素与其对应的编码器隐藏状态相乘,并将所有这些乘积相加,以产生称为 “注意力输出”的单个向量。 你可以把注意力输出看成是对输入序列的选择性总结。注意力输出将成为下一个解码步骤的输入。
尽管上述三个注意步骤首先应用于 seq2seq,但它们也适用于其他应用程序。正如我们将在后面看到的,BiDAF 在实现注意力时使用了相同的三个步骤,尽管有一些小的修改。
通过对 seq2seq 中的注意力机制及其实现的快速概述,我们现在可以看到这个概念是如何在 BiDAF 中应用的。这是 parti!
第六步。相似矩阵的形成
只是为了提醒您我们在上一篇文章中停止的地方——我们的最后一步(步骤 5)是一个上下文嵌入步骤,它产生两个输出矩阵: H 用于上下文,而 U 用于查询。我们关注步骤(步骤 6 到 9)的首要目标是将来自 H 和 U 的信息融合在一起,以创建上下文的几个矩阵表示,其中也包含来自查询的信息。
我们的第六步——第一个与注意力相关的步骤——是形成所谓的相似性矩阵 S 。 S 是一个高瘦矩阵,维数为 T -by- J (上下文中的字数除以查询中的字数)。
相似性矩阵 S 的生成对应于上述 seq2seq 注意机制中的第一步。它需要对 H 中的每一列和 U 中的每一列应用比较函数。矩阵 的行和列 j 中的值代表 S 的 t 第个上下文词与 j 第个查询词的相似度。****
让我们来看一个相似性矩阵的例子。假设我们有这样一个查询/上下文对:
- 语境 : “新加坡是位于东南亚的一个小国。” ( T = 9)
- 查询 : “新加坡位于哪里?” ( J = 4)
从上述查询/上下文对产生的相似性矩阵 S 如下所示:
An example of similarity matrix S
我们可以从上面的矩阵 S 中得出一些观察结果:
- 如我们所料,矩阵的维度为 9 乘 4,9 是上下文的长度( T ) ),4 是查询的长度( J )。
- 第 1 行第 3 列中的单元格包含相对较高的值,如其亮黄色所示。这意味着与该坐标相关联的查询单词和上下文单词彼此高度相似。这些单词结果是完全相同的单词——“新加坡”——因此它们的向量表示非常相似是有道理的。
- 仅仅因为一个上下文单词和一个查询单词是相同的,并不一定意味着它们的向量表示非常相似!查看第 2 行第 2 列的单元格—该单元格对上下文单词“is”和相同的查询单词“is”的相似性进行编码。然而,它的价值并没有上面提到的“新加坡”那么高。这是因为这些向量表示也包含了来自周围短语的信息。这种语境贡献对于“是”这样的小系词尤其重要。
- ****另一方面,我们可以看到,语义和语法意义相近的两个截然不同的词,如“坐落”和“位于”的相似度值相对较高。这要归功于我们的单词和字符嵌入层,它可以生成非常准确地反映单词含义的矢量表示。
现在让我告诉你我们如何计算 S 中的值。用于执行该计算的比较函数称为 α 。 α 比 seq2seq 中使用的点积更复杂;以下是 α 的方程式:
因为函数 α 包含一个行向量和一个大小相等的列向量的乘积,所以它总是返回一个标量。
下图显示了此步骤中执行的所有矩阵运算。
Step 6. Using the similarity function α, we combine context matrix H and query matrix U to form similarity matrix S.
步骤 7。上下文查询关注 (C2Q)
相似性矩阵 S 用作下两个步骤的输入:上下文到查询注意(C2Q)和查询到上下文注意(Q2C)。
在这一节,我们将重点介绍 C2Q。这一步的目标是找到哪些查询单词与每个上下文单词最相关。
执行 C2Q 类似于执行 seq2seq 注意的第二步和第三步。首先,我们使用 S 中的标量值来计算注意力分布。这是通过取 S 的行向 softmax 来完成的。结果是另一个矩阵。这个矩阵在 BiDAF 论文中没有明确命名,但是让我们称它为矩阵 A 。
矩阵 A ,其维数与 S 相同,指示哪些查询词与每个上下文词最相关。让我们来看一个 A 的例子:
An example of matrix A, the row-wise softmaxed version of S
通过观察上面的热图,我们可以得出以下结论:
- 语义相似性对相关性有很大的贡献。我们看到,对于上下文单词[“新加坡”、“是”、“位于”],最相关的查询单词是[“新加坡”、“是”、“位于”]。这些词也有很强的语义相似性。
- ****语境词“理解”查询词所请求的信息。我们看到,查询词“Where”是上下文词[“a”、“small”、“country”、“in”、“Southeast”、“Asia”]-与地理位置相关的词的最相关查询词。
然后我们取 A 的每一行,得到一个在的注意力分布,它的维度为 1 乘 J 。 At: 反映每个查询词对于第 t 个上下文词的相对重要性。****
然后,我们计算查询矩阵 U 相对于注意力分布中每个元素的加权和。这一步的结果就是名为ũ的注意力输出矩阵,它是一个 2d -by- T 矩阵。
ũ,就像 H 一样,是上下文的矩阵表示。然而,ũ包含了与 H 不同的信息! H 封装了每个上下文单词的语义、句法和上下文含义,ũ封装了关于每个查询单词与每个上下文单词的相关性的信息。
从相似矩阵 S 和查询矩阵 U 生成ũ的整个过程如下图所示:
Step 7. Context-to-Query attention
第八步。查询到上下文(Q2C)注意
下一步是 Q2C,它和 C2Q 一样也是从相似矩阵 S 开始的。 在这一步,我们的目标是找到哪个上下文单词与查询单词最相似,因此对于回答查询是至关重要的。
我们首先取相似性矩阵 S 的行的最大值,以获得列向量。这个列向量在论文中没有明确命名,姑且称之为 z 。
现在让我们后退一步,想想 z 象征着什么。记住,我们的相似度矩阵 S 记录了每个上下文单词和每个查询单词之间的相似度。让我们再来看看我们上面创建的例子 S 。
Similarity matrix S
现在让我们把注意力集中到这个矩阵的第四行,它对应于上下文单词“small”。可以看到,在这一行中没有任何明亮的细胞!这表示查询中没有与上下文单词“small”意思相似的单词。当我们取这一行的最大值时,得到的最大值将接近于零。
与单词“Singapore”和“situated”形成对比,在它们的行中,我们确实找到了至少一个明亮的单元格,表明存在与这些单词相似的查询单词。当我们取这两行中的最大值时,这两行的向量 z 中的对应值也会相对较高。
以下是我们的示例中获得的 z :
在 Q2C, z 中的值服务于我们的注意力值。我们在 z 上应用 softmax 来得到一个叫做 b 的注意力分布。然后我们使用 b 对上下文矩阵 H. 进行加权求和,得到的注意力输出是一个 2d 乘 1 的列向量,称为 ĥ.
Q2C 的最后一步是复制粘贴 ĥ T 次,并将这些副本组合成一个2dby-t矩阵,称为ĥ.ĥ是上下文的另一种表示,它封装了关于查询的上下文中最重要的单词的信息。
从相似矩阵 S 和上下文矩阵 H 生成ĥ的整个过程描述如下:
Step 8. Query-to-Context attention
第九步。
然后将步骤 5、7 和 8 中产生的矩阵组合成一个大矩阵 G. 为了刷新你的记忆,这三个矩阵如下:
- H :封装语境词的语义、句法和语境意义的原始语境矩阵。**
- ũ:封装了每个查询单词与每个上下文单词的相关性的上下文矩阵。**
- ĥ:上下文矩阵,它封装了关于查询的上下文中最重要的单词的信息。**
这三个矩阵具有相同的维数—2d—by—t .
这个“大合并”,很遗憾,并不是这三个矩阵垂直叠加那么简单!这里,我们使用了另一个名为 β 的自定义函数。下面是 β 的方程式:
我们通过 G:t = β( H :t,ũ:t,ĥ:t)来定义我们的大合并矩阵 G ,其中 G:t 是对应于第 t 个上下文单词的 G 的第 t 个列向量。 G 的尺寸为 8d -by- T.
从 H 、ũ和ĥ生成 G 的全过程如下图所示:
Step 9. Merging of the three Context matrices H, Ũ and Ĥ to form G
巨型矩阵 G 包含了 H 、ũ和ĥ.中的所有信息 也就是说,你可以把 G 中的每一列向量想象成一个上下文词的向量表示,它“意识到”查询的存在,并且已经从中合并了相关信息。
这就是 BiDAF 中注意力层的全部内容!我知道这可能很难理解,尤其是涉及到无数的符号和矩阵运算。如果你真的想详细研究 BiDAF,我建议你打印出下面的术语表以及上面所有的图表,并把它们放在一起研究。
在下一篇文章中,这将是该系列的最后一篇文章,我将讨论 G 如何作为建模和输出层的输入。输出层将给出每个上下文单词被包含在答案范围中的概率。希望能在那篇上篇看到你!
词汇表
- ****上下文:包含查询答案的查询附带文本
- ****查询:模型应该给出答案的问题
- ****答案:包含可以回答查询的信息的上下文的子字符串。这个子串将由模型提取出来。
- T :上下文中的字数
- J :查询中的字数
- U :封装了查询词的语义、句法、上下文含义的原始上下文矩阵。 U 的尺寸为 2d -by- J
- H :封装语境词的语义、句法、语境意义的原始语境矩阵。 H 的尺寸为 2d 乘 T
- S :相似度矩阵,记录每个上下文词和每个查询词的相似度。 S 的维度为 T -by- J (上下文中的字数除以查询中的字数)。
- α : 用于获取 S. 中相似度值的比较函数
- A : 由 A 的逐行 softmax 产生的矩阵,指示哪些查询单词与每个上下文单词最相关。 A 的尺寸为 T -by- J.
- z : 取相似矩阵 S. z 的跨行最大值得到的列向量的维数为T-乘-1。****
- b : 对 z. b 应用 softmax 得到的注意力分布向量的维数为T-1。****
- ĥ : 将 b 乘以上下文矩阵 H 得到的注意力输出ĥ 的维数为2d-1。****
- ũ:上下文矩阵,封装了每个查询词与每个上下文词的相关性。ũ的尺寸为 2d -by- T.
- ĥ:上下文矩阵,封装了关于查询的上下文中最重要的单词的信息。ĥ的尺寸为 2d -by- T.
- G :一个大的、 8d -by- T 矩阵,包含 H 、ũ和ĥ.中的所有信息 G 是建模层的输入。****
- β : 一个自定义串联函数,用于构建 G
参考
[2]神经机器翻译通过共同学习对齐和翻译(Bahdanau et。艾尔,2015)
除非另有说明,所有图片均由我创作/设计。
如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。此外,如果你能通过我的推荐链接支持我成为一名中级会员,我将非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。