TowardsDataScience-博客中文翻译-2019-六十四-
TowardsDataScience 博客中文翻译 2019(六十四)
所有数据科学家的关键问题是:“那又怎样?”
如何撰写假设和进行分析,让你的老板刮目相看
我之前公司的一位主管有一句口头禅,他因此在公司的分析师圈子里声名狼藉。
“那又怎么样?”
给这个人看一张图表,一张幻灯片,一份的完整报告,他的反应会是一样的。所以。什么?这两个词可能会给人以明显的敌意,而不是特别有用的管理指导。
“那又怎样?”
当然,一旦你有了一些时间来克服对你在过去六个小时里不知疲倦地制作的美丽散点图的不和谐反应,你就开始明白他们的观点了(尽管不情愿)。

Quoth the Director, “SO WHAT?” (Image: Pixabay)
数据科学家可能对他们的工作非常珍视。这不是批评——这种特征通常源于健康的激情。优秀的数据科学家是一群充满求知欲的人(在我的时间里,我已经为了分析而做了大量的分析工作!)
然而,在专业环境中,分析本身很少是最终目标。即使是世界上最大的分析公司——你的 Facebooks、Googles 和 Amazon——也在处理数据,以某种方式改善他们业务的某个方面。
在我以前做顾问的时候,我的分析应该是为商业决策提供信息,或者帮助形成客户建议的基础。因此有一句口头禅,“那又怎样?”我很快学会了自我评估我的工作。两个客户群之间的差异具有统计学意义。那又怎样?我的客户能用这些信息做什么有用的事情吗?
我在管理咨询行业工作了五年,把“有趣”的事情和“重要”的事情混为一谈,这是我经常看到的错误。我想委婉地说,在所有在客户面前使用过“高级分析”或“机器学习”这两个词的麦肯锡顾问中,只有不到一半的人真正知道这些东西是什么,更少的人知道它们如何实际帮助解决手头的业务问题。
只见树木不见森林
因此,如果面对一个数据的海洋(或者实际上是一个湖泊),我们应该如何找到保证是重要的分析,而不仅仅是一个智力上的杂耍?在这种情况下,好的分析源于一个构造良好的假设,而一个构造良好的假设是一个构造良好的问题树的果实。
问题树是任何顾问工具包中的经典工具。它允许将一个宏大的、包罗万象的主题分解成多个(和小得多的)“问题”,然后可以分别解决。创建问题树的黄金法则很简单:BeMECE!
MECE(发音为 Mee-See,最初由麦肯锡咨询公司的芭芭拉·明托在 20 世纪 60 年代开发)代表:
- MM最终 E 排他
- C 完全Exhaust
换句话说,从问题树的每个“节点”出来的分支应该将问题分解成不重叠的部分(ME),并且覆盖所有的可能性(CE)。最好用一个例子来说明这一点:假设我们的业务经历的在线销售比我们预期的要少。我们如何用问题树来调查这个问题?

Here we follow just the top branch, for the sake of visual clarity. Each grey box could, of course, have their own further branches
从左手边的第一个盒子开始。在线订单可以被认为是人们访问网站的次数乘以访问转化为销售的次数。因此,我们可以将流量产生和流量转化视为在线订单的两个“子问题”,然后我们可以孤立地考虑它们。
从数学上讲,这种分裂就是 MECE:
- A =在线订单
- B =网页流量
- 那么我们有:*A = B (A/B)
- 或者换句话说: 在线订单=网页流量流量转化*
网络流量的产生及其随后的转化是客户旅程的两个不同部分,我们可以独立地进行分析(因此,我们从数学上证明了我们的两个新分支可以在不需要第三个因素的情况下处理在线订单(因此,我们的两个新分支完全可以考虑 T42 的因素)。
注意——这不是唯一可能的 MECE 分裂。例如,您可以将在线订单表示为 【订单总数】 和 【在线订单份额】 的乘积。你可以用这些分支作为起点,写第二棵树,看看你是否会得出不同的结论。
创建了第一个分支后,你就可以从左到右,将每个问题分解成更多的子问题,越往下越好。
创建问题树的一些一般提示:
- 尝试用数学方法来表达:这是保持 MECE 的一个好方法。总要考虑如何将事物分解成乘法因子,就像我们对网上订单所做的那样。如果你试图分解一些商数 KPI (A/B),那么尝试第三个数据点(A/B = A/C * C/B)。
- 加上“其他”可以使一个分支完全详尽:知道除了你能识别的因素之外,还有其他潜在的因素在起作用,可以帮助你避免做出无效的假设。
- 通常不止一个正确答案:这也适用于树的顺序——我们可以先将流量生成分为付费/自然流量,而不是按设备划分流量。
实际应用
假设我们为 north wind Traders 工作或咨询,这是一家由微软创建的虚构公司,向世界各地的客户进出口食品和饮料。我们可以访问他们的 SQL 数据库,我们的任务是提出(然后测试)一些假设来帮助制定业务战略。
我们从哪里开始呢?

The SQL Schema for Northwind Traders
甚至不用深入研究数据,我们就可以得出一个基本的问题树来帮助构建我们的思维。我们从一个简单的没有人会反对的使命陈述开始: 增加 Northwind 的利润!

An example issue tree for Northwind. We could easily add more layers, but we’re already at a point where we can start thinking about potential hypotheses to test.
接下来是一个相对简单的问题树—增加收入,降低成本,等等。然而,到了第三层,我们已经处于可以开始问实质性问题的位置,这些问题可以构成假设的基础。
当然,在设计测试时,我们仍然需要做所有通常的好事情——确保我们有:
- 无懈可击的无效假设和替代假设
- 满足我们想要使用的统计检验所需的任何假设的样本(例如,正态分布的 T 检验)
- 明智的阿尔法水平拒绝零假设
让我们来看图表中的第三个注释。Northwind 可以通过鼓励每位客户更频繁地下订单,名义上增加每位客户的收入。然而,情况可能是这样的,订购较少的客户这样做是因为他们的订单更大——例如,他们每两个月购买 200 件商品,而不是每个月 100 件商品。销售主管可能有兴趣在大规模销售之前知道这是否属实!
明智的第一步是查看数据,看看它是否包含任何关于我们应该如何确切定义我们的假设的线索。让我们创建一个 Northwind 客户的散点图,根据订单的平均规模绘制出他们的平均订单间隔天数。

与我们最初预期的相关性相去甚远,似乎更频繁订购的客户实际上会做出更大的订单。我们的分析现在有了不同的框架——如果我们可以证明这种关系在统计上是显著的,那么鼓励更高阶频率的商业案例就会突然变得非常有力。
我们根据这一点定义我们的假设。设第 1 组是平均每两个月至少订购一次的客户,设第 2 组是平均每两个月订购不到一次的客户。然后,我们有:
- 零假设,第 1 组客户的 H₀:平均订单项≤第 2 组客户的平均订单项
- 另一个假设是,第 1 组客户的 Hₐ:平均订单项>第 2 组客户的平均订单项
然后我们可以运行蒙特卡洛模拟来得出 p 值(见我的以前的博客中关于如何做的完整指导)。
使用 Python 进行排列测试和蒙特卡罗模拟的介绍
towardsdatascience.com](/https-towardsdatascience-com-the-difficult-third-album-655d7a710412) 
碰巧的是,我们发现这个测试的 p 值趋向于极小的 0.000005(或者 200,000 分之一)。鉴于我们的标准 alpha 水平为 0.05,这意味着我们可以断然拒绝零假设——更经常订购的客户会做出更大的订单,Northwind 应该尽一切努力增加其现有客户群的订购频率。
当然,如果我们不能拒绝零假设,这也是有价值的。通过证明这种关系的缺失,我们将能够建议反对增加订单频率的高强度措施。
这就是使用问题树方法定义假设的美妙之处——不管实验的结果如何,你总是能够进行分析,并对问题做出有力的回应: “那又怎样?”
感谢你一直读到博客的结尾!我很乐意听到任何关于上述分析的评论,或者这篇文章涉及的任何概念。欢迎在下面留言,或者通过 LinkedIn 联系我。
100 行代码中深度学习的关键
用神经网络预测肿瘤的恶性程度。用 Python 从头开始构建。

在这篇由 3 部分组成的文章中,您将:
- 用 Python 从零开始创建神经网络。用梯度下降算法训练它。
- 将基础网络应用于威斯康辛癌症数据集。根据 9 种不同的特征预测肿瘤是良性还是恶性。
- 深入探索反向传播和梯度下降是如何工作的。
- 复习基础知识,探索高级概念。在第 1 部分的中,我们探索了我们网络的架构。在第 2 部分的中,我们用 Python 编码,深入到 back-prop &渐变下降。在第 3 部分,我们将应用于威斯康辛癌症数据集。
让我们一起走下深度学习的亏损版图。准备好了吗?
Navigating the Loss Landscape within deep learning training processes. Variations include: Std SGD, LR annealing, large LR or SGD+momentum. Loss values modified & scaled to facilitate visual contrast. Visuals by Javier Ideami@ideami.com
对于那些对深度学习的奥秘和可能性充满热情的人来说,现在是激动人心的时刻。
该领域的许多英雄通过视频和文章分享他们的专业知识。他们包括 fast.ai 的杰瑞米·霍华德、Coursera 的吴恩达、Andrej Karpathy、Yann Lecun、Ian Goodfellow、Yoshua Bengio、Lex Fridman、Geoffrey hint on、Jürgen Schmidhuber 以及其他许多人。
他们中的许多人建议的关键事情之一是尽快动手,自己编写深度学习的关键原则。
如今,我们拥有令人惊叹的图书馆。包括 Tensorflow,PyTorch,Fast.ai,Keras,Mxnett,Nctk,DL4J 等。但是如果你只使用那些强大的库,你可能会错过一些重要的东西。有机会深入思考这些过程中一些最重要的部分。
在这个迷人的冒险中,自己编写一个网络迫使你面对面地面对关键问题和障碍。还有,深度学习背后隐藏的奇迹。
想想深度学习中所有新奇的架构和最新发展。回旋,循环网络,甘等等。真正令人着迷的是,在这个领域几乎每一次成功的背后,我们都找到了同样熟悉的朋友。反向传播和梯度下降。

Navigating the Loss Landscape. Values have been modified and scaled up to facilitate visual contrast.
如果你深刻理解这两个概念,天空才是极限。然后,您可以从更深的角度与强大的库一起工作。你也要准备好思考你自己的新方法来改进这些工具。
准备开始了吗?这将会是一场精彩的旅程!

Navigating the Loss Landscape. Values have been modified and scaled up to facilitate visual contrast.
寻找神秘的功能
宇宙中发生的很多事情都可以用函数来表达。函数是一种接受输入并产生输出的数学结构。因果。输入输出。
当我们审视这个世界及其挑战时,我们看到的是信息,我们看到的是数据。我们可以从这些数据中学到很多。
我们对数据进行的学习可以是不同种类的 T21。让我们强调深度学习中 3 种非常常见的类型:
- 监督学习:当我们从一组带标签的训练数据中学习神秘函数时。将输入连接到其相应的正确输出的一组线对。
- 无监督学习:当我们从没有以任何方式标记或分类的数据中学习神秘函数时。
- 强化学习:当我们通过最大化代理人收到的报酬来学习神秘函数时。该代理在一个环境中采取行动。
在本文中,我们将重点关注监督学习,这是迄今为止深度学习最成功的领域。
因此,我们有一些数据,一些输入,我们也有一些与输入相对应的输出。我们想了解输入和输出是如何通过一个神秘的函数连接起来的。
事实是,当涉及的数据达到一定的复杂性时,找到那个函数变得非常困难。进入神经网络和深度学习。

Navigating the Loss Landscape. Values have been modified and scaled up to facilitate visual contrast.
在其核心,一个神经网络通过一系列中间“权重”连接你的输入数据和你想要的输出。这些重量实际上只是数字。

通过它们的架构和我们即将探索的优化算法,神经网络成为通用的近似器。他们最终能够计算连接其输入和输出的任何函数(当拥有正确的架构和参数时)。要对此进行扩展,请参见人工神经网络数学理论的通用逼近定理)。
理解神经网络的最佳方式是..去建一个!是的,从零开始,在这种情况下使用 Python 编程语言。所以让我们开始吧,在这个过程中,我们将探索许多有趣的话题和概念。
理解神经网络的最佳方式是..建造一个
在这一段下面你可以看到我们将要建立的网络。它有 2 层(输入层从不计算)。
- 输入:网络的输入包含我们的源数据。神经元的数量与源数据的特征数量相匹配。下图使用了 4 个输入要素。当我们稍后处理威斯康星癌症数据集时,我们将使用 9。
- 第一层:我们的第一个隐藏层,它有许多隐藏的神经元。这些神经元与它周围各层的所有单元相连。
- 第二层:第二层也是最后一层有 1 个单个单元,网络的输出。
我们可以增加更多层,建立一个 10 层或 20 层的网络。为了简单起见,我们将在本文中使用 2。一个两层的神经网络可以做很多事情,我们很快就会知道。

那么在这个网络中,学习将在哪里进行?
让我们回顾一下。在我们网络的输入层中,我们放入一些数据。我们还将向网络显示什么输出对应于该输入,什么结果应该出现在网络的输出(第二层)。
网络各层中的每个单元都有一个关联权重(还有一个偏差,稍后会详细介绍)。这些权重只是在学习过程开始时随机初始化的数字。
神经网络执行一些计算 将输入数据与那些权重相结合。这些计算在网络中传播,直到在输出端产生最终结果。
这些计算的结果表达了将输入映射到输出的函数。
我们想要的是网络学习那些权重的最佳可能值。因为通过网络执行的计算,结合不同层使用这些权重,它能够近似不同类型的函数。
现在让更深入地了解我们正在寻找的这个神秘函数。为了做到这一点,至关重要的是我们准确地澄清我们任务中涉及的所有变量的名称。
- X 将代表输入层,即我们提供给网络的数据。
- Y 将代表与输入 X 相对应的目标输出,在网络完成计算后,我们应该在网络末端获得输出。
- Yh (y hat)将代表我们的预测,即我们将 X 输入网络后产生的输出。因此, Y 是理想的输出, Yh 是网络在输入数据后产生的输出。
- W 将代表网络各层的权重。
让我们先说第一层,我们的隐藏层,执行这个计算:W X(W 和 X 的乘积)

它执行加权求和:
- 层中的每个单元都连接到前一层中的每个单元。
- 这些连接中的每一个都有一个权重值。
- 图层中每个单元的新值是每个先前单元的值乘以该先前单元与我们当前正在分析的单元之间的连接权重的结果之和。
在某种程度上,权重表达了连接的强弱,即网络不同单元之间的链接强度。
现在我们要给这个乘积增加一些额外的东西,一个偏差项:
WX+b
添加偏置项为网络提供了更多的灵活性。它允许它“移动”单元的线性计算,增加了网络更快学习那些神秘函数的潜力。
b :表示机组的偏置项。
我们有了:WX+b。这就是我们所说的一个线性方程。线性,因为它通过一个乘积和一个和来表示输入和输出之间的线性关系(这种关系可以用一条线来表示)。
记住,神经网络可以有多层。在我们的示例中,我们将有 2 个,但我们也可以有 20 个或 200 个。
因此,我们将使用数字来表示这些术语属于哪一层。定义我们的隐藏层,也就是我们的第一层的计算的线性方程是: W1 X+ b1
我们还要给这个计算的输出取一个名字
- Z 将代表一层计算的输出
因此, Z1 = W1 X+ b1
请注意,应该对每层的每个单元进行这种计算。当我们对网络编程时,我们将使用矢量化实现。这意味着我们将利用矩阵在一次数学运算中组合一层的所有计算。
对于本教程来说,深入理解矩阵并不是必不可少的,但如果你想刷新对它们的理解,你可以查看 YouTube 上的 3Blue1Brown 和他的 线性代数系列 的精华视频。
到目前为止,一切顺利。现在,想象一个有许多层的网络。每一层都执行如上所述的线性计算。当你将所有这些线性计算链接在一起时,网络就能够计算复杂的函数。
然而,有一个小问题..
太线性,太无聊
世界是复杂的,世界是混乱的。现实生活中的输入和输出之间的关系一般不能用一条线来表达。它趋向于混乱,趋向于非线性。
复杂的函数通常是非线性的。如果一个神经网络的架构仅由线性计算组成,那么它很难计算非线性行为。这就是为什么神经网络会在每一层的末尾增加一些额外的东西:一个激活功能。
激活函数是非线性函数,其在层的输出中引入非线性变化。这将确保网络能够计算各种复杂的函数,包括那些高度非线性的函数。
现在,有很多不同种类的激活功能。让我们快速介绍 4 种最典型的。
为了解释这些激活函数,我需要快速介绍梯度的概念,我们将在后面深入探讨。函数在某一点的梯度也叫导数,表示函数在该点输出的变化率。
响应于特定输入变量的变化,函数输出的变化程度、方向和强度如何?
当梯度(导数)变得非常小时(函数的输出变得非常平坦),我们就谈到了消失梯度。稍后,我们将了解深度学习中大量使用的反向传播算法,通过使用梯度来了解网络的每个参数如何影响网络的输出,从而决定如何调整网络的权重值(该参数的变化会使网络的输出增加还是减少?)
消失梯度是一个问题,因为如果一点的梯度变得太小或为零,就很难理解系统输出在该点变化的方向。
我们也可以谈谈相反的问题,爆炸渐变。当梯度值变得非常大时,网络会变得非常不稳定。
不同的激活函数可以具有不同的优点。但是它们也可能遭受消失和爆炸梯度问题。
下面快速介绍一下最流行的激活功能。

s 形 1/(1+e**-x)
- 它的输出从 0 到 1。
- 它是非线性的,将输入推向输出范围的极限。例如,这对于将输入分为两类非常有用。
- 它的形状是平缓的,所以它的梯度(导数)将得到很好的控制。
- 主要的缺点是,在极端情况下,函数的输出变得非常平坦。这意味着它的导数、它的变化率将变得非常小,并且使用该函数的单元的计算效率和速度可能变慢或完全停止。
- 因此,Sigmoid 在网络的最后一层非常有用,因为它有助于将输出推向 0 或 1(例如,将输出分为两类)。在以前的图层中使用时,它可能会遇到渐变消失的问题。
*Tanh
(2/(1+e * -2x))-1
- 它的输出从-1 到 1。
- 它非常类似于乙状结肠,是它的缩小版。
- 这个函数更陡,所以它的导数也更强。
- 缺点类似于 Sigmoid 函数的缺点。
ReLU(整流线性单位) max (0,x)
- 如果输入大于 0,则输出为输入。否则,输出为 0。
- 它的范围从 0 到无穷大。这意味着它的产量可能会变得非常大。分解渐变可能会有问题。
- ReLU 的一个好处是,它可以保持网络更轻,因为一些神经元可能输出 0,防止所有单元同时活跃(过于密集)。
- ReLU 的一个问题是它的左侧完全是平的。这可能再次产生梯度,即变化率为 0,这可能会阻止该单元执行有用的计算。
- ReLU 计算简单,计算成本低。
- 目前,ReLUs 是神经网络内层最常用的激活函数。
soft max e * * x/Sum(e * * x)
- 输出范围在 0 和 1 之间。
- Softmax 将输入归一化为概率分布。它将输入压缩到 0 到 1 的范围内,就像 Sigmoid 一样,但它也会对结果进行除法运算,使所有输出之和为 1。
- 它通常用于多分类场景中的输出层,此时您必须将输出分类到多个类中。Softmax 将确保与每个类别关联的概率总和的值始终为 1。
在本文中,我们将在输出层使用 Sigmoid 函数,在隐藏层使用 ReLU 函数。
好了,现在我们理解了激活函数,我们需要给它们一个名字!
- 一个将代表激活功能的输出。
因此,在我们的隐藏层,我们执行的计算将是:
A1 = ReLU(Z1) 且 Z1=W1 X+b1
在我们的第二层,我们的输出层,计算将是:
A2 =乙状结肠(Z2) 且 Z2=W2 A1 + b2
注意 Z2 的等式中 A1 的使用,因为第二层的输入是第一层的输出,也就是 A1。
最后,注意 Yh=A2 。第 2 层的输出也是网络的最终输出。
原来如此。现在,如果我们将这些计算放在一起,如果我们将这些函数链接起来,我们会发现神经网络的总计算是这样的:
Yh = A2 = Sigmoid(W2 ReLU(W1 X+B1)+B2)
就是这样。这就是我们两层神经网络执行的全部计算。

因此,实际上,神经网络是一个函数链,有些是线性的,有些是非线性的,它们共同产生一个复杂的函数,这个神秘的函数将把你的输入数据与你想要的输出联系起来。
在这个阶段,注意到在那个方程的所有变量中,W 和 b 的值是很大的未知数。这里是学习必须发生的地方。
不知何故,网络必须学习 W 和 b 的正确值,这将允许它计算正确的函数。
因此,我们将训练我们的网络,找出 W1、b1、W2 和 b2 的正确值。但是在我们开始训练之前,我们必须首先初始化这些值。
如何初始化网络的权重和偏差本身就是一个完整的主题,我们将在后面深入探讨。现在,我们将使用随机值对它们进行初始化。
在这个阶段,我们可以开始编码我们的神经网络。让我们用 Python 构建一个类,初始化它的主要参数。然后我们再看看如何训练它学习我们的神秘功能。
因此 让我们直接进入本文第 2 部分的代码 ,我们将在旅途中学习和探索。
链接到本文的 3 个部分:
第 1 部分 | 第 2 部分 | 第 3 部分
发球之王:硒网球刮网
硒、Excel 和熊猫的力量

Josh Calabrese via unsplash
介绍
网球比赛中的发球往往决定了比赛的结果。在一盘比赛的关键时刻,发球的中断或发球的保持将最终决定是否能赢得奖杯。
通过将测量的网络抓取与适当放置的显式等待相结合,可以提取网球服务数据,将其导出到 Excel,并使用 Pandas 库进行相应的过滤。
这篇教程将演示如何通过一些巧妙的部署,让抓取脚本平稳运行,并以一种方便、易于分析的格式返回数据。
由于网球运动员的发球比赛可以决定在球场上获得荣耀或提前出局的区别,我将收集当前参加 ATP 巡回赛的前 20 名男子网球运动员的数据。具体来说,我想收集数据,这将使网球运动员之间的区别仅基于他们的发球。
寻找数据
要提取数据,我首先需要找到一个来源,这是最新的数据。ATP 巡回赛网站有超过 1000 名网球运动员的全面信息,似乎是一个声誉良好的来源。

最重要的是,当点击每个球员的链接文本时,可以看到特定于发球的数据,如下图的下半部分所示。正是这些信息,可以被提取出来用于比较前 20 名网球运动员。

代码工作流
在提取之前,确定代码工作流是很有用的。具体来说,我想:
遍历 ATP 巡回赛上排名前 20 位的男子网球运动员,提取他们的名字,他们转为职业选手的年份,以及上面显示的“单打服务记录”中的表格数据。
导入硒类
和tqdm
首先,我将包含 selenium 类的各种导入语句。我需要导入 webdriver 来导航到网页,导入 By 类来帮助查找 web 元素定位器,导入 options 类来实例化 options 对象,这样我就可以拥有一个无头浏览器。
除此之外,我还需要导入 WebDriverWait 类和 expected_conditions 类,它们协同工作。关于所有这些 selenium 类的信息可以通过这个链接找到。它们的使用示例如下所示。
最后,虽然不是绝对必要,但我将导入 tqdm,这样我可以在我的集成开发环境(IDE)的控制台中实时跟踪我的脚本的进度。
将提取的输出写入 Excel
在每次迭代中,数据被传输到一个逗号分隔值(CSV)文件中。首先,我创建了一个名为“Tennis _ player _ details _ scrape . CSV”的文件,并以“w”模式打开这个新创建的文件。
在获取数据并将特定于服务的信息添加到 CSV 文件之前,我为 CSV 文件创建了一些合理命名的标题(列标题),并包含了一个换行符。
查找数据并将其添加到不断增长的 CSV 文件中
第一个目标是找到第一个网球运动员。通过右键单击,然后检查,可以在 HTML 中找到网球运动员。使用 Chrome 中 developers 选项卡中的控制台工具,可以检查这个 Xpath 是否对应于诺瓦克·德约科维奇。Xpath 返回一个包含一个链接的列表。索引这个元素(第零个元素),并使用 innerText 函数提取文本,返回网球运动员诺瓦克·德约科维奇。


找到模式,找到所有玩家
如图所示,特定于诺瓦克·德约科维奇的 Xpath 对应于第 1 行。通过简单地将这个数字改为 3,参数 sack 的(tr[3])应该返回罗杰·费德勒。控制台中的结果证实了这一点。进一步验证;如果表排是 5,tr[5],网球选手应该是 Stefanos Tsitsipas。可以利用这种关系来收集前 20 名网球运动员的名字。

这可以通过创建一个范围为 1 到 21 的 for 循环并用 I 替换数字来实现。
为了进一步强化代码并防止任何超时异常,在网页加载缓慢的情况下,我将使用 WebDriverWait 类设置一个 20 秒的显式等待。在这里,浏览器和时间是这个类的必需参数。此外,我将一直等到 web 元素可见,然后使用带有 visibility_of_element_located 方法集的 expected conditions 类提取文本。
此方法将定位器作为必需的参数。这是使用“By”指定的。xpath,后跟引号中的 XPATH。
我把玩家名字写到 CSV 文件中,点击每个玩家的链接。然后,我提取球员转为职业球员的时间,并从这个数字中提取 2019 年,以确定他们迄今为止的职业生涯长度。同样,我将这些信息写入 CSV 文件。
在所有情况下,当我想要提取信息时,我会等到我感兴趣的特定元素是 web 页面上的可见性。这可以防止引发超时异常。
玩家统计
为了收集球员的统计数据,我点击了球员统计选项卡,与该球员的“单一服务记录”相关的数据被返回。搜集这些数据很简单。同样,唯一改变的部分是表格行[]中的数字,例如 tr[1]告诉我德约科维奇发球得分多少,而 tr[10]告诉我德约科维奇赢得的发球得分总数。
我简单地遍历这些有组织的表格数据,提取所有球员的统计数据,并使用嵌套的 for 循环将它们写入 excel。为了使后面的工作更容易,我替换了所有的逗号字符或%符号字符,这样数字数据操作就更容易了。

在这些数据被抓取并写入 Excel 后,我导航回到 singles 页面开始另一个迭代。
为了让我了解脚本的进度,我导入了 tqdm ,它打印了一个动态更新的进度条,并在我的范围内包装了这个函数。在下面的例子中,我可以看到进度是 40 %, 20 次迭代中有 8 次已经完成,还剩 1:17 分钟。

在 Excel 中打开 Tennis _ player _ details _ scrape . CSV 文件,显示已经获得了所有数据。现在可以使用 Pandas 库过滤数据。

熊猫服务数据过滤
单打发球数据现在可以修改进行分析。首先,我读入 Dataframe,检查它的形状和列,并使用 head()方法打印前 10 行。

为了确认所有数据都正确对齐,我执行了一些验证。举个例子,让我们以亚历山大·兹维列夫为例,检查一下他的一发率是否真的是 63%,在他的网球生涯中,到目前为止他已经面临了 1815 个破发点。事实上,这些信息结合在一起,如上面和下面突出显示的部分所示。

按获胜的发球游戏排序
当决定谁是最好的发球者时,一个关键的决定因素是根据发球得分对网球运动员进行分类。
为此,我将从抓取的 Dataframe 中提取两列,名为 df,创建一个名为 rankings 的新列,然后使用 sort_values 方法根据“Service_Games_won”列中的值对网球运动员进行排序。
返回的名为“网球发球”的数据显示,尽管目前世界排名第 15 位,但约翰·伊斯内尔的发球胜率最高。Milos Roanic 的发球胜率位居第二,但世界排名第 19 位。
世界排名第一的诺瓦克·德约科维奇排名第五,而罗杰·费德勒和大卫·戈芬各自的世界排名与他们在发球比赛获胜百分比表中的位置相匹配。

服务指数
虽然发球胜率最高的网球运动员可能是 ATP 巡回赛男子最佳发球者的最佳决定因素,但让我们使用一些其他收集的数据,创建一个简单的发球指数
这个指数将合并和平均;第一发球、赢得的第一发球得分、赢得的第二发球得分和挽救的破发点百分比。我在原始数据帧 df 中为此创建了一个新列,然后获取球员列和新创建的发球指数列,添加排名列,最后根据发球指数对前 20 名网球运动员进行排序。
约翰·伊斯内尔再次位居榜首,世界排名第一,诺瓦克·德约科维奇排名第六。显然,德约科维奇比赛的其他方面肯定让他成为目前的 ATP 世界第一。

摘要
这个抓取教程演示了如何将抓取的数据制成数据帧,以便使用 Pandas 库进行查询。在这里,洞察最好的网球发球在男子比赛中可以确定。
简单之吻
做得更少但做得更好

Photo by Kyle Cesmat on Unsplash
想象一个男人出现在一个正式的舞会上。他穿着一套剪裁完美的西装,夹克是亮粉色,带有红色方格图案。他的裤子是绿色的,带有紫色的竖条纹。这套衣服是一位著名设计师的作品,花了不少钱。这个人的脖子上还挂着一条金项链,双手戴着红宝石戒指。然而,在他身后,是一个穿着黑色礼服的女人,除了一对珍珠耳环之外,没有任何配饰。想一想这两位客人。
你认为这两者中哪一个更优雅?
IT 行业非常了解第一种类型。穿西装的人相当于一个花费了公司数百万美元的系统。该系统由来自不同提供商的几个组件组成,这些组件通常无法正常通信,而且往往只是在你需要向老板传递紧急信息的时候才会停止工作。
科技中的优雅
Unix 哲学更接近穿黑裙子的女士,专注于使用工具或编写程序,做一件事,但做得完美。
当我们问谷歌什么是“优雅”它提供了两个。
1."外表或举止优雅时尚的品质."
2.“令人愉快的巧妙和简单的品质;整洁。”
维基百科显示了类似的东西,
"优雅是一种美,表现出不同寻常的有效性和简单性."
为什么我会在一个科技博客上进入优雅?因为正是我们这些工程师应该为过于复杂的系统、超出预算的项目以及围绕在我们工作周围的普遍丑陋(更好的说法是“技术债务”)而受到指责。我们大多数人都知道 KISS 原则,但是每当需要在代码中多实现一个特性时,我们经常会忘记它。

是什么阻碍了优雅?
紧张的时间限制是优雅解决方案的主要杀手。简单不等于“快”或“容易”通常情况下,是相反的。简单的设计需要对所有预期的用例进行仔细的思考和分析,以提出一个清晰简洁的想法。
虽然您可以在没有适当设计和没有对可能的功能范围进行太多考虑的情况下构建软件,但是维护代码将是一件痛苦的事情。因为每次出现一个 bug,它很可能是由您缺乏适当的边缘情况处理引起的。如果没有一个函数应该或不应该做什么的明确范围,您很可能会在代码的某个地方添加一个条件子句。
但是在十次这样的情况之后,你的代码看起来不再像最初发布时那样了。现在是一堆模糊的条件,没有人知道应用程序的预期行为是什么。有时候,乍一看完全不相关的东西的变化会导致不同子系统的错误。然后每个人都抓抓头,悄悄地恢复最后一次提交。是时候采用另一种方法了。
为什么复杂更容易实现
优雅的解决方案需要专注和观察。他们需要分析、与客户的良好沟通以及深思熟虑的范围。如果你没有时间弄清楚所有可能的输入参数,或者如果你只是因为缺乏适当的设计而不能弄清楚它们,并且客户不确定他将如何使用产品,那么你最终会在解决问题的过程中跳过一些步骤。
但是还有另一个复杂性的来源。而这一个更难克服。它是大量现成的组件和抽象等着你去使用。前端开发尤其脆弱。使用普通的 HTML5、CSS 和 Javascript 编写一个吸引人的 web 应用程序并不是一件容易的事情。
这就是为什么我们决定委托第三方来实施所有的基本细节,这样我们就可以专注于重要的事情。我们选择一个框架,寻找更多的模块,最终得到臭名昭著的 3GB node_modules目录。只要这些模块中的抽象层符合我们使用它们的方式,一切都应该没问题。通常情况下,我们无法就框架中的某些内容达成一致,因此我们最终会编写一个糟糕的解决方案或一个特例来让它工作。
我希望我能分享一个可行的方法来处理泄漏的抽象,但是我不能。我没有!但是我知道我们不能停止使用它们。这将是巨大的资源浪费。

Photo by John Barkiple on Unsplash
如何保持简单
你写手机应用?与其创建自己的后端,不如使用后端即服务,比如 Firebase 。
你想创建一个登陆页面或博客吗?使用静态站点生成器(如 Jekyll 或 Gatsby )和静态文件托管(如 Netlify )。
你想要一个 CMS 吗? 检出 Contentful 或 DatoCMS。
厌倦了跟踪 web 服务的 SSL 证书吗?使用自动复习器,如 AWS ACM 、 Traefik 、 Caddy 或僵尸 Nginx 。
希望您的代码“按需”运行,而不是支付固定价格的 VPC 实例?尝试功能即服务(或无服务器)解决方案。
哦,对了,除非你有非常精致的品味,否则使用 AWS RDS/Cloud SQL/Azure SQL 这样的托管数据库服务是个不错的主意。
实现简单就是减少组件的数量而不是积累。
保持简单的好处
更多的移动部件通常意味着更多的错误。在一个经典的博客引擎示例中,您可以预期至少会有以下问题:
- 数据库性能差。
- 博客引擎性能差(内存/CPU 不足)。
- 网络吞吐量不足。
- 磁盘空间不足。
- 您为最悲观的用例过度配置,因此您在其余时间超额支付了费用。
- 部署失败。
- 数据库迁移可能会失控。
- VPC 可能会随着备份一起消失得无影无踪。
我不是在这里卖给你一个保护费,但是如果你选择一个静态站点生成器和一个静态文件托管,这些问题大部分都会消失。您还获得了一个免费的连续交付管道,其中每个源代码更改都会导致页面上可见的更改。既简单又功能齐全!
寻找灵感
有些人非常认真地对待 KISS 原则,并将其应用到他们的项目中。如果你这样做了,我很高兴听到你关于通过简单来保持解决方案优雅的建议。请随意使用下面的评论部分来分享一些优雅项目的伟大范例,简单减少的建议,或者关于应该避免什么的警告。
如果你喜欢我创造的东西,考虑订阅 Bit 更好。这是一个社区时事通讯,推荐书籍、文章、工具,有时还有音乐。
原载于 2018 年 8 月 24 日https://www.iamondemand.com。
又一个 AI 冬天?
如何部署更多的 ML 解决方案——五种策略。

Photo by Annie Spratt on Unsplash
TLDR:许多人担心又一个人工智能冬天。我们不缺 ML 试点,但企业只在部署其中的 10%左右。我们必须通过五种战术解决方案来降低部署成本。希望这篇帖子能帮助 ML 的高管、管理者、从业者思考得更深,行动得更快。我们是对抗另一个人工智能冬天的最后一道防线。最后,你可以找一个实时调查,看看别人是如何看待这个问题的。
这是一个密集的帖子。这里有一个目录来帮助你导航:
- 一个故事
- 大图:对人工智能的兴趣和供给
- 小图:对人工智能的需求
- AI Winters 的(非常)简史&今天的核心问题
- 五个子问题及战术解决方案
- 针对社区意见的实时调查
特别感谢至希斯克利夫·路易斯的宝贵意见。他的团队正在加拿大做一些不可思议的事情!
免责声明 :这篇文章没有得到我工作的任何公司或我提到的任何工具的支持或赞助。我交替使用人工智能、数据科学和 ML 这三个术语。
喜欢你读的东西?在媒体、 LinkedIn 或 Twitter 上关注我。还有,作为一名数据科学家,要不要学习商业思维和沟通技巧?查看我的“对机器学习的影响”指南。
如果你喜欢这篇文章,请分享,这样其他人就可以加入对话。
1.故事
在阅读了我的“数据科学很无聊”之后,我和 Michelle 最近进行了一次非常好的讨论,她是加拿大一家顶级银行的高管,有着积极的 ML 议程。
Michelle 负责监督 ML 概念证明(POC)的投资组合。每个 POC 都旨在了解特定的 ML 技术在 4-6 个月内是否对业务有价值。她的目标是部署,而不仅仅是完成每年更多的概念验证。她目前的部署率在 13%左右。
归结为两个问题:为什么我们不能部署更多的 ML 解决方案?又一个 AI 冬天来了吗?
我的简短回答是这样的:是的,如果你不部署更多的 ML 解决方案,另一个 AI 冬天将会到来。你和你的数据科学团队是抵御人工智能寒冬的最后一道防线。你需要解决五个关键挑战来保持势头。否则,你和你的数据科学团队将失去 21 世纪最性感的工作(显然我没这么说)。
2.大图:对人工智能的兴趣和供给
自 2012 年以来,我们一直在经历一个“人工智能的春天”(例如,许多关于人工智能的兴奋)。这是由于技术突破、深度学习的商业化和廉价计算。对人工智能兴趣的上升很大程度上是由Alex Krizhevsky(Geoff hint on 的学生和我的同事)的工作以及谷歌和英伟达等公司的投资推动的。
自 60 年代以来,我们每十年都有类似的艾泉水。然而, 艾温特斯 ,被 1)怀疑和 2)削减经费定义,每次都跟着。
人们会怀疑吗?似乎是这样的(或者至少开始是这样的)。今天市场上有各种各样的观点。总结的一个方法是看看谷歌搜索的趋势。虽然过于简单,但我们可以看到大趋势:整体兴趣仍然很高,但似乎趋于平缓。

Google Trend, searched on October 18, 2019; Author’s analysis
基金被削减了吗?还没有。有两股重要的潮流:风险投资和企业融资。根据毕马威(KPMG)的一份报告,如果我们比较 Q1 在 2018 年和 2019 年的投资以及历史交易,整体风险投资市场有所降温。但是,仍然有很多风险投资的钱。人工智能仍然是最热门的领域(直到风投找到更好的机会)。从供应的角度来看,人工智能初创企业和人才可能会保持增长势头。

Souce, captured on October 28, 2019
另一方面,企业定义了人工智能的真正需求和命运,因为 1)它们是许多人工智能初创公司的客户,2)它们雇佣了最多的人工智能人才。不幸的是,关于企业如何在内部资助人工智能计划的公开数据并不多。我们可以通过观察基本面来推断:部署人工智能解决方案的企业是为了实现,而不仅仅是为了说明,承诺的价值观吗?如果是这样,考虑到利润驱动的目标,他们会保持或增加资助。
3.小(呃)图:对人工智能的需求
让我们放大来看看近年来企业是如何采用和部署人工智能功能的。

- N = 11,400 organizations in North America, Europe, and Asia; 2) International Institute of Analytics; 3) Forbes, 2019; Author’s Analysis.
注意事项 : a)调查不代表全貌。有的公司当然部署 10%以上;我见过部署了 25–40%的公司,但它们通常是较小的公司。b)我们不知道 10%的部署是否足够。公共数据有限,无法显示 ML 与非 ML POCs 的部署率,或者 10%的部署回报是否涵盖 POC 计划的总成本;但普遍的看法是,“我们可以做得更好”。c)每次调查涵盖不同的公司,但通常代表北美的大型企业。
我的关键要点是:如果企业不部署更多的 ML 解决方案,内部对 AI 的需求将会减少。这将产生连锁反应。ML 人才会失去耐心,离开;风投会将投资转移到其他更有前景的机会;高管们将失去信心,并削减对人工智能计划的资助。历史会重演:又一个 AI 冬天一定会到来。我能感觉到寒意。
4.AI Winter(非常)简史&当今企业的核心问题
有许多原因导致了冬天的到来;它们可能是政治的、技术的和社会的。利比·金赛写了一篇文章,分析了今天的不同。好消息是:过去的许多限制因素,如数据(有更多的服务和工具来提供良好的培训数据)、处理能力、商业就绪性和数字化的整体水平都有所改善。坏消息是:我们仍然需要克服一个很大的障碍(一些老问题仍然存在,但相对而言,它们可以得到更好的管理)。
在我所观察的企业中,核心问题是部署人工智能的经济性,就像采用任何其他技术一样。这是我们整个行业必须克服的关键障碍。如果我们现在采取行动,许多经济因素都是可以解决的。
我最喜欢的作家琼·狄迪恩说:“生活瞬息万变。平凡的瞬间”。我们无法预测事情何时会发生。无论艾冬天,我们都要时刻保持正念,积极主动,做好准备。
所以,让我们更深入地思考一下,为什么企业只部署了大约 10%的 ML POCs 以及我们现在能做些什么。
5.让我们变得具体而有策略
简而言之,部署 ML 解决方案仍然过于昂贵。我们可以把它分解成五个子问题,了解核心问题,并相应地解决每一个问题。
1)流程:从 POC 到部署的路径并不清晰。大多数企业在整个组织中寻找 POC 想法,对一些有前途的想法进行优先排序和投资。试点完成后,人们会打开香槟,展示一些花哨的演示,然后沉默。许多团队不知道下一步是什么;他们不知道从哪里获得资金;他们不知道与谁合作来将概念验证增强为生产级解决方案。这本身就是一个问题,见第 3 点)。
核心问题:如何从概念验证转向生产系统?
解决方案 :为前期部署预留资金。设定明确的部署标准以触发资金发放(例如,比旧模型至少提高 2%的准确性)。有一个封闭的方法来释放后续资金。建立一个吸纳流程,让 IT 和运营专家尽早参与咨询。如果 PoC 最终进入部署阶段,要有一个资源规划流程。
2)激励因素:POC 项目的 KPI 不正确。通常,ML POC 计划是更大的企业创新任务的一部分。根据定义,这些想法需要有点“出格”。目标是学习而不是部署。这设置了错误的激励和期望。因此,数据科学团队专注于尝试前沿技术,而不是平衡创新和工程;他们交付的解决方案是可演示的,而不是可集成的;他们分享关于技术的学习,而不是将技术融入核心业务运营的计划。激励驱动行为;行为决定结果。
核心问题:如何让团队构建更可部署的解决方案?如何打造这样的团队?
解决方案 :将 KPI 从“学习”切换到“可部署创新”。使用我的 MJIT 方法 来平衡创新和可部署性😎。强调深思熟虑的工程设计(仅够部署,而不是在证明价值之前过度工程设计)。将可交付成果标准化,以包括部署就绪的应用程序(这应该已经是可演示的)、集成计划以及关于学习、利弊和风险的业务案例。
团队:许多 POC 团队没有合适的技能组合。很多数据科学团队只想建模型;他们不想做工程,不想做运营。如 2)中所讨论的,激励和一般期望起着关键作用。没有结合正确的工程实践,团队增加了部署的障碍。想象一下这样一个场景:您花了 4 个月的时间创建了一个很棒的 PoC,主管们都很喜欢它。但是你意识到你需要花至少 18 个月的时间来重新设计,组建合适的团队,并通过适当的工程尽职调查进行重建。这破坏了投资回报。
核心问题:如何让团队构建可部署的解决方案?如何打造这样的团队?
解决方案 :聘请有经验、对工程有热情的数据科学家。鼓励数据科学家学习全栈 ML ( 这个 是一个很好的起点)。如果你找不到他们或者他们太贵,通过利用来自工程和操作团队的专家创建一个混合团队。如果这些选项都不行,在LinkedIn上 DM 我,我很乐意聊天😉。
科技:基础设施差距很大。开发(DEV)和生产(PROD)环境有不同的数据和工具。因此,将解决方案从开发转移到生产时,需要进行大量额外的重构和测试。从数据的角度来看,大多数生产数据不能在开发中使用(有充分的理由)。当使用生产数据时,ML 性能可能会有很大差异。从工具的角度来看,在 DEV 中有许多新工具可用于创新目的,但是 PROD 仍然使用优化稳定性和可伸缩性的遗留工具(这不是一件坏事)。
核心问题:实现创新和稳态运行的最佳技术组合是什么?如何整合和简化它们?
解决方案 :创建一个沙盒环境来托管经过清理的最新数据。有一个指导方针来帮助团队在 ML 工作流程中选择正确的工具(例如,如果 PROD 不支持 Python Pandas,在开发中总是使用好的旧 SQL 进行数据管道传输;为如此关键的组件切换语言是一件非常痛苦的事情)。允许并鼓励团队使用 Dockers 架构,以允许更高级别的应用程序堆栈的灵活部署,即使一些基础架构&安全团队可能不喜欢它。将 ML DevOps 的做法( 埃里克布洛达 写好的 件 本 本 经 马丁福勒 )。
5)政治:对变革的阻力很大。我对此争论了很久,因为它看起来很普通,而且过于明显,但我认为它仍然值得一提。像任何新思想、工具或流程的引入一样,它会由于怀疑、不熟悉或误解而产生一定程度的不确定性。对失败的恐惧阻碍了重要而理性的决策。结果,团队花额外的时间在内部政治上导航;好的 POC 错过了发布窗口。
核心问题:如何获得利益相关者的认同?
解决方案:让价值观和利益一致。有正确的用例,有清晰有力的价值主张。让高管和运营利益相关者尽早参与上下游流程。与他们共同设计解决方案。通过 2)中提到的流程考虑他们的专家意见,尽早获得认同。采用分阶段展开的方法;这不是一个新的想法,但值得重申。雇佣那些不太受内部政治束缚的优秀顾问来敲门(也对冲风险😉).查看我在人工智能的最后一英里问题中概述的方法。
6.实时调查
以上是我的观察和建议。它们并不详尽,并且受我的经验和偏见的影响。我想借此机会听取社区的意见。我邀请您参加一个 10 秒钟的调查。一旦你分享了你的意见,你就能看到别人的想法。和往常一样,如果你有任何我错过的反馈或想法,请留下评论。
我将在几周后发表另一篇帖子来分享调查结果(以及对“其他”的回答)。在媒体上跟随我,这样你会得到通知。
综上
如果我们不部署更多的 ML 解决方案,人们将失去信心,企业将把注意力转移到更有前景的机会上,就像过去的 AI Winters 一样。我认为许多问题可以立即解决。有些是 ML 技术的具体问题,但许多是企业中永恒的挑战。虽然这听起来可能很无知,但让我们驾驭历史的进程,避免另一个人工智能的冬天!ML 的高管、经理和从业者,我们是抵御人工智能寒冬的最后一道防线。
谢谢你能走到这一步。喜欢你读的吗?关注我中、 LinkedIn ,或者 Twitter 。如果你喜欢这篇文章,请分享,这样其他人就可以加入对话。
还有,作为一名数据科学家,要不要学习商业思维和沟通技巧?查看我的“对机器学习的影响”指南。
你可能也会喜欢我的其他作品:
每个懒惰的全栈数据科学家都应该使用的 5 套工具
towardsdatascience.com](/the-most-useful-ml-tools-2020-e41b54061c58) [## 12 小时 ML 挑战
如何使用 Streamlit 和 DevOps 工具构建和部署 ML 应用程序
towardsdatascience.com](/build-full-stack-ml-12-hours-50c310fedd51) [## 越狱
我们应该如何设计推荐系统
towardsdatascience.com](/how-to-design-search-engines-24e9e2e7b7d0) [## 数据科学很无聊
我从事数据科学的正常(无聊)日子以及我如何应对
towardsdatascience.com](/data-science-is-boring-1d43473e353e) [## 人工智能的最后一英里问题
许多数据科学家没有充分考虑的一件事是
towardsdatascience.com](/fixing-the-last-mile-problems-of-deploying-ai-systems-in-the-real-world-4f1aab0ea10) [## ML 和敏捷注定的联姻
Udacity 的创始人巴斯蒂安·特龙毁了我的 ML 项目和婚礼
towardsdatascience.com](/a-doomed-marriage-of-ml-and-agile-b91b95b37e35)
您需要的最后一个 Matplotlib 调整指南
让我们面对现实吧——Matplotlib 并不是你所知道的最吸引人的数据可视化库。然而,在 Seaborn 、 Bokeh 或Plotly——或任何其他可视化库之前,你可能已经学会了这个库。

Photo by Isaac Smith on Unsplash
如果你是一个新人,看到难看的图表,不知道该怎么办,这可能是一种痛苦。至少对我来说是这样。幸运的是,我将向你展示几件你可以做的事情来让你的视觉突出。
让可视化看起来体面并不是一件困难的任务,因为你将得到几行代码,你可以把它们粘贴到任何地方,并在任何未来的项目中使用。95%的代码看起来总是一样的,另外 5%会根据你的颜色偏好而变化。
阅读本文后,您将:
- 知道如何调整 Matplotlib 图表的外观
- 拥有一个代码块,它会让任何图表立刻看起来更好
所以事不宜迟,我们开始吧!
使用的数据集
与任何与我的编码相关的文章一样,我们将从导入开始。您将需要 Pandas 库来加载和处理表格数据,并且您还需要 Matplotlib ( 一些能让我们进行调整的东西):

太好了。现在来看数据集。我使用的是国际航班乘客数据集,主要是因为它在绘制时看起来很漂亮。无需下载,只需将网址粘贴到 中即可。read_csv() 函数,记住它是分号分隔的数据集:

好哇!我们已经导入了数据集和所有必要的库。现在我们可以使用 Matplotlib 来查看数据集的样子:

呀。快速浏览一下图表,您会立即知道为什么 Matplotlib 需要调整。如果你觉得上面的图表没问题,那么你可能就不应该读这篇文章(也许应该咨询眼科医生)。
如果你的眼睛没问题,继续阅读。
改变尺寸
这是到目前为止最显而易见的事情,因为默认的 Matplotlib 图表非常小(如果您坚持使用默认的大小,祝您好运)。
由于我们希望代码可以复制粘贴到您正在处理的任何项目中,因此我们不希望图表调整与图表相关,我们将使用来自 Matplotlib 的 rcParams 来更改默认的绘图大小:

如果您要重新绘制数据集,您会看到一个更大且更容易解释的图表:

移除边框
顶部和右边界看起来很痛苦。因为他们,这个图表看起来封闭,令人痛苦的没有吸引力。
幸运的是,这些边界可以不费吹灰之力就被移除。我们的整个 rcParams 配置现在将如下所示:

重新绘制数据集后,我们看到了更好的、开放的图表:

调整线条颜色和宽度
我不知道你是怎么想的,但我不太喜欢深蓝色和几乎看不见的细线。通过利用线宽和推进周期参数,你可以很容易地改变这些参数。
第一个需要一个数字,我认为 2.5 是一个好的起点。然而,第二个需要一个颜色的数组。这是一个数组,因为在一些图表上你会有多条线,所以 Matplotlib 需要知道如何给它们着色。您可以随意添加多种颜色,但我只添加一种,因为我只有一行:

瞧啊。这更吸引人,也更容易看到:

调整刻度大小
在我们的图表上,我唯一要说的仍然是错误的是 y 轴和 x 轴上的分笔成交点的大小(或者我应该说缺乏大小)。这也很容易调整。选项 xx-large 对我来说效果很好,但是如果你喜欢的话,你可以将它调低到 x-large 或者缩放到 xxx-large :

现在,这更容易阅读:

在你走之前
现在你知道了。在短短的几分钟内,我们把一张难看的图表变成了不那么难看的东西。
这里仍然有事情要做,例如调整图例和标题的大小,但是我把这留给你,因为这个图表没有那些组件。
您现在拥有 7 行代码,可以在任何地方使用,因此您再也不用处理 stock Matplotlib 样式了。
感谢阅读。保重。
喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。
[## 通过我的推荐链接加入 Medium-Dario rade ci
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
medium.com](https://medium.com/@radecicdario/membership)
懒惰的数据科学家的梦幻足球排名
深入分析
混合梦幻足球专家排名与排名聚合方法
这是一篇关于创造梦幻足球排名的文章。我声称(还没有证据……但是),这些排名会比你在网上找到的更可靠。我们不需要做任何花哨的建模来预测玩家的表现。其实我们根本不会用玩家表现数据!
没有球员的表现数据,我们怎么可能创造出准确的排名呢?我们将让其他人为我们做大部分艰苦的工作!

Photo by Martin Reisch on Unsplash
现在是 2019 年,梦幻足球席卷了全世界。从铁杆球迷到不懂飞盘失球的人,每个人都在玩梦幻足球。甚至我妈妈今年也加入了一个联盟。(好吧,她没有真的,但这不会令人惊讶。)
这款游戏如此受欢迎,以至于“梦幻足球专家”是一条可行的职业道路。许多人通过每周给球员排名并给虚拟球队经理提供建议而获得报酬。这听起来可能是一份轻松的工作,但这些专家真的知道他们的东西,他们投入了大量的努力,以保持对不断变化的 NFL 景观的更新。
这些专家将提供我们用来创建玩家排名的数据。我们将简单地把一群专家发布的排名融合成一个单一的排名。每个专家的准确性在不同的周(和不同的年)会有一点不稳定,但是总体来说应该是相当准确的。
为什么我认为这是产生数据驱动玩家排名的最佳方式?为什么不用过去的球员表现数据来预测未来的表现?我并不自大——我不认为我能建立一个很好的模型来预测玩家的表现。大多数专家都很擅长他们的工作。他们将数据分析、球探和足球知识结合起来,将比我提出的任何模型都更好地预测球员。如果你不能打败他们,就放弃,接受他们的结果。
你可能会想:这样的东西不是已经存在了吗?没错,确实有网站(比如 FantasyPros )通过结合个别专家的排名来产生“共识”排名……但我觉得我可以做得更好(好吧,可能我有点自大)。
方法——等级聚合
FantasyPros 使用了一种非常简单的方法,将各个专家的排名结合起来。对于每个玩家,他们只取该玩家在所有专家列表中的平均排名。例如,如果 6 名专家将 Saquon Barkley 列为 1 号球员,3 名专家将其列为 2 号球员,1 名专家将其列为 3 号球员,Barkley 的平均排名为 1.5。
有一个完整的研究领域叫做排名聚合,致力于寻找将来自个人基本排名者的排名列表组合成一致或聚合排名的最佳方式。我认为许多排名聚合方法比 FantasyPros 方法更适合我们的排名任务。
我不会在这里详细讨论任何等级聚合方法(也许这将是以后的帖子),但我将简单讨论一下作为例子的即时决胜。如果你听说过排名选择投票,你可能对即时决选很熟悉。在排名选择投票中,选民按照偏好对候选人进行排名,而不是投票给单一候选人。为了确定获胜者,我们必须汇总投票者的排名,即时决选是一种常见的方式。获得最少第一名选票的候选人不断被淘汰,他们的选票被重新分配,直到一名候选人获得第一名选票的多数。即时决胜在选举中的应用是显而易见的,但没有什么能阻止我们将相同的算法应用于梦幻足球排名。
大多数等级聚合方法关注的是成对偏好,我认为这对我们的梦幻足球目标很重要。例如,如果大多数专家更喜欢玩家 A 而不是玩家 B ,那么玩家 A 在汇总列表中的排名应该高于玩家 B 。FantasyPros 平均法不能实现这一点——如果单个专家将玩家 A 排在很低的位置,这可能会将平均值拉低到足以将 A排在总列表中的 B之下。在 FantasyPros 选秀排名中不难找到一个真实的例子:**

Screenshots of FantasyPros consensus draft rankings on September 2, 2019. Experts have a pairwise preference for James Conner over DeAndre Hopkins, but Hopkins is ranked higher in the consensus rankings.
专家们的成对偏好(最喜欢詹姆斯·康纳)和 FantasyPros 上的一致排名(迪安卓·霍普金斯排名更高)之间似乎存在脱节。即时决选纠正了这个问题——当对相同的数据使用即时决选时,Conner 和 Hopkins 与 FantasyPros 共识排名相比交换了位置。
排名和结果
我从 FantasyPros 使用的资源中收集了数据,并对它们应用了一些等级聚合方法。在很大程度上,所有方法的结果都非常相似,但每一种方法都与 FantasyPros 的共识略有不同。您可以在 此链接 找到我截至 9 月 2 日的标准得分汇总排名草案。
(注意:我的排名中的 FantasyPros 一栏可能与网站不完全匹配。FantasyPros 并不公布他们用来创建共识排名的所有原始数据,所以我收集的数据可能与他们汇总的数据不完全匹配。)
我不知道哪种聚合方法会给出最好的结果,我计划随着赛季的进行对它们进行评估,所以请关注未来的帖子。我还计划用同样的方法制作每周排名。
你有兴趣看更多吗?在 djcunningham0@gmail.com 发表评论或给我发电子邮件。如果有足够的兴趣,我会在持续的基础上公布排名。
成为媒体会员访问成千上万作家的故事!
学习过程:面部识别的逻辑回归——第 2 课
用新的视角重新审视之前的项目。
你们中的一些人可能读过“面部识别的逻辑回归”,这是我大约 3 周前在这里发表的。从那以后,我加深了对机器学习的理解。现在,我正在写这篇文章(并保持旧文章在线),努力记录学习数据科学的道路。

本着我最喜欢的数据科学家之一 Brandon Rohrer 的精神,我欢迎你们所有人都承认我们将不完美的项目推向世界,并且接受它们的不完美是通往成功之路的最重要的一步。
反馈过程
一位才华横溢的数据科学家最近加入了我们熨斗学校的数据科学教师团队。她的名字叫芳芳李,毫无疑问,她是一个名副其实的坏蛋。热门提示:总是请比你聪明得多的人来评论你的工作。
在向芳芳展示了我创建模型的第一次尝试(并一次又一次地展示了她的后续迭代——并阅读了大量博客)之后,我准备好了下一次尝试的待办事项列表。
软经验教训
- 始终让你试图用你的模型回答的问题足够清晰— 如果你的听众不知道你试图解决的问题,他们为什么要关心你的解决方案?
- 让您对结果的解释同样清晰— 任何人都可以读出分类报告的结果。解释你的结果意味着什么以及为什么它们对你的观众很重要,这使得数据科学家对每个行业的企业和利益相关者来说都是无价的。
吸取的惨痛教训
- 您不需要在逻辑回归中对数据进行归一化-在类似线性回归的过程中对要素进行归一化的要点是,由系数指示的每个单位增量都被视为所有要素的“单一单位”,而不管它们最初是如何测量的,也不管它们的比例如何。然而,在逻辑回归中,我们感兴趣的是每个特征与因变量的相对位置。换句话说,我们感兴趣的是数量增加或减少成功几率的对数。因此,没有必要对“单元”的含义进行标准化。更多信息见这个伟大的线程。
- 仅在极端类别不平衡的情况下使用 SMOTE—SMOTE(合成少数过采样技术)创建合成数据,对数据的少数类别进行过采样。当您的数据严重不平衡时,这是一种非常强大和有用的技术。然而,在我的数据中,有大约 80/20 的皮肤/无皮肤分裂,这样一个强有力的措施是不必要的;我了解到,当你没有其他选择时,你只想使用合成数据。
- K-Fold 交叉验证是真正的 MVP —虽然初学者数据科学家最适合使用交叉验证的“保持方法”(即在创建机器学习模型时创建单个训练集和单个测试集),但这种方法可能会出现高方差和数据泄漏,因为它本质上依赖于将哪些数据点放在训练和测试集中。这意味着模型的结果可能会有很大差异,具体取决于将哪些数据放入定型测试集中。另一方面,k-fold 交叉验证是对模型准确性的更严格的测试,因为它实际上是对数据组多次运行这一过程,然后对所有这些小型测试的模型准确性进行平均。(你可以在我关于这个项目的新自述中读到更多细节。)
转到第二段
考虑到所有这些教训,我重新做了我的第一个模型,没有规范我的值或使用 SMOTE。我还花时间用 k 倍交叉验证(k = 4)评估了我的模型,并使我的代码更加简洁。
最后,我得到了和我之前的模型差不多的准确度分数(~91%),但是这个版本无疑更加可信和严谨。
我鼓励所有阅读这篇文章的人访问我项目的 repo 来深入了解每一步,可视化,所有结果的解释,以及有关道德的简短讨论。
在法庭上使用商业家谱数据的法律和伦理挑战

“遇见你的基因”是 23andMe 网站上的白色大字,鲜明的色彩对比让人很难滚动离开。该网页美观迷人,邀请潜在客户探索公司的服务选项。只需 $199 和一抹唾液,人们就可以了解他们的祖先和遗传健康的几乎一切,从而促进家庭团聚和预防性健康治疗。该网站散发着简单、便捷和创新的气息——但代价是什么呢?
最近几个月,分析 DNA 并生成家谱的公司,如 23andMe 和 Ancestry.com公司吸引了媒体的关注,因为它们的数据宝库帮助确定了原本是悬案的嫌疑人。值得注意的是,臭名昭著的金州黑仔,在整个 20 世纪 70 年代和 80 年代困扰着加州,最终在 2018 年 4 月通过开源系谱研究网站 GEDmatch 被确定。在不需要搜查令或传票的情况下,执法部门能够上传凶手各个犯罪现场的 DNA 样本,将他与之前使用过该网站的远亲联系起来。虽然商业家谱数据的这种应用导致了一个以前无望的案件的结束,但它也提出了法律和伦理问题。

https://cdn.officer.com/files/base/cygnus/ofcr/image/2019/01/640w/SnohomishSolve.5c3cbfad8e164.jpg
自从最近鉴定出金州黑仔以来,面向消费者的家谱数据库已经被执法部门用于超过 15 起刑事案件。虽然这种识别嫌疑人的方法越来越普遍,但它在法庭上的有效性在今年六月才刚刚得到检验。案件涉及 1987 年一对年轻的加拿大夫妇在访问华盛顿州时被谋杀。30 多年来,这个案件一直悬而未决,直到警方能够通过基因数据库将犯罪现场发现的 DNA 与威廉·厄尔·塔尔博特二世的 DNA 进行匹配。虽然塔尔博特本人从未提交过他的 DNA,但他的两个堂兄弟却因此得以让官员们辨认出他。他的案件对第四修正案防止不合理搜查和扣押的保障以及 1994 年 DNA 鉴定法案提出了新的挑战。尽管塔尔博特的律师在法庭上似乎忽视了这些法律纠纷,但他的案件仍然提供了一个有趣的网站,可以理解这种新的、或许令人不安的商业 DNA 记录用例的含义。
需要说明的是,自 20 世纪 90 年代以来,执法机构已经广泛采用了 DNA 取证技术,尽管是通过私人和受控的数据库以及严格的监管标准。1994 年,通过了 DNA 鉴定法案,以确保 DNA 法医学的合宪性,这在当时是一种新技术。该法案伴随着联合 DNA 索引系统(CODIS) 的建立,该系统成为联邦 DNA 索引和执法机构的重要资源。虽然 1994 年 DNA 鉴定法案和 CODIS 鼓励在法律中使用 DNA 法医,但他们似乎也在平衡隐私权,因为 CODIS 将 DNA 的收集限制在(1)被判有罪的人,(2)从犯罪现场回收的 DNA 样本,以及(3)从身份不明的人类遗骸中回收的 DNA 样本。此外,访问 CODIS 需要严格的授权程序和遵守隐私保护标准。
虽然 CODIS 受到《DNA 鉴定法》规定的协议的限制,但商业数据库并不遵循同样的标准,因此与现有的法律框架产生了冲突。尽管大多数公司并不总是向政府机构免费提供他们的数据(不像 GEDmatch),但他们的存储库仍然受到搜查令和传票的限制。实际上,这让政府可以直接接触到超过 1500 万提交了数据的个人。然而,由于 DNA 天生具有遗传性,这也使得政府可以间接接触到所有同意的客户的非同意的亲属。事实上,最近由《科学》杂志发表的一项关于 T2 的研究发现,如今,超过 60%的欧裔美国人可以通过基因数据库被识别出来,而这一数字有望在未来两到三年内达到 90%。
现在,许多美国人可能不关心上述统计数据。也许他们认为,如果有人犯了罪,那么他们应该被抓住,或者他们个人没有什么可隐瞒的,所以他们为什么要在乎呢?虽然这可能是真的,但第四修正案明确写入了我们的权利法案,以平衡法律和保护个人隐私,作为对我们自由的保障。具体而言,该修正案列举了:
人民的人身、房屋、文件和财产安全不受无理搜查和扣押的权利不得侵犯,除非有正当理由,并经宣誓或证实,特别说明要搜查的地方和要扣押的人或物,否则不得签发搜查令。
从法律角度来看,似乎每个公民的 DNA 国家数据库会违反“不合理的搜查和扣押”的保证。事实上,这一论点为《DNA 鉴定法案》规定的法律限制提供了基础,并解释了为什么 CODIS 总是阻止从全社会强制采集 DNA。此外,许多通过基因数据库确认的嫌疑人从未同意上传他们自己的 DNA。取而代之的是,他们是通过远房家庭成员被辨认出来的,因此强调了这些搜查的不合理性。
除了缺乏同意之外,政府获取基因数据库的影响应该引起严重的隐私和歧视问题。比方说,人寿保险提供商可以访问这些数据集。也许他们会根据对遗传物质风险的感知来改变保险定价——这难道不是非常不道德和歧视性的吗?虽然这可能听起来反乌托邦和技术恐惧,但如果这些基因数据库仍然不受保护和可用,这很可能是一个迫在眉睫的现实。
最终,通过商业 DNA 数据库识别嫌疑人的方法在法庭上是不可接受的。它们的应用给持久的法律框架带来了严重的挑战,这些法律框架几个世纪以来一直在帮助塑造美国的司法。虽然塔尔博特的案件显然没有认识到这一社会和法律问题的严重性,但未来的案件仍然可以树立适当的先例,可衡量地纠正美国法律制度的尊严。
机器学习的“少即是多”
回顾退出:一种防止神经网络过度拟合的简单方法
注:这是对 Srivastava 等人的论文《Droupout:防止神经网络过拟合的简单方法》的综述。我使用了几个来源,如麻省理工学院新闻来完成这篇评论。我并不自称是该领域的专家,只是一个试图更好地掌握机器学习基础的学生。
在他们的论文中,Srivastava 等人声称,在训练期间重复消除随机选择的神经网络节点及其相应的连接将减少过度拟合,并导致神经网络的显著改善。剔除是解决参数模型中过度拟合问题的第一种方法。即使在今天,辍学仍然有效,运作良好。
这篇综述将回顾理解这篇论文的基础,例如“什么是神经网络”和“什么是过度拟合”

Image From: http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf
什么是神经网络?

Image From Wiki
一个神经网络,它松散地基于大脑中神经元的结构——因此得名,是一种机器学习的方法(计算机通过分析一些训练数据“学习”执行一些任务的过程),其中某些输入(红色圆圈)通过由数千到数百万个节点(紫色圆圈)组成的“隐藏层”输入。
注意两件事很重要。首先,许多神经网络是“前馈”的,或者数据只在一个方向上移动(如箭头所示)。每个节点都连接到下面的节点(接收数据)和上面的节点(发送数据)。
二、隐藏层顾名思义就是隐藏。我们真的不知道那里发生了什么,也没有人给它编程来告诉它该做什么。相反,整个系统在一组训练数据上被训练,其中某个模型接收对正确输出的验证,反之亦然。因此,隐藏层生成一些能够解决特定问题的权重集。例如:如果我绘制了图 x+2y = z 并且随后运行神经网络来尝试绘制相同的图,给定几个输入和输出,隐藏层将在下面的等式中为 a 和 b 分配不同的值: ax + by = z 以尝试达到期望的 x+2y = z.
通常,节点接收的每个输入都将被分配一个“权重”换句话说,第二层是以特定方式对输入进行加权的某个函数(这是隐藏层),并对输入进行加权。对于每个输入,节点将接受输入值并对其进行加权(基于训练数据)。然后,节点将对每个输入执行此操作,并对总数求和。如果该总数高于某个阈值,则节点将向前发送其数据,以便在下一个隐藏层中可以发生类似的过程。
对于渐进层,每个节点将从其每个连接接收不同的数据,然后基于其自身的关联权重输出数据。输出层接收结果产品,并根据相同的准则给出某种答案:如果结果产品在某个范围内,网络将给出相应的答案。
那么,神经网络是如何获得指定的值和具体的权重的呢?神经网络最初被赋予随机的权值和阈值。然后,在输入训练数据(即具有预定相关答案的输入数据)后,神经网络将调整权重和阈值的值,直到找到最适合其目的的值。注意,在这个训练过程中,权重和阈值被不断地调整,使得先前的输入将仍然产生相同的结果。这就是机器学习的美妙之处:它能够以巨大的蛮力发现模式和趋势。
什么是过度拟合?
过拟合是神经网络中的一个严重问题,但它到底是什么?
术语“过拟合”是指神经网络或其他模型对训练数据建模得太好。例如,如果我有足够的参数,我就能够对任何方程或任何我想要的东西建模(我可以只为每个输入分配一个参数),并且我将能够对训练数据进行完美的建模。但是当这个相同的模型用于真实数据时,它不会很好地工作,因为该模型基本上是为训练数据而建模的。
换句话说,训练数据中出现的噪声和随机波动被神经网络提取出来,作为模型中出现的模式的一部分。然而,机器学习的关键是预测未来的趋势和模式,这意味着能够以 100%的准确率预测当前数据可能不是一件好事。
过度拟合大多发生在非参数或非线性模型中,如决策树,因为它们在建模某些目标函数时具有更大的灵活性。为了解决这一问题,大多数机器学习算法会在根据训练数据训练后修剪一棵树,以删除细节。其他算法将包括其他参数来限制模型学习的细节量。
神经网络中的过拟合
Srivastava 等人的论文主要关注具有大量参数的深度神经网络。具有许多参数的神经网络能够接近地模拟大范围的函数(更多的参数=更好的函数估计),然而,这样的大型网络是缓慢的,这使得过拟合成为更大的问题。这是因为在测试时,很难找出许多不同的大型神经网络中不平衡的地方。
文章中有一段很好的话总结了这一点:
然而,在训练数据有限的情况下,许多这些复杂的关系将是采样噪声的结果,因此它们将存在于训练集中,而不存在于真实的测试数据中,即使它来自相同的分布。
随着我在机器学习方面读得越来越多,我开始发现 ML 在很大程度上解决了有限的训练数据、有限的计算和成功的模型/预测之间的权衡。这篇文章中的另一个很好的引用:
在无限制计算的情况下,“调整固定大小模型的最佳方式是对所有可能的参数设置的预测进行平均,对每个设置进行加权…[并对所有可能的模型进行平均,不幸的是,这对于复杂模型是不可能的]
关键词:无限计算。对于数百个节点和转换的输入,上述方法变得几乎不可能。这基本上概括了辍学的动机。我们不是寻找每一个可能的模型及其设置(本质上是一种蛮力方法),而是随机进行,并且在预期中,一切都应该并且将会很好地完成(因为我们有大量的节点和数据,总体来说一切都会好的)。
旁注:这也是为什么 集合模型 (或者许多模型的组合)几乎总是更好的原因。
什么是协同适应
在一个非常基本和主观的层面上,协同适应有点像确认偏差,但是是针对隐藏单元的。理想情况下,给定一个输入,我们希望每个隐藏单元独立于其他隐藏单元对输入做一些不同的和有区别的事情。然而,协同适应是当隐藏单元试图模仿其他隐藏单元时发生的现象,“因为它是正确的”,并导致许多隐藏单元看起来和行为彼此非常相似。Quora 上有一个例子解释做得更好。这里是。
辍学有什么帮助?
Srivastava 等人对上述问题提出的解决方案是一种称为辍学的技术。本质上,Dropout 会在训练过程中随机丢弃一个神经网络中的节点及其连接,以防止 协同适应 。
如前所述,关键思想是从一个生成的模型中随机删除单元。这呼应了节省计算和数据,同时最大限度地提高预测成功率的主题。丢弃随机单元将允许我们基本上有一个伪新模型,我们可以在相同的数据上训练,并给我们更好的预测。来自文章:
在测试时,通过简单地使用具有较小权重的单个未细化网络,很容易近似所有这些细化网络的平均预测效果。这大大减少了过度拟合,并提供了其他正则化方法的重大改进。
可以使用类似于标准神经网络的随机下降来训练辍学神经网络。因此,主要的区别在于,对于每个训练案例,您必须通过删除单元来对稀疏网络进行采样。然后,随着学习率的降低,优化将采取更短的步骤,并最终达到某个最小值,这是您的最佳模型。
结果

发现对于机器学习算法的所有架构,退出都是成功的。见左图。
与贝叶斯神经网络的比较
“丢弃可以被视为对具有共享权重的指数级模型进行等权平均的一种方式。”
贝叶斯神经网络(BNN)是另一种被视为黄金标准的学习方法。bnn 在数据稀缺的领域和项目中非常有用,所以我们真的需要从数据中获取一切有价值的东西。然而,bnn 是昂贵的(在时间和计算两方面),并且难以适应大型网络。这篇文章宣称 BNNs 是“在神经网络结构和参数的空间上进行模型平均的适当方式。”所以自然,文章继续拿退学和 BNNs 做比较。
主要区别是 Dropout 对每个模型(每个去除了一些单元的细化模型)进行同等加权,但是 BNNs 根据模型与数据的拟合程度对模型进行加权。这种方法显然更好,因为它将数据带入全尺寸,但如前所述,它可能会非常耗时/计算量大。辍学训练和测试要快得多。所以最终权衡是值得的。
结论
在我开始这篇文章的结论之前,我认为在任何机器学习问题中,在时间复杂性、计算复杂性和模型的成功之间总是有巨大的权衡。此外,如果你不记得别的,这是文章的精髓:
退出是一种通过减少过拟合来改进神经网络的技术。
模型中使用的标准反向投影将导致不能很好地概括未来数据/进行预测的共同适应。Dropout 将通过随机丢弃其他单元可能依赖的单元来解决这个问题。这些单位将不得不学会独立(字面上的)。虽然辍学增加了培训时间(通常是 2-3 倍),但它的成功似乎使这种权衡变得有价值。正在努力找出加速辍学的方法。例如,对于线性回归,已经发现诸如 L2 正则化的修改形式的正则化降低了模型的随机性,这使得训练如此缓慢。对于更复杂的模型来说,这个过程仍然是一个开放的问题,也许是你需要解决的问题。
鲜为人知的,令人敬畏的迹象测试
以及如何去做

我们都很熟悉 T 检验,也许是 f 检验,甚至是其他一些像 Wilcox 秩和检验之类的东西。有很多统计测试,其中一些我们每天都会用到。统计测试对数据科学很重要,因为我们经常需要知道某个值的重要性。
不太为人所知的是一项名为体征测试的酷测试,由苏格兰医生约翰·阿巴斯诺特于 18 世纪早期首创,他也是对抗天花的早期方法的创始人。符号测试使用符号的统计分布和计数作为统计测试的先导。
符号

非常方便的是,在车床上可以进行信号测试,这样我们就可以观察到源头。符号测试的第一步是将我们测试的两个数组相减。这在 Julia 中很容易做到,只需使用。-操作员:
sets = var1 .- var2
接下来,我们要找出哪些价值观是积极的,哪些价值观是消极的。我们可以通过使用条件句来判断一个数是小于还是大于零来解决这个问题。可能有一种更简洁的方法来做到这一点,但是通常使用这个循环对性能的影响不会太大:
positives = []
negatives = []
zeros = []
for i in sets
if i == 0
zeros.append(i)
elseif i > 0
positives.append(i)
elseif i < 0
negatives.append(i)
end
end
你可以很容易地使用朱莉娅的过滤器!()方法来代替此方法;过滤小于、大于或等于 0 的值。至于我们的零和负,
扔掉它们
我们实际上不需要它们。我们需要的唯一值是 n(样本大小)和 x(阳性数)。)我们可以这样计算 n 和 x:
x = length(positives)
n = length(sets)
下一步是将 n 和 x 代入二项分布。下面的函数类似于我们现在应该有的:

二项分布
在为了计算二项概率和二项分布,我们需要能够计算阶乘。这对符号测试来说是一个巨大的打击,因为阶乘是一个令人惊讶的复杂和密集的计算问题。在 Python 中,可以从 scipy.special 导入阶乘函数,问题?任何大于 23 的数字都会返回无穷大。这是因为 4 的阶乘甚至是大量的乘法运算:
4! = 4 × 3 × 2 × 1 = 24
而这种倍增以惊人的速度呈指数级增长,以 7 为例:
7! = 7 × 6 × 5 × 4 × 3 × 2 × 1 = 5040
这是一个 5015 的差距,从 3 个数字的差距。例如,在谷歌上的计算器中输入 20 的阶乘,我们会得到一个非常非常大的数字。

这个问题是,通常在数据科学中,我们的样本大小远远超过 20。首先创建阶乘函数的循环非常发人深省,而且自相矛盾。我正在使用的语言 Julia 使用的阶乘查找表不能超过 20。这整件事让整个测试变得有点不可理解,对数据科学来说并不可行。如果你想在 Julia 上阅读更多关于这个问题的内容,我已经在这里写了一整篇文章。Julia 的承诺和面临的问题是 Julia 的大浮点类型,它非常精确,可以保存足够的数字来获得实际的阶乘,只要该函数是手动的,而不是在阶乘表上查找。我可能会在未来投入时间,但只有时间会证明…
超越这个测试的主要问题,二项分布的公式是相当简单的。大声念出来,就是 n 的阶乘除以 x 的阶乘乘以 n 减 x,在更好的光线下,这里写出来:
p = n!/ (x!* (n-x))
记住这一点,我们可以从我们执行的符号测试中获取 x 和 n,然后得到它们的阶乘。在 Julia 中,这是通过 factorial()完成的:
factn = factorial(n)
factx = factorial(x)
然后就像把我们的变量代入公式一样简单:
nx = factn / (factx * (n-x))
最后一个函数是这样的…

就是这样!
像π一样简单
我们现在有一个函数来做符号测试。令人惊讶的是,符号测试是未知的,当然用计算器比用编程语言更有趣。我只能希望随着越来越多的统计测试被写成各种语言,经典的符号测试仍然存在。符号测试很简单,因为我们只用几行代码就可以计算出来(尤其是没有那个我懒得去修复的难看的 for 循环)。)将来,看到更多的人知道这个测试以及更聪明地全面采用它会很有趣。
Libra 区块链:技术概述[第一部分]

我是🇵🇹的一名博士研究员@ Técnico Lisboa,在那里我教授以用户为中心的设计。我是基于 Hyperledger 结构的访问控制项目的导师,该项目由 Hyperledger 和 Linux 基金会支持和资助🔥。
目前,我是葡萄牙政府的区块链开发者。我愿意合作和讨论区块链技术🚀:
如果你喜欢区块链和开源,一定要看看我的 Github 页面(https://github.com/sponsors/RafaelAPB/dashboard)🙏
本文假设您对区块链技术有基本的了解。如果你不知道,请点击这里查看一份简单而全面的介绍。在第 1 部分中,我们向 Libra 区块链介绍了 basilar 概念,包括交易、事件和分类账历史。接下来,我提供对 Libra 协议的见解。该摘要基于 Libra 的开发者白皮书。
⛓️简介
“Libra 区块链是一个去中心化、可编程的数据库,旨在支持一种低波动性的加密货币,这种货币将有能力成为全球数十亿人的高效交易媒介”。这是脸书子公司 Calibra 的几名研究人员撰写的 Libra 区块链论文【AMS den 等人,2019】的第一句话。
天秤座的主要目标是提供可靠、廉价、无缝的金融服务(包括但不限于转账和收款)。这些目标是通过创造一种由创始成员控制的全球货币——Libra 来实现的,创始成员是私营公司。
这些组成了天秤座协会。随着时间的推移,验证过程将取决于成员的持股,而不是创始成员。
天秤座协议为天秤座区块链提供动力。
Libra 协议的实现是 Libra 的核心项目。Libra 是一个公共区块链,它的编程语言是 Move。在 Libra 中,每个人都可以看到分类帐的状态,并通过发布交易参与网络。
在 Libra 区块链中,一个“事务是一个围绕着移动字节码程序的认证包装器”。交易作用于分类账的当前状态,如果成功执行,会产生一个新状态。
一个例子:Rafael 从他的账户中转账 5 Libra 到 Técnico 的里斯本账户。注意,和以太坊一样,交易需要支付汽油费。事务还可以生成可供客户端查询的事件。例如,它允许客户查询区块链:“我在最后一天收到了哪些付款?”或者“克里斯蒂亚诺罗纳尔多在最后一分钟收到了哪些付款?”。
交易结构如下:

发送者地址包括序列号、认证密钥和来自内置 LibraAccount 的余额
将发送者公钥散列与认证密钥进行比较,以防止移动虚拟机接受来自有效签名但不与账户相关联的交易。
该事务包括将字节码脚本移动到 execute(程序)中,它具有指定的汽油价格。最高天然气价格对在该交易中可以花费的天然气量设置了阈值。序列号防止重放攻击,即确保事务执行一次。
交易用发送者的私钥签名,并且可以用其公钥验证。
尽管任何客户端都可以加入网络,但是客户端必须经过身份验证(通过 pivate-public key 对)。在 Libra 区块链中,验证器节点持有并决定可编程资源的数据库,这些资源归用户所有(例如,通过钱包应用程序)。
例如,这种可编程资源可以是 Libra(与 Libra 区块链相关联的加密货币),或者是通过智能合约编程的定制资源。
与以太坊不同,这个区块链是一个区块链联盟,这意味着验证器节点——处理智能合约发布的交易的节点——属于一个公司联盟。
实际上,验证者决定分类账的状态,以及哪些交易是有效的。这一事实带来了分散化的风险,因为联盟成员可以以更自然的方式合谋决定共享总账的状态。
它是如何工作的?

上图描述了 Libra 的协议概述。leader 包含可编程资源,可由客户拥有。这种资源被分配给一个模块。
例如,Libra coin,一个可编程的内置资源,继承了 Libra coin 模块的规则。验证者通过一致算法,通过验证客户和验证者发出的交易,对共享分类帐的状态达成一致。
所有的验证器执行事务,导致一个新的状态。当客户端向区块链查询新状态时,它们检索最新的状态,该状态已经由共识协议签名。
状态历史是公开的,因此可以被任何客户端验证。因此,区块链提供了可追溯性和透明度。
这种协议允许生态系统就分类帐的状态达成一致。分类帐的状态对应于每个用户的余额信息。怎么会?状态是一个键值存储,其中一个或多个帐户值与特定的用户地址相关联。帐户值可以是 Libra 或其他可编程资源,这意味着您可以持有多种令牌。
账户价值的概念允许创新者利用 Libra 区块链创建新的服务,这些服务可以在智能合同上明确绑定到特定类型的价值。
上图描述了 Libra 的协议概述。leader 包含可编程资源,可由客户拥有。这种资源被分配给一个模块。例如,Libra coin,一个内置的可编程资源,继承了 Libra coin 模块的规则。验证者通过一致算法,通过验证客户和验证者发出的交易,对共享分类帐的状态达成一致。
所有的验证器执行事务,导致一个新的状态。当客户端向区块链查询新状态时,它们检索最新的状态,该状态已经由共识协议签名。
州历史是公开的,因此可以被任何客户验证。因此,区块链提供了可追溯性和透明度。
这种协议允许生态系统就分类帐的状态达成一致。分类帐的状态对应于每个用户的余额信息。怎么会?状态是一个键值存储,其中一个或多个帐户值与特定的用户地址相关联。
帐户值可以是 Libra,或者另一种可编程的资源——这意味着您可以持有几种令牌。
账户价值的概念允许创新者利用 Libra 区块链创建新的服务,这些服务可以绑定到智能合同上明确的特定类型的价值。
我可以创建我的令牌吗?
资源被组织成模块;用户可以拥有它。这样的模块有一个位置,可以定义几个资源和过程。资源可以是用于金融目的的代币。
其逻辑是在程序上实现的(我们可以用以太坊智能合约或 Hyperledger Fabric chaincode 进行类比)。
不幸的是,至少现在,客户将不能创建定制资源,比如模块。
在这篇文章中,我们讨论了天秤座的基本要素。在下一篇文章中,我将向你展示如何在你的电脑上设置天秤座区块链。
非常感谢您的阅读。你真棒💪
心理学的谎言,科学的无知,人工智能的幻觉

Photo by Jordan Madrid on Unsplash
我喜欢我工作的动力和我工作的环境的众多原因之一是这些领域的强度,这些领域往往迫使我从各种角度思考和“感受”。根据我当天的听众,我可以被视为“宣泄者”,因为我喜欢分享非常原始的情绪,试图在一个非常情绪化的世界里与其他人保持一致。对我来说,这就是数学。根据我亲近的人,我可能会被视为“反社会者”,因为情绪通常不会引发我的反应。但在商界,我经常被许多人称为“精神病患者”,他们最近发现,最好的“商业头脑”和泰德·邦迪一样疯狂。
对我来说,我就是我,对于像我今天这样的旁观者来说,标签可能更尴尬而不是有帮助。外面有很多,你可能没有注意到他们,或者不知道如何与他们交流。然而,对于那些了解我,真正了解我的人来说,我只是一个花更多时间观察和理解事情以解决问题的人,而不是出于压力或情感需求而坚持消费。根据你的文化、领域、角色、关系、教养、目标或哲学,它可以被看作是以下任何一种。
- 寒冷
- 神秘的
- 残酷的
- 领导者
- Naraccistic
- 福音传道者
- 聪明的
- 无知的
- 双极的
- 焦虑的
- 沮丧的
- 注意缺陷障碍
但是视角和它的密友,语境,才是这个“故事”的本质。从上下文来看,透视是一种现实,因为数学很少关心你的想法和你在世界物理中的位置。或者说宇宙。不过,无知当然是福,知道这个词在社会背景下可能有点刺耳。我们也可以称之为“偏见”。或者说,情感。
心理学的谎言
哲学是心理学领域之母。这是我们最深刻的思想家的思想,在这个世界上,太分裂,太受痛苦和情感胜利的驱动,以至于不能“研究”或挑战狂热信仰的观点。尽管多年后,许多感受到世界数学并以能引起几代人共鸣的语言表达出来的头脑,将会产生一个试图理解他们感受的领域。这是科学方法的基础,他们以一种非常人性化、情绪化、有偏见的方式形成了一个假设,我们找到了测量它的方法。心理学是我们理解思维的第一次科学尝试。和心理领域的性质,它忽略了基础科学的发展。这是不可避免的。
我们迅速开发了更多的工具、方法、实践,并在全球范围内连接思想和理念。随着我们将数学引入调查和流程,通信和技术使我们能够做得更多。直觉上了解数学是“统计学”的答案。而“讽刺”或多或少就是从这里开始的。学术界从地方性的出版争论发展到全球性的争论,这种争论是由几十年来在合作企业的幌子下的观点和竞争所推动的。公平地说,增长知识的愿望是真实的,但资助的方法,或工作被认可的方法,受制于学术界的成立。生意和地位。
当每个能量场发现新真相时,新的能量场出现并分裂。既美丽又令人心碎的是,这些领域中有如此多的领域分裂开来,再次汇聚到一个单一的原则上。数学。尽管如此,那些被数学基础所驱使的人倾向于在实践中更快地找到彼此。实际上有一个数学公式是从一个经常被忽略的领域中推导出来的。当你可以有效地衡量人们的无知时,却因为看似显而易见的原因而被忽视。但是心理学催生了科学和数学的认知,以及科学和情感的社会学。
对科学的无知
这是科学上必然的真理。在实践中,我们被警告不要进入学术界,但不可避免地会忘记我们所处的世界。你必须遵循课程,意识到他人的感受,在可以促进或阻止你成长的小组中工作,服从一个非常人性化的导师,面对他们自己的冲突矩阵。你在可测量的科学和遗忘领域的量化情绪与可测量的系统性影响的主题。想争论这一点吗?不太顺利。我以前模拟过这个论点。微积分得心应手。
谢谢你,艾萨克·牛顿爵士,我还被告知他从未正式发表过改变数学观点以形式化微积分的作品,但他的想法或多或少受到了全球社会环境的影响。但人们可能永远不会知道,互联网是一个有偏见的地方。
如今,学术界内外的许多年轻人都非常社会化,然而,对工作和合作的认可也受到你所处环境的文化的影响。一些机构鼓励不同全球机构之间的合作,你可以通过这种方式发表作品。其他人不会根据谁在资助实验室、研究或有时是管理而拥有它。作为观众,你没什么可担心的,我们都以自己的方式参与其中。无论你如何看待你的情绪,它对你的系统影响远远超过你所知道的,如果这是一个你感兴趣的话题,你应该接触图论。现在这已经不是什么理论了,但是跟随白兔你会有惊喜的。
在我自己在学术界的“工作”期间,我接触了其他几个机构,它们从数学上定义了什么是梦。另一个是寻找将子宫中感觉和听到的模式联系起来的方法,以确定儿童时期解决问题的方法。当时物理学的一些领域正在模拟一些似曾相识的事物。可悲的是,我自己的机构的偏见会阻止融合两者的工作发生,而“殉难”不会成为一种警告情绪。问题是…这是相对于那些被他们自己的核心“动机”驱动的人来说的,我的核心“动机”是大脑和数学。不出所料,许多人感到不安。一些人觉得这很有趣。这几个定义了我的“职业生涯”。
人工智能的幻觉
我很幸运地在我们的机构因“计算智能”而受到大量关注的时候离开了学术界,这是一个迅速发展和消亡的领域,因为工作的本质是挑战“心理学”并融合大脑作为机器的数学观点。《心理学》在出版物、工作领域、资金方面卖得非常好,其科学性和理论性足以卖出 T 恤衫和帮助婚姻。今天,商业中的这些团体被称为“用户研究”。虽然这个领域对我们来说产生了 HCI,这很可爱,因为微软基本上消耗了这个领域的每个人。我好像错过了那辆马车。也许这样最好。
AI 的言外之意也太哲学了,但这种环境的喜剧性在于,数学家们现在正在变成心理学家。这是不可避免的,但我也是人,也要服从社会的观点。我觉得有点滑稽。可笑的是,几十年前我们已经确定了如何测量智力,甚至能说出情感是什么。遗憾的是,当时你不能把这项研究卖给一个有家庭资助偏见的调查结果来推销新闻中的耸人听闻的话题,比如“麻省理工学院的研究人员刚刚发现,如果他们玩《我的世界》,你的孩子可能是一个天才,请关注这些消息”。取决于是谁在管理那个实验室,它可能被编进了数字,这个孩子也是一个连环杀手。
这是智力的基础,在当时创造了一个短语“智力的无知和偏见的幸福”,因为对测量它的追求将挑战所需的“自我”、“偏见”等,并将需要大量的社会痛苦来理解或部署。鉴于公司如何谈论人工智能,团体如何资助人工智能,媒体如何传播人工智能,以及我们仍然如何看待年轻一代,人工智能不是你想象的那样。事实上,科学上,数学上,人工智能在一段时间内可能不会像你想的那样。我们会接近的,但还不是时候。或者至少不是你想的那样。
科学心理学和人工智能科学
一切都是人在经营。我们都是消费者。我们每一个人。区别只是在货币的背景下。有些人卖产品,有些人卖梦想,有些人卖愿景,有些人可以把所有这些都包装起来,迫使你加入免费邮轮的分时度假。不具有讽刺意味的是,你可以听到当时被当作小说的哲学陈述和类比,我们继续我们的生活,我现在可以说一些像“谎言中存在真理”,或者“那些生活在文字中的人永远不会看到它们之间的东西”,你不可避免地会在正确的上下文中感受到某种方式,这是语言和情感的影响。文字骗人。事实上,这也有一个可测量的科学,甚至意识到这一点也会让你“感觉”到一些东西。大多数人。
具体到 AI 这个话题,也和我们理解的谁在做“AI”有逻辑和数学上的关联。谁真的相信,并已说服他人,他们是和将达不到。以及那些没有做任何接近人工智能的事情,但随着人工智能在今天的市场中的演变,将不可避免地倒向人工智能的人。这些话题都不好玩。当你不得不成为验证这些事情的人时,那就更没意思了。但非常明确的是,出于各种原因,所有这些都是推动人工智能向前发展所需要的。
人工智能有一个小秘密,许多计算机科学、神经科学、物理学、人工智能、数据科学和任何邻近的实践。我们都是数学,万物都有弹性。它曾被称为第三运动定律。而在所有事情都不可避免的情况下,偏见必然会阻止问题的解决。只是暂时的。
智力
对于那些看待自闭、两极、抑郁、快乐、悲伤、生病、强大、疯狂、聪明或任何其他根据社会或科学而改变定义的词语的人来说,这些话题是“相对的”,但他们都有一个互动的“故事”,来自他们生活中和周围事物的“蝴蝶效应”。你对他们的感觉几乎是不可避免的,你对他们做什么或说什么也是主观的。
但是要知道,有时候你直觉的数学比那些向你推销商品的人的情绪更有力量。毕竟,你的大脑只是数学,你只是没有足够早地接触到算术词汇,以这种方式表达出来。不要让任何人告诉你智力意味着什么,当他们自己不知道如何衡量它的时候。
在我们所有偏见的背后,是我们解决问题和观察模式的能力,同时我们自己表达复杂的模式。
解决问题或理解宇宙不需要博士学位。在很多情况下,是那些没有亲人的人。我们正等着你带领我们前进。
机器学习的局限性
机器学习现在被视为解决所有问题的银弹,但有时它不是答案。
“如果一个典型的人可以用不到一秒钟的思考来完成一项脑力任务,我们很可能现在或在不久的将来就可以用人工智能来实现自动化。”
T2——吴恩达 T4
大多数阅读本文的人可能都熟悉机器学习和相关算法,这些算法用于根据数据进行分类或预测结果。然而,重要的是要明白,机器学习不是所有问题的答案。鉴于机器学习的有用性,很难接受有时它不是问题的最佳解决方案。
在这篇文章中,我旨在说服读者,机器学习有时是正确的解决方案,有时是错误的解决方案。

机器学习是人工智能的一个子集,在过去十年里,正如我们所知,它已经彻底改变了世界。信息爆炸导致了大量数据的收集,尤其是脸书和谷歌等大公司的数据收集。这种数据量,加上处理器能力和计算机并行化的快速发展,现在已经使得相对容易地获得和研究大量数据成为可能。
如今,关于机器学习和人工智能的夸张说法无处不在。鉴于这一领域的潜力巨大,这或许是正确的。人工智能咨询机构的数量在过去几年中激增,根据实际上是的一份报告,2015 年至 2018 年期间,与人工智能相关的工作岗位数量激增了 100%。
截至 2018 年 12 月,福布斯发现,47%的企业在其业务流程中至少拥有一项人工智能能力,德勤的一份报告预测,内置人工智能的企业软件和基于云的人工智能开发服务的渗透率将分别达到约 87%和 83%。这些数字令人印象深刻——如果你打算很快转行,人工智能似乎是一个不错的选择。
这一切看起来都很棒,对吗?公司很高兴,想必消费者也很高兴——否则,公司不会使用人工智能。
它很棒,而且我是机器学习和人工智能的超级粉丝。然而,有些时候使用机器学习是不必要的,没有意义的,而其他时候它的实现会让你陷入困境。
限制 1 —道德
机器学习是人工智能的一个子集,在过去十年里,正如我们所知,它已经彻底改变了世界。信息爆炸导致了大量数据的收集,尤其是脸书和谷歌等大公司的数据收集。这种数据量,加上处理器能力和计算机并行化的快速发展,现在已经使得相对容易地获得和研究大量数据成为可能。
很容易理解为什么机器学习对世界产生了如此深远的影响,但不太清楚的是它的能力到底是什么,或许更重要的是,它的局限性是什么。尤瓦尔·诺亚·哈拉里(Yuval Noah Harari)创造了一个著名的术语“数据主义”(dataism),指的是我们正在进入的一个假定的文明新阶段,在这个阶段,我们更相信算法和数据,而不是我们自己的判断和逻辑。
虽然你可能会觉得这个想法很可笑,但请记住你最后一次去度假,并遵循 GPS 的指示而不是你自己对地图的判断——你质疑 GPS 的判断吗?人们开车进入湖泊是因为他们盲目地遵循 GPS 的指示。
比起我们自己的判断,更信任数据和算法的想法有其利弊。显然,我们从这些算法中受益,否则,我们一开始就不会使用它们。这些算法允许我们通过使用可用数据做出明智的判断来自动化流程。然而,有时这意味着用算法取代某人的工作,这带来了伦理上的分歧。此外,如果出了问题,我们该怪谁呢?
目前最常讨论的案例是自动驾驶汽车——在发生致命碰撞的情况下,我们如何选择车辆应该如何反应?未来,当我们购买汽车时,我们是否必须选择我们希望我们的自动驾驶汽车遵循的道德框架?
如果我的自动驾驶汽车在路上撞死了人,是谁的错?
虽然这些都是有趣的问题,但它们不是本文的主要目的。然而,很明显,机器学习无法告诉我们应该接受什么样的规范价值观,即在给定的情况下,我们应该如何行事。正如大卫·休谟的名言,一个人不能“从一个是中推导出一个应该”。
限制 2 —确定性问题
这是我个人不得不面对的一个局限。我的专业领域是环境科学,非常依赖于计算建模和使用传感器/物联网设备。
机器学习对于传感器来说非常强大,当连接到测量温度、压力和湿度等环境变量的其他传感器时,可以用来帮助校准和校正传感器。来自这些传感器的信号之间的相关性可用于开发自校准程序,这是我的大气化学研究领域中的一个热门研究课题。
然而,当涉及到计算建模时,事情变得更有趣了。
运行模拟全球天气、地球排放以及这些排放的运输的计算机模型在计算上是非常昂贵的。事实上,它的计算成本非常高,即使在超级计算机上运行,研究级别的模拟也可能需要数周时间。
MM5 和 WRF 就是很好的例子,它们是数值天气预报模型,用于气候研究和在早间新闻中给你天气预报。想知道天气预报员整天都在做什么?运行并研究这些模型。
运行天气模型很好,但现在我们有了机器学习,我们能不能用它来获得天气预报呢?我们能否利用来自卫星、气象站的数据,并使用基本的预测算法来辨别明天是否会下雨?
令人惊讶的是,答案是肯定的。如果我们知道某个地区周围的气压、空气中的湿度水平、风速以及关于邻近点及其自身变量的信息,就有可能训练例如神经网络。但是代价是什么呢?
使用具有一千个输入的神经网络来确定波士顿明天是否会下雨是可能的。然而,利用神经网络错过了天气系统的整个物理学。
机器学习是随机的,不是确定性的。
神经网络不理解牛顿第二定律,或者密度不能为负——没有物理约束。
然而,这可能不会是一个长期的限制。有许多研究人员正在寻找将物理约束添加到神经网络和其他算法中,以便它们可以用于这样的目的。
限制 3 —数据
这是最明显的限制。如果你给一个模型的反馈不好,那么它只会给你糟糕的结果。这表现在两个方面:缺乏数据,以及缺乏好的数据。
缺乏数据
许多机器学习算法在开始给出有用的结果之前需要大量的数据。神经网络就是一个很好的例子。神经网络是吃数据的机器,需要大量的训练数据。架构越大,产生可行结果所需的数据就越多。重用数据不是一个好主意,数据扩充在某种程度上是有用的,但是拥有更多数据总是首选的解决方案。
如果你能得到数据,那就使用它。
缺少好的数据
尽管外表如此,但这与上面的评论并不相同。让我们想象一下,你认为你可以通过生成一万个假数据点放入你的神经网络来作弊。当你把它放进去的时候会发生什么?
它会自我训练,然后当你在一个看不见的数据集上测试它时,它不会表现得很好。你有数据,但是数据的质量没有达到标准。
与缺少好的要素会导致算法性能不佳一样,缺少好的基础数据也会限制模型的能力。没有一家公司会实现一个比人类水平的错误表现更差的机器学习模型。
类似地,在一种情况下应用根据一组数据训练的模型不一定也适用于第二种情况。到目前为止,我发现的最好的例子是乳腺癌预测。
乳房 x 光数据库中有很多图像,但它们受到一个问题的困扰,这个问题近年来引起了重大问题——几乎所有的 x 射线都来自白人女性。这听起来可能没什么大不了的,但实际上,由于各种因素,包括检测和获得医疗保健的差异,黑人妇女死于乳腺癌的可能性增加了 42%。因此,在这种情况下,主要针对白人女性训练算法会对黑人女性产生负面影响。
在这种特定情况下,需要在训练数据库中有更多黑人患者的 x 射线,更多与这种 42%增加可能性的原因相关的特征,以及通过沿相关轴对数据集进行分层来使算法更加公平。
如果你对此持怀疑态度或者想了解更多,我推荐你看看这篇文章。
限制 4 —误用
与之前讨论的第二个限制相关,据称学术研究中存在一场“ 机器学习危机 ”,人们盲目地使用机器学习来尝试和分析本质上确定性或随机性的系统。
由于限制二中讨论的原因,在确定性系统上应用机器学习将会成功,但是算法不会学习两个变量之间的关系,并且不会知道它何时违反物理定律。我们只是向系统提供一些输入和输出,并告诉它学习这种关系——就像有人从字典中逐字翻译一样,该算法只会看起来对底层物理有一个浅显的理解。
对于随机系统,事情就不那么明显了。随机系统的机器学习危机表现在两个方面:
- p-黑客
- 分析的范围
P-hacking
当一个人可以访问大量数据时,这些数据可能有数百、数千甚至数百万个变量,找到一个具有统计显著性的结果并不太困难(假设大多数科学研究所需的统计显著性水平是 p < 0.05 )。这通常会导致发现伪相关性,而这些伪相关性通常是通过 p-hacking(查看大量数据,直到发现显示统计显著结果的相关性)获得的。这些不是真正的相关性,只是对测量中的噪声做出的反应。
这导致了个人通过大数据集“钓鱼”统计上显著的相关性,并将这些伪装成真正的相关性。有时,这是一个无心的错误(在这种情况下,科学家应该接受更好的培训),但其他时候,这样做是为了增加研究人员发表的论文数量——即使在学术界,竞争也很激烈,人们会尽一切努力提高他们的指标。
分析范围
与统计建模相比,机器学习的分析范围存在固有的差异——统计建模具有固有的验证性,而机器学习具有固有的探索性。
我们可以认为验证性分析和模型是某人在博士项目或研究领域中做的事情。想象一下,你正在和一个顾问一起工作,试图开发一个理论框架来研究一些现实世界的系统。这个系统有一组预定义的特征,它会受到这些特征的影响,并且,在仔细设计实验和开发假设之后,你能够运行测试来确定你的假设的有效性。
另一方面,探索性分析缺乏一些与验证性分析相关的品质。事实上,在真正的海量数据和信息的情况下,证实性方法由于数据量巨大而完全失效。换句话说,在数百个、更不用说数千个、更不用说数百万个特征的情况下,要仔细地设计出一组有限的可测试的假设是不可能的。
因此,从广义上讲,机器学习算法和方法最适合对大量数据和计算复杂的特征进行探索性预测建模和分类。有些人会争辩说,它们可以用于“小”数据,但当经典的多元统计方法提供更多信息时,为什么要这样做呢?
在很大程度上,ML 是一个解决信息技术、计算机科学等问题的领域,这些问题可以是理论问题,也可以是应用问题。因此,它与物理、数学、概率和统计等领域相关,但 ML 实际上是一个独立的领域,一个不受其他学科关注的领域。许多 ML 专家和从业者提出的解决方案都是令人痛苦的错误……但是他们完成了任务。
限制 5 —可解释性
可解释性是机器学习的主要问题之一。一家人工智能咨询公司试图向一家只使用传统统计方法的公司推销时,如果他们认为模型不可解释,可能会被叫停。如果你不能让你的客户相信你理解算法是如何做出决定的,他们有多大可能信任你和你的专业知识?
正如“商业数据挖掘——机器学习视角”中直言不讳地指出:
“如果用商业术语解释结果,业务经理更有可能接受[机器学习方法]的建议”
这些模型本身可能会变得无能为力,除非它们可以被解释,而人类解释的过程遵循的规则远远超出了技术能力。出于这个原因,可解释性是机器学习方法在实践中应用时应该达到的最重要的质量。
尤其是正在蓬勃发展的组学科学(基因组学、蛋白质组学、代谢组学等),已经成为机器学习研究人员的主要目标,这正是因为它们依赖于大型且重要的数据库。然而,他们的方法缺乏可解释性,尽管他们取得了明显的成功。
总结和彼得·沃斯的清单
虽然不可否认,人工智能开辟了一个充满希望的机会的财富,但它也导致了一种心态的出现,这种心态可以被最好地描述为“人工智能解决方案主义”。这是一种哲学,即给定足够的数据,机器学习算法可以解决人类的所有问题。
正如我希望我在这篇文章中已经阐明的那样,至少在目前,有一些限制阻止了这种情况的发生。一个神经网络永远无法告诉我们如何成为一个好人,而且,至少目前来说,不理解牛顿的运动定律或者爱因斯坦的相对论。机器学习的基础理论(称为计算学习理论)也有一些基本限制,主要是统计限制。我们还讨论了与分析范围相关的问题以及 p-hacking 的危险,这可能导致虚假的结论。结果的可解释性也存在问题,这可能会对无法让客户和投资者相信他们的方法准确可靠的企业产生负面影响。
虽然在这篇文章中,我已经非常广泛地涵盖了人工智能的一些最重要的限制,但作为结束,我将概述 Peter Voss 在 2016 年 10 月发表的一篇文章中公布的一个列表,概述关于人工智能限制的更全面的列表。虽然当前的主流技术在狭窄的领域中非常强大,但它们通常会有一些或所有他列出的限制,我将在这里全文引用:
- 每一个狭窄的应用都需要专门的训练
- 需要大量手工制作的、结构化的培训数据
- 学习通常必须被监督:训练数据必须被标记
- 需要长时间的离线/批量培训
- 不要以增量或互动的方式实时学习
- 迁移学习能力差,模块重用性差,集成性差
- 系统是不透明的,很难调试
- “长尾”的绩效无法审计或保证
- 它们编码的是相关性,而不是因果关系或本体关系
- 不要编码实体或实体之间的空间关系
- 仅处理自然语言的非常狭窄的方面
- 不太适合高层次的符号推理或计划
尽管如此,机器学习和人工智能将继续变革工业,并且只会在未来几年变得更加普遍。虽然我建议你最大限度地利用机器学习和人工智能,但我也建议你记住你使用的工具的局限性——毕竟,没有什么是完美的。
时事通讯
关于新博客文章和额外内容的更新,请注册我的时事通讯。
丰富您的学术之旅,加入一个由科学家,研究人员和行业专业人士组成的社区,以获得…
mailchi.mp](https://mailchi.mp/6304809e49e7/matthew-stewart)*
人工智能的极限。

当大量数据和许多因素汇集在一起时,人工智能就优于人类智能。然而,只有人类才能进行逻辑思考,并区分有用和无价值的 AI 建议。
“教我们思考我们必须死亡”
这是 1912 年的路德圣经在诗篇 90 中所说的。甲骨文创始人拉里·埃里森、亚马逊老板杰夫·贝索斯或投资传奇人物彼得·泰尔等美国科技明星不相信这种谦逊,而是让数十亿美元去破解人为什么会衰老和死亡的之谜。
如果这三位商界领袖盲目相信电脑,那么至少有一种更愉快的方式可以让他们推迟死亡:多喝香槟。因为对许多数据和影响因素的分析表明,随着香槟消费量的增加,预期寿命会延长。
尽管并不清楚亿万富翁们每周喝多少酒。然而可以肯定的是,他们每个人都忽略了这种联系。因为这不是起泡酒所谓的保护作用,而是饮酒者的繁荣,这促进了这种高贵饮料的消费,再加上更好的医疗保健,使得起泡酒的臭名昭著的朋友活得更久。
我称之为“香槟陷阱”,这是关于人工智能(AI)的误解和神话的特征,也是人类可以利用的人工智能的优势和好处的特征。因为人工智能无非是一种非常特定的学习形式,即机器学习。
这种学习是有限的,同时又是无限的。无限,因为机器学***优于人脑的物理学习,因为越来越多的强大计算机可以在微小的几分之一秒内执行越来越多的操作。因此,机器思维为人们提供了他们永远无法识别或只能在不可接受的长时间内识别的模式。然而,机器思维是有限的,因为计算机只检测模式。其背后的意义和逻辑——参见香槟陷阱——只有人类才能认识到。

不聪明,但速度惊人
然而,由于数据的复杂性和数量,这种模式能够实现纯逻辑思维难以实现的洞察力。这恰恰是人工智能区别于早期数字化形式的新品质。
说明区别的最好方法是使用 IBM 的深蓝超级计算机。这位计算机巨人在 1996 年击败了国际象棋世界冠军加里·卡斯帕罗夫。然而,深蓝并不聪明。它快得令人难以置信。他只是根据各自的游戏情况和国际象棋游戏的编程逻辑来计算下一步棋的概率。他从零开始下一局,没有从上一局学到任何东西。
另一方面,在人工智能中,计算机不是用逻辑编程的。相反,它根据“试错”的原则工作,即,它挑选或重新挑选不合适的,并丰富迄今为止已经发现的东西。通过这种方式,他允许人类在不知道潜在逻辑的情况下识别联系、得出结论和做出预测。
夸张地说,人工智能可以比作狗或蹒跚学步的孩子的学习行为。孩子学会避开火炉,狗学会在火车车厢里保持安静。两者都不知道在它背后有一种危险,这种危险来自热量和对人的考虑——因此,他们没有能力将学到的行为转移到熨斗或其他人群的使用上。只有随着年龄的增长,孩子才能学会逻辑思维,并通过迁移将这种思维运用到新现象中。

从统计相关性中获取知识。
在一个高度复杂的世界中,生成模式有很大的优势。当影响变量(也称为决策变量)的数量爆炸式增长时,要找到解决问题的逻辑可能要花费难以忍受的长时间。
例如,为了赢得客户,销售人员必须有一种主公式,根据这种主公式,首先记录所有可以想象的影响变量,如性别、爱好、偏好、消费等,然后从中推导出这些变量:如果 a、b、c、d 等可用,则 y 或 z 随之而来。光是巨大的数据量就阻止了卖家创造这样一个主公式。
另一方面,有了人工智能,计算机就会被来自所有客户的所有可用数据淹没。通过成千上万顾客的购买行为,计算机确定行为模式,可以用来很好地预测未来的购买决策。这样做的原因是次要的。
因此,机器学习意味着通过统计相关性而不是逻辑结论来获取知识。例如,几个月前,一个人工智能系统在解释心脏的超声波图像方面击败了非常有经验的心脏病专家。
这些由大量的层和单独的图像组成,这使得医生很难精确定位检查的部位。该系统接收了 267 名患者的 200,000 多幅详细图像。最终,计算机能够以 91.7%到 97.8%的准确率确定心脏的检查部位。尽管有多年的经验,心脏病专家只能做到 70.2%到 83.5%。
人工智能现在被证明在机械工程的预测性维护方面非常成功。例如,德国蒂森克虏伯集团持续记录数千台电梯的所有运行数据,并使用人工智能来确定系统故障的模式。
由于几个因素经常一起出现,这背后的逻辑很难用合理的努力来确定。使用人工智能可以确定的模式被证明是如此准确,以至于服务团队可以在电梯发生故障和造成异常大的损失之前越来越多地进行干预。
AI 顶级学科:自走车。
人类和机器人之间的直接合作只有在人工智能的情况下才会起作用。例如,只有当机器人学会适应它的人类同伴、他的习惯和他的工作节奏时,汽车或机器的联合装配才能成功。为了做到这一点,所谓的 Cobot 不必知道工人行为的原因和动机,但必须过滤出模式,如疲劳的迹象,以对它们做出反应。
机器学习将会而且必须远远超过人类理解和速度的最高学科是自动驾驶汽车。在这里,车辆必须获得关于环境的知识,并能够正确地解释它。这在逻辑上是不可能的,但在模式识别上是可能的——无论是在路边玩耍的孩子,还是正在靠近的汽车,其司机保持错误的轨迹。我们称之为预期和风险调整驾驶。弗劳恩霍夫研究所开发了 Shore 软件库,可以根据性别、年龄和情绪识别人。
人工智能的正确使用会给我们带来滑溜溜的生产力优势和新的机会。例如,智能电网将通过分析天气、预期电力需求和存储容量来协调绿色电力的生产,从而实现消费者和生产者之间的最佳协调。
然而,在根据统计相关性做出决策的情况下,就需要人类质量监测器,也称为质量门。他们必须检查这些决定的合理性。没有逻辑检查的数据解释可能是危险的,尤其是当决策影响到人类生活的时候。如果人工智能根据对患者数据的自动评估做出错误的医疗诊断,谁负责?自动驾驶汽车必须投保吗?
模式识别,即人工智能,是在高度复杂的世界中更有效地解决问题的利器。然而,如果没有常识和人类的控制,这是不可能的。
SQL 在数据科学、分析和工程方面的局限性
SQL 似乎一直是实现简单数据分析和 ETL 的一个优雅的解决方案,但它似乎总是在超过一定的复杂程度时崩溃。Spark、DataFrames 和 Scala (SDS)对于更复杂的数据工作,甚至对于非工程师来说,可能是一个好的解决方案吗?

我真的想用 SQL 做更多的事情。用简洁的格式表示数据连接、过滤和基本转换似乎是一种简单而优雅的方式。在许多方面,我觉得 SQL 比传统的命令式代码更接近于定义计算的数学方法(即函数式的、灵活的、声明式的方法),这在我看来是 SQL 的一个优点。我特别珍视短 SQL 查询,它可以快速回答随机的特别问题,例如下面的问题。
此外,我发现许多技术水平不高的人可以很快学会基本的 SQL,如果有必要的话,可以很好地掌握它来执行重要的数据分析和转换。作为一名数据科学家和工程师,我发现能够与更多的利益相关者一起思考我们希望在计算统计数据或处理数据时实现的业务逻辑是一件很棒的事情。当非工程师可以用逻辑工作时,我们只是访问更多人的评论和想法。
但是我总是发现,一旦复杂性超过十几行代码,SQL 就不够用了,因为我会立即开始担心正确性和可读性。我更愿意在 Spark 中使用 Scala 实现数据帧的转换(或者在必要时使用 Python 实现 PySpark)。然后,我可以将我的逻辑分解成简单的命名良好的函数,并严格地对每个函数进行单元测试。简单的集成测试可以用来验证一切都正确地连接在一起。总的来说,我只是对 Scala 解决方案的正确性更有信心,并且觉得将来更有能力改进和维护代码。
从很多方面来说,我希望 SQL 不必如此。我真的希望有一种很好的方式将任意的 SQL 表达式提取到函数中,并进一步拥有一个很好的测试 SQL 的环境。我还没有找到任何适用于一系列 SQL 方言并且是开源的东西。如果有好的工具,请告诉我。
我进一步发现 SQL 是一种表达某些复杂逻辑的困难语言。比如解析 JSON,然后提取和转换特定的字段。我知道存在将嵌套 JSON 加载到 SQL 引擎中进行后续处理的解决方案,但是我更愿意编写一个 Spark 工作流,直接读取原始 SQL 数据并在 Scala 中执行解析和转换。
此外,我发现自己不得不实现复杂的业务逻辑来执行各种分析和转换(特别是对于特性工程),这些都不能用 SQL 编写。或者至少在传统的 SQL 方法中不容易实现。有时我会发现一些不太好的解决方案,但是它们看起来并不能很好地代表我们想要开发和维护的逻辑。这是一个 Spark 工作流的例子,我努力用 SQL 优雅地实现它。
你能想出一个用 SQL 实现这个逻辑的好方法吗?
传统上,用户定义函数(UDF)将使用传统的编程语言来开发,以扩展 SQL 功能。我发现这个解决方案很不雅,因为我们现在混合了两种语言。此外,在 UDF(和用户定义的聚合,uda)中可以实现的内容是有限的。现在,我认为最好使用(Py)Spark,在数据处理定义的同时定义自定义逻辑。
最后,我非常喜欢任何编程语言中的类型。我认为类型不仅向编译器,也向阅读代码的人传达了如此多的信息。我发现命名良好的函数、对象和成员——带有类型注释——在代码中提供了很好的自我文档。再加上一些小的注释和简明的外部文档,您最终会得到高度清晰的代码,任何熟悉这种语言的人都可以学习和使用。
Scala 有一个优秀的类型系统,甚至现代 Python 也有可选的类型注释。虽然大多数 SQL 方言在存储过程和函数中支持某种级别的类型,但我发现这仅限于基本类型,因此不能像健壮的编程语言中的类型注释那样广泛使用。
我只是看不到让 SQL 达到与 Spark、DataFrame 和 Scala 解决方案同等质量的途径。然而,我认识到数据处理逻辑不仅需要对工程师清晰可辨和可修改。我假设 Spark、DataFrames 和 basic Scala (SDS)可以用于这个目的。
我并不是建议非工程师能够阅读、推理和修改一个完整的生产 Scala 工程系统,而是建议他们能够在与 SQL 相当的复杂程度上处理小代码片段。此外,DataFrame 操作可以建立在他们对 SQL 操作(如连接、过滤和映射转换)的当前理解的基础上。他们只需要学习实现这些熟悉操作的新语法。随着时间的推移,当他们的工作需要时,他们可以学习更多的 Scala 来实现更复杂的逻辑。
为了进一步促进这种教育,我想开发一个将 SQL 概念转移到 SDS 堆栈的小教程。此外,为了真正销售这些材料,我还想开发一个很酷的 SQL->SDS transpiler。人们可以利用这一点来了解他们当前的 SQL 逻辑是如何转换成另一个技术堆栈的。结合一个时髦的网络应用程序,人们可以立即开始学习他们工作的同等 SDS 代码。这将允许熟悉 SQL 的人开始学习解决问题所需的特定 SDS 知识。
这种教育与托管 Spark 的云解决方案(如 AWS EMR、GCP Dataproc、Databricks、Cloudera Altus Cloud)的开发相结合,使更多人现在可以轻松访问 Spark 环境。随着时间的推移,也许我们甚至可以让 AWS 和 GCP 创建可与 Athena 和 Big Query 的 SQL 解决方案相媲美的临时托管 Spark 环境。总的来说,我预计越来越多的专业人员会在需要时访问 Spark 环境。
我甚至可以看到,当数据科学家需要构建一些东西来促进他们的数据科学工作时,他们会转向更复杂的数据工程工作。类似地,产品经理可能会发现自己在 Scala 中编写复杂的业务逻辑,因为用英语编写逻辑更加困难。如果我们教这些 SQL-to-Scala 转换者如何模块化代码和编写测试,我们可能很快就会发现自己拥有一大批情境工程师,他们可以实现对他们的工作很重要的系统部分。
你怎么想呢?你认为 Spark/DataFrames/Scala (SDS)能为越来越多的非工程师用户取代 SQL 吗?它甚至能帮助我们完成更多的工程工作吗?这是所有数据公司一直在寻求的。请在下面的评论区告诉我你的想法,因为我想在花太多时间帮助 SQL 爱好者过渡到 SDS 之前收集关于这个想法的反馈。
如果你有兴趣合作 SQL-to-SDS 教程和/或 transpiler,请给我发消息到matthew.hagy@gmail.com。还有,随便打我吧!我很乐意尽我所能帮助开发和推广。
更新:如果你觉得本文中的 Scala 例子很有趣,并且想了解这种强大的编程语言的更多信息,你可以看看我的文章,通过计算机程序例子的结构和解释快速学习 Scala 的基础知识(第一部分)。
LinkedIn 数据科学家访谈
LinkedIn 数据科学家角色

LinkedIn 的数据科学团队利用数十亿个数据点来提高会员参与度、业务增长和盈利能力。数据科学团队在全球拥有超过 5 亿名成员,并混合了 B2B 和 B2C 计划,在确定产品方向方面具有巨大的影响力。LinkedIn 的数据科学工作通常专注于业务方面,而不是工程,数据科学角色更像是许多其他公司的产品分析师和分析工作。
如果你对更多面试指南感兴趣,请查看 DoorDash 数据科学家面试 和 谷歌数据科学家面试 。
LinkedIn 数据科学角色
LinkedIn 的数据科学团队分为四个级别。
数据科学家
资深数据科学家
员工数据科学家
首席数据科学家
每家公司都有自己的薪酬体系,用以确定工资和薪酬级别。LinkedIn 的正式数据科学家或助理数据科学家通常是工作经验不到两年的候选人。首席数据科学家通常有将近 10 年以上的经验。
一般职责
- 与高绩效数据科学专业人员团队和跨职能团队合作,确定业务机会、优化产品性能或走向市场战略。
- 分析大规模结构化和非结构化数据;开发深度分析和机器学习模型,推动会员价值和客户成功。
- 设计和开发核心业务指标,创建有洞察力的自动化仪表板和数据可视化来跟踪它们,并提取有用的业务洞察力。
- 设计和分析实验,以测试新产品的想法或走向市场的策略。将结果转化为可行的建议。
面试
LinkedIn 数据科学家的面试过程相对简单。LinkedIn 的招聘人员喜欢拿自己的产品当狗粮,所以他们可能会通过 LinkedIn 给你发消息或邮件,联系你关于数据科学的职位。招聘人员将安排 30 分钟的电话面试,与你谈论 LinkedIn,了解你对公司的兴趣,看看这个角色是否合适。
鉴于 LinkedIn 数据科学职位面临的业务情况,可能会发生这样的情况,在电话之后,他们可能会将你转给机器学习团队的另一名招聘人员。数据科学团队确实有更多算法和工程方面的内容,但这只是 LinkedIn 整个数据科学团队的一小部分。
技术屏幕
最初的技术筛选包括两次单独的电话采访,每次持续 30 到 45 分钟。
一个面试更侧重于技术,专门测试关于 SQL 和数据处理的概念。另一个更像是一个商业和产品案例研究,测试你的批判性思维能力。取决于你的面试是如何组织的,任何一个面试都可能是两个面试中的第一个。然而,如果你在其中一次面试中表现不佳,就不能保证你会参加两次面试。两位面试官都将成为 LinkedIn 数据科学团队的员工,在最后留出充足的时间提问。
业务和产品案例研究
对于 LinkedIn 电话屏幕上的产品和商业案例研究,面试官将评估你如何解决商业问题,以及你在解决这些问题时的创造力和表达能力。访谈的技术筛选部分包括基于产品直觉和分析的问题。
作为一名数据科学家,花时间参与 LinkedIn 产品是很有帮助的。

People you may know V1
一个很好的例子是理解 LinkedIn 的商业目标是什么。您将如何设计功能和分析数据以得出可行的结论?核心问题是,面试官会问你如何为 LinkedIn 设计一个功能,然后如何分析它的表现。准备好量化地衡量特性的成功。
为了准备面试的这一部分,请站在开发产品或功能的产品团队的角度,提出以下问题:
- 可以做些什么来改进产品?
- 在解决有关健康、增长或产品参与度的问题时,您希望考虑哪种指标?
- 你如何衡量产品不同部分的成功?
- 在尝试解决与我们产品相关的业务问题时,您会评估哪些指标?
- 你如何判断一个产品是否表现良好?
- 你会如何设置实验来评估任何新产品或改进?
如何回答这个问题的布局结构也很重要。确保把你的想法都集中在一个地方,组织你的答案,仔细解释你是如何调查每个问题的。
例题:
- 你将如何发展 LinkedIn 信息服务?
- LinkedIn 希望在 Inmail 中发布一个新的自动完成信息功能。你如何衡量该功能的成功?
在我们的网站上练习这个智商产品问题!
SQL 和数据处理
在 SQL 和数据处理部分,你会遇到一系列越来越复杂的数据处理问题。强烈建议用 SQL 解决这些问题。
第一个问题的例子是编写一个简单的带有 where 条件的 select 语句(SELECT * FROM table WHERE column = value)。然后,使用子查询、复杂连接和条件语句的初始问题的相同表格,每个问题开始变得更加复杂。在最初的问题之后,面试官可能会在最初的问题上增加三个额外的修改,使其更加复杂。
例题:
给定一个代表用户的表,编写一个查询来获取 2020 年 1 月注册 LinkedIn 的用户数。
给定两个代表工作和工作申请的附加表,编写一个查询以获得今年申请最多的工作职位。
在面试前温习一下 SQL 和 product 中的这些概念很重要!这是我解决 LinkedIn 的 SQL 面试问题的一个例子。
现场面试
LinkedIn 的现场面试是一整天五个小时的面试,会见公司的五个以上不同的员工。每次面试也可能有不止一个人参加。面试时长约 45 分钟,并在最后留出充足的时间让你提问。
- 概率统计面试
- 数据科学经理面试/行为
- 数据操作
- 产品分析问题解决
- PM 合作伙伴关系和产品意识
- 你还将在午休时间花 1:1 的时间与数据科学家一起了解 LinkedIn 的更多信息。这通常是一个小时的午餐面试,他们会让你休息一下,或者谈谈他们在 LinkedIn 上的工作
预计第一轮会出现高级概率和统计主题。在产品案例环节,他们会给你一个用例研究,并回答一个一般性的问题。你必须想出不同的方法来回答这个问题。PM 回合更类似于 A/B 测试问题,侧重于指标以及如何验证您的指标。产品案例回合更广泛,而 A/B 测试回合涉及更深入地挖掘指标,如:你如何知道这个指标是否重要,等等。
一般提示:
- 了解 LinkedIn 的文化很重要。鉴于角色在团队中的广度,了解每个团队如何相互协作。
- 数据科学家通常监督大多数产品。要想在 LinkedIn 取得成功,做大项目并推动其完成是非常重要的。他们在增长方面最大的成功之一是由数据科学家开发的“你可能认识的人”功能。
- 你在面试中表现如何是决定一天结束时薪酬水平的主要因素之一。这意味着在你的所有面试中,能够以一种良好的格式和简洁的方式组织你的答案是很重要的。
LinkedIn 数据科学家面试问题示例
- 你最喜欢的内核函数是什么?
- L1 和 l2 正则化之间有什么区别,为什么要使用这两种正则化?
- 如何使用非均匀分布函数生成一个均匀的数?
- 假设我们得到一个页面视图数据集,其中每一行代表一个页面视图。你如何区分刮削者和真人?
- 编写一个函数来从多项分布中取样。
- 由于工程上的限制,该公司无法在推出某项功能之前对其进行 AB 测试。您如何分析该功能的执行情况?
感谢阅读
- 如果你对更多的面试问题感兴趣,可以查看一下 谷歌 , 脸书 , 亚马逊数据科学面试问题。
- 查看我的 Youtube 频道,获取更多关于数据科学面试、技巧和提示的视频。
- 如果你想从 LinkedIn 获得更多面试问题,请在此注册面试查询!
Numpy 中鲜为人知的 OGrid 函数
…以及如何使用它轻松转换图像

Photo by Zara Walker on Unsplash
在过去的这个季度,我帮助我的学生学习 Python 中强大的数值处理库,称为 Numpy 。在课程的大部分时间里,我们都在使用 Numpy 对图像进行转换,因为图像毕竟只是数字的大数组。
很快,我们开始讨论如何变换图像,从基本的变换,如使图像黑白化,到更复杂的编辑,如在图像周围添加光环。正是在这次讨论中,我了解到 Numpy 中鲜为人知的 ogrid 函数,以及我们如何利用它来更轻松地转换图像。
什么是 ogrid ?
Ogrid 代表“开放网格”,基本上提供了一种基于行和列索引对图像的特定像素进行操作的方法。从基础开始,这里是如何在 Numpy 中调用 ogrid 函数,假设您已经将 Numpy 作为 np 导入。

我们在这里看到 ogrid 接受一个 x 坐标范围(0 到 10,不包括 10)和一个 y 坐标范围(0 到 5,不包括 5)。我们将 ogrid 的结果存储在两个变量中, x 和 y 。
显示 x 的内容会发现它是一个大小为 1 的列表,每个列表都是 0 到 9 之间的数字。显示 y 的内容,发现它是一个单列表的列表,只是 0 到 4 之间的数字。
奥格里德如何帮助我们?
假设你有一个 10 乘 5 的矩阵,就像 ogrid 的维度一样。我们在下面看到,使用 ogrid 索引矩阵会准确地返回矩阵本身。

更重要的是,我们可以使用 ogrid 返回的 x 和 y 来创建一个叫做“mask”的东西,根据它们的行和列索引,只隔离我们关心的矩阵元素。

在上面的代码中,注意我们只关心行索引(x)大于 5 或者列索引(y)小于 3 的矩阵元素。结果是一个掩码,它是一个真/假的数组,指示条件在哪里成立,在哪里不成立。
为什么这样有帮助?
因为现在,我们可以使用这个掩码只作用于矩阵中掩码为真(或者等价地,假)的元素。

上面,我们将掩码为真的任何矩阵元素设置为 0,给出了结果矩阵。将同样的思路应用于整个图像,我们看到我们可以使用 ogrid 来创建遮罩,帮助我们对图像的特定像素进行操作。我们来看几个例子!
读取图像
让我们首先读入我们将要处理的图像。
结果就是我们最爱的电动鼠标。

然后,让我们为这个图像生成 ogrid。
一个重要的注意事项是 Numpy 中的轴的方向。与我们习惯看到的 x 轴和 y 轴相反,Numpy 图像中的轴如下所示:

添加几何形状
ogrid 最酷、最有启发性的图像转换之一是向图像添加几何形状。由于大多数基本几何形状都有简单的数学公式,我们可以对 ogrid 返回的 x 和 y 执行函数来重新创建这些公式。例如,让我们看一些代码在我们的图像中间创建一个黑色的圆圈。
这段代码的关键部分在第 9 行,在这里你会从代数课上学到一个圆的公式。这个特殊的圆位于我们图像的中心,半径为 100 像素。然后,我们使用这个圆形蒙版来涂黑蒙版中包含的所有像素,得到下图。

不错!如果我们想做一个正方形呢?嗯,可以说甚至更容易。
我们只是将正方形(或矩形)构造为 ogrid 返回的 x 和 y 上的四个过滤器的组合。然后,我们将包含在正方形蒙版中的图像中的任何像素设置为红色。

最后,如果我们想要一个青色的三角形在图像的右下角呢?嗯,我们可以算出数学公式,编码如下。
给出以下结果。

牛逼! 看来我们刚刚创造了一些不错的艺术品。
90 度旋转
接下来,让我们看看如何使用 ogrid 将图像旋转 90 度。其实这里就不多写代码了,重要的是理解概念。
如果我们拍摄一个简单的 3x3 图像,并将其逆时针旋转 90 度,我们会得到以下结果。

从数学上来说,这就像把位于索引 (i,j) 的像素映射到一个新的位置 (j,-i) 。将这种转换应用到图像中的每个像素可能会令人望而生畏,似乎我们需要编写一些 for 循环,但是使用 ogrid,这项任务变成了一行程序。
也就是说,如果我们的图像被称为【img】,那么将图像索引为【img[y,-x】,使用 ogrid 返回的 x 和 y,我们得到的就是旋转后的图像。

创造一个光环
最后,让我们看一个稍微复杂一点的图像转换。也就是说,我们想要在图像周围创建一个光晕。
具体来说,我们想给我们图像的所有像素加上一些正值,一个像素离中心越远,我们加的值就越大。总的来说,这将有“洗去”靠近角落和边缘的像素的效果,而对靠近图像中心的像素几乎没有影响。下面是完整的注释代码。
这里有大量的代码,我鼓励您阅读并亲自尝试。简言之,我们:
- 获得每个像素到中心的平方距离
- 归一化这些平方距离
- 将归一化的平方距离添加到图像中的每个像素。通过这种方式,远离中心的像素获得较大的附加值,而靠近中心的像素获得非常小的附加值
- 总的效果是我们形象上的一个“光环”

仅此而已!希望您已经了解了 Numpy 中非常有用的 ogrid 函数。
祝你好运!~
住在图书馆的小机器人
内部 AI
我们如何建造一个有情感的社交机器人来引导图书馆的顾客找到书籍
Oodi 图书馆
我们在 Futurice 的团队设计并制造了一个社交机器人,引导人们去赫尔辛基的新中央图书馆 Oodi 看书。Oodi 于 2018 年开放,是赫尔辛基 37 个公共图书馆中最大的一个。它每天有 10,000 名游客,估计每年有 200 万游客(与芬兰的 550 万人口相比,这是很大一部分)。

Automatic returns system

The MiR200 wagon moving books and their boxes
Oodi 擅长自动化和机器人技术。它有一个自动归还系统:顾客把他们的书放在传送带上,传送带把书带到地下室,在那里它们被分类到盒子里,盒子被一个移动的 MiR200 机器人捡起,机器人把书带到三楼。在三楼,图书管理员把书放回书架上。
在我们项目的开始,我们头脑风暴 Oodi 如何使用社交机器人:帮助孩子学习阅读,指导人们使用 3D 打印机等设备,用几种语言提供关于图书馆的信息,以及帮助人们在图书馆找到路。
我们最终选定了一个机器人来帮助顾客找到他们想要的书籍和书籍类别。因为 Oodi 太大了,顾客很难四处走动,图书馆员工花了大量时间建议人们如何找到东西。但这不是图书馆员应该做的工作,也不是他们想做的工作。图书馆员对文学非常了解。他们的专业知识更好地用于深度服务,帮助访问者找到最符合他们需求的特定书籍。这类工作可能需要 30-40 分钟。相比之下,“心理学板块在哪里?”需要 1-3 分钟来回答。一整天 1-3 分钟的任务堆积在一起会变得单调乏味,而且是对技能的浪费。
这就是机器人介入的地方。一整天的粗活不会打扰机器人。我们意识到我们可以重新利用图书馆已经拥有的 MiR200 移动机器人,并用来在地下室和三楼之间移动图书。

The robot design team: Oodi librarians, Oodi’s customers, and Futurice’s roboticists
机器人的优势在于能够直接访问 Oodi 的数据库,并提供当前书架上有哪些书的实时信息。对于有社交焦虑、害怕接近图书馆员工的人来说,这种机器人可能更容易接近。此外,它可以节省客户的时间(不需要排队找图书管理员)和图书管理员的时间(他们可以帮助客户完成更有意义的任务)。

First draft
具有人格(幻觉)的移动机器人
由 Oodi 的图书管理员、Oodi 的客户和 Futurice 的机器人专家组成的设计团队,使用这些社交机器人合作设计画布(可作为开源软件获得),为将在 MiR200 机器人之上构建的机器人定义了设计准则:
- 这个机器人真的是一台机器——它发出富有表情的哔哔声,但不会说话
- 机器人有一个触摸屏用户界面,用户不与机器人交谈
- 机器人使用光、声音和动作来交流
- 机器人的使用不应该取决于使用者对技术的熟悉程度
- 设计需要考虑可达性、背景噪音水平、图书馆不断变化的布局和家具,以及躲避顾客
设计团队决定机器人不能太像人。我们希望机器人有一种更抽象的形式,有表情的、非语言的交流形式。我们想要一个有点想象力和奇思妙想的设计。
该团队还想确保机器人符合 Oodi 的战略和政策。强调了以下道德考虑:
- 需要遵守 GDPR(欧盟的数据法规)。关于寻找这本书的人的数据不应该与关于他们正在寻找哪本书的数据相结合。
- 可访问性很重要。图书馆的原则是每个人都得到平等的服务。身体限制、不同的语言和受损的视力都需要考虑在内。
- 顾客应该能够选择由人类图书管理员来服务。
- 如果机器人不工作,可能会引起顾客的不满和粗鲁行为。对此应该有所准备,这样图书馆员才不会受到负面影响。
我们开始在图书馆测试机器人,绘制适当的路线,并构建用户旅程。幸运的是,我们有一些非常兴奋的测试人员。



Our voluntary testers, and a trial run with a laptop
眼睛和情感矩阵
移动机器人本身太抽象,无法与人建立社会联系。我想给用户一些可看的东西,一种面孔。我在网上搜索了机械的眼睛,发现它们很幽默,但不太古怪。
眼睛令人想起经典的动画和漫画人物。机器人设计和动画之间存在联系:迪士尼定义的 12 条动画规则之前已经应用于机器人(里贝罗和帕瓦,2012)。在这种情况下,我计划的眼睛遵循“夸张”的规则。它将在这里用来强调机器人的表情(当缺少任务时,环顾四周以表示无聊),以及它的行动(看着它开始移动的方向)。
幸运的是,Glen Akins 已经在网上发布了他关于如何建造机械谷歌眼的指导https://biker Glen . com/blog/build-a-pair-of-robotic-googly-eyes/。在将电线装入小孔、焊接、激光切割和摆弄电源之后,我们有了一双全新的眼睛。



The making of of some of the googliest eyes
那双眼睛立刻产生了效果:我注意到自己正看着他们并对他们微笑。当他们向左看时,我顺着他们的目光看去。如果一个东西看起来在有目的地移动,就很容易欺骗人脑认为它是有生命的(Heider & Simmel,1944)。
我们的团队还认为机器人应该有一些内部驱动力,使其更具社会性,甚至可能有情感。情绪的编码,或情感计算,之前已经被几所大学研究过,即麻省理工学院。麻省理工学院的 Cynthia Breazeal 研究了机器人的情绪在三维矩阵中的位置(Breazeal,2004)。
我从中获得了灵感,并将机器人的情感置于一个二维矩阵中。虽然这是一种简化,但对于我们的目的来说已经足够精确了。

My crude visualization of the emotion matrix I implemented
情绪可以近似为两个轴:一个是从负价(坏感觉)到正价(好感觉),另一个是从高唤醒到低唤醒(刺激水平)。
情绪状态在矩阵中间初始化,坐标为 0,0。机器人的情绪状态根据发生在它身上的事件在矩阵中移动。如果它的任务成功了,它就会走向积极的价值和高度兴奋。如果它的任务失败了,它就向负价移动。如果长时间不使用,它会走向低唤醒。
机器人的内部情绪会影响它的行为方式。机器人的动作功能(travel.py 和 idle.py)在某些点查询它的情绪,并相应地改变机器人的声音、灯光和眼球运动。如果它开心的话,它会在引导一个人看书的时候开心的唧唧喳喳。如果它感到无聊,它会试图通过四处张望、跳舞和闪烁灯光来吸引注意力(尽管不会太具破坏性,毕竟这是一个图书馆)。
你可能想知道用户如何从悲伤的机器人中受益。答案是,我们也还不确定。这个情感系统是非常实验性的,我们想探索它将如何影响机器人和用户之间的互动。随着试点的继续,我们仍在收集这方面的数据。
情感系统的代码,作者 me,版权 Futurice,许可 MIThttps://github . com/minjaaxelsson/oodi PC/blob/master/emotions . py:
“哦看,真可爱!”

The robot at Oodi
我们对机器人进行了 3 天的测试。用户可以通过开放的搜索字符串搜索某本书或某个作者,或者选择特定的书籍类别,比如旅游和烹饪。这个机器人吸引了很多注意力:即使人们没有亲自送它去执行任务,当它引导别人时,他们也开始跟着它,在图书馆周围形成越来越多的人跟着一个小机器人。一些顾客甚至想抚摸这个机器人。反应主要是积极的,和惊讶的(不算一个 60 岁的老太太,她大声宣布“我不会尝试任何机器人!”气呼呼地走掉了)。
很多顾客很好奇,询问机器人做了什么,以及它是如何工作的。它吸引了很多孩子:三个女孩做了一个游戏,轮流要求机器人带他们去某个地方。其他人惊奇地聚集在它周围,大声说道:“哦,看,它真可爱!”。



Our robot in action
机器人的抽象形式得到了积极的反馈,它的眼睛是一个特别令人钦佩的地方。事实上,它是抽象的,而不是人类的,这使它更容易接近。“它发出好听的声音,而且不觉得危险,”一位顾客评论道。
有些人甚至和机器人对话。一名 50 岁的妇女在成功完成任务后感谢机器人,说“非常好,谢谢你,你太棒了!”。这位女士说,有一个机器人带人们参观 Oodi 是多么聪明,因为它太大了。另一位顾客咒骂这个机器人,称它是“令人毛骨悚然的麦克里普费”,因为它设法偷偷靠近了她。当她稍后遇到它时,她为之前的事道歉。
参观者参与了机器人的未来,并提出了改进建议,如让它帮助提包,或为老年人提供助行器支持。一些人希望机器人能帮助他们预订已经借出的某本书,或者它能以几种语言帮助他们。
小机器人的未来
我很高兴 Oodi 的客户对这个机器人有如此积极的反应,并且马上就把它当成他们自己的产品。该机器人将与 Oodi 一起进一步发展。未来的版本将进一步利用情感系统。



A prototype of eyebrows for the robot, which could help communicate emotions more effectively
Oodi 的图书管理员有时会遇到客户对机器人的担忧。由于 Oodi 有自动归还系统,一些顾客担心“机器人正在抢走图书管理员的工作”。一些研究表明,人们对机器人的态度可能变得更加消极(Gnambs & Appel,2019)。

This Universal Robots collaborative robot arm stacks books at Oodi’s basement
然而,图书管理员没有这些担忧——在传送带接受退货的情况下,或者在我们的机器人引导顾客的情况下。在这个项目中,我采访了 4 名图书馆员,他们都认为他们宁愿避免接受回报的重复性体力工作,或重复的指导任务,如“钓鱼书籍在哪里?”。导航机器人及其应用程序是与图书管理员和图书馆的客户一起设计的,特别是为了避免设计无用甚至有害的应用程序。机器人设计的民主化是我希望在未来看到的。
Breazeal,C. (2004 年)。情感理论在 HRI 中的应用。 IEEE 系统、人和控制论汇刊,C 部分(应用与综述), 34 (2),187–194。
特纳姆布斯和阿佩尔(2019 年)。机器人变得不受欢迎了吗?欧洲对自主机器人系统态度的变化。人类行为中的计算机, 93 ,53–61。
f .海德尔和 m .西梅尔(1944 年)。表观行为的实验研究。《美国心理学杂志, 57 (2),243–259 页。
茨韦塔纳·里贝罗和阿·帕瓦(2012 年 3 月)。机器人生命的幻觉:机器人动画原理与实践。在 2012 年第七届 ACM/IEEE 人机交互(HRI)国际会议上(第 383–390 页)。IEEE。
爱情机器(学习)
*化名是为了保护受访者的身份,是受访者自己选择的,而不是作者。
“机器可能已经计划好了我们的婚礼和一切”,伏地魔给一个陌生人写信,他刚刚才知道他的存在。不过别担心,他事先让脸书跟踪斯普盖提欧,以证实她实际上不是精神病患者。Sphagettio 一天后才回复;她也证实了他不是精神病患者。
在交换了电话号码后,两人决定在 Tech Rec 见面,因为这是一个中立的公共场所。显然,精神病的事情仍然在他们的脑海里。斯皮盖提欧带来的朋友进一步证明了这一点,他坐在离他们只有几个座位的地方,看着他们的整个互动过程,就像在和简·古道尔约会一样。
这对夫妇通过讨论将他们带到一起的算法,很快克服了第一次约会的尴尬——该算法了解他们性格的关键方面,以便将他们配对,从而使他们的第一次约会能够顺利进行。所有这一切都没有让他们彼此说一个字。
2018 年秋天,我发现自己在想什么是一段和谐健康的关系。当时我正在学习社会心理学,对如何通过定量和定性的视角来模拟关系非常着迷。
社会心理学家兼婚姻顾问约翰·戈特曼研究夫妻交流模式多年。根据这些数据,他观察到了四个标准,这四个标准可以以 93%的准确率预测给定耦合的成功或失败。这些标准被称为启示录的四骑士,详细描述了批评、防御、蔑视和阻碍如何破坏沟通习惯,从而破坏人际关系。

The original, biblical Four Horsemen are Conquest, War, Famine, and Death which can also be Debbie Downers
如果一段特定关系失败的可能性可以量化,那么一段关系的成功也可以量化吗?11 月,通过我的关系研究,我偶然发现了斯坦福婚姻契约,这是两名斯坦福学生为他们的市场设计课开创的一个巧妙项目。在这个项目中,他们使用了延迟接受算法,这是诺贝尔奖获奖的解决稳定婚姻问题的方法,根据个性将他们的同学配对。
进一步研究数据驱动的配对,我发现哈佛有自己的算法版本。Datamatch 拥有一个卓越的人工智能匹配系统,并承诺其方法植根于强大的数据分析。
读了更多关于这个群体的资料,我对 Datamatch 如何解决两个以上性别和取向群体的稳定婚姻问题很感兴趣,因为在现实世界中,性和性别是一个光谱,而不是两个具体的单元。他们能够调整稳定的婚姻代码来与属于多个团体的多个成员一起工作吗?他们专有算法背后的真正方法论是什么?
在与 Datamatch 的联席主管之一进行了一些交流后,我对他们选择封锁其代码感到失望。如果我们想帮助宣传这项服务,他慷慨地提出将 Datamatch 扩展到佐治亚理工学院。我们与该机构的官员团队的其他人讨论了这个想法,认为看看我们是否能找到自己的解决方案会很有趣。
我们使用 32 个问题创建了爱情机器(学习)调查,这些问题代表了我们匹配的个人的背景、信仰和个性。前 10 个问题是人口统计学问题,后 22 个问题是 1-7 个李克特量表,用于衡量对各种说法的认同程度。
一旦我们衡量了每个参与者对各种重要主题的观点(毕竟 羽毛群中的鸟 在一起通常被引用为相似吸引理论),我们就根据每对夫妇在性、政治派别和宗教方面是否符合对方要求的人口统计来给他们的兼容性打分。对于每个人,我们计算了所有其他参与者的分数。因此,一个耦合将具有两个分数:从人 A 到人 B 以及从人 B 到人 A。这些分数可能不同,因为人 B 可能不识别为 A 所请求的性别,而人 A 可以识别为 B 所请求的性别。这也适用于其他人口统计因素。如果另一个人碰巧不属于这个人所要求的人口统计数据,我们会将他们之间的分数增加到基本上无穷大,这样这两个人就永远不会匹配。
至于非人口统计学问题,我们计算了每个参与者的答案之间的平方差,并将其添加到他们的分数中。这意味着有相似答案的参与者之间会有较低的分数,使他们成为更好的匹配(0 将是完美匹配)。
我们还提出了一些我们认为对匹配非常重要的问题,并给他们的分数增加了一个乘数。这使得问题的答案在决定这对夫妇的得分时变得更加重要。一个人和自己之间的分数被自动设置为无限大,使得匹配不可能。
为了优化可能的最佳配对,我们决定使用遗传算法。我们首先研究了一种监督方法,但无法找到重要的数据来进行训练,所以我们决定在未来某个时候当我们能够获得足够的数据时,尝试一下这将是一件有趣的事情。我们的遗传算法的代码可以在这里找到。
遗传算法利用自然选择过程中产生的灵感来解决优化问题(在这种情况下,是给定我们的参与者群体的最佳可能匹配)。通过使用组合历史上“合适”的解决方案来生成更多的解决方案,它搜索富有成效的空间,而忽略其他空间。然后,每个解决方案都由一个“适应度函数”进行评估,以确定它解决问题的效果如何,以及它是否能延续到下一代。这只是算法行为的简要概述,然而,我强烈推荐阅读更多关于遗传算法的内容。
我们使用一些非常高科技的方法收集数据,比如这个革命性的标志:

Memes get people in the mood
我们还利用社交媒体和口碑传播调查。我们知道,我们的收集方法肯定会导致某些群体的代表性过高。我们中的许多人都是计算机科学专业的,所以我们倾向于在我们的大楼周围张贴传单。我们还通过 CS 电子邮件列表发送了调查。我们没有收集专业作为人口统计,但如果我们这样做了,如果 CS 是最受欢迎的,我不会感到惊讶。
另一个值得指出的观察是,我们的许多回答选项是以开玩笑的方式写的,因此参与者可能会以不同的方式解释量表的范围,因为它们是以幽默而不是准确的方式写的。此外,量表从 1 到 7,这将允许参与者选择主题的中立立场。因此,答案中很可能反映出一些中心倾向偏差。
就参与度而言,我们的调查比我们想象的受到了更多的关注。事实上,我们收到了 789 个回复,尽管我们不得不过滤掉几个(我们毕竟不想让 admissions@gatech.edu成为某人的匹配)。考虑到学生团体的参与度如此之高,我决定写下我在经过清理的数据集中看到的一些总体趋势(所有可识别的标记和虚假电子邮件都被删除)。我首先关注的是参与者的基本人口统计数据:

参与者的百分比随着完成年数的增加而下降。这种下降趋势可以解释为,科技的毁灭性环境是如何导致年长、明智的学生放弃所有爱情前景的。这也可以解释为,由于毕业、转学和退学,每年的班级人数随着时间的推移而减少。请随意选择适合你需要的。
调查参与者的性别认同,我对结果并不感到惊讶。乔治亚理工学院因性别失衡而臭名昭著——这是我自己在接受我的提议时所担心的。
最新的佐治亚理工学院学生氛围评估显示,近年来女性人数有所增加,目前占 36%。按专业细分人口,计算机科学在 2018 年约为 24.7%的女性,这可能解释了我们样本中女性的缺乏。尽管最近女性占总人口的比例有所增加,但总体比例仍然很低,特别是在数据偏向的计算学院。
令我惊讶的是,只有 86.44%的参与者是异性恋。这与全国平均水平(根据 2017 年进行的盖洛普调查估计)不一致,全国平均水平估计 T4 的 LGBT 人口约占总人口的 4.5%。我决定进一步调查亚特兰大的人口估计,发现它是美国 LGBTQ 人口最多的地方之一。尽管如此,与亚特兰大作为一个整体相比,调查人口仍然有夸大的数字。我很好奇大学人口是否会有所不同,所以我读了一份由美国大学健康协会完成的调查,调查对象是来自 40 所不同大学的大约 20,000 名不同的本科生。调查非常详细,显示只有 81%的被调查学生是异性恋。所以总的来说,与其他大学相比,佐治亚理工学院不认为自己是异性恋的学生人数较少,这与我的第一印象相反。
最大的政治派别是民主党。大约 53%的学生认为自己是民主党人,10%的学生认为自己是共和党人,24%的学生认为自己是无党派人士。众所周知,大学校园往往更加自由,但我对我们的校园如此左倾感到惊讶。我对我们大学的技术性质是否会影响政治代表性很感兴趣,决定进一步研究政治和研究领域之间的关系。2009 年的一项皮尤研究测量了研究科学家和工程师的政治立场,发现他们中 81%是民主党人或左倾,12%是共和党人或右倾。捐款也表明科学家在政治上倾向于左派,就像 T2 一样,他们通常会捐款给民主党候选人。2016 年大选后,一系列关于科学游行和其他倡议的新闻文章进一步强化了近年来出现的科学政治化。
我对调查中缺乏种族和民族多样性并不感到惊讶,因为这很能代表我在课堂和课外所看到的情况。我决定进一步研究前面提到的气候评估调查,看看在这方面有哪些因素会影响我们的大学。查看大学的种族分类统计数据,我发现这项调查很能代表学生群体。在接受调查的人口中,只有 7.8%是西班牙裔或拉丁裔。其余类别可以细分如下:
- 白人或欧裔美国人- 50.4%
- 亚裔或亚裔美国人- 34.5%
- 黑人或非裔美国人——6.9%。
它证实了我的数据,佐治亚理工学院正在努力适应多元化。这种趋势不仅仅发生在我们大学,而是发生在整个科技领域。
在阅读调查时,我无意中发现了这句话:“与 2013 年的受访者相比,学生们感到基于各种特征的尊重更少,总体而言,他们更少参与自己文化之外的活动,也更少讨论多元化问题”。令我惊讶的是,近年来,多元化的话题变得越来越难以突破,特别是随着政府推出新举措,试图改善这一问题。在调查代表性不足的少数民族(URM)和非 URM 人之间是否存在显著差异时,我发现了一些令人不安的趋势。
反映两组之间显著差异的问题包括:
- 我所学专业的校园声誉影响了我对佐治亚理工学院的归属感
- 佐治亚理工学院对我来说是一个舒适和包容的环境
- 出于对共事合议的担忧,我曾考虑离开佐治亚理工学院
- 佐治亚理工学院有效地招收了来自不同背景的学生
- 乔治亚理工学院提供一系列满足我的社会和文化需求的项目和活动
- 我觉得学生不论种族或民族都受到尊重
尽管存在这些问题,“佐治亚理工学院在授予非洲裔美国人、西班牙裔美国人和土著美国人 STEM 领域的学士、硕士和博士学位方面一直被列为全国顶尖学校之一”,根据《多样化:高等教育中的问题》。我对 GT 的主网站上的报价持怀疑态度,我亲自查看了排名,发现 GT 和其他几所学校并列第一。在多样性方面,6.9%的黑人/非洲裔美国学生和 7.8%的西班牙裔/拉丁裔学生在 GT 排名第一。这些获得如此高赞誉的低数字揭示了 STEM 多样性的可悲状况。
有了这么大的学生数据子集,我想知道我们是否可以从中确定我们学校文化的各个方面。科技专业的学生在某些话题上有令人震惊的分歧吗?我们在偏好方面有共同点吗?我计算了每个问题的标准差,并列出我们人群中争议最大和最少的三个问题,以及它们的平均值和基本分布。

最有争议的问题集中在大麻消费上。大多数接受调查的学生选择不吃,尽管也有相当多的学生崇拜魔鬼生菜。2017 年 10 月,亚特兰大选择将持有大麻合法化。我想知道,随着法律对这一问题越来越宽松,学生群体是否会慢慢转向接受这种药物。
对于为什么参加我们的调查,学生们意见不一。他们似乎无法决定这只是为了好玩,还是准备好去见自己的灵魂伴侣,在郊区买一栋房子,抚养五个可爱的孩子,买一艘他们一直想要的船屋。在中心也有一群人,他们可能不想显得太急切,但实际上确实想见到他们的对手。
我毫不惊讶地发现,大多数人都不介意他们的伴侣喝酒。这符合我们非正式的校训:“我们是一所有工程问题的饮酒学校”。我也不惊讶地看到大多数人听音乐,尽管我对选择“什么是音乐?”的人有一些问题,很多问题。人们也倾向于想要更复杂的关系,但幸运的是,他们选择了一个更平衡的中点,而不是决定与他们爱的人结合。
进一步探究这些问题,我想知道,人们回答问题的方式是否相关?如果你是一个瘾君子,你是否更容易接受你的伴侣吸食更难的毒品?相信严格性别角色的人也不太赞同他们的孩子是同性恋吗?这些问题可以通过下面的相关矩阵轻松回答:

如果你不想花五分钟时间盯着这些小盒子看,我在下面列出了一些显著的相关性。
一些较强的正相关性包括:
- 喜欢户外活动,喜欢被认为是自发的
- 不顾不适发起艰难的对话,寻求友谊中的情感脆弱
- 正在寻找一段更认真的感情,想要花更多的时间和伴侣在一起
- 没事 420 和没事用硬药
一些较强的负相关性包括:
- 认为性别角色很重要,对有一个同性恋孩子感到舒适
- 想要一个同种族的伴侣,并且对有一个同性恋孩子感到舒适
- 对运动感兴趣,情感脆弱对友谊很重要
- 喜欢政治上不正确的幽默,喜欢和同性恋孩子在一起
看到一组问题(饮酒、吸烟、烈性毒品、大麻和性)之间存在相关性,我想知道是否可以使用因子分析来看看它们是否描述了数据的一个维度。使用 PCA 我发现前两个主成分描述了方差的三分之一,其余成分描述了非常少量的方差(< 1)。我决定研究这些问题是如何描述这些组成部分的(按影响程度排序),并发现:
第一部分主要由 420 描述,更难的毒品,香烟,饮酒,性的重要性,给你的朋友家庭作业答案。这个维度似乎就是的调皮/辛辣维度。
第二部分主要被描述为与相似的种族约会,想要满足匹配,寻求一段认真的关系,相信性别角色,运动很重要,对同性恋孩子感到不安,以及享受政治上不正确的幽默。这似乎是社会上的 传统维度。

I’m looking for someone who’s at least a Cayenne, how about you?
性别比例失调是一些参与者不匹配的主要原因。62 名不匹配的参与者中有 61 名被确定为男性,62 名参与者中有 60 名是异性恋。鉴于前面提到的关于性取向和性别认同的统计数据,不匹配的个体大多是异性恋男性就不足为奇了。
决定个人是否匹配的最重要因素是调查的最后一个问题:“如果我没有亲自见到我的 Robo Match,我会感到失望。”。如果一个人选择了一个更接近 1 的数字,他们就不会像选择了一个更接近 7 的数字的人那样在意匹配。当我对不匹配人群中的个体的回答进行平均时,他们的平均回答比总体回答低了整整 2 个百分点。大多数人回答了一两个关于他们有多渴望遇到对手的问题。
调查性别差异(男性和女性之间,因为他们是唯一有显著数据的群体),只有 3 个问题在不同性别之间有显著差异。使用双样本 ks 检验计算的 p 值和 KS 统计量,我标记了前三个最重要的值。
与女性分布相比,男性分布更倾向于政治上不正确的幽默,希望亲自见到他们的对手,并相信性别角色的存在有一个很好的理由。

我感兴趣的是两性对政治不正确幽默的态度上的巨大差异,因为我不认为这是分裂他们的问题。在 2018 年 NPR 的一项研究中,研究人员发现了对政治正确性看法的性别差异。按性别划分,问题“总的来说,你是否赞成美国变得更加政治正确”显示出显著的差异。在男性中,28%的人同意这一说法,60%的人反对。在女性中,43%的人同意这一说法,而 45%的人反对。
政治不正确笑话的主题通常是女性和其他面临歧视的群体,因此阅读更多关于政治不正确幽默的研究,可以理解为什么这个问题在性别之间会有不同的结果。
我还注意到,男性和女性分布之间的问题让我想起了我在因子分析中发现的社会传统维度。事实上,这些是维度的主要组成部分。可以通过观察参与者在这个维度上的位置来对性别进行分类吗?

根据众多因素来观察参与者在两个坐标轴上的平均位置,政治派别比性别更能预测个人的观点。平均而言,男性比女性更倾向于社会传统,然而,当你将男性子集限制在民主党人时,这就变得可以忽略不计了。这符合我们在上面的分布中看到的偏斜。
在开始一些闲聊后,Sphagettio 和伏地魔转向了调查问题,好奇的想看看他们是否根据他们的答案配对。经过一番比较后,他们发现他们在大多数他们认为重要的事情上意见一致,甚至超出了调查的范围。继续他们的爱好和课外活动,他们甚至意识到他们都参加了校园牧师,并且都是狂热的人类大战僵尸玩家。
在整个决赛中,两人继续邀请对方进行小冒险,并相互了解,从一次不太可能的相遇发展成一段关系。当我问伏地魔,他是否认为他们会相遇,他回答说,“虽然我们可能会在未来 3 年的某个时候相遇,但这不太可能,而且我们开始约会可能需要更长的时间”。
伏地魔的观察是邻近效应在起作用的一个完美例子:因为两人没有相似的朋友或者住在相似的地方,他们不太可能相遇或者建立关系。事实上,在各种不同的实验中,比如麻省理工学院的“韦斯特盖特西部”住宅研究中,人们已经测量了作为距离函数的关系形成的可能性。
Westgate West 的研究得出结论,大学生最常交往的人中有 2/3 住在宿舍。此外,学生与隔壁邻居交朋友的可能性是住在走廊另一端的学生的四倍,住在楼梯间旁边的学生与楼上邻居建立的友谊是住在走廊中间的学生的两倍。这些研究表明,校园的结构和居住环境对我们建立人际关系的影响比我们通常认为的要大得多。如果我们让一种算法来决定我们与谁交往,而不是依靠距离,会怎么样?关系可能更难维持。毕竟,东西方校园关系被视为“异地恋”(我们这个时代的罗密欧与朱丽叶禁忌之爱),而这一鸿沟不到一英里。但总的来说,消除偏见可以显示真正兼容性的改善。
对一些人来说,通过算法见面似乎令人生畏,但伏地魔和斯皮格蒂奥已经决定接受它。至于长期以来令人恐惧的“你们是如何相遇的?”问题情侣们不得不在这个充满火药味的约会时代笨拙地导航,他们决定自豪地解释他们是如何通过机器学习认识的。❤
要理解 LSTM 架构,只需用 NumPy 编写一个向前传递的代码

Photo by Maarten Deckers on Unsplash
如果你像我一样,从简单开始,从头开始,你会学得最好。不管我在 RNNs 上读了多少次 colah 的著名的 LSTM 邮报,或者 Karpathy 的邮报(伟大的资源!),LSTM 的网络架构看起来过于复杂,门户也很模糊。
最终,我用 NumPy 写了一个 LSTM 向前传球。我强烈推荐做这个练习,因为您可以检查隐藏和单元格状态、输入和输出,并清楚地看到它们是如何创建的。
在本演练中,我们将:
- 用自己独特的 Python 函数表示每个 LSTM 门
- 将它们逻辑地链接在一起,以创建具有单个 LSTM 单元的数字网络
这里的要点是:这些函数可以被编辑以包括打印语句,这允许检查您的数据的形状、隐藏状态(短期记忆)以及整个 LSTM 单元格中不同阶段的单元格状态(长期记忆)。这将帮助你理解为什么门存在。
其次,为了确认我们做得对,我们将:
- 使用 PyTorch 建立一个具有单个 LSTM 细胞的小型神经网络
- 用相同的随机权重初始化两个网络
- 使用两个网络进行 1 次转发,并检查输出是否相同
我们走吧!
第 1 部分:创建 NumPy 网络
下面是 LSTM 参考卡。它包含 Python 函数,以及一个重要的图表。在该图中可以找到来自 LSTM 门函数的每个单独操作和变量(输入、权重、状态)的。它们以颜色编码,以匹配它们所属的门。
这些功能的代码可以复制在卡片下面。我强烈建议保存这张参考卡,用它来分析和理解 LSTM 建筑。(可打印的 pdf 版本可从这里下载。)

下面是来自上述参考卡的可复制代码—每个门有一个功能:
通常,LSTM 为最终的全连接线性图层提供信息。让我们也这样做:
第 2 部分:比较 PyTorch LSTM
用相同的参数创建一个 PyTorch LSTM。PyTorch 将自动为权重分配随机值——我们将提取这些值,并使用它们来初始化我们的 NumPy 网络。
不要不知所措!PyTorch 文档解释了我们需要分解的所有内容:
- 中每个门的权重依次为:忽略、忘记、学习、输出
- 名称中带有“ih”的键是输入的权重/偏差,或 Wx_ 和 Bx_
- 名称中带有“hh”的键是隐藏状态的权重/偏差,或 Wh_ 和 Bh_
给定我们选择的参数,我们因此可以提取 NumPy LSTM 的权重,以此方式使用:
现在,我们有两个网络——一个在 PyTorch,一个在 NumPy——使用相同的起始重量。我们将把一些时间序列数据放入其中,以确保它们是相同的。为了对我们的网络进行正向传递,我们将按顺序将数据传递到 LSTM 门,并在每个事件后打印输出:
好消息!将相同的数据放入 PyTorch 模型显示,我们返回相同的输出:
我们还可以验证,在数据通过 LSTM 单元后,两个模型具有相同的隐藏和单元状态:
我希望这有助于对 LSTM 网络如何进行预测建立一种直觉!你可以从这个要点开始一次性复制整个代码。
LSTM 参考卡可从 本页 下载,包括可打印版本。感谢 Mike Ricos 合作创建了这个伟大的资源。
科学研究中的机器学习危机
一个实验如果没有可重复性还算科学吗?
“现在科学界普遍认识到了再现性危机。我敢说,其中很大一部分确实来自科学中机器学习技术的使用。”——gene vera Allen,莱斯大学统计与电气工程教授
机器学习的使用在科学过程中越来越普遍,取代了传统的统计方法。这对科学界和对知识的追求有什么影响?一些人认为,机器学习技术的黑盒方法是科学研究中可重复性危机的原因。毕竟,如果一个东西不具有可复制性,它就真的是科学的吗?
免责声明:本文是我根据参考资料中提到的材料发表的个人观点。这在学术界是一个有争议的领域,建设性的辩论是受欢迎的。

The cycle of the scientific process.
机器学习(ML)在科学研究中已经变得无处不在,并且在许多地方已经取代了传统统计技术的使用。虽然 ML 技术通常更容易进行分析,但其固有的黑盒方法在寻求真相时会导致严重的问题。
《科学》中的“再现性危机”指的是另一组科学家尝试同样的实验时,研究结果不被重复的惊人数量。这可能意味着最初的结果是错误的。一项分析表明,世界上 85%的生物医学研究都是徒劳的。
关于再现性危机的辩论可能是学术界最接近机器学习和统计部门之间的战争。
一位人工智能研究人员在《科学》杂志的一篇文章中声称,机器学习已经成为一种“炼金术”。
加州旧金山谷歌人工智能(AI)研究员阿里·拉希米(Ali Rahimi)抨击了他的…
www.sciencemag.org](https://www.sciencemag.org/news/2018/05/ai-researchers-allege-machine-learning-alchemy)
他的论文和博客文章都值得一读:
https://people . eecs . Berkeley . edu/~ Brecht/papers/07 . rah . rec . nips . pdf
由…编辑注:阿里·拉希米和我的论文《大规模随机特征》获得了 NIPS 2017 的时间检验奖
www.argmin.net](http://www.argmin.net/2017/12/05/kitchen-sinks/)
ML 很好地补充了科学过程,使其在研究中的使用最终不可避免。ML 可以被认为是一项工程任务——就像一条具有建模、参数调整、数据准备和优化组件的装配线。ML 的目的是找到最佳答案或预测——这是科学探究的一个子集。
机器学习的类型和算法本身可以是科学的主题。正如过去的统计方法一样,许多研究论文都是关于各种类型和子类型的最大似然算法。
2019 年 2 月,Genevera Allen 在美国科学促进协会(American Association for the Advancement of Science)上发出了一个严重的警告,即科学家正在依靠机器学习算法来寻找数据中的模式,即使这些算法只是专注于另一个实验无法重现的噪声。
这一挑战涉及多个学科,因为机器学习被用于在许多领域获得发现,如天文学、基因组学、环境科学和医疗保健。
她使用的主要例子是基因组数据,这通常是难以置信的大数据集,有数百千兆字节或数兆兆字节。Allen 指出,当科学家使用缺乏理解的 ML 算法对基因组图谱进行聚类时,往往会出现似是而非和不可重复的结果。
直到另一个团队进行类似的分析并发现非常不同的结果,这些结果才受到质疑和怀疑。这可能有多种原因:
- 缺乏关于算法的知识
- 缺乏关于数据的知识
- 对结果的误解
缺乏算法知识
缺乏算法知识在机器学习中极为常见。如果你不明白一个算法是如何产生结果的,那么你怎么能确定它不是在作弊或者在变量之间寻找虚假的相关性呢?
由于参数过多(深度神经网络通常有数百万个),这在神经网络中是一个巨大的问题。不仅参数很重要,超参数也很重要,包括学习速率、初始化策略、历元数和网络架构等项目。
意识到自己缺乏算法知识不足以解决问题。如果不同的研究论文使用不同的网络,如何比较结果?由于高维神经网络损失景观的高度复杂和动态结构,即使添加单个额外变量或改变一个超参数也可以显著影响结果。
缺乏数据知识
缺乏数据知识也是一个巨大的问题,但它延伸到了传统的统计技术。数据采集中的误差——如量化误差、传感器不确定性,以及代理变量的使用——是主要问题之一。
次优数据总是一个问题,但是了解什么样的数据使用什么样的算法也是非常重要的,并且会对结果产生重大影响。这可以通过一个简单的回归分析来说明。
如果我们使用参数多于数据点的线性回归(在基因组学中,这是一种非常正常的情况,我们有许多基因和很少的数据点),那么我们对正则化的选择会严重影响哪些参数被确定为“重要”。
如果我们使用 套索 回归,这往往会将明显不重要的变量推为零,从而将它们从回归中消除,并提供一些变量选择。
如果我们使用一个 脊 回归,回归往往会将这些参数缩小到足够小,以至于它们可以忽略不计,但却必然会将它们从数据集中移除。
如果我们使用 弹性网 回归(套索和脊回归的结合),我们将再次得到截然不同的答案。
如果我们不使用任何回归,那么算法将明显地过度适应数据,因为我们有比数据点更多的变量,所以算法将平凡地适应所有的数据点。
很明显,使用线性回归,可以进行统计测试,以置信区间、 p 测试等形式评估准确性。然而,对于神经网络来说,同样的奢侈并不存在,所以我们如何确定我们的结论呢?我们目前能做的最好的事情是陈述模型的确切架构和超参数,并提供代码作为开源,供其他科学家分析和重用该模型。
对结果的误解
对结果的曲解在科学界可能非常普遍。其中一个原因是相关性并不意味着因果关系——两个变量 A 和 B 可能相关有几个原因:
- A 可能是由 B 的发生引起的
- B 可能是由 A 的发生引起的
- A 和 B 可能是由进一步的 混杂变量 、 C 引起的
- A 和 B 可能虚假相关
显示两个值之间的相关性很容易,但确定这种结果的因果关系却极其困难。通过在谷歌上输入虚假的相关性,你可以得出一些非常有趣且明显荒谬的相关性,它们具有统计学意义:



这些可能看起来像是荒谬的相关性,但关键是,如果这些变量被放在一个数据集中,并被输入到机器学习算法中,该算法会将其作为一个因果变量,而不会对所述因果关系的有效性提出任何问题。从这个意义上说,该算法很可能是不准确或错误的,因为该软件正在识别只存在于该数据集而非真实世界中的模式。
伪相关性的出现,但由于使用了具有数千个变量的大型数据集,这种现象在最近几年变得更加普遍。
如果我有一千个变量,几百万个数据点,数据之间难免会有一些关联。算法可以抓住这些并假设因果关系,有效地执行无意识的 p-hacking ,这是一种学术界不赞成的技术。
什么是 p-hacking?
p-hacking 的实践包括获取一个数据集,彻底搜索具有统计意义的相关性,并将其视为科学上有效的。
你拥有的数据越多,你就越有可能发现两个变量之间的虚假相关性。
通常,科学包括假设的形成、数据的收集和数据的分析,以确定假设是否有效。p-hacking 所做的是进行一项实验,然后形成事后假设来解释所获得的数据。有时,这样做没有恶意,但其他时候科学家这样做是为了他们能够发表更多的论文。
加强相关性
机器学习算法的另一个问题是算法必须做出预测。算法不能说‘我什么也没找到’。这种脆弱的框架意味着算法会找到某种方式来解释数据,无论它被赋予的特征有多不合适(只要算法和数据被正确设置,否则它可能无法收敛)。
目前,我不知道有任何机器学习算法能够回到用户身边,告诉他们数据不合适,这隐含地预设为科学家的工作——这不是一个不公平的假设。
那为什么要用机器学习呢?
这是一个好问题。机器学习使得分析数据集更加容易,ML 算法为用户执行大部分工作。在数据集太大而无法使用标准统计技术进行有效分析的领域,这变得非常有价值。然而,尽管它加快了科学家的工作,但机器学习带来的生产力增长可以说被这些预测的质量抵消了。
能做些什么?
这并不完全是悲观的。传统的统计方法和数据集一直存在同样的问题,这些问题只是由于使用大型数据集和算法而被放大,这些数据集和算法可以自动找到相关性,并且比传统技术更难解释。这种放大暴露了科学过程中必须消除的弱点。
然而,下一代机器学习系统的工作正在进行中,以确保它们能够评估其预测的不确定性和可重复性。
也就是说,将失败归咎于工具的是一个糟糕的工作者,科学家需要在使用 ML 算法时更加小心,以确保他们的研究得到证实和验证。同行评审过程旨在确保这一点,但这也是每个研究者的责任。研究人员需要了解他们正在使用的技术,并了解它们的局限性。如果他们不具备这些专业知识,那么或许去一趟统计部门,与一位教授讨论一下,会有所收获(就像我自己所做的那样)。
Rahimi(他认为 ML 是炼金术的一种形式)提供了几个建议来学习哪种算法在什么时候效果最好。他指出,研究人员应该进行消融研究——连续移除参数,以评估它们对算法的影响。拉希米还呼吁进行切片分析——分析一种算法的性能,看看在某些领域的改进如何可能在其他领域产生成本。最后,他建议用各种不同的超参数设置运行算法,并报告所有这些算法的性能。这些技术将使用最大似然算法提供更稳健的数据分析。
由于科学过程的性质,一旦这些问题得到解决,以前被发现是准确的关系,实际上是虚假的,最终将被发现和纠正。准确的关系当然经得起时间的考验。
最终意见
由于结果缺乏可重复性,科学中的机器学习在学术界确实存在问题。然而,科学家们已经意识到了这些问题,并正在推动更具可重复性和可解释性的机器学习模型。真正的突破将是神经网络的研究一旦完成。
Genevera Allen 强调了机器智能面临的一个基本问题:数据科学家仍然不理解机器学习的机制。科学界必须做出一致努力,以了解这些算法如何工作,以及如何最好地使用它们,以确保使用数据驱动的方法得出可靠、可重复和科学有效的结论。
甚至声称机器学习是炼金术的拉希米也仍然对其潜力充满希望。他说“炼金术发明了冶金术、制造药物的方法、纺织品的染色技术以及我们现代的玻璃制造工艺。此外,炼金术士还认为他们可以将贱金属变成黄金,水蛭是治疗疾病的好方法。
正如物理学家理查德·费曼 1974 年在加州理工学院的毕业典礼演讲中所说,
“[科学]的首要原则是你不能愚弄自己,而你是最容易被愚弄的人。”
时事通讯
关于新博客文章和额外内容的更新,请注册我的时事通讯。
丰富您的学术之旅,加入一个由科学家,研究人员和行业专业人士组成的社区,以获得…
mailchi.mp](https://mailchi.mp/6304809e49e7/matthew-stewart)
参考文献
[3]https://bigdata-made simple . com/machine-learning-disrupting-science-research-heres/
[4]https://bio data mining . biomed central . com/track/pdf/10.1186/s 13040-018-0167-7
[5]https://www . science mag . org/news/2018/05/ai-研究人员-宣称-机器学习-炼金术
[6]https://www . science daily . com/releases/2019/02/190215110303 . htm
[7]https://phys . org/news/2018-09-machine-scientific-discoveries-faster . html
[9]https://www . datanami . com/2019/02/19/machine-learning-for-science-proving-problem/
[10]https://www . quanta magazine . org/how-artificial-intelligence-is-changing-science-2019 03 11/
[12]https://blogs . NVIDIA . com/blog/2019/03/27/how-ai-machine-learning-are-advanced-academic-research/
[14]https://www . HPC wire . com/2019/02/19/machine-learning-reproducibility-crisis-science/
机器学习生命周期
根据 Gartner 的说法,公司正在努力实现机器学习模型:
“2018 年 1 月的 Gartner 数据科学团队调查发现,超过 60%的旨在实施的模型从未实际实施。”
根据我们与各种客户合作的经验,我们认为这种无法操作的部分原因是机器学习项目被视为一个固有的数学问题。通过从业务、数据科学和工程协作的角度观察项目从构思到运营的过程,成功的可能性会随着从一开始就有更现实的预期而显著增加。
进入:机器学习生命周期。
这篇初始帖子将总结机器学习生命周期的不同阶段,而在后面的博客帖子中,我们将深入每个阶段。这些博客帖子的目标受众包括数据科学家、数据工程师和技术经理。

Machine learning lifecycle
思维能力
机器学习是用来解决问题的。因此,所有机器学习项目都应该从识别问题和机器学习有可能被用来解决问题的想法开始。接下来是领域专家和机器学习专家之间的合作,以评估机器学习方法解决这个问题的可行性。以下先决条件对于成功的构思至关重要:
- 关于业务目标和范围的明确要求
- 历史数据的可用性
- 了解端到端 IT 基础设施要求
由于涉及不同的技能组合,获得这些先决条件可能会带来挑战。拥有一个足够了解业务、数据科学和所需工程工作的人会有很大的不同。但是,很多项目负担不起这种奢侈。在后面的博文中,我们将讨论如何构建这个过程。
在所有先决条件都满足之后,就可以对谁需要完成什么任务进行高层次的规划了。相关数据团队将找到所需的历史数据。数据科学家将使用这些数据进行初始模型开发。工程师或数据分析师准备将使用预测的下游系统,无论是一些仪表板还是自动决策系统,IT 运营部门准备必要的基础架构。最后但同样重要的是,企业需要调整其业务流程,以融入数据科学解决方案提供的洞察力或自动化。
发展
一旦就与业务目标相对应的关键指标或 KPI 达成一致并获得历史数据,数据科学家就可以开始开发初始模型。数据科学家有各种各样的工具来解决他们的难题:
- 将数据转换为更有用的格式
- 分析数据以指导建模方法
- 实际机器学习模型代码的编写
- 为面向利益相关方的初步报告创建数字和视觉效果
数据科学家通常在这个阶段花费很长时间,迭代模型的许多版本。尽管早期版本的模型可能已经创造了价值,但是开发和生产之间的过渡花费了太多的时间和精力,因此通常认为首先构建一个更好的模型更有效。通过使用工具和自治来减少这种转变的摩擦,可以更快地产生价值。

生产
当开发阶段结束时,需要将开发的模型投入生产,以开始产生价值。将模型投入生产的复杂性取决于问题的背景、数据科学团队的自主性以及组织的整体成熟度。
问题的背景由若干因素组成:
- 预测时的数据流
- 数据的敏感性
- 最大可接受的传递延迟
数据科学团队的自主性取决于团队本身可以采取的必要步骤的数量。这些步骤可以包括创建服务帐户、获取或授予对生产数据系统的访问权限以及更改下游软件组件中的代码。更少的自主性意味着对整个系统更严格的控制,但也增加了同步会议的时间和模型上线前的额外依赖性。
在这种情况下,组织的成熟度包括过程的自动化、关于机器学习项目复杂性的知识量以及组织处理变化的速度。
维护
一旦部署了模型,就可以采取许多措施来提高机器学习模型的健壮性和质量。这些措施大致可分为四个方面。我们称之为后期制作过程维护。
机器学习模型的血统指的是模型的起源,包括模型使用的源代码,它正在训练的数据以及使用的参数。拥有完整的沿袭意味着当问题发生时,更容易审计导致问题的原因。由于机器学习模型在进行预测时会生成数据,因此可以将这种血统添加到数据本身的血统中,这对于某些合规性要求非常重要。
模型通过历史评估来估计性能。历史数据和真实环境之间的差异对于真实性能来说可能是灾难性的。除了数据差异之外,数据流本身也可能中断或损坏。通过设置适当的监控,可以持续检查这些问题,如果发现一些错误行为,应通知开发团队和相关利益相关方。
世界在不断变化。收集了更多的数据,并不是所有的东西都可以仅基于历史数据来衡量。因此,拥有一个允许数据科学家在真实环境中对不同选项进行比较的框架非常重要。这些不同的选项可以包括针对简单基线的算法(例如,模型 A/B 测试)、针对彼此的多个算法或者针对更多数据训练的相同算法。
出于同样的原因,因为新数据是定期持续收集的,所以如果维护不当,机器学习模型可能会过时。这个概念叫做模型漂移。可以通过进行高级监控来检测漂移,此外,通过定期自动重新训练和重新部署模型,或者通过检测到的模型漂移来触发,组织可以最大化其机器学习项目的价值。
如今,在大多数组织中,机器学习模型的生命周期随着初始模型的部署而结束。对于一个长期成功的机器学习项目,它需要更多地关注血统、监控、测试和模型漂移。由于缺少工具、缺乏经验和相对较高的开发成本,这些关键组件通常是缺乏的。在以后的博客文章中,我们将深入探讨这些话题。

结论
让一个机器学习项目取得成功比它看起来更困难。通过考虑完整的机器学习生命周期,我们可以了解潜在的陷阱,以及将模型投入生产并保持其运行所需的条件。虽然这项任务似乎令人生畏,但帮助管理机器学习生命周期的工具越来越成熟。我们的机器学习生命周期管理平台 Cubonacci ,在不影响灵活性的情况下,帮助初创公司、大型企业和企业完成机器学习的生命周期。下一次,我们将深入讨论一些主题。
机器学习项目清单
计划 ML 项目很难——这个清单让它变得更容易。

Download it: www.datarevenue.com/en-resources/ml-project-checklist
对许多人来说,机器学习仍然是一项新技术,这可能会使其难以管理。
项目经理通常不知道如何与数据科学家谈论他们的想法。
在我们规划 30 多个机器学习项目的经验中,我们已经提炼出了一个简单有效的清单。
TLDR:点击此处查看清单和模板:
- www.datarevenue.com/en-resources/ml-project-checklist
1.项目动机

Be clear about the broader meaning of your project.
- 你想解决的问题是什么?
- 与哪个战略目标挂钩?
如果项目团队不理解你的动机,那么他们很难提出好的建议。
有许多方法可以解决机器学习的问题。因此,帮助你的团队为你的最大利益而工作——后退一步,告诉他们为什么这个项目很重要。
2.问题定义
- 你想预测什么具体的输出?
对于给定的输入,你的机器学习模型将理想地学习预测一个非常具体的输出。
所以你需要尽可能的清楚。“预测机器故障”可能意味着很多事情——“告诉我未来 24 小时内计划外停机的风险何时超过 50%”更好。
- 算法有哪些输入数据?
模型可以预测您的输出的唯一方法是从您提供给模型的输入因素中推导出它。因此,为了有机会做出好的预测,你必须有与输出相关的数据。数据越多越好。
- 预测你的具体产出最相关的因素是什么?
一个算法不理解我们的世界。至关重要的是,你要给数据科学家一些提示,告诉他哪些数据实际上是相关的,以便他能够以算法能够理解的方式选择和分割数据。
- 你能提供多少培训实例?
与人类相比,算法需要更多的练习来学习一些东西。你至少应该有 200 个例子。越多越好。
3.性能测定

你怎么知道什么是好结果?
- 你有一个简单的基准来比较你的结果吗?
有没有一种简单的方法可以利用已经有的数据进行预测?也许你可以根据去年的数字预测销售额,或者通过计算客户上次登录后的天数来评估客户离开的风险。
一个简单的基准可以让你的团队对问题有有价值的洞察力。它给你一些东西来衡量模型。
- 你将如何衡量预测的准确性?
- 你期望的最低精确度是多少?
你希望预测的准确度平均在 5% 以内——还是更重要的是没有预测的误差超过 10%?您的模型可以通过两种方式进行调整。哪种方式更好取决于对你来说什么是重要的。
- 一个完美的解决方案会是什么样子?
即使这对你来说似乎是显而易见的,把它写在纸上有助于澄清你的愿景。
- 有没有参考解(类似研究论文)?
如果有人以前解决过类似的问题,把他们的解决方案作为灵感。
这给了每个人一个共同的起点,因此他们可以看到使用哪些数据,可能会出现哪些问题,以及要尝试哪些算法。
4.时间表

A sample timeline for a Proof of Performance project.
- 有需要注意的截止日期吗?
- 你什么时候需要看到第一个结果?
- 你想什么时候有一个完整的解决方案?
一个人工智能解决方案可以无限改进。明确的截止日期有助于团队聚焦。
5.联系人
- 谁负责项目(PM)?
- 谁可以授权访问数据集?
- 谁能帮助理解当前流程和/或简单基准(领域专家)?
在项目过程中会出现许多问题。明确你的工程师可以向谁求助。
6.合作

- 在业务和工程团队之间建立双/周更新。
每周安排一次会议,看看当前的结果,讨论那些不仅仅需要一封邮件来回答的问题。
- 谁应该参与其中?
- 他们应该学什么?
在学习如何管理人工智能时,没有什么比实际项目的实践经验更有价值。如果你想让你团队的其他成员学习,从一开始就要明确这一点。
- 定义代码和问题的位置以及如何访问它们。
从一开始就让所有的开发透明化。这样,任何人都可以很容易地加入进来,给出提示,并检查进度。
回答清单上的问题,并与大家分享。
世界仍在研究如何最好地运行人工智能/机器学习项目。
填写这份清单将让你获得任何成功的机器学习项目的一个要素:理解。
下载清单
访问我们的页面,注册 AI for Managers 邮件列表,并在此下载清单:
www.datarevenue.com/en-resources/ml-project-checklist
清单还包括:
- 谷歌文档模板——这样你就可以马上开始填写。
- 时间表示例——规划项目的良好参考。
PS:如果你对清单的修改有任何建议,请在评论中告诉我。
可编程人类的时代
广告、算法和迫在眉睫的委托代理危机

在过去的一个世纪里,许多水印被突破了,但也许最重要的是,在人类历史上,我们第一次遇到了兴趣与使用者不同的工具。我说的是人工智能,特别是脸书和 Gmail 等广告软件。在这样的例子中,软件的预期目的已经微妙地偏离了用户的目的。虽然这在目前看起来无伤大雅,但从长远来看,它预示着一系列令人不安的后果。也就是说,我们可能会发现自己正处于一个十字路口,人类是由机器编程的,而不是相反。
更糟糕的是,由于这些工具追求与我们人类福祉无关的利益,它们有可能给我们带来严重伤害。前沿人工智能算法为这种结果提供了途径和关键,这一事实应该引起警惕。我不是第一个提出这种呼吁的人,但我认为这样做的理由并不总是得到清楚的解释或充分的说明。
正如许多社会观察家正确指出的那样,目前广告业正在进行一场争夺我们注意力的战争。许多领先的技术公司正在将自己转变为广告公司,或者已经这样做了,因此,任何能够让他们在吸引人们的注意力方面获得战略优势的东西,都是这个军火库中潜在的有利可图的一块。我们必须应对这样一种可能性,即人工智能的前沿发展,即 AlphaZero 变种的深度强化学习,将被弯曲到这样一个目的。很明显,脸书在构建软件的用户界面和互联网连接组件时,采取了一种玩世不恭的方法来利用人类多巴胺系统的成瘾能力。当我们开始接受这样一个概念,即人类,事实上,所有动物,从根本上来说都是生物算法,能够被非生物算法重新编程,危险和可能性的新视野比比皆是。
考虑一下,强化学习算法可以用来影响一个人的政治信仰,或者巧妙地操纵他们采取他们原本不会考虑的行动。我们对世界的许多核心信念,在购买产品、选择伴侣或投票给政治家时指导我们的信念,都是无意识形成的,很容易被操纵。强化学习人工智能可以学习操纵我们,就像它学习如何在国际象棋中击败人类一样。给定一组动作或控制,例如在某人的社交媒体订阅源上提供特定的文章或图片,它可以通过测量人类的反应(如“喜欢”和“不喜欢”)来学习人类的反应。然后,它可以系统地改变自己的行为,引导一个人走向期望的结果。这不是科幻小说——尖端的强化学习算法已经擅长在更复杂的努力中超越人类。
尽管我们愿意相信自己是我们思想和观点的主人,但在很多情况下,这仅仅是一种傲慢。我们的许多观点和信念都是无意识形成的,并且容易被修改。考虑一个由人工智能制定的政治广告活动,它比人类自己更了解每个人的情感按钮。借用历史学家尤瓦尔·赫拉利的一句话,在这样的思想实验中,民主只不过是一场情感木偶戏。虽然在不久的将来,我们可能不会有人工智能政治家,但我们可能会有人工智能巧妙地操纵人们的投票行为,并指导重大的经济决策。
要全面了解这种威胁,需要理解经济学中的一个概念,即委托代理困境,以及它们与人工智能的关系。委托代理困境解决的是委托人(拥有一套价值观的个人或实体)和代理人(代表委托人执行一项或多项行动的独立实体)之间可能存在的脱节。在房产交易中,房地产经纪人是代理人,房产的买方或卖方是委托人。委托人雇佣代理人代表他们行事,但代理人的利益往往会与委托人的利益相背离。研究表明,房地产经纪人通常会将他们在 T2 拥有的 T3 房产在市场上保留的时间比他们客户的更长。这大概是因为房地产经纪人对赚快钱感兴趣,即使这是以雇佣他们的本金为代价。
随着我们将深度强化学习等前沿人工智能引入我们的问题解决方法库,许多主要代理人困境可能会产生。一个我们已经提到过的,广告难题。以前,软件只是一个没有自己利益的工具。换句话说,它的利益与用户的利益直接一致。然而,当一个工具通过广告赚钱时,它现在服务于两个主人——一个是用户,另一个是广告商。因此,存在一个委托代理困境。
房地产经纪人是一个高度监管的职业,部分原因是人们普遍认为这些主要的代理困境是存在的,需要监管。因此,广告公司可能早就应该像房地产经纪人一样受到监管了。事实上,在这一领域肆无忌惮的机会主义的后果可能要糟糕得多。在房地产经纪人的例子中,只有一个人的智力与其他人竞争。在科技巨头的情况下,这是人类的智慧,也许是一个五岁的孩子,他和父母的平板电脑一起留在家里,面对一个尖端的人工智能算法,该算法很可能知道如何准确地将用户的行为修改到所需的方向。这目前采取的形式是增加那个人点击广告的机会,但这只是冰山一角。同样的算法可以被重新用于许多更邪恶的目的。深度强化学习算法的妙处在于,它们可以简单地通过改变奖励函数来轻松改变目标。DeepMind 用被称为“AlphaZero”的算法证明了这一点,这种算法不仅可以精通国际象棋,还可以精通围棋和其他各种游戏。让人们点击广告只是这种算法的一个游戏,同样的算法可以和我们玩很多这样的游戏,不是所有的都友好,也不是所有的都知道我们在玩游戏!
我们还必须应对这种可能性,即算法可能会发展出自己的兴趣,或者无意中被编程为对整个人类有害的兴趣。虽然这种可能性看起来微乎其微,但某些哺乳动物的大脑发展出与创造它们的基因不同的兴趣的可能性有多大?据我所知,人类是唯一采取避孕措施的物种,故意颠覆生育的基因冲动。到目前为止,大约有 8.7 个物种被编目,这意味着 870 万分之一的可能性:很低,但显然如果有足够的时间和遗传变异,这是可能的。虽然像谷歌这样的公司的利益与创建公司的人和它所服务的客户密切相关,但它们并不完全相同。例如,利润最大化的目标并不是我们基因甚至所有人脑的阿瑟目标。没有这样的目标,我们也能生存,几千年来,我们成功地做到了这一点。利润最大化是从人类故事中产生的一种价值,一个突发的目标。但是一旦它被植入我们的设备,它就会变成一种物理力量,能够以有形的方式影响这个世界。想象一下,一个由自主智能手机应用组成的社会,作为互联网上的数字存在而存在,它们相互购买和销售产品,以追求利润最大化,而没有人进入循环。股票市场已经类似于这样一个系统,大多数交易没有人监督。在这样一个系统中,有血有肉的人类的利益可能不再有任何流通性,委托代理人困境的可能性成为必然。
也许目前在控制气候变化、世界饥饿和其他全球困境方面的困难之一是,利润动机通过自动化越来越与人类的血肉利益脱钩。一家不再依赖健康快乐的员工来创造利润的公司,没有什么激励去珍视这些目标。除非人类的基本需求融入到公司的利润动机中,否则很难保护人们或环境免受以牺牲人类需求为代价来创造利润的战略策略的影响。随着公司越来越多地支配许多国家的公共政策,例如在美国,公司游说者经常影响政治结果,这造成了一个重大的困境。事实证明,利润最大化原则可以在没有人和没有清洁环境的情况下存在,作为一个优化脚本被烘焙到自主设备和机器中。在马克思或亚当·斯密的梦里,他们似乎都没有预见到 capitol 本身可能会成为一个智能代理,一个其目标不一定与创造它的人类的基本生物利益一致的算法。
关于人工智能胡作非为,人们经常给出的一个离奇的恐怖故事是,一种超级智能算法致力于最大限度地提高回形针的产量。有了这样一个目标,它可能会把整个世界变成一个回形针工厂,消除人类作为一个意想不到的后果。从某种意义上说,我们可能已经在这样一个故事中了。由于自动化,人类在我们公司的管理和维护中扮演的角色越来越少,这些公司就越来越不需要维护人类的利益。利润最大化可以导致与纸夹 AI 故事相同的结果,事实上,任何与人类生存和福祉没有直接联系的优化目标都可以。这是利润最大化的基本问题,它是人类福祉的代表,而且越来越不准确。
当谈到人工智能时,大多数人都担心自主武器,但可能是自主工厂更快地解决了我们。甚至可以想象,利润原则可能会比人类存在得更长久——这是一面旗帜,激励着越来越复杂的非生物制剂的创造。生殖健康的原则激发了我们今天看到的每一种生物的产生。正是如此,利润最大化原则可能会激发整个星系非生物制剂的进化,为了追求更好的资产负债表而无休止地相互竞争。考虑到许多公司越来越多地在很少人力投入的情况下运营——特斯拉 giga 工厂背后的整个目标是尽可能实现自动化。从最长远的角度来看,我们可以得出这样一种经济:主要由自主企业向其他自主企业出售产品,人类逐渐被排除在这个循环之外。我们已经比我们可能意识到的更接近这样一个场景,许多公司的客户是其他公司,而根本不是人类。在一长串企业交易中,人类目前只是一个脆弱的端点,随着取代人类消费者的算法的出现,这个端点很容易被解散。没有理由相信算法不能像人类一样消耗每一点,甚至更好,因为它们不受任何生物约束的限制。
在部署战略性人工智能时,我们需要格外小心。毫无疑问,我们的基因祖先认为,他们在将自己的兴趣与我们目前展示的那种能够学习和解决复杂问题的大脑的兴趣结合起来时,做了一笔很好的交易。在某种程度上,这些大大脑变得足够复杂,以至于它们开发出了最大化主观幸福概念的策略,而这些概念与创造它们的基因并不一致。就像利润最大化对于一个人来说不存在一样,幸福最大化对于我们的基因来说也不存在。相反,它对基因来说是一个有用的指标,可以作为实现其他目标——即生存和繁殖——的指标。幸福是一个代理目标,与有机体避免危险和获得足够的生存资源有关。然而,从这个代理目标而来的是一种行为,这种行为与基因的原始意图,即生殖健康,是不一致的。为了追求幸福,我们常常选择不生育。其他替代目标或指标包括经济利润等。如果我们不小心,我们可能会发现我们的机器在追求这些目标,即使它们与大脑的主要利益以及最终创造它们的基因不一致。
少数公司已经控制了地球资源的很大一部分,尽管许多人经常挨饿或无家可归。当公司赚钱时,产生的利润可以作为经济成功的代表,反过来又可以作为社会人类居民福祉的代表。但这一链条并非牢不可破,随着更智能的算法取代人类,该指标不再反映最初目标的可能性会增加。
一般来说,我们对利润感兴趣,不是作为目的本身,而是作为社会福祉的代表。但是,正如大脑的利益可能与基因的利益不同一样,企业的利益也可能与组成其运作的社会的人类的利益不同。这是委托代理困境的核心。在一个人类经常挨饿,但企业却欣欣向荣的经济中,我们可以假设利益的重大背离已经开始。为企业配备由前沿人工智能支持的战略决策能力,有可能使人类对于利润最大化来说变得更不重要。企业内部越来越多的活动实现自动化的运动正在加速,我们正在进入人工智能和企业利益之间的危险的、未知的水域。迫切需要评估利用这一技术的纯利润驱动方法的相关风险,以免意想不到的后果将我们引向更好的未知之路。
自己写的杂志
我们让一个人工智能写下未来,这是它要说的话和我们建造它的步骤。
凯瑟琳·劳伦斯&安·基德

A screenshot of MONTAG magazine’s homepage at montag.wtf
TL;DR(或者如果你不关心它是如何建成的,只想看一些 AI 写的关于未来的文章):是的,杂志可以自己写,但它仍然需要一个人类出版商。在 查看 montag.xyz
这个拼写启用的项目的原始材料是 MONTAG Magazine ,这是一个关于技术将如何改变我们生活方式的故事的在线和印刷杂志。MONTAG 成立于 2017 年,是 Grover 的创意,Grover 是一家总部位于柏林的初创公司,提供灵活的月租消费电子产品。我们启动了 MONTAG,让我们的目光超越今天可用的技术设备,更深入地思考技术对社会的影响。
人们经常会问,为什么我们以如此古老的格式发布如此具有前瞻性的内容——印刷媒体在数字时代有什么地位?我们经常问自己,未来我们将如何与媒体和创意产业中的技术合作?与人工智能的互动将如何影响人类的创造力?
这个项目旨在回答其中的一些问题,特别是随着人工智能能力的快速发展,如 OpenAI 的 GPT-2 。在 MONTAG 第 3 期“编码创意”中讨论了神经网络生成的艺术和文本的主题后,我决定尝试一下,尝试使用神经网络来制作一本自己写作的杂志。
- 第一步,使用 shell 脚本和 Python 进行 web 抓取
- 第二步,使用法术训练 Max Woolfe 的 Simple-gp T2 . run
- 第三步,提取文本样本
第一步:清理文章文本
大多数数据科学家会告诉你,他们花了更多的时间通过收集、组织和清理数据来创建良好的数据集,然后才能做任何有趣或有用的事情。不幸的是,我们训练神经网络所需的文本数据也是如此。
作为该杂志的作者之一,理论上我可以进入我们的内容管理工具(MONTAG 使用 Ghost ,一个非常酷的开源发布平台)手动复制所有文本,但从网站上删除文本数据会更容易。此外,如果我想在新的文章写出来后重复这个过程,或者用它来写另一个在线博客或杂志,它将更容易被复制。
为了从网站上收集数据,我在编写 shell 脚本和 Python 脚本之间切换,前者要求我的计算机下载 HTML 页面,后者为我读取这些 HTML 页面并找到我需要的信息。使用这个过程,我只需要找到所有的文章链接,将每篇文章下载为一个 HTML 页面,然后将所有的 HTML 页面数据转换为一个文本文件。我将从一开始就为此使用 Spell,这样所有的文本数据都位于我们将进行处理的同一个位置,并且我的计算机不会充满 HTML 文件——如果我们正在抓取一个大得多的文本语料库,这可能是一个问题。
首先,我需要注册并登录一个法术账户(更多关于如何做的在这里)。然后,我将安装拼写命令行界面,并使用我在注册时创建的用户名和密码登录:
$ pip install spell
$ spell login
然后,我将创建一个文件夹来存放我为项目编写的任何脚本。
$ mkdir montagproject
$ cd montagproject
我们暂时将该文件夹保留为空,稍后在本文中添加我们的脚本。
查看我想要抓取的站点,在本例中是 www.montag.wtf ,我看到底部的分页显示“第 1 页,共 27 页”,这很好,现在我知道我需要抓取多少页了。在这里,我将编写一个脚本,它将遍历 montag.wtf 上的每一页,并将其存储在我的法术运行中。由于这个脚本不需要 GPU,我们可以在 Spell 的默认 CPU 机器上运行它。
$ spell run 'for p in `seq 1 27`; do curl[https://www.montag.wtf/page/$p/](https://www.montag.wtf/page/$p/) -o montagpage$p.html; done'
Could not find a git repository, so no user files will be available. Continue anyway? [Y/n]:y💫 Casting spell #1...
✨ Stop viewing logs with ^C
✨ Machine_Requested... done
✨ Building... done
✨ Run is running
% Total % Received % Xferd Average Speed Time Time Time Current
.
.
.
✨ Saving... done
✨ Pushing... done
🎉 Total run time: 30.39674s
🎉 Run 1 complete
瞧,几秒钟后我就有了 27 个 HTML 文件。我们可以使用ls命令查看它们。如果您想下载任何一个文件(或所有文件),您可以使用spell cp命令,该命令适用于目录路径或文件路径:
$ spell ls runs/1
35 May 21 18:48 montagpage1.html
12228 May 21 18:48 montagpage10.html
12166 May 21 18:48 montagpage11.html
12224 May 21 18:48 montagpage12.html$ spell cp runs/1/montagpage1.html
✔ Copied 1 files
这些文章的链接藏在这几页的某个地方。我可以查看这个文件夹中的第一个 HTML 页面,看看我将如何使用 BeautifulSoup 提取文章的链接,并准备另一个脚本来抓取文章页面。
看起来每个文章链接都在一个名为homepage-post-info的 div 元素中,所以首先我们要求 BeautifulSoup 找到所有这些链接。然后,对于它找到的每个对象,我们要求它找到里面所有的锚标记,并为每个锚标记提取href,这是我们到文章的相对链接。下一部分为我们的新 shell 脚本打开文件以下载所有的文章 HTML 页面,并添加一行以将每个文章页面输出到一个新的 HTML 页面。
下面是提取文章链接并创建一个新的 shell 脚本来下载它们的 Python 脚本。让我们将代码复制到我们的montagproject文件夹中名为montagarticlesoup.py的文件中。
from urllib import urlopen
from bs4 import BeautifulSoup
import os
import syscount = 1
montagpages = os.listdir(sys.argv[1])
path_to_pages = sys.argv[1]for htmlFile in montagpages:
textPage = urlopen(path_to_pages + "/" + str(htmlFile))
text = textPage.read()
soup = BeautifulSoup(text, features="html.parser")
articles = soup.find_all(class_="homepage-post-info")
for x in articles:
links = x.find_all("a")
for a in links:
link = a['href']
f = open("getmontagarticles.sh", "a")
f.write("curl [https://www.montag.wtf](https://www.montag.wtf)" + link + " -o montagarticles" + str(count) + ".html\n")
count += 1
f.close()
要运行这个脚本,我们首先需要将我们的文件commit到 git。如果您在本地运行,这是不必要的,但是因为我们要在 Spell 上运行,所以我们需要在 git 存储库中保存我们的文件。我们还需要initgit repo,因为这是我们第一次使用它。
$ git init && git add * && git commit -m "add montagarticlesoup.py"
然后运行我们的脚本,使用下面的命令。您必须传入一个命令行参数,即我们的 Montag 页面的目录名。该参数紧跟在 python 文件的名称之后。
别忘了把下面的 **runs/1** 换成上面你跑的次数!
如果您忘记了运行编号,您可以在web.spell.run/runs或使用spell ps查找。
$ spell run -m runs/1:pages --pip urllib3 --pip beautifulsoup4 --python2 "python montagarticlesoup.py pages"...
✨ Saving... done
✨ Pushing... done
🎉 Total run time: 23.557325s
🎉 Run 2 complete
在 Spell 上运行整个项目的另一个好处是,我不需要在我的电脑上安装任何东西,也不需要使用虚拟环境来收集所有的依赖项。我使用法术--pip标志来添加我需要的包。
我还需要使用-m标志从前面的命令中挂载我的文件。如果您还记得的话,所有的 html 文件都在 run 1的输出中(或者,如果您已经玩了一会儿法术,不管您执行第一步时的运行编号是什么)。然后,我表示希望在新的运行中将这些文件挂载到名为pages的目录中。最后,我将把目录名 pages 作为我的命令行参数传入,这样我的脚本就知道在哪里查找文件。
跑步结束后,我们会看到这些步骤。如果我们ls运行,我们将看到我们的getmontagarticles.sh文件——太好了!
$ spell ls runs/2
14542 May 22 14:50 getmontagarticles.sh
让我们运行新脚本来获取所有文章。在运行脚本之前,您可能需要更改它的权限,我已经用下面的chmod命令完成了。不要忘记将2替换为您跑步的号码。
$ spell run -m runs/2:script "chmod +x script/getmontagarticles.sh; script/getmontagarticles.sh"...🎉 Run 3 complete
我们应该会发现,我们的运行输出中现在有超过 100 个 HTML 页面。我们现在需要从大量的文章中获取甜蜜的文本数据来训练神经网络。
在我们带着所有的文本数据自由回家之前,我们还得做一碗汤。这一次,我们将浏览所有这些文章,提取所有文本内容,并将其写入一个名为montagtext.txt的文本文件——没有链接,没有图像,没有格式,没有问题。姑且称之为montagtextsoup.py:
from urllib import urlopen
from bs4 import BeautifulSoup
import os
import sysarticlepages = os.listdir(sys.argv[1])
path_to_pages = sys.argv[1]for htmlFile in articlepages:
if ".html" in htmlFile:
textUrl = path_to_pages + "/" + htmlFile
textPage = urlopen(textUrl)
text = textPage.read()
soup = BeautifulSoup(text, features="html.parser")
articletext = soup.find_all(class_="content-text")
for element in articletext:
words = element.get_text().encode('utf-8')
f = open("montagtext.txt", "a")
f.write(words)
f.close()
将它添加到您的montagproject目录中,并且不要忘记在运行它之前commit它。
$ git add . && git commit -m "add montagtextsoup.py script"
然后运行:
$ spell run -m runs/3:articles "python montagtextsoup.py articles" --pip urllib3 --pip beautifulsoup4 --python2
.
.
.
🎉 Run 4 complete
Bingo bango,我们现在有一个 1.3 MB 的训练数据的纯文本文件!
因为我们会非常需要这个文件,所以让我们创建一个到它的链接,这样我们就不需要在挂载它的时候记住运行 id。
$ spell link montag_text_file runs/4/montagtext.txt
Successfully created symlink:
montag_text_file → runs/4/montagtext.txt Jun 11 10:59
第二步。将文本输入神经网络
现在我们可以开始玩 Spell 的 GPU 了。为了掌握这一点,我在 Learn 上看了一些视频。Spell.run ,发现文章在 Spell 上生成 RNN 文本非常有用。
我们将要使用的夏尔-RNN 代码在这个库中:https://github.com/minimaxir/gpt-2-simple.git——但是你不必在本地克隆或添加它来使用它。
我将在名为run.py的montagproject文件夹中添加一个 Python 脚本,它将调用 GPT-2 的能力,并根据我们的 MONTAG 文本数据对 117M 模型进行微调:
import gpt_2_simple as gpt2
import sysmodel_name = "117M"
file_name = sys.argv[1]
gpt2.download_gpt2(model_name=model_name) # model is saved into current directory under /models/117M/sess = gpt2.start_tf_sess()
gpt2.finetune(sess,
file_name, # name of the file with our text data
model_name=model_name,
steps=1000) # steps is max number of training stepsgpt2.generate(sess)
我再次提交我的 git repo,注意到我添加了run.py脚本。
$ git add . && git commit -m "add run.py script"
关键时刻到了,该做饼干了。
这里的最后一个参数,-t k80,指定我们要使用 Spell 的 K80 GPUs,这将比使用 CPU 能力快得多——并且当你注册时,Spell 会给你 10 美元的免费积分,所以这将是快速的和免费的。
$ spell run --pip gpt_2_simple "python run.py montag.txt" -m montag_text_file:montag.txt -t k80
如果一切按计划进行,您将开始看到大量输出,这意味着它是有生命的,是有生命的!
这就是咒语的美妙之处——你不必担心看着你的电脑,以确保它不会着火或飞行。事实上,你可以在神经网络训练的整个过程中一直正常使用你的计算机。既然我们选择了一个K80,它应该比 CPU 快,但是仍然有足够的时间在它工作的时候起来跳一段庆祝的舞蹈。
第三步。对文本取样
1 小时 14 分 55 秒后,GPT 2 号完成了训练。看看这一过程中产生的一些输出,我们知道这是一条好的道路。以下是样本中最有说服力的两个片段:
101: "The idea of a currency is exciting, but not at all convincing. As a modern society, we often try to imagine how much food and drink we would need in order to live - which, no matter how much you drink, doesn't always seem as important as what someone else wants, either. So, in the past two millennia, we have tried to create things that are like any existing economy, but with fewer and fewer laws and regulations, and easier access to credit, buying and selling seems like simple economics.In reality, we're doing things the old-fashioned way, creating new currencies for buying and selling, but with a big emphasis on flexibility and anonymity."
501: "The future (with some exceptions) tends to bang itself around a little more, so sometimes the combination of tech and mindfulness that accompany truly being constantly alive gets you really high.For me, that combination of being constantly alive is extremely important to the success of my company. Back in 2014, I completed a study by Citi that found that mindfulness meditation led to lower prices for wine and a better experience, and that engaging with material things was linked to less dopamine release.And while a healthy and happy life is fun and hip, a study by Mindful reported an 80% decrease in anxiety and panic attacks among suitably excited customers.So while you're at it, join me as I meditate on a beautiful day: for a low, gain access to plenty of happiness in all you potential customers I can influence into spending less time on pointless things like Netflix, I can boost creativity, and my life will be more fulfilling.Open Happiness.Find it on Twitter.Youtube.And don't miss the chance to get involved!"
这是我见过的很好的内容营销材料。现在,我们想创建一个小脚本,让我们可以随时对文本进行采样,并调整温度等因素,温度(非常非常简单)控制输出与数据的匹配程度——温度越低,书写越真实,温度越高,书写越奇怪。
我们在使用 Max Woolfe 的 GPT-2 实现时遇到的一个问题是load_gpt2和 generate,这两个我们在自述示例中看到的命令,如果不做一点改动就无法与拼写一起工作。在将run_name作为一个参数之后,这个函数的下一部分试图找到默认情况下checkpoint/run1下的训练数据。相反,我们希望将加载和生成函数指向我们在 Spell 上的训练运行中创建的输出,所以我们必须这样做:
首先创建一个法术链接,从你训练的跑步中挂载检查点(在我的例子中,是跑5)。这并不是绝对必要的,但它使跟踪跑步变得更容易:
$ spell link montagmodel runs/5
接下来,我们将把从检查点生成新文本的脚本(可以在 repo 的 README.md 中找到)放入一个名为generate.py的文件中:
import gpt_2_simple as gpt2sess = gpt2.start_tf_sess()
gpt2.load_gpt2(sess)gpt2.generate(sess)
当我们运行generate.py时,我们指定以这种方式从 run 5中的训练模型加载检查点(不要忘记提交新文件!):
编辑完 **generate.py** 文件后,不要忘记提交 git:
$ git add . && git commit -m "add generate.py"
$ spell run --pip gpt_2_simple "python generate.py" -m montagmodel/checkpoint:checkpoint
现在我已经确保脚本可以找到训练好的模型,并可以从它们生成文本,让我们通过改变温度来稍微调整一下generate.py,并生成更多的样本,看看我们是否可以得到更真实的文章。这段代码为温度 0.5、0.7、1.0 和 1.5 分别创建了 20 个样本,并将它们分别输出到各自的文本文件中。
import gpt_2_simple as gpt2sess = gpt2.start_tf_sess()
gpt2.load_gpt2(sess)
gpt2.generate(sess)gpt2.generate_to_file(sess, destination_path='montagarticlernn-temp0-5-20samples.txt', nsamples=20, temperature=0.5)
gpt2.generate_to_file(sess, destination_path='montagarticlernn-temp0-7-20samples.txt', nsamples=20, temperature=0.7)
gpt2.generate_to_file(sess, destination_path='montagarticlernn-temp1-20samples.txt', nsamples=20, temperature=1.0)
gpt2.generate_to_file(sess, destination_path='montagarticlernn-temp1-5-20samples.txt', nsamples=20, temperature=1.5)
为了运行,我们使用与之前相同的命令:
$ spell run --pip gpt_2_simple “python generate.py” -m montagmodel/checkpoint:checkpoint
这里有几篇文章样本来自最保守的温度,0.5:
这似乎是对一个新的 YouTube 趋势和现代艺术运动宣言的解释,它特别令人印象深刻,因为它包括一个 Twitter 图片链接和一个不存在的柏林艺术博物馆的说明:
"Youtube Video - "Bombing"Bombing is when an utterly stupid idea, quickly borne from parents' and peers' knowledge base, sets off alarm bells.Bombing is when a concept, idea or practice - known in some countries as "art" - breaks through the normal rules of normal human behaviour and convinces - or induces - us to act.Bombing movies, TV shows, games - many more are likely to be flaunted around the world than art.So if you really want to see how susceptible we are to the ravages of modern art-based violence, look no further than the Brutalist fortress city of Dusseldorf, where the city walls have been razed to the ground and graffiti-covered lampposts have been torn up and flung into the distance; where standing ovation is still the most effective form of resistance.But don't be alarmed if art-based paleo-ethno-blasting gets itself into a bit of a quandary. Berlin's Trafigura Museum has started a fund-raiser to pay for wall-removal, claiming $150,000 as their "reward" for completing and destroying a 60-foot-tall wall in the centre of the museum.pic.twitter.com/7xilOswu1h - The Trafigura Museum (@TheTrafigura) August 8, 2017The fact that this kind of art-based annihilation is so readily available to a fraction of the population is down to a stubborn refusal to take risks, a stubborn refusal that is partly understandable, partly reflects the fragility of local democratic culture, and partly reflects the desperation of the ruling class, who are determined that any resistance is met with force and violence.Anti-art, anti-future, anti-art, anti-future. The only thing standing between us and this kind of apocalypse is a willingness to take the risk.The day has come."
《人工智能》对人工智能未来的推测:
"OMFG, what is the future of artificial intelligence?Let's keep these two threads running for as long as possible. AI generally likes to think of itself as a race to be first in the race, and if it can be thought of as a, well, any race, then so be it. But human intelligence also likes to think of it as a race to be free. To be the person who is not afraid to die, who doesn't want to be drained of all sense of self, and who doesn't want to be anything but.And the more you think about it, the more you'll understand why automation is bad for our planet and why deep learning is bad for us.And it's not even just the jobs that are going to be automated: the people who are unaugmented by their jobs and are actively working to make their jobs obsolete. It's the automation of the cultural sphere, at least for a while.What about the other jobs too? Those that are situational unemployment insurance workers, who either can't or won't work due to the lack of cultural capital or cultural influence to live elsewhere, until they find a better life elsewhere.These people are going to do anything to survive and thrive in a technologically-driven world, and even if they survive, they're doing it in a way that makes them less than human. And they're not going to get a job or a raise any time soon."
来自温度为 1.0 的样品:
费德里科·赞尼尔(Federico Zannier,一名软件开发人员,2013 年在 Kickstarter 上出售了自己的数据——我猜他现在几乎是我们人工智能的自由职业者)署名的关于资本主义和自动化未来的思考!),以及 CNN 政治记者、专家丹·梅里卡(Dan Merica)编造的一段话。然而,正如开头一样令人信服的是,这篇文章确实可以归结为一个处方:
"By Federico ZannierWhat does the future have in store for us after billions of Euro has been gambled on global capitalism? One company has taken advantage of this reality, opening factories in China, and setting up shop in one of the world's most sweatshops - cutting the work environment for Chinese workers, and for the global capitalist project. Workers in China start cashing in on their garment and real estate investments, and after years of being let off the hook for unpaid internships and part-time work, are finally being punished for their collective labor and working conditions. Workers in Costa Rica, chipping in for ethical sweatshows, and setting up shop in sweatshops all over the world. Open Capitalism Now!But is it really open for capitalism to go to a sweatshop and begin to innovate? Maybe it's not capitalism that takes the risk, it's open work, capitalism in action.Some are afraid that, if allowed to go ahead, the next few years will be one of the most dangerous for capitalism. Over at MONTAG, Dan Merica warns of the dangers of automation and digital wage manipulation:"Americans are going to be driving the decision to buy a car - and many are predicting that as more automation and digital labor labor comes to the U.S. they'll be the ones who are hardest hit. And their predictions are off, at least for the summer."And Mark Giustina at technobabylontips says something vaguely optimistic about the future of work: "The worst fears of automation workers - who want strict control over their jobs before they ever have a chance to build their own company - are unfounded."Return to text version: this article originally ran on MONTAGIn the second of my looks into tomorrow's tomorrow's sweatshop-like work, I want to see how robots may fare in the kitchen. This part is tricky. Knock down a tomato and bake it for about 500 minutes, then fry it in a fragrant butter sauce until golden brown. Repeat. Flavor it up."
以及对一种叫做迷你裤的加密货币的猜测,这是替代硬币的一个好名字:
"TL;DR: There's no point in hoarding currencies in the first placeOnly after discussing the likelihood with a crypto evangelist, would we not want to write a very detailed analysis of the individual reasons why, even with all of the giddiness and fanciness of the concept, it is hard to picture putting two and two (even though there are plenty of them in all of us).The death of currency would cease when most people no longer needed it, and cryptocurrencies would be the wrong entity to mint. We need instead a new coin that we can knock around and use to ferry messages between millions.There is already an utterly fascinating array of altcoins waiting in the wings, and none of them are nearly as obscure as the Minie-Pants. Oh, the lost alloys Tenka and The Bull.They too are trying to mint a new currency, and likelihood of success is as good: if the altcoin is truly effective at changing how people spend USD, it must also be persuasive enough to convince potential buyers that it is a good investment.And yet, the Minie-Pants seem more convinced than I.T. pros that they're still in the early days of crypto. So they seem to be genuinely interested in the coin, and can see clearly when to take it out of proportion. They also seem to be fundamentally wrong about taking money out of thin air.Why? The coins and concepts that make them tick all have a lot to do with money's freeze-and-reset cycle: everything from debit cards to US currency, including Bitcoin, has to be part of the normal economy to keep the system running smoothly.The Minie-Pants are fundamentally unfair: they want to make sure everyone has a USB stick to use Bitcoin at all times, and don't want governments, banks and central banks to be sending coins to those countries where there are no internet services or banks to be found.They want to make sure no-one has access to money, and neither do we. But to this we say: Shut the fuck up, girl!"
虽然这个神经网络在加密货币、人工智能和劳动力自动化等未来思维的技术主题上显然是一个相当称职的作家,但它还没有学会上传文章和点击发布按钮——但只要再多一点编程,这就可以轻松完成。
等等…我刚刚是不是自动丢掉了一份工作?
在 AI 决定我过时之前,你可以在 montag.xyz 阅读一本由 AI 写的杂志,由人类出版。
嵌入模型背后的魔力
探索 Word2vec 和 GloVe 的实现

Image by Natalia Y — Unsplash
什么是嵌入?
嵌入是知识表示的一种类型,其中每个文本变量都用一个向量来表示(现在可以把它想象成一个数字列表)。文本变量可以是单词、图中的节点或者知识图中两个节点之间的关系。这些向量可以有不同的名称,如空间向量、潜在向量或嵌入向量。这些向量表示机器学习方法可以应用的多维特征空间。因此,我们需要改变我们对语言的看法,从单词序列到占据高维语义空间的点,空间中的点可以靠近也可以远离。
为什么我们需要嵌入?
这种表示的目的是让具有相似含义(语义相关)的单词具有相似的表示,并在空间中绘制后彼此更接近。为什么这很重要?嗯,原因很多,主要是:
- 计算机不理解文本和单词之间的关系,所以你需要一种方法用计算机能理解的数字来表示这些单词。
- 嵌入可以用于许多应用中,例如问题回答系统、推荐系统、情感分析、文本分类,并且它还使得搜索、返回同义词更容易。让我们举一个简单的例子来理解嵌入是如何帮助实现所有这些的。

Image Source: (Embeddings: Translating to a Lower-Dimensional Space) by Google.
简单嵌入示例
为了简单起见,让我们从这个例子开始,考虑单词“国王”、“王后”、“男人”和“女人”分别用向量[9,8,7]、[5,6,4]、[5,5,5]和[1,3,2]来表示。图(1)描绘了这些向量的表示。请注意,单词“king”和单词“man”在语义上是相关的,因为“man”和“king”都代表男性。然而,“国王”这个词还有一个额外的特征,那就是皇室。类似地,“queen”这个词和“woman”相似,但是有一个额外的特征,那就是皇室。
既然“国王”和“王后”(男性皇族-女性皇族)之间的关系类似于“男人”和“女人”(男性人类-女性人类)之间的关系,那么将它们相减就得到这个著名的等式:(国王-王后=男人-女人)。顺便说一下,当两个单词相减时,我们减去它们的向量。
嵌入背后的魔力
假设我们不知道“国王”的女性名字是什么,那么我们如何得到它呢?好吧,既然知道了(国王-王后=男人-女人),我们就把公式改成(王后=国王-男人+女人)这样就有道理了。该公式表明,如果你从“国王”中删除男性性别(皇室是提醒),然后将女性性别添加到皇室,以给出我们正在寻找的“女王”。

Image by (Kawin Ethayarajh), Why does King — Man + Woman = Queen? Understanding Word Analogies
图片摘自( Kawin Ethayarajh ),为什么国王-男人+女人=女王?理解词语类比
现在我们知道嵌入在问答系统中是有帮助的。其他例子可能也差不多(美国-英语=法国-法语),(德国-柏林=法国-巴黎)。此外,嵌入在简单的推荐任务中也很有帮助。例如,如果有人喜欢“橙色”,那么我们查看与代表“橙色”的向量最相似的向量,并得到代表“苹果”、“樱桃”和“香蕉”的向量。正如我们所看到的,我们对每个单词的表示(数字列表)越好,我们的推荐系统就越准确。所以提醒的问题是,我们如何为每个单词想出这个数字列表?(也就是所谓的嵌入、潜在或空间向量)。
嵌入类别
有三个主要类别,我们将逐一讨论:
- 单词嵌入 (Word2vec,GloVe,FastText,…)
- 图嵌入 (DeepWalk,LINE,Node2vec,GEMSEC,…)
- 知识图嵌入 (RESCAL 及其扩展,TransE 及其扩展,…)。
Word2vec
Word2vec 是最早的载体之一,主要是嵌入单词而不是句子或书籍。此外,Word2vec 的维数与训练数据中的字数无关,因为它使用一些算法将维数减少到(50,100,300 等。).Word2vec 属于基于预测的嵌入,它倾向于预测给定上下文中的单词。Word2vec 有两种风格:连续单词包(CBOW)和 Skip-Gram 模型。CBOW 倾向于在给定上下文的情况下预测单词的概率,而 skip-Gram 使用相反的 CBOW 架构(在给定单个单词的情况下预测上下文)。
CBOW
我们从指定上下文窗口大小开始,它是每个上下文的开始和结束。然后我们得到每个单词的一个热编码向量。给定语料库“我喜欢开快车”,窗口大小是 1(目标单词前一个单词和后一个单词),向量维数是 3,并且我们想要从上下文“我……”中预测中间单词“驾驶”。开车”。请注意,我们只有 1 个隐藏层,其大小与所需的矢量尺寸相关,这就是为什么我们称这种技术为学习矢量的表示,因为我们只有 1 个隐藏层。下面是架构,注意输入是上下文窗口大小中的单词,输出是学习目标单词的表示。还要注意,没有激活功能应用于隐藏层。但是,输出层使用 Softmax。

前一个神经网络的输出是下面的权重矩阵:

在得到权重矩阵之后,我们将该矩阵与目标单词的一个热编码向量相乘,以获得其表示向量。

你可能会问,为什么我们要把权重矩阵和一个向量相乘,这个向量里充满了 0 和 1。当然,输出只是它在矩阵中的位置,考虑下面的例子:

这个乘法的真正目的只是根据目标单词向量在 Hot 编码向量中的空间来查找它。
跳跃图
Skip-Gram 或有时称为 Skip-Ngram 模型使用 CBOW 的头翻转架构,其余部分是相同的。下面是 skip-gram 的架构,其中我们尝试预测给定一个上下文单词的窗口大小内的所有单词:

GloVe:单词表示的全局向量
GloVe 是基于共现矩阵计数训练的单词嵌入模型。它通过最小化最小二乘误差来使用语料库统计量,以获得词向量空间。
共生矩阵
给定具有 V 个单词的语料库,我们的同现矩阵 X 的大小将为 VxV,其中 X 中的每个单词 i 是语料库中的唯一单词,并且每个单词 j 表示在单词 i 的窗口大小中出现的次数。给定这句话“狗追着人跑”和大小为 1 的窗口,我们得到下面的矩阵:

Notice how the matrix is symmetric
让我们从这个简单的公式开始:

其中P_ij是指单词 j 出现在单词 i 的上下文中的概率。公式表示这个概率,其中X_ij是在 i 的上下文中出现的次数 j ,而X_i是在 i 的上下文中出现的总字数。
此外,我们需要一个函数 F 来获取单词 i,k,j (其中 k 是上下文向量的索引)的输入嵌入,并计算它们的输出嵌入(因此表示为w和w~)。GloVe 的主要目标是使用简单的算术运算构建有意义的嵌入,这使得 F 的输入成为矢量 i 和 j: 之间的差

尽管如此,我们在之前的公式中仍然有一个简单的问题,那就是公式的左边是一个矢量,而右边只是一个标量。为了从数学上解决这个问题,我们使用(w_i, w_j)和(w_k)的转置之间的点积得到如下结果:

虽然在我们的共现矩阵中上下文单词和标准单词之间的区别是任意的,但是我们可以用它们的比率替换公式中的概率:

求解方程得到:

还有一个问题,T4 的函数是什么?让我们称之为exp()函数。然后我们求解:

将log(X_i)移至左侧:

为了给我们的等式增加一个偏差,我们用log(X_i)来代替,得到:

最后,手套效率依赖于最小化作为其损失函数的线性回归函数。
资源:
关于文本矢量化
将文本转换成数字的魔力

Image by Artem Maltsev — Unsplash
这篇文章将带你了解文本矢量化的基础知识,即将文本转换成矢量(数字列表)。在本帖中,我们将展示单词包(BOW)及其风格:频率向量、一种热门编码(OHE)和术语频率/逆文档频率(TF/IDF)。
为什么要文本矢量化?
用数字表示文本有很多好处,主要是:
- 计算机不理解文本以及单词和句子之间的关系,所以你需要一种用数字来表示这些单词的方法,这是计算机能够理解的。
- 这种向量可以用在许多应用中,例如问题回答系统、推荐系统、情感分析、文本分类,并且它还使得搜索、返回同义词等更容易。
包话(鞠躬)
BOW 是一种解析文档特征的技术。特征的含义是你可以用来做决定的特征和属性(买房子时,你会寻找一些特征,比如有多少个房间和它的位置)。文本的特征是语料库中有多少独特的词以及每个词的出现次数等。BOW 是一种特征提取技术,其输出是表示语料库中每个文档的向量空间。这个向量的长度(维度)对应于语料库中唯一单词的数量(没有重复,每个单词只出现一次)。BOW 模型有不同的风格,每个都扩展或修改了基本 BOW。接下来将讨论三个不同的向量:频率向量(计数向量)、一个热编码和术语频率/逆文档频率。
频率矢量
这是最简单的编码技术,但在某些用例中仍然有效。简单地说,我们用每个单词在文档中出现的次数来填充文档向量。例如,假设我们的语料库有两个文档。第一个文档包含“爱丽丝喜欢意大利面”,第二个文档包含“爱丽丝喜欢鱼。爱丽丝和鲍勃是朋友。为了表示计数,我们可以使用表格或 JavaScript 对象符号(JSON ),如下所示:
Table representation:+-------+-------+-------+-------+------+-----+-----+-----+---------+
| | Alice | loves | pasta | fish | and | Bob | are | friends |
+-------+-------+-------+-------+------+-----+-----+-----+---------+
| doc1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
+-------+-------+-------+-------+------+-----+-----+-----+---------+
| doc2 | 2 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
+-------+-------+-------+-------+------+-----+-----+-----+---------+JSON representation:doc1: {"Alice":1, "loves":1, "pasta":1}
doc2: {"Alice":2, "loves":1, "fish":1, "and":1, "Bob":1, "are":1, "friends":1}You can combine them: {"Alice":3, "loves":2, "pasta":1, "fish":1, "and":1, "Bob":1, "are":1, "friends":1}
如你所见,我们的语料库中有 8 个独特的单词。因此,我们的向量大小为 8。为了表示文档 1,我们只需取表中的第一行[1,1,1,0,0,0,0]。这个向量有助于比较文档。虽然这种技术在一些用例中是有帮助的,但是它具有一些限制,例如:不保持文档结构(不保持单词的顺序,而是仅仅计数),并且它还具有稀疏性问题(向量中的大多数值都是零,这增加了时间复杂度并且增加了模型的偏差,以及停止词(例如‘and’,‘or’,‘is’,‘the’等)。)出现的次数比这句话多很多倍。因此,我们使用一些技术,如词干化和词汇化。我们还删除了停用词和在整个语料库中只出现过几次的罕见词。
一个热编码
正如在频率向量中所讨论的,频繁出现的标记比较少出现的标记具有更大的幅度。因此,OHE 向量提供了一个布尔向量作为这个问题的解决方案,我们只用 1 和 0 填充向量。如果单词出现在文档中,我们放置 1(1 而不是计数),否则放置 0。文档 2 可以表示为[1,1,0,1,1,1,1,1,1]。
一种热编码也可以用来表示单词。1 代表我们想要表示的单词,0 代表其余的单词。单词“Alice”可以表示为[1,0,0,0,0,0,0,0],或者我们也可以添加计数,因此“Alice”可以表示为[3,0,0,0,0,0,0,0](将在本博客的第 2 部分详细讨论这一点)。
词频/逆文档频
到目前为止,我们一直将每个文档视为一个独立的实体,而不考虑语料库的上下文。TF/IDF 是一种常见的技术,用于根据语料库上下文对文档中的标记频率进行归一化。TF/ID 代表两件事:
1。术语频率 tf(t,d): 术语(t)在文档(d)中出现的频率。如果我们用*f(t, d)*来表示原始计数,那么最简单的 tf 方案就是*tf(t, d) = f(t, d)* (下面讨论的其他技术),让我们用*len(d)*来表示文档 d 中出现的总字数。例如,为了排列与查询“蓝天”最相关的文档,我们计算每个单词在每个文档中出现的次数。然而,由于每个文档的大小不同,所以比较一个单词在 10 个单词的文档和 1M 单词的文档中出现的次数是不公平的。因此,我们缩放 tf 以防止长文档的偏差,如下 :
***tf(t, d) = f(t, d) / len(d)***
tf 调整和减少文档中最大重复字数计数的其他方法:
- 布尔频率:如果 t 出现在 d 中,则为
*tf(t, d) = 1*,否则为 0 - 根据文件长度调整的词频:
*tf(t, d) = f(t, d)/len(d)* - 对数标度频率:
*tf(t, d) = log( 1 + f(t, d))* - 增强频率:
*tf(t, d) = 1 * f(t, d) / m*,其中 m 是在 d 中出现次数最多的单词
2)逆文档频率:衡量一个术语的重要程度。IDF 减少出现在不同文档中的常用词的值。在我们前面的例子“蓝天”中,单词“the”是一个常用词,因此术语“频率”倾向于错误地强调具有较少值的重复单词的文档,例如“the”。作为一个解决方案,我们计算了文档总数 (D) 除以 n 的 log() ,n 是带有 t 的文档出现在:
***idf(t, D) = log(D / n)***
最后,TF/IDF 可以计算为:
**tf-idf(t, d, D) = t(t, d) . idf(t, D)**
最后,我们只是在向量中添加 TF-IDF 分数,而不是频率计数或 OHE。
资源:
感知器网络背后的魔力
神经网络系列
神经网络系列—第 1 章,第 1 部分

序言注释
这个故事是我正在创作的关于神经网络系列的一部分。这一章致力于一种非常简单的神经网络,它的创建归功于 Frank Rosenblatt 在五六十年代的研究。我要谈谈感知器。
感知神经元
感知机是我在上一篇文章中提到的麦卡洛克和皮茨神经元的增强版。类似于麦卡洛克和皮茨模型,它是使用阈值函数作为激活函数的单个神经元,以及将几个输入连接到神经元的具有不同强度的一组连接。然而,Rosenblatt 介绍的主要突破是提出了一种神经网络可以自己学习最佳权重值的方法。这些权重现在可以是数字的,并由学习算法确定,而不是手工制作的,并限于布尔方式(正/负)。优化这些权重值的方法是使用一种叫做监督学习的学习策略。
监督学习是一种学习类型,它意味着在学习过程中存在一个监督人/教师来指导模型。在实践中,这意味着向网络提供几个示例及其正确答案,以提供一些可以改进的指导。然后,网络根据错误的答案调整其权重,以便在未来的迭代中,网络可以增加正确预测的示例数量。
感知器是为特定类型的机器学习问题而设计的:二元分类问题。分类问题是指我们的一组可能答案是有限的,并且仅限于一组类别/类(例如,检测电子邮件是否是垃圾邮件)。在我们的感知器案例中,它之所以只解决二元分类问题,是因为它的激活函数的性质。我在上一篇文章中提到,一个神经网络的输出 y 就是激活函数 f(z) 的输出。假设感知器使用阈值函数作为激活,并且该函数具有两个可能的输出, 0 或 1 ,则输出将被调节为仅区分两个不同的类别。你可以把这想象成一个神经元试图决定关灯还是开灯。

Just a cat acting like a perceptron neuron
构建感知器网络
让我们增加情趣。让我们的网络架构更复杂一点的可能方法是放置几个感知器,并确保所有输入都连接到我们放置的每个感知器。图 1 描绘了我刚才描述的内容。在机器学习术语中,人们将这组神经元视为全连接层或密集层,因为每一个输入都与每一个神经元有连接。神经网络可以有几个层次,这个概念将在我的下一篇文章中详细探讨,现在让它保持简单。

Figure 1: Architecture of a neural network with multiple perceptrons
在图 1 中有 3 个输入,每一个都连接到 5 个不同的神经元。绿色方块代表阈值激活函数的曲线。

由于从每一个输入到每一个神经元都有一个连接,可以说这些神经元是相互独立的:它们输出的计算不依赖于其他神经元。它取决于输入(对于每个神经元来说自然是相同的)、它们的权重(每个神经元都有自己的集合)以及它们的激活函数(每个神经元都有自己的)。这迫使我们重新定义在第 0 章中完成的权重向量定义。
从现在开始,每个连接将被标识为 w ( i,j) ,其中 i 标识连接来自的输入,而 j 是连接去往的神经元。形式表示如下:假设一个神经网络有 m 个输入和 n 个神经元。每个连接由 w ( i,j) 表示,其中 0 ≦ i < m 和 0≦jn,依次一起构成权重矩阵 W

这个矩阵描述了从感知器层到所有神经元的所有输入之间的联系。对于图 1 中描述的示例,我们有 m =3,因为这是输入的数量,有 n =5,因为这是神经元的数量,这意味着矩阵 W 将有 3 行和 5 列。
训练感知器网络
罗森布拉特提出的感知器网络的训练过程非常简单。它包括向网络展示一组它应该学习的例子。每个示例都有一个预期的输出和一组与之相关的度量/特征,这些被称为特性。每个示例的特征通过网络的输入节点输入到网络中,以便可以计算预测的输出。然后,根据预期输出( t )和预测输出( y )之间的任何偏差来调整权重。这个过程是迭代的,因为相同的例子被多次显示给网络。但是我们如何改变这些权重呢?
我们希望权重以这样的方式改变,即当在下一次迭代中向网络显示相同的示例时,它们允许网络的预测更接近实际结果。其背后的逻辑是,如果一个神经元触发,但它不应该触发( y=1 和 t=0 ),则减少权重;如果一个神经元没有触发,但它应该触发( y=0 和 t=1 ),则增加权重。从形式上来说,我们希望在当前权重 w(i,j) 上添加一个 deltaδw(I,j) ,并创建一个新的权重来替换现有的权重。

所以下一个问题是这个 delta 应该是多少?更新公式依赖于 3 个因素:
- 预期和预测输出之间的差异
我们可以使用-【y-t】来模拟权重更新的预期行为。如果神经元应该触发,我们将得到δw(I,j)=-(0–1)= 1(权重增加),而如果神经元不应该触发,我们将得到δw(I,j)=-(1–0)=-1(权重减少); - 输入符号
如果输入符号为负,则上述用于更新权重的逻辑被反转。想象一下,在向具有单个正权重 w(i,j) 的感知器显示负输入后,一个神经元应该已经触发,但它没有触发( t=1 和 y=0 )。利用上述逻辑δw(I,j)=1 ,,这意味着我们的权重将变得更正,在 x 和 w 之间的乘法变得更负,并且在激活函数之后的结果将仍然是 0,但是甚至更远离阈值点。为了说明这一点,我们将输入作为公式的一部分,将其乘以: -(y-t) × x - 学习率
这是训练过程中最重要的参数之一,因为它通过定义多少误差应该用于权重更新来定义网络学习其权重的速度。它通常是一个很小的数(比如说在 0.1 和 0.4 之间),用一个来表示。
鉴于这三个因素,这是如何训练感知器的最终公式:

其中 w ( i,j) 是将输入 i 连接到神经元 j , y(j) 标识感知器的输出,t (j) 标识感知器的预期结果,x (i) 标识输入,
偏见角色
我们之前已经看到,感知器神经元的输出是输入( x )和受阈值激活函数影响的权重( w )之间的点积。但是如果输入是 0 会发生什么呢?让我们想象一个只有单一输入的神经元。我们知道我们的产量 y 由 y=f(x₀ × w₀) 决定。如果输入是 x₀=0 ,那么 y=f(0)=1。
在这种情况下,由于零积特性,无论权重值如何,神经元的输出都是相同的。这意味着没有学习发生,因为在学习过程中改变了多少权重值,神经元仍将输出相同的结果。解决这个问题的方法是增加一个连接到神经元的额外节点,称为偏置节点,以使学习成为可能。修改后的感知器架构如图 2 所示。

Figure 2: Architecture of a single neuron with bias
考虑图 2 中描述的例子,得到输出 y 的公式将是y =**f(x₀×w₀﹢x₁×w₁﹢x₂×w₂+b⊇)。
优势和局限性
鉴于感知器的简单性,它是一个强大的问题解决器。如果一个问题有一个线性可分的解,那么就证明了感知器总能收敛到一个最优解。
我的最后一句话提出了两点:
- **‘线性可分解’是什么意思?
想象一个数据集,它有两个类(圆和十字)和两个特征,可以作为感知器的输入。该网络的目标是根据这两个特征来猜测某物是十字还是圆。可视化数据集的一种方法是绘制数据集的二维图,其中 y 轴是第一个输入,x 轴是第二个输入。如果有一种方法可以画一条直线,使得圆在直线的一边,而十字在直线的另一边,那么这个问题就可以说是线性可分的。对于具有更多要素/输入的问题,逻辑仍然适用,尽管对于 3 个要素,分类的分界线不再是一条线,而是一个平面。超过 3 个特征的边界称为超平面。 - 我们怎么知道我们实际上能得到一个最优解?
在这种情况下,最佳解决方案是能够通过感知器训练过程创建分隔两类的边界的解决方案。感知器收敛定理证明表明,当网络没有得到正确的示例时,其权重将以这样的方式更新,即分类器边界变得更接近平行于分隔两个类的假设边界。欲了解更多数学术语的详细信息,请点击链接。
然而,感知器的问题是,许多现实世界的问题不是线性可分的,因此很可能使用一层感知器将不是您的问题的最佳解决方案,因为它将无法找到分隔您的类的最佳边界。图 4 通过所谓的异或问题说明了这种限制。

Figure 4: XOR problem and the linear separability problem illustrated
在上图中,有一个逻辑 OR 函数和 XOR 函数的图形表示(XOR 代表“异或”)。OR 函数是基于两个输入的函数,如果任何一个输入为 1 ,则返回 1 (否则结果为 0 ),而 XOR 函数在只有一个输入为 1 时输出 1 。
如果我们使用具有两个输入的感知器来教授这些函数,我们可以在图 4(或函数)的最左边的图中看到,有一条线将十字与圆分开,而在最右边的图(XOR 函数)中,分开两个类的唯一方法是使用非线性边界。这意味着单个感知器可以学习 OR 函数,但它不能学习 XOR 函数。
在这篇文章中,我解释了什么是感知器,它解决什么样的问题,如何通过分类来训练它学习模式,以及它的局限性。然而,现在需要深入研究代码并在实践中实现这一点,因此在我的下一篇文章中,我将向您展示如何创建一个感知器,训练它并使用它。敬请期待!
感谢阅读!你喜欢这篇文章吗?非常感谢你的反馈,🗣。请随时在 Twitter 或 LinkedIn 上联系我,或者如果你对下一章的最新消息感兴趣,就在 Medium 上关注我😀。
一些相关阅读:
- 感知器是什么鬼?由萨加尔·夏尔马;
- 简单感知器训练算法:由 Nikhil Chigali 讲解;
- 真实网络中的感知机作者托马斯·康茨;
- 感知器算法通过Anubhav Shrimal;
- 神经网络中的异或问题作者Jayesh Bapu Ahire;
- 感知器、逻辑功能和 XOR 问题作者Francesco Cicala;
- 感知器学习算法:对其工作原理的图形化解释作者阿克谢·钱德拉·拉甘杜拉
整理的魔力

A World of Chaotic Data
我们如何处理数据,使其可读、易于理解、可用于发现特征之间可能的相关性,并基于清理后的数据进行预测?无论数据的用途是什么,都需要在有效使用之前对其进行清理和组织。我们今天要用的数据集是足球数据集。(我最喜欢的运动!)随着比赛期间电视上抛出如此多的体育统计数据,了解这些统计数据的来源是一个很好的话题。

你有没有想过体育赛事的解说员是如何在比赛过程中得出运动员的具体数据的?是的,显而易见的答案是有人在幕后向他们提供信息。但是,那个人从哪里获得信息呢?人们不会在体育赛事期间坐在那里手动查看统计数据。如果必须手动查找相关的事件和数字,很少有人会在正确的情况下找到正确的统计数据。
找到数字也是不够的。需要多种统计数据来与过去的比赛进行比较,以了解运动员是否打破了世界纪录或甚至打破了他们自己的纪录。像现在这样的情况发生过多少次?例如,在规定时间内,下雨的时候,有多少次罚球入网?这是一个相当模糊的统计数据,但信不信由你,评论家们已经提出了比这个例子更疯狂的统计数据。
那么,所有这些统计数据是从哪里来的呢?虽然我们知道是与数据打交道的人,但我指的是一个更具体的问题。处理数据的人是如何得到这些统计数据并提供给评论员的。这就是我们将在这里学到的东西。
有多种组织数据的方法。今天我们将使用 Python 中的一个名为 Pandas 的库。不是我们在电视或变焦镜头中看到的可爱、毛茸茸、黑白相间的熊。Pandas 是一个 Python 包,设计用于数据科学。
我们需要做的第一件事是导入熊猫库。当我们导入它时,我们将它加载到内存中,以便我们在这个项目中工作时可以访问它。当我们导入它时,我们使用 pd 来缩短它。像其他编程语言一样,Python 也有编码约定。

Simply import pandas as pd and we can use it further down in the code.
一旦库被导入,我们不需要再次导入它。我们必须向警方报告。在 Python 中命名变量时,约定是全部使用小写字母。
以下代码行将数据集的值赋给变量“soccer”。为了加载数据集,我们使用 pd 和函数“read_csv”来引用我们的 pandas 库。CSV 代表什么?它代表“逗号分隔值”, url 或原始数据集用引号括起来。

The raw dataset assigned to the variable soccer. The command below it will give us the first five rows of the dataset.

soccer.head() gives us the first 5 rows of the dataframe. That can give us a great amount of information. If we want to see more rows at one time, we can just put a number inside the parentheses.
请注意,数据帧的索引从零开始。我们也可以通过使用 tail 而不是 head 来查看数据帧的最后 5 行。 足球.尾巴()。在挑选这些数据之前,我还想知道一件事。我想知道这里总共有多少行和列。下面是我们如何做到这一点。

This tells us there are 16,781 rows and 19 columns
你认为我们接下来应该看什么?我们想确保数据是可读和可用的。现在,我看到很多写着南的价值观。我们需要找出这些值中有多少是存在的,以便能够决定如何处理它们。这可以通过下面的代码来完成。

In every cell there is a True or False. True means there is a null value. False means there is data in that cell.
该数据框包含许多行,因此逐个像元地查看会非常繁琐和耗时。有一种更有效的方法来确定每一列中 null 值的数量。下面是我们如何做到这一点。

Clumped together but still not organized

总共有 16,781 行。我们看到相当多的列中有大量的空值。与总行数相比,这个数字很大,这可能使得这些数据用处不大。我们可以去掉那些柱子。有几种方法可以做到这一点。最安全的方法是创建一个新的数据帧。它让我们的足球数据框架保持原样,这样我们可以在需要时再次引用它。以下是如何仅使用对我们的工作更有用的列来制作副本。

Wow! That looks much easier to work with doesn’t it? We still have Null Values here though and we need to address those. Let’s see where they are again. How do we find those? Remember, we have a new variable for the dataframe we’re using.

Much easier to work with!

我们拥有的行数没有改变。当我们选择不使用它们时,只有列的数量减少了。与总行数相比,这些空值很小。在这里,我们需要决定,我们只是摆脱这些行吗?我们用不同的值填充它们吗?如果是的话,我们选择什么样的价值?
我们看到我们要处理的第一列是日期。你认为日期重要吗?有可能。我们不确定我们到底要找什么。我之前提到的是评论员在比赛中使用统计数据。如果我们把数据用于这个目的,日期就非常重要。但是,16,781 行中的 282 行是最少的。和所有的空值一样,我们可以去掉它们,或者把它们改成平均值、众数、中位数。该决定因人而异,取决于您正在处理的数据。让我们快速看一下这个数据中的最小值、最大值、平均值、众数、中位数和四分位数。当我们这样做时,我们将只获得那些包含数字列的值。接下来我们将讨论分类列。

这里季节的年份没有空值。主客场进球数有相同数量的空值。用平均值替换这些空值不会对这些列的数据产生太大影响,所以这是一个很好的值。对于主场进球,平均值是 1.880657。对于取得的客场进球,平均值为 1.230657。我们可以在 pandas 中使用一个名为。replace()将每列中的所有空值替换为它们的平均值。

We also know the mean of vgoal. We can do the exact same thing to get rid of the null values in that column. If we check for null values again right after we do this, you’ll see they are gone.

我们现在只剩下 Date、visitor、ft 和 tie 列需要处理。记得原始数据帧是 16781 行。在 16,000 多个值中,tie 列中只有三个空值,删除这三行可能不会对我们的数据产生太大影响。因此,我们将删除这三行。我们该拿其他人怎么办?日期是游戏的确切数据。我们有另一个名为“季节”的列,没有空值。你认为日期重要吗?这也取决于我们想从这个数据中了解什么。访客栏代表与主队比赛的客队。由于这是一个字符串,而不是数字,我们不能像用数字那样取平均值。
在这一盘的 16,781 场比赛中,客队有 163 个值缺失。这还不到游戏总数的 1%。我们也可以删除这些行。你认为这会对我们的总体数据和结论产生影响吗?我们可以用模式(访问者栏中最常玩的球队)填充空值。最终,决定权在数据科学家。哪个是更好的选择?我们应该删除空值吗?我们应该用其他信息填充它们吗?如果我们填满了它们,我们用什么来填满它们呢?这些都是你应该问自己的好问题。在这种情况下,我将用访问者列的模式填充它们。
你不需要先找到模式。通过使用下面的代码,可以用模式替换空值。我们现在已经将 visitor 列重新分配给了它自己,但是用模式填充了空值。

我们只需要考虑日期和最终分数。最终得分有 283 个空值。我们可以用 0–0 分数(分数的模式)替换这些行,删除这些行,或者选择不同的值来填充它们。对于最终得分(FT),我将使用最终得分的模式再次填充它们。
让我们同时处理日期。我们在日期中有 282 个空值,但是在季节中从来没有空值。这意味着我们知道比赛发生在哪个赛季,只是有一些具体的日期,比赛发生在我们不知道的地方。具体日期重要吗?这可能取决于我们想知道什么。我已经展示了必须用不同的值填充空值。在这里,我将删除日期列,因为我对至少拥有游戏发生的赛季感到满意。
在填写最终分数并删除日期后,我们应该没有空值了!

Yay! No more null values! dropping the column just used ‘drop’ after the data frame name. Specified what column to drop, and the specified the axis. axis=1 is for columns. axis=0 is for rows.
正是在这一点上,我们可以使用数据来找出额外的信息。我可能会问的一个问题是,“赢得比赛和在你的主场比赛之间有关联吗?”根据赛季的不同,比赛输赢有什么趋势吗?哪个队赢了最多的比赛?从这一小组数据中可以找到很多问题的答案。想象一下,我们可以从不同来源的大量数据中发现什么。我们可以回答曾经被认为不可能得到答案的问题。电脑如此强大,让我们有能力回答各种问题。它还赋予我们训练计算机完成特定任务的能力。未来的话题。
这是如何清理小型数据集的一个非常基本的指南。这是一个开始的好地方。如果我激发了你的兴趣,你可以访问网上的大量资料来了解更多。而且,如果你发现自己彻底着迷了,Lambda School 有一个数据科学/机器学习项目,它会让你大吃一惊!
使用机器学习识别金融欺诈的主要问题(以及如何解决)
处理不平衡数据的策略

支付处理器每天处理的金融交易数量惊人,而且还在不断增加:2012 年大约每天 7000 万笔信用卡交易,2017 年损失数十亿美元。仅仅由于交易量,确定交易是合法的还是欺诈是计算机系统的专有工作。传统的机器学习方法是建立一个分类器,帮助循环中的人减少必须查看的交易数量。

The goal of the machine learning classifier is to reduce the number of transactions that a human has to investigate.
机器学习分类器面临的挑战是欺诈交易的百分比在 1-2%的数量级,这意味着分类器必须考虑训练数据中的严重不平衡。
这是一个非常棒的视频,展示了机器学习工程师在系统检测欺诈交易时必须经历的挑战:
即使是金融欺诈的合成数据集也是有偏差的,例如,在预测金融支付服务欺诈的 Kaggle 数据集上的不平衡:

该数据集包含超过 600 万个交易和 11 个特征:

数据不平衡问题并不仅限于金融领域的机器学习应用,还包括一些应用,如检测罕见疾病患者的图像、从入境口岸的 X 射线图像中对受限对象进行图像分类、石油泄漏的图像识别等。



Photos courtesy of Unsplash
在本文中,我将描述可以用来缓解数据不平衡的技术,目标是用平衡的数据集训练二元分类器。
为了便于说明,我们将创建一个二维的合成数据集,尽管典型的金融数据集通常有更多的特征,例如,之前的 Kaggle 数据集有 28 个特征。
一般来说,不平衡数据集看起来是这样的:

Dataset depicting a 99:1 class imbalance ratio. There are 1,000 samples on the yellow class (majority), and 10 samples on the orange class (minority).
有两种缓解不平衡的一般策略:减少多数类(欠采样),或从少数类生成合成数据(过采样)。我们将讨论这两者。
策略一。欠采样多数类
在这个策略中,思想是减少多数类的样本数量。
1.1 随机欠采样
第一种策略是忽略来自多数类的数据样本。以下动画忽略了来自多数类的随机样本,直到达到平衡数据集。

Random undersampling
1.2 聚类欠采样
另一个策略是将多数样本减少到 k 个样本,这对应于多数类的 k 个质心。这些质心由 k 均值聚类 无监督算法计算。质心的数量通常被设置为少数类中样本的数量,以便整个数据集是平衡的。

Clustering undersampling
1.3 Tomek 链接
对多数类进行欠采样的另一个策略是移除所谓的“ Tomek 链接”。这些点是离少数类最近的邻居(离对面类最近)。通过移除这些点,通过从多数类的点中“清除”其周围空间,给予少数类样本更多的权重。

Tomek links undersampling
策略二。对少数民族阶层进行过度采样
在这个策略中,想法是增加少数类的样本数量。
2.1 通过少数类的随机复制进行过采样
在第一个策略中,也是最容易实现的,从少数类中选择随机样本并复制它们。尽管简单明了,但这可能会导致过度拟合。

Random oversampling
2.2 合成少数过采样(SMOTE)
SMOTE 算法背后的思想是沿着来自少数类的两个样本之间的向量创建“合成”数据点,这些样本是由其最近的邻居(即最近的)选择的。新点沿该向量以随机长度设置。有关简化数据集的示例,请参见以下动画:

SMOTE interpolates over nearest neighbors.
以下动画应用于我们之前的示例进行说明:

Synthetic Minority Over-sampling (SMOTE) example.
2.3 自适应合成(ADASYN)
与 SMOTE 类似, ADASYN 算法也生成新的合成点,但通过对少数样本应用不同的权重来补偿偏斜分布。在 SMOTE 算法中,为每个少数数据示例生成相同数量的合成样本。

Adaptive Synthetic (ADASYN)
3.过采样和欠采样(SMOTE + Tomek 链接)
最后,过采样(例如通过 SMOTE)和欠采样(例如通过 Tomek 链接)的结合也许是处理不平衡数据的理想途径。过采样算法创建新的实例来匹配平衡,而欠采样过程从多数类中移除点,否则这些点会减去少数类的珍贵样本的权重。这种策略 a 的一个例子可以在下面的动画中看到:

SMOTE + Tomek links
摘要
策略的选择将取决于问题,并最终由业务决定支持的东西来指导:精度或召回。
幸运的是,通过 Python 库不平衡学习,可以直接测试这些技术的性能。
延伸阅读:
源代码:
在这个存储库中https://github . com/gchave z2/code _ machine _ learning _ algorithms您可以找到用于生成本文实验的 Python 代码,以 Jupyter 笔记本的形式:
https://github.com/gchavez2/code_machine_learning_algorithms
我是劳伦斯伯克利国家实验室的博士后,在那里从事机器学习和高性能计算的交叉研究。
如果你觉得这篇文章很有趣,请随意打个招呼,LinkedIn ,我总是很乐意与该领域的其他专业人士联系。
No Spam, ever.
敏捷(数据)科学
就工作方式而言,工业界与学术界

Photo by Lucas Vasques on Unsplash
这篇文章是关于一个(数据)科学家通常伴随的两件事:一个是科学思维方式,这是非常有价值的,另一个是“学术工作风格”,这可能是一个主要的障碍。
科学思维
基础良好的科学教育为数据科学家提供了重要的特质:
- 分析思维,发现深藏在数据中的洞察力
- 健康的怀疑态度和严格的假设检验,以提供高质量的结果
- 理解统计不确定性或相关性和因果关系之间的差异等概念,从而防止客户或高管得出错误的结论
因此,数据科学家的技能对数字业务非常有用。
“学术工作风格”
在学术界,一篇典型的博士论文是这样的:
- 挑选一个定义狭窄的问题
- 专注它好几年
- 找到人类可能的最佳解决方案
- 最终出版,但只有在广泛的审查
数据科学领域的大部分新员工都经历过这一过程,这不可避免地塑造了他们的职业行为。类似的事情也发生在“一代”身上。
然而,“学术工作方式”往往与当今数字经济的要求相冲突。尤其是在敏捷环境中,不同的行为是成功的必要条件:
- 将产品作为一个整体来关心,而不仅仅是分配给你的微小的造型部分
- 要知道“足够好”通常就足够了
- 将工作原型置于最终模型性能之前
- 尽早发布并经常实地测试您的解决方案——尝试、失败、学习、重复
当然,这并不意味着不要仔细检查你的结果,或者盲目地发布。此外,快节奏的数字产品开发和在大公司的基础研究部门工作是有区别的。
就我个人而言,从学术界过渡到工业界后,我不得不按照上面描述的方式调整我的工作方式。这不是特别痛苦,但是,如果我有意识地意识到这种差异,我会学得更快。
你错过什么了吗?完全不同意?欢迎在评论中分享你的观点。
人工智能的主要问题是
人工智能世界末日的场景被忽视的太快了

Image by Gerd Altmann from Pixabay
今天我看到了 Rafay Ghaudhary 的帖子人工智能:不仅仅是机器学习。虽然我很欣赏 Rafay 努力展示人工智能(AI)不仅仅是“只是”机器学习,但他的帖子包含了另一个让我彻底担忧的想法。这个想法是这样的:认为计算机和机器人将接管世界是不理智的。他甚至声称永远不会发生。关键词:从不。这是一个令人难以置信的强有力的声明(在帖子的任何地方都没有得到支持),它似乎反映了一个更大的情绪:人工智能是一种积极的力量,对负面未来场景的担忧是恐惧的散播。由于我看到太多带有这种情绪的陈述,我决定写这篇文章来解释高级人工智能的主要问题以及为什么我们绝对不应该忽视它。
"智能衡量一个代理人在广泛的环境中实现目标的能力."
为了这篇文章的目的,我将按照莱格和赫特的定义在这里“智力衡量一个代理人在广泛的环境中实现目标的能力。”人工智能或 AI 就是任何非生物的智能。人们可以认为世界冠军打败了国际象棋计算机深蓝,但最近的自动驾驶汽车可能是人工智能更有趣的例子。这个想法是人工智能在过去的几年里已经取得了很大的进步。根据我们对智力的定义,进步意味着在广泛的环境中实现目标的更好的能力。这将意味着要么人工智能在同一环境中实现目标的能力已经增长,要么人工智能现在可以在更多的环境中实现目标。两者都是真的:例如,AI 现在的棋艺甚至比 1997 年的深蓝还要好;此外,由于一种名为深度学习的技术,AlphaZero 是一个可以玩棋盘游戏国际象棋、松木和围棋的人工智能程序。鉴于过去的进展,预计 AI 将在未来取得更多进展;许多专家预计,在某个时候,我们将拥有人工通用智能(AGI):在所有智能领域大致与人类一样智能的人工智能。
你的 AGI 不知道为了最大化你的利润而杀死你的竞争对手是不允许的。
现在,如果人工智能有那么聪明,会发生什么?这显然很难预测。然而,我们可以对这个场景进行一些有根据的猜测。我和许多其他人预见的主要问题是,尽管 AGI 从定义上来说和我们一样聪明,但它不会默认和我们有共同的道德观。让我举一个例子来说明这一点。想象你经营一家公司。在某些时候,你的公司有足够的资金和其他资源来创造世界上第一个 AGI。惊叹于你的创造,你给了 AGI 第一个目标:最大化你公司的利润。毕竟,你希望你的投资能让你赚到一些钱!正如所料,在接下来的几个月里,你会看到你的利润增加。然而,你震惊地得知,为了实现这一目标,你的 AGI 雇佣了刺客来杀害你的竞争对手。你看,你的 AGI 非常了解什么样的行动会导致它想要的结果;然而,它和你的道德观不同。你的 AGI 不知道为了最大化你的利润而杀死你的竞争对手是不允许的。它为什么以及如何知道这一点?我们人类知道(或者至少大多数人知道),我们知道当有人要求我们实现利润最大化时,那个人隐含的意思是不允许杀死竞争对手。但是我们对什么是允许的,什么是不允许的有着共同的理解;AGI 默认不会有这个。假设它会是拟人化。一个 AGI 可以有这种理解,但是我们必须这样编程。
“人工智能不恨你,也不爱你,但你是由原子组成的,它可以用这些原子做别的事情。”
所以 AGI 很可能不认同我们的道德观。事实上,默认情况下,不会。我先前暗示的主要问题来自哪里?它来自于一个 AGI 人可能有的基本驱动力和这种驱动力的副作用。你看,为了实现它的目标,AGI 可能会意识到拥有更多的智慧会有所帮助。起初,它可能通过重写自己的源代码来达到更高的智能水平。在达到下一个智能水平后,它可能会意识到甚至更多的智能是可取的(见种子 AI:有史以来最具破坏性的力量)。要拥有越来越多的智能,最终需要越来越多的计算能力。为了获得这一点,它可能会将越来越多的地球材料转化为它可以使用的计算材料,直到最终,整个地球和所有人类都被转化为一台大型计算机。在这种情况下,并不是 AGI 讨厌人类:只是我们是由原子组成的,它可以用原子为自己的目的构建计算物质。人工智能研究员埃利泽·尤德考斯基说得很好:“人工智能不恨你,也不爱你,但你是由原子组成的,它可以用它做别的事情。”
互联网的关闭开关在哪里?
但是,你可能会想,人类不会抵制 AGI 改造地球吗?嗯,我们可能会尝试,但是一个变得越来越聪明的 AGI 必然会变得比我们更聪明,因此,再一次,按照定义,非常善于达到它的目标。假设我们能够保护自己是危险的无知。如果你认为我们可以关掉 AGI,请再想想:互联网的开关在哪里?
默认情况下,你应该假设一个 ASI 可以说服你做任何它想让你做的事情。
你可能会担心的另一个问题是,AGI 将如何把地球变成计算材料。难道人类不应该从一开始就设计一个能够做到这一点的机器人身体吗?不一定。你看,AGI 可能足够聪明,可以说服人类首先给它更多现有的计算能力。最终,它可能会找到方法,说服人类建立工厂,生产能够将普通物质转化为计算物质的纳米机器人。记住:一旦 AGI 变得稍微聪明一点,它就比人聪明,根据定义,它是人工超级智能(ASI)。默认情况下,你应该假设一个 ASI 可以说服你做任何它想让你做的事情。因为从定义上来说,它比你聪明,它会欺骗你或者说服你去做它想让你做的事情。
简而言之,先进的人工智能将对人类产生重大影响。这种影响是积极的还是消极的取决于我们:如果我们做得对,它可以很容易地治愈我们的疾病,并发明各种新技术,让人类前所未有地繁荣。如果我们做错了,很容易导致我们的灭绝。
一个伟大的 Airbnb 度假屋的制作
可视化 Airbnb 房源和评论,帮助旅行者选择完美的度假屋。

Photo by Outsite Co on Unsplash
度假者正在离开传统的酒店,转而选择 Airbnbs 和类似的房屋租赁服务。这些平台为旅行者提供了一个舒适的住宿场所,价格只是酒店的一小部分。虽然比大多数酒店便宜,但由于不一致的体验,旅客仍然认为空中旅馆不太可靠[2]。Airbnbs 的这种不可靠性使得旅行者很难为他们的住宿选择正确的家和/或主人,这可能导致一些不幸的情况(你可以在这里阅读一些恐怖故事)。
为了解决这个问题,我创建了可视化仪表板,为客户提供更好、更直观的方式来探索某个地区的房源,并帮助他们在为未来的旅行筛选 Airbnbs 时做出明智的决定。
这些仪表板具有基于类别和用户情绪可视化客户评论的情绪树图,代表一个地区最有吸引力的社区的空间可视化,以及允许用户一次比较多个 Airbnb 房源的平行坐标显示。
Video demo of the visualizations
向下滚动以了解更多关于我构建这些可视化的过程。
设置焦点

Photo by Elena Taranenko on Unsplash
选择数据集进行探索
我在 Airbnb 内部使用了(http://insideairbnb.com/),这是一个公开的资源,提供与一个城市的 Airbnb 房源相关的各种数据集。我浏览了旧金山地区及其周边的 Airbnb 房源,以缩小我的项目范围。我用于分析的数据集( Listings_SF , Reviews_SF )提供了关于房源的主人、房间、顾客评论、价格、邻居和评级等重要属性的详细信息。
虽然我理解了项目的总体目标,但我仍然不明白数据的哪些属性是重要的,应该关注哪些属性,我可以对数据进行什么样的分析,以及我可以用什么不同的方式来可视化这些数据。为了寻找灵感和进一步拓展我的项目,我决定探索这一领域以前的研究。
进行背景调查
作为背景研究的一部分,我回顾了与我关注点相似的文献。
- 我首先探索了之前的工作,将 Airbnb 房源的各种属性关联起来并可视化。这帮助我理解了人们分析、可视化和关联 Airbnb 数据的不同方法。[3][4]
- 此外,我还研究了之前关于 Airbnb 超级主机的研究,即拥有持续高收视率和高销售额的主机。这帮助我列出了我想要关注的属性,因为它让我了解了获得超级主机地位的主要标准。[5][6]
- 由于我的项目很大一部分涉及 Airbnb 评论数据集的分析和可视化,我阅读了以前可视化客户评论、意见和反馈的研究。[7][8][9]
- 出于对 Airbnb 极其严格的审核政策的担忧,我还查看了关于 Airbnb 审核合法性的研究。这样做是为了理解 Airbnb 评论与其他来源的评论/反馈有何不同。这为我后来对这些评论的分析提供了信息。[10]
- 最后,我查看了与我的项目焦点密切相关的类似学生项目,以确保我的工作没有与之前学生主导的项目完全重叠。[11][12]
总之,文献综述对于缩小范围和为我的项目指明方向至关重要。
(你可以在这里查阅我的文献综述的详细内容。)
创建可视化效果
使用的工具:Tableau,Python (Pandas & Textblob 库),Numbers for Mac

Photo by Jason Coudriet on Unsplash
基于我从文献综述中获得的知识,我勾勒出了一些可视化效果,可以帮助人们更好地探索和筛选 Airbnb 房源。在勾勒出我的想法并收到教授和同行的反馈后,我专注于构建交互式可视化。
可视化客户评论
我受论文、*、Pulse:Mining Customer Opinions from Free Text(Michael Gamon、Anthony Aue、Simon Corston-Oliver 和 Eric Ringger (2005 )中使用情感树图的启发,我绘制了一张可视化 Airbnb 评论的情感树图。*
我想象它是一个仪表板,用户可以选择一个列表,并以树形图格式查看评论,根据客户谈论的主要主题进行情绪着色和标记。点击一个主要主题会导致与该主题相关的正面和负面评论。

Sentiment-Treemap Sketch
建立可视化
在这个过程的第一阶段,我从 Airbnb 的评论数据集中随机选择了 2 万条评论,并创建了一个标签云,以了解人们在 Airbnb 住宿期间最关心的是什么。

观察标签云帮助我将用户评论分为以下 4 类:

Location-related, room-related, host-related and value/price-related reviews
在对数据集进行分类后,我对评论进行了情感分析,并将评论标记为负面、中性或正面。
这个过程帮助我生成了一个更新的数据集,其中包含评论及其类别和情感价值。我将这些数据导入 Tableau,并用情感色彩创建了想要的树形图。

用户可以选择特定的列表,并观察该特定列表的情感树图以及所有相应的用户评论。点击一个主要主题会导致与该主题相关的正面/负面/中性评论。
**
对于关注和重视一个列表的一个方面多于另一个方面的客户来说,情感树图可以作为一个很好的工具。
显示旧金山最吸引人的街区
我想看看地理位置如何影响 Airbnb 房源的吸引力。我根据评论、价格和位置创建了一个空间可视化来表示旧金山最有吸引力的社区。因为我必须在 2d 地图上表示多个属性,所以我使用颜色阴影来表示一个区域的情绪(绿色到红色/浅绿色到深绿色),使用符号来表示平均价格水平,使用位置分数(来自列表数据集)来表示该区域的位置等级。

Spatial Visualization representing attractive locations: sketch
建立可视化
我使用 Tableau 创建了一个仪表板,它根据旧金山的邮政编码可视化一个地点的平均价格(作为标签)和吸引力(通过颜色阴影)。这伴随着表示 SF 中所有列表的可视化以及列表的平均用户评级(使用带有颜色阴影的圆圈)。

在第一个地图上选择一个位置,在第二个地图上显示该特定位置的列表。这提供了该区域不同列表的更清晰(放大)的图片以及它们的平均评分。用户可以根据他们的房间偏好(私人/共享/房子)和他们想要的预算筛选出列表。

这种空间可视化将有助于游客更好地探索一个地区,并选择理想的住宿地点。
允许用户比较多个 Airbnb 房源的可视化
Airbnb 的房源数据集为每个房源提供了 4 个重要指标的评级(满分 10 分):清洁度、位置、价值、主人沟通。我最初想用一个蜘蛛图来表示和比较多个列表的分数。

我很快意识到,如果比较 3 个以上的列表,蜘蛛图将变得混乱和难以探索。为了解决这个问题,我认为使用平行坐标比较 Airbnb 房源会很有趣。

Comparison using parallel coordinates
构建可视化
我在 Tableau 上创建了平行坐标显示,以 c 比较 Airbnb 列表,其中的坐标包括清洁度评级、位置评级、性价比评级和主机通信评级——所有这些都可以在列表数据集中找到(0-10 分)。

Parallel Coordinates display
我在上面显示的空间可视化仪表板中集成了这种可视化,以帮助轻松过滤列表并改进平行坐标显示的探索。利用这一点,用户可以选择一个特定的位置,并过滤平行坐标图,以显示和比较该位置的列表。

平行坐标显示将帮助游客基于列表的最重要属性来比较不同的列表
结论
我创建了可视化仪表盘,可以帮助旅行者更好地探索和筛选 Airbnb 房源。这些可视化可以很容易地集成到 Airbnb 当前的网络生态系统中,为用户提供更丰富、更直观的浏览体验。
该项目是在Niklas Elmqvist教授的指导下,在马里兰大学帕克学院完成的数据可视化(INST760)课程的一部分。
参考文献
- https://medium . com/Harvard-real-estate-review/a-new-era-of-lodding-airbnbs-impact-on-hotels-travelers-and-city-de 3 B1 C2 D5 ab 6
- https://listwithclever . com/real-estate-blog/Airbnb-vs-hotels-study/
- 使用 3 波段栅格表示法可视化布达佩斯 Airbnb 的空间性(加博尔·杜达斯、拉霍斯·波罗斯、塔马斯·科瓦尔奇克、巴拉兹·科瓦尔奇克,2017 年)】
- 对纽约市 Airbnb 的社会经济分析(杜达斯、维达、波罗斯(2017 年))
- 是什么让 Airbnb 主持人成为超级主持人?来自旧金山和湾区的经验证据(Gunter,U. (2018)
- 确定影响超级主机状态的因素:来自撒丁岛和西西里岛的证据(Giulia Contu,Claudio Conversano,Luca Frigau,Francesco Mola (2019))
- Pulse:从自由文本中挖掘客户意见(Michael Gamon、Anthony Aue、Simon Corston-Oliver 和 Eric Ringger (2005))
- 客户反馈数据的视觉意见分析(Oelke et。阿尔(2009 年)
- 关于酒店评论的观点挖掘和可视化的研究(bjorkelund,Burnett,nrvg(2012))
- 如果几乎所有 Airbnb 的评论都是正面的,这是否意味着它们毫无意义?(布里奇斯,j .,&巴斯克斯,C. (2016))
- 【http://www.columbia.edu/~sg3637/airbnb_final_analysis.html】T5T6
- https://medium . com/uda city/using-Airbnb-data-to-understand-the-owners-market-in-西雅图-4dfbfb0de5a3**
穿西装戴草帽的男人
向非技术观众揭开异常检测的神秘面纱

检测异常就是检测异常值。这看起来很简单,但并不总是如此。问题是,你如何定义一个离群值?
我们先想象一个穿西装的男人。这很正常。然后想象一个戴着草帽的男人,这也很正常。现在把这两张照片合成一张,想象同一个男人穿着西装,戴着草帽。既正式又随意?这似乎不正常。
在预测性维护等情况下,这是异常检测的常见情况。用数据科学家的话来说,有时不是单个特征说明异常,而是多个特征的组合。
我们不应该看这幅画的一部分,而应该退一步看它的整体。
有不同的方法来检测异常。最常见的方法是创建一个正常的情况简介,然后将其他所有情况归类为异常。在这里,我们将研究一种完全不同的模型,它从一些异常情况中学习— 隔离森林。单词“隔离”暗示我们可以通过距离的概念发现异常。直觉上,一个数据点越异常,它就越孤立于其他数据点。
在实际应用中,大多数数据集都有多个维度。例如,对于预测性维护,相关特征可以是机器的振动、声音等。为简化起见,我们在这里只考虑用几个蓝色圆圈表示的一维数据。人类可以很容易地观察到,最靠右的那颗是异常的。但是机器是如何找到它的呢?

让我们用针来举例说明。假设有人在上空飞行,随机扔出一根针,这根针最终会停在线上。且针有相等机会落在从最左边到最右边样本的任何位置。

如果指针落在 3 和 4 之间,它隔离 4。如果指针落在 1 和 2 之间,它隔离 1。如果针落在 2 和 3 之间,它不会分离任何样品,因此我们继续投掷更多的针,直到至少一个样品被分离。我们递归地重复该过程,直到分离出所有样本。
对于每个样本,我们计算在分离前使用的针数。这个数字就是我们所说的异常分数。由于着陆针的位置是均匀分布的,样品距离越远,越有可能被更快地分离,因此可能需要更少的针。基于来自现有数据集的异常分数,我们可以定义一个阈值,使得任何异常分数低于该阈值的未来数据将被分类为异常。
到实验结束时,我们会将所有样本分开,每个样本都有一个指定的异常分数。如下面的"树所示,那些具有较小异常分数的更接近树的根,因为它们在早期阶段被隔离。那些分数较大的离根更远,因为它们后来被隔离。因此,这样的树描述了所有样本的隔离状态,粗略地显示了特定样本与其他样本相比有多异常。

现在,在去“森林”之前,让我们停留片刻在机器学习的一个基本概念上——“T4 方差”。你可能遇到过偏差-方差权衡的概念。但是我们现在将跳过“偏差”。
在实践中使用这个简单的模型可能会有什么问题?我们观察不到的真实世界数据可能有不同的模式。换句话说,从样本数据得出的异常检测阈值可能不适用于群体数据。这就是当我们有一个高方差的问题时,或者正如我们经常说的,模型过度适应训练数据。
对此的一个解决方案是,我们可以使用多棵树,而不是只构建一棵树。这就是“森林”这个术语的由来。在针头实验中,我们会多次重复同样的过程。由于每个实验都有随机性,通过对不同模型的异常分数进行平均,我们可以得到一个更能捕捉群体异常的最终模型。

有了隔离森林和一个有一些异常的数据集,我们能够创建某些检测规则,允许我们谈论新的传感器值、新的金融交易,或者关于一个穿西装戴草帽的人。
德雷克的许多集群
使用机器学习和 Spotify 数据对德雷克歌曲进行分组

介绍
格雷汉姆是当今最大的音乐巨星之一。这位加拿大说唱歌手主宰了流行音乐排行榜和互联网文化。自从他广受好评的混音带问世以来的十年里,德雷克已经发行了 7 张个人专辑和 1 张联合混音带,他正在成为有史以来流量最大的艺术家。
在一个充满昙花一现的奇迹和不断变化的时尚的行业里,是什么让这位前青少年戏剧演员保持领先地位?答案是多功能。德雷克最大的优势在于,他可以无缝地从嘻哈虚张声势过渡到情绪化的民谣,在敏感性和可共鸣性之间达到完美的平衡。从英国尘垢到舞厅到雷鬼音乐,他已经证明没有他不能适应的声音。虽然许多人会争论他的方法的真实性,但它的成功是无可争议的。
为了进一步分析他的多才多艺和音乐发展,我开始使用机器学习来识别他音乐中不断变化的模式,并根据每首歌的指标创建集群(分组)。
数据来源
主要数据集通过 Spotify 的 Web API 获得,包含 Echo Nest 的音乐属性,定义如下:
- 声学:音轨是否声学的置信度测量
- 可舞性:一首歌的可舞性取决于音乐元素,包括速度、节奏稳定性、节拍强度和整体规律性
- 能量:强度和活动的感知度量。有助于该属性的特征包括动态范围、感知响度、音色、开始速率和一般熵
- 乐器性:预测一个音轨是否不包含人声。“Ooh”和“aah”声音被视为乐器,而 rap 或口语显然是“人声”。高于 0.5 的值表示乐器
- 响度:整个音轨平均的整体响度,以分贝(dB)为单位。用于比较轨道的相对响度
- 语速:音轨中口语词的出现。介于 0.33 和 0.66 之间的值描述可能包含音乐和语音的轨道,可以是分段的,也可以是分层的,包括说唱音乐。
(更多信息和示例, 请参考本文 )
额外的歌词数据是使用约翰·米勒利用流行歌词网站 Genius 的 web API 创建的 python 包在网上搜集的。
最终的数据集包括 Spotify 上的 162 首德雷克歌曲。这些不包括他出现在其他歌手歌曲中的歌曲。

Preview of the dataset
探索德雷克音乐背后的数据

The correlation heatmap shows a correlation score (color) between every data point
基于上面的关联热图,我们看到一个关联,其中歌曲随着时间的推移越来越受欢迎,越来越受欢迎。还有一个负相关,随着时间的推移,歌曲的长度(分钟)变得更短。这表明德雷克的音乐随着时间的推移变得越来越短,越来越有节奏,总的来说更适合广播。
接下来,我将深入研究这些属性,并考察这些数据点如何反映德雷克职业生涯后半期的风格变化。
1.2015 年后,一切都变了


Cat-plot (left) shows the danceability scores of each Drake’s songs, and the box-plot (right) shows the length of each song over time
上面的图表显示,随着时间的推移,德雷克的音乐变得越来越短,越来越适合跳舞,这表明了一种向流行音乐的普遍转变。这也是由于像 Spotify 这样的流媒体应用的兴起,这些应用鼓励较短的歌曲,因为每个流都产生收入。
2015 年也是这两个指标发生重大转变的一年。这是德雷克职业生涯中关键的一年;他发行了两张混音带,一张病毒 diss 唱片(背靠背),以及他迄今为止最重要的单曲《热线金光闪闪》。
尽管缺乏营销——在 SoundCloud 上作为他最初的 Meek Mill diss 曲目的 b 端填充发布,充电(前传到背靠背)——Hot Bling在广告牌 Hot 100 上达到第二名(这是他自 2009 年首张单曲以来的最高分,我有过的最好成绩)。这首歌将集中体现德雷克的转变,通过风格弯曲的声音和充满毫不掩饰的乡巴佬和无数潮湿文化的音乐视频成为今天的互联网超级巨星。

2.对抒情的影响

(Note: the edge of the box represent 1st and 3rd quartile, middle line is the median and whiskers represent min and max, all diamonds are considered outliers)
随着他的歌曲和整体品牌变得更加主流,我想探索这是如何影响他作为一个说唱歌手的抒情性的。为了衡量这一点,我使用独特的字数作为衡量歌曲创作的创造力和努力的指标(受这篇关于说唱歌手词汇的文章和这篇关于德雷克的机器学习 NLP 文章的影响)。
这里的结果有点不清楚,但我认为从 2013 年开始有轻微的负面趋势。我们在 2017 年看到的增长可能是由于 More Life 是一个汇集了许多不同艺术家的混音带。不过总的来说,我想说他的抒情很大程度上没有受到影响。他没有用更少的独特词来创作歌曲,而是找到了 50 到 55 个独特词的最佳位置,正如他 2018 年的双专辑 Scorpion 所证明的那样,该专辑拥有所有项目中最多的歌曲(25 首),但字数差异最小。
聚类德雷克的音乐
聚类是无监督机器学习的一种形式,它“识别数据中的共性,并根据这种共性的存在或不存在做出反应”。换句话说,它通过观察到的模式将数据点组合在一起。由于我们的数据集主要包含数字属性,机器学习可以自动创建歌曲聚类

我们创建了多少个集群?
确定最佳聚类数的一种常用方法是使用肘形法,该方法在图中寻找一个“肘形”,在该处添加一个额外的聚类(x 轴)会导致失真(y 轴)的最小减少。

The blue line measures distortion based on clusters (k), and the dotted green line measures time
我们的数据的肘形图实际上显示了理想的集群数为 3。然而,鉴于德雷克众所周知的多面性和这一分析的范围,只有 3 组德雷克歌曲将是非常无聊的。相反,我选择了下一个理想的数字,5。
我们使用什么指标?
我对以下数字数据属性使用了标准的 k 均值聚类模型:分钟、受欢迎程度、可跳舞性、声音、能量、乐器感、活跃度、响度、语速、节奏和独特字数。我从模型中去掉了年,因为它在区分歌曲的音乐元素方面没有内在的意义。每个集群的汇总结果如下:

现在,让我们深入了解每个集群!
集群 0:“崛起”
钱改变了一切,我想知道没有钱的生活会怎样
在德雷克的音乐宝库中,这不是最闪亮或最受欢迎的一面,但这张专辑展示了他作为一名艺术家的崛起,其中有关于追逐梦想、短暂的幸福和应对逆境的自省主题。
歌曲属性:
- 低节奏和舞蹈性反映了大多数歌曲的内省情绪和信息,只有少数例外( Over、Fancy、HYFR
- 高绝字数节目重点在于抒情和评书

群组 1:“多才多艺的热门人物”
她说,“你爱我吗?”我告诉她“只是部分地”,我只爱我的床和妈妈,对不起
德雷克最大的集群不仅在歌曲数量上,而且在多功能性和热门唱片数量上。风格上没有真正的共同主题,除了它们都很吸引人,容易听和受欢迎。
歌曲属性:
- 在所有聚类中,的高节奏和舞蹈性以及最低的独特字数(平均每首歌少 8 个字)表明歌曲更有旋律、更吸引人、更适合广播
- 最高乐器感反映了多样化的制作和子流派,包括陷阱、弹跳、舞厅等。
- 包含了他的大部分最受欢迎的热门歌曲像上帝的计划,尼斯什么,西番莲,从底部开始,假爱,一个舞蹈

第二组:“新学校的领导者”
每晚都喝酒,因为我们为我的成就干杯
风格上与 cluster 0 非常相似,但这些嘻哈歌曲更多的是虚张声势,而不是自省,因为德雷克努力巩固他作为他这一代人,甚至可能是有史以来最大、最成功的说唱歌手的遗产。
歌曲属性:
- 不像集群 0,这些歌曲在所有集群中具有最高的速度,适合节奏快、节奏复杂的说唱歌曲
- 德雷克在这里传达的信息是更多的自吹自擂,并专注于金钱和地位。然而,这些主题主要是用来显示他在嘻哈音乐中的地位以及在同龄人中脱颖而出
- 许多歌曲来自他的大二经典,保重,包括他早期的热门歌曲,头条

第三组:“陷阱星”
得到了一个运动鞋交易,我不流汗
这是最特定流派的群集捕获了流行的子流派陷阱音乐。特别是,这个集群通过采用这种受亚特兰大影响的重 808 鼓、高帽和三连音流的声音,显示了毛毛适应和改变音乐趋势的能力。
宋属性:
- 高舞蹈性、速度和语速的独特组合;大多是快节奏、朗朗上口的说唱歌曲,最适合派对和夜生活
- 包含许多来自亚特兰大说唱歌手的类似功能,如未来,2Chainz,Quavo 和年轻的暴徒

第四组:“在我的感觉中”
我只是说你可以做得更好,告诉我你最近听到了吗?
这一组歌曲最好地体现了他的标志性风格,喜怒无常的 R&B 混合了情感说唱的低端低音鼓。这是一种流行的风格,影响了像 Bryson Tiller,Amir Obe,6lack 等新艺术家。
歌曲属性:
- 这些歌曲大部分是由他的长期音乐伙伴创作的。这种标志性的忧郁、缓慢的声音提供了低沉的能量和节奏,而德雷克忧郁的声音弥补了低沉的嗓音****
- 在主题上,这首歌围绕分手和单恋,最好的例子是他的经典 R&B 曲目, 马文的房间

模型结论
- 总体而言,这些集群完全捕获了德雷克庞大的唱片目录中的 5 种独特声音,尽管每个集群中的一些歌曲被放错了位置
- 群组 1 缺乏明确的音乐或抒情主题。为了更准确,有许多歌曲分散到其他聚类中(这可能是由于这些歌曲中的流行度度量相似)
- 尽管从聚类分析中去除了年份,聚类通常仍然显示来自相似时间段/专辑的歌曲。这意味着随着时间的推移,音乐和主题的变化会通过数据反映出来
最终想法和后续步骤
这一分析不仅深入研究了德雷克的音乐进化,还展示了机器学习的力量。一个简单的聚类模型可以准确地对一组广泛的歌曲进行聚类,并作为创建个性化播放列表和推荐的基础。Spotify 等流媒体服务无疑正在基于这些类型的数据和更多内容,创建更加复杂的模式和播放列表。
作为一个对 hip-hop 充满热情的人,我想继续使用 Spotify Web API 的数据来探索其他说唱歌手,如 Kendrick Lamar 和 J.Cole,并将他们的音乐与 Drake 或其他流行艺术家进行比较,以通过数据更好地了解他们在音乐上的差异。
SQL 的多面性
SQL 的许多实现的简要概述

最近,我遇到了一个红移 SQL 技术挑战,本质上是盲目编码——没有办法测试我的查询。SQL 有如此多的实现,您可能会遇到一个您不熟悉的实现。我将为您概述我们最喜欢的结构化查询语言的最流行的实现之间的主要区别,并给它们贴上标签,就好像它们是男孩乐队的成员一样:
- 结构化查询语言
- 关系型数据库
- Oracle 数据库
- NoSQL
- 一种数据库系统
- SQLite

https://www.datacamp.com/community/blog/sql-differences
SQL —领导者
SQL 是第一个。OG 结构化查询语言。它最初是在 1974 年由 IBM 开发的。它是作为 IBM 的内部项目而设计的,其他版本是为商业用途而创建的。SQL 有许多语法标准,它的许多迭代都没有遵循这些标准。例如,用于终止查询的分号、双引号和大写。SQL 是基本的数据库语言。SQL 的附加实现试图填补空白,并满足特定的需求。

SQL is Beyoncé
MySQL——最流行的一个
根据数据库引擎排名,自 2012 年该网站开始跟踪数据库受欢迎程度以来,MySQL 一直是最受欢迎的开源关系数据库管理系统(RDBMS)。它由一家名为 MySQL AB 的瑞典公司于 20 世纪 90 年代推出。MySQL 是热门网站的好朋友,包括 Twitter、脸书、网飞、Youtube 和 Spotify。虽然它并不总是遵循所有的 SQL 规则,但它是快速、可靠和受保护的。使用 MySQL 数据库的应用程序通过一个独立的守护进程访问它。服务器进程位于数据库和其他应用程序之间,因此可以更好地控制谁可以访问数据库。
MySQL 适用于网站和应用程序。它最大的局限性在于缺乏对完全连接子句的支持。MySQL 有开源和商业版本,所以插件的特定功能可能不可用,除非你愿意为它们支付额外费用。

MySQL
Oracle SQL—智能产品
Oracle 数据库是由 SDL(软件开发实验室)于 1979 年创建的。Oracle 是一个多模型数据库管理系统。大多数数据库主要只支持一种模式,如:关系数据库、面向文档的数据库、图形数据库或三重存储。结合了许多这些的数据库是多模型的。
“Oracle 数据库(通常称为 Oracle RDBMS 或简称 Oracle)是一个专有的 多模式数据库管理系统。Oracle 是一种常用于运行在线事务处理(OLTP)、数据仓库(DW)和混合(OLTP & DW)数据库工作负载的数据库。”
一些人认为 Oracle 数据库比其竞争对手微软(Microsoft)的 SQL Server 更复杂。Oracle 适用于需要大型数据库的大型组织。Oracle 的一个优势是它可以在任何操作系统上使用。此外,Oracle 有更多的事务控制。例如,如果需要立即更新一组记录,MS SQL Server 会单独执行每个命令。如果在此更新过程中遇到任何错误,将很难进行修改。Oracle 能够将每个新的数据库连接视为一个新的事务,从而提高了效率。
就功能而言,MS SQL Server 不提供分区、位图索引、反向键索引、基于函数的索引或星型查询优化,而 Oracle 提供了所有这些功能。

Smartypants
反叛者 NoSQL
不仅是 SQL 的缩写,NoSQL 数据库不是关系数据库管理系统。有些人可能会认为它甚至不属于本文中的其他组,但它的定义与 SQL 相反。它主要被称为非关系型或分布式数据库。NoSQL 数据库是没有标准模式定义的键值对、文档、图形数据库或宽列存储的集合。NoSQL 数据库的定义特征是它保存非结构化数据。
尽管在 SQL(20 世纪 60 年代末)之前就已经存在,NoSQL 这个绰号还是在 1998 年被冠以。有时它也被称为 UnQL(非结构化查询语言)。使用 UnQL 的语法因数据库而异。

Breaking all the rules
PostgreSQL——兼容的
PostgreSQL 越来越受欢迎,它遵循大多数 SQL 标准。PostgreSQL 是一个对象关系数据库。它的行为类似于一个常规的关系数据库,但是它有一些附加的特性,类似于一个对象数据库。表继承和函数重载是这方面的一些重要例子。
根据官方文档,PostgreSQL 符合 179 个 SQL 特性中的 160 个。原来亚马逊的产品 Redshift 是基于 PostgreSQL 的。

This one was tough, but this picture…
SQLite——可爱的那个
SQLite 占用空间小,因为它是非常轻量级的。它可能占用不到 600Kb 的空间,并且是完全独立的。没有需要安装 SQLite 才能工作的外部依赖项。它不需要停止、启动或重启,因为它不作为服务器进程运行。这些特性使它能够轻松地与应用程序集成。一个完整的 SQLite 数据库可以完美地存储在一个文件中——太可爱了!该文件可以通过可移动介质或文件传输来共享。
将 SQLite 与嵌入式应用程序结合使用是理想的,使用 SQLite 测试应用程序功能很容易,因为它不需要额外的服务器来运行。

RIP QT
结论
SQL 的实现如此之多,以至于很难跟踪所有的实现。如果您确实在技术挑战中遇到了一个新的实现,并且您没有办法实际测试查询,那么可以放心地假设它与所有其他实现一样。每个 SQL 实现的语法没有太大的区别。事实上,像连接这样的事情在大多数实现中仍然是一样的。最大的区别在于功能和具体用途,但似乎相似之处比不同之处更常见。
火星编年史——当深度学习遇到全球协作

上面你看到的是两张火星表面的灰度照片,是在勇气号着陆点附近拍摄的,勇气号是由美国宇航局建造的机器人漫游车,在 2004 年至 2010 年期间活动。如果你仔细观察,你会发现箭头右边的图像与左边的图像完全相同,只是陨石坑被神经网络用白色高亮显示了。
如果你想知道这个非凡的结果是如何实现的,不要再想了,让我告诉你一个你从未听说过的故事——在这个故事中,你会发现来自地球各个角落的一群人,拥有不同的技能(与火星相关或无关),他们如何远程合作,创建了一个能够自动下载和分析火星表面原始图像的完整管道。
我将这整个 2 个月的“太空之旅”分成 6 个阶段,并冒昧地对每个阶段做一个简要的概述。

The entire space-trip of 2 months, broken up into 6 stages
起源故事
这一切都始于 火星,当然还有 — 太阳系中第二小的行星,由稀薄的大气层组成,其表面特征让人想起月球的撞击坑以及地球的山谷、沙漠和极地冰盖。

Examples of the Mars’ diverse surface
最近,寻找技术签名——为过去或现在的外星技术提供科学证据的可测量属性——获得了新的兴趣。

会见 Omdena——这是一个全球合作平台,汇集了来自 18 个国家的 36 名地球人,为期 2 个月,以确定火星表面的异常情况,这将有助于发现技术签名和着陆点。当我在浏览我的媒体新闻时,我偶然发现了这颗宝石,并无意中发现了下面这篇改变人生的文章:
与他人一起学习,获得真实世界的经验,成为全球社区的一员。
medium.com](https://medium.com/omdena/learn-ai-through-collaboration-not-through-competition-f3b13f7f3f21)
这篇文章出现的正是时候,当时我已经在诸如 Udacity、fast.ai、Coursera 等平台上完成了相当多的 ML 课程。,并在寻找全新的项目来应用我新获得的技能。我没有浪费时间申请,几天后,经过简短的面试,我非常兴奋地收到一封电子邮件,确认我在这个项目中的 ML 工程师的角色。
如果没有出色的在线协作工具,未来两个月的协作是不可能的,例如:
- Slack ,我们曾经在名副其实的#channels 的帮助下,用它来相互交流和集思广益。
- Zoom ,我们用它来举行每周同步视频会议,所有参与者每周都可以分享他们的进步和学习。
- GitHub ,我们用来贡献和分享所有开发代码的。
- 谷歌合作实验室,免费提供支持 GPU 的 Jupyter 笔记本电脑,以试验不同的模型。
- Google Drive、Google Docs 和 Google Slides ,帮助我们以一种易于阅读的格式记录我们所有的数据和知识,并将它们呈现给其他人。
接近
在我们自己的 Python 包——mars-ode-data-access——诞生之前,我们花了两周时间分析需求。对于那些试图访问和下载火星表面图像的人来说,这让生活变得更加容易。关于它的用法的所有信息都可以在这里找到—https://github.com/samiriff/mars-ode-data-access。

Sample usage of the mars-ode-data-access Python package
数据是如何从火星一路传回我们的 Jupyter 笔记本的?长话短说,由美国宇航局建造的火星探测轨道器 (MRO) ,使用高分辨率成像科学实验 (HiRISE) 相机捕捉火星表面的高分辨率照片,并通过深空网络 (DSN) 传回地球。像我们这样的普通用户通过在我们的浏览器中打开火星轨道数据浏览器 (ODE) 网站来访问所有这些数据,或者更好的是,通过使用我们自己的 python 包以编程方式访问这些数据。
如果你想更深入地了解这一旅程的细节,请阅读下面的文章了解更多信息:
引入 Python 包来高效处理来自火星的数据
medium.com](https://medium.com/omdena/a-journey-from-martian-orbiters-to-terrestrial-neural-networks-93541169f665)
数据
一旦我们获得了数据,我们需要理解我们正在寻找的异常。基于芝诺多数据集,我们能够识别 7 种不同的异常,即陨石坑、黑色沙丘、斜坡条纹、明亮沙丘、撞击喷出物、蜘蛛和瑞士奶酪。

除此之外,我们还从火星任务的不同着陆点识别出了技术特征,比如美国宇航局的好奇号探测器的降落伞。
此外,我们创建了预处理实用程序来对齐、裁剪、平移、旋转、缩放和转换下载的数据。

你可以在下面这篇由 Sebastian Laverde 撰写的文章中找到关于这些工具的更多细节:
“通过每一个发现的裂缝,一些看似不正常的东西从黑暗中掉了出来,落下来,作为进入……
medium.com](https://medium.com/omdena/marsian-omaly-detection-through-deep-adversarial-training-4dbb10744ce8)
标签
所有数据就绪后,我们必须手动标记所有图像。简单图像分类的日子已经一去不复返了。我们现在生活在一个对象检测和语义分割的世界,有各种各样的注释工具和标签格式!糟糕的是没有一个单一的标准,这就是为什么我们有多个参与者使用不同的注释工具来标记不同的图像。贴标签是一项相当劳动密集型的任务,这是我们证明我们在数量上的优势的时候,我们平均在一周多一点的时间里,通过贴标签 300-400 张图片,完成了这项看似艰巨的任务。
我们开始使用label img——一种开源注释工具,在感兴趣的异常周围绘制矩形框,还创建了一个实用程序,用于在 PASCAL VOC 和 YOLO 格式之间自动转换。

Drawing bounding boxes over craters with the LabelImg Tool
然后,我们使用 VGG 图像注释器(VIA) 工具在感兴趣的异常周围绘制多边形。

Drawing Polygons around Bright Dunes with the VIA tool
最后但同样重要的是,我们创建了一个工具——https://github.com/samiriff/image-annotation-converter——能够在 LabelMe 工具的帮助下,自动将来自 VIA 工具的多边形注释转换为分段遮罩。

Segmentation masks of craters obtained from an image annotated with the VIA tool
模型
终于,经过如此精心的准备,我们到了大家期待已久的阶段——模特选拔和培训!
我们尝试了监督和非监督模型,但为了保持这个故事的简洁,我将展示 3 个监督模型 (SSD,Mask R-CNN 和 U-Net) 和 1 个非监督模型 (Ano-GAN) 。所有实验都在谷歌实验室进行。
单触发多盒探测器(SSD)
利用由 1674 个训练样本、350 个验证样本和多种类型的图像转换组成的 LabelImg 注释数据集,由预训练 Resnet34 模型支持的单次多盒检测机通过 1 周期学习率调度器被训练 30 个时期。选择焦点损失作为损失函数,并通过 Adam 优化器在 6.5 分钟内将其最小化,从而产生下图中显示的预测,异常周围有边界框。

Parameter Values, Model Architecture and Sample Predictions for an SSD Model
屏蔽 R-CNN
利用 VIA 注释数据集和 1024 x 1024 像素的更高输入分辨率,由预训练的 Resnet101 主干支持的掩模 R-CNN 模型被训练 30 个时期。损失函数由边界框和掩膜损失的组合组成,由 SGD 优化器在大约 3 小时内最小化,从而产生下图中显示的预测,异常以不同颜色突出显示。

Parameter Values, Model Architecture and Sample Predictions for a Mask R-CNN model
优信网
利用分割掩码的数据集,由 Resnet18 模型支持的 U-Net 模型利用 1 周期学习率调度器,使用学习率和权重衰减的不同组合,被训练 47 个时期。Adam 优化器在大约 2 小时内将交叉熵损失函数的平坦损失最小化,从而产生了下图中的预测,异常以白色突出显示。

Parameter Values, Model Architecture and Sample Predictions for a U-Net Model
阿诺-甘
最后但并非最不重要的是,利用 10000 幅图像的完全未标记数据集,对 200 个时代训练了一个生成性对抗网络。Adam 优化器在大约 6 小时内将 L1 重建损失降至最低,从而产生了显示在右侧的预测。探测到了隔热板、降落伞、坠机地点和好奇号火星车等技术特征。

Parameter Values, Model Architecture and Sample Predictions for an Ano-GAN model
在这篇由 Murli Sivashanmugam 撰写的文章中,阅读更多关于这种模型的架构以及它是如何被训练的:
我们如何克服数据挑战,并使用深度卷积网络和社区协作来检测…
medium.com](https://medium.com/omdena/anomaly-detection-in-martian-surface-searching-for-needles-in-a-haystack-169fb0246da7)
在继续之前,我想花一点时间感谢杰瑞米·霍华德和 fast.ai 背后的人们,他们创建了这样一个奇妙的图书馆和令人惊叹的视频讲座,这使我们更容易理解 SSD、U-Net 和 GAN 模型的内部工作原理。如果你之前没看过这个课程,我强烈建议你立刻访问 https://course.fast.ai 。
结果

Precision, Recall, and F1-Scores for all label classes
发现 U-Net 模型产生了最好的分数。所有异常的精确度分数都在 90%以上,但是在技术签名、斜坡条纹和蜘蛛的召回分数方面仍有改进的空间。
基于交集超过并集 (IOU) 分数的混淆矩阵如下所示:

等等!这个故事还没有结束。在我结束之前,让我向您展示一个用户友好的应用程序,它是通过将所有这 6 个部分结合在一起创建的,以创建一个端到端的管道,能够直接从火星轨道数据探测器下载图像,并使用我们训练有素的 U-Net 模型进行分析(确保您在支持 GPU 的环境中运行此笔记本):
用户友好的 Mars ODE + U-Net 管道
colab.research.google.com](https://colab.research.google.com/drive/1snboX3JG9USKmbCAGf3XtCZkSjayMgM2)
如果你想看我们所有的实验或者也有所贡献,请访问https://github.com/cienciaydatos/ai-challenge-mars。
结论
好了,这就是我们过去两个月的旅程。我希望你喜欢阅读我们的项目,就像我们喜欢做它一样。
**在这个项目中合作工作类似于训练一个神经网络,在项目开始时,事情是混乱的,随机的陌生人加入了一个新创建的合作环境(类似于神经网络中的权重和偏差在创建过程中是如何随机初始化的)随着时间的推移,我们逐渐了解并相互学习。 通过不断迭代(类似于神经网络如何在多个时期逐渐调整其权重以最小化成本函数)来精炼我们的理解并变得不那么混乱,直到我们实现我们的目标或接近它(类似于神经网络最终产生预期结果的方式)。 **
我们非常感激 Rudradeb Mitra 把我们聚集在一起并指导我们;丹尼尔·安格豪森和帕特里西奥·韦塞拉为我们提供问题陈述指导;迈克尔·布哈特宣传我们的媒体文章,并让我们了解奥姆德纳的最新动态;法维奥·瓦兹奎帮助我们开始使用 GitHub 上的开源库。
在一个被贪婪、仇恨和偏狭所困扰的世界里,奥姆德纳为消除国家壁垒带来了一股新鲜空气。这个项目证明了这样一个事实,即把一群来自地球不同角落的陌生人聚集在一起,他们以前从未见过面;超越地理边界和时区,共同努力解决引人入胜的社会问题;虽然每天都互相学习和启发,但这不仅仅是一个白日梦,感谢在线教育、协作工具和 Omdena 这样的平台!
如果您希望了解更多关于 Omdena 的信息,并将您的技能应用于新的合作挑战,请访问https://omdena.com。

地面控制呼叫汤姆少校。通话完毕……
参考
[1]http://course 18 . fast . ai
【2】https://zenodo.org/record/2538136#.XTHh3OgzbIV
【3】https://medium . com/om dena/a-journey-from-mars-orbiters-to-terrestrial-neural-networks-93541169 f 665
【4】https://github.com/cienciaydatos/ai-challenge-mars
【5】https://medium . com/om dena/pushing-the-the
GANs(生成对抗网络)背后的数学
详细了解原始 GANs 背后的数学原理,包括其局限性
1.介绍
生成对抗网络(GAN)由两个模型组成:生成模型 G 和鉴别模型 D 。生成模型可以被认为是一个试图制造假币并使用它而不被抓住的伪造者,而鉴别模型类似于警察,试图抓住假币。这场竞争一直持续到伪造者变得足够聪明,能够成功骗过警察。

Figure 1: Representation of the generator and discriminator as a counterfeiter and police, respectively. Figure from [1].
换句话说,
鉴别器:作用是区分真实的和生成的(假的)数据。
生成器:作用是以一种可以欺骗鉴别器的方式创建数据。
2.一些参数和变量
在我们进入推导之前,让我们描述一些参数和变量。

3.损失函数的求导
Ian Goodfellow 等人在原论文中描述的损失函数可以从二元交叉熵损失公式中导出。二进制交叉熵损失可以写成:

3.1 鉴频器损耗

现在,鉴别器的目标是正确地分类伪数据集和真实数据集。为此,等式(1)和(2)应最大化,鉴频器的最终损失函数可由下式给出:

3.2 发电机损耗
这里,生成器与鉴别器竞争。因此,它将尝试最小化等式(3)并且损失函数被给定为:

3.3 组合损失函数
我们可以组合等式(3)和(4)并写成:

请记住,上述损失函数仅对单个数据点有效,要考虑整个数据集,我们需要将上述等式的期望值取为

该等式与 Goodfellow 等人在原始论文中描述的等式相同。
4.算法

Figure 2: Algorithm described in the original paper by Goodfellow et al. Figure from [2].
从上面的算法可以注意到,生成器和鉴别器是分开训练的。在第一部分中,真实数据和虚假数据被插入到具有正确标签的鉴别器中,并进行训练。梯度传播保持发电机固定。此外,我们通过提升其随机梯度来更新鉴别器,因为对于鉴别器,我们想要最大化等式(6)中给出的损失函数。
另一方面,我们通过保持鉴别器固定和传递带有假标签的假数据来更新生成器,以便欺骗鉴别器。这里,我们通过降低其随机梯度来更新发生器,因为对于发生器,我们希望最小化等式(6)中给出的损失函数。
5.Pg = Pdata 的全局最优
对于任何给定的发生器 G 的最佳鉴别器 D 可以通过对损失函数(等式(6))求导来找到,

上述等式在数学上非常重要,但在现实中,你无法计算出最优的 D ,因为 Pdata(x) 是未知的。现在,当我们有最佳的 D 时,对于 G 的损失可以通过将等式(7)代入损失函数中得到,

现在,Kullback-Leibler(KL)和 Jensen-Shannon(JS)的散度由下式给出:

因此,

由于散度变为零,当 Pg 接近 Pdata 时,上述等式简化为 -2log2 。
6.限制
导出的损失函数(等式(9))有一些限制,这将在本节中描述。
6.1 消失渐变
等式(9)的优化目的是将 Pg 向 Pdata 或 Pr 移动,以获得最佳 D 。如果 Pr 和 Pg 之间没有重叠,JS 偏差保持不变(图 3)。可以观察到,距离大于 5 时,JS 散度为常数,其梯度接近于 0,代表训练过程对 G 没有任何影响(图 4)。只有当 Pg 和 Pr 有明显重叠时,梯度才不为零,这意味着当 D 接近最优时, G 将面临梯度消失的问题。

Figure 3: Illustration of training progress for a GAN. Two normal distributions are used here for visualization. Given an optimal D, the objective of GANs is to update G in order to move the generated distribution Pg (red) towards the real distribution Pr (blue) (G is updated from left to right in this figure. Left: initial state, middle: during training, right: training converging). However, JS divergence for the left two figures are both 0.693 and the figure on the right is 0.336, indicating that JS divergence does not provide sufficient gradient at the initial state. Figure from [3].

Figure 4: JS divergence and gradient change with the distance between Pr and Pg. The distance is the difference between the two distribution means. Figure from [3].
这个问题可以通过修改 G 的原始损失函数来解决,

6.2 模式崩溃
在训练过程中,发电机可能会陷入一个设置,在那里它总是产生相同的输出。这被称为模式崩溃。发生这种情况是因为 G 的主要目的是欺骗 D 不产生不同的输出。这背后的数学有点复杂,将在以后的文章中讨论。
顺便说一句,这是我的第一个故事,我希望你喜欢它。
7.参考
1]阿蒂恩萨,罗威尔。使用 Keras 的高级深度学习:应用深度学习技术、自动编码器、GANs、可变自动编码器、深度强化学习、策略梯度等。帕克特出版有限公司,2018 年。
2]古德费勒,伊恩,等《生成性对抗性网络》神经信息处理系统的进展。2014.
[3]王、、佘琦、沃德。"生成性对抗网络:综述与分类." arXiv 预印本 arXiv:1906.01529 (2019)。
《生命的意义》及其他 NLP 故事
面向语言爱好者的组合语义学 Pythonic 介绍。
“意义”的含义
"我们被的技术困住了,而我们真正想要的只是能工作的东西。"亚当斯
尽管在这个人工智能时代,科技巨头做出了种种承诺,各种全新的小玩意迅速充斥着我们的家庭,但我们仍然很容易发现机器完全误解人类语言的令人沮丧的例子。在数千万美元之后,我们得到了这个:
Some A.I. epic fails — I’m sure you have your own top 10.
当我们期待这个的时候(顺便问一下,我的喷气背包在哪里?):
A.I. writing a piece of music for you (awwww).
为什么?
简而言之,理解语言是非常困难的,因为解决语言之谜意味着在一个同样困难的问题网络中航行,这些问题涉及我们认知能力的极限、逻辑表达的能力以及人类社会的怪癖和偏见:在柏拉图关于这个问题的思想提出多年后,我们仍然远远没有一个好的理论。
对于“自然语言处理”(或“自然语言理解”, NLU ,就像最近酷孩子说的)来说,显然是意为的概念:可以说,我们在 NLU 仍然落后的原因之一是,我们对于意为没有一个好的、统一的观点。由于技术和历史原因,文献在某种程度上分为两种观点:
- 有一种“统计”观点,例如由 word2vec 和相关作品举例说明,主要在机器学习社区中进行:这里的焦点主要是词汇项和语义关系,如同义词;通常,这些分析成为下游系统应对挑战的支柱,如情感分析和文本分类。在一句广告语中,意为是多维语义空间中的向量;
- 有一种关于意义的“功能”观点,例如由本和相关的著作举例说明,主要由语言学家,语言哲学家和逻辑学家执行:这里的重点主要是推理的系统规则和语义关系,如蕴涵;典型的任务是自动推理和知识表示。在广告语中,表示是语言片段的功能(如名词、连接词等)。)到集合论对象(例如集合的元素、函数等)。).
虽然这种区分显然有点过于简单(虽然,例如,非常接近于背景中的 Baroni 等人的,但这是一个很好的初步近似:第一种方法更实用,更善于解释词汇概念之间的关系( 男人对于国王,什么女人对于……?”;第二种比较抽象,善于解释文字如何组合在一起产生复杂的概念。
为了在深入理论之前立即理解一些实际后果,请考虑您最喜欢的 CRM 中的以下客户表:

A sample customer table recording customers and payments.
有许多问题我们希望我们的计算机能自动回答:所有的顾客都付款了吗?鲍勃明确付钱了吗?鲍勃比阿达付的多吗?
在“统计”视图下(比如,一个深度学习聊天机器人),我们会尝试收集许多(许多!)配对<问题,在这个和类似的设置中回答>,然后想出一些优化程序,让我们的系统准备好回答看不见的问题。在“功能”的观点下,我们将首先教计算机关于列和它们的关系,然后使用语义的力量通过评估合适的正式语言的表达式来回答看不见的问题。所谓的“作为推理的查询”范式不需要大数据训练,并且随着问题复杂性的增加,可以预测地推广,但它有自己的缺点。
我们相信这两种传统都使我们对语言的理解有了很大的进步,但是当然没有一种传统能让我们达到 HAL 9000。无论您选择什么武器来应对当前的 NLP 挑战,对这两种观点的深刻理解对于在艰难的现实场景中取得进展都是至关重要的。既然有大量最近的材料 关于第一个传统已经可用,这个小帖子将作为我们(固执己见的)第二个中基本概念的介绍。
免责声明:这篇文章主要是为熟悉统计 NLP 工具包(从 后退语言模型 ,到word 2 vec)但从未接触过形式语义的刺激和危险的数据科学家和受过教育的读者写的。遵循古语“我不能创造的,我不理解的”,我们强化了共享一个 小 Python 项目 的概念(完整细节在最后)。另一方面,已经熟悉模型理论但不太熟悉现代编程语言的读者可以使用 repo 来了解“语义计算”如何通过代码来表达(请注意,我们将在这里或那里稍微滥用符号和术语,以专注于建立直觉,而不是开发正式的系统)。
这个帖子的代码可以在GitHub上免费获得。
思想的语言(或者:如何用简单的概念表达复杂的概念)
”命题是其真值条件的表达。”—维特根斯坦,《逻辑哲学论》 (4.431)
为了理解作为一门学科的形式语义学(以及它与其他方法的不同),我们需要回到 20 世纪初的一个疯狂的奥地利人身上。理解一句话的意思是什么?
理解一个句子的意思意味着理解它的真值条件,也就是说,理解如果这个句子是真的,这个世界会是什么样子。
所以,要让“狮子比家猫大”成为事实,世界应该是这样的:一种给定类型的猫科动物比另一种更大(真);要让“狮子比蓝鲸大”成为真,世界应该是这样的,给定类型的猫科动物比给定类型的水生哺乳动物大(假)(请注意:我们能确立句子是真/假的事实与理解它无关;每个人都明白“1517 年 1 月 1 日威尼斯的猫的总数是奇数。”,但没人知道是不是真的)。
所以如果我们买那个意=真条件,问题不就解决了吗?实际上没有,因为可能的句子数量是无限的:没有一个列表,无论多么大,都会给我们“英语的所有真实条件”。让读者惊讶不已的是,下面这句话——很可能是历史上第一次写在这里———可以毫不费力地理解:
46 只企鹅从 Ciad 的一个基因实验室意外逃脱后,在撒哈拉沙漠中失踪。
这是怎么发生的?资源有限的有限头脑怎么可能无限理解许多事情?
形式语义就像玩无限乐高:复杂的乐高是用更简单的积木搭建的,更简单的乐高是用基本的乐高积木搭建的;如果你知道砖块是如何组合的,并且有一些砖块作为开始,你可以创造出无数的东西。以非常相似的方式,一个句子的(待定义)含义可以预测地从其成分的(待定义)含义中建立起来:所以如果你知道企鹅和撒哈拉的含义,你就可以理解一只企鹅在沙漠中迷路意味着什么。
形式语义学是研究指令集的学科,在指令集里我们的语言可以被组合在一起。
如果所有这些对人类来说都很简单,那么检查一些著名的 NLP 架构中的组合性将会很好。以下面的两个句子和 DeepMoji 为例,这是一个建议表情符号的神经网络(这个例子来自我们的人工智能观点文章):
- 我的航班被延迟了..太神奇了。
- 我的航班没有延误..太神奇了。

The same emojis are suggested for the sarcastic vs normal sentence (original video here).
这两个句子只有一个单词不同(而不是),但我们知道这个单词是“特殊的”。而不是促成的方式(是的!)上面句子的真值条件被 DeepMoji 完全忽略了,它甚至不拥有一个非常基本的复合性概念;换句话说,在一个句子中添加否定通常不会在一条想象的“意义线上”移动几个点(无论如何解释)(就像在“这个蛋糕(非常)好”中添加“非常”),而是完全“颠倒”它。
无论 DeepMoji 和类似系统中嵌入了什么“语言理解”,如果我们要捕捉上面的而不是行为,我们需要一种完全不同的方式来表示的含义。形式语义学的故事是关于我们如何利用数学使“语言乐高”的概念更加精确和易于处理的故事。
请注意,这不是一个大团圆结局的故事。
语义学 101
"在我看来,自然语言和逻辑学家的人工语言之间没有重要的理论区别。"——r·蒙塔古
关于表示的一个关键问题是,它有两个元素——回想一下上面那个古怪的奥地利人的定义:
…理解如果这句话是真的,世界会是什么样子。
所以有一个句子,没错,但也有世界:意义,本质上是我们的语言和我们的世界之间的某种关系(从技术上来说,多个世界,但事情就变得复杂了)。由于世界是一个相当大且不切实际的东西,我们使用集合论中的对象作为我们的世界模型。在公式和代码之前,我们将首先使用这一部分来建立我们的直觉。
我们的第一个玩具语言由以下基本元素组成:
names = ['Jacopo', 'Mattia', 'Ryan', 'Ciro']
predicates = ['IsItalian', 'IsAmerican', 'IsCanadian']
connectives = ['and']
negation = ['not']
基本元素可以根据以下语法规则进行组合:
a "name + predicate" is a formula
if A is a formula and B is a formula, "A connective B" is a formula
if A is a formula, "negation A" is a formula
这意味着下面的句子都是 L 的一部分:
Jacopo IsItalian
Mattia IsAmerican and Jacopo IsItalian
not Jacopo IsItalian
...
现在是时候介绍一下语义了:虽然我们可能会被诱惑使用一些背景知识来解释 L (例如,我的名字是“雅格布”),但记住 L 中的句子没有任何意义是绝对重要的。由于我们期望复杂事物的意义是从简单事物建立起来的,我们将从名称和谓词的意义开始,因为“名称+谓词”是我们需要解释的最简单的句子。我们从论域 D 开始,论域是由一些元素和一些子集组成的集合,然后我们说:
- 名字的意义(它的“外延”)是 D 的一个元素;
- 谓词的意义(它的“外延”)是 d 的子集。
D 是我们模型的通用“容器”:它只是一个“盒子”,里面有表示 L. 中的含义所需的所有部分。如果您将一个示例 D (如下)可视化,就很容易理解我们如何为“名称+谓词”句子定义真值条件:
- 如果 A 是“名+谓”句,则 A 为真当且仅当
name的外延在predicate的外延内。

A sample domain for our toy language L.
比如说:
- 当且仅当代表
Jacopo的 D 中的元素是代表IsItalian的集合的成员时,“Jacopo IsItalian”为真; - 当且仅当代表
Jacopo的 D 中的元素是代表IsCanadian的集合的成员时,“雅格布是加拿大人”为真。
正如我们所了解的,真值条件不会告诉你什么是真/假,而是告诉你这个世界(更好地说,你的世界模型)对于事物的真/假应该是什么样子。有了我们的定义,我们可以再次查看我们的 D 并且我们可以看到,在我们的例子中,“雅格布·伊斯塔利亚”是真的,而“雅格布·伊斯塔利亚”是假的。

The extension of “isItalian” contains the denotation of “Jacopo” (in purple).
当 L 中的一个句子在我们这个集合论的小世界中为真时,我们也说这个句子在模型中是满足(从技术上讲,对句子来说为真是对一般公式来说满足的特例)。既然我们已经为基本句子定义了真值条件,我们就可以通过基本句子来定义复杂句子的真值条件:
- 如果 A 是公式,B 是公式,“A 和 B”为真当且仅当 A 为真,B 为真。
比如说:
- 当且仅当雅格布·伊斯塔里安和马蒂亚·伊斯塔里安为真且马蒂亚·伊斯塔里安为真时,雅格布·伊斯塔里安和马蒂亚·伊斯塔里安为真。
由于“Jacopo IsItalian”和“Mattia IsAmerican”是“名+谓”句,我们现在可以完整地拼出意思了:
- 当且仅当代表
Jacopo的 D 中的元素是代表IsItalian的集合的成员,代表Mattia的 D 中的元素是代表IsAmerican的集合的成员。
有了我们的定义,我们可以查看 D 并且看到“雅格布·伊斯塔里安和马蒂亚·伊萨美国”是错误的,因为“马蒂亚·伊萨美国”是错误的:

The extension of “isAmerican” does not contain the denotation of “Mattia” (in blue).
最后,我们可以在我们的语义中看到否定如何确实是一个“反转”操作:
- 如果 A 是一个公式,“非 A”为真当且仅当 A 为假。
- “不是雅格布·伊斯塔里安”为真,当且仅当“雅格布·伊斯塔里安”为假。
- 当且仅当代表
Jacopo的 D 中的元素不是代表IsItalian的集合的成员时,“not Jacopo IsItalian”为真。
显然,为我们的玩具语言 L 指定真值条件对于构建 HAL 9000 并不是非常有用。但即使是这个简单的例子,也应该注意两件事:
- 我们的语义是完全复合的,并允许以有限的方式为无限数量的句子分配真值条件:在 L 中没有一个可能的句子被我们的意义定义遗漏。更具表达力的语言会有(更)复杂的组合规则,但总的要点是一样的:一组有限的指令自动概括成无限多的目标句子;
- 我们对 D 的选择只是众多可能性中的一个:我们可以选择一个“Mattia IsAmerican”为真的世界,我们的语义也是一样的——记住,语义分配真值条件,但它没有说明这些条件实际上是如何满足的。在现实世界的应用中,我们也经常对真理感兴趣,因此我们需要将语义与“知识库”相结合,即关于我们所关心的世界的具体事实:当对现实世界的现象建模时, D 应该被解释为与其“同构”,因此“在 D 中为真”将意味着“在感兴趣的领域中为真”。
专业读者可能已经猜到了我们如何通过利用上面的(1)和(2)来构建具有直接价值的应用程序:(1)保证由语义编码的知识很好地一般化;(2)保证在我们仔细选择目标域的范围内,满意度算法将评估所有并且只有我们关心其真实性的句子为真。
特别是,即使是计算语义学中更简单的程序(比如检查任意公式满意度的代码)也可以被看作是作为推理的的查询的一个实例(这里支持):
给定一个以某种有用的方式(例如数据库)建模的世界状态,机器能自动回答我们关于感兴趣的领域的问题吗?
在接下来的章节中,我们将在这样的背景下探索一种稍微复杂一点的语言。
【额外的技术要点:如果语义不以任何方式约束真理——即就语义而言,一个Jacopo isItalian为真的世界和一个Jacopo isCanadian为真的世界一样好——它本身有帮助吗?是的,非常,但是要知道为什么我们需要明白语义学的核心概念确实是蕴涵、即研究在什么条件下一个句子 X 在逻辑上被一组句子 Y 1 ,Y 2 ,… Y n 所隐含。特别是,真正的问题语义学设定的答案是:
- 给定一个域 D,一个句子 X,一个句子 Y ,如果 D 中 X 为真,那么 Y 也必然为真吗?
蕴涵也是证明理论的关键概念:事实上,我们对演绎系统和语义之间的[关系有一个惊人的证明,但这个笔记太小,无法包含它。]](https://en.wikipedia.org/wiki/Gödel's_completeness_theorem)
“查询作为推理”使用计算语义
"为了理解递归,你必须首先理解递归."— 我的 t 恤
假设下表摘自我们的 CRM:

A sample customer table recording customers and payments.
即使看着这样一个简单的表格,我们也可能会想问很多有趣的问题:
- 所有顾客都付钱了吗?
- Bob 具体付出了吗?
- 鲍勃付了五美元吗?
- …以此类推
我们可以很好地利用我们的框架,为这个领域制定一个语义,然后查询系统以获得我们需要的所有答案(描绘这个用例的 Python 笔记本也包含在的报告中)。因此,第一步是创建一种语言来表示我们的目标领域,例如:
names = ['bob', 'dana', 'ada', 'colin'] + digits [0-9]
unary predicates = ['IsCustomer', 'IsPayment']
binary predicates = ['MadePayment', 'HasTotal']
quantifiers = ['all', 'some']
connectives = ['and']
negation = ['not']
我们的语言允许我们表达这样的概念:
there is a thing in the domain of discourse which is a customer named bobthere is a thing ... X which is a customer, a thing Y which is a payment, and X made Ythere is a thing ... which is a payment and has a total of X
第二步是建立一个模型,忠实地代表我们的兴趣表。换句话说,我们需要构建一个对象域,即名称和对象之间的映射,并正确地解释谓词扩展,以便表中指定的属性在模型中一致地表示:
domain: [1, 2, 3, 4, 5, 6],
constants: {'bob': 1, 'dana': 2, 'ada': 3, 'colin': 4},
extensions: {
'IsCustomer': [[1], [2], [3], [4]],
'IsPayment': [[5], [6]],
'MadePayment': [[1, 5], [2, 6]]
...
}
一旦完成,我们就可以查询系统,让机器自动计算答案:
Did all customers pay?变成查询For each thing x, if x IsCustomer, there is a y such that y IsPayment and x MadePayment y,评估为False[ 加分技术点:为了简洁起见,我们一直在跳过涉及all语义的确切细节,其含义远比简单的名称复杂;感兴趣的读者可以探索我们的回购,了解计算all和some含义所需的所有技术步骤。Did Bob pay?成为查询There is an x such that x IsPayment and bob MadePayment y,被求值为True。Did Bob pay 5 dollars?成为查询There is an x such that x IsPayment and bob MadePayment x and x HasTotal 5,被评估为True[ 附加技术要点:为了快速扩展语义以处理数字比较,我们必须 I)在语法规范中引入数字,ii)修改原子公式中的满意度定义,以确保数字映射到自身。显然,全面概括地包含数字需要更多的技巧:鼓励非常不懒惰的读者从现有的框架开始思考如何做到这一点!].
这不是很棒吗?如果我们的模型反映了底层的客户表,我们可以问几乎无限多的问题,并确保能够精确地计算出答案——所有这些都只需要几行 Python 代码。
从玩具模型到现实
“从理论上来说,理论和实践之间没有区别。实际上是有的。”-y .贝拉
“作为推理的查询”范式具有形式逻辑的所有优雅和美丽:一个小的和很好理解的 Python 脚本可以用来回答目标领域中潜在的无限问题。不幸的是,它也有形式逻辑的所有缺点,这使得它在实验室之外的直接应用不像你希望的那样简单:
- 语义正如我们所定义的,它仅限于表达一些基本的概念和关系,但我们希望做得更多(例如,我们希望
sum关注上面客户表中的数字)。虽然可以扩展框架以覆盖日益复杂的结构,但这需要付出一些复杂性和人工成本; - 真实用例中的模型构建需要做出许多艰难的决定:在我们的玩具客户表示例中,我们仍然需要做出重要的选择,如何将表行映射到可以正式查询的域。用例越复杂,数据科学家就越难产生一个紧凑、完整、可扩展的形式域;
- 查询是用一种正式的语言完成的,这种语言对人类并不友好:用户必须知道如何将英语翻译成某种合乎逻辑的方言才能得到想要的答案。当然,一个好得多的 UX 将为用户提供一个英文搜索栏,并提供一个从自然语言翻译成正式语言的中间层——我们在所做的一些工作也是如此——因此利用了这种想法的一个版本,使查询尽可能地人性化[ 为倾向于历史的读者注意:定义正式语言的语义,然后提供英文到正式语言的翻译可以追溯到开创性的 PTQ
这些可伸缩性问题和其他技术原因(例如一阶逻辑中的完全通用推理的限制)在历史上阻止了计算语义像其他 NLP 工具一样在行业中普及。最近,一些研究项目致力于弥合基于向量的观点和基于集合论的观点之间的差距,试图两全其美:统计的可扩展性和灵活性,逻辑的组合性和结构。此外,来自概率编程社区的研究人员正在该框架内工作,将概率和组合性结合起来,以系统地解释语用现象(见我们自己关于主题的文章这里)。
在 Tooso ,我们的愿景一直是弥合人类与数据之间的鸿沟。虽然我们相信没有一个单一的想法能够解决的含义的谜团,并且这个谜题的许多部分仍然缺失,但我们确实认为,在人类历史上,没有比现在更好的时机来用全新的理论眼光和当今可用的令人难以置信的工程工具来应对这一挑战了。
在我们完全解决语言之谜之前,有许多用例需要* 一些* 语言理解,这可以释放巨大的技术和商业价值。
作为最后一个额外的考虑,从科学到“更大的图景”,让我们不要忘记,在这篇文章之后,我们现在应该准备好最终知道“生命”的意义是什么(轶事显然是由著名的语义学家芭芭拉·帕蒂引起的):我们必须将它翻译成一个常数符号生命,并使用一个运算符如|来表明我们正在讨论它在我们的模型中的扩展。所以,说到底,“命”的意义就是|life。也许这就是那个疯狂的奥地利人所说的:
即使所有可能的科学问题都被回答了,生命的问题仍然完全没有被触及。
但这显然是一个完全不同的故事。
再见,太空牛仔

这就是全部,伙计们:有数学倾向的读者有兴趣接受语义的更正式的处理,一般来说,形式逻辑的主题,被邀请从语言、证明和逻辑开始,继续可计算性和逻辑,最后用一阶模态逻辑探索可能世界的迷人概念。
如有要求、疑问、反馈,请联系jacopo . taglia bue @ tooso . ai。
别忘了在媒体、 Linkedin 、 Twitter 和 Instagram 上获取 Tooso 的最新消息。
感谢
感谢 Tooso 团队的所有成员对本文前一稿的建议和反馈。
Python 3 时代的塔尔斯基
"真理只能在一个地方找到:代码."
― 马丁公司
配套的 Github repo 包含 Python 3.6 中的一个工作“模型检查器”,即一个 Python 项目,给定一个公式和一些域,自动评估公式是否满足。
虽然代码被大量注释并且非常容易理解,但是我们在这里提供了对其主要部分的非常高级的描述;虽然我们不知道其他 Python 检查器也是以类似的精神构建的,但代码是作为本博客和相关项目的教育工具而不是作为高性能软件编写的(有趣的是,Bos 和 Blackburn 还在他们的书中哀叹实现“普通的”一阶检查器非常困难)。项目结构如下:
project_folder notebooks
tarski-2-pandas.ipynb fol_main.py
fol_grammar.py
fol_semantics.py
fol_models.py test_fol_semantics.py README.md
requirements.txt
核心文件如下:
- 展示了如何从静态集合中加载一个模型,实例化语法和语义的类,以及评估一个表达式。
fol_grammar.py是处理检查器语法部分的类——它在内部使用 lark 来解析类似 FOL 的表达式,它有一个内置的递归函数来检索公式中的自由变量。如果你想扩展/改变词汇或语法约定,这就是你应该开始的地方。fol_semantics.py是处理语义的类——该类公开了check _ formula _ satisfaction _ in _ model函数,该函数采用一个表达式和一个模型,将公式计算为模型中的True/False。这个类在一个带有部分赋值的模型中定义满意度,比经典的塔斯基的工作更多地遵循这个。如果您想添加语义规则或修改满意度以涵盖额外的数据结构(比方说,数据库而不是 Python 中指定的模型),这是您应该考虑的地方。fol_models.py包含了一些基本的模型,可以让你开始探索检查器的行为(一些模型对于测试也非常有用)。如果您有自己的目标域要建模,您可以按照提供的示例在这里添加一个 Python 对象,然后使用fol_main.py调用该模型上的检查器。test_fol_semantics.py包含一系列测试(我们通常使用 pytest 进行 Python 测试)来确保检查器在不同条件下的行为符合预期。
编码快乐!
度量元游戏
作为公司内部良好数据实践的管理者,我们数据专业人员经常被要求帮助设置指标,无论我们喜欢与否,我们都在围绕这个过程玩一个完整的元游戏。

It’s all games and moody lighting until someone loses an eye
度量设置是一项艰巨的工作。虽然有大量关于如何选择和挑选指标和 KPI(关键绩效指标)的建议,但它们都要求你非常熟悉企业的运作方式,并理解其根本目标是什么。
你必须确保事情被正确衡量,与你的主要目标有因果关系,或者至少有很强的相关性。它必须相对容易理解,你可以影响和改变,最重要的是,你只能选择其中的一小部分。平衡所有这些竞争因素是一门艺术。

So. Much. Ink.
然后,一旦你完成了所有的工作,你还有最后一个老板要处理——古德哈特定律。
"任何观察到的统计规律性,一旦出于控制的目的对其施加压力,就会趋于崩溃."
从本质上讲,你选择和使用的任何指标,人们都会找到一种方法来玩弄它,它对我们选择它的目的不再有用。这种游戏行为可能非常危险,因为它颠覆了最初创建指标的初衷,甚至可能违背初衷。
他们这样做可能是因为外在的动机,比如他们的年度奖金取决于此,或者他们这样做可能是因为内在的原因,比如他们只是想要一个高分。人类是怪异却聪明的生物。
一个公制的设定者应该做什么?
否决明显自私的指标
典型的情况是,销售团队希望他们的奖金基于带来的销售线索数量,而忽略了实际完成的交易数量(和规模)。显然,积累大量销售线索比达成交易更容易,这种衡量标准的游戏显然会导致浪费大量时间来产生永远不会达成的销售线索,从而损害实际达成的交易。
大多数真实世界的例子不会那么明显,但它们通常符合一个人相对容易操纵的指标模式,同时又不完全符合公司的目标。它们是被拉动的杠杆,而不是杠杆被拉动后系统的结果。人们往往只关注短期收益,而忽视长期影响。
当设定一个指标时,你应该经常问自己,为了达到这个指标,需要采取什么样的行动。戴上你的黑帽子,看看你是否能想出阴险的方法来“赢得”游戏。
接受游戏的发生,尽你所能去适应它
几乎任何指标都是可以博弈的,你一个人不可能想出一个给定指标的所有漏洞和后门,更不用说那些会受指标影响的聪明人了。因此,承认元博弈的存在,并问自己“如果这个指标被滥用,它会疯狂上涨,会发生什么,它会是一个净正数吗?”
一个例子是某人在脸书上的朋友数量,尤其是在早期。当然,肆无忌惮的人可以也确实在脸书上购买大量的机器人朋友,但平均来说,拥有更多联系的用户会让社交网络变得更强大、更有粘性。机器人可以作为一种扭曲力量单独处理,但从脸书的角度来看,出于自身原因试图最大化数量的正常人类可以被视为积极的。
免责声明:我从未与脸书合作过,也没有听说过他们的标准,我只是编造了一些说明性的例子。
总体而言,该指标与公司的核心使命越一致,就越有可能产生类似的积极关系。
控制出现的扭曲因素
和前面的例子一样,由于各种原因,一个度量标准可能是好的,但是仍然有明显的方法可以进行游戏。尽管遇到了挫折,您可能仍然认为这是一个正确的衡量标准,因为它对许多其他结果非常重要。在这种情况下,您可以通过明确地从指标中排除某些类型的行为(例如,排除所有内部用户),或者根除扭曲的来源(例如,禁止所有机器人),来建立针对游戏行为的防护栏。
虽然这是一种不令人满意的反应姿态,但抓住骗子的成本可能是你可以接受的。请注意,它催生了一系列关于如何发现和抓住骗子的新指标讨论。它的度量会议一路向下。
无论你选择什么,都要保持警惕
自由的代价可能是永远的警惕,但可悲的是,这同样适用于核心公司指标。人们需要时刻警惕不当行为。这真的很难做到,因为在事情顺利进行了一年之后,很容易变得自满。
至少,每隔一段时间(可能每隔 1-3 年),建议进行一次新的分析,看看最初使该指标具有吸引力的因素(与公司目标的一致性、简单性、变革能力)是否仍然有效。业务和人员会发生变化,您的度量标准也需要随之变化。
类似地,如果一个指标讲述了一个伟大的成长故事,其他指标应该讲述这个故事的变化,理想的是那些测量完全不同的系统或过程的指标。当一部分说了伟大的事情,而另一部分没有时,要保持警惕。
不要麻痹大意
很容易被所有这些问题淹没。我的建议是,做好你的系统运行的功课,获得反馈,然后花一两天时间思考效用和漏洞。之后,根据你所知道的,挑选看起来最好的。
你不太可能第一次(或者永远)就把你的核心指标做到完美。幸运的是,度量是我们为自己制造的工具。当它们不起作用时,我们可以改变它们。
其他参考文献
我只关注指标设置的游戏/滥用方面,因为我认为这是探索最少的部分。像往常一样,我从我的个人经历中汲取了很多,而且会有各种各样的差距。YMMV。
关于度量设置的一些更严肃的处理,从上到下,看看这些替代来源:
“构建更少缺陷的度量标准”——David Manheim——关于度量标准和古德哈特定律的学术论文
以及一个有趣的框架来定义新的指标:
一个心智模型和框架,你可以用于新产品、现有产品,甚至 PM 访谈
hackernoon.com](https://hackernoon.com/metrics-game-framework-5e3dce1be8ac)
微软数据科学家访谈
微软数据科学面试问题

在 Azure 和它的机器学习工具成为云计算市场上最大的服务提供商之后,微软一直是数据科学行业的一个大玩家。因此,在过去五年里,微软一直在缓慢但稳步地建设其数据科学团队,以成为招聘该职位的最大公司之一。
工作角色
微软数据科学家的角色变化很大,取决于你面试的团队。每一份微软数据科学工作都是不同的,从基于分析的角色到更多的机器学习任务。作为一家庞大的多企业集团公司,微软有不同的团队,从事语音和语言、人工智能、Azure 上的机器学习基础设施、云计算的数据科学咨询等工作。
所需技能
微软通常更倾向于雇用至少有 2 年以上数据科学工作经验的有经验的候选人担任中级职位。一般资格是一个定量领域的博士学位,以及在这些领域中的任何一个领域(DNN、NLP、时间序列、强化学习、网络分析或因果推理)的几年经验。
- 以前在 DNN,自然语言处理,时间序列,强化学习,网络分析,因果推理或任何相关领域的经验
- 精通以下任何数字编程语言(Python/Numpy/Scipy、R、SQL、C#或 Spark)
- 具有 AWS 或 Azure 等基于云的架构的经验
数据科学家有哪些类型?
微软有一个工程部门叫做数据和应用科学。这个部门的员工通常被分成团队,有三个主要头衔:数据科学家、应用科学家和机器学习工程师。根据团队的不同,他们的职能包括:
- 编写代码将模型交付生产。
- 为机器学习算法编写代码,供其他数据科学家使用。
- 直接或间接与客户合作解决技术问题。
- 致力于度量和实验。
- 开发产品功能。
微软数据和应用科学家角色的理想候选人应该能够应用广泛的机器学习工具和分析技术来回答广泛的高影响力业务问题,并以简洁有效的方式提出见解。
面试

Azure ML
初始屏幕
提交工作申请后,第一个电话面试的人可能是招聘人员,也可能不是,这取决于职位的资历级别。很多时候,招聘经理会先进行一次 30 分钟的面试,以了解你过去的经历。
预计电话面试的这一部分将分为两个部分。你会被问到你的背景和项目,以及一些技术性的面试问题。技术面试问题将更加理论化,解释机器学习概念如何工作,或者快速概率或统计问题。
例子:
- 套索和岭回归有什么区别?
- 你会如何向商业人士解释深度学习模型的工作原理?
- 对于非技术人员,你如何定义 p 值?
点击 查看我们的 机器学习面试指南。
技术屏幕
在招聘经理筛选之后,招聘人员将安排微软数据科学家进行第二次更具技术性的筛选。一般来说,这个屏幕是 45 分钟到一个小时,旨在测试纯粹的技术技能,以及你如何编码和解释你的思维过程。
技术屏幕由大约三个不同的问题组成,涵盖了算法、SQL 编码和概率统计的主题。期待类似于 Python 中的数据结构和算法的问题以及数据处理类型的问题。
示例:
- 给定一个单词数组和一个最大宽度参数,格式化文本,使每行正好有 X 个字符。
- 编写一个查询,从一个有 1 亿行的表中随机抽取一行。
- 你掷出三个骰子至少掷出两个 3 的概率有多大?
你即将登上去西雅图的飞机。你想知道你是否应该带一把伞。
你打电话给住在那里的三个朋友,分别问他们是否在下雨。你的每个朋友都有 2/3 的机会对你说真话,1/3 的机会用谎言来搞乱你。三个朋友都告诉你“是的”下雨了。
西雅图真的下雨的概率有多大?
在我们的互动指南中尝试解决微软的概率问题
现场面试
现场面试包括从上午 9 点到下午 4 点的全天活动。您将会见五位不同的数据科学家,并参加一次午餐访谈。
面试小组通常是这样的:
- 概率与统计
- 数据结构和算法
- 建模和机器学习系统
- 招聘经理和行为面试
- 数据操作
- 您还将在午休时间与一两位数据科学家进行一对一的交流,以了解更多关于微软及其团队的信息。这通常是一个小时的午餐面试,他们会让你休息一下或者谈谈他们正在做的事情。
现场访谈将主要是所有不同技术概念的组合。请记住学习不同环境下的不同模型评估指标、共线性下系数的偏差/方差权衡、关于采样方案的开放式问题、实验和 ab 测试设计、向 5 岁儿童解释 p 值、贝叶斯定理的不同概念,以及向面试官教授您选择的统计学习技巧。
微软的另一个重点是沟通,因为微软的数据科学团队在整个组织中都有合作伙伴,以确保团队正在做有用的工作。
你可以在面试查询或者 Leetcode 上找到很多数据结构和算法的问题。考虑到白板上的编码与电脑上的编码有多么不同,还建议拿一块白板来练习编写代码。
微软数据科学面试问题示例
- 你如何从 600 万个搜索查询中选择一个有代表性的样本?
- 求整数列表中子序列的最大值?
- 举一个你会使用朴素贝叶斯而不是另一个分类器的场景的例子?
- 你如何尽可能简洁地解释 MapReduce 的功能?
- ROC 曲线和敏感性、特异性、混淆矩阵的含义是什么?
- 自动完成特性:你会如何实现它,你能指出这个工具目前的缺陷吗?
- 描述合并给定的 k 个大小为 n 的排序数组的有效方法。
感谢阅读!
- 报名参加 面试查询 ,每周在你的收件箱里收到几个数据科学面试问题。
- 订阅 Youtube 上的 我的频道 获取数据科学模拟面试,指南,以及技巧和窍门。
- 需要具体的技能面试指南吗?查看我们对 SQL , 机器学习 ,python, 产品数据科学面试题 的深度分析。
百万美元的神经网络,第一部分:理解生物学基础
了解如何建立一个神经网络,并在这个由 3 部分组成的系列中赢得 165 万美元的 CMS 人工智能健康成果挑战赛
如果我告诉你,你可以学会使用机器学习——更具体地说,神经网络——来解决医疗保健中的一些最大问题,会怎么样?
你们中的一些人可能会感兴趣。其他的,就没那么多了。
但是现在,如果我告诉你,这样做,你就有机会赢得一百万美元,同时为人类的利益做出贡献,会怎么样呢?
这会引起你的注意吗?
如果是这样,这是你的大好机会。

Do I have your attention? Good.
医疗保险和医疗补助服务中心最近宣布,他们计划分配高达 165 万美元给鼓励开发人工智能在医疗保健领域的现实应用。
这项挑战被称为人工智能健康结果挑战,正如它的名字一样,要求提交使用人工智能(或机器学习,更具体地说)预测健康结果的作品:
医疗保险和医疗补助服务中心(CMS)医疗保险和医疗补助创新中心(创新中心)与美国家庭医生学会和劳拉·约翰·阿诺德基金会合作,发起了人工智能(AI)健康成果挑战。CMS 人工智能健康成果挑战赛将分配高达 165 万美元的资金,以鼓励人工智能在健康和医疗保健领域的进一步发展,并加速该技术的现实应用开发。
参与者将分析大型医疗保健数据集,并开发提案、人工智能驱动的模型和框架,以准确预测计划外医院和 SNF 入院和不良事件。
这发生在一个令人惊叹的时代,现在构建神经网络比以往任何时候都更容易,因为 Keras 现在充当了tensor flow 2.0的高级 API(不要担心——如果你还不知道,到本系列结束时你就会知道这到底意味着什么)。
现在你可能会说,“那太好了,但我以前从未编写过代码,更不用说构建神经网络了。”
谢天谢地,机器学习并不是真的要成为伟大的程序员。**
喘息 “亵渎!”你可能会说。

“You stink. You smell like beef and cheese! You don’t smell like a Data Scientist.”
现在这只是我个人的看法,所以要半信半疑——但机器学习更多的是理解算法背后的和学习如何** 机器学习 而不是编码。**********
当然,您需要牢牢掌握 Python。但是,让数据科学家脱颖而出的是对底层概念的非凡理解,而不是非凡的编码能力。*
*和 SQL 进行数据工程,处理数据库等。你大部分的时间都将在那里度过。不幸的是,这种很酷的机器学习只是大多数数据科学家日常工作的一小部分

From Forbes, “Cleaning Big Data: Most Time-Consuming, Least Enjoyable Data Science Task, Survey Says”
这就是为什么,在本教程的第 1 部分和第 2 部分,我们将花很多时间关注概念(第 1 部分的生物学基础;第 2 部分中的机器上下文),然后在第 3 部分中实际构建我们的神经网络。
神经网络的生物学基础
神经元解剖学
我们的大脑由神经元组成。没有变得不必要的复杂,神经元通过树突(图中那些看起来像头发的小家伙)接收来自其他神经元的大量输入。**
当这些输入在细胞体(细胞体,或“头”到树突“毛”)中达到足够的阈值时,一个动作电位被触发,这意味着信号或“消息”沿着神经元的轴突(细长的“尾巴”)传递,从轴突小丘(基本上是轴突的起点)开始,一路向下到达轴突末端(末端)**
轴突周围的髓鞘本质上是作为轴突电线的绝缘体,允许信号快速有效地传输。**
轴突终末连接(有点——它们实际上不接触】下一个神经元的树突,并通过被称为神经递质的化学物质将它们的信号穿过突触**(一个神经元的轴突终末和另一个神经元的树突之间的小间隙)(这是另一整桶蠕虫,我们在这里并不需要真正了解)。****
突触前的神经元和突触后的神经元分别称为前和后。**

Finally, for once, my undergrad neuroscience major is coming in handy! Image Source: Khan Academy
这里过于简单化了(对不起,神经科学家),但让我们来做:假设一个神经元从你的眼睛接收输入,并沿着它的轴突传递信号,并向控制你眼睑的肌肉传递输出。
如果信号足够强(即大量的阳光),就会触发一个动作电位,信号就会向下发送到控制你眼睑的肌肉(即闭上你该死的眼睛,这样你就不会失明)。
动作电位
让我们来看一个例子,让你了解这些神经元是如何相互传递信号的:
让我们想象一下,这些小树突中的每一个都接收到一个输入,我们将为其分配一个-5 到+5 的合成值。在这个假想的例子中,胞体沿着轴突传递信息的阈值是+10。
假设我们得到三个+5 的输入,两个-3 的输入,三个 0 的输入。(35) + (2(-3))+(30) = +9,因此不会触发动作电位。现在,假设我们得到两个+5 的输入,两个-3 的输入,三个+2 的输入。(25) + (2(-3))+(32) = +10,所以我们会得到一个动作电位。**
如果这个总数是 10,20,或 100,这并不重要。只要达到或超过阈值,就会触发同等强度的动作电位。如果没有达到或超过阈值,什么都不会发生* —没有微小或部分信号。这就是所谓的“全有或全无”原则。***
让我们总结一下
神经元通过树突接收输入。这些输入然后在细胞体中相加。如果集体输入达到或超过该神经元的特定阈值,则触发动作电位(回忆“全有或全无”原则)。**
然后信号沿着轴突向下传播,从轴突丘开始,一路向下到达轴突末端,在那里它转变为化学信号——即神经递质穿过突触,从突触前神经元到突触后。**
好的,太好了。但是为什么这很重要,接下来呢?
如果你要建立一个人工神经网络,你需要牢牢掌握它们所基于的生物系统。
理解生物神经元中的动作电位将有助于你理解为什么像激活函数这样的东西对人工神经元如此重要。**
但是现在你理解了生物神经元的基础,我们终于可以问自己,“这如何转化为机器环境?”
关于这个答案,请继续关注第二部分,在那里我们将看到人工神经网络如何学习——深入探讨反向传播和梯度下降的主题。**
然后在第三部分中,我们将综合所有这些经验教训,并利用它们使用 TensorFlow* 为我们自己构建第一个神经网络!***
.
.
.
有兴趣使用机器学习在医疗保健领域产生真正的影响吗?了解我们如何 解决医生数据不准确的问题 并查看我们的网站:orderlyhealth.com
百万美元的神经网络,第二部分:机器学习直觉
了解如何建立一个神经网络,并在这个由 3 部分组成的系列中赢得 165 万美元的 CMS 人工智能健康成果挑战赛
作者注:在 第一部分 中,我们讨论了价值 165 万美元的 CMS 人工智能健康成果挑战、擅长数据科学需要什么,以及神经网络的生物学基础。如果你还没有,读一读(大约 6 分钟。)在这里继续之前。
这个系列的这个特殊部分变得相当长。因此,我将分为 2(这部分)和 2A。然后在第 3 部分,我们将按照最初的计划实际构建我们的神经网络。
所以,现在你已经对人工神经网络(ann)的生物学对应部分有了牢固的理解,是时候进入 ann 本身了。
以下是我们将涉及的主题的简要概述:
- 从生物学到计算机科学:神经元到节点
- 神经网络结构:输入、隐藏和输出层
- 分配和更新权重:神经网络如何学习
- 将输入转换为输出:激活功能
现在,事不宜迟,让我们开始吧。
从生物学到计算机科学:神经元到节点
正如我们在第一部分中所讨论的,生物神经元接收来自其他神经元的大量输入(通过树突)。
这些输入被相加(在体细胞中),如果相加的输入达到或超过该神经元的指定阈值,则信号(通过动作电位沿轴突的长度向下传输。
这个输出然后通过突触(通过化学信号)从突触前神经元的轴突末端传递到突触后神经元的树突。
就像它们的生物对应物一样,人工神经元(或者通常被称为节点)从网络中的其他神经元接收大量输入,并传递输出。
神经网络结构:输入、隐藏和输出层
在人工神经网络中,节点(如下图圆圈所示)属于三个不同的层中的一个:输入层输入层、隐藏层隐藏层或输出层输出层,它们都由突触连接(如下图箭头所示)。

正如您可能猜到的那样,输入层从数据集的一行数据中接收输入。给定输入集中的每个输入来自不同的数据元素,都来自同一行。
例如,让我们看看下面的数据集。想象一下,你和我一起经营一家大型国际公司。现在想象一下,我们正面临一个员工流动率很高的问题。我们想做的是尝试并预测我们不同的员工中哪些人最有可能离开,这样我们就可以围绕提高员工保留率设计有效的计划。
假设我们已经使用我们的员工数据训练了我们的神经网络,我们现在使用以下数据进行一些预测。

我们神经网络的输入将是姓名、职位、办公室、年龄、开始日期和薪水。因此,给定的一组输入将全部来自同一行,可能如下所示:
Sonya Frost; Software Engineer; Edinburgh; 23; 2008/12/13; $103,600
或者重新使用我们之前基本神经网络的图像:

现在需要注意的是,输入层没有应用任何计算(或激活函数)——没有输入求和,没有达到或超过阈值。其目的仅仅是向隐藏层节点传递信息。
隐藏层节点从输入层接收输入,执行计算,并将输出传递给输出节点。输出节点执行最终计算并给出答案。这个最终输出是对来自同一行的数据的响应——在我们的例子中,这可能代表 Sonya 辞职的可能性,比方说在 0 到 1 的范围内可能是 0.6。
这个最终输出可以是连续的、二进制的、或分类的;您需要的输出类型将取决于您的特定用例/问题。
在我们的例子中,概率分数将是最有帮助的,所以我们将在输出层中使用一个 sigmoid 函数。如果你在这个阶段不确定这意味着什么,不要担心——我们一会儿就会讲到激活功能😃。
该过程实质上对下一行数据重复进行。再次使用我们的示例数据集,这将是:
Doris Wilder; Sales Assistant; Sidney; 23; 2010/09/20; $85,600
在更复杂的神经网络的情况下,也称为深度神经网络,其中是多个隐藏层,隐藏层的节点从前一个隐藏层的节点接收输入,直到最后一个隐藏层将其输出发送到输出层。
这样想一想:
回到第一部分中的示例,假设从数据集接收数据的输入图层等同于您的眼睛接收视觉刺激,即强烈的阳光。输出层的最终输出相当于控制你眼睑点火的肌肉,使你闭上眼睛。隐藏层是中间的所有复杂步骤,使它看起来像魔术一样。
分配和更新权重—神经网络如何学习
那么还记得在第一部分中,我们如何说理解动作电位将有助于理解激活功能吗?这就是最终派上用场的地方。
节点间的突触或连接被赋予随机强度,也称为权重。
神经网络通过更新这些权重来学习,增加一些节点之间的连接强度,削弱甚至消除(或修剪)其他节点之间的连接。
这正是人类大脑的工作方式——加强一些联系,删减一些。
那么在各个节点内部发生了什么呢?
暂时回到生物神经元:在生物神经元的胞体(细胞体)中,所有的输入都加在一起。如果总和超过特定神经元的给定阈值,则触发动作电位。
在人工神经元(节点)中,节点的所有输入都乘以各自连接的权重,并求和在一起,产生加权和。
将输入转换为输出:激活功能
因此,一旦我们有了加权和,就应用一个激活函数将这些输入转换成输出,这决定了什么样的信号被传递(或不传递)到下一个节点。激活函数引入了非线性并使神经网络能够分析图像、音频和视频等复杂数据。
有许多类型的激活函数,其中一些更适合用于隐藏层(例如 ReLU),而另一些更适合用于输出层(例如 sigmoid):
- 二进制步骤 →产生 1 或 0 输出;当你需要一个简单的是/否预测时,这是很棒的

Binary Step Function
- Sigmoid 函数 →在输出层预测概率时非常有用,因为每个概率都在 0 和 1 之间

Sigmoid Function
- 双曲正切(又名双曲正切)及其变体(LeCun 的双曲正切,硬双曲正切)→本质上是范围从-1 到 1 的缩放的 sigmoid 函数

Tanh function
- ReLU(整流线性单元)及其变种(漏 ReLU ,PReLU,eLU 等。)→至今仍是神经网络中最常用的函数之一。使计算变得简单而有效。Leaky ReLU 变体解决了传统 ReLU 常见的“死亡神经元”问题。


ReLU vs Leaky ReLU
- SoftMax → 一种 sigmoid 函数,最适用于多类别分类问题的输出层(例如,输入是一个神奇宝贝的图像,输出是特定神奇宝贝是火、草或水类型的概率)

SoftMax function
让我们回顾一下
所以回到第一部分,我们讨论了人工神经网络的生物学基础——人脑。重要的是,当神经元从其他神经元接收输入时,这些输入在细胞体(细胞体)中相加。如果这些输入的总和达到或超过特定神经元的给定阈值,则动作电位被触发,信号沿着轴突传播,并穿过突触到达下一个神经元。
在第二部分中,我们已经讨论了这如何转化为机器学习环境。节点,或者人工神经网络中的单个神经元,通过突触相互连接。神经网络由三个独立的层组成:输入层输入层(传递来自数据集的数据)、隐藏层隐藏层(神经网络的真正魔力发生在这里),以及输出层(在给出最终答案之前应用最终计算或激活函数)。
初始输入是来自数据集的数据元素,都来自同一行或观察(按照我们之前的例子,开始日期、薪水和办公室位置)。最后的输出也是针对同一行的(根据我们前面的例子,雇员离开组织的概率)。在该行/观察的数据元素通过神经网络运行之后,该过程在下一行/观察中再次重复。
突触具有不同的权重或强度,当神经网络学习时,这些权重或强度会更新(加强或削弱)。给定节点的输入乘以它们的权重并求和以给出一个加权和。
那么,这些节点如何知道应该传递什么样的信号呢?该节点取其输入的加权和,并应用一个激活函数。有几种激活函数,有些更适合用于隐藏层,如 ReLU 函数,或用于输出层,如 sigmoid 函数。
输出层使用的激活函数很大程度上取决于你需要什么样的答案。例如,sigmoid 函数在 0 到 1 的范围内给出了一个很好的概率。如果您需要将概率分配给多个类别,那么使用 SoftMax 函数可能会更好。
不幸的是,第二部分很长,所以我们将在 2A 的一部分完成我们的机器学习直觉,我们将讨论隐藏层的重要性,最小化成本函数,梯度下降和反向传播。然后在第 3 部分,我们将最终进入实际建设我们的神经网络!
对使用机器学习在医疗保健领域产生实际影响感兴趣?了解我们如何 解决医生数据 不准确的问题,并访问我们的网站orderlyhealth.com。**
人工智能时代的道德指南针

几年前,当我问我们的一位数据科学家,我们是否可以按照购买力和某种形式的信用价值来划分我们的数据(根据设计,这些数据只是匿名 id)时,他的第一反应是“我们或许可以做到”。潜在客户希望找到财务困难的人,他们“根据自己的能力过度消费”,以创造新的金融产品(可能是高息信用卡)。他们想了解如何制定媒体计划来接触那些已经囊中羞涩的客户。这是对处理大数据和人工智能的权力和责任的觉醒(不是第一次,但很强烈)。
请注意,我们没有 PII,没有人民 HHI 或购买历史的直接数据,也没有信用评分作为数据集的一部分。没有什么特别的约会。他非常肯定这是可以做到的。所有需要做的就是结合我们已经拥有的公共数据源(在线、社交和公共政府来源),添加一些人工智能,让系统完成它的工作。这些结果不可能适用于个人。尽管如此,它最终还是会影响弱势群体。我们从未追求过这个机会。
如果潜在客户是一家推广金融教育的公司,我们应该采取不同的行动吗?
我不认为我会面临这种类型的决策,但随着我们用机器从大型数据集提取洞察力的能力增长,这些决策越来越多。
一个更基本的难题是:
在上个世纪的大部分时间里,市场研究人员认为自己是一个无害的、相当“中立”的参与者,他们只是提供数据给其他人做决定。我们的目标是市场(!)研究人员总是要了解消费者,通常是总体了解,通常是群体了解。更好地评估他们的需求,这样营销人员就可以制造更好的产品,更好地为他们服务。听起来很简单,但实际上并不容易。现在肯定要复杂得多。
今天,随着大型数据集的容易和廉价获得,以及人工智能的准备,我们可以更有效地做得更详细,我们总是说我们的目标。提供见解。我们不仅可以更有效地筛选数据,找到以前无论如何努力都无法识别的联系。但是,我们现在可以(许多公司实际上经常这样做)让我们的客户根据这些发现立即行动起来,创建优化的广告和活动,根据这些发现购买媒体,计算投资回报率,并计算这些获得的客户的终身价值——所有这些都不需要写报告。
“这是你的发现,这是我们认为你应该做的”报告变成了“这是 10 万个微细分,这是他们的动机,这是一组你可以发送到你的 DMP(数据管理平台)的 id,以建立一个即时的相似者池并向他们做广告”。顺便说一句,你应该使用这些创造性的执行,让你的广告服务器做创造性的优化,以最大限度地提高投资回报率。
我们仍然可以通过坚持使用长相相似的模型而不是直接销售个人,并坚持从我们用来识别细分市场的样本中删除任何 id,或者我们只提供不能反向工程到个人的汇总结果(我的公司 helix a T1 就是这样做的)来证明我们的行为。但是我们必须面对这样一个事实,今天有了人工智能,我们能够(越来越准确地)预测我们从未收集(或意识到我们有能力报告)的事情。我们不再仅仅是分析的旁观者,而是将顾客传递给营销人员的营销机器不可或缺的一部分。
事实上,作为研究人员,我们有喜欢数据的倾向,并且喜欢从数据池(如今是湖泊)中提取知识的能力。很容易忘乎所以。
因此,我们需要保持警惕,关注我们自己的兴奋,并经常后退一步,评估和询问我们是否应该做一些事情(而不是我们是否可以做一些事情),以及我们的行动或不行动的后果是什么。我们需要使用我们的道德指南针,不断地问这条线在哪里,因为没有它,没有持续的内部对话,很容易越过它。
我对数据了解得越多,人们对我就越感兴趣
我是如何辞去公司的全职工作,去攻读数据科学学位的

Photo by Razvan Chisu on Unsplash
这篇文章总结了我辞去专业服务公司的全职工作,决定攻读商业分析硕士的想法。我希望我要说的话能在某种程度上帮助你。

Inspiration: Jay Shetty
我选择攻读硕士学位的根本原因是因为我对学习的渴望。我们生活在一个社会不断扩张的时代,许多不同种类的职业得到了认可。随着多样化社区和工作场所的增加,有着巨大不同经历的人们正在想出创新的方法以他们自己的方式做出贡献。对我来说,分析是真正引起我共鸣的东西,我对这个主题研究得越多,我就越好奇。我开始意识到这是一个我可以尽我所能做出贡献的领域。
作为一名工程师,我一直支持自己成为一名喜欢动手的技术专家。我花时间去理解我正在做的项目的复杂性。随着我逐渐成为一名顾问,我开始意识到技术是如何推动商业发展的。一家企业的核心本质不是它如何使用最先进的机器或拥有最复杂的算法,而是它试图解决的市场问题。像“伟大的组织和优秀的组织有什么区别?”这样的问题为什么一家公司的领导团队会选择一条有时看起来不是最佳解决方案的道路?以及“一些出色的同事如何在个人层面比在团队中做出更好的贡献?”开始引起我的兴趣。考虑到这一点,商业分析似乎是一门为我量身定制的课程。

Photo by Austin Distel on Unsplash
我在这个项目中的前 6 个星期是非同寻常的,我在精神和身体上都受到了挑战,与一些最聪明的年轻专业人士在一起,并参加了一些迫使我打开思维和全面思考的讲座。对我来说,最大的调整是,尽管我每天朝九晚五地忙碌,但这是非常不同的。连续 3 个小时保持思维敏捷和集中注意力会在一天结束时导致疲劳。在工作中,你有更多的灵活性来更好地管理你的时间和精力。但是几个星期过去了,我开始适应了。我们的适应能力有时是我们最被低估的品质之一。如果你在某件事情上坚持的时间足够长,你的大脑就会发展出神经通路,然后它就会变成一种习惯。
我感谢我的家人和朋友以及他们对我的支持。这个项目让我付出了很多,我有时无法回报他们对我付出的努力。在这当中,他们仍然支持我并为之努力,今年剩下的日子肯定会很艰难,但我认为这将是对我们决心的一个很好的考验。他们的耐心和理解绝对值得称赞。
虽然我可以写很多东西,但迄今为止,我从这个项目中得到了五个关键收获:
- 商业的真正本质是什么?你可以在一个组织中工作多年,并认为你了解它是如何运作的。然后你和一个不同部门的同事聊天,突然你觉得他们完全来自不同的组织。我以为我对商业有些了解,但是我学得越多,我意识到我知道的越少。我们在本模块中的商业主题讲座是我认为我一生中学到的最好的课程。营销教会了我如何以结构化的方式分解和处理案例研究,金融教会了我作为一个组织的领导者的责任,人力资源告诉我人有多重要,战略告诉我企业的核心是什么。当我从那次演讲中走出来的时候,我感觉自己被赋予了力量,因为我知道我只是触及了表面,但是我可以看到商业是如何影响和改变社会的。
- 作为团队领导 在我的职业生涯中,我一直很感激为那些给我成长空间并在我犯错时支持我的经理们工作。处于关系的另一端是一种全新的体验。在我的第一次辛迪加会议上,我意识到你的团队有可能自然而然地选择你作为领导者。我见识了领导一个团队是什么样的。当人们信任你的方向和指导时,很少有什么能比得上这种感觉。这可能会令人望而生畏。我利用自己与优秀经理共事的经验,尽最大努力反映我喜欢他们的地方。建立良好的团队士气,确保每个人都感受到被倾听和被欣赏,定期反思我们的进步,这些对我来说都非常有效。最激励我的是我真诚地关心个人,我最大的收获是当我的队友非常害怕公开演讲时,看到他在观众面前讲话,我感到多么自豪。当我更担心团队的表现而不是我的表现时,我知道我正朝着正确的方向前进。
- 如果不是坐在我旁边的那个人,这个模块不会像现在这样容易受影响。一个来自南非的非盈利组织的联合创始人拥有一个博士学位是令人印象深刻的,但更重要的是,他谦逊的个性和非常引人注目的头脑可能比我更喜欢学习,这使他在我看来是一个真正独一无二的人。作为工程师同事,我们发现课程的一些部分对我们来说是新的,但不断地交谈和相互分享想法是吸收信息的有效方式。有一个朋友能够把你和他的经历联系起来,让你成为一个全新学习过程的一部分,这让人耳目一新。
- 沟通是最重要的资产 与一群聪明人一起工作意味着会有很多精力和想法涌现出来。虽然这有一个巨大的积极意义,但这意味着试图找到最佳解决方案会变得同样具有挑战性。你找到解决办法的唯一途径就是交流。如果每个人都觉得他们处在一个他们的想法和观点被听到和欣赏的空间,你会惊讶于事情是如何一起流动的。对于那些愿意分享的人来说,我认识到首先成为朋友是很重要的。在一起相处、共进午餐或打乒乓球的时间可能和真正坐下来工作一样重要。当团队中有一种共同的责任感时,我们会一起变得更好。我确信,一个不怕互相交流的团队从长远来看会做得很好。我希望这种学习能伴随我的余生。
- 数据是好的,但人更好 唯一比从数据中获得洞察力更好的事情是揭示人们如何获得这些洞察力的故事。我们有机会坐下来听其他小组作为作业的一部分所做的报告。我经常记下我喜欢的他们的想法和思考过程。一些团队可以轻松地一起工作,而另一些团队则有创新的想法。同样的数据迫使同学们发挥创造力和独创性,这可能是所有学习中最有价值的。我希望这能让我更加注意和意识到我们作为个体所拥有的无限潜力。
昨天发生在我身上最好的事情之一。我以前收到过来自过去的人的致谢,在接受称赞时,我通常会感到不舒服。我认为我们学会接受和欣赏人们对我们说的好话是非常重要的。我还在努力。
我的一个团队成员昨天给我发了这条消息。在我收到的致谢中,这将是我最亲近的一个,我希望这是真的。

A text message by a team member
她提到她对演示感到紧张,我提到这是团队的努力。我选择穿绿色的衣服,只是因为她说那是她唯一的正式衬衫,她不想引人注目。我惊讶地发现这对她来说如此重要。我之前撒了谎,这将是我从本模块中获得的最大收获。我逐渐意识到 小事要紧 。无论是用你自己的方式来表达你对某人的支持,还是在交谈时关掉手机,让你全神贯注,或者发送一条礼貌的信息来感谢某人,感谢他们的时间。总之,你能做的最基本的事情就是对人友好。一个朋友曾经告诉我,他有时会惊讶为什么这么多人连这都做不到。
我觉得这是总结我的想法的合适的内容。教育系统有很多问题,我希望有一天我能够改善这些问题。尽管我还是个孩子的时候,我就一直想去世界上最有声望的大学学习(斯坦福大学是我的首选),墨尔本商学院似乎也反映了这类学校的一些声望。更重要的是,这取决于你能从自己的经历中获得什么。有这么多的事情要考虑,我很高兴有这个时间休息,这样我就可以重组,得到一些休息时间。充电也是很有必要的,因为我很兴奋能体验节目的下一章,我有一种感觉,这将是辉煌的一年。

Photo by delfi de la Rua on Unsplash
与哥伦比亚大学数据科学主任的真实对话
独家 TDS 采访
人工智能伦理、计算思维和运行微软研究
面试官:TowardsDataScience.com 项目负责人 Haebichan Jung 。旧金山 Recurly 的数据科学家。
受访者:Jeannette Wing博士,Avanessians 数据科学研究所主任,哥伦比亚大学计算机科学教授(2017-)。微软研究院前企业副总裁(2013–2017)。卡内基梅隆大学计算机科学系前系主任(两次)。
你在微软研究院的主要职责是什么?
运行公司研究实验室有两个主要功能。
- 我负责基础研究实验室。它是关于在所有形式的研究中推动最先进的技术。那时,微软研究院(MR)已经不仅仅覆盖计算机科学(CS)了。我们有生物学家、社会科学家、经济学家等。
- 我与微软的核心业务部门进行沟通,确保 MR 研究人员开发的伟大技术能够为业务部门所用,并确保业务部门在技术和预测未来方面永远领先一步。
我负责全球所有研究实验室的这两项工作,例如位于雷蒙德、纽约市、剑桥(英国)、班加罗尔(印度)和北京(中国)的实验室。
你参与了微软对人工智能项目的投资吗?如果是,你面临过哪些挑战?
我参与了与机器学习、人工智能和数据科学相关的研究投资,更广泛地说,是我们雇佣的人员和支持的项目,以及我们与业务部门的合作。我当时在一个名为“人工智能和研究”的实际业务部门。该业务部门的人工智能部分与其他业务部门合作,以确保其他业务部门了解最新的 ML 和人工智能技术,以及如何利用来自公司研究部门的研究想法。
你提出并推广的“计算思维”是什么?
计算思维(CT)是用计算机(无论是人还是机器)能够有效执行的方式来表述问题并表达其解决方案的思维过程。这是一个复杂的定义,每个词都非常重要。但是为了更直观地理解 CT 是什么,它像计算机科学家一样思考。
计算机科学家每天都在使用某些技术和方法来解决问题。有些是:
- 我如何设计一个算法来解决这个特殊的问题
- 我如何将这个特殊的问题分解成更小的部分
- 我如何定义抽象层
- 我如何定义组件之间的接口
这个问题解决技术的集合和一个人处理一个大系统或大问题的方法的集合——这就是我所说的像计算机科学家一样思考的意思。
我在 2006 年写的关于计算思维的文章有两个目的:
- 大约在 2004-2005 年,我们经历了网络泡沫破灭。每个人都在逃避计算机科学。许多本科院校的计算机专业招生人数都在下降。人们担心他们是否应该关闭计算机科学系。我写这篇文章的一个原因是告诉作为计算机科学家的我们自己,我们没有什么可担心的。这些事情循环往复。而且,我们有一种对大家都有利的思维方式,不管你是不是计算机专业的。那篇文章的目的之一是说计算机科学是为所有人服务的。我不是说每个人都要主修 CS。我的意思是,每个人都可以从 CS 提供的一些概念中受益。思维概念。这就是我使用计算思维这个术语的原因。
- 当时,CS 的入门课程差不多就是“Java / C++ /你最喜欢的编程语言入门”。这让许多想体验计算机科学并了解该领域所能提供的东西的学生望而却步。因此,这篇文章也让我们 CS 社区的人说,“在教授 CS 方面,我们能提供的比如何编程更多”。

实际上,如何编程只是你作为一个计算机科学家所学习的一项技能。比知道如何编程更重要的是 CS 教给学生的解决问题的技巧。如果你不想成为一名计算机科学家,这些技能甚至比知道如何编程更重要。
自 2006 年以来,不仅双方的界面发生了变化,而且关于如何将计算机科学纳入全球 K-12 教育的讨论也越来越多。

什么是数据科学研究所(DSI)?
DSI 是一个大学范围和大学级别的机构。它与校园内的每所学校和校园内的所有其他机构/中心合作。这确实证明了我的观点,即数据无处不在,每个人都可以从分析我们拥有的数据中受益。我们与历史/英语学院、教师、医学院(基因组学、公共卫生)、法学院、商科学生等合作。
DSI 有一个由三部分组成的使命宣言,我希望它能传达我的抱负。
- 推进数据科学的最新发展。这实际上是推动基础研究。对于数据科学来说,就是定义领域。这是一个新兴的领域。无论如何,学术界仍在试图弄清楚数据科学到底是什么。我希望哥伦比亚大学带头定义什么是数据科学。
- 通过应用数据科学改变所有领域、专业和部门。
- 确保负责任地使用数据造福社会。这是为了应对社会在能源、社会公正、气候变化和医疗保健方面的巨大挑战。负责任地使用数据说明了收集数据和分析数据(尤其是与人相关的数据)时的道德和隐私问题。我认为数据科学作为一个新兴领域,强调对数据的伦理关注是很重要的(CS 错过了这条船)。
这三个组成部分可以总结如下:为善的数据、为善的数据和数据责任。
您能谈谈该研究所的一些创新数据科学研究吗?
我可以举出一些具体的研究例子:
- 在因果推理中,我们有一个结果,讲的是一个人可以用比单一因果推理假设更弱的方式进行多重因果推理,但在现实世界中比单一因果推理更普遍。
- 显示数据科学如何应用于任何领域研究中的应用。我们有从事生物学、历史、天文学、材料科学、医学等领域工作的人。具体谈到医学,我们有一个非常有趣的数据集,叫做 OHDSI,我们在哥伦比亚协调,它有 5 亿个独特的患者记录。

你能就人工智能中的伦理问题发表更多评论吗?这个话题不常被谈论,但对所有数据科学家来说都是开创性的。
我们所了解到的是,人们对人工智能和机器学习应用于几乎所有事情感到非常兴奋:对购买的书籍和观看的电影提出建议,自动驾驶汽车中的计算机视觉系统,对医疗进行预测/分类。
当谈论书籍推荐时,出错可能没关系——我们不会让最终用户感到不安。但是当谈到自动驾驶汽车或医疗诊断时,我们需要确保这些系统是正确的、可靠的、安全的、有保障的,同时也是道德和公平的。
人工智能的另一个应用领域是决定某人是否应该被保释。我们正在决定是否雇用你。你希望所有这些决定都是公平的。但是如果模型是根据有偏差的数据训练的,那么模型就会有偏差,这是不公平的。
所以突然之间,这些 ML 模型被用在安全关键,生命关键的情况下,在做关于人的决定时,这些决定将会影响我们一生。我们想确保这些模型是公平的,它们的结果是可信的。现在没有理由相信任何事。因此,我正在推广一个名为“可信人工智能”的整体领域,来研究特定人工智能模型在上下文、每个任务、每个领域中的安全性、可靠性、公平性、健壮性等所有这些属性。
如需了解对 Jeannette Wing 博士的完整采访,请点击此处观看 YouTube 视频。
阅读容格在媒介上的作品。项目负责人@ TDS |数据科学家@ Recurly。每天,Haebichan Jung…
medium.com](https://medium.com/@haebichan) 
重新思考人工智能/机器学习的 DEVOPS
对 AI/ML 敏捷性的需求正迫使企业开发人员进行调整。这里有一些实用的步骤来加速你的 AI/ML 生命周期。

模型不同于应用程序
现代企业 IT 环境极其复杂。对于应用程序,DEVOPS(一组功能、工具和自动化程序)有助于管理这种复杂性,从而显著提高了企业的交付速度。
然而,AI/ML 模型的生产之路带来了几个额外的挑战,超出了大多数企业 DEVOPS 环境的能力。事实上,这些挑战的影响相当大:麻省理工学院斯隆管理学院和波士顿咨询公司的一项研究强调,只有 5%的公司在业务中广泛使用模型。事实证明,将一款车型投入生产是一个艰难的过程。
很明显,AI/ML 最困难的部分发生在模型实际创建之后。这个问题的根源是基于一个错误的信念,即因为模型和应用程序“仅仅”是软件代码,它们可以以类似的方式管理。相反,企业开发运维能力必须适应 AI/ML 生命周期的需求。
AI/ML 的生命周期是由数据变化的速度驱动的
企业应用程序通常是具有编码逻辑的自包含单元,以一致和确定的方式运行,独立于它们所作用的数据。另一方面,一个模型在生产中只会对与它被训练的模式相似的数据作出一致的反应。
如果数据中的模式在生产中“漂移”很大,那么模型对该数据的响应可能会产生重大的意外和潜在的负面后果。当一个模型的效能由于数据漂移而下降时,那么只有一个反应:尽快重新训练和重新部署该模型。
这种对更频繁甚至按需发布周期的需求将迫使企业 DEVOPS 适应 AI/ML 生命周期所需的速度和敏捷性的新水平。
AI/ML 需要新的工具、环境和安全考虑
AI/ML 开发使用许多与传统应用程序开发类似的工具,例如编辑器、源代码管理,但是用于创建模型的语言、支持库和框架对于典型的企业 IT 团队来说可能是陌生的。
此外,在企业投资分析功能的情况下,它在很大程度上专注于更传统的商业智能工具或专有分析功能(例如,SAS),但是,新的 AI/ML 工具和框架在很大程度上是开源的(例如,TensorFlow/Keras)。虽然不一定是一个大的障碍,但是新的工具、库和框架必须引入到企业开发运维能力中。
在“代码”级别,模型是寻求识别数据模式的算法。这些模型基于大量数据进行训练,需要的计算空间不同于大多数企业中可能提供的计算空间,而且要大得多。
在企业内部建立必要的基础设施(例如,GPU farms)已经被证明是困难的、昂贵的和耗时的,并且已经成为许多企业内模型交付的障碍。这些障碍促使许多企业考虑将模型开发和培训迁移到云中。然而,虽然云提供商显然拥有必要的可扩展计算足迹,但将训练数据迁移到云会带来巨大的数据安全挑战。
如今,只有少数行业(例如,拥有 PII 或 HIPAA 的金融服务、医疗保健)受到严格的数据法规的影响,但是,在未来,安全考虑因素肯定会成为大多数企业优先考虑的问题。事实上,世界上最大的单一市场欧盟最近制定了通用数据保护条例(GDPR) ,严格管理数据隐私。
就连脸书,正如脸书首席执行官马克·扎克伯格在最近的一篇文章中所强调的,也在为更广泛、更强有力的数据隐私和保护监管提供令人信服的理由。
显然,数据隐私和保护将很快影响并极大地改变企业的数据管理和开发运维能力。因此,关键问题是:DEVOPS 功能如何发展以满足 AI/ML 模型开发所需的关键数据隐私、保护和安全?
随着 AI/ML 在企业中的采用明显加快,传统的 DEVOPS 流程必须改变,以适应:(a)新的工具和框架,其中大多数是开源的,(b)将 AI/ML 工作负载从内部数据中心迁移到云,以及(c)随着企业 AI/ML 工作负载迁移到云,不断发展的安全策略和技术需要管理数据访问权限。

Photo by Christopher Burns on Unsplash
AI/ML 治理提出了新的要求
AI/ML 治理的目标是确保提供证据来证明一个模型及其交付过程能够生成可重现、可追踪和可验证的结果。
今天,包括银行、医疗保健、生物技术和政府许多部门在内的许多行业已经有了这些监管要求,但是,很少有人会讨论拥有一个规范的 AI/ML 生命周期的好处,它可以提供可重复、可跟踪和可验证的结果。(关于这个主题的更多信息,请参见我的 AI/ML 治理文章)。
提供这些能力的含义强加了它们自己的挑战:再现性不仅需要维护模型源代码,还需要维护与用于训练模型的文件的永久关联;可追溯性要求维护模型及其训练文件与原始数据文件之间的关联,以及用于创建训练文件的任何转换脚本;并且可验证性要求模型生命周期生成的输出——例如,培训验证日志,或者证明道德/偏见验证的模型测试输出——也必须归档并链接到模型。
大多数传统企业应用程序将越来越需要人工智能/ML 所需的深度和广度的工件和指标捕获。企业开发运维必须被扩展以支持 AI/ML 强加的需求,从而解决模型的可再现性、可追溯性和可验证性。
企业开发运维只是 AI/ML 的一个起点
模型不同于传统的应用程序,这对企业开发运维能力提出了新的挑战:模型对数据的依赖推动了开发运维速度的提高;新工具、增加的安全约束和云功能的集成对企业的开发运维流程提出了新的要求;模型需要新的治理级别来确保可再现性、可追溯性和可验证性,这需要模型生命周期工件和度量捕获的新深度和广度。
这些挑战并不是不可克服的,但必须有所计划。在许多方面,企业 DEVOPS 必须被视为一个起点,必须为可伸缩和敏捷的 AI/ML 进行扩展。
市场和客户细分最重要的数据科学工具
使用 K-means,让 AI 告诉你有多少段(实际上是)。

市场和客户细分是任何公司最重要的任务之一。完成的细分将影响营销和销售决策,并可能影响公司的生存。
令人惊讶的是,尽管机器学习取得了进步,但很少有营销人员使用这种技术来增强他们至关重要的市场和客户细分工作。
在本文中,我将向您展示如何使用一种简单而强大的机器学习技术 K-means 来增强您的细分分析。学会这一点会让你比你的竞争对手(和同事)更有优势。
那么 K-means 是什么?
K-means 是一种流行的聚类算法,用于无监督机器学习。它将相似的数据点分组到预定数量的组。
让我为你解释每个术语:
- 聚类:一种机器学习技术,用于识别相似的数据点(例如客户)并将其分组在一起。
- 无监督机器学习:你不需要给算法提供如何对客户分组的标签数据。它将浏览与每个客户相关的所有信息,并学习将他们分组的最佳方式。
- 预定义的组数:你需要告诉 K-means 要组成多少组。这是你唯一需要的输入。
这里有一个与上述概念的类比:想象你有一些玩具,在没有提供进一步指导的情况下,你让你的孩子将玩具分成三组。你的孩子会四处玩耍,最终找到自己的最佳方式,将三组相似的玩具组合起来。

好的…那么 K-means 是如何工作的呢?
让我们假设你认为有 3 个潜在的客户群。
K-means 将在随机位置随机启动 3 个点(即质心),并将每个数据点慢慢拟合到最近的质心。每个数据点代表一个客户,离同一个质心最近的客户会在同一个组。
质心的位置会根据分配给它们的最近客户自动调整。这样做,它将自己学习寻找其他具有相似特征的客户。

K-means identifying 3 clusters in a data set. Source: Wikipedia
什么?这看起来很简单。我可以自己进行可视化分组!
上面客户的二维表示是数据可视化的简化形式。
与客户相关的每个信息代表一个维度的数据。例如,如果你只是绘制购买的物品和数量,那么这就是二维的。一旦你考虑到每个客户的额外信息,如居住国家和总支出,复杂性就会跳到 4 维!

Visualisation of different dimensions. Source: Wikipedia
对于我们来说,很难想象在三维空间之外将物品分组在一起,但对于机器学习来说并非如此。这使得机器学习在寻找有意义的片段方面比传统方法强大得多。
机器学习可以理解超出我们想象的多个维度,根据客户的信息找到客户的相似特征,并将相似的客户分组在一起。
这就是它的妙处!
但是我怎么知道组成小组的最佳数量是多少呢?
您可以通过遵循以下两条原则找到最佳的组数:
- 同一群中的客户应该靠得很近(紧密的群内距离)
- 每个不同的客户群应该彼此远离(远群间距离)
下面是对上述原则的另一种解释:
- 物以类聚相似的羽毛。他们聚集在一起寻找志同道合的朋友;越是志趣相投,就越是群聚在一起。
- 不同的鸟群不会彼此靠近。每个鸥群都为自己独特的身份而自豪;他们的身份越鲜明,他们就越远离其他群体。
找到最佳组数的一种方法是使用剪影分数。它考虑了类内和类间距离,并返回一个分数;分数越低,形成的聚类越有意义。
使用 K-mean 最具挑战性的一个方面是决定形成多少个聚类。这可以通过使用轮廓分数来数学地识别。
太好了。你能举例说明使用 K-means 来分割一个实际的客户数据集吗?
我将举例说明使用 K-means 来执行 RFM(最近、频率和货币)客户细分。数据源来自英国的一家真实的在线零售商。
我已经通过执行以下步骤对数据进行了预处理:
- 提取最近 1 年的交易数据。
- 根据每个客户的最新交易日期计算他们的最近交易时间。
- 通过合计标记给每个客户的发票数量来计算每个客户的频率。
- 通过合计每个客户各自的总支出来计算他们的货币价值。
下面是我创建的每个客户的 RFM 值的快照:

RFM value of each customer.
在实现 K-means 之前,我还需要做什么?
K-means 在以下条件下给出最佳结果:
- 数据的分布不是偏斜的(即长尾分布)
- 数据是标准化的(即平均值为 0,标准偏差为 1)。
为什么?回想一下,K-means 根据客户到质心的距离将相似的客户分组在一起。
图表上每个数据点的位置是通过考虑与特定客户相关的所有信息来确定的。如果任何信息不在相同的距离尺度上,K-means 可能不会为您形成有意义的聚类。
机器学习就是从数据中学习。为了获得最佳结果,您应该准备数据,使机器易于学习。
以下是使用 K 均值前准备数据的具体步骤:
- 绘制分布图以检查偏斜度。如果数据是偏斜的(即具有长尾分布),则执行对数变换以降低偏斜度。
- 缩放并居中数据,使平均值为 0,方差为 1。
我首先通过绘制新近性、频率和货币价值的分布图来检查数据的偏斜度:

Distribution Plots of RFM. All variables are heavily skewed.
我执行了对数转换来减少每个变量的偏斜度。下面是对数变换后的 RFM 分布图:

Distribution Plots of RFM. The skewness is reduced after log transformation.
一旦偏斜度降低,我就通过居中和缩放来标准化数据。请注意,现在所有变量的平均值为 0,标准差为 1。

Basic statistics of RFM. All variables have mean of 0 and standard deviation of 1 after centring and scaling.
找最优组数怎么样?
准备好数据后,下一步是运行 K-means 迭代(通常多达 10 个聚类)来计算每个聚类的轮廓得分。
A function to identify the optimal number of clusters based on the Silhouette Score.
较低的轮廓分数表示形成了更好和更有意义的聚类;下面的结果显示了集群的最佳数量是四个。

Silhouette Score of 2 to 10 clusters. The optimal number of clusters is 4.
尽管如此,通常的做法是在所识别的最优聚类的+/- 1 上实现 K 均值聚类;在这里,它是 3、4 和 5 个集群。
这提供了一个更广阔的视角,并有助于与您的利益相关者进行有意义的讨论,以确定适当数量的客户群。
也许会有一些市场特性,你的利益相关者可能会决定在 5 个集群上实施他们的营销策略,而不是确定的最佳 4 个集群。
K-means 分割的最终结果是什么样的?
现在,我们准备通过 3、4 和 5 个集群的 K 均值来运行数据,以便对我们的客户进行细分。
A function to implement K-means on data set.
以下是客户细分的结果:

Flattened (t-SNE) graph of 3,4 and5 clusters.
回想一下,与客户相关联的每个信息都创建了一个额外的维度。上面的图像是通过将三维图形(根据新近度、频率和货币价值创建)展平为二维图形而获得的,以便于可视化。
这种观想可以让你感觉到星团是如何形成的。
如果你想知道,展平高维图形并将其可视化为二维格式的技术被称为t-分布式随机邻居嵌入(t-SNE)。如果你有兴趣,你可以阅读更多关于这个的内容;对此的解释超出了本文的范围。
我如何在营销中利用细分结果?
在这个阶段,数据集中的每个客户都用各自的组号进行标记。您可以继续使用任何行业的通用实践来可视化结果。
下面是一个使用 蛇图 和属性相对重要性图来构建人物角色的每个聚类的细分的例子。两者都是营销行业中用于客户细分的常用方法。

Snake Plot of 3, 4, 5 clusters formed using K-means.

Relative Importance Chart of 3, 4, and 5 clusters formed using K-means.
您可以将这个结果与使用传统方法完成的原始分割进行比较。有什么大的区别吗?
深入了解 K-means 认为某个特定群体的客户属于同一群体的原因是一个很好的做法(是的,遗憾的是,K-means 还不能为我们写一份关于他们细分决策的营销报告)。
了解这一点后,你可以与相关利益相关者展开讨论,征求他们的意见,并在启动下一个大型营销活动之前,就如何最好地细分客户达成一致。
这篇文章的所有相关代码都可以在我的 repo 中找到。
结论
K-means 是一种简单而有效的分割方法。任何进行客户或市场细分的人都应该利用这一点来增强传统方法。否则,它们有可能在人工智能时代被淘汰。
本文首发于 AI 新加坡 makers space。
统计学中最重要的观点
想到统计学这门学科,你会想到什么?
人口、样本和假设?或者你可能上过一门强调概率、分布、p 值和置信区间的课程?所有这些都是拼图的一部分,但是它们在核心的下游。一切的真正开始——启动整个纠结的跳板——是的默认动作。

什么是默认操作?
统计学是一门在不确定的情况下改变你想法的科学,所以首要任务是弄清楚你要做什么,除非数据说服你放弃。这就是为什么一切都从一个身体动作/决定开始,如果你没有收集到任何(更多)证据,你就承诺去做。这叫做你的 默认动作 。
本文是系列文章的一部分:

平行宇宙:另一个默认动作
你刚刚降落在一个外星球上。你的任务是什么?找出这里是否有外星生命。有什么问题吗?你微薄的预算只允许你在选择一个答案(是或否)并继续下一个任务之前搜索三个小时。

This is the entirety of your control panel. YES, there is alien life here. NO, there’s no alien life here. There is no way to input maybes, comments, or hedging.
在之前的文章中,你的老板选择了按下“否”按钮(没有外星人)作为默认动作。如果他们选择了“是”会怎么样?这是新的设置:
默认动作: 按下是按钮。
替代动作: 按下 NO 按钮。
无效假设(H0): 这个星球上有外星生命。
另类假设(H1): 这个星球上没有外星生命。

还记得统计学的核心问题吗?在第 1 部分中,我们看到所有的统计推断都可以归结为一句有力的话:
"我们收集的证据让我们的零假设看起来可笑吗?"
这意味着我们在问,我们在三个小时的步行中所看到的是否让“这个星球上有外星生命”的说法看起来很荒谬。在我们穿好衣服飞往那个星球之前,让我们想想我们会看到什么。
假设我们看到一个外星人。我们的零假设可笑吗?不,当然不是。如果我们徒步旅行三个小时,我们没有看到外星人呢?外星生命的零假设可笑吗?还是不行。(如果你还在纠结这个,你真的应该找个时间去地球上徒步旅行。很容易三个小时不见其他人……)
笑点是什么?不管怎样,我们都会用“否”来回答我们的测试问题
这意味着无论证据如何,我们每次都将采取默认操作(是按钮)。在这种情况下,我们唯一可以拒绝的方法是,我们可以搜索这个星球的每个角落,以确认它们没有外星人,这对我们微薄的预算来说太多了。

Space exploration as work from home? Best job ever!
你看到庆祝的理由了吗?如果你的太空探索公司的政策选择了“是”作为在新信息下按下的正确按钮…你可以在家里像工作一样进行太空探索,穿着睡衣懒洋洋地躺着,同时为所有的行星按下“是,是,是,是,是”!
此外,呆在沙发上是正确的事情。去那个星球只是为了做一些复杂的计算,这是浪费时间和燃料。决策者已经选择了这个决策框架,在这个框架中,按“是”是正确的答案。不要抱怨,试着用其他默认动作,这样你就有借口使用一个奇特的公式——这不是大学。我们不是为了计算东西而计算东西。我们只做统计计算,看看数据对切换动作说了些什么。(你猜怎么着,有时候我们能看到答案,所以我们甚至不需要计算什么。)
如果你不喜欢你的领导选择默认行动和决策背景的方式,你最好申请他们的工作,这样你有一天可以发号施令。只要你只是一名数据科学家(或宇航员),你的工作就是根据你的领导为你创造的环境做正确的事情。
决策者的技能决定了所有统计工作的成败。明智地选择他们。
您的默认操作决定了整个分析。请不要试图从假设开始,并倒退到让你使用你喜欢的数学的默认动作。如果你没有首选的默认动作,你甚至不需要统计推断。改为读这个。
感谢阅读!YouTube AI 课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
我的第一次数据科学会议教给我的最重要的经验
最大化数据科学会议体验需要知道的事情!

Photo by Austin Distel on Unsplash
作为一名有抱负的数据科学家,我经常遇到经验丰富的数据从业者的大量建议,他们在 Medium、 Reddit 、 Analytics Vidhya 等平台上,甚至在他们自己的投资组合网页上写下他们的旅程和项目。
在我意识到这一点之前,我已经积累了这个领域的信息,积累的速度远远超过了我运用这些信息的能力。因此,为了防止错过我在网上收到的所有好建议,我决定将我正在阅读的所有文章放在相关的谷歌 Chrome 书签文件夹中,以此来记录它们。
大约几周前,我意识到“通过聚会和会议与数据科学家交流”是成长为数据科学家的重要一步。我以前从未参加过任何 meetup 会议,更不用说数据科学了,这是我严重缺乏轻松与人交往能力的直接结果。
但是在过去的几年里,我意识到“优秀的数据科学家主要是合群的人!”。他们绝对喜欢通过博客、播客,当然还有活动等渠道接触全球社区!因此,参加 meetup 对我来说是一个变相的机会,可以与我所在城市的一些最聪明的数据科学家联系,并获得对数据科学的真实理解。
因此,我重新安排了周日的睡眠时间,利用这一天参加了由 GDG 班加罗尔、Kaggle Days Meetup Bengaluru和 WTM 班加罗尔组织的数据科学会议😄
事不宜迟,我将直接跳到这篇文章的主要目的,并详细阐述我从这次会议中的主要收获。
你不是唯一的新手
聚会上的很多人对于所讨论的内容都是初学者。因此,如果你觉得谈论的话题超出你的理解范围,你并不孤单。还有几个像你一样的与会者,如果他们能够鼓起勇气坚持他们的冒险,你也可以做到。
一开始就失去希望从来都不利于任何新的努力,数据科学也不例外。
我做了什么?
当我感到自己在努力跟上研讨会的某些方面时,我环顾了一下房间。然后我看到很多人和我一样在挣扎,但我和他们的区别在于“他们一起挣扎,互相帮助,而我独自挣扎”。这个发现对我打击很大,接下来我知道的是,我与一位 DevOps 工程师一起工作,她希望从 DevOps 过渡到数据科学。
不要试图成为一个害群之马
在人群中脱颖而出总是很棒的,但如果你打算在聚会上作为一个隐士脱颖而出,你不会从中获得太多。与人交谈,向人学习,帮助人——这些都是建立你自己的知识库的神奇方法。对于数据科学来说,没有比基于社区的学习更好的学习方法了。
不要做局外人。因为,数据科学家有摆脱它们的自然倾向。
我做了什么?我四处走了走,和活动现场的人聊了几句。虽然我不能把自己归类为一个完全的初学者,但我仍然是一个关于数据科学的 meetup 会议的新手。所以,我花了一段时间来适应结识新朋友的想法(坦白地说,我在一个 100 人的房间里只见过 5-6 个人。很明显,我需要停止在社交上如此可悲😕).但是,这些有限的谈话塑造了我的跳出框框的思维能力,这是人们往往容易忽视的坚实技能之一。
不要被内容淹没
在我参加的会议中,我们接触到的术语和概念比行程中的要多得多。虽然这些大部分都是所讨论的主要概念的先决术语,但也有演讲者个人倾向于使用的概念的细节。
如果你的 meetup 的议程是讨论 N 个主题,你总是会学习 M 个主题,其中 M >> N。
我做了什么?为了跟踪所有正在讨论的话题,我在笔记本上记下了术语。甚至那些对我来说是术语的深奥的、以数据为中心的词汇也在我的笔记本上找到了位置。通过这种方式,即使我完全不知道使用了某些术语,我也能够维护一个事件中所有讨论的列表。参加完活动回家后,我测试了自己的网上冲浪技能,详细了解了所有那些在活动中没有意义的术语。相信我,无论我用这种方法学到了什么,我都会铭记在心,因为我不只是听说过。我记下它,我查阅它,我用对我来说有意义的文字写下所有的事情。
准备好继续前进
有时,聚会有实践研讨会。现在,这些研讨会有时会变得有些乏味。出现这种情况的原因可能从延迟的软件包安装到极其缓慢的系统。这往往会导致我们错过中间的一两步。
在错过的机会上停留太久,你将看不到那些在你能力范围内的机会。
遇到这种情况怎么办? 在这种情况下,要迅速重组,进入正在谈论的下一步。如果不完成你错过的那一步就无法进行下一步,那么拿起你的笔和笔记本,开始记下你需要做的步骤。通过这种方式,你可以保持在正确的轨道上,不会在整个过程中失败。
学会接受行话
演讲者有时会不知不觉地对听众讲一些行话。但是,我们需要认识到的是"我们把某些术语认定为行话只是我们缺乏相关知识的结果"。因此,一旦你学会了,曾经是行话的术语在以后就不会是行话了。
不是所有的行话都会永远是行话。
我们所要做的就是,在离开本节课时,记下这些复杂的术语,并阅读它们。
对说话的人好一点
会议经常会变得无聊。这可能是因为你对这个话题太不感兴趣,或者是因为说话者没有能力让这个话题变得有趣。但是,这是完全正常的,因为说话的人也是人,就像你我一样。
我们都会犯错,没有人在生活中是真正完美的。
如果发生这种情况该怎么办?在这种情况下,保持耐心,不表现出不安是对说话者友好的一种神奇方式。这样做,你不仅是一个好的倾听者,也是一个伟大的人。据我所知,一个伟大的人很容易成为伟大的数据科学家,因为大多数数据科学家都致力于为人们创造价值。
大多数聚会只是打破僵局的会议
在这次聚会之前,我已经参加了几个研讨会,也在我的大学举办了一些。所有参加这类研讨会的人都有一个最大的误解,“这个研讨会将帮助我成为这方面的专家!”。在我看来,这种说法有点过于雄心勃勃。这是因为研讨会和聚会只是破冰会议;帮助你打破讨论话题僵局的会议。但是,如果你想很好地掌握课程讨论的内容,即使在课程结束后,你也需要自己研究这个话题。****
一个单独的研讨会、会议或课程通常不足以将你从业余爱好者转变为专业人士。
保持联系
meetup 会议中的每个人都来自非常不同的背景,他们带来了自己的一套使用数据和相关技术的技巧和诀窍。所以,一定要记下你遇到的相关人员的联系方式。因为最终,数据科学是一门社区驱动的学科,通过与和你想法相同、方法不同的人交谈,你会学到更多东西。
你周围的想法越多样化,你自己的想法就越好。
分享你的经验
我写这个故事的全部目的是我坚持“分享你的经验”这一点的结果。
在我看来,那里是【有抱负的数据科学家】的海洋。因此,如果我们能够在数据科学活动中分享我们的经验,这将有助于更多的人迈出大胆的一步,走出他们的舒适区,做一些有助于形成他们对数据相关解决方案的想法的事情。此外,如果你能够写下你的经历,并提供一个 meetup 的总结版本,这肯定会提高你的内容构建技能(这与构建强大的数据科学组合非常相关)
我们周围的每个人都在学习一些东西。但是,只有那些发现他们所学的真正价值的人才能够与他人交流他们的学科。
我这边已经搞定了!
我希望这篇文章与你的时间相关,请随意分享你对 meetup 体验的想法。
干杯😊
对数据科学和机器学习来说最重要的法院判决
根据美国第二巡回法院的说法,在受版权保护的数据上训练算法并不违法。
本文将讨论 作者协会诉谷歌 一案及其先例在可预见的未来对人工智能领域的影响。

案件概述
作者公会诉谷歌轻松开创了人工智能领域,更明确地说,机器学习领域最重要的先例之一。该案件讨论了谷歌使用其训练数据库中受版权保护的书籍来训练其谷歌图书搜索算法的合法权利。作者协会声称谷歌图书搜索数据库的开发侵犯了数百万本图书的版权。
在 2005 年的后几个月,美国作家协会和美国出版商协会都起诉了谷歌,声称该公司因使用受版权保护的书籍来训练图书搜索算法而犯下了“大规模侵犯版权”的行为。谷歌声称,它的项目代表了数据的合理使用,它的实现相当于一个数字年龄卡目录。
美国作家协会和出版商协会联合起来反对谷歌,经过几年的诉讼后,提出了一个解决方案。由于种种原因,2011 年 3 月 22 日和解被驳回。出版商协会与谷歌达成和解,但与作者协会的诉讼仍在继续。
2011 年,作者公会提议的职业获得了认证。谷歌对这一决定提出上诉,一些法庭之友声称该类别不充分,第二巡回法院于 2013 年 7 月驳回了该类别认证,将案件发回地区法院,以考虑谷歌的合理使用辩护。
在 2013 年的后几个月,美国巡回法官 Denny Chin 驳回了诉讼,并确认谷歌图书程序符合“合理使用”的所有法律要求。

地区巡回法院的裁决
在 2013 年 11 月的裁决中,陈法官写道:
在我看来,谷歌图书提供了重大的公共利益。它推动了艺术和科学的进步,同时保持对作者和其他创造性个人的权利的尊重,而不会对版权所有者的权利产生不利影响。
Chin 的裁决分析了四个传统因素,这些因素决定了根据美国版权法,一个版权作品的使用是否属于合理使用。他的结论是,谷歌图书符合合理使用的所有法律要求,因此不像作者协会声称的那样侵犯版权。这些因素中最重要的是对版权所有者可能造成的经济损失。 Chin 表示“谷歌图书增加了图书的销售,有利于版权所有者”,意思是因为对版权所有者没有负面影响,所以不违反合理使用。
然而,案件并没有就此结束,因为原告(起诉方)有机会将案件上诉到更高一级法院。

上诉至第二巡回法庭
2014 年 4 月 11 日,提交人协会就地区法院的裁决向美国第二巡回法院提起上诉。这实质上是一个更高一级的法院,如果他们认为裁决不令人满意,有可能推翻地区巡回法院的裁决。他们还开始游说国会成立一个非营利组织,将作者的书籍数字化并授权给选择付费订阅的组织,因为他们担心这样的裁决可能会对出版业和个人作者产生影响。
口头辩论于 2014 年 12 月 3 日举行,一直持续到 2015 年 10 月 16 日,第二巡回法庭一致确认了有利于谷歌的判决。
法院对其意见的总结是:
谷歌未经授权对受版权保护的作品进行数字化处理,创建搜索功能,以及展示这些作品的片段,都不属于侵权的合理使用。复制的目的是高度变革性的,文本的公开展示是有限的,并且披露的内容没有为原件受保护的方面提供重要的市场替代品。谷歌的商业性质和利润动机不能成为拒绝合理使用的理由。
谷歌向提供图书的图书馆提供数字化副本,并基于图书馆将以符合版权法的方式使用副本的理解,也不构成侵权。
根据记录,谷歌也不是一个共同侵权者。
这实际上使得先例更加有力,但是作者协会——仍然相信他们是对的——决定直接上诉到最高法院。

最高法院请愿书
作者公会对这起诉讼的结果并不满意,因此在 2015 年 12 月 31 日,他们向最高法院提交了调卷令状,这实质上是向上级法院提出上诉,要求审查下级法院的判决,在本案中,是第二巡回法院。
2016 年 4 月 18 日,最高法院驳回了调卷令状的申请,让第二巡回法院做出的有利于谷歌的裁决原封不动。
这并不意味着最高法院赞成或反对这一裁决,它只是说,不到 4 名最高法院法官投票审查该案件。
这在第二赛道开创了一个先例,但对其他赛道的先例只字未提。如果一个不同的巡回法庭得出不同的意见,这个先例可能会被复审,在这种情况下,最高法院可能会决定复审这个案件。
分歧
这一先例的法律后果可能会产生深远的影响。第二地区法院的决定在某种程度上为科技公司在深度学习算法的开发中使用受版权保护的材料开了绿灯,这主要是因为这种使用不会直接影响受版权保护的个别文章的收入。如果我写了一本谷歌用来训练他们的算法的书,我不会因为他们在训练他们的算法时使用我的书而受到不利影响。
硅谷是第九地区法院的一部分,这意味着这不是那里的先例,但它确实让那些正在考虑在其模型中利用版权数据的公司更加自信。
人们可能会认为,这一先例也将延伸到图像、歌曲,以及由技术集团积累的个人产生的任何其他潜在数据。
当我们从搜索算法,即鉴别算法,到生成算法,事情变得更加有趣。
一个判别算法获取原始数据,并试图将其分解成一个结果——想象一个分类算法获取一个数据点并将其放入某个组。
一个生成算法获取原始数据并使用它生成新数据。从这个意义上说,这是一个产生数据的过程。深度生成模型如生成对抗网络和变型自动编码器通常用于生成和操作图像数据。
谷歌图书搜索算法显然是一种辨别模型——它通过搜索数据库来找到正确的图书。这是否意味着先例延伸到生成模型?这并不完全清楚,而且很可能是因为法律小组对这一领域缺乏了解而没有进行讨论。
这进入了一些特别复杂和危险的领域,尤其是关于图像和歌曲。如果对数百万张有版权的图片训练一个深度学习算法,得到的图片会有版权吗?同样,对于歌曲,如果我创造了一种算法,可以写出像艾德·希兰那样的歌曲,因为我对他的歌曲进行了训练,这会侵犯他的版权吗?即使从这一案例的先例来看,结果也不完全清楚,但这一结果确实给了一个令人信服的理由来假定这也是可以接受的。
当然,人们可以采取不同的观点,即使用生成模型并试图将其商业化将直接与受版权保护的材料竞争,因此可能被认为侵犯了他们的版权。然而,由于大多数机器学习模型的黑盒性质,这将非常难以证明和反驳,这使得我们在这种情况下的合法性方面处于某种形式的不确定状态。
直到一些勇敢的人走出去,试图制作基于版权材料的电影、音乐或图像,并试图将这些商业化,并随后在这方面受到法律挑战,很难猜测这种行为的合法性。话虽如此,但我绝对相信,这不是一个是否会发生的问题,而是这个案件何时会发生的问题。
从这个案例中可以得到的重要信息是:
- 在用于训练鉴别性机器学习算法(例如用于搜索目的)的数据集中使用受版权保护的材料是完全合法的。
- 在用于训练生成式机器学习算法的数据集中使用受版权保护的材料,在未来的任何法律挑战中都有先例。
最终意见
我希望你喜欢这篇讨论作家协会诉谷歌地方法院案件的文章。深度学习是一个非常新的热门话题,我相信我们还没有看到关于使用受版权保护的数据来训练大规模深度学习模型的法律案件的结束。这个领域发展如此之快,如此之新,以至于像 GANs 这样的深度生成模型在这个法律案件的开始甚至还不存在(它们是由 Ian Goodfellow 在 2014 年提出的)。显然,随着越来越多的公司选择将人工智能纳入其业务运营,数据使用的合法性将变得越来越重要。看这个空间,我们生活在有趣的时代。
时事通讯
关于新博客文章和额外内容的更新,请注册我的时事通讯。
丰富您的学术之旅,加入一个由科学家,研究人员和行业专业人士组成的社区,以获得…
mailchi.mp](https://mailchi.mp/6304809e49e7/matthew-stewart)
参考文献
谷歌图书裁定合理使用大获全胜(更新),Ars Technica2013 年 11 月 14 日。
谷歌赢了:法院对谷歌图书给予了大力支持,出版商周刊,2013 年 11 月 14 日。
美国上诉法院称谷歌图书扫描项目合法 ,路透社,2015 年 10 月 16 日。
“我们相信最高法院会认为纠正第二巡回法院对合理使用的简单化理解是合适的……”,Authors Guild,2015 年 10 月 16 日,《第二巡回法庭让作者无依无靠》(新闻稿)。
亚当·利普塔克(2016 年 4 月 18 日)。“挑战谷歌图书被最高法院驳回”。纽约时报。检索时间 2016 年 4 月 18 日。
人民网(2005 年 8 月 15 日)。【谷歌数字图书馆暂停】。
湿婆神。《万物谷歌化与版权的未来》,《加州大学戴维斯分校法律评论》,第 40 卷(2007 年 3 月),第 1207–1231 页,(pdf)。
谷歌图书:对历史有益吗?、视角(2007 年 9 月)。
针对谷歌的版权侵权诉讼及其解决方式:“版权协议将使数百万本书可以在网上获得”。谷歌新闻中心。检索于 2008 年 11 月 22 日。
作家协会诉谷歌公司,721 F.3d 132 (2d Cir。2013).
“谷歌图书结算网站上线;埃里克·舍恩菲尔德于 2009 年 2 月 11 日在 TechCrunch 上发表的文章《向每本扫描书籍的作者支付 60 美元》
美国记者和作家协会 存档2012 年 2 月 25 日,在 Wayback 机器
洪水,艾莉森(2010 年 1 月 22 日)。“乌苏拉·勒奎因领导反抗谷歌数字图书和解”。守护者。伦敦。
英国广播公司:谷歌回击书评人
"Openbookalliance.org" 。2013 年 9 月 10 日从原件归档。检索于 2013 年 8 月 14 日。
“图书隐私平价案例:谷歌图书和从离线到在线阅读的转变”。哈佛法律与政策评论。2010 年 5 月 16 日。存档于原件2010 年 8 月 12 日。检索于 2010 年 9 月 8 日。
波尔博士(2009 年 11 月 17 日)。“谷歌图书结算改头换面”。布法罗新闻。检索于 2010 年 3 月 26 日。
哈杰,基切(2010 年 3 月 17 日)。《了解谷歌出版和解案》。全国。检索于 2010 年 3 月 26 日。
舍温·西伊(2009 年 11 月 17 日)。《新谷歌图书和解:孤儿作品第一印象》。公共知识。2010 年 6 月 9 日从原件存档。检索于 2010 年 3 月 26 日。
阿米尔·埃夫拉蒂和杰弗里·特拉亨伯格(2011 年 3 月 23 日)。“法官驳回谷歌图书和解案”。华尔街日报。
“作者协会诉谷歌案的意见”,巡回法官 Chin,案件 1:05-cv-08136-DC 文件 1088,2013 年 11 月 14 日。检索于 2013 年 11 月 17 日。
为什么谷歌在谷歌图书诉讼中的合理使用胜利是一件大事,为什么它不是,福布斯杂志,2013 年 11 月 14 日
ARL 政策说明 存档2013 年 11 月 20 日,在 Wayback 机,2013 年 11 月 14 日
作者协会诉谷歌 案的口头辩论存档2015 年 5 月 15 日,地点 Wayback Machine ,12–10–14
“46 点滑动操作”。从原件存档于 2017-09-04。检索于 2015 年 10 月 17 日。
作家协会诉谷歌公司 ,№15–849(2013 年 12 月 31 日)。
Campbell 诉 Acuff-Rose Music,Inc. 《美国最高法院判例汇编》第 510 卷第 569 页(1994 年)(2 现场剧组“漂亮女人”戏仿案)。
数据科学家最需要的技术技能
2018 年秋天,我分析了数据科学家最需要的技能和技术。那篇文章引起了人们的共鸣。它在 Medium 上获得了超过 11,000 次掌声,被翻译成多种语言,是 2018 年 11 月 KD Nuggets 上最受欢迎的故事。
一年多一点过去了。让我们看看有什么新的。🎉
到本文结束时,你会知道哪些技术越来越受雇主欢迎,哪些技术越来越不受欢迎。

在我的【2018 年原创文章中,我考察了对统计和沟通等通用技能的需求。我还研究了对 Python 和 r 等技术的需求。软件技术的变化比一般技能的需求快得多,因此我在这次更新的分析中只包括技术。
我搜索了简单雇佣、确实、怪物、 LinkedIn ,看看在美国的职位列表中,哪些关键词出现了“数据科学家”。这一次,我决定编写代码来抓取工作列表,而不是手动搜索。事实证明,这种努力对“简单雇佣”和“怪物”来说是卓有成效的。我能够使用请求和美汤 Python 库。你可以在我的 GitHub repo 看到 Jupyter 笔记本,上面有抓取和分析的代码。
事实证明,清除 LinkedIn 要困难得多。要查看职务列表的准确数量,需要进行身份验证。我决定使用 Selenium 进行无头浏览。2019 年 9 月,美国最高法院的一个案件判决 LinkedIn 败诉,允许 LinkedIn 的数据被抓取。尽管如此,在几次抓取尝试后,我还是无法进入我的账户。这个问题可能源于速率限制。😟更新:我现在回来了,但担心我会被锁在外面,如果我试图再次刮它。
不管怎样,微软拥有 LinkedIn,Randstad Holding 拥有 Monster,Recruit Holdings 拥有 Indeed 和 SimplyHired。
无论如何,LinkedIn 的数据可能没有提供从去年到今年的比较。今年夏天,我注意到 LinkedIn 的一些科技求职术语开始每周都有大幅波动。我假设他们可能已经通过使用自然语言处理来测试意图,试验他们的搜索结果算法。相比之下,其他三个搜索网站在这两年中出现的“数据科学家”职位列表数量相对相似。
由于这些原因,我在本文中对 2019 年和 2018 年的分析中排除了 LinkedIn。



对于每个求职网站,我计算了每个关键词出现在该网站上的数据科学家职位列表的百分比。然后,我计算了三个网站上每个关键词的平均百分比。
我手动调查新的搜索词,剔除那些看起来有希望的。2019 年,没有新词达到平均百分之五的上市率,这是我在下面的结果中使用的截止值。
让我们看看我们发现了什么!🔭
结果
至少有四种方法可以查看每个关键字的结果:
- 对于每一个工作站点,每年,将包含关键字的列表数除以包含 data scientist 的搜索项总数。然后取三个工作地点的平均值。这就是上面描述的过程。
- 做了上面的第 1 条,再来看看 2018 年到 2019 年的平均房源百分比变化。
- 做了上面的 1 号后,取 2018 年到 2019 年的房源平均百分比的百分比变化。
- 完成上面的第一步后,计算出该年每个关键词相对于其他关键词的排名。然后计算排名从一年到下一年的变化。
让我们用条形图来看看前三个选项。然后我会用数据展示一个表格,讨论结果。
这是 2019 年第一张图表,显示 Python 出现在近 75%的列表中。

这是上面第二张图表,显示了 2018 年至 2019 年期间上市平均百分比的得失。AWS 显示增加了 5 个百分点。它出现在 2019 年平均 19.4%的房源中,2018 年平均 14.6%的房源中。

这是上面第三个数字的图表,显示了每年的百分比变化。PyTorch 与 2018 年出现的平均上市百分比相比增长了 108.1%。

这些图表都是用精心制作的。如果你想学习如何使用 Plotly 制作交互式可视化,请查看我的指南。如果你想看交互式图表,可以查看我的 GitHub repo 中的 HTML 文件。用于抓取、分析和可视化的 Juptyer 笔记本也在那里。
以下是以上图表中的信息,仅以表格形式,按 2018 年至 2019 年房源平均百分比的百分比变化排序。

我知道这些不同的衡量标准可能会让人感到困惑,所以这里有一个指导,让你看看上面的图表。
- 2018 Avg 是从 2018 年 10 月 10 日起,SimplyHired,Indeed 和 Monster 的平均房源百分比。
- 2019 年平均与 2018 年平均相同,除了是 2019 年 12 月 4 日。该数据显示在上面三个图表的第一个中。
- 平均值变化为 2019 栏减去 2018 栏。如上面三个图表中的第二个所示。
- %变化是从 2018 到 2019 的百分比变化。它显示在上面三个图表的最后一个中。
- 2018 排名是 2018 年相对于其他关键词的排名。
- 2019 排名是 2019 年相对于其他关键词的排名。
- 排名变化是 2019 年到 2018 年排名的上升或下降。
外卖
在不到 14 个月的时间里,发生了一些相当大的变化!
获胜者
Python 还在上面。这是目前最常用的关键词。将近四分之三的清单上都有。Python 从 2018 年开始有了可观的增长。

SQL 为升序。平均分第二差点超过 R。如果趋势继续下去,它将很快成为第二。

最突出的深度学习框架越来越受欢迎。PyTorch 是所有关键词中增幅最大的。Keras 和 TensorFlow 也大幅上涨。Keras 和 PyTorch 的排名都上升了 4 位,TensorFlow 上升了 3 位。请注意,PyTorch 是从较低的平均值开始的— TensorFlow 的平均值仍然是 PyTorch 的两倍。



数据科学家越来越需要云平台技能。AWS 出现在近 20%的列表中,Azure出现在约 10%的列表中。Azure 在排名中上升了四位。


这些是最活跃的技术!🚀
失败者
R 整体平均降幅最大。鉴于来自其他调查的发现,这一发现并不令人惊讶。Python 显然已经取代 R 成为数据科学的首选语言。尽管如此,R 仍然非常受欢迎,出现在大约 55%的列表中。如果你知道 R,不要绝望,但如果你想要一个更受欢迎的技能,也可以考虑学习 Python。
许多阿帕奇产品人气下滑,包括小猪、蜂巢、 Hadoop 、 Spark 。Pig 在排名中下降了 5 位,比其他任何技术都多。Spark 和 Hadoop 仍然是普遍想要的技能,但我的发现显示出远离它们并转向其他大数据技术的趋势。
专有统计软件包 MATLAB 和 SAS 出现了大幅下滑。MATLAB 在排名中下降了四位,SAS 从最常见的第六位下降到第八位。与 2018 年的平均水平相比,这两种语言都出现了较大比例的下降。
建议
这个列表上有很多技术。😀你当然不需要知道他们所有人。神话中的数据科学家被称为独角兽是有原因的。😉

我建议,如果你刚开始从事数据科学,你应该专注于那些有需求且正在增长的技术。
专注。
开。
学习。
一个。
技术。在。
A.
时间。
(这是非常好的建议,尽管我并不总是遵循它。😁)
以下是我推荐的学习路径,按顺序排列:

- 学习 Python 进行通用编程。如果你是新手,可以看看我的书《难忘的 Python》。
- 学习熊猫进行数据操作。我相信一个招聘 Python 数据科学家的组织会希望应聘者了解 pandas 和 Scikit-learn 库。Scikit-learn 出现在名单上,熊猫刚好错过了截止日期。在学习熊猫的同时,你将学习一些 Matplotlib 和 NumPy 的可视化。我正在完成一本关于熊猫的书。订阅我的邮件列表,确保你不会错过。😀
- 使用 Scikit-learn 库学习机器学习。推荐 Müller & Guido 的《用 Python 学习机器 入门》这本书。

- 学习高效查询关系数据库的 SQL。我那本令人难忘的 SQL 书是为初学者设计的,在预发布版这里有售。

- 了解数据可视化的 Tableau。清单上的技术可能是学习起来最有趣和最快的。👍点击这里,查看我在 Medium 发表的一篇关于基础知识的六分钟介绍文章。

- 适应云平台。由于其市场份额,AWS 是一个很好的选择。微软 Azure 稳坐第二。尽管它不太受欢迎,但我还是偏爱谷歌云,因为我喜欢它的 UX 和机器学习功能。如果你想熟悉谷歌云的数据摄取、转换和存储选项,请参见我的关于成为谷歌云认证专业数据工程师的文章。
- 学习深度学习框架。TensorFlow 最受欢迎。Chollet 的书 用 Python 进行深度学习 是学习 Keras 和深度学习原理的绝佳资源。Keras 现在与 TensorFlow 紧密集成,所以这是一个很好的起点。PyTorch 也在迅速发展。关于不同深度学习框架的流行程度,请查看我的分析这里。
这是我的一般学习路径建议。根据你的需求定制它,或者忽略它,做你想做的事情!😁
包装
我希望这篇数据科学家最需要的技术指南对你有用。如果你有,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它。👍
我写关于 Python 、 SQL 、 Docker 、数据科学和其他技术主题的文章。如果你对此感兴趣,请关注我,在这里阅读更多。
快乐学习!💻😀
IMDB 电影评分的最大影响因素——第一部分:数据抓取
我一直是一个狂热的电影迷,我喜欢通过查看不同的电影评级/评论网站来探索伟大的电影,如 IMDb,烂番茄等。当我看那些顶级电影名单时,我总是想知道,影响电影成功的主要因素是什么,是预算、票房、语言还是电影类型?
一个偶然的机会,我和另外三个电影爱好者(也是数据爱好者)决定进行一项关于电影成功影响因素的统计研究。我们决定看 IMDb 的“有史以来最伟大的 500 部电影”;我们使用 movie 作为实例来收集与每个电影相关的各种数量,并随后对数据集进行统计分析。
我们的目标是:
1.使用数据抓取技术从 IMDb 电影列表中提取数据,并创建数据集。
2.使用描述性统计和多元回归建模来可视化和分析我们收集的数据。

IMDb top 500 movies
本文将关注这个研究项目的第一部分,即通过数据采集和清理创建数据集。
动机
创建这个数据集的目的是分析影响电影成功的主要因素,通过电影评级来衡量。我们的团队创建了这个数据库,并使用美丽的汤从 IMDb 在 2017 年创作的页面中获取了该数据集中的信息——有史以来最伟大的电影。
作文
实例和变量
数据集仅由作为实例类型的电影组成。总共有 500 个实例(电影)。我们的数据集包含网页中所有可能的实例。
对于每个实例,它由证书、持续时间、评级、流派、投票、总收入、国家、语言和预算组成。我们针对每个实例的分类变量由关于证书、流派、国家和语言的信息组成,这些信息是作为直接从网页上抓取的未处理文本收集的。每个实例的数字变量由持续时间、评分、投票、总收入和预算等信息组成,这些信息是作为未处理的文本和数值收集的,也是直接从网页上抓取的。没有标签或目标与每个实例相关联。
在我们所有的 500 个实例中,变量的某些数据点丢失了,比如一些电影的总收入和预算。对于我们可以在其他地方找到信息的实例,我们将信息添加到 csv 文件(我们的数据集)中。然而,对于没有毛额或预算信息的实例,我们删除了这些实例。我们的原始数据集还包括每个实例的 Metascore,但我们最终决定删除它,因为许多电影的 megascore 都丢失了。这些数据点丢失的原因是因为它们在原始的 IMDB 网站上不可用,因为一些电影非常古老,因此很难收集六十年前的数据。我们最初收集的数据在各个实例之间没有明确的联系,因为我们希望客观地分析这个数据集。
噪音
数据集中有一些噪声源。例如,一些外国电影的总收入和预算是以外币计算的,我们用当前的汇率将这些外币手动转换成美元。它可能不准确,因为汇率总是在波动,它可能不会准确地反映外国电影的确切总额和预算。还有一些老电影,很久以前就有票房和预算了。我们没有根据通货膨胀和折旧调整总额和预算。
包含来自 IMDb 的信息/数据
数据集是部分自包含的。对于证书、持续时间、评级、流派、投票和总值等变量,未处理的文本和值直接从网页中抓取,因此是独立的。其他三个变量——国家、语言和预算——不是独立的,是从 IMDb 网站上每个电影实例的网页中搜集来的。例如,为了找到关于第一部电影公民凯恩的国家、语言和预算的信息,我们访问了公民凯恩的网页来抓取未处理的文本和值。数据集不包含机密或攻击性的信息。
由于评级是众包意见,数据与人 T10 部分相关。收视率可以反映公众如何看待电影的质量。然而,有一些特定的人群更有可能评分。例如,真正喜欢或不喜欢这部特定电影或演员的人更有可能通过评级来表达他们的强烈意见。电影爱好者也更有可能评分,但更客观。
收集过程
我们所有的变量都可以作为原始文本和值在 IMDb 的各个页面上直接观察到。

the packages that our team has utilized for data collection
我们利用 Python 库 BeautifulSoup 从 IMDb 网页中抓取数据。如所提供的 Python 文件所示,对于每个变量,我们确定了表示为 html 的文本或值的模式。然后,我们通过识别网站上每个变量的标签和类别来获取每个变量的信息。
对于独立信息:
- 电影名:我们发现电影名在标签“h3”和类“lister-item-header”下。我们简单地使用 getText()获得文本数据,并使用正则表达式去掉多余的空格。

obtain Movie Names
- 证书:我们发现证书上的信息在标签“p”和类别“文本-静音文本-小”下我们发现每个电影实例需要的信息是每三个标签中的一个,所以我们将每三个标签中的 getText()值附加到我们的证书数组中。

Obtain Certificate
- 持续时间:我们发现我们需要的关于持续时间的信息在标签“span”和类“runtime”下。与 certificate 类似,为每个实例返回大量文本信息。我们需要这个数据集的持续时间总是这个标签和类下返回的第一个文本,所以我们只追加了索引 0 的信息。

Obtain Duration
- 评级:我们需要的信息在标签“div”和类“ipl-rating-star small”下的信息部分中在该部分中,等级值位于标签“span”和类别“ipl-rating-star__rating”下我们对循环使用 2 来获得评级值。

Obtain Rating
- 流派:获取关于流派的信息更加简单。所有的流派信息都在标签“跨度”和类别“流派”下我们简单地使用 get_text()来获取我们需要的文本。

Obtain Genre
- 投票:投票遵循与证书相似的模式。我们首先在标签“p”和类“text-muted text-small”下找到包含投票数据的信息部分。这一部分包括三种重复的信息类型,我们收集的信息在每三个组块中。我们循环遍历每三个块,并在标签“span”下寻找信息,这是我们想要的文本信息。
- 总量:总量信息也取自用于提取投票数据的“span”下的相同信息。总数据总是该信息块下的第五个数据值,所以我们简单地在数据块的索引 4 上使用 get("data-value ")提取数据。

Obtain Vote and Gross
外部链接数据:
对于下面的变量,我们必须遍历每个电影实例的网页。我们发现这些网页的模式由标题“https://www . IMDB . com/title/TT”+代表电影 ID 的数字组成。我们首先使用美汤 find_all 函数找到主主页中的所有链接。后来,我们发现了 IMDB 如何用一系列数字来标识每部电影的特定模式。然后我们使用带有正则表达式模式'/title/(tt\d{5,7})/'的 re.compile()函数来查找任何与该模式匹配的链接。然后我们过滤掉那些有用的链接并附加到一个新的列表中。在打印出新的列表后,我们发现每个电影名称实际上重复了两次。然后,我们使用 for 循环函数提取奇数位置的每个链接。

Find Movie IDs
在每个实例中使用 for 循环,我们首先在标签“div”和类“txt-block”下提取一个包含所需信息的文本框。在文本框中,为了防止每个实例的信息不匹配,我们使用 if-elif 结构为没有预算信息的电影附加 0,为没有语言信息的电影附加“No Specific”。我们认识到,每种信息类型都有一个说明该信息类型的标题。例如,标题“预算:”后面的预算数据,所以我们使用这些标题来识别没有这些信息的电影,方法是检查是否可以在每个实例中找到这些标题。
对于大多数具有所有可用信息的实例,我们使用 try-except 和 if 函数来收集以下信息:
- 国家:国家信息在标签“h4”下,所以我们使用 getText()提取标题“国家:”后的文本数据。
- 语言:与国家类似,语言信息也在标签“h4”下,所以我们也使用 getText()提取标题“语言”后的文本数据
- Budget: Budget 是相似的,但是不同的是,Budget 信息也在标签“h4”下,但是我们不能使用 getText(),因为 Budget 信息不是文本形式的。预算信息存储为数据值,所以我们使用了属性”。next_sibling”来提取标题“预算:”后的数据值。

Extract data from all 500 movies
注意:数据集不是来自大型数据集的样本 。我们团队 无偿参与了数据收集。没有进行 的伦理审查流程。当人们向 IMDB 发布他们的评级时,数据集只与人们相关。
预处理/清洁/贴标
为了在 csv 中创建数据集,我们为每个变量创建了空白数组,并将提取的数据附加到这些数组中,以便清理和创建最终的 csv 文件。以下是我们用来清理数据的一些方法:
- 正则表达式:对于电影名,我们使用了“\n.+\n(。+)\n.+\n "去掉字母前后和字母之间的空格。
- Rstrip:我们使用了属性 rstrip 来消除类型和预算字符串末尾的空白。
- 货币换算:在某些情况下,总值是以其他货币计算的。我们手动将这些货币转换成美元。
- 将字符串转换为浮点数或整数:对于持续时间,我们首先使用 get_text()来查找标签后的字符串。然后,我们将 duration 的类型字符串转换为 float。对于 Year,在通过 get_text()函数从网站中提取年之后,我们将年的类型从 string 转换为 int。对于 Vote,在通过 get_text()从网站中提取投票并用空格替换逗号(因为文本处于货币模式,包括美元符号和逗号)之后,我们将投票类型从 string 转换为 int。
- 修改缩放单位:我们将总量数据除以一百万,以更好地缩放评级。
数据集的使用
我们的数据集可以通过这个链接来访问。
该数据集已被用于一些分析电影的类似任务。有许多关于电影的数据分析,但其中一些已经过时,而且不全面。例如,许多数据分析侧重于特定年份的电影,或者专门针对流派和电影类型的分析。我们的数据集还可以用来分析人们对电影的口味在过去几年中如何变化,或者通过插入该电影在未来的其他事实来预测预期的总收入和预算。我们的数据集组成可能不会影响未来的用户,并且没有任何任务需要使用该数据集。
结论
在我们研究的第一部分,我们使用了数据抓取和正则表达式等技术来创建数据库。在第二部中,我们将分析从电影列表中获得的数据集,并进行进一步的统计建模和研究。
_
这是一个由康乃尔大学的四名学生组成的小组项目,他们是:尤里·戴、芹那·李、楼可欣、吴尚珍。
_
该数据集是为研究目的而创建的,没有相关的拨款或资助。
人工神经网络最直观和最简单的指南
揭开神经网络的神秘面纱

神经网络!深度学习!人工智能!
任何生活在 2019 年世界的人,都会不止一次听说过这些词。而且你大概也看过图像分类、计算机视觉、语音识别这些牛逼的作品。
所以你也有兴趣建立那些很酷的人工智能项目,但仍然不知道什么是人工神经网络?已经有数百篇文章以“人工神经网络反向传播初学者指南”或“人工神经网络简介”的名义解释了人工神经网络的概念它们真的已经很棒了,但是我发现对于那些不习惯数学表达的人来说可能还是很难。
这是神经网络的“最直观和最容易的指南”的第一个系列。本帖的全套如下:
- 人工神经网络最简单的指南
- 卷积神经网络最简单指南
- 递归神经网络最简单的指南
今天,我将用最少的数学来解释人工神经网络(ANN)的基础知识。这可能是有史以来最简单和最直观的解释,所以如果你讨厌数学或者对线性代数有困难,来看看吧!今天的关键词是正向传播、激活函数、反向传播、梯度下降和权重更新。我还会留下额外的资源,在你完成这篇文章后,这些资源可以成为你的下一步。听起来不错?让我们完成它!
那么究竟什么是神经网络呢?
你可能已经看过很多文章,从什么是神经元以及它们是如何构成的开始。是的,人工神经网络的‘神经’来源于人脑的神经元。1943 年,沃伦麦卡洛克和沃尔特皮茨首次尝试从人类神经网络中创建一个计算模型。他们想将大脑中的生物过程应用于数学算法,从那一点开始,神经研究领域分成了两个方向。今天人工智能中的神经网络与真正的认知科学领域走的路线有点不同。所以我宁愿把人工神经网络的框架看作某种结构或图表,而不是神经元。因为它和大脑的生物神经元没什么关系。

就从这张图开始吧。有起点(输入层)和终点(输出层)。假设这些是岛,我们从“输入层”岛到“输出层”岛。从开始到结束,我们可以采取不同的方式。每条路线都有不同的点。当我们接近目的地时,我们将汇总所有可能的分数,并确定哪个岛屿是我们要寻找的最佳岛屿。所以这就像是派出我们的探测船队去为我们的下一个假期寻找一个完美的岛屿。
这里一个有趣的部分是,当船队接近输出层时,他们又回到输入层。然后,我们重复这个过程,将它们发送到输出层,并回调到输入层。对于每次试验,每次试验都将有一个结果分数,我们将使用它们来计算预测的准确程度。就像我们在线性回归中对 RMSE 或梅所做的一样。
正向传播和权重
我上面拿的比喻就是神经网络做的事情。这次让我们进行一些真正的计算。这是一个更简化的神经网络图。

假设我们的输入数据是 5 和 2 。因此,我们将把这些值传递给输出层。先从 5 说起吧。正如你所看到的,有两种不同点的可能方式。如果 5 走上路线,则点为 10 。如果 5 走下路线,则为 -10 。那么输入值 2 会是什么样子呢?是的。 6 为上层路线, 2 为下层路线。因此,如果我们总结每种可能的情况,隐藏层的值将如下所示。

我们可以很容易地用同样的方法得到最终值。你大概知道这里发生了什么。这就是所谓的。它从左向右移动。这里的要点是将左图层的结果作为下一个右图层的输入值。
图中的圆圈被称为 节点 ,我将其描述为岛屿。我们使用的相乘值称为 权重 。权重是数据科学中非常常用的术语。我们用它来表示某些特征或样本的力量。因此,如果一个特征获得了很高的权重值,那么该特征将对结果产生很大的影响。通过给特征赋予不同的权重,我们可以训练我们的模型以获得更好的预测。这个词对你来说可能听起来很陌生,但我们已经将它们用于其他机器学习算法,如 lasso 回归或 boosting 算法,控制其他回归中的特征系数。
激活功能
还有一个新概念你可能到现在都没听过,就是激活功能。 激活功能 在提交结果值之前对值进行非线性改变。为什么我们需要它?如果我们只是使用线性计算而没有激活函数,就像我们上面所做的那样,我们不能给我们的模型任何'隐藏层效应'。它与其他回归模型没有太大的不同。为了“激活”神经网络的真正力量,我们需要应用一个“激活函数”原因激活函数有助于模型捕捉数据中的非线性。
有几个激活函数,我们需要根据问题选择一个合适的。方程可以在维基百科上找到,但是我想让你在方程前看到每个函数的图形。每个函数有什么样的形状或特征。因为这种了解会给你选择什么的线索。

sigmoid 函数 适用于二值分类的情况。它只转换 0 和 1 之间的值。输入值越高,越接近 1。输入值越小,越接近 0。 双曲正切函数 (正切双曲线)类似于 sigmoid 函数,但它的下限这次去了 -1 。由于 Tanh 将数据中心设置为 0,因此它比 sigmoid 函数更受欢迎。 阈值函数 和 ReLu (整流器)有一个确定的点,值从这个点开始变化。由于斜率的原因,ReLu 在大多数情况下都是有效的。但是为什么是斜坡呢?神经网络和斜率有什么关系?这就是梯度下降发挥作用的地方。
梯度下降
梯度下降就是寻找一个函数的最小值。我们假设成本函数有一个凸形,如下图所示。我们的目标是使价值尽可能小。
如果第一次试验在曲线的某处得到了误差,比如说点 1。我们将进行另一场审判。随着多次尝试和比较结果,该点将像图片一样下山,并最终接近最低点。(但不完全是 0)

我们移动该点的量由损失函数的斜率 dW 决定。并且 α 是我们必须选择的学习速率。所以权重更新的快慢取决于 dW 和 α 的乘积值。如果学习率过大或过小,模型将无法学习正确的权重值。因此,给梯度下降赋予正确的值和正则化是非常重要的。
这里有如此多的故事,但我不认为一次拥有它们是好的。对于愿意更深入研究的人,我将在最后留下其他高级资源。
反向传播和更新
好了,让我们回到我们的故事,这些概念:激活函数和梯度下降。如果我们对我们的数据应用 reLu 激活函数,输出层将是 16 。如果实际值是 20,我们预测的误差将是 8 。

从现在开始,我们将向后移动并更改权重值。这就是所谓的。这一次我们从右到左,从输出层到输入层。倒退的意义是什么?它得到每一步的梯度。根据斜率,我们将更新权重,就像我们上面讨论的那样。**

我们目前所经历的是从 ① 到 ④ 阶段。我们输入 x 值,通过前向传播得到预测值 ŷ 。有一个 b 术语叫做 bias,但是我们这里只是把它叫做 0 。从阶段 ⑤ 开始,反向传播开始。如果你熟悉连锁规则,你会很容易理解这个概念。如果没有,也不用担心。就像咬上一个方程的尾巴。我想让你看看 dW₂ 的结局。它采用给定点的激活函数的误差和斜率与输入值的乘积。
就像正向传播通过隐藏层向输出层传递输入数据一样,反向传播从输出层获取错误,并通过隐藏层将其反向传播。并且在每一步中,权重值将被更新。

将整个过程重复几次,该模型找出最佳权重和具有最佳准确度的预测。当指标收敛到一定水平时,我们的模型就可以进行预测了。
摘要
让我们回顾一下到目前为止我们所讨论的内容。我们在 ANN 中讨论了 5 个步骤。

当通过隐藏层并更新每层的权重时,神经网络所做的是在内部表示数据的模式。其他深度学习算法都是从这个基本结构开始的。它们是添加了特殊技术的修改版本。因此,对于初学者来说,对神经网络的基本结构有一个坚实的理解应该是首要的事情。
这篇文章的重点是用最少的数学知识获得神经网络的基本直觉。这可能是一个有点简化的案例,但对初学者来说确实很有效。如果你准备好进入高级阶段,我建议你也阅读许多其他资源。这些是我的选择。
- Shirin Glander 写的这么棒的帖子。这涵盖了如何用正则化和优化的额外概念在 R 中构建一个 ANN:‘神经网络如何学习?’使用 H2O 深度学习算法的逐步解释
- 也许这是由 James Loy 撰写的关于数据科学的最受欢迎的文章。虽然已经有一段时间了,但是从头开始理解深度学习仍然很棒:https://towardsdatascience . com/how-to-build-your-own-neural-network-from-scratch-in-python-68998 a08e 4 F6
- 在 DataCamp 上获得神经网络直觉的优秀课程。甚至对于不懂线性代数和导数的人:https://www.datacamp.com/courses/deep-learning-in-python
感谢您的阅读,希望您对这篇文章感兴趣。我总是乐于交谈,所以请在下面留下评论,分享你的想法。我还每周在 LinkedIn 上发布其他有价值的 DS 资源,所以请关注我,联系我,伸出援手。我会回来讲另一个关于深度学习的激动人心的故事。在那之前,机器学习快乐!
卷积神经网络最直观和最简单的指南
揭开 CNN 的神秘面纱

计算机视觉是人工智能行业最热门的话题之一。它的力量是如此具有革命性,以至于现在我们几乎每天都在见证图像和视频处理服务的技术进步。此外,卷积神经网络不仅在视觉行业,而且在包括语音识别在内的自然语言处理方面也显示出巨大的潜力。
这是神经网络“最直观和最简单的指南”的第二个系列。本帖的全套如下:
- 人工神经网络最简单的指南
- 卷积神经网络最简单的指南(本帖)
- 递归神经网络最简单的指南
这篇文章假设你有神经网络的基础知识。如果你是第一次接触 ANN,看看之前的帖子会很有帮助。今天的关键词是卷积、滤镜、填充、池化和扁平化。CNN 的核心在于理解这些步骤的功能用法,以及数据的维度是如何变化的。你准备好成为图像的一个像素,开始一次神经网络之旅了吗?让我们完成它。
我们如何识别图像?
在进入卷积网络之前,让我们先谈谈我们自己。关于我们如何感知图像。这将有助于更容易理解 CNN。看看这张照片。你能看到什么?

是右脸的男人吗?还是一个正直视你的男人?如果你的注意力在鼻子或右边的轮廓,你可能会说是前者。如果你看到耳朵或左轮廓,你会说后者。你怎么想呢?让我们用另一个再试一次。

你看到了什么?只是一位在树后行走的女士?如果是这样的话,从你的窗户往后靠一点。或者在电脑后面走一步。你能看到吗?你注意到有一个前额发亮的男人了吗?
这两张图片向我们展示了我们是如何识别图像的。图像的轮廓和边缘会影响我们的感知。你可能没有注意到,但是我们的大脑捕捉图形中的模式来对物体进行分类。而 CNN 的看点就在于此。我们的机器将被训练通过像我们一样检测一些模式来对图像进行分类。例如,在“猫和狗”问题的情况下,图案将像耳朵、眼睛、颜色和毛发等的形状。

那么什么是卷积呢?
在卷积神经网络的术语中,我们将这些模式称为''、 滤波器 或' 特征检测器。‘在我看来,最后一条是最直观的。因此,CNN 所做的就是使用相应的过滤器从图像数据中检测出想要的特征,并提取出重要的特征进行预测。
让我们先用一个简单的一维例子来理解卷积的概念。假设我们的火车图像是一个 1D 数组,数字如下。我们想要检测值从 0 变到 1 的点。可能有其他可能的过滤器,但我将使用一个简单的 [-1,1] 。

从左到右通过检测器,我们得到每次的卷积值。如你所见,我们可以用结果来捕捉想要的模式。那我们来试试二维的情况。

我想你现在知道卷积是什么了。根据定义,卷积是对两个对象进行的数学运算,产生的结果表示一个对象的形状如何被另一个对象修改。通过这种计算,我们可以从输入图像中检测出特定的特征,并得到包含该特征信息的结果。这叫做' 特征图 . '如果我们用真实图像例子来看,结果如下所示。

现在我们可以考虑三维情况下的相同过程。但这很简单,因为你可以把它看成是二维数据的叠加。

你知道我们的图像数据由三种基本颜色组成:红色、绿色和蓝色。假设我们的图像有 7×7 像素的 RGB 数据。这意味着数据有 7x7x3 的容量。如果我们要用 4 个滤波器检测某些特征,则卷积计算针对每个滤波器进行。请注意结果的音量。高度、宽度和深度是如何变化的。如果我们使用更大尺寸的过滤器,高度和宽度会更大。过滤器的数量将决定结果的深度。
带填充和步幅的卷积
我们还可以对卷积应用其他技巧,其中之一就是填充。你可能已经注意到图像的像素不是用相同的数字处理的。角落的像素比中间的像素少。这意味着像素不会获得相同的权重。此外,如果我们只是继续应用卷积,我们可能会很快丢失数据。 填充 是我们可以用来解决这个问题的窍门。顾名思义,填充意味着在数据的边界给出额外的像素。

上图中的第一个例子展示了我们在上一节中所做的事情。输入图像具有 4x4 像素,过滤器具有 3x3 像素。没有填充,称为' 有效。 '结果变成 2x2 像素数据(4–3+1 = 2)。我们可以看到输出数据缩小了。
这次来看第三个例子。有一层空白像素填充。输入图像有 5x5 像素,滤镜有 3x3 像素。所以结果得到 5x5 像素(5+1 * 2–3+1 = 5),与输入图像大小相同。我们称之为' 同 . '我们甚至可以使结果大于输入数据,但这两种情况用得最多。
顺便问一下,滤镜是不是每次都要移动一个像素?当然不是。我们还可以让它在水平和垂直方向上一次移动两步或三步。这叫做' 大步 . '
那么我们可以在这里问一个问题。假设有一个 N x N 输入图像和 Nc` 数量的 f x f 滤镜。我们将使 p 的填充层数和移动的步幅值 S 的过滤器。请花点时间思考一下,总结一下我们到目前为止讨论的所有内容。结果的大小会是多少?

合并和扁平化
我们一直在走的是卷积层。而且实际上还有不同于卷积层的附加层: 汇集层 和 展平层 。先说第一个。合并就是合并的过程。所以基本上是为了减少数据量。

滑动一个窗口,我们只取左边盒子里的最大值。这是' 最大汇集 . '我们也可以像右图一样取平均值。这是' 平均池 . '我们还可以像在卷积层那样调整步幅。
但这不是在丢失有价值的数据吗?为什么我们要缩小尺寸?这可能会被视为在第一眼就丢失信息,但这比丢失更“有意义”的数据。通过去除数据中的一些噪声并仅提取重要的噪声,我们可以减少过拟合并加速计算。
扁平化和完全连接的层是我们在 CNN 的最后阶段所拥有的,这意味着你就快到了!太好了。对了,你没忘记我们为什么要做这些吧?我们在做什么?图像处理。为了什么?🙄🙄对“猫和狗”进行分类我们正在制作一个分类模型,这意味着这些经过处理的数据应该是模型的良好输入。它必须是一维线性向量的形式。矩形或立方体形状不能直接输入。这就是为什么我们需要扁平化和全连接层。

展平 是将数据转换成一维数组,输入到下一层。我们展平卷积层的输出,以创建单个长特征向量。并且它连接到最终的分类模型,该分类模型被称为 全连接 层。换句话说,我们将所有像素数据放在一行中,并与最后一层建立连接。再一次。最后一层是做什么用的?《猫和狗》的分类
一次
现在让我们看看我们在一个镜头中走过了什么。

添加多个卷积层和池层,将对图像进行特征提取处理。并且对于 softmax(对于多类情况)或 sigmoid(对于二进制情况)函数,将有完全连接的层指向该层。我没有提到 ReLu 激活步骤,但它与 ANN 中的激活步骤没有区别。
随着层次越来越深,模型处理的功能也变得越来越复杂。例如,在 ConvNet 的早期阶段,它查找定向线条模式,然后找到一些简单的图形。在深层阶段,它可以捕捉对象的特定形式,并最终能够检测输入图像的对象。
理解 CNN 就是理解图像数据是如何处理的。如何将图像转换成数据并提取特征进行预测。从这个基本结构出发,还有很多修改和融合的版本。ResNet、AlexNet、VGG-16 或 Inception Networks 就是其中的一些。想了解这些车型的更多信息?查看下面的附加资源!
- 从零开始学习卷积神经网络的综合教程 作者普尔基特·夏尔马:本帖为 Coursera 上深度学习专业化第 4 期课程的总结版。它不仅包括 CNN 的概念,还包括我提到的其他类型的基本 CNN。
- 图像分类器——猫🐱vs 狗🐶格雷格·苏尔马:关于卷积的精彩解释和使用 Colab 构建第一个 CNN 的温和指南。
- 用于图像处理的卷积神经网络 上 data camp:CNN 的精品课程。本课程涵盖了从卷积的概念到以非常直观的方式在 Keras 中构建模型。
你可能也会觉得这些系列很有趣!😍👍
- OpenCV 图像处理教程
OpenCV 和 Python 中的图像处理简介
towardsdatascience.com](/computer-vision-for-beginners-part-1-7cca775f58ef)
- 卷积神经网络的高级网络
从 VGG 开始,ResNet 和盗梦空间网络
towardsdatascience.com](/deep-dive-into-the-computer-vision-world-f35cd7349e16)
感谢您的阅读,希望您对这篇文章感兴趣。我总是乐于交谈,所以请在下面留下评论,分享你的想法。我还每周在 LinkedIn 上发布其他有价值的 DS 资源,请关注并联系我。我会回来讲另一个激动人心的故事。直到那时,快乐的深度学习!*
递归神经网络最直观和最简单的指南
揭开 RNN 的神秘面纱

一切都有过去。有时候过去定义了我们。我们走过了什么路,一路上做了什么选择。它们像我们的历史一样弯曲,告诉我们过去是什么样的人,我们将走向何方。这也适用于数据。他们可以拥有自己的过去,而那段历史可以用来预测接下来会发生什么,未来。正如我们有一个算命师,同样的数据,这被称为序列模型。
这是神经网络“最直观和最容易的指南”系列的第三部分。本帖全套如下:
- 安最简单的指南
- CNN 最简单的指南
- RNN 最简单的指南(本帖)
这篇文章假设你有神经网络的基础知识。如果你对这个完全陌生,请随意查看第一个系列。今天的关键词是序列,消失梯度,记忆和门。很难理解递归神经网络的结构和数学表达式。所以这篇文章将集中在最少数学量的基本直觉上,就像我们在上一篇文章中对 ANN 所做的那样。
这里有什么新鲜事?
如果你听说过序列模型,那么你可能会看到下面这种图表。这是很自然的,你不会一眼就看到图中描绘的概念。这是因为序列模型与前面讨论的其他神经网络有点不同。

所以在深入这个神经网络之前,我们为什么不谈谈序列模型在现实世界中的应用。这是因为它可以帮助我们通过从这些例子中得到提示来理解这个概念。那么,RNN 在哪里受到数据科学家的关注呢?
语音识别可以是一个典型的例子,我们可以找到最近的距离。Alexa、Siri 和 Google home。这些设备响应我们的呼叫,并可以完成一些简单的任务,如设置闹钟或向其他人发送消息。我们也可以通过谷歌翻译或聊天机器人找到它。

序列模型在遗传学领域也很流行。如果你有一点 DNA 方面的背景知识,理解这里的序列的含义会容易得多。在人类分子中, DNA (脱氧核糖核酸)由 4 种不同类型的核苷酸链组成: A 、 C 、 G 和 T 。遗传信息存在于核苷酸的连续组合中。因此,这些序列对于所有种类的生物都是必需的,并且序列模型在预测基因的未覆盖部分中具有很高的使用价值。
时间序列分析呢?这种神经网络还能够预测股票市场价格或温度数据的下一个值。例如,我们收集 30 天的温度数据,并使用这一系列数据来预测 31 日的温度。
你注意到这些例子的共同特征了吗?言语、DNA 链和时间序列。答案是“循序渐进”数据不是静态的或不连续的,而是前赴后继的。但是当涉及到数据时,我们所说的连续或连续是什么意思呢?
让我们回忆一下我们对像 ANN 这样的其他模型所做的工作。我们有样本数据,并通过从左到右的层传递它们。这意味着我们将一次输入数据,然后它们将向输出层传输。它是前馈传播,只有一个流动方向。

然而,在 RNN 的情况下,数据不是同时输入的。如右图所示,我们先输入 X1 ,然后输入 X2 得到 X1 的计算结果。同理, X3 用 X2 计算阶段的结果计算。
因此当谈到数据时,‘时序’意味着我们在数据之间有一个时间顺序。当它是安的时候,在 X1,X2 和 X3 没有任何秩序的概念。我们只是立刻输入它们。然而,在 RNN 的情况下,它们是在不同的时间输入的。因此,如果我们改变顺序,它会变得明显不同。一句话就会失去意义。当涉及到 DNA 时,这种变化可能会产生…一种突变体。
因此,RNN 的吸引力在于我们可以将数据与之前的数据联系起来。这意味着模型开始关心过去和未来。由于递归单元保存过去的值,我们可以称之为内存。我们现在能够考虑数据中“上下文”的真正含义。
递归神经网络的结构
现在有了这个基本的直觉,让我们更深入地了解 RNN 的结构。这是一个简单的 RNN,只有一个浅层。我们的模型现在将取两个值:在时间 t 的 X 输入值和来自前一个单元的输出值 A (在时间 t-1 )。

请看一下方程式 ① 。和简单人工神经网络一样,存在权重和偏差。只是多加了一个输入值 A0 。细胞有两种不同的输出。下一个单元的 A1 的输出( ② )和单元电池的最终输出Y1(③)。不要因为这些下标而紧张。它们只是表明重量属于什么值。现在我们来看下一个单元。

简单又酷吧?现在我们可以预测未来。如果是关于股市,我们可以预测一家公司的股价。然后我们猜测,如果有一个大的数据集,比如 10 年前的历史数据,我们会得到更好的准确性。所以数据越长,结果越好,对吗?但事实是,这个模型并不像我们预期的那样理想。
真正的事情从这里开始
回忆过去的想法太棒了。但是反向传播有一个关键问题。反向传播是向后更新每一层的权重的步骤。为了更新权重,我们获得成本函数的梯度,并使用链式规则在给定的层上不断乘以梯度。RNN 的实际反向传播比这张图要复杂一些,但为了简单起见,我们跳过它们。(例如,真实的反向传播不仅采用最终输出 Yt 而且采用成本函数使用的所有其他输出 Y 。)

想象一下当梯度大于 1 时。更新后的值变得如此之大,以至于无法用于优化。这叫做 爆炸渐变 。但这并不是一个严重的问题,因为我们可以固定梯度不能超过的范围。真正的问题发生在梯度小于 1 的时候。如果我们一直乘以小于 1 的值,结果会变得越来越小。经过一些步骤后,结果不会有明显的差异,并且它不能在权重上进行任何更新。它叫做 消失渐变。 表示反向传播效应不能达到层的早期。
这就是为什么人们说 RNN 记性不好。如果输入值的长度变得更长,我们就不能期待实际的优化。这是一个非常关键的问题,因为神经网络的能力来自于更新权重。还有其他方法可以解决这个问题吗?
让我们忘掉它吧!
说实话,记性不好的人很难得到好的回忆。我们都知道。太多的东西我们记不住。我们的模型也是如此。与其拖着所有的过去,也许选择性的回忆会更好。这就像只选择了重要的信息,而忘记了其他的。拥有所有这些过去的值会导致渐变消失。因此我们给简单 RNN 增加一个步骤,称为。**

左图显示了 RNN 晶胞内的计算。这里没有什么新东西。它只是显示了它接受两个输入值,并在计算后返回两个输出值。在右边,你可以看到盒子里有一个小小的变化。绿色盒子。这是什么?这是一个 门控制器 。这个盒子决定了我们是否应该记住。

我们将像对 RNN 那样计算 tanh 激活( ① ),但这不会马上用到前面。就像一个候选人。在这里,我们还将获得门的新值( ② )。因为它采用 sigmoid 函数,所以输出值总是在 0 到 1 之间。因此,通过将它乘以 ① 值,我们将决定是否使用它。当 0 的时候, 没有用 或者 没有更新。 (本例使用以前的值)当 1 , 使用 或 更新。“这就像打开和关闭一扇大门。
大门和大门
现在我们终于来到了 LSTM, 长短期记忆网络 。实际上,LSTM 比格鲁什更早被提出。但是我首先带来了 GRUs,因为 LSTM 的结构比 GRUs 的结构更复杂,多了两个门。此外,这里还会有一个新概念,叫做“ 细胞状态 ”但是你已经习惯了这个概念。它将包含内存的值与隐藏状态值 A 放在一起。让我们详细看看 LSTM 有什么。中间的蓝框和绿框( 输入门 )与 GRUs 相同。这里有两个额外的绿色方框: 遗忘门 和 输出门 。

计算也是一样的,所以我们将从双曲正切函数( ① )获得输出,从 sigmoid 函数( ② )获得输入门值。但是这次乘法步骤有点不同。除了只取输入门的结果,我们还考虑来自左边的遗忘门值。

让我们看看右边第三行的等式。我们有一个遗忘门,它将用于更新单元状态值,如第 4 行所示。最后还有一个门,输出门。如第 6 行所示,我们通过将时间 t 处的 C 的输出门值和 tanh 激活值相乘,得到时间 t 处的 A 值。
有了这三个额外的门,LSTM 可以有更强的记忆能力。这些都是关于控制它应该记住的部分或数量。它是如此健壮和有效,以至于在序列模型中非常流行。那么我们能说它在所有情况下都比 GRUs 好吗?正如我们一直说的,没有灵丹妙药,GRUs 也有自己的优势。它的结构比 LSTM 简单,所以有时用 GRUs 做一个大模型是合适的。
结论
到目前为止,我们讨论的是具有一个浅层的序列模型。那么当我们增加更多的层时会是什么样呢?如果我们说在 ANN 或 CNN 中增加更多层是水平的,那么在 RNN 是垂直的。但是序列模型已经是一个有一两层的大模型了,如果我们在其上再增加几层,它可能会过度拟合。因此,需要应用归一化技术,如丢弃或批量归一化。

这篇文章主要是关于理解从简单的 RNN 到 LSTM 的每个模型的结构。我们走过的数学表达式乍一看可能很复杂。然而,在您熟悉了模型的整体结构之后,就很容易理解了。因为数学只是一个数字表达式,以清晰有效的方式表达概念。如果你能看到这些数字背后的含义,那么数学也会变得有趣。
我还一如既往地带来了其他额外的资源。当您准备好进一步使用序列模型时,我强烈建议您也阅读这些文章。
- 了解 LSTM 网络 克里斯托弗·奥拉:这样一篇关于了解 RNN 和 LSTM 结构的伟大文章。Colah 的博客很受欢迎。你可以看到许多其他的资料都有这个博客作为参考。
- 学习序列建模的必读教程bypul kit Sharma:我在之前的博客里已经贴出了他的作品,这是针对序列模型的系列。如果你还没有看过,强烈推荐你去看看其他的系列。****
- 递归神经网络示例在 Python 中由 Will Koehrsen 撰写:来自 Medium 顶级作家的温和指导。这将是用 Python 构建第一个 RNN 的良好开端。
感谢您的阅读,希望您对这篇文章感兴趣。如果有什么需要改正的地方,请和我们分享你的见解。我总是乐于交谈,所以请在下面留下评论,分享你的想法。下次我会带着另一个令人兴奋的项目回来。在那之前,机器学习快乐!
2019 年数据科学求职者最容易忽视的技能
过去一年,数据科学职位的空缺增加了 56%。对有才能的劳动力有巨大的需求来填补这些角色。论坛上充斥着关于行业最佳语言或框架的话题。然而,没有一种算法、语言或洞察力能让大多数人被雇佣。
能让你找到工作的是良好的技术背景和专业知识。

photo credit: David Kovalenko
什么是主题领域专业知识?
在我看来,主题领域的专业知识分为两类:行业特定知识和数据科学特定知识。如果你能掌握其中一项或两项,你就有可能在就业市场上获得成功。
行业专长 —对你所应聘职位工作领域的掌握程度。对于我在体育分析方面的工作,我发现这特别有用。如果申请人有丰富的体育专业知识,他们更能集思广益,发现工作中的常识性错误,并能借鉴自己或其他人在该领域已经完成的其他研究。我还发现,这些候选人有独特的个人项目,可以为我的客户提供即时价值。从某种意义上说,雇佣他们也是购买他们现有的作品。显然,按照他们的标准,这也是可以接受的。
数据科学专业知识 —深入了解一种公司希望扩展其能力的分析类型。对许多公司来说,雇佣某个领域的专家比培训某人学习一套技能要容易得多。如果你在 NLP 或计算机视觉项目中投入了大量的工作,这可能会让你在需要这些特定技能的角色中脱颖而出。就我个人而言,我已经发展了更广泛的技能,但我相信如果我真的在一个领域磨练,我肯定会提高我的机会。
为什么选择专业领域?
很多时候,公司都在寻找数据科学家来担任特定的角色或处理特定的任务。对于许多企业来说,线索评分模型或图像分类算法包含了他们所做的大部分数据科学工作。招聘经理将寻找具有特定数据科学技能专业知识的人来填补这一职位。
另一方面,如果你有行业领域的专业知识,你对招聘多面手的公司会更有吸引力。如果您已经熟悉该行业的基础知识,您可以将大部分时间花在各种不同的数据科学项目上。你也可以在项目构思、计划和优先级排序方面提供帮助。
如果你拥有数据科学技能和行业专业化的一些元素,你会给自己带来巨大的灵活性。你可以在一个公司里做一个大项目,也可以通过做很多项目来利用你的知识广度。
如何获得学科专业知识?
像任何技能一样,学科领域的专业知识是可以获得的。我个人认为,你不必从以前的工作中直接获得这些技能。我强烈建议你在自己的空闲时间从事一些项目来发展这两种类型的专业知识。
我总是向 kaggle.com 或 reddit 推荐这些项目的数据和背景。这些地方有很棒的社区,在那里你可以与能帮助你积累知识的人接触。
在这些领域寻找导师也是可行的。您可以轻松地用数据科学技能换取行业专业知识。对于导师,我总是相信要有所贡献。例如,如果我有兴趣学习更多关于医疗保健的知识,我会通过我的关系网找到某个在那个领域很先进的人。我会就技术如何影响他们的工作提出自己的见解,以换取他们的建议和知识。我建议尽量不要把这变成交易,但还是要明确你能为他们提供一些价值。
就专业技术而言,我相信有大量高质量的教育材料。
但是如果我被鸽子洞了怎么办?
专业化的现实是,你可能会在一个特定的领域或单一的行业工作。有些人可能认为这是一件坏事。我认为,学习如何专业化可以让你更容易专注于未来的其他事情。你会发现每个领域都有一定程度的复杂性。
如果你想转换到一个新的职位,你可以重新开始同样的过程。有许多人专门从事多种不同的事情。比如我的背景就是从高尔夫行业开始的。我也能够对预测模型和蒙特卡洛模拟有一个坚实的理解。有了这种理解,我最终能够学习如何将我的工作应用到其他运动中。
当你专业化时,你就资本化了。
数据科学中最强大的想法
从有用的模式中分离出不必要信息的快速解决方案
如果你上一门统计学入门课程,你会学到一个 T2 数据点 T3 可以用来 T4 激发灵感或者测试一个理论 T5,但不能两者兼而有之。为什么不呢?

人类有点太擅长在一切事物中寻找模式了。真图案,假图案,应有尽有。我们是那种在薯片中找到猫王脸的生物。如果你想将模式等同于洞察力,请记住有三种数据模式:
- 存在于您的数据集中 及其以外的模式/事实。
- 仅存在于数据集中的模式/事实。
- 只存在于你想象中的模式/事实()。

A data pattern can exist (1) in the entire population of interest, (2) only in the sample, or (3) only in your head. Image: source.
哪些对你有用?这取决于你的目标。
灵感
如果你追求纯粹的灵感,它们都很棒。即使是古怪的阿波菲斯——来自术语 阿波菲斯尼亚 (人类倾向于错误地感知不相关事物之间的联系和意义)——也能让你的创造力源源不断。创造力没有正确的答案,所以你需要做的就是看看你的数据,并从中获得乐趣。作为一个额外的奖励,试着不要在这个过程中浪费太多的时间(你的或者你的利益相关者的)。
事实
当你的政府想向你征税时,它根本不在乎你这一年的财务数据之外的模式。有一个基于事实的决定要做,关于你欠了多少,做决定的方法是分析去年的数据。换句话说,看看数据,应用一个公式。我们需要的是纯粹的描述性分析,这种分析只局限于手头的数据。前两种模式都有利于这一点。
坚持手头数据的描述性分析。
(我从未放错过我的财务记录,但我想,如果我丢失这些记录后的反应是用我在研究生院学到的数据估算技术来统计纳税,美国政府会不高兴的。)
不确定情况下的决策
有时候,你所拥有的事实与你 希望 你拥有的事实并不相同。当你没有你想要做的决定所需要的所有信息时,你需要在不确定性中导航,努力选择一个合理的行动方案。
这就是统计学——在不确定的情况下改变想法的科学——的全部意义。这个游戏是要像伊卡洛斯一样超越你所知道的…而不是以啪啪声结束。
这是数据科学核心的巨大挑战:如何不因为查看数据而变得“信息不足”。
在你离开那个悬崖之前,你最好希望你在对现实的局部一瞥中发现的模式确实能超越它。换句话说,模式必须概括对你有用。

Source: xkcd
在这三种模式中,如果你在不确定的情况下做决定,那么只有第一种模式是安全的。不幸的是,你还会在你的数据中发现其他类型的模式——这是数据科学核心的巨大挑战:如何不因为查看数据而导致信息不足。
一般化
如果你认为从数据中提取无用的模式纯粹是人类的特权,那你就大错特错了!如果你不小心的话,机器会自动为你做同样的蠢事。
人工智能的全部意义在于正确地概括新的情况。
机器学习是一种做出许多类似决策的方法,包括从算法上发现数据中的模式,并使用这些模式对全新的数据做出正确的反应。在 ML/AI 行话中, 泛化 指的是你的模型的能力,能够很好地处理它之前没有见过的数据。基于模式的食谱只在旧的东西上成功有什么好处?你可以使用一个查找表来实现。ML/AI 的整个要点是正确地概括出新的情况。

这就是为什么我们列表中的第一种模式是唯一一种对机器学习有益的模式。那是 信号 的部分,其余的只是 噪音 (只存在于你的旧数据中的转移注意力的东西,让你无法得出一个可概括的模型)。
信号:存在于你的数据集中的模式和超出它的。
噪声:只存在于数据集中的模式。
事实上,获得一个处理旧噪声而不是新数据的解决方案就是机器学习中术语 过拟合 的意思。(我们用你最喜欢咒骂的语气说出这个词。)几乎我们在机器学习中所做的一切都是为了避免过度拟合。
那么,这是哪种模式呢?
假设你(或者你的机器)从你的数据中抽取出来的模式存在于你的想象之外,是哪一种?是存在于你的兴趣人群 ( “信号”)中的真实现象,还是你当前数据集的一种特质(“噪音”)。如何判断在研究数据集的过程中发现了哪种模式?
如果你已经查看了你所有的可用数据,你不能。你被困住了,没有办法知道你的模式是否存在于其他地方。统计假设检验的全部修辞在于惊喜,假装对你已经知道的数据中的模式感到惊讶是没有品位的。(本质上就是 p 黑。)

这有点像在云中看到一个兔子形状,然后测试是否所有的云看起来都像兔子…使用同一个云。我希望你意识到你需要一些新的云来测试你的理论。
你用来启发一个理论或问题的任何数据点都不能用来测试同样的理论。
如果你知道你只能访问一张云的图片,你会怎么做?在扫帚间沉思,就是这样。在你查看数据之前 提出你的问题。
数学从来不是基本常识的对立面。
我们正被引向一个最不愉快的结论。如果你在寻求灵感的过程中用完了数据集,你就不能再用它来严格测试它所启发的理论(不管你拿出多少数学魔术柔术,因为数学从来都不是基本常识的对立面)。
艰难的选择
这意味着你必须做出选择!如果你只有一个数据集,你会被迫问自己:“我是不是在壁橱里沉思,建立我所有的统计测试假设,然后小心翼翼地采取严格的方法,这样我就可以认真对待自己了?或者我只是从数据中挖掘灵感,但同意我可能在骗自己,并记得使用“我觉得”或“这激发了”或“我不确定”这样的短语?艰难的选择!**
或者有没有一种鱼和熊掌兼得的方法?这里的问题是,你只有一个数据集,而你需要不止一个数据集。如果你有很多数据,我有一个方法可以帮你。吹。你的。介意。

一个奇怪的把戏
要赢得数据科学,只需通过拆分数据将一个数据集(至少)变成两个。然后用一个做启发,一个做严格测试。如果最初启发你的模式也存在于没有机会影响你的观点的数据中,那么这是一个更有希望的投票,支持模式是你从猫砂盒中挖出数据的一般东西。
如果两个数据集中存在相同的现象,也许这是一个普遍现象,无论这些数据集来自哪里,它都存在。
西德妮。
如果一个未经审视的人生不值得活下去,那么这里有四个词值得你去活下去:拆分你该死的数据。
如果每个人都把自己的数据分开,世界会变得更好。对于更好的问题(来自分析),我们会有更好的答案(来自统计)。人们不把数据分割视为强制性习惯的唯一原因是在上个世纪这是很少有人能负担得起的奢侈品;数据集如此之小,以至于如果你试图分割它们,那么可能什么都没有了。(点击了解更多关于数据科学的历史。)

Split your data into an exploratory dataset that everyone can dredge for inspiration and a test dataset that will later be used by experts for rigorous confirmation of any “insights” found during the exploratory phase.
今天,一些项目仍然存在这个问题,特别是在医学研究领域(我曾经从事神经科学,所以我非常尊重处理小数据集的困难),但是你们中的许多人拥有如此多的数据,以至于你需要雇用工程师来移动它们……你的借口是什么?!不要吝啬,拆分你的数据。**
如果你没有拆分数据的习惯,你可能会停留在 20 世纪。
如果你有大量的数据,但你看到的是未分割的数据集,那么你所在的地方就受到了老式观点的困扰。每个人都习惯于陈旧的思想,忘记了与时俱进。
机器学习是数据分裂的产物
归根结底,这里的想法很简单。使用一个数据集来形成一个理论,发号施令,然后表演魔术,证明你知道你在一个全新的数据集中谈论什么。
数据分割是建立更健康的数据文化的最简单快捷的方法。
这就是你如何在统计中保持安全,也是你如何避免在 ML/AI 中因过度适应而被生吞活剥。其实机器学习的历史就是一部数据拆分的历史。(我在 中解释为什么机器学习是自动化灵感 )。)
如何在数据科学中使用最佳理念
为了利用数据科学中最好的想法,你所要做的就是确保你把一些测试数据放在别人窥探不到的地方,然后让你的分析师去研究剩下的数据。
要赢得数据科学,只需通过拆分数据将一个数据集(至少)变成两个。
当你认为他们给你带来了可操作的“洞察力”,超越了他们探索的信息,使用你的秘密测试数据来检查他们的结论。就这么简单!
感谢阅读!人工智能课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
喜欢作者?与凯西·科兹尔科夫联系
让我们做朋友吧!你可以在 Twitter 、 YouTube 、 Substack 和 LinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格联系。
最被低估的 Python 包
令人敬畏的图书馆的精选列表

source: delphinmedia, via pixabay (CC0)
在我作为 Python 用户的经历中,我遇到过许多不同的包和精选列表。有些在我的书签里,比如伟大的awesome-python-data-science精选列表,或者 awesome-python 精选列表。如果你不认识他们,尽快去看看。
在这篇文章中,我想向你展示一些别的东西。这些是深夜浏览 GitHub/Reddit 的结果,以及同事们分享的很酷的东西。
其中一些包非常独特,另一些只是用起来很有趣,在我共事过的数据科学家/统计学家中,它们是真正的失败者。
开始吧!
杂项(奇怪的)
- 叩叩 : 从 Python 向移动设备或桌面或电子邮件发送通知。
- tqdm:Python 和 CLI 的可扩展进度条,内置熊猫支持。
- Colorama:简单的跨平台彩色终端文本。
- 熊猫日志: 提供关于熊猫基本操作的反馈。非常适合调试长管道链。
- 熊猫-风味: 扩展熊猫 DataFrame/Series 的简单方法。
- More-Itertools:顾名思义,它增加了类似 ITER tools 的附加功能。
- streamlit:为你的机器学习项目创建应用的简单方法。
- SQL model:SQL model,Python 中的 SQL 数据库,为简单性、兼容性、健壮性而设计。****
数据清理和操作
- ftfy: 事后修复了 Unicode 文本中的 mojibake 等小故障。
- 看门人: 很多很酷的清理数据的功能。
- Optimus:另一个用于数据清理的包。
- 远大前程: 一个伟大的软件包,用来检查你的数据是否符合你的期望。
数据探索和建模
- P 和 as-profile : 创建一个 HTML 报告,其中包含熊猫数据帧的所有统计数据。
- dabl:允许使用可视化和预处理进行数据探索。
- pydqc: 允许比较两个数据集之间的统计数据。
- 熊猫-摘要: 对熊猫数据帧描述功能的扩展。
- pivot table-js:jupyter 笔记本内熊猫的拖放功能。
数据结构
- 边界 : 不管数据大小如何,都使用有限(有界)内存量的高效计数器。
- python-bloomfilter:用 Python 实现的可扩展 Bloom Filter。
- datasketch:给你像 LSH、加权 MinHash、HyperLogLog 等概率数据结构。
- 范围:Python 的连续范围、范围集和范围字典数据结构****
性能检查和优化
- Py-spy:Python 程序的采样分析器。
- py perf:运行 Python 基准的工具包。
- snakeviz:一个浏览器内 Python 概要文件查看器,对木星笔记本有很大的支持。****
- Cachier:Python 函数的持久、无陈旧、本地、跨机缓存。
- Faiss:一个高效的相似性搜索和密集向量聚类的库。
- mypyc:一个使用类型提示将 Python 代码编译成 C 扩展的库。
- 不规则三角形 : 一款面向 Python 的高性能 CPU、GPU 和内存分析器。
我希望你找到了对你的工作有用或有趣的东西。我以后会扩充帖子,敬请关注新的更新!
最被低估的 R 包:2020 版
令人敬畏的和不太为人所知的 R 库的精选列表

Photo by Safar Safarov on Unsplash
在我作为 R 用户的经历中,我遇到过很多不同的包和管理列表。有些在我的书签里,比如伟大的 awesome-R 榜单,或者由 R 工作室策划的月度“最佳”榜单。如果你不认识他们,尽快去看看。
在这篇文章中,我想向你展示一些别的东西。这些是深夜浏览 GitHub/Reddit 的结果,以及同事们分享的很酷的东西。
其中一些包非常独特,另一些只是用起来很有趣,在我共事过的数据科学家/统计学家中,它们是真正的失败者。
开始吧!
💥杂项(奇怪的)💥
- BRRR 和 beepr:你有没有想过知道——并庆祝——你的模拟最终在 R?你有没有因为完成了一点棘手的代码而感到骄傲,以至于你希望 Flavor Flav 大喊“耶啊啊啊,boi!!"一旦成功完成?
- calendR:准备打印用 ggplot2 制作的月历和年历。
- 检查点: 可以安装过去某个特定日期的包版本,就好像你有一台 CRAN time machine 一样。
- DataEditR:DataEditR 是一个轻量级的包,用于交互式地查看、输入或编辑 r 中的数据。
- 德雷克: It 分析你的工作流,用最新的结果跳过步骤,用可选的分布式计算协调其余的步骤。最后,
drake提供了你的结果与底层代码和数据相匹配的证据,这增加了你信任你的研究的能力 - 流程: 将函数、表达式或脚本的逻辑可视化为流程图,方便调试。

From “flow” Github. Look at this beauty.
- generative art:美丽的数学启发的抽象艺术****
- here:here 包的目的是实现简单的文件引用。与使用
setwd()不同,它很脆弱并且依赖于你组织文件的方式,这里使用一个项目的顶层目录来容易地构建文件的路径。 - installer:它允许用户只需一个命令就可以更新 R 和所有已安装的软件包。
- mailR: 从 r 内部发送邮件。
- plumber: 一个 R 包,把你现有的 R 代码转换成 web API。
- pushoverr: 从 R 向移动设备或桌面发送推送通知。
- statcheck:
statcheck是一个免费的开源 R 包,可以用来从文章中自动提取统计零假设显著性测试(NHST)结果,并根据报告的测试统计和自由度重新计算 p 值,以检测可能的不一致。 - 用途这: 用途这是一个工作流包:它自动化了项目设置和开发过程中出现的重复性任务,包括 R 包和非包项目。
✨Data 可视化✨
- bayesplot: 一个 R 包,提供了一个扩展的绘图函数库,供拟合贝叶斯模型(通常用 MCMC)后使用。bayesplot 创建的地块是 ggplot 对象,这意味着在创建地块后,可以使用 ggplot2 包中的各种函数对其进行进一步自定义。
- cowplot: 对齐图形到网格的牛逼。
- Esquisse: 基本上是为 ggplot 创建一个 drag & drop GUI,所以你不用编写大部分的剧情。
- hrbr Themes:' gg plot 2 '的附加主题和主题组件。
- gganatogram: 使用 ggplot2 创建 anatogram。是啊,真的。
- gg annotate:gg annotate 是一个点击式工具,可以帮助您将注释准确地放置在您想要的位置。
- golem:这个包使得创建现成的闪亮应用程序变得轻而易举。
- 拼拼凑凑: 拼拼凑凑的目的是让把独立的 ggplots 组合成同一个图形变得简单得可笑。
- ray shader:不烂的 3D 剧情。

From “Rayshader” Github.
- 见: 简易黑板背景为 ggplots。
- sjplots: 用于数据可视化的绘图和表格输出函数的集合。
- tmap:r 中惊人的专题地图
- vapor wave:A E S T H E T I C S ' time。美化你的情节,就像它仍然是 80 年代。
- visreg: 根据预测变量 x 如何影响结果 y 来显示拟合模型的结果
- wesanderson: 用于 R 的韦斯·安德森调色板
🛁数据清理和操作🛁
- 看门人: 很多很酷的清理数据的功能,去 github 链接上查查他们的例子吧。
- sqldf: 使用 SQL 语法进行数据管理。如果您需要加载超过您的机器所能处理的数据,那么就应该这样做。您可以对其进行过滤,并只加载选定内容。
- naniar:所有你需要的缺失数据。
- Tidylog: 提供关于基本 dplyr 操作的反馈。非常适合长管道链。
- validate: 一个伟大的软件包,检查您的数据是否符合预定义的规则(由同一作者与 errorlocate 一起使用)。同样是同一作者,去查一下演绎和 dcmodify 。
💻数据探索和建模💻
- data explorer:用于探索性分析的强大功能。
- dlookr: 几个数据质量诊断和 EDA 的定制函数,形式简洁。
- 达摩:GLMMs 残差诊断的一个有趣的 R 包。
- final fit:
finalfit包提供了在 r 中建模时帮助您快速创建优雅的最终结果表格和绘图的功能。这些可以很容易地导出为 Word 文档、pdf 或 html 文件。下面的例子。
**explanatory = c("age.factor", "sex.factor",
"obstruct.factor", "perfor.factor")
dependent = 'mort_5yr'
colon_s %>%
finalfit(dependent, explanatory, metrics=TRUE) -> t2
knitr::kable(t2[[1]], row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"))
knitr::kable(t2[[2]], row.names=FALSE, col.names="")**

Super clean, publication ready table. From “finalfit” Github.
- LongCatEDA: 用于可视化分类变量的纵向变化。
- 【jtools:这个包由作者(Jacob)创建的一系列函数组成,用来自动化原本繁琐的研究任务。此时,统一的主题是回归分析的更有效的表示。
- modelbased: 这是一个轻量级的软件包,有助于基于模型的估计,用于边际平均值的计算、对比分析和预测。
- 性能: 性能包的主要目标是提供计算模型质量和拟合优度指数的工具。这包括像 r 平方(R2)、均方根误差(RMSE)或组内相关系数(ICC)这样的度量,还包括检查(混合)模型的过度分散、零膨胀、收敛或奇异性的功能。
- skimr: 一种无摩擦、可管道化的处理汇总统计的方法。
- speed glm:Fast针对大数据的 glm。****
- syuzhet:易观情感分析在 r****
我希望你找到了对你的工作有用或有趣的东西。如果你有什么酷的东西要添加到列表中,请在评论区告诉我!
编辑 2022:查看本文的第 2 部分!
令人敬畏的和不太为人所知的 R 库的精选列表
towardsdatascience.com](/the-most-underrated-r-packages-part-2-decdc753205c)******
最被低估的数据科学课程
快速提高你的技能

Photo by Charlotte Coneybeer on Unsplash
你们都知道 Coursera 的机器学习课程和吴恩达的深度学习专业化。你连 fast.ai,Udemy,EdX 都讲。这些都是学习数据科学的优秀资源,但我想让你知道一套鲜为人知但非常棒的课程,你可以通过这些课程在几个小时内增加你的知识。
Kaggle Learn
你可能听说过 Kaggle。你很可能已经参加了一次挑战,也许上传了一些内核,但是你知道 Kaggle 还提供数据科学教育吗?
我一直很惊讶有多少人不知道 Kaggle 的优秀(而且免费!)微课。
Kaggle 的教学方法与其他一些平台略有不同。而不是更长的课程,有多个主题的微课。大多数主题由 5-7 节课组成,每节课需要 30-60 分钟。这些课程最好的部分之一是,所有的练习都让你进入 Kaggle 内核,因此你可以立即开始用你的新知识进行编码和实验。
这些课程由各种各样的教师讲授,他们通常都有很强的学术和行业背景。目前,有 12 个主题可供选择:
- 计算机编程语言
- 机器学习简介
- 中级机器学习
- 数据可视化
- 熊猫
- 特征工程
- 深度学习
- SQL 简介
- 高级 SQL
- 地理空间分析
- 微挑战
- 机器学习可解释性
每个主题都让你知道是否有你应该首先考虑的先决主题,这样你就不会一开始就陷得太深。
为什么我是你的粉丝
在与数据科学家交谈时,我发现几乎每个人都想了解更多。然而,通常情况下,学习的最大障碍是时间。你很想参加吴恩达的深度学习课程,但你现在似乎在职业生涯中找不到时间。
我相信 Kaggle 已经在他们的 Kaggle 学习中走了很长的路,以最小化你学习一个新话题所需的时间。为了做到这一点,主题被分解到它们的核心组件,简单地解释,并附有代码。每天只需 30 分钟,你就可以在一周内完成大部分题目。你会成为这些领域的顶尖专家吗?没有。但是我发现他们确实在短时间内提供了一个坚实的基础。
此外,我认为 Kaggle 在选择高度实用的主题方面做得很好,这些主题真正补充了你从学校或更正式的在线课程中获得的技能。例如,我不知道任何其他平台提供关于机器学习可解释性的课程,或者让你在几个小时内查询 SQL 数据库。
你可以在 Kaggle 网站上找到这些课程。我真的希望你能花一分钟去看看它们。这些微型课程是继续培养您的数据科学能力的绝佳方式快速。
这篇文章也可以在这里找到。
加入我的 邮箱列表 保持联系。
最被低估的标准 Python 库
视频教程
面向数据科学家的集合
Python 有许多现成的优秀库。其中之一就是 收藏 。集合模块提供了“高性能容器数据类型”,它提供了通用容器 dict、list、set 和 tuple 的替代方案。我很乐意向你介绍其中的三种数据类型,最后,你会想知道没有它们你是如何生活的。
命名元组
我不能夸大命名的组合对数据科学家的用处。让我知道这种情况听起来是否熟悉:你正在做特征工程,因为你喜欢列表,你只是不断地将特征添加到列表中,然后将列表输入到你的机器学习模型中。很快,您可能会有数百个功能,这时候事情就变得混乱了。您不再记得哪个特性引用了列表中的哪个索引。更糟糕的是,当别人看你的代码时,他们根本不知道这个庞大的特性列表是怎么回事。
输入 NamedTuples 以保存该天。
只需几行额外的代码,你那疯狂杂乱的列表就会恢复到有序。让我们来看看
如果您运行这个代码,它将打印出“22”,即您存储在您的行中的年龄。这太神奇了!现在,您不必使用索引来访问您的要素,而是可以使用人类可以理解的名称。这使得你的代码更容易维护,更简洁。
计数器
计数器名副其实——它的主要功能是计数。这听起来很简单,但事实证明数据科学家经常要计算事情,所以它可以非常方便。
有几种方法可以初始化它,但我通常有一个值列表,并按如下方式输入该列表
如果您要运行上面的代码(您可以使用这个棒极了的工具),您将得到下面的输出:
[(22, 5), (25, 3), (24, 2), (30, 2), (35, 1), (40, 1), (11, 1), (45, 1), (15, 1), (16, 1), (52, 1), (26, 1)]
按最常见的排序的元组列表,其中元组首先包含值,然后包含计数。因此,我们现在可以很快看到,22 岁是最常见的年龄,出现 5 次,还有一个长尾年龄,只有 1 次计数。不错!
默认字典
这是我的最爱之一。 DefaultDict 是一个字典,当第一次遇到每个键时,用默认值初始化。这里有一个例子
这返回
defaultdict(<type 'int'>, {'a': 4, ' ': 8, 'c': 1, 'e': 2, 'd': 2, 'f': 2, 'i': 1, 'h': 1, 'l': 1, 'o': 2, 'n': 1, 's': 3, 'r': 2, 'u': 1, 't': 3, 'x': 1})
通常,当你试图访问一个不在字典中的值时,它会抛出一个错误。还有其他方法来处理这个问题,但是当您有一个想要采用的默认值时,它们会增加不必要的代码。在上面的例子中,我们用 int 初始化 defauldict。这意味着在第一次访问时,它将假设一个零,所以我们可以很容易地继续增加所有字符的计数。简单干净。另一个常见的初始化是 list,它允许您在第一次访问时立即开始追加值。

Photo by Hitesh Choudhary on Unsplash
去写更干净的代码
既然您已经了解了 collections library 和它的一些令人敬畏的特性,那就去使用它们吧!你会惊讶地发现它们是如此的有用,你的代码会变得更好。尽情享受吧!
这篇文章也可以在这里找到。
穆勒报告:在美国的调查

Photo by David Everett Strickler on Unsplash
随着最近穆勒报告的发布,我认为对 r .的调查进行研究是一个有趣的想法,即对穆勒报告进行探索性分析。所以现在开始。
环境设置
让我们首先加载本次探索所需的所有库。
rm(list = ls())
library(tidyverse)
library(pdftools)
library(tidylog)
library(hunspell)
library(tidytext)
library(ggplot2)
library(gridExtra)
library(scales)
获取数据即米勒报告
这份报告可以在司法部的网站这里免费获得,我们可以作为 R 对象访问它,就像这样-
download.file("[https://www.justice.gov/storage/report.pdf](https://www.justice.gov/storage/report.pdf)", "~/Downloads/mueller-report.pdf")report <- pdf_text("~/Downloads/mueller-report.pdf")
我将在这里使用报告呈现的预转换 CSV 格式。
report <- read_csv("[https://raw.githubusercontent.com/gadenbuie/mueller-report/master/mueller_report.csv](https://raw.githubusercontent.com/gadenbuie/mueller-report/master/mueller_report.csv)")
清理数据
由于实际的报告从几页开始,pdf 到文本的解析返回一些失败(也是报告的修订部分),所以数据中有一些空行。让我们把这些过滤掉。
report %>%
filter(page >= 9) -> content
content %>%
filter(!is.na(text)) -> content
此外,由于解析错误,我们在数据中看到许多拼写错误的单词。让我们用 hunspell 找到并删除大部分单词拼写错误的行。
content %>%
rowwise() %>%
mutate(num_misspelled_words = length(hunspell(text)[[1]]),
num_words = length(str_split(text, " ")[[1]]),
perc_misspelled = num_misspelled_words/num_words) %>%
select(-num_misspelled_words, -num_words) -> contentcontent %>%
filter(perc_misspelled <= 0.5) -> content
使用 tidytext 规格化线条
content %>%
unnest_tokens(text, text, token = "lines") -> content
最流行词汇
让我们看看穆勒报告中最受欢迎的词是什么
tidy_content <- content %>%
unnest_tokens(word, text) %>%
anti_join(stop_words)tidy_content %>%
mutate(word = str_extract(word, "[a-z']+")) %>%
filter(!is.na(word)) %>%
count(word, sort = TRUE) %>%
filter(str_length(word) > 1,
n > 400) %>%
mutate(word = reorder(word, n)) %>%
ggplot( aes(x=word, y=n)) +
geom_segment( aes(x=word, xend=word, y=0, yend=n), color="skyblue", size=1) +
geom_point( color="blue", size=4, alpha=0.6) +
coord_flip() +
theme(panel.grid.minor.y = element_blank(),
panel.grid.major.y = element_blank(),
legend.position="none") +
labs(x = "",
y = "Number of Occurences",
title = "Most popular words from the Mueller Report",
subtitle = "Words occurring more than 400 times",
caption = "Based on data from the Mueller Report")

从上面的图中我们可以看出,报告中最受欢迎的词是“总统”和“特朗普”。另一个值得注意的词,“科恩”、“弗林”、“科米”和“麦克加恩”。
最常见的相关词
让我们建立一个在报告中高度相关的词的网络
word_cors <- tidy_content %>%
add_count(word) %>%
filter(n > stats::quantile(n, 0.7)) %>%
pairwise_cor(word, page, sort = TRUE)set.seed(123)word_cors %>%
filter(correlation > 0.25,
!str_detect(item1, "\\d"),
!str_detect(item2, "\\d")) %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(aes(edge_alpha = correlation), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_void() +
labs(x = "",
y = "",
title = "Commonly Occuring Correlated Words",
subtitle = "Per page correlation higher than 0.25",
caption = "Based on data from the Mueller Report")

正如我们所料,最常见的相关单词是“meeting”和“kushner”&“comey”和“investigation”等等。
总结
正如我们所看到的,我们可以使用 r 快速对 Mueller 报告进行探索性分析。点击这里查看我关于穆勒报告的详细博文
介绍分析加载库下载报告清理页面范围文本 NA 拼写错误的单词正常化大多数…
www.adityamangal.com](https://www.adityamangal.com/2019/04/the-mueller-report/)
我将讨论如何使用 python 的 NLTK 库和 R 来分析报告中的情感,并使用我们自己定制的搜索引擎对报告进行事实核查。
让我在这里或者在博客上知道你的想法。
干杯!
循环虚时间和温度之间的神秘联系

Image by prettysleepy1 from Pixabay
一个显而易见的事故可能蕴含着物理学上的一个巨大谜团
当人类知识分支中完全不同的概念、理论显示出它们实际上是紧密相连的时候,就会产生一种特殊的美。阿尔伯特·爱因斯坦在给他的朋友、数学家马塞尔·格罗斯曼的信中写道:
“发现一系列起初似乎完全分离的现象的统一是一种光荣的感觉。”
—阿尔伯特·爱因斯坦
在这篇文章中,我将描述理论物理的两个基本分支之间一些令人难以置信的优雅联系,即量子力学 (QM),它在原子和亚原子粒子的水平上代表宇宙,以及统计力学 (SM),它应用统计方法来描述粒子集合的行为。
从数学上讲,这些联系是一个简单的算术替换的结果,它使循环虚时间等同于温度。换句话说,虚时间中的周期性等同于温度(的倒数)。
"隐藏的联系比明显的联系更强."
—以弗所的赫拉克利特
同样值得注意的是,如果我们简单地把我们的理论扩展到包括虚数时间,许多惊人的结果会很直接地得到。不仅如此,一些数学对象的表现也变得更好了(这导致了一些关于“时间的真实性”的问题,我将在本文的结尾提到)。
一个著名的例子(稍后将更详细地描述)是计算黑洞辐射(所谓的霍金辐射)的温度,这是通过简单的算术运算轻松获得的!

Figure 2: An illustration of the Hawking radiation from a black hole, to be discussed later on (source).
“偶然”的通信
我们可以通过将支配量子系统如何随时间演化的算符、时间演化算符和密度算符联系起来,后者是一个与时间无关的对象,它描述了处于平衡状态(温度为 T )的多粒子系统的统计状态。

Figure 3: The correspondence between QM and SM. The leftmost object is the time evolution operator from QM and the rightmost object is the density operator from SM. The Euclidean time τ is cyclic with period β.
其中 τ ,称为欧几里得时间(原因很快就会搞清楚),是循环的(或周期性的),周期为 β,其中

Equation 1: Definition of inverse temperature β, the imaginary unit i, and the Planck constant.
表达式中的因子 h 就是量子力学中的基本参数普朗克常数。下图是复平面,实数位于横轴,虚数位于纵轴。

Figure 1: The complex plane showing the imaginary units i and -i (source).
用更专业的术语来说,我们说在量子力学(或量子场论)中,哈密顿量充当时间平移的李群的生成器,而在统计力学中,同一个哈密顿量的角色是系综中的玻尔兹曼权重。

Figure 4: The Petrie projection of the exceptional Lie group of type E8 (source).
灯芯旋转
转变

Equation 2: The replacement of the time variable t by -iτ is called a Wick rotation.
被称为的灯芯旋转。新变量 τ 被称为虚数或欧几里得时间,子索引+表示 τ 为正。使用术语“欧几里得时间”的原因将在下面解释。

Figure 5: The imaginary/Euclidean time axis and a Wick rotation (source).
当把论点 t 推广到复数值时,对于 U ( t )保持解析或全纯函数(一个函数在复平面的某个区域 R 上是解析的,如果它在 R 内的每一点上是复可微的)。
为了更详细地了解这一点,让我们首先根据哈密顿量的本征态写出时间演化算符:

Equation 3: Time evolution operator written in the energy eigenbasis.
旋转复平面中的时间 t 并将其写成实部和虚部,和内的指数变为:

只有当虚部 Im( t )满足以下条件时,该表达式才不发散:

Equation 4: The imaginary part of the complexified time must be negative or zero for the evolution operator to be bounded over the Hilbert space of the system (see figure below).
等式右边的符号“||”是算符的范数(这里的定义见)。

Figure 6: Time complex space. The evolution operator is well-defined only if the imaginary part of t is positive.
密度算符,一个静态对象,可以作为一个演化算符在虚数时间内给出一个“伪动态”解释,只要进行如下替换

Equation 5: The Wick rotation that “takes” quantum mechanics into statistical mechanics.
虚数循环时间和逆温之间显然有简单的对应关系。
换句话说,在循环时间和温度倒数之间有一个明显的简单对应关系。

Figure 7: The link between quantum mechanics and statistical mechanics.
假想时间
在爱因斯坦的狭义相对论中,事件的概念至关重要。它可以被定义为“与时空中的一点相关的瞬时物理情况或事件”。两个事件之间的不变间隔由下式给出:

Equation 6: The expression for the invariant interval in Minkowski spacetime.
另一种写区间的方法是使用球坐标,如下图所示。将我们自己限制在 x - y 平面,空间元素变成:

Equation 7: The metric in 2D space expressed both in Cartesian and spherical coordinates.
当我们讨论黑洞和宇宙学时,坐标的这种替代用法将会很重要。

Figure 8: Spherical coordinates (r, θ, ϕ) (source).
使灯芯旋转 t → - iτ 这个间隔变成

Equation 8: This spacetime metric is called Euclidean since it has the same form as the usual metric in Euclidean 3D space.
它具有欧几里得几何中常见的毕达哥拉斯距离的形式。这就是我们把虚数时间称为“欧几里得时间”的原因。

Figure 6: Points in 3D space and determined by three numbers, or coordinates (source).
区间的“欧几里德化”起源于德国数学家赫尔曼·闵可夫斯基于 1908 年发表的一篇开创性论文。在那里,他著名地宣称
“从今以后,空间本身和时间本身注定要消失在阴影中,只有两者的某种结合才能保持独立的现实。”
— 赫尔曼闵可夫斯基(1908)
正是在这篇文章中,他实际上把时间和空间“焊接”成了我们称之为时空的四维结构。

Figure 7: Transparency from Minkowski’s famous talk, “Space and Time” given in September of 1908.
一些重要概念的鸟瞰图
为了使这篇文章尽可能地自成一体,我将首先解释一些重要的物理概念,然后更深入地探究这个神秘的“巧合”背后的本质。
玻尔兹曼分布和最大熵原理
让我们考虑一个系统 A ,其能级由下式给出

其中 T 和 V 为其温度和体积。该系统通过与一个大容器A’(与它进行热交换)接触而保持恒温 T 。系统处于某种状态 i 的概率为:

Equation 9: The probability that a system is in a state with energy E(i).

Figure 8: System A is kept at fixed temperature T by exchanging heat with the reservoir A’.
玻尔兹曼分布可以用不同的方法导出。一个特别有趣并且与信息论中的概念相关的推导使用了所谓的最大熵原理。这个原理是由美国物理学家 T21 提出的,它指出最能代表系统知识的概率分布是具有最大熵的概率分布。应用于统计力学,它给出了玻尔兹曼分布。
时间演化算子
量子系统的时间演化由时间演化算符 U ( t )生成:

Equation 10: The time evolution of a quantum state, generated by the time evolution operator.
如果 U ( t )遵守一些基本性质(更多细节见本参考文献)它可以写成,对于一个无穷小的区间 dt ,如下:

Equation 11: The quantum time evolution operator for small time intervals.
其中ω原则上是一个未知的厄米算符。在牛顿力学中,产生时间演化的算符 u ( t )可以写成如下泰勒展开

Equation 12: The operator that generates time evolution in classical dynamics.
事实上,这个表达式是象征性的,因为在这个上下文中 H 是由泊松括号给出的运算符

比较两种表达式并引入因子

源自经典力学和量子力学之间的标准对应,我们获得了我们正在寻找的表达式,即:

Equation 13: The operator that generates time evolution in quantum dynamics.
拉格朗日函数
拉格朗日方法最初被认为是牛顿力学的重新表述。尽管它产生了与牛顿方法相同的结果,但它强调了一套完全不同的观点。此外,它有两个显著的优点:它在数学上更优雅,同时在处理更复杂的系统时更强大。

Figure 9: Joseph-Louis Lagrange was responsible for several seminal contributions to both pure mathematics and mathematical physics (source).
尽管这种方法是在考虑经典(非量子)物理学的情况下引入的,但直到很久以后,在 20 世纪量子场论的背景下,它才显示出它的全部威力。事实证明,人们可以使用“最小作用原理”推导出目前已知的所有基本物理定律,正如我们将在下面看到的,这取决于拉格朗日量。
拉格朗日函数 L 定义在所谓的位形空间 C 上(技术上讲, L 定义在数学家所谓的 C、的切丛上,但我们暂且忽略它)。

Figure 8: Illustration of the concept of configuration space for a system with N particles. Each point Q represents a configuration of the system.
让我们考虑一个由 N 个粒子组成的系统。每个点 Q ∈ C 对应 N 粒子的某种构型(见上图)。注意 Q 的运动包含了全 N 粒子系统的动态。具体来说,你可以想到太阳-地球-月亮系统,在这种情况下 N 是 3。每个Q∑C代表三个物体的位置和速度。

Figure 10: Illustration showing the view of the moon from space during sunrise. The coordinates of the Sun, Earth, and Moon are represented by a single point Q in the configuration space of the system. As the three bodies move in space, Q moves in the configuration space. Figure by sdecoret/shutterstock.com.
点 Q 围绕 C 运动遵循一定的规律,这个规律可以从拉格朗日函数l中得到,拉格朗日函数一般是一个多元函数,可以写成:

Equation 14: The Langrangian function which depends on positions and velocities. From this function the equations of motion of physical systems are obtained.
函数参数的第一个子集

是 N 个粒子的位置。第二子集

是它们的速度。注意,这些变量不一定是普通的笛卡尔坐标。因此,它们被称为广义坐标,可以是沿着粒子轨迹的任何角度到弧长(见下图)。

Figure 11: The arc length s along the curve on the left figure is an example of a generalized coordinate. The angle θ on the second figure is also an example of a generalized coordinate (source).
系统的拉格朗日量等于其动能 K (由于其运动)和其势能 V (由于其相对于其他系统的位置)之差:

Equation 15: The Langrangian function expressed as the difference between the kinetic and potential energies
一个简单的例子是一个在势能 V ( q )中坐标为 q ( t )的粒子:

Equation 16: One of the simplest possible Lagrangians, of a 1D particle moving in a potential V.

Figure 12: Animation showing the orbital motion of a satellite around the Earth (source).
哈密尔顿函数
还有第二种方法,它也精致而有力地重新表述了经典力学。正如在拉格朗日图中一样,这种方法基于一个单一的函数,称为哈密顿量 H ,从中可以推导出物理系统的动力学(描述其运动的方程)。哈密顿量在相空间中定义。类似于配置空间,人们可以将相空间定义为“一个空间,在该空间中,系统的所有可能状态被表示,每个可能状态对应于相空间中的一个唯一点。”

Figure 13: The Irish mathematician Sir William Rowan Hamilton made fundamental contributions to several fields including algebra, optics and classical mechanics (source).
在相空间中,点由粒子的位置和(广义)动量(而不是位置的时间导数)来描述:

在这里,动量是从拉格朗日中获得的(你可以在这里阅读更多关于它的内容:

Equation 17: The momentum is obtained by differentiating the Lagrangian function with respect to the velocity.

Figure 14: The motion of a mass-spring system shown in real space and phase space (source).
量子态
在量子力学中,描述经典相空间中运动的坐标 q 和动量 p (见上项),变成了算符。例如,动量变成以下微分算子:

Equation 18: Momentum becomes a differential operator in quantum mechanics.
物理系统用量子态来表示。使用由保罗·狄拉克引入的符号,我们可以通过以下对象来表示系统的状态:

Equation 19: Initial state of a quantum system.
如果系统的哈密顿量是某个(为简单起见与时间无关)算符 H ,经过一段时间 t 后系统的最终状态是:

Equation 20: Final state of a quantum system after evolving for some time t. The evolution is generated by the Hamiltonian H.
记住我们已经在介绍中遇到了时间演化算符。
众所周知,量子力学是以概率为基础的。爱因斯坦有句名言:
这个理论说了很多,但并没有真正让我们更接近“旧理论”的秘密。"无论如何,我相信他不会掷骰子."
阿尔伯特·爱因斯坦
在量子力学中,概率是被称为量子概率振幅的某些量的模平方。下面的动画显示了一种非常特殊的量子态(或波函数)的时间演化,这种量子态被称为相干态(非常类似于经典物体):

Figure 14: Illustration of the time evolution of a quantum probability distribution associated with a coherent state (source).
传播者
一个粒子(比如说一个电子)从初始时刻 I 的初始状态传播到时刻 F 的最终状态的概率幅度称为传播子,读作:

Equation 23: Quantum probability amplitude or propagator for a system to evolve from the state at time I into that at time F.
相应的转移概率就是:

Equation 24: Quantum transition probability.
配分函数
在统计力学中,该理论的基本对象被称为配分函数。它的重要性源于这样一个事实,即描述一个系统的几乎所有相关变量都可以从Z .**Z对于a 经典具有离散谱的正则系综的数学表达式为:

总和是系统的状态,而 T 是温度。更多详情见此链接。热平衡系统在温度为 T 时处于能量为 E 的状态的概率与玻尔兹曼因子成正比:

作用和最小作用原理
在物理学中,作用 S 是一个与系统动力学相关的量。从 S 中,可以推导出系统的运动方程。从数学上讲,它是一个函数,以系统的历史(或路径)为自变量,并输出一个实数。更具体地说,该动作由拉格朗日函数对时间的积分来表示

Equation 25: The definition of the action.
物理学中最强有力的观点之一被称为最小作用量的原理,根据该原理,系统采取的实际路径是作用量 S: 的极值或驻点

Equation 26: The action is stationary when the path is the classical trajectory.
量子力学中的路径积分
作为由薛定谔和海森堡开发的量子力学形式主义的替代方案,美国物理学家理查德·费曼创造了所谓的路径积分公式。在这样的公式中,用于计算粒子从点 I 到点 F 的概率幅度的路径积分必须考虑字面上所有可能路径*。例如,这些路径包括在时间上向前和向后的轨迹!为了获得总的概率幅度,人们给每个可能的路径分配一个幅度 q ( t*

Equation 26: Exponential weight assigned to a path q(t).
总结一下:

Equation 27: The path integral representation of the propagator.
更准确地说,总振幅是无限数量的轨迹或路径上的函数积分。当振荡的贡献在路径积分中求和时,我们预期会发生抵消。更准确地说,当我们取极限时,得到的路径接近经典路径

具有很强的同相贡献,这意味着稳定路径占主导地位,量子波动(或校正)主要与接近经典路径的路径相关(更多细节见参考文献)。

Figure 15: Richard Feynman and an illustration showing different ways that a particle can go from I to F (source).
我们应该指出,当我们将建立替代路径和导出路径积分所需的增量时间步长增加到∞时,由曲线 D 给出的路径积分积分度量具有严重的收敛问题。我们将回头讨论这个问题。
欧几里德路径积分
执行灯芯旋转 t =- iτ,以上路径积分变为:

Equation 28: The transition probability amplitude written in Euclidean or imaginary time.
其中积分内的指数是欧几里德作用:

Equation 29: Euclidean action.
具体来说,让我们考虑后者的一个简单例子。自由粒子的拉格朗日(左边)给出了下面的欧几里德作用(右边):

Equation 30: A simple example of Euclidean action, for a free particle.
这可以概括为包括一个势能项:

Equation 31: Example of Euclidean action.
正如费曼和希布斯在经典著作中指出的那样,
“这是一个非常有趣的结果,因为它给出了一个量子力学系统的完整统计行为,而没有出现量子力学无处不在的 i so 特性……”
—费曼和希布斯
量子场
宇宙中的所有粒子都是量子场的激发,任何解释基本粒子行为的基本定律的努力都必须考虑量子场论或 QFT 的基本原则,这是基本粒子(如夸克和电子)物理学所基于的概念框架。此外,许多科学家认为万物理论(TOE)将是某种量子场论(类固醇)。
宇宙中所有的粒子都是量子场的激发。
QFT 的基本数学对象是所谓的生成泛函 Z 。也许最简单的生成泛函是描述自旋为 0 的粒子,这对应于标量场(希格斯玻色子就是这样一种粒子)。

Figure 16: The Higgs field is an example of a scalar field. Particles that interact with the Higgs field “acquire” mass. This figure shows a computer image of one such interaction (source).
它由下式给出:

Equation 32: Minkowski generating function in QFT.
如果我们旋转灯芯,功能 Z 变为:

Equation 33: Euclidean generating function.
被称为欧几里得泛函积分 (EFT)。定义能量泛函

Equation 34: Energy functional of the ϕ field.
路径积分变成:

Equation 35: Euclidean generating function expressed in terms of the energy functional E[ϕ].
上面的表达式非常类似于统计力学的配分函数。量子场论和统计力学之间的联系以不同的方式发生,这取决于人们是在考虑经典系统(遵守牛顿定律及其扩展的系统)还是量子力学系统。
也可以写出对应于场而不是位置 q ( t )的状态的传播子(见上面的解释):

Equation 37: The transition probability amplitude or propagator for field-states, expressed as a path-integral.
跃迁振幅连接两个量子场状态。我们可以将这个欧几里德传播子示意性地表示为:

Figure 17: Transition amplitude between two fields during a time interval β. The space here (represented by the dashed lines) is a plane with dimension d-1.
这种表示可以适用于不同的时空拓扑。上图中描绘的振幅对应于时空区域上的路径积分

Equation 38: The spacetime over which the path integral of Figure 14 occurs.
空间不一定需要是平面。如果它是一个球体,我们会画:

Figure 18: Transition amplitude between two field-states during a time interval β which differs from Figure 14 by the fact that space here (represented by the dashed lines) is a sphere with dimension d-1.
灯芯旋转的有用性
在灯芯旋转之后,路径积分中的配置 q ( τ )的权重变为

Equation 39: The Euclidean weight of the configuration q(τ).
其中指数包含欧几里德作用。后者通常是非负的,暗示着如果某个配置对应的动作 q ( τ )很大,其贡献很小。这极大地改善了路径积分的收敛性。
使用灯芯旋转的另一个优点是,在通常的量子场论中发散的环路费曼图计算变成了良好的动量积分。
在非微扰物理学中,欧几里德化带来了许多有趣的应用(它们将在下面详细描述)。
连接
在下文中,我将讨论应用灯芯旋转后获得的几个重要联系,即:
- 量子力学/量子场论与经典统计力学的联系
- 量子力学/量子场论与量子统计力学的联系
- 经典系统中从静力学到动力学的转化
量子力学和量子统计力学
经典统计力学在非常低的温度下不适用。在这个极限下,量子效应变得很重要。这种系统的例子包括低温稀释原子或多原子气体。

Figure 19: These are three views of the velocity distribution for a gas of rubidium atoms. The distribution in the middle shows the appearance of a Bose-Einstein condensate, a new phase of matter (source).
让我们考虑一个非常简单的量子力学系统:零温度下的一维简谐振子(SHO)T= 0。下图显示了谐振子的一个例子。

Figure 21: An example of a quantum oscillator is the diatomic molecule dinitrogen. The vibrational motion of the two atoms can be described using only one degree of freedom, namely, the distance its two nuclei (source).
在我以前的一篇文章中可以找到关于 quantum 版本的更详细的讨论(见下面的链接)。本节大量基于这个在线课,我强烈推荐。
神经网络如何解决量子力学中高度复杂的问题
towardsdatascience.com](/neural-quantum-states-4793fdf67b13)
该系统完全由单个坐标(或自由度)来表征,我将用 q 来表示。现在考虑同一个系统,SHO,但是现在假设粒子交换能量,并且与一个大的热源(或恒温器)处于热平衡,如下图所示,在某个有限的温度下 T > 0。我们说粒子与储层纠缠在一起。

Figure 22: Quantum simple harmonic oscillator in contact with a large heat reservoir.
在这种情况下,粒子处于混合热态(而不是纯态),由密度矩阵或密度算子 ρ 描述,在温度 T =1/ β 下表示:

Equation 40: The mixed thermal state of the particle in contact with the heat reservoir
其中量子力学配分函数为:

Equation 41: The partition function.
如前所述, ρ 内的指数与虚数时间内的演化算符成比例,前提是我们用欧几里得时间或虚数时间替换时间,并且我们确定:

换句话说:

Equation 21: Boltzmann factor correspondence with the evolution operator at imaginary time.
我们使用了下面的定义:

Equation 22: Euclidean evolution operator.
密度算符可以写成:

Equation 23: The density operator in terms of the Euclidean evolution operator.
其中配分函数为:

我们还可以定义欧几里得传播子:

Equation 24: The Euclidean propagator.
我们可以构造欧几里得传播子的路径积分表示。我们在上面看到了传播子和路径积分之间的对应关系。为了方便起见,我将在这里重写:

Equation 25: The transition amplitude expressed as a path integral.
例如,在配分函数中,可以根据位置追踪:

Equation 26: The partition function using the position basis for the tracing.
我们可以表示一个类似于被积函数的物体

选择初始时间为零。配分函数可以从等式的左手边快速得到。26 遵循三个步骤。首先,我们替换

然后我们用一个通用的位置状态来标识初始和最终状态

最后,我们对 q. 进行积分,对等式左侧的路径积分执行相同的变换。25,对变量进行方便的改变,从时间到虚数时间 t → - iτ 和 i 对哑元积分,变量 q 我们得到:

Equation 27: Partition function expressed as a path integral where paths obey periodic boundary conditions.
对 q 的积分意味着,对于 τ ∈ (-∞,∞),我们必须只对路径积分中服从周期性边界条件的轨迹(或配置)求和。
等效地,传播器读取:

Equation 28: Euclidean propagator expressed as a path integral with paths obeying periodic boundary conditions.
泛函积分中的指数是欧几里得作用:

Equation 29: This is the Euclidean action associated with a single path in imaginary time.
如果我们认为玻尔兹曼因子是虚时间中的演化算子,在这种情况下,它将状态 q 带回到自身,那么这个 q 积分可以在物理上变得直观:

我们的结论是,与我们一般的基本原理一致,统计力学发生在循环虚时间中。

Figure 20: Periodic imaginary time.
量子力学和经典统计力学
量子力学和经典统计力学之间的第二种对应关系,仅仅是对上一节所得结果的另一种解释。我们可以把欧几里得作用解释为一维封闭弦的微观状态的能量:

Equation 30: The Euclidean action as the energy of a microstate of a one-dimensional string.
注意,该字符串是一个扩展经典对象。其他的对应关系可以从方程中得到。27,29 和 Eq。30:
- 欧几里德动作中的积分参数 σ 对应于沿着字符串的位置
- 经典系统(弦)的温度是

- 量子系统的温度 1/ β 对应于弦的长度

Figure 21: A closed string in a potential V(q).
经典场论和经典统计力学
人们可以用这个表达式来描述磁场。为简单起见,我们只考虑标量场。程序简单明了,并且解释得很清楚在这里。结果是:

Equation 31: Generating function for a classical field theory
其中指数中的能量是

Equation 32: Energy functional E[ϕ] for a classical scalar field.
这与上面给出的欧几里得生成泛函具有相同的形式,只要我们确定:

因此,在一个 d 维时空里的欧几里得经典场论在形式上等价于一个 d 维空间(不是时空)里的经典统计力学。
量子场论和量子统计力学
让我们考虑一个绝对温度为 T 的量子场。为了简单起见,我们可以选择一个标量场ϕ(x, t )。热 QFT 适用的两个相关背景是宇宙学和涉及重离子碰撞的实验。

Figure 23: Ions colliding in the CMS detector at the Large Hadron Collider (LHC).
然后我们解析地将时间变量延续到纯虚数时间,并将该场写成ϕ(x, τ )。
现在,由于这是一个具有正温度 T 的量子系统,或者等价地,具有逆温度 β ,我们将它的配分函数 Z 写成量子态的总和,这相当于对玻尔兹曼因子进行追踪。选择场本征态的基,配分函数读作:

Equation 33: Partition function of a thermal QFT using a basis of field eigenstates.
按照与前面相同的步骤,被积函数可以明确地写成:

Equation 34: Integrand of Eq. 22.
选择初始和最终状态为相同的场本征态

Equation 35: Identification of initial and final states of a quantum system.
读者可能会注意到在 x 积分中引入了空间体积 V (通常省略并假设为无穷大)。配分函数是通过对 ψ 态积分得到的:

Equation 36: Partition function for Euclidean quantum field theory.
注意,尽管ψ-场基从方程中消失了,但场在初始和最终时间仍然是相同的,并且积分在所有具有周期性边界条件的“路径”上进行计算。
注意,这个物体不过是一个(欧几里德)量子标量场理论在零温度下的生成泛函生活在( d - 1 )空间维度(体积 V ) ,其中 τ 被限制在区间【0,1/ T )。标量场系统遵循沿 τ 维度的周期性边界条件。因此,我们断定这个配分函数可以描述两个系统:
- 在尺寸为( d -1)的空间中的温度 T =1/ β 的热系统
- 零温度下的标量场系统在时空*内,维度为( d -1)× β*

我们的结论是,在一个空间维度为 d 空间维度为并且“时间” τ 维度限制在区间[0, β 的时空中,温度为 T = 0 的欧几里德场论在形式上等价于温度为 T =1/ β 的量子统计力学
从拉格朗日动力学到静力学
我们看到的所有对应都包含了量子力学或者量子场论。事实证明,仅仅局限于经典力学,灯芯旋转之后已经发生了更奇怪的事情。正如我们在下面展示的(在这个分析之后)拉格朗日动力学变成了静力学!
考虑这个例子这里。与固定端点保持平衡的 n 维弦的能量受某些外场的影响为:

第一项是弹性势能(由于弹簧被拉伸) k 是胡克常数。变量 s 只是对字符串进行参数化。如果弦处于平衡状态,它的总能量会最小,这意味着

注意,该微分方程仅描述了串的静态配置,不涉及时间。如果我们执行一个灯芯旋转,用代替 s ,则能量变成(正比于)质量 k 的移动粒子的动作:

因此,通过能量最小化寻找平衡弦构型的问题,这是一个静态问题,变成了通过最小作用量原理寻找质量运动方程的问题,这是一个动态问题。综上所述,我们看到:
- 最小能量原理变成最小作用原理
- 所描述的系统从一根固定的弦变成了一个运动的质点
- 弹性能变成动能
- 外部势能变成了影响质点运动的势能
- 胡克弹簧常数变成了粒子质量
路径积分和量子引力
我现在将描述在广义相对论(GR)的背景下使用 Wick 旋转获得的一些惊人的结果,广义相对论是爱因斯坦的引力理论。欧几里得时间中热状态和周期性之间的对应在 GR 中特别值得注意,在 GR 中,周期性被几何地解释,正如我们将看到的。
欧几里得量子引力(EQG)是一种利用灯芯旋转的量子引力方法。正如在欧几里得量子场论中,人们基于引力场的拓扑是必需的这一信念,在正定度量上定义虚时间中的路径积分。
EQG 是将物理简化为几何的一个例子,它提供了一种有效且非常优雅的方式来获得量子引力的非微扰信息。它取得了一些成功,包括:
黑洞、量子效应和霍金辐射
在黑洞的物理学中,这种对应有着清晰的几何解释。我现在将简要说明如何使用欧几里得时间计算黑洞发出的辐射温度。

Figure 24: This is the first picture ever taken of a black hole (source).
1974 年,斯蒂芬·霍金发表了一篇开创性论文(见下图),他在论文中表明,当在事件视界附近考虑量子力学效应时,黑洞会发出辐射(所谓的霍金辐射)。

Figure 25: Stephen Hawking’s paper where he showed the existence of what eventually became called Hawking radiation.

Equation 37: The Schwarzschild metric describing a static black hole.
其中,dω表示小立体角(见下图)。

Figure 26: Illustration of a solid angle Ω (source).
远离黑洞,度量变成

这是球坐标中的闵可夫斯基度规。

Figure 27: An artistic depiction of a black hole. Picture by vchal/Shutterstock.com.
黑洞的视界位于由下式给出的史瓦西半径

Equation 38: The Schwarzschild radius.
在事件视界,意想不到的事情发生了:第一和第二个系数的符号改变了。这意味着空间和时间被有效地互换了。
在黑洞的视界,空间和时间被有效地互换了。
现在,由于黑洞附近的真空中存在量子波动,这是虚拟粒子-反粒子对的产物,经常发生的是这对粒子中的一个粒子落入黑洞,而另一个粒子没有。

Figure 28: An artistic depiction of quantum fluctuations (source).
这里有一个明显的警告。量子力学的主要原则之一,测不准原理,限制了虚拟对可以存在的时间。粒子-反粒子对的这种行为似乎与之相矛盾。空间和时间的交换伴随着相应的能量和动量的交换,这一事实解决了这个明显的矛盾。因此,能量的意义改变了,不违反测不准原理。
找到辐射的温度
我们首先在上面几行给出的史瓦西度规中代入 t → - iτ 。然后我们定义一个新的变量 x:

在史瓦西度规中代入 x ,它变成:

将我们自己限制在 x - τ 平面,这与上面显示的二维元素具有相同的形式。换句话说,上面的度量定义的空间是平面欧氏空间,用极坐标表示。

Figure 29: Polar coordinates (source).
由于在 r → 0 处,该度量通常具有圆锥奇点,为了保持度量规则,必须使 τ /(4 GM )的周期等于 2π:

由于 τ 具有周期性 β = 1/ T 我们在事件视界得到如下结果:

Equation 39: The temperature of the Hawking radiation.
其中 T ( H )是霍金辐射的温度。
量子宇宙学和宇宙的诞生
在把宇宙解释为一个量子力学系统时,它必须有一个波函数ψ。类似于普通量子力学中的薛定谔方程,ψ服从所谓的惠勒-德威特方程,由下式给出:

Equation 40: The Wheeler–DeWitt equation. The operator H is the Hamiltonian constraint and Ψ is the wave function of the universe.
在这个看似简单的方程中,算符 H 在广义相对论的量子化版本中被称为哈密顿约束。算符 H 不支配时间演化,因此薛定谔方程无效。此外,波函数不是来自普通量子力学的传统波函数,而是整个时空场组态的函数(更多细节见参考文献)。
尽管惠勒-德威特方程在总体上是病态的,但在一些重要的案例中它被很好地定义。
路径积分解
尽管一个成熟的量子引力理论还不完全为人所知,物理学家们相信它将包含费曼路径积分公式作为其组成部分之一。洛伦兹路径积分(在虹吸芯旋转之前)具有以下形式:

Equation 27: The amplitude to go from an initial three-dimensional metric to a final three-dimensional.
该积分是从在 t =0 处具有三度规 h ( I )的某个初始三几何图形到在 t = T 处具有三度规 h ( F )的最终几何图形的概率幅度,并且该积分在连接这些边界几何图形的洛伦兹四度规上。我们可以证明,通常人们能够从这个路径积分中恢复惠勒-德威特方程。
如果被积分的几何图形由度量张量 g 识别,则上面的振幅将被写成:

Equation 28: The amplitude to go from an initial three-geometry to a final three-geometry, written as a functional integration over the spacetime metric tensor.

Figure 30: The quantum transition amplitude between two three-dimensional geometries is obtained by summing over the four-dimensional metrics that connect both geometries.
然而,这种计算遇到了严重的技术问题。正如在非引力的情况下,时间坐标到虚时间的 Wick 旋转可能是有帮助的。复化之后,所涉及的几何变成欧几里得的(或者更精确地说是黎曼的)。事实上,为了获得广义相对论真空方程的一个明确定义的经典边值问题(一个微分方程和一组边界条件),人们可以证明欧几里得四个几何是需要的,而不是洛伦兹几何。
在欧几里得情况下,跃迁振幅变为:

Equation 29: The Euclidean amplitude from Equation 28 using Riemannian four-geometries.
欧几里得动作 I 将具有以下形式:

Equation 30: Euclidean action for gravity.
在动作 I 的表达式中,有一些极其重要的对象需要定义:
- 在第一个积分中, R 是曲率标量或 Ricci 标量,它测量黎曼空间中的小(测地线)球的体积偏离标准小球的程度。
- 在第二积分中 K 是边界面的第二基本形式。
原则上,人们可以通过将虚时间旋转回实时坐标来恢复洛伦兹几何。
这种欧几里德传播子的选择有几个原因,其中有:
- 路径积分的收敛性提高了,因为它变成了实数(正如我们已经看到的)
- 它适用于杨-米尔斯理论,这些理论是我们目前理解粒子物理的标准模型的基础。
- 人们可以通过以下结果来近似总振幅,欧几里得作用对应于经典情况:

这些结果是“将热力学简化为几何学”的例子。
从无到有创造宇宙
那么,惠勒-德威特方程的边界条件是什么?它们是量子条件,比较流行的两个是“无边界提议”和“隧道提议”。让我们把讨论限制在斯蒂芬·霍金和美国物理学家詹姆斯·哈特尔的“无边界提议”上。
斯蒂芬·霍金和罗杰·彭罗斯证明的奇点定理预言,在一定条件下,经典时空在时间原点是奇异的。这意味着广义相对论不是一个完整的理论,当奇点被击中时会发生什么必须提供一些规范。
在一篇著名的论文中,霍金和哈特尔提出了一种处理这个问题的方法。他们所谓的哈特尔-霍金态,由,

是宇宙的波函数,它是通过欧几里德路径积分获得的。他们提出了宇宙初始状态的边界条件,被称为无边界提议。

Figure 31: The Hartle -Hawking instanton. This is a singularity-free four-geometry. This HH instanton demonstrates the no-boundary proposal at imaginary time τ=0 (source).
这个路径积分的解释是,它给出了一个具有特定特征的宇宙从无到有被创造出来的概率。
哈特尔-霍金波函数给出了从无到有创造出具有特定特征的宇宙的概率。"
“物理学的一大谜团?”
许多 物理学家强烈怀疑这种对应关系背后隐藏着某种我们还无法完全理解的东西。例如,美籍华人物理学家黄国光认为这是“物理学的一大奥秘”。根据另一位著名的安东尼·齐(Anthony Zee)的说法,另一位美籍华裔物理学家在他的量子场论书(T8)中说:“这里可能有一些我们还没有完全理解的深刻的东西。”根据英美学者史蒂夫·沃尔夫勒姆的说法,他和伟大的美国物理学家理查德·费曼经常讨论“这种对应是否是一种巧合”

Figure 32: The young Stephen Wolfram and Richard Feynman circa 1982 (source).
“现实世界”?
如果时空距离具有这种形式,我们称之为欧几里得时空。对于扁平时空,亚瑟·s·威格特曼给出了一个严格的框架。然而,在弯曲时空中(例如,在大质量物体附近),相关的对称群会出现问题。
尽管如此,一些物理学家认为,在某种意义上,“真实世界”是由欧几里得时空所代表的。
一些物理学家认为,在某种意义上,“现实世界”是由欧几里得时空来表示的。
正如文章中所讨论的,有许多理由可以证明这一观点。斯蒂芬·霍金在他的《时间简史》一书中做了如下陈述:
“有人可能会认为这意味着虚数只是一个与现实世界无关的数学游戏。然而,从实证主义哲学的观点来看,人们无法确定什么是真实的。我们所能做的就是找到描述我们生活的宇宙的数学模型。事实证明,一个包含虚时间的数学模型不仅预测了我们已经观察到的效应,还预测了我们还无法测量却因为其他原因而相信的效应。那么什么是真实的,什么是想象的呢?区别只是在我们的头脑中吗?”
——斯蒂芬·霍金
然而,这种观点对于时间属性的基本概念和因果关系的概念有一些麻烦的暗示。此外,将时间视为空间维度与广为接受的量子力学定理相冲突。
也许有一天我们会知道这个问题的答案。也可能不是!*
感谢您的阅读,再见!一如既往,我们随时欢迎建设性的批评和反馈!
我的 Github 和个人网站 www.marcotavora.me 有(希望)一些其他有趣的东西。看看吧!
反向传播背后的“奥秘”
外行对神经网络最基本方面之一的理解
警告:如果你已经理解了反向传播背后的数学原理,就不要浪费时间读这篇文章了。
问题陈述—神经网络的训练
这个帖子是由 fastai 深度学习课程的第八课激发的。正如我在药物激酶相互作用的帖子中提到的,fastai 是一个非常有用的深度学习库,只需几行代码就能让你入门。然而,为了最大限度地利用其灵活性,有必要更深入地理解背后的数学原理。fastai 的深度学习课程在解开神经网络黑盒方面做得非常好。它演示了如何从头开始构建深度学习库。另外,它也是科学计算环境中优秀软件工程实践的极好展示。作为一名理科出身的人,我有时会因缺乏软件工程方面的适当培训和适用于理科应用的有用资源的稀缺而感到沮丧。
回到我在这里试图讨论的问题。神经网络只不过是一个可以优化以进行预测的模型。优化或学习的过程是调整模型参数,以使预测误差最小化。优化过程基于梯度下降。简单地说,如果模型参数增加,误差增加,我们应该在一定程度上减少模型参数,反之亦然。因此,问题的核心是计算误差如何随着模型参数的变化而变化。
这是神经网络的典型描述。它接受一个输入(在本例中是一个三元素向量),通过首先计算隐藏层(一个四元素向量)来计算输出(一个两元素向量)。每个隐藏元素的值取决于每个输入元素,每个输出元素的值取决于每个隐藏元素。

Reference: https://en.wikipedia.org/wiki/Artificial_neural_network
现代神经网络一般涉及两种关系——线性和非线性。以一个隐藏元素的值为例。首先,计算来自前一层的所有元素的值的“加权”和加上常数“偏差”。然后,总和经过非线性转换,以提供隐藏元素的值。我们需要一种方法来计算输出值如何根据所有层中调用的线性变换中的“权重”和“偏差”的变化而变化。这就是问题所在。
这篇文章的目的——试图重建导致反向传播的思维过程
鉴于“神经元”之间复杂的连接性,对导数进行强力评估似乎非常困难。人们总是声称这个解决方案只基于微积分中众所周知的链式法则。事实上,不到一页就可以得到它,如维基百科中所示。它的关键实现也出奇的简单如下图(抄袭深度学习类)。请注意,没有调用外部例程,所以这就是全部内容。
**def** bwd(self, out, inp):
inp.g = out.g @ self.w.t()
self.w.g = inp.t() @ out.g
self.b.g = out.g.sum(0)
但是,至少对我来说,从数学推导到实际代码是非常困难的。有可能理解最终结果,但不清楚人们最初是如何到达那里的。在试图重建我能接触到的思维过程中,我希望对反向传播有更深入的了解。当然,这不太可能是先驱们为发现反向传播而进行的实际脑力锻炼,但他们的经历可能不为我这样背景的人所理解。
我将在下面描述的思考过程包括三个步骤。这个想法是分解问题,这样每一步都是可管理的,也是重要的。这样,每一步的障碍都降低了,而不影响总的成就。
步骤 1 —单个样本、单个神经元
让我们考虑一个三层神经网络,每层有一个神经元。取一个输入,第一层执行简单的线性变换,第二层是常用的非线性变换,对于任何负值输出零,否则不做任何事情,第二层线性变换提供输出。模型的成本就是输出和目标值之间的平方误差。这个过程,即从输入值计算输出值,称为正向传递。

我们希望计算与模型参数(即 w 和 b)相关的成本变化。链式法则来了。模型参数通过 y 影响成本。举个例子,

第二步的简化是由于线性模型的使用。这种关系表明,我们需要计算并跟踪成本相对于所有 y 的导数。幸运的是,y 对成本的影响也以线性方式从输入传递到输出,允许连续使用链式法则。对于我们的简单模型,导数总结如下。

假设我们想计算对 w1 的导数,那么我们需要知道对 y1 的导数,这取决于对 y2 的导数,这取决于对 y3 的导数,这是已知的。为了计算关于 w 和 b 的所有导数,保存关于 y 的所有导数是有意义的,因为它们可能被多次使用。在我们的简单模型中,相对于 y3 的导数使用了四次,实际上只需要一次计算。在实践中,对于模型的每一层,我们计算关于其输入变量的导数,并且结果被用于前一层中导数的计算。首先,为了开始这个递归,我们从关于输出的导数开始。因为我们从输出开始,然后返回到输入,这个过程被称为反向传播或反向传递。
当计算导数时,我们还需要知道在正向传递中得到的 y。
现在,我们可以总结出使反向传播可行的实现的重要技巧。
- 保存 y 的导数以备后用。对于熟悉软件工程的人来说,这是动态编程的一个典型应用。
- 向前传递提供 y 的值。由于采用了线性模型,我们不需要更复杂的衍生产品。
- 非线性层模型的选择也使得计算导数变得容易。除了 ReLu,人们习惯用 sigmoid 函数,它的导数也很容易得到。
应该注意的是,ReLu 被认为是一个单独的层,以使事情更加清楚。虽然它是非线性的,但在概念上比线性层简单。通常,线性层在不同层的神经元之间引入了复杂的互连,但 ReLu 只将单个神经元的值作为输入。
现在直接提出一种模式,说明如何计算线性层的各种导数。下一步是将它扩展到多个神经元,然后是多个样本。

步骤 2 —单个样本,多个神经元
上面已经确定导数可以以逐层的方式计算。同样显而易见的是,只要选择诸如 ReLu 或 sigmoid 之类的性能良好的函数,非线性层就很容易处理。我们只需要考虑单个线性层,并计算出 w 和 b 相对于输入的导数,因为输出的导数已经存在。
特别地,我们考虑具有不同数量神经元的输入层和输出层。输出层中每个神经元的值由输入层中所有神经元的加权和加上一个偏差决定。如下图所示,这种关系在形式上类似于单个神经元的情况,但是 y 变成了向量,w 变成了矩阵,b 变成了向量。因此,我们需要一个工具将链式法则从单变量扩展到多变量。有多种方法可以做到这一点,在这篇文章中我将使用爱因斯坦符号。在流体力学和广义相对论等张量起重要作用的物理学中,爱因斯坦符号被广泛使用。看到它在机器学习中的运用,我觉得很神奇。

使用爱因斯坦符号以分量格式编写的线性模型如下

导数可以用链式法则直接得到。记住,我们想要利用输出层的导数是已知的这一事实。这个等式可能看起来很可怕,但它遵循了既定的惯例。我们的目的是用一种可以转换成向量或矩阵的格式,写出关于分量的导数。



回到向量格式,其中关于分量的导数被统称为梯度向量或张量,



就输入、输出和模型参数而言,结果是



除了较高的维度,它遵循步骤 1 中观察到的相同模式。
步骤 3 —多个样本、多个神经元
最后一步是考虑多个样本的情况。对于每一层,输入和输出是来自每个样本的向量的集合。成本函数就是每个样本的误差平方和。这种扩展可以通过将输入/输出向量扩展为矩阵来实现。由于多个样本,梯度在维度增长后几乎保持相同的形式。梯度公式复制如下,其尺寸用下标表示。这里,样本大小表示为 S.



这些表达式可以很容易地转换成实际代码。
**def** bwd(self, out, inp):
inp.g = out.g @ self.w.t()
self.w.g = inp.t() @ out.g
self.b.g = out.g.sum(0)
摘要
此时,我们已经完成了任务—计算成本函数如何随模型参数而变化。通过采取三个步骤,现在更容易理解看似简单的代码实现是如何从数学中得出的。
应该强调的是,步骤 1 包含了反向传播中最关键的见解。步骤 2 和 3 是维度常规扩展。当反向传播首次被引入时,其性能随着网络深度(层数)的增加而迅速恶化。原因之一是消失或爆炸梯度问题。通过检查步骤 1 中的图表,可以直观地解释这个问题。事实上,随着深度的增加,相对于早期模型参数的导数是许多导数的乘积。不足为奇的是,梯度可能非常小或非常大,从而妨碍模型参数的适当训练。
一开始,我把目标定为重建反向传播发明者的思维过程。他们可能通过跳过前两步解决了这个问题,因为他们对数学工具很熟悉。但对我来说,我发现这三步走的方法非常有价值。对于更复杂的网络体系结构,在尝试全面解决问题之前,先解决一个简单的问题(如步骤 1 中的问题)可能更有指导意义。这种三步法也类似于代码重构过程。它可以作为反向传播算法进化史的一个版本。就像一段聪明的代码可能经历了非常戏剧性的重构步骤一样,一个漂亮的等式也必须经历多个细化步骤。跟随这一切是如何从一个卑微的起点开始的,不是更鼓舞人心吗?
步骤 2 和 3 是向量微积分中众所周知的技术。事实上,步骤 2 中的爱因斯坦符号练习基本上证明了向量微积分中一些有用的公式。就我个人而言,我在不同的场合至少学过两次,但是重温它仍然给了我一些以前没有意识到的有用的见解。例如,如何在多个维度上理解链式法则?每次都要经过第二步的推导,无疑会分散我们对更重要问题的思考。在写帖子的同时,我意识到维度的成长来得非常自然。以一个特定的层为例,下面显示了如何将维度从标量增长到矩阵。

为了使等式两边的维数匹配,需要应用转置操作,并且可能需要调整乘法的顺序。当然,这不是一个“证明”,但它肯定能加快我们的思维。输入/输出变量被假定为行向量。如果它们是列向量,类似的推理也适用。
看着这些步骤,人们可以看到许多来自其他领域的类似操作。例如,输出层的元素对输入层的每个元素的线性依赖本质上是坐标系的变换。通常,一个输入层被转换成一个更大尺寸的隐藏层,可能还有几个更大尺寸的隐藏层。这表明我们试图将输入(问题的有形部分)分解到更高维度的空间。因此,隐藏层类似于量子力学中的隐藏变量理论。在一段成功的训练期之后,高维空间并不是一个黑箱;相反,它有望揭示输入层没有捕捉到但已经隐藏在训练样本中的微妙关系(参见我以前关于药物-蛋白质相互作用预测的帖子)。
最后,我希望这个练习可以帮助那些试图了解反向传播的人。
企业中敏捷人工智能/机器学习的神话
企业中的敏捷 AI/机器学习是一个神话。它受到官僚主义以及复杂的安全和云约束的制约。以下是将神话变为现实的几个实用步骤。

Created by rawpixel.com / FreePix
企业中 AI/ML 敏捷性的缺乏导致了项目的失败和机会的错失
今天,企业中的“敏捷”人工智能/机器学习(AI/ML)在很大程度上是一个神话——它与建立模型没有多大关系。相反,企业 AI/ML 敏捷性受到官僚主义的数据获取流程、复杂的安全需求、不成熟的云安全实践和繁琐的 AI/ML 治理流程的制约。
不幸的是,在许多企业中,这些问题导致了项目失败,降低了期望,也许最重要的是,错过了交付真正价值的机会。
我花了几年时间帮助大型银行加速采用人工智能/机器学习和相关技术。在这篇文章中,我将讨论我所经历的企业中敏捷 AI/ML 的核心问题和障碍,然后提供一些经验教训和一些实际步骤,为将敏捷 AI/ML 神话变为现实提供一个起点。
企业中的敏捷已经很有挑战性了
敏捷可能是交付 IT 项目最常见的方法,但是尽管取得了成功,敏捷的跟踪记录却很不稳定。一项研究表明,在过去的 12 个月中,英国企业在失败的敏捷 IT 项目上浪费了大约 370 亿英镑。根据咨询公司 6Point6 最近的调查,敏捷“正面临一个隐藏的危机,八分之一(12%)的敏捷项目完全失败。”
“美国的情况更糟,那里的失败率更高,敏捷 IT 项目持续时间更长,成本也更高……英国和美国的首席信息官现在估计,近三分之一(32%)的敏捷项目在某种程度上失败了。”
尽管被广泛采用,常规项目的敏捷实践仍然有改进的空间。但是 AI/ML 项目遇到了一系列新的限制和问题,每一个都对企业中 AI/ML 的敏捷性产生负面影响。
AI/ML 增加了阻碍敏捷性的新的复杂性
与常规(即非 AI/ML)项目相比,企业中的 AI/ML 项目面临几个额外的约束和挑战,每个都阻碍了敏捷性。在大多数情况下,这会减慢敏捷项目的速度,但在最坏的情况下,它们会迫使敏捷项目回复到瀑布方法:
- 官僚主义的数据获取流程:数据是 AI/ML 的命脉,但大多数企业在获取必要的数据时都会遇到严重的延迟,这主要是因为从遗留系统中提取数据时需要官僚主义的流程,而绝大多数企业数据都是在遗留系统中管理的。
- 数据科学家需要“无阻碍”的数据:无论数据被视为私有(客户数据)还是机密(财务数据),或者介于两者之间,数据科学家需要的大部分数据都被视为敏感数据,需要“无阻碍”的数据,这推动了对额外安全措施的需求,以维护企业的安全态势。
- 不成熟的云安全实践 : AI/ML 需要高性能硬件(GPU 等)。)在企业中不容易获得,迫使许多企业考虑将云用于他们的 AI/ML 项目;虽然云安全实践现在在许多企业中日趋成熟,但不幸的是,云数据安全实践在几乎所有企业中都相当不成熟。
- 繁琐的 AI/ML 治理过程:对模型可再现性、可追溯性和可验证性的需求迫使企业采用更加严格和有纪律的 AI/ML 模型生命周期。不幸的是,许多企业背负着企业治理实践的负担,这些实践没有发展到解决 AI/ML 的需求;这在高度监管的行业(金融服务、医疗保健、政府等)中更为严重。)法律法规强加了额外的数据隐私约束并要求保留人工制品。
人工智能/人工智能项目面临的独特限制和挑战会导致材料延迟和瓶颈。鉴于这些问题,即使是最好的 AI/ML 项目也可能从敏捷退化回瀑布方法。
接下来的段落将更详细地讨论每一个问题,找出潜在的根本原因,并提供我使用过或见过的解决和克服这些问题的实用步骤。

Photo by Alex Kotliarskyi on Unsplash
问题#1:官僚的数据获取过程
大多数企业都有旧的遗留系统,这些系统保留并管理着绝大多数企业数据。我们经常发现有用的数据分布在众多的系统和数据存储中,很难找到、理解和获取。
事实上,在最近的一篇文章中,埃森哲发现超过三分之一的公司的数据存在于孤岛中,这是一件大事,认识到大多数有用的模型需要跨多个领域/孤岛的数据,并且每个“孤岛”都有自己的所有者/决策者,可能还有自己独特的数据获取和治理流程。简而言之,从多个“筒仓”中获取数据需要花费大量时间,并且会降低项目速度。
更糟糕的是,埃森哲发现,几乎一半公司的项目也存在数据质量问题,超过三分之一的公司没有足够的可用培训数据。数据质量问题有很多种,从丢失或不正确的值到引用完整性问题。事实上,研究和个人经验表明,通常 50–80%的 AI/ML 项目工作都花在工程数据上,以支持数据科学家的工作。
AI/ML 的格言是,更多的数据驱动更好的模型。但是,当数据很难获得时,企业数据科学家必须用他们能找到的东西来凑合,这些东西往往远远少于他们所需要的。因此,数据采集占用大量时间不足为奇。
解决方案:只确定和优化改善数据采集的几个关键步骤:正如人们所说,老虎不能改变它的条纹,但我认为它行为的小元素是可以训练的。稍微扩展一下类比,我的经验是,并不是所有的企业过程都能够或者需要被简化以加速数据获取。
相反,捕获两个关键属性(数据所有者和数据结构)的简单活动对推动数据获取过程大有帮助。
首先,数据所有者被定义为被授权允许访问数据的人/角色。有了这个,我们就可以确定谁,也许是如何,对我们需要获取的数据作出访问和授权决定。
其次,找到解释我们希望获取的数据的结构(存在哪些列,它们的分布)的文档将极大地简化安全性考虑,同时也有助于未来的数据工程活动。
解决方案:建立一个基本的数据目录:前面提到的数据所有者和数据结构属性对其他项目都很有用,并且被认为具有持久的价值。在我的客户那里,我们将这些信息保存在一个“数据目录”中。
我们从一个内部应用程序开始,这个应用程序只是一个带有浏览器用户界面的数据库,提供基本的搜索/查找/编辑功能,并用前面提到的关键域(例如,客户、帐户、产品)的数据属性填充它。
有趣的是,我们发现随着数据的不断增加,数据目录(以及它的底层架构)发展到支持许多领域,并扩展了许多其他属性(数据、表和文件结构、样本数据、安全性考虑等)。)并很快成为整个企业中数据资产的基础记录。它成为优化企业官僚数据获取流程的关键因素。

Photo by Tobias Fischer on Unsplash
问题 2:数据科学家需要“清晰”的数据
企业数据安全和隐私政策不仅提供保护,还提供约束。然而,AI/ML 还有另外一个独特的安全和隐私挑战,这使得事情变得相当棘手。过去,数据存储在被锁定的生产系统中,只有在受控和特定的情况下应用程序才能访问,即使可以访问,生产数据也被严重屏蔽。
但是,今天的数据科学家有一个基本需求,即以无屏蔽的形式访问生产数据。简而言之,如果数据科学家在模型开发中需要某个数据属性或特征,那么它必须是“透明的”(无屏蔽的)。
不幸的是,大多数企业以前都没有处理过“明文数据”的安全问题,通常也没有为设计和实施安全策略来处理这类请求做好充分准备。在许多情况下,理解特定数据请求的安全含义所需的信息(“元数据”)是不可用的,使得团队争先恐后地找出各种表、文件和字段中哪些是实际有用的,然后就数据安全分类进行辩论。不用说,这需要很多时间。
解决方案:提供明确标识数据安全需求的元数据:我们通过在数据目录中捕获安全策略来解决这个问题。特别是,数据的敏感性(例如,“公共”、“机密”、“个人身份信息”)被分配给每个表或文件,并保存在数据目录中。
最终,我们将能够向数据目录添加更详细的安全策略(按列/字段甚至行列组合的安全策略)以及访问数据所需的角色信息,从而简化数据访问和授权请求。

Photo by Samuel Zeller on Unsplash
问题 3:不成熟的云安全实践
如今,许多企业利用云能力进行通用计算,但很少企业利用云能力进行人工智能/人工智能。不幸的是,在许多情况下,我看到企业 AI/ML 向云的迁移受到不成熟的云安全实践的阻碍。
更具体地说,根本问题与以下事实有关:大多数有用的 AI/ML 建模活动都需要访问敏感数据,但不幸的是,默认情况下,驻留在云上的数据是公开可用的,这引起了企业安全团队的极大关注。经验表明,按照大多数企业可接受的标准保护云资源是一项重大的工程工作。
不幸的是,只有最先进的企业能够提供在云上支持 AI/ML 所需的安全能力。下面是解决这个问题的一些建议。
解决方案:建立基础数据存储策略:有许多关于此主题的书籍,但我发现几个基本策略是不可更改的,包括:(a)建立定义明确的安全边界,(b)安全边界内外的数据泄漏为零,(c)所有数据存储和通信都经过加密,密钥以及密钥轮换流程归企业所有,(d)对存储区域的访问由基于角色的访问控制(RBAC)机制管理,该机制与企业用户组角色定义(例如:企业 AD 或 LDAP)相集成
解决方案:为数据存储和处理创建安全的云“围墙花园”:我对“围墙花园”的定义很简单:它是企业云租赁中的一个区域(多个虚拟机、多个运行的产品,不要与 Docker 容器混淆),具有明确且不可渗透的安全边界。
为企业数据存储建立了一个主要的围墙花园,它允许为敏感的企业数据建立一个安全的存储库,这些敏感的企业数据被有目的地分开管理,以加强角色和责任的分离,并提供一定程度的管理隔离。
独立的数据处理“围墙花园”是动态建立的——一个数据科学家、一个项目或一个小组应该能够建立一个“围墙花园”——以允许数据处理,并通过基于角色的访问控制(RBAC)机制连接,控制谁可以查看哪些数据。
然而,请注意,必须监控关键云安全组件的配置漂移是至关重要的,这有两个原因:第一,确保捕获企业做出的意外错误的云配置更改;第二,在任何数据泄漏发生之前,识别并修复云供应商对底层低层基础架构做出的暴露数据的任何更改(这种情况很少见,但确实会发生)。显然,上述任何项目的异常警报都集成到了企业的安全操作控制中心。
解决方案:提供演示如何实现数据安全策略的“模式”:根据我的经验,提供明确描述架构、设计和实现技术以及特定使用模式的“模式”有助于确保整个企业的一致性。
当它涉及 AI/ML 时,关于数据提取、浓缩和聚集的模式特别有用。当采用“平台”方法时,效率会更高,开发人员和工程师可以使用实现这些模式的通用组件和横切关注点。
在许多情况下,这些模式被保存在文档齐全的企业 GitHub 存储库中,并与数据目录中的相关数据元素进行交叉引用,这样就可以很容易地找到和使用它们。

Photo by Pop & Zebra on Unsplash
问题#4:繁琐的 AI/ML 治理过程
不幸的是,如今常见的是,公司 it 以治理传统应用交付的方式治理 AI/ML 交付过程。这导致 AI/ML 生命周期被相同的官僚流程、手动活动和移交所阻碍,加重了常规应用交付生命周期的负担。
虽然这对于延迟和更长的交付周期可能产生微小影响的公司应用程序来说是可以容忍的,但对于要求速度、敏捷性和响应性的下一代 AI/ML 应用程序来说,这在很大程度上是不可接受的。很明显,公司 IT 治理需要一点再工程来适应 AI/ML 的需求。但是从哪里开始呢?
AI/ML 治理的目标是确保提供证据,证明模型及其交付过程可以生成可重复、可追踪和可验证的结果。显然,这在许多方面是有益的:首先,在一些行业,如银行或医疗保健,可追溯性是强制性的,其中监管监督对 AI/ML 交付过程施加了重大约束。
例如,模型风险管理对分析过程提出了严格的要求,以便 AI/ML 模型按预期工作。在美国,这是通过SR 11–7等法规来解决的,而在加拿大,这是通过企业范围风险管理指南(E-23) 来解决的。然而,从医疗保健和生物技术到政府安全的许多其他行业都有类似的监管需求。AI/ML 治理推动了解决模型可追溯性需求所需的能力。
第二,客户和公司现在要求模型提供符合道德和不带偏见的可验证的结果。不幸的是,人工智能/人工智能模型的结果是由输入其中的数据和创建它们的人的未知偏见所驱动的,这可能导致基于种族、民族、性别或政治偏见的隐含决策。
越来越清楚的是,识别、理解、验证和提供结果的证据是 AI/ML 治理的核心原则,并且必须成为 AI/ML 模型有效性的核心决定因素。
AI/ML 治理提供了创建可复制和可重复的模型结果的动力和机制。需要新的技术和工具来解决这些独特的 AI/ML 治理需求。
解决方案:实施模型管理工具来简化和自动化关键 AI/ML 治理流程:现代 AI/ML 治理的基础是在整个模型生命周期中捕获 AI/ML 模型指标和元数据的能力。我的客户通常从基础开始—使用源代码控制工具(例如 GitHub 或 GitLab)维护的所有模型源代码和版本,允许数据科学家合作快速开发模型,同时确保模型的“记录簿”总是建立良好。
为了解决可重复性问题,我们要求将训练数据迁移到只读档案中,并且必须捕获模型源代码和用于训练它的数据之间的关联。
为了解决可追溯性问题,我们希望原始的源系统数据和用于转换和丰富数据的数据工程脚本能够被归档,从而提供对交付生命周期中所有数据变更的可见性。
为了解决可验证性问题,我们的目标是将所有的训练输出、日志和相关的工件归档,从而提供模型被证明按照规范工作的证据。
为了提供对所有模型工件的无缝访问,我们提倡创建一个提供两种能力的 AI/ML 市场。首先,它作为模型的目录,允许数据科学家轻松找到现有模型,并为创建新模型提供了一个简单的起点。其次,它还是一个控制面板,允许数据科学家和运营人员查看这些指标的状态,并做出模型提升和治理决策,还提供了一种实施“自助式”治理的方法,即在捕获指标和支持证据后,允许对模型进行单击式认证。
解决方案:提升当前企业 DEVOPS 能力以适应 AI/ML: 模型不同于传统应用,这对企业提出了新的挑战 AI/ML DEVOPS 能力。显然,数据管理、工程和迁移的重要性是至关重要的,对于那些只消耗通用计算资源的大多数企业来说,这是次要的考虑因素。
为了确保模型提供可重复、可追踪和可验证的结果,必须集成许多新的工具和框架(其中许多是开源的),并适应数据安全和隐私要求带来的额外安全约束。

Photo by Inês Pimentel on Unsplash
企业 AI/ML 敏捷性可以从神话变成现实
我一开始提出,企业中的“敏捷”人工智能/机器学习(AI/ML)在很大程度上是一个神话。我确信,随着企业开始他们的 AI/ML 之旅,他们将面临我在本文中确定的相同障碍:企业 AI/ML 敏捷性受到官僚主义的数据获取流程、复杂的安全需求、不成熟的云安全实践的制约。
挑战看似巨大,但我的经验表明,只要有一些新技术、工具和适度的重新设计,许多障碍都是可以克服的。希望我已经给出了一些解决方案的起点,这些解决方案将把您企业中的 AI/ML 敏捷性从神话变成现实。
我们对他们的神话

(Source)
为什么“发达国家和发展中国家”的区别不再有效:现实项目第 4 集
在媒体传播的所有神话中,也许没有比我们对他们更有害的了:这种观点认为世界分为两个群体——一个是善,一个是恶——所有事件都可以被视为两者之间的斗争。这种对世界的两面性观点利用了我们形成部落的自然趋势,并在许多情况下得到应用,从政党到经济体系,以及“发达国家与发展中国家”的形式在最后一种情况下,这表现为:发达国家=低出生率的富裕国家(假设是美国)对发展中国家=高出生率的贫穷国家(他们)。
二元观点可能会成为引人注目的新闻(冲突和部落主义肯定会引起我们的注意),但这是错误的。所有的人类生活,从个人的收入、身高、性别,到国际的政府体系、经济体系、国家财富,都不存在于两种状态中,而是沿着一个连续体存在。此外,我们通过将人们分成两组来使他们失去人性让我们的本能和认知偏见替我们思考,而不是使用我们的理性。在这篇文章中,第四集的现实项目致力于用数据减少对世界的误解——我们将看到为什么发展中国家和发达国家之间的区分不再适用,而是看看看待国家的真实方式。
现实项目的前一集,关于全球核武器的在这里。你可以通过在媒体上搜索标签找到所有的现实项目。
数据
对于这篇文章,我们将主要依靠汉斯·罗斯林的书:事实:我们对世界误解的十个原因。其他来源包括世界银行贫困页面,YouTube 视频“用你从未见过的最佳数据揭穿第三世界的神话”,以及文章“我们应该继续使用‘发展中世界’这个词吗?”。我用 Gapminder 数据探索工具制作了这些图表,你可以免费下载(它包括数据)。
首先,我们有必要看看这种适用于国家的二元观念起源于何处。“发展中国家”一词可能是从“第三世界”演变而来,后者最初指的是在 20 世纪 50 年代既不与共产主义的苏联集团结盟也不与资本主义的北约结盟的国家。这些国家往往是前殖民地,努力为公民提供体面的生活水平,而“第三世界”很快就意味着高出生率的贫穷国家,现在被称为发展中国家。
诚然,在 20 世纪 60 年代的某个时候,这种区分确实有意义——或者至少符合现有的数据。在下面的图表中,我们可以看到 y 轴上的生育率(每个妇女的生育数)和 x 轴上的收入(人均 GDP ),这是所有有数据的国家 1960 年的数据。

Fertility Rate vs Income in 1960 (created with Gapminder Data Exploration tool).
(颜色代表世界地区:黄色=欧洲,蓝色=非洲,绿色=美洲,红色=亚洲+澳大利亚)。有一个相对明确的分组,因为欧洲国家加上一些美洲和亚洲国家往往更富裕,每个妇女生育的孩子更少(右下)。另一方面,非洲国家几乎全都有高出生率和低收入。发展援助在二战后开始兴起,因此,在当时,这种分类允许非政府组织和政府集中精力。
然而,自 1960 年以来,世界形势发生了巨大变化。让我们看看 1990 年的同一张图表,当时苏联刚刚解体。

Fertility Rate vs Income in 1990
现在我们看到的不是分组,而是线性过渡。国与国之间仍然存在差异,但存在的明显差距已经让位于一条平滑的线。1960 年,全球生育率极高,每名妇女生育 5 个婴儿,但 1990 年已降至 3 个。极端贫困率——每天不到 2 美元——也同样下降了,从 1960 年的 60%下降到 1990 年的不到 40%。
这些趋势——生育率下降和贫困减少——自 1990 年以来有增无减。下面是最新的世界图片:

Fertility Rate vs Income in 2018
我们在这里看到的被命名为“大融合”虽然仍有分歧,但没有一条鸿沟将国家分开;相反,他们沿着一条连续的收入线排列。在这个图中画一条单独的分隔线是不可能的,因为只有一个平滑的过渡。世界各地的国家都变得更加富裕,因此寿命更长,儿童死亡率降低,每个妇女生育的孩子更少。
值得注意的是,中国和印度(可见的大红色气泡)经历了极端贫困的减少,导致 2018 年极端贫困率低于 9%的世界新低。新的全球出生率为每名妇女生育 2.5 个婴儿,接近 2.1 的替代率。
当我们看一个类似的儿童存活率与生育率的图表时,我们可以看到同样的趋势。在 1960 年,发展中国家和发达国家之间的差距更加明显(左图),但自那以后,世界再次趋同(右图)。


Children surviving to age 5 vs fertility rate in 1960 (left) and 2017 (right)
旧盒子显然不再合适了。我们将在下一节讨论更精确的特性。
我们将以最后一个画面来结束这一部分:自 1800 年以来全球收入分配的变化。从新闻中获得你对世界的看法是一回事,但用真实的数据观察发生在你眼前的变化是完全不同的。随着世界各地收入的增加,全球极端贫困率(垂直线)从 86%下降到 15%以下(2018 年,世界银行报告该比率低于 10%)。

如果你仔细观察,你会发现在 1960 年左右出现了一个缺口——这正是“发展中”和“发达”这两个词首次出现的时间。然而,随着动画的继续,差距慢慢消失,直到收入沿着一个连续的分布存在。收入的分离——被称为“大分化”——是一个真实的现象,但新的情况是一个大趋同,因为几乎所有地方的收入都在增加。
两组不同国家之间“差距”的消失意味着“发展中国家”和“发达国家”不再准确地代表国家。如果我们使用这种区分,这意味着将人均国内生产总值为 17,000 美元的墨西哥和人均国内生产总值为 1,200 美元的莫桑比克归入同一类别。换句话说,二元区分太宽泛了。尽管如此,正如在 20 世纪 60 年代,某种形式的国家分裂是有用的,因为它让我们找到有类似需求的国家。如果两部分模型坏了,用什么来修复它?
更好的系统
在《事实真相》一书中,汉斯·罗斯林提出了一个四层的方法,根据相似的收入需求对国家进行分组。这些概述如下(摘自比尔盖茨关于这个话题的精彩文章)。
- 第一级:每天少于 2 美元。大约有 10 亿人处于这一水平,每天获得食物可能是一场斗争。
- 第二级:每天 2 到 8 美元。大约有 30 亿人处于这个水平,孩子们可以去上学,而不是去工作。
- 第三级:每天 8 美元到 32 美元。大约有 20 亿人在这一层,包括机动交通和高中。
- 四级:每天 32 美元以上。大约有 10 亿人处于这一水平,拥有省力的设备和可靠的医疗保健。
如果一定要这么想的话,一级是“下层”,二级、三级是全球“中层”,四级是“上层”。在这个体系中,世界上绝大多数人口被正确地归类为中产阶级或以上,反映了最近收入的大幅增长。
下面是随着时间的推移,世界人口在各个层次上的分布情况:

Raw number of people on each level over time (Source)
在 1800 年,几乎全世界的人口(85%)都生活在第一层。2018 年,只有 15%的世界人口仍在那里,中产阶级的增长速度远远超过极端人群。
每个人代表大约 10 亿人,实际水平和美元数额如下:

Four Income Levels Proposed by Hans Rosling at Gapminder
四层体系是对二分制的改进。罗斯林的方法是有用的,因为它比二元分类更准确地抓住了不同国家的需求,它使我们能够清楚地看到随着时间的推移取得的进展,并防止我们陷入美国与他们的思维类型。(更不用说这些数字计算得非常好)。虽然这个论点看起来像是语义学,但它实际上很重要,因为我们如何衡量决定了我们如何行动。
(还有其他系统可以解决同样的问题。国际货币基金组织仍然使用先进与新兴经济体的二元对比(T1),联合国开发计划署(T2)使用连续人类发展指数(T3),世界银行(T4)最近已经停止使用“发展中国家”和“发达国家”的术语(T5)。还有一个令人信服的理由是将四个类别扩展到五个类别,第五个代表富足。)
为什么这很重要
为什么任何测量都很重要?答案是:通过观察原因和结果,它帮助我们找出解决问题的方法。考虑一个典型的连续人体测量,体重。如果你正在努力减肥,最好的开始之一是简单地每天称体重,这样你就可以知道你是否走在正确的方向上。否则你怎么知道你的(非)干预是否有任何影响?行动——衡量结果——调整行动的过程是我们个人在任何追求中提高的方式。全球发展也是如此:按照连续或四级尺度进行衡量,可以让我们清楚地看到一段时间内的进展,并将具体的改进与原因联系起来。
当我们开始考虑使用二进制还是多类别时,权重的比喻也成立。如果只有两种状态——胖和瘦——我们对很多人的分类是不准确的,如果你的状态年年都没有变化,就很难保持动力。我们最好按照类别来思考——肥胖、超重、健康、体重不足——这样我们就可以向个人(或我们自己)提出重要的建议,来指导他们的减肥行动。
谈到全球贫困,似乎有理由感到绝望。目前有 7 . 5 亿人——大部分在撒哈拉以南非洲——处于极端贫困之中。然而,我们不应该就此止步,一旦我们开始挖掘数据,情况会变得好得多:在过去 30 年里,超过 12 亿人摆脱了极端贫困以及在未来几十年内消除极端贫困的真正可能性。在二元世界观下,我们冒着失去所有这一切的风险,因为我们把与我们收入水平不同的人都归为发展中国家。在四层框架中,我们可以看到,实际上约 85% (6/7 亿)的人生活在第二层或更高层,最大一部分人口生活在全球中产阶级(第二层和第三层)。如果我们再看一下一段时间内的水平分布图,我们会看到很多充满希望的理由:

Number of people on each income level over time. (Source)
中产阶级正在壮大,而第一层(“下层”)正在迅速萎缩。这不仅对那些国家的人民有好处,而且对全世界的每个人都有好处。随着国家变得越来越富裕,公民对生活的满意度也越来越高(这是一个比日常幸福更好的衡量标准):

Dissatisfaction with life versus GDP per capita (Source).
此外,随着收入的增加,生育率下降,因为更好的保健导致更少的儿童死亡,因此,妇女生育更少的婴儿:

Fertility rate versus average income (source)
(生育率下降还有许多其他原因,你可以在我们的世界数据生育率页面上读到。)有些人担心人口过剩(根据数据和最佳估计,我不是其中之一)如果你是其中之一,限制人口增长的最佳方式就是让所有国家的人民摆脱贫困。随着家庭的孩子越来越少,他们可以在每个孩子身上花费更多的资源,让他们有更好的机会取得成功,然后他们可以将这种成功传给他们的孩子,减少贫困和降低生育率的良性循环将继续下去。
结论
你可能会说,归根结底,这只是语义上的。然而,“发达国家与发展中国家”的二分法不仅仅是一个词语的选择,它是一种思维模式。从本质上来说,二元世界观在智力上是懒惰的,因为它意味着不看数据;它是不人道的,因为它让我们把个人视为可怕的他者,而不是和我们一样为健康、繁荣和下一代更好的生活而奋斗的人。
“现实项目”不是为了了解事实让你觉得高人一等,而是用事实鼓励人们为人类的长期发展做出贡献。“发达国家对发展中国家”的神话是一个很好的起点,因为它提供了一个展示乐观数据的机会,谈论我们对世界的看法是如何错误的,并做出温和的纠正。一旦我们理解了世界变得更好的原因和方式,我们就可以确保它继续这样下去。作为第一步,从看待事情开始——在你的个人生活中和在国际层面上——不要非黑即白,而是要有一个尺度,即使存在分歧,也要显示出进步及其原因。
一如既往,我欢迎反馈和建设性的批评。可以通过推特 @koehrsen_will 联系到我。
十亿选民的国家
繁荣的印度选举管窥

这是印度的选举月,拉哈特·印多利博士的一句话很好地总结了这一点。
“सरहदोंपरबहुततनावहैक्या,पता तो करो चुनाव है क्या!”
对于说英语的人来说,这意味着:边境的紧张局势是否很严重?问问选举是否开始了。
这次选举印度谈了很多问题。新闻频道谈论爱国主义、社会主义、宗教以及恐怖主义。
你可能已经听说了印度和巴基斯坦之间的紧张局势。
这个选举季节也被刺耳的辱骂声所破坏。政客们似乎已经忘记了基本的礼仪。
称总理为卖茶的和守夜的。首相优雅地接受了这两个头衔,并在推特上把一个 Chowkidaar 放在他的名字前面。这是纯粹的天才。
现在选举终于结束了,新闻频道正在发布投票后民意调查。这是非常好的数据。
又何必浪费好数据呢?
因此,这里是一个努力显示一些选举数据使用一些互动的可视化使用繁荣。
印度政治概述
举个小例子,在印度,中间派由 BJP(Bhartiya Janta Party)把持,纳伦德拉·莫迪(Narendra Modi)是印度现任总理。
印度政治史上的大部分时间都是由 INC(印度国大党)主导的。 这是圣雄甘地的聚会。 公司的掌门人拉胡尔·甘地,这个有时被称为的 50 岁青年,可能是王朝政治的完美范例。
还有很多其他的地方州党,我就称之为 OTH(其他)
给美国观众一个视角(非常宽泛):BJP =右翼,INC =左翼。**
印度有 28 个邦,每个邦都有一定数量的选举席位。这是每个州的座位分布。
下面我们来简单说说 摇摆州 。
第一个邦是 北方邦 。一个基于种姓政治的地区。占据了 543 个席位中的 80 席。一个可能左右整个选举的州。这个州是一个名为“MahaGatbandhan”(字面意思是大联盟)的大联盟的所在地。这个联盟是由两个重量级人物——Akhilesh Yadav 和 Mayawati 建立的。两人的观点完全相反,但他们一起将 BJP 政府赶出了中心。
然后就是西孟加拉邦 42 席的情况,由 玛玛塔·班纳吉 把持。有时人们会说这可能是一个独裁政权,在过去的几天里,这个国家发生了很多暴力事件。她也可能在后期与 INC 组成联盟,推翻现政府。
总而言之,INC,MahaGatbandhan 和所有其他人都是为了推翻 BJP(莫迪政府)
出口民调

经过 7 个阶段的投票,选举已经结束。今天是印度的投票后调查。
这意味着所有新闻频道都将在 28 个州的 542 个 Loksabha 席位中进行单独调查。
让我们不要再等了,看看各种新闻渠道的投票后调查数据。
这是:
看起来 BJP 和联盟大获全胜。
这是一个相同的赛车条形图。
唯一不动的似乎是 BJP+ 并且似乎会有第二个基于这一形象化的术语。
议会看起来有点像橙色(BJP 色),虽然没有上次那么多。
和摇摆州。我将通过 TimesNow 查看民意调查数据。
虽然这看起来像是 BJP+在西孟加拉邦的失败,但根据左派的国家政治,在 WB 超过 10 个席位实际上是很多的,应该被归类为一场胜利。
在北方邦,BJP+也能够以 Mahagatbandhan 的形式应对强大的反对派,这似乎也是一场胜利。
结论
2019 年的任务似乎有利于 BJP 及其盟友。
这是对宣扬种姓政治、王朝统治和少数民族绥靖政治的人的一个笼统的回答。
这里有一条推文显示了西孟加拉邦现任 CM 的一些沮丧。
虽然数据似乎显示了 BJP+的许多前景,但我们仍然需要看看这些新闻频道的预测是否符合实际情况。选举结果将于 5 月 23 日公布。
我还想在这里强调一下floride,它让创建可视化变得轻而易举。
易于制作、发布和分享的可视化效果。
如果你想了解创建可视化的最佳策略,我想从密歇根大学调用一门关于 数据可视化和应用绘图 的优秀课程,它是一个非常好的 数据科学专业的一部分,本身带有 Python 。一定要去看看
将来我也会写更多可视化的帖子。在 媒体 关注我,或者订阅我的 博客 了解他们。一如既往,我欢迎反馈和建设性的批评,可以通过 Twitter @mlwhiz 联系。
PS:我是 BJP 的支持者,但我尽量保持客观。
人工智能的自然根源
建立对人工智能的共同理解的挑战可以追溯到对智能本质的辩论。

Credit: Marcus Bengtsson (Unsplash)
在这篇文章中,我分享了我对人工智能(AI)基础及其与智能相互关系的文献的探索。我将概述人工智能如何不同于“自然”智能的概念,但却植根于其中。我已经尽了最大努力以一种简化的、有代表性的方式来呈现技术概念。
一、自然智能的概念
为了开始我们对人工智能的探索,我们从定义智能开始。《T2 牛津通用词典》(T3)(1955 年)很大程度上依赖于这个词的拉丁词根“T4”(intelligere),将智力定义为理解的能力;智力;理解是承认程度的一种品质;规格超群的悟性;思维敏捷;睿智。虽然这种对“理解”的关注确实强调了感知意义的能力,但它过于宽泛;我们需要进一步寻找更清晰的答案。
在学术界,研究人员对智力没有一个普遍认同的定义。从广义上讲,有四种关于智能的主要观点延续到人工智能研究中——每种观点都有支持者和批评者。前三组——都与人类有关——有一个共同点:智力取决于但不同于认知。认知指的是大脑的基本过程,而智力是用它可以达到的。智力使用认知能力来达到规定的目的。第四类人持另一种观点,认为智力不仅仅局限于人类和动物,可以在生物学中观察到。我来详细说明一下。
一般智力阵营: 这第一派认为智力是一般的心智能力;即处理认知复杂性的能力。Linda Gottfredson 在Why G Matters:The Complexity of daily(1997)中提出了一个相当简洁的定义,并得到了其他 52 名研究人员的赞同,该定义指出:
“智力是一种非常普遍的心理能力,其中包括推理、计划、解决问题、抽象思考、理解复杂想法、快速学习和从经验中学习的能力。这不仅仅是书本知识、狭隘的学术技能或应试技巧。相反,它反映了一种更广泛、更深刻的理解我们周围环境的能力——“理解”、“理解”事物,或者“弄清楚”该做什么。
这些研究人员认为,一般智力,也称为 g 因子,可以通过经验测试推理、记忆、知识、处理速度和空间能力来衡量。这些测试的结果并不表明智力本身,但给出了智力的近似值——类似于测量身体各方面的健康测试可以给出整体健康的想法。从 19 世纪末开始,心理学家弗朗西斯·高尔顿爵士、詹姆斯·麦肯·卡特尔和阿尔夫莱德·比奈将大规模智力测试系统化——其有效性至今仍有争议。
多元智能阵营: 第二组认为有不同类型的智能。研究人员认为一般智力不能完全解释认知能力,他们指出了人身上出现的不同形式的智力。在极端的情况下,出现了一些特定的术语,如德语中的 fachidiot 和法语中的白痴学者来指代那些仅在狭窄领域显示智力的人。
研究人员提出了不同的理论来解释如何对智力进行细分。在《心智框架:多元智能理论》(1983)中,哈沃德·加德纳认为有七种类型的智能:视觉空间智能、语言智能、逻辑数学智能、音乐智能、人际智能、内省智能和身体动觉智能。他后来又增加了三个:存在主义、激光和精神探照灯。或者,罗伯特·J·斯滕伯格在《超越智商:人类智力的三级理论》(1985)中提到了一般智力的各个方面,将它分为三个亚理论:成分(分析)、经验(创造)和实践(情境)智力。
此外,情商的存在是一个流行但在科学上有争议的观点。最早出现在 20 世纪 60 年代 Michael Beldoch 和 B. Leaner 的论文中,后来在 Daniel Goleman 的情绪智力:为什么它比智商更重要 (1995)中得到推广,情绪智力是识别和管理自己和他人情绪的能力。支持者将情商与职业结果相关联,而批评者指出,当控制一般智力和人格特质时,情商的重要性较低。
行为阵营: 第三类人不再试图将智力与认知能力联系起来。相反,它将智力定义为解决问题的能力。因为智力是认知的动员,它专注于实现表面上可观察到的结果。正如 S. S .科尔文在剑桥大学的智力手册 (2000 年)中所引用的,“一个人拥有智力,只要他已经学会或者能够学会调整自己以适应环境。”虽然这种观点在对智能的封装上显得狭隘,但出于我们将在后面看到的原因,它是人工智能研究人员最喜欢的术语。
进化阵营: 最后,第四派认为所有生物都表现出某种智能行为。Cianciolo 和 Sternberg 在《智力:简史》中指出,智力最终可以归结为生物体适应环境和从经验中学习的能力。这种定义经常被生物学家使用——尽管小心翼翼地与智能设计保持距离。在进化的推动下,在文化的影响下,自然产生了适应生存和繁衍环境的有机体。在《自然中的智慧:对知识的探究》(2005 年)中,人类学家杰里米·纳比使用了日语表达 chi-sei ,大致翻译为“知识”或“知道的能力”。自然界中有无数智能行为的例子,例如植物整天弯曲它们的茎,细菌在寻找食物时采用独特的游泳策略,或者猴子对每种类型的捕食者发出独特的警告信号。对这个群体来说,智力是安静的和无意识的,与环境相关,关注生存而不是解决问题,并建立在偶然性的基础上。
这四个观点是对智力的静态定义。但是随着时间的推移,人类的智力也会发生变化:让·皮亚杰发现了智力是如何从婴儿期和儿童期发展并过渡到青春期和成年期的。智力也会随着文化的变化而变化:詹姆斯·弗林注意到智力随着时间的推移而增加,他发现环境的认知复杂性增加了思维的复杂性。换句话说,基因和环境相互作用影响智力。此外,整体来看,智力变化的影响:在《蜂群思维:你的国家的智商如何比你自己的智商重要得多》(2015)中,加勒特·琼斯探索了集体范围内的智力如何转化为现实世界的结果。
二。人工智能的起源和定义
希尔伯特·西蒙的自然与人为的二分法在艾的历史中起了重要的作用。正如西蒙在**人工科学* (1969)中所写的,自然是由自然产生的,而人工是由艺术产生的。尽管“人工”带有贬义,但人工过程涉及到将现有情况改变为更好的情况。通过设计的过程,人类生产出利用自然世界来满足特定目的的物质人工制品。我们可能会想到空调、飞机、砖块、面包、摩天大楼、智能手机等等。*
1956 年夏天,人工智能领域在达特茅斯学院诞生。由约翰·麦卡锡领导的一项为期两个月的研究聚集了著名的数学家和科学家,研究“猜想,学习的每一个方面或智力的任何其他特征原则上都可以如此精确地描述,以至于可以制造一台机器来模拟它。人们将试图发现如何让机器使用语言,形成抽象概念,解决现在留给人类的各种问题,并自我完善。”这是一项雄心勃勃的事业,反映了其参与者的乐观主义和早期里程碑:希尔伯特·西蒙预测“机器将能够在 20 年内做任何人类可以做的工作”,而马文·明斯基写道“在一代人之内……创造‘人工智能’的问题将得到实质性解决。”坦率地说,这并没有发生。
正如它确实发生的那样,该领域谨慎地集中在围绕目标实现的更温和的人工智能定义上——这与我们的行为主义阵营的智能概念没有什么不同。专家们提出了一些不太具体的定义,如“解决难题的能力”(马文·明斯基)、“以最佳方式利用有限资源(包括时间)来实现目标的能力”(雷·库兹韦尔)、“在复杂环境中实现复杂目标”(本·戈泽尔)、“在各种环境中产生适应行为以实现目标的任何系统”(大卫·福格尔),以及“将科学和工程结合起来,以建造具有智能行为能力的机器”(乔安娜·布莱森和杰里米·怀亚特)。
使用这些定义,我们看到 AI 是方法不可知的;它没有规定必须使用哪些方法来解决问题。此外,我们看到它有解决我们不再认为是人工智能的问题的历史,例如设计井字游戏策略,创建数学证明,识别手写文本,或优化机票价格。我们现在认为人工智能只关心解决计算机目前无法解决的问题。正如道格拉斯·霍夫施塔特(Douglas Hofstadter)讽刺的那样,“(人工智能)是任何还没有被做的事情。”同样,在《T2 心理学会》(T3)(1967)中,明斯基评论道“智力的概念就像舞台魔术师的把戏。就像‘非洲未开发地区’的概念一样,一旦我们发现它,它就消失了。”
总而言之,人工智能中的“智能”,如果有的话,是指其制造者在机器中表现出来的智能。
三世。AI 的不同部落
每一个人工智能实例的核心都有一个算法——一组交付给计算机的指令,用于从输入生成输出。人工智能算法围绕着我们:城市中的交通灯根据交通模式自行协调;智能手机根据应用程序的使用情况节能;飞机根据大量的飞行数据自动驾驶飞行;脸书基于用户数据黑箱生成个性化新闻源。是什么统一了这些离散的算法,它们是如何分类的?
有许多方法来分类和组织人工智能内部的思维。例如,任务可以分解为分类问题,以识别给定观察的组(或类),或者分解为回归问题,以生成定量预测。或者如果根据口径对 AI 进行分类,有专攻一个领域的人工狭义智能(ANI),可以将智能应用于任何问题的人工广义智能(AGI),还有超越人类智能的假想人工超级智能(ASI)。我们的重点是亚 AGI 类别,因为大多数专家预测将 AGI 置于未来几十年,而 ANI 研究是中间步骤。参考 Pedro Domingo 在他的书 The Master Algorithm (2015)中对该领域的简洁回顾,我将粗略回顾一下关于创建人工智能的方法的主要观点。
我们首先需要知道,在最高层面上,有两种生成人工智能的竞争方法:机器学习(ML)和知识工程(KE)。机器学习是教计算机学习的过程。它采用了学习算法——生成其他算法的算法。通过从一组输入及其相应的输出开始,然后传递给计算机一个学习算法,它编写一个程序,可以根据一组新的输入产生正确的输出。对于知识工程师来说,这仅仅是模式识别,而不是真正的知识。知识工程采取了一种不同的方法,让专家将他们的领域知识编码成计算机能理解的语言。当面临问题时,专家系统引用专家赋予的逻辑和规则来解决问题。机器学习的倡导者反驳说,创造一个智能代理所需的想法数量是无限的。对知识进行编码仅仅是集邮,如果机器不能学习,当面对新的情况时,它就会变得脆弱。曼梯·里和柯之间的竞争持续了几十年。随着时间的推移,曼梯·里在取得了许多重大成功后成为了占主导地位的思想流派。尽管如此,一些知识工程师相信,ML 的局限性最终会让自己变得清晰,为 ke 的复兴扫清道路。**
创造潜伏在外围的人工智能的另一种方法是模仿人类大脑,这种方法由雷·库兹韦尔提出,并由罗宾·汉森在 2016 年的《Em 时代》中进行了深入探索。大脑仿真本质上是将大脑的“软件”移植到机器上,而不是担心制作软件来完成人类执行的各种功能。虽然本质上是推测性的,但其倡导者认为,在下个世纪,我们将能够以空间和化学分辨率扫描大脑,模拟单个脑细胞的信号处理功能,并在人工硬件中创建一个逐个细胞的大脑可执行模型。这种模拟可以展示类似人类的输入输出行为。
尽管人工智能是人工智能的一个子领域,但它已经成为人们关注的焦点。多明戈斯把 ML 社区分成五个主要的部落:象征主义者、联结主义者、进化论者、贝叶斯主义者和类比主义者。每个部落设计学习算法的方法都可以追溯到自然智能、自然科学和数学。

象征主义者认为所有的智能都可以简化为操纵符号——每个符号都是一个想法、物体或关系的抽象表现。与数学家通过牛顿万有引力定律等方程解释宇宙的方式类似,符号主义者将现实简化为由符号组成的方程。虽然知识工程通过手动编码知识来采用这种方法,但符号主义机器学习通过采用一种根据经验自行构建知识的学习算法来避免这种“知识瓶颈”。这种学习是通过一个逆向演绎的过程来完成的:传递一个计算机数据,并在知识中归纳出缺口,从而得出概括的结论。这种对符号的操纵可以被看作是对 Gottfredson 的智力定义的一种松散的重新诠释。
连接主义者对大脑进行逆向工程。受我们大脑的生物神经网络如何通过加强神经元之间的连接来产生学习的启发,连接主义者通过人工神经网络对此进行建模。这是通过创建多层人工神经元来实现的,这些人工神经元利用一种称为反向传播的学习算法,该算法连续改变每一层中的连接,以使程序的输出符合预期。迄今为止,大脑是终极的学习机器;也许它有一个我们可以借鉴的通用学习算法。有趣的是,灵感是双向的:一些人认为人类的大脑是一个信息处理系统——其中认知和意识是一种计算形式。
进化论者认为智慧之母是自然选择。大自然的学习算法是一种适应度函数,通过基因的选择和重组产生复杂的有机体,这些基因也会随着时间的推移而变异。进化者通过遗传算法来模拟这一点,在遗传算法中,程序目的的实现取代了“生存”作为适应度的衡量标准,通过遗传算法,程序通过随机突变和/或繁殖进行世代进化。经过多次迭代,这种学习算法产生越来越好的程序,模仿我们在智能进化阵营中概述的那种智能行为。
贝叶斯主义者认为所有学到的知识都是不确定的,学习就是处理不确定性的能力。程序经历一个循环过程,从先验概率开始——在看到证据之前的信念——变成包含新证据的后验概率。贝叶斯主义者使用概率推理作为他们的学习算法,这严重依赖于贝叶斯定理,该定理现在指导将新的证据纳入程序的信念。基于数学和统计学,它提供了一种获取和提炼知识的直观方法。
类比者认为,学习是识别情境之间的相似性,从而推断其他相似性。类比推理者是一个松散的部落,他们只在把相似性判断作为学习的基础上团结一致。他们领先的学习算法基于支持向量机,帮助判断不同事物之间的相似性。道格拉斯·霍夫施塔特等一些认知科学认为类比是认知的核心。
值得注意的是,每种类型的机器学习都需要程序员某种程度的监督,程序员提供训练数据来生成程序,并对其参数进行调整以改进模型。这种监督可以以监督学习的形式出现,其中程序员为每个输入提供正确的输出,强化学习其中程序员为学习算法采取的行动定义奖励,以及无监督学习其中学习算法在没有已知输出或奖励的指导下对输入数据进行操作。一旦程序员认为生成的程序令人满意,就可以更广泛地部署它。
Domingos 推测这五个部落可能会联合成一个能够学习任何东西的“主算法”——他最喜欢的 AGI 之路。在未来,有了足够的数据和知识作为输入,这样的主算法就可能存在。与此同时,现有部落将推进他们的学习算法,将它们彼此结合,或者看到新部落形成学习算法的新范式。无论如何,机器学习将继续在解决问题方面取得令人眼花缭乱的进展,让我们重新思考机器的能力。
随着人工智能的不断进步,我们可能不可避免地在自然和人工智能的各种根源之间循环,以阐明新的能力。人工智能经常被拟人化的问题将继续存在,因为我们几乎自动地认为它是我们所知道的智能类型:我们自己。虽然人工智能采用了一系列受自然智能启发的问题解决技术,但它与生物大脑的运作有着有限的相似之处——生物大脑涉及意识、感觉和意志等。直到有一天智能代理实现了这些更高阶的特征——这种可能性正在激烈辩论——人工智能最具生产力、最具反思性和最诚实的表现是将其视为另一个人工制品家族;人类使用的一套工具,可以达到积极或消极的目的。
从计算机科学的角度看人类智能的本质
我对人工智能的长期未来非常好奇。更好地理解人类智能可能是预测人工智能未来的关键。多亏了旧书和最近的研究,我的想法和预测在过去几年里有了很大的发展。我现在相信强 AI 会实现。
关于人类的智力,我现在认为下面的陈述可能是正确的。其中一些只是猜测。(为了简洁起见,在本文的其余部分,我将省略“可能”和“依我看”这两个词。)
- 所有或几乎所有的人类智能都可以被认为是某种形式的计算或数据输入/输出/存储。
- 人类的智力不仅仅来自大脑。实际上,几乎人体的每一部分(甚至细菌等。)在人类智力中起作用。
- 整体远大于部分之和。例如,每个细胞本身的智能有限,但结合在一起,就可以实现巨大的智能。
- 多级并行计算是关键,这种并行性甚至比全是 GPU 的数据中心更令人印象深刻。
- 计算是分布式和分散式(像区块链😜);没有集中的组件。人类无法模拟 CPU 控制整台计算机或主节点控制一群计算机。
- 递归/反馈 循环/自我提升在多个层面上也很重要
- 注意和抽象机制大大减少了所需的计算量(即,它们提高了每个计算单元的性价比)
- 人类大脑/身体的部分执行计算机科学算法或数学运算的方式有很多
- 人类智能利用机器学习算法和逻辑推理(符号计算等)。)
- 使用当前的计算机硬件架构很难实现人类智能;一定有更好的方法。人类的身体/大脑以一种普通计算机(目前)无法做到的方式利用生物、化学和物理。
让我们更详细地探讨这些要点。
智能只是计算和数据输入/输出/存储
换句话说,我相信 功能主义 。我认为拒绝功能主义意味着你需要相信一些灵魂的概念或者其他一些非有形/非物理现象(你永远无法证实)。这关系到人类意识的本质。一个很好的概述,见 我们正在解释意识吗?(丹尼尔·丹尼特 2001 年论文)。
智力不仅仅来自大脑
我过去认为所有的智力都来自大脑,但现在我认为那是错误的。让我们来考虑一个思维实验:如果我们能够通过外科手术取出我的大脑,并将其植入一个机器人的体内,我会有同样的思维/行为/感觉吗?不,我不这么认为(除非我们有先进的技术,可以合成功能和人体完全一样的机器人)。
换句话说,我们的身体是我们智力的一部分。例如,最近的研究表明[肠道及其微生物群对大脑和人类行为有重大影响。在任何电信号到达大脑之前,触摸热表面的手指会立即缩回。白细胞在没有大脑指令的情况下对入侵者发动战争。细胞四处移动,释放化学物质,并遵循类似计算机程序(DNA)的东西进行复制。细胞无意识也没关系;它们有助于提高人类的整体智力。另外,你知道吗](http://The whole is much greater than the sum of its parts.)一个单细胞可以解决迷宫和困难的计算机科学问题?
人类不仅仅是通过读书或听讲座来获得智力。通过所有感官和感觉(有意识地和无意识地)来感受世界,有助于人类理解世界并在世界中明智地行动。
整体远大于部分之和
一个人仅仅是 应急塔 的“动物”级别,其中每个级别都是由它下面的级别的几个实例组合而成的。

from https://waitbutwhy.com/2019/10/idea-labs-echo-chambers.html
一个有趣的类比是,一个蚁群总体上比每个组成蚂蚁的智力总和要聪明得多;这也许是在著名的《德尔、埃舍尔和巴赫》一书中最有趣的描述。
相关的概念有 群体智慧 和计算机科学概念,如进化算法、、、、计算社会选择、图形计算和神经网络(其中多个神经网络组合可以比每个组成网络的智能的简单总和更“智能”或更有用,一个网络可以被认为比
并行计算
如果我们假设人体中的大多数细胞都可以被视为具有某种计算能力(单个细胞本身可能是愚蠢和缓慢的,但这不是重点),那么这意味着一个人可以同时进行数十万亿次计算(在并行)。与传统计算机相比:
- 传统的 CPU 一次只能处理一件事情。
- 多线程 CPU 可能能够同时处理 64 次计算。
- 一个像样的图形处理器可能能够处理成千上万的同时计算。
- 一个装满 GPU 的数据仓库可能能够同时处理 1 亿次计算。
并行计算是关键,因为它允许人类例如非常快速地对事物做出反应。例如,如果你看到一个物体朝你的头部飞来,你会立即试图躲闪,而不是在行动前逐个处理每个视网膜细胞的数据。当然,人类无法将高效的并行处理应用于任何任意计算;人类(通过进化)被设定为只在特定类型的任务中很好地使用并行处理。
分布式和分散式计算
这对整个身体和大脑都是正确的。如果我们把每一个计算单元(例如,一个细胞、一个器官、一片大脑)看作一个个体代理,那么这些代理既是竞争又是合作。在任何给定的时间,你的直觉可能会与你大脑的一部分竞争,以决定下一个感觉/想法/行动,而你大脑的一部分可能会与另一部分合作,以形成更完整的思想,然后与大脑的另一部分竞争,以进入你的意识并主导你的思想。这种合作和竞争机制使得整体大于部分之和(如上所述)。
有些人会认为丘脑/前额叶皮层充当中央处理器,但这是有争议的。
递归/反馈循环/自我提升
至少有两种方法可以应用这个概念。
- 大脑似乎被设置来执行需要递归逻辑的任务(例如,说出或理解像“彼得知道爱汉斯的玛丽亚联系了约翰”这样的短语)
- 大脑能够自我提高。即部分神经可塑性是通过大脑改变自身(间接?).例如,有一些想法可以导致一些酶被释放,然后导致突触数量和突触连接的变化。
我有一种感觉,反馈回路也在其他方面发挥作用。
顺便说一下,很多人认为自我完善的 AI 是更好的 AI(以及有意识的 AI 和强 AI)的关键。从实用的角度来看,编写或帮助编写人工智能软件的人工智能是一个很好的例子(正如 Keras 的创造者 Franç ois Chollet 所认为的那样)。
注意力和抽象
人类擅长最小化浪费的计算。这是进化的自然结果。一个人的视野中可能有 10 个物体,以及关于这些物体中每一个的 10 个细节。但是人类自然会 1。将注意力限制在这些物体中的一个上(例如,有吸引力的潜在伴侣或飞向某人面部的危险岩石)和 2。对物体做一个简单的抽象,同时忽略细节(例如,理解它是一个危险的、快速移动的物体——无需考虑岩石上的确切形状或图案)。注意力和抽象机制有时可能是弱点(例如,有时人类过早地得出结论或掩盖重要的细节),但大多数时候它们对人类的智力有积极的贡献。
计算机可以使用类似的方法。著名的 2017 年论文 注意力是你所需要的全部 引领了自然语言处理的巨大进步。2018 年的论文 世界模型 描述了使用神经网络创建抽象的世界模型的进展,这些模型在计算上是可处理的,并与其他神经网络相结合,以很好地执行任务。
计算机科学算法和数学运算
例如,耳朵放大某些声音频率,然后充当多个带通滤波器将声音分离成分量。视觉皮层执行多层卷积(有点像将像素汇集在一起),这启发了卷积神经网络(CNN),它是现代人工智能图像处理的核心部分。(参见深度学习书籍第 358 页的卷积网络的神经科学基础。)
你可以将这种现象视为“身体使用这种数学方法”,或者反过来,你可以说“这些数学模型描述了身体的功能”或者“这些算法受到生物学的启发”,但我认为你选择哪种观点并不重要;我的主要观点是,身体可以做有助于人类智力的很酷的事情。
关于这方面的更多信息,请查看 2012 年的论文 受生物过程 启发的计算算法。
机器学习算法和符号推理
概括地说,有两种主要的人工智能方法:
- 统计机器学习(从数据中学习,例如通过查看许多带标签的照片的像素来学习区分猫和狗)
- 符号 AI /逻辑推理/ 计算机代数(例如将 2y=x 操纵成 y=0.5x 或者从“所有人都会死”和“约翰是人”推导出“约翰是人。”)
我认为人类使用以上两者的某种形式。仅用上述之一不足以解释人类所展示的智慧。如今,统计机器学习通常通过受人脑启发的神经网络来实现。至于符号人工智能,我想人类也必须能够使用类似的东西,因为人类显然能够进行代数运算,并很快进行逻辑推理。
问题是,我们到底如何结合#1 和#2?有许多可能的方法。比如看这个视频:通过溯因学习桥接机器学习和逻辑推理 (2019)。在这种方法中,“机器学习模型学习从原始数据中感知原始逻辑事实,而逻辑推理能够纠正错误感知的事实,以改进机器学习模型。”人类的大脑也做类似的事情吗?也许吧。另一种方法是 OpenCog ,它包括符号人工智能和神经网络,作为一个更大的连接“超图”的一部分
利用现实世界中的生物、化学和物理
一个可笑但很能说明问题的例子是意大利面条分类算法,它可以由人来实现,但不能由没有实体的计算机来实现。该算法包括拿着一串不同长度的未煮过的意大利面条棒,然后将这串棒重重地摔在桌子上。人类可以以 O(n)时间复杂度按长度对棒进行排序。相比之下,对一列数字排序最快的计算机算法是 O(n log n),这就更差了。计算机不能利用例如重力,重力持续地同时作用在所有的杆上(平行)。当然,你可以用计算机来模拟重力对所有物体的影响,但是这在计算上是很昂贵的。

A human performing Spaghetti Sort
类似于意大利面条的是 DNA 计算。“DNA 计算的力量来自于它能够对试管中的内容同时执行相同的操作……操作可以并行执行而不会增加成本”(摘自本文)。****
换句话说,现实世界(人体内)发生的事情(被认为是计算)自然是大规模并行的(全部同时发生),这是人类相对于传统计算机的巨大优势(传统计算机自然会一个接一个地处理事情,并产生成本来实现并行性——与现实世界相比,并行性相形见绌)。
以上可能是通过电子硬件实现强 AI 的最大挑战(如果我们不去猜测用量子计算实现 AI )。
关闭
我对人类智慧了解得越多,我就越欣赏它所能做的一切。但是随着与神经科学和人工智能相关的令人敬畏的研究的泛滥(我们才刚刚开始),并且由于我们对人类智能机制的理解越来越好,我确实相信机器智能最终将能够复制或取代人类智能的许多方面。不确定确切时间。****
放弃
- 我不是这些话题的专家。我只是一个随机好奇的家伙。
- 我有意避免讨论智力的定义;这可能是一场漫长的哲学辩论。你可以选择它对你意味着什么,希望以上仍然有意义。
NBA 的下一代
利用数据和机器学习分类建模预测下一代 NBA 球星。数据能告诉我们一些我们的眼睛看不到的东西吗?

Sacramento’s De’Aaron Fox is quickly becoming the NBA’s best PG.
在这篇文章中,我将看看分类模型在试图预测某个特定的 NBA 球员是否可能达到某个基准时的表现。这是我用数据预测 NBA 球员表现系列的第二篇文章。在我之前的文章中,我观察了某些球员如何从缓慢的起步到他们的 NBA 职业生涯,再到成为爆发的明星。我进行了一些基本的探索性数据分析,以了解一名球员的选秀状态(轮次和选秀权)与他未来的表现有何关系。我使用诸如 PER(球员效率等级)和 win share (更具体地说是每 48 分钟比赛的 win share)等指标来衡量未来的表现。我观察了这些从第一轮选秀权到第二轮选秀权的变化,以及它们从一个选秀班到下一个选秀班的变化。从那里,我们能够做出一些统计推断,关于球员如何进步,球队如何根据他们在哪里被选中来对待和评估球员,以及在分析中是否有一些偏见。我想扩展这些发现,更具体地说,看看我是否能预测一个特定的球员在给定的赛季中是否会达到特定的上场时间和场均得分。我选择检查的阈值如下:我想预测一个给定球员在一个赛季中打超过 1000 分钟并达到 20 的 PER 的概率,假设他在他的前两个 NBA 赛季中没有达到这些基准。
让我们花一分钟思考一下,对这种类型的结果进行建模可以实现什么。让我们以斯蒂芬·库里为例。如果模型预测斯蒂芬·库里永远不会打满 1000 分钟,并且 PER > 20 和,那么我们观察到他永远不会打满 1000 分钟(这被归类为真阴性)……好的,模型做得很好。但它应该能够做到这一点,事实证明,在数据集中,只有 8%的玩家做到了这一点(稍后将详细介绍)。因此,该模型可以很容易地预测玩家永远不会达到阈值,并且在 92%的情况下都是正确的。因此,高度准确地预测负面结果是毫无意义的。现在,如果模型预测斯蒂芬·库里将达到 1000 MP,并在未来的某个时间点有一个 PER > 20,而他实际上没有达到那个值(这是一个假阳性)。这在 NBA 是很平常的事情。一个队在一个球员身上打赌,他没有实现他们的希望。这并不理想,但也在意料之中。这是我们想要最小化的东西,但它不是最坏的结果。我们真正想要避免的是假阴性。这是当我们预测斯蒂芬·库里不会达到 1000 MP 并有一个 PER > 20,然后他就变成了,…斯蒂芬·库里。这是我们需要训练模型不惜一切代价去避免的。让一个超级巨星出现在你的花名册上已经够难了,但是把他误认为超级巨星,然后把他交易走或者不让他辞职是灾难性的。
因此,我现在需要设置参数来衡量球员,然后尝试看看是否有可能创建分类模型,让我们预测某个特定球员是否可能达到分类阈值。首先让我简单描述一下分类模型中发生了什么,然后我可以讨论我在创建模型时所做的一些假设。
分类模型通常(在这种情况下)用于预测特定目标变量的二元结果。如果模型为相应的目标变量生成了超过阈值(在此特定情况下为 0.5)的概率,则它将该目标变量的实例分类为 1。如果生成的概率小于阈值,则它将目标分类为 0。然后,我们可以检查这些分类与实际观察数据的匹配程度,以了解模型的准确性。
退一步说:我正在看 2007-2019 NBA 赛季的高级指标数据。我选择那个时间段的原因是因为 2006 年是 NBA 第一年要求进入选秀的球员必须高中毕业一年。我想找到一种有趣的方式来研究如何预测那些在进入联盟时不是“立竿见影”的球员在接下来的赛季中会如何提高。从那里,我观察了哪些球员在前两个赛季中上场时间超过 1000 分钟,PER > 20。如果一个球员在联赛的前两个赛季取得了这样的成绩,我认为他们是有直接影响力的球员。自 2007 年以来,只有 6 名球员在新秀赛季取得过这样成绩:凯里·欧文、安德烈·德拉蒙德、安东尼·戴维斯、卡尔-安东尼·唐斯、米切尔·罗宾逊和迪安卓·艾顿。对于二年级球员来说,名单略显强劲:欧文、德拉蒙德、戴维斯和唐斯都重复了这一壮举(罗宾逊和艾顿是 2019 年的新秀),凯文·杜兰特、凯文·乐福、布鲁克·洛佩斯、布雷克·格里芬、格雷格·门罗、德马库斯·考辛斯、鲁迪·戈贝尔、尼古拉·约基奇、约翰·科林斯和托马斯·布莱恩特都加入了这一组合。我从我的数据集中删除了这 16 名球员,然后看看哪些球员能够在职业生涯的后期达到这一指标(> 1000mp & > 20 PER)。然后我找来所有其他球员,查看他们未来 5 年的比赛数据。这是第 3-7 季,决定了他们是否能够在特定的季节达到 1000mp 和> 20 PER 基准。(注意,我希望所有玩家都有一个一致的时间表)。我发现还有 82 名球员在第一年或第二年后达到了这些里程碑。然后,这些玩家在我的目标栏中被标记为 1。这意味着他们是能够达到这个标准的玩家。
使用这些参数,我创建了数据集来训练和测试我的模型。这个数据集只包含 2007-2019 年所有其他 NBA 球员的新秀和大二赛季,但是为了保持一致,并允许每个被测试的球员都有五年的数据来达到基准,我只能使用 2006-2012 年选秀的球员。因此,2013 年还是新秀的球员将在 2019 年完成他们的第 7 个赛季(新秀和大二赛季+ 5 年额外时间)。下面是它是如何分解的。

这渲染了 490 个独特的玩家来建模。在这一点上,需要注意的是,我从 2015 年、2016 年和 2017 年的草案中删除了所有球员,并将他们放在另一个数据集中,我稍后将使用该数据集为我的模型提供真正的测试样本。(在这一点上,如果对数据细节感到陌生或不知所措,可以跳过建模部分的细节,直接进入下面的结果部分)
建模
现在我开始建模过程。我将 PER 从数据框中移除,并进行简单的逻辑回归。很明显,我的数据在我的目标少数群体和目标多数群体之间太不平衡了。因此,我决定使用一个随机通用采样器来平衡我的班级。在平衡了少数群体和多数群体之后,我调整了我的数据,并开始训练八个不同的分类模型。
- 逻辑回归
- 随机森林分类器
- 决策树分类器
- 装袋分级机
- k 近邻分类器
- AdaBoost 分类器
- 梯度推进分类器
- 支持向量分类器
正如我们上面谈到的,当进行预测时,一个特定的玩家有四种可能的结果。玩家可能以真阴性、真阳性、假阳性或假阴性结束。我们应该被提醒,我们正试图将假阴性最小化。我们如何测试这个?通过使用所谓的F1-分数。F1 分数计算精度和召回率之间的调和平均值,并由以下公式表示:

此时你可能会问。假阴性真的比假阳性更糟糕吗?我认为这是一个见仁见智的问题。当与一位朋友讨论结果时,她指出每个假阳性都是从一个潜在的真阳性中获得一个名册位置,因此在合计假阳性的真实成本时,需要考虑机会成本。然而,这似乎是真的,考虑到这种水平的球员是多么的罕见,把他们错误的归类并让他们成为一个错误的否定是更令人震惊的。在这一点上,我认为首要目标应该是确保你确定你的花名册上的所有或大多数球员证明有能力达到> 20%和 1000 MP 的分类水平。
下一步是通过 GridSearch 运行每个模型,以确定最佳调整参数,使每个模型以最高水平运行。(如果这对你来说毫无意义,不要担心,这对理解正在发生的事情和实际结果并不特别重要。)从那里,我通过每个模型运行我们的训练和测试数据(从我们的整个原始数据集中获取的两个不同的样本),以生成准确度分数、F1 分数以及真阳性、假阳性、真阴性和假阴性的数量。

Results for each classification model: train & test columns correspond to the R² score for each model
上表显示了我们上面列出的不同分类模型的结果。您可以看到,除了逻辑回归和支持向量分类之外,所有模型中的假阴性数量都显著减少。所有其他模型没有返回假阴性和梯度增强分类器,并且 AdaBoost 分类器具有最少数量的假阳性。
我们发现了什么?
最后,我想看看这些模型在全新数据上的表现。我回到真实的测试样本,对这组数据运行每个模型。记住这是 2015,2016,2017 选秀的球员。我想看看,模型预测谁会达到我们的分类阈值。在所有被测试的球员中,只有 8 名球员被每个模型预测为真实,1 名球员(贾马尔·穆雷)被 6 个模型预测为真实,本·西蒙斯、布兰登·英格拉姆和扎克·科林斯被 5 个模型预测为真实,而一大批球员被 4 个或更少的模型预测为真实。让我们更详细地看看分类模型的汇总结果。

*Note ignore the index number on the left **Note2 this is showing Draft Year + 1 so a player with a value of 2016 was part of the 2015 NBA Draft.
乍一看,一些有趣的事情跃然而出。所有模型的聚合预测似乎很好地捕捉了所有可能(或已经)达到分类阈值的参与者。接下来,看看所有 8 个模型对 2 个或 3 个模型预测了哪些球员,肯定令人惊讶。像多诺万·米切尔、德文·布克和克里斯塔普斯·波尔津吉斯这样的超级明星在所有车型上都表现出色,而最近的突破明星如安杰洛·罗素和帕斯卡尔·西亚卡姆则不那么成功。下一个任务将是更深入一点,找出是什么驱使米切尔比本·西蒙斯表现得更好,或者比杰伦·布朗表现得更好。也许根据每个球员新秀赛季和大二赛季的累计首发次数来建模比仅仅根据大二赛季来建模更有效。也许只使用特定的度量标准会产生更有希望的结果。下一步将是更全面地调查哪些特征在预测结果中起着最大的作用。例如,是什么原因导致 Jakob pltl 被三个模型归类为真,而 Russell 只在一个模型上表现良好。
最后,我们需要得出一个结论,在评估一个球员的时候,PER 到底有多有价值或者重要。我们希望确保我们试图预测的指标有价值,它们是重要的,并且它们使我们能够更好地判断球员的表现和价值。下一次,我们将看看数据集构造中的操作和模型使用的特征中的操作如何影响预测。我们也可以试着分析这些类型的预测在球员中是如何变化的,这与他们在选秀中被选中的位置有关,甚至可能与他们被哪个队选中有关。

The chart above shows the distribution of players who improved their annual PER by more than 4 points from year t-2
上面的图表显示了从赛季(t-2)以来 PER 提高了 4 分或更多的球员的分布。你可以清楚地看到,成为前 5 名选秀状元在你的进步可能性中发挥了重要作用,但一旦你超越了前 5 名,这种影响就不那么明显了。这是我们可以看到的更深层次的含义:在第一轮和第二轮的选秀权中,取得这种进步的彩票选秀权的比例是多少。到目前为止,从这项调查中获得了大量有用的见解。请继续关注我,因为我希望在未来的帖子中发现更多的发现。
此外,请随时查看我之前的帖子“何时放弃?”了解更多关于 NBA 数据的灵感来源的信息。
我绝不是想暗示门罗、科比和柯林斯处于其他球员的水平,而是说他们只是碰巧在 PER 指标上表现特别好。我们可以同意或不同意 PER 指标的重要性,但这不是我在这里试图做的
数据驱动的必要性:自然语言处理案例
算法可以创造奇迹,但前提是你要记得给它们喂食

Photo by Nick Fewings on Unsplash
自然语言处理(NLP)对人类来说非常直观,但对计算机来说并非如此。“计算机能像我们一样理解吗?”这个古老的哲学问题。在 NLP 方面变得非常具体。对于这个具体的例子,我们可以问“计算机理解‘汉堡’和你尝过并拿在手里的实际美味之间的关系吗?”或者我们可以更进一步:计算机能区分“汉堡”和“披萨”吗?它能理解两者之间的相似之处吗?为了给出这个问题的答案,我们需要后退一些步,考虑我们实际上试图告诉计算机什么,以及我们如何告诉它(我们到底能不能称之为“它”?).
自然语言,在这种情况下是英语,已经将单词“burger”与这道菜联系起来,这就是我们给计算机的输入。这种语言对我们来说是自然的,但对计算机来说不是。总的想法是,单词的转换是将每个字符转换成 ascii 字符,然后转换成 1 和 0 的组合。有人可能会说,现在计算机有了它的 burger 版本,就像从一种自然语言到另一种自然语言的任何翻译一样。如果我们想做更复杂事情,比如创建表达式或短语,甚至更糟:创建整个文档,那么这就足够了。
在我最近被分配到的一个项目中,简单地说,这是一个基于与单个文档的相似性对一组文档进行排序的问题,我第一次体验到了应用 NLP 技术解决现实生活中的问题。这是机器学习的一个激动人心的分支,如果不是最激动人心的,但它带来了很多挑战,其中最主要的挑战是正在使用的数据的数量(和质量),在进行机器学习的激动人心的阴影下,没有得到足够的重视。随着项目接近(令人满意的)尾声,我得出了几个我认为值得分享的结论。
预处理的常规演练:
如果你曾经读过任何不从预处理开始进行文本分析的文章,请一定把它发给我,因为我还没有找到这样的文章。背后的原因是因为这是基本的,也是整个过程中最重要的步骤之一:清理文本并使其尽可能地更容易被计算机理解是在这个领域取得相当好的结果的关键。

Two documents for the input
- 转换为小写:将所有文本转换为小写的简单任务,以使其余的分析更容易
- 标点符号和奇怪字符的去除:这两者都被认为是无信息的,因此从我们要分析的文本中去除
- 标记化:将你的文本分割成由单词或句子组成的列表的简单过程
- 停止单词移除:在每种语言中都有一组(某种)预定义的单词,这些单词被认为与任何类型的文本分析都无关,例如‘我自己’、、【他们】、、【the】等。NLTK 为不同的语言提供了一个非常通用而有用的停用词列表。
根据手头的任务,您可以添加自己的一组与您的分析无关的关键字,从而消除数据中的一些干扰,这更有可能使您的工作取得更好的结果。事实证明,这也是占用我们大量时间的要点之一:这是一项人工任务,对您正在考虑的文本类型进行阅读和推理,您可以评估哪些单词没有添加任何相关信息,以便机器能够理解。多花些时间寻找这些关键词,往往会带来更好的表现。

NER visualization
NER(命名实体识别):定位和分类命名实体(如位置、人名、组织、数量等)的子任务。).一些提供这种服务的图书馆有 NLTK、Genism 和 SpaCy。
- 词干化:将屈折词或派生词还原到其词根的过程,也称为词干化。例如鱼、鱼、渔夫都沦为干鱼。提供这种服务的图书馆有 NLTK、Genism 和 SpaCy。
- 词条释义:是通过对词的形态分析,提取该词的词条的过程,其中词条是该词的词基或词典形式。提供这种服务的图书馆有 NLTK、Genism 和 SpaCy。
The pre-processing steps
- 单词嵌入:这是最棘手也是最关键的部分,但是这个奇特的术语是什么意思呢?这很简单:用数字形式表示一个单词。做这件事的方法有很多。
单词嵌入:单词包

The ever classic example of most NLP academic slides
BOW 表示的简单思想是在一个 D 空间中表示一个 D 单词的字典,其中每个单词由一个配置表示,只跟踪多样性。平均而言,每种语言大约有 171,576 个单词。新词产生得相当频繁,这只能意味着一件事:词空间表征的增加。这种表示还有另一个流程:考虑 4 个单词的字典[ 猫、女士、胳肢、女王 ]的情况。在 BOW 表示中,我们会有一个类似于[1000,0100,0010,0001]的表示,它看起来是正确的,但事实上它并没有包含任何关于单词语义的信息。从这样的表述中,很难理解“女士”和“女王”这两个词比“猫”和“挠痒痒”更接近。如果我们想增加这些词的运算的复杂性,它只能提供非常有限的表示。然而,这种单词嵌入方法不需要训练,因此也不需要语料库。
它的力量在于它的简单。
单词嵌入:TF-IDF
可以认为 BOW 的下一步是语料库文本中单词的 TF-IDF 表示。

它的主要目标是给出文档(D) 的集合中文档(d)* 的项(t) 的重要性。*
词频:在文档 d 中出现一个词 t

Term frequency
逆文档频率(IDF) :用简单的英语翻译,它是考虑到可用于训练的整个文档集合的术语频率的倒数。

Inverse Document Frequency
知名库 sklearn 就有这种单词嵌入的实现。与几乎所有其他实现一样,一旦理解了作为输入给出的参数是什么,就很容易使用了。有趣的是,你可以定义自己的 记号化 函数并在起点转弯,你可以随心所欲地定制预处理步骤。一旦定义了记号赋予器(也可以使用默认的记号赋予器),只需两行代码就可以获得数据的数字表示。
在这种情况下,我们只使用 TF-IDF 矢量器的三个特征:我们的定制标记器、术语频率的归一化和 max_features ,换言之,转换的特征数量的上限是我们表示的维度。

我们得到的输出是一个矩阵,其行数等于训练集上的文档数,列数等于我们保留的特征数(max_features_ = 10),其中特征是指文档中具有最高 TF-IDF 分数的术语。

Top 10 features of the training documents
提取的特征是具有最高分数的术语,这意味着这些术语在表示我们提供给模型的文档时是最相关的。一旦你有了这个文档的数字表示,其中每个文档通过这 10 个特征来表示,在我们的情况下,在矢量表示中指示位置 i 的特征在文档中出现了多少次,你可以用它做任何事情,在我的情况下,计算文档之间的相似度。

一旦我们有了 TF-IDF 模型,我们就可以通过它向量化任何其他文档。

Vectorial representation of the dummy document
虚拟文档的表示是通过 4 个关键字来完成的:特征、提取、爱情、人物准确的说是它们各自的权重。
只需两行代码,您就可以计算矢量化文档之间的余弦相似度。

在这种情况下,虚拟文档更类似于 DFW 的经典文章,而不是对我来说听起来相当不错的特征提取解释。
我们比 BOW 更进了一步,我们至少考虑了术语的出现,我们还可以通过 max_features 参数控制表示空间的维度。然而,我们还不能把我们教给计算机的术语的意义联系起来。然而,它是文本挖掘任务中使用最多的方法,数字图书馆中超过 83%的基于文本的推荐系统使用 TF-IDF,而不是过于花哨的方法【1】。
单词嵌入:Word2Vec
顾名思义,这是一种将单词转换为向量的方法。BOW 和 TF-IDF 的根本区别在于,在这里,我们在将矢量表示与单词相关联时,会考虑单词的含义。简单来说,这种单词嵌入方法是一种只有两层的浅层神经网络,旨在学习单词的语言上下文。在这种情况下,两个词女士和女王会有相似的表示。然而,这种方法需要一个 大型语料库 当你有一个特定的问题试图应用它,而几乎没有数据来训练它时,这就成了一个问题。根据所使用的架构,它可以有两种类型:

Example with a window of 2
- CBOW(连续单词包):给定一个单词周围的那些(窗口),对该单词的预测。基于期望单词周围的一组单词,它试图预测期望单词 w(t) 。这种单词的预测是基于对我们提供给模型的语料库的学习过程,因此模型看到的情况越多,它就越好地理解单词之间的关系,并且此后能够更好地预测可能的 w(t)。
- Skip-grams :给定单词 w(t)周围单词的预测。在这种情况下,我们做相反的事情:给定一个单词,我们预测可能围绕它的单词。按照同样的推理,即使在这种情况下,我们提供给模型的语料库越大,预测就越好。
如果你想更多地了解这最后两款 这里的 是一篇有趣的文章。
当神奇的词“神经网络”被包括在对这种方法的一个短语解释中时,人们不会对随之而来的大量大量数据的必要性感到震惊。即使对一个人来说,学好一个概念,记住趋势和线条,一次又一次地重复它们是关键:这种模型也是如此。
现在怎么办?
此时,您已经有了非常强大的 NLP 工具,但是我们该如何利用它呢?如果你是一只好奇的猫,你会从测试一两个库的小代码片段开始,并对人类迄今为止在教机器我们的语言方面取得的成就感到惊讶。大多数情况下,直到你手头有一个具体的问题,你才开始面对现实,这些方法是多么有限。为了能够获得我的项目所需的排名,我首先需要计算文档之间的相似性,并计算相似性,我需要以数字形式显示这些文档。这不仅仅是获得一个文档的数字表示,还需要获得一个优化范围的表示,在我的例子中是为了获得最好的排名。
最大的限制是可用的数据量
几乎在任何机器学习算法的每个应用中,都需要大量的数据,这种情况也不例外,如果有什么不同的话,这比大多数情况下更重要。这种大量数据的必要性背后的根本原因是一般化的需要:如果 ML 能够一般化,并且能够正确处理新的、看不见的测试数据,那么它就被认为是一个好的 ML。为了达到一个良好的概括点,模型首先需要看到尽可能多的数据,这样它就不会只关注少数情况,并围绕这几个情况进行自我塑造(你好,过度拟合,是你吗?).
在现实世界中,最具挑战性的问题是经常面临的:手头的数据非常少。手头只有不到 100 个样本需要排序(一旦该解决方案投入使用,至少会达到 1000 个),我站在一个可能的解决方案板前。第一步,一个非常雄心勃勃的(回头看也相当愚蠢的)是做大:从 Doc2Vec 这样的东西开始,相当于文档的 Word2Vec。从一开始就知道这是一种不可能的方法,训练一个只有 100 点或更少的神经网络,并期望它学习得很好,能够根据这几个案例将文档表示为向量是不现实的。结果你可能想知道:我能够生成我曾经工作过的最不稳定的模型。它不仅不擅长学习我正在寻找的表示,而且也不能产生一个稳定的模型:删除或添加单个文档会导致不同的结果。
意识到这一点后,我回到了可能的解决方案,并开始考虑那些在开始时被丢弃的解决方案,主要是因为它们的简单性,即 TF-IDF。它的效果比我测试过的其他产品都要好:令人震惊,不是吗?谁会想到广泛使用的方法也能很好地解决我的问题。有人可能想知道“工作得更好”是什么意思:对于这个问题,我们没有使用传统的度量标准,所以“99%的准确率”不是我们在这里讨论的。现在,解决方案的评估是基于人的,在某种意义上,结果被呈现给该领域的人类专家,并且他们表达他们对文档的排序有多满意。当然,对于初学者来说,度量标准的定义还有很大的改进空间,因此解决方案的评估甚至可以更加自动化,但是从公司的角度来看,这种解决方案的效率是自动化过程的成本降低:事实上,所提出的解决方案实现了这一点。
这个故事的寓意
当事情出了差错或者就在旅程的终点时,最好的办法是找到故事的寓意,从你的错误中学习,这是我从我的错误中学到的:
数据的力量不可低估
一个没有数据的数据科学项目就像一条没有水的鱼,这里的数据指的是大量的数据,我指的是成千上万的数据。你可以生存几秒钟,你可以体验这种新的令人兴奋的生活,但就像一条鱼没有水可以生存大约 4 分钟一样,你的项目也是如此。只有很少的数据来应用任何机器学习算法的要点是,你可以尝试,但你也必须知道,失败和获得没有价值的结果的可能性很高,非常非常高。尽管如此,试一试总是没问题的,只要你不在那上面花上几天时间,在那种情况下,那只是浪费时间。
简单方法的力量也不可低估
然而,很常见的是,你必须处理很少的数据,这意味着你必须找到一种方法来处理这种情况。除非你有很多很多的数据,或者在一个巨大的语料库上为你工作的预先训练的模型,否则可以被认为是经验法则的是一条: 先用简单的方法 。虽然使用流行词汇可能很时髦,虽然玩这些非常复杂的模型可能很有趣,但如果获得的结果不令人满意,并且您只是在浪费时间,那么这可能会适得其反。使用像 TF-IDF 矢量器这样的简单方法可能听起来非常基础,可能不会引起太多的注意,但大多数情况下它确实有效,最终这才是最重要的。

Photo by Franki Chamaki on Unsplash
三国网络

剧透提醒:以下包含关于小说《三国演义》及相关系列的剧透。
最近,我开始看中国电视剧三国。这部电视剧并不为西方观众所熟知,但我肯定会向任何喜欢历史剧的人推荐它。即使有时表演可能看起来有些夸张,我保证最后,这个系列不会让你失望。
当我第一次听说三国志的时候,我正在寻找《权力的游戏》结束后可以观看的新系列。我找到了几篇比较这两者的文章和帖子,称三国为中国的权力游戏。虽然在艺术基础上比较这两个故事超出了本文的范围,但这两个故事确实有几个共同的特点。两者都有错综复杂的情节,充满了阴谋诡计,辉煌的军事战略和英雄行为。此外,两者都有大量的人物,英雄和反派,他们在几个次要情节中相互作用,最终都与主要情节相连。
看完这部连续剧,我对它所改编的小说产生了兴趣。三国演义是一部 14 世纪的小说,出自中国作家罗贯中之手。与莎士比亚作品对英国文学的影响相比,它是中国最有影响力的文学作品之一。它也很长,英文译本长达 1500 多页。
所有这些都让我想起了安德鲁·贝弗里奇(Andrew Beveridge)和洁珊(Jie Shan)对《权力的游戏》(Game of Thrones)的精彩社交网络分析。受他们分析的启发,我想分析《三国演义》的社交网络。此外,还有成千上万的人物出现在小说中。我有我最喜欢的,但我想找到谁是真正的主角。这部小说的英文翻译在公共领域,可以下载进行文本分析。

Photo by Sokoudom Ung on Unsplash
分析
我的目标是识别小说中的角色之间的所有互动。利用这些互动,我将创建一个角色的社交网络,它可以用一个图形数学对象来表示。此外,我可以使用这个图表来计算中心性的措施,这将有助于我得出谁是主要人物,非常类似于贝弗里奇和山的分析。
相互作用
为了识别角色的交互,首先,我们需要定义什么算交互。在这里,我再次跟踪贝弗里奇和山,计算了当两个人物的名字出现在小说中时,在我们从文本中排除常见的英语单词后,他们之间的相互作用。实际上,我把数字 15,单词 distance,作为一个变量,我尝试了几个值;最后,我得出结论,对于这种分析,15 给出了很好的结果。
特性
既然我已经有了交互的定义,我就可以识别出相互交互的角色。但是在我的分析中应该包括哪些角色呢?包括小说的所有 1000+字符是一个选择,但我觉得这样一个大的网络将变得不可读,提供的信息比一个较小的网络少。因此,我找出了小说中 100 个被提及最多的人物。此外,我还列出了在关于这部小说的网站和文章中出现次数最多的人物。此外,我还创建了一个我最喜欢的角色列表。我合并了三个列表,并手动选择了我的最终列表的字符,由 70 个字符组成。
部分
正如我已经提到的,这部小说的篇幅很长。有些角色可能在小说的开头很重要,而有些角色可能只在小说的中间,甚至在最后几章才变得重要。为了更好地了解人物的演变,我们应该分章节研究这部小说。这样,读者可以更好地了解人物,并看到他们是如何在故事中发展的。我决定将小说的 120 个章节分成 4 个部分,并为每个部分创建一个网络。每一节由 30 章组成。在某种程度上,每一部分可以被认为是一本书,小说是一系列的 4 本书。
网络
文本的分析是用 Python 完成的。我的代码将每个部分的文本作为输入,并产生一个图形对象作为输出。接下来,我使用开放图形工具 Gephi 来创建我的网络的美丽可视化。
在每个网络中,字符构成网络的节点。每个角色都和他交往过的角色有联系。每个节点的大小表示该角色与其他角色的链接数量。链接的粗细表示两个字符之间的交互次数,因此交互次数多的字符将被粗链接连接。
此外,该算法识别字符中的社区。图中社区的正式定义超出了本文的范围。一个实用的定义是,一个社区的成员与她的社区的其他成员强烈地互动,但不像与其他社区的成员那样强烈地互动。网络节点的颜色表示角色所属的社区。
我们应该注意到,在小说中,一个群体的成员不一定是盟友或朋友。有时候,角色和敌人的互动比和盟友的互动多,所以被放在敌人社区。
中心性
最后,代码计算中心性度量,这有助于根据角色的交互来量化角色的重要性。
- 度中心性计算每个角色拥有的链接数量。这是计算角色重要性的最简单的方法
- 中间中心性显示了一个字符在多大程度上有助于连接网络中没有直接链接的其他字符。它测量一个字符在连接其他两个字符的最短路径中被找到的次数。
- 特征向量中心性通过人物与其他重要人物的互动次数来衡量人物的重要性。因此,一个与少数重要人物有许多互动的角色可能会比一个与许多次要人物 互动的角色得到更高的分数。
较高的分数表示所有三个中心性的重要性较高。我们将使用所有三个中心来确定一个角色的重要性,但不是所有的中心都给予相同的权重。我们认为特征向量的中心性更能决定一个字符的重要性。
接下来,对于小说的每个部分,我们展示了网络和中心性度量。我们给出了情节的概要,接着分析了网络和中心性。如果你想更紧密地跟踪故事,看看这个对所有章节的总结。

The network for chapters 1–30
第 1–30 章
第 1-30 章从刘备、关羽和张飞三兄弟在桃花源的誓言开始。董卓控制了首都,形成了一个反对他的军阀联盟,以袁绍为领袖。最终,将军吕布因为对少女貂蝉的争执杀死了董卓。皇帝落入曹操手中,他迁都于他的省份。另一个军阀袁术宣布自己为皇帝,但他很快被击败。最后,吕布在刘备的帮助下被曹操打败。他很快就被处决了。
后来,刘备加入袁绍。曹操与刘备作战,三兄弟一场战斗后失散。关羽,不知道他的兄弟发生了什么事,被说服加入曹操。关羽一听说刘备的下落,就离开了曹操。最终,三兄弟重新团结起来,并加入了赵子龙。袁绍决定进攻曹操,但他的无能使他输掉了战斗和他的庞大军队。
从一开始,我们就看到网络中出现的模式,这些模式在整部小说中反复出现。几个主要角色有最多的联系,他们是塑造网络社区的人。这些通常是争夺统治地位的军阀。次要人物有较少的联系,倾向于在他们的群体内建立强有力的联系,但与其他群体的联系没有那么多。这些都是大军阀的将领和顾问,或者有时候是对故事影响较小的小军阀。
该算法为小说的前 30 章识别 5 个社区。这里要注意的是,社区检测没有人工干预。如上所述,该算法仅基于网络特征的交互来识别社区。让我们仔细看看这些社区。
在第一个群体中(显示为紫色),曹操与他的顾问和他的将军们聚集在一起。很明显曹操是联系最多,互动最多的人物。这是因为他平等地与他的盟友和敌人互动。同样,其他角色被他吸引是因为他很强大。因此,他们要么想与他结盟分享权力,要么想把他拉下马,为自己夺取权力。
故事的主人公刘备和他的两个结义兄弟关羽、张飞在一起。和他的顾问们一起,他们形成了第二个社区(以橙色显示)。我们还看到,后来加入三兄弟的赵子龙,目前主要与他的第一个主公孙瓒有关。
另一个英雄在第一章中扮演了重要的角色。吕布与这部分故事的大部分主要人物互动强烈。他们和董卓一起组成了貂蝉之争的群体(蓝色部分)。袁术同样被放在群里,主要是因为他和吕布的强互动。
袁绍和其他小军阀组成第四个社区(显示为绿色)。这是参与联盟对抗董卓的军阀集团或者其他不太重要的支线剧情。然而,袁绍是这些章节中最强大的军阀之一,这在网络中可以清楚地看到。
最后一个群体(深绿色部分)是孙氏兄弟群体。在故事的这一点上,孙策和孙权都是重要的人物,但他们在自己的群体之外缺乏重要的联系。我们将在接下来的章节中看到这将如何改变。

Centrality measures for chapters 1–30
接下来,我们来看看中心性度量。不出所料,曹操独霸三大中枢。此外,他异常高的中间性表明他是连接故事各部分的角色。每个社区的军阀可能与其他社区的成员互动不多,但他们都有一个共同的敌人(或盟友),这就是曹操。
刘备是第二个更有影响力的人物,在所有三个中心性方面得分都很高。虽然在这些章节中他是一个几乎没有领地的领主,但他的特征向量中心性表明他与所有主要人物都有强大的联系。吕布也是如此,他的关系甚至比刘备还多一点,这可以从程度中心性上看出来。另一方面,他的中间中心性相当低,使他的总得分下降。
袁绍排在第四位,与关羽竞争,关羽有更少但更强大的联系。当然,袁绍在这几章之后很快就死了,而关羽在故事的后面会变得更有影响力。这里还应该提到孙权。他的度和特征向量中心性甚至没有进入前 10 名,但他在中间中心性方面排名第三。这意味着他的社区是通过他与其他社区联系在一起的。他显示了潜力,他可以在以后成为一个重要的角色。
总之,从第 1 章到第 30 章,曹操排第一,刘备第三,吕布第四。

The network for chapters 31–60
第 31–60 章
在第 31-60 章,袁绍对自己的失败感到非常沮丧,不久后就去世了。曹操彻底征服了北方,他的实力大大增长。刘备招募了大学者诸葛亮,他将是下一章的关键人物之一。另一个次要情节是,孙权在他哥哥孙策死后继承了南方。刘表死了,他的省份向曹操投降。
诸葛亮出师南国,说服孙权与曹操作战,结成孙刘联盟。果然,孙权心服口服,整装待发,任命周瑜为统帅。赤壁之战的准备工作开始了,而诸葛亮和周瑜正在努力设计巧妙的军事战术来对付敌人。曹操在赤壁大败。关羽虽然下令杀死曹操,却让他过关而逃。
曹操战败后,刘备终于可以建立自己的领地,真正的三国时代开始了。曹操让周瑜和刘备反目成仇。周瑜战败,伤重而死。在另一个次要情节中,张鲁在河间地与刘璋对抗。
该算法为第 31-60 章确定了 3 个社区。它们大致对应于互相争斗的三个派别。北有曹操,南有孙权,刘备还在想办法西进。
曹操依然是人脉最广的人物。他的社区(显示为紫色)包含了最多的角色。大部分人物都是他的将领和谋士。他与之战斗的小领主也包括在队伍中。
刘备的群体(橙色部分)由更少但更有影响力的人物组成。其中最重要的是他的结义兄弟关羽和张飞,以及他的将军赵子龙。此外,巡抚刘表也在其中。刘表生前和刘备关系很好,打算封他为省。他们有很多互动,所以算法把他放在了同一个组。
第三个社区是南国(显示为绿色)。尽管孙权是南国之主,但他并不是这个集团中最重要的人物。这个位置要么给周瑜,要么给诸葛亮。这里我们应该注意到,诸葛亮是在刘备的手下,但在这几章中,他大部分时间都在南国,计划赤壁之战。因此,他被归入南国集团。谋士鲁肃在集团内部也起着重要作用。

Centrality measures for chapters 31–60
从中心性来看,曹操仍然是第一名。曹操的中间居中度依然是亚军的两倍多。这意味着不同群体中的人物通过他联系在一起。他仍然是他的敌人和盟友的主要兴趣所在。另一方面,他的特征向量中心性得分不是最好的。反对曹操的主要人物相互之间有很多互动,创造了一个正反馈循环,增强了他们的特征向量中心性。
刘备再次屈居第二。不过这一次,他更接近曹操,他甚至在特征向量中心性方面获得了第一名。他是一个公认的领主,统治着三个王国中的一个,这反映在他的中央集权措施中。
除了顶级人物,最值得注意的是诸葛亮。虽然他在前 30 章中很少被提及,但他在特征向量中心性中排名第二,在其他两个中心性中排名也很好。诸葛亮是一位杰出的学者,所有的主要人物都被他所吸引。在接下来的章节中,他会得到更高的位置。
另一个值得注意的人物是周瑜,他的分数和诸葛亮差不多。他和许多角色都有联系,在这三个中心点上得分都很高。从书的前 30 章来看,他很像吕布。不幸的是,像吕布一样,他在这些章节的结尾失去了生命。
综上所述,还是曹操第一,刘备第二,诸葛亮和周瑜争第三。

The network for chapters 61–90
第 61–90 章
在第 61-90 章的开头,刘备虽然不情愿,但还是发起了反对刘璋的运动。他赢得了战斗,并将河间地置于自己的控制之下。曹操、刘备和孙权这三个领主现在都拥有重要的领土。三人之间的战斗开始了。首先,当孙权试图入侵魏时,孙权和曹操发生了冲突,但很快就和解了。后来,刘备向自称为魏王的曹操开战。刘备对曹操取得了一些胜利,其中之一是汉中郡。
关羽拒绝与南国联姻,这使孙权转而加入曹操而不是刘备。樊城之战,关羽被俘,被孙权处死。关羽死后不久,曹操也死了,留下他的儿子曹丕作为他的继承人,他自称为皇帝。张飞被他的部下暗杀,然后他的部下叛逃到孙权的身边。为了给死去的兄弟报仇,刘备攻打孙权。孙权臣服于曹丕,希望他能帮助对付刘备。刘备继续他的战役,但是被悲伤蒙蔽了双眼,他被打败了。他的健康恶化,他死了。刘备死后,诸葛亮与莽部落发生冲突,并取得了胜利。
该算法识别第 61–90 章的 4 个社区。三大派系几乎保持不变。第一个群体是魏国(显示为紫色),曹操是其领导人。曹操依然是人脉和互动最多的人物。这里的异类是关羽。关羽效忠的明明是刘备,算法却把他放在曹操的集团里。这是因为,在这几章中,关羽都在不断地与曹操作战。因此,他的大部分交往是与曹操的集团,而不是与他的派系。
第二个群体是刘备领导的蜀国(橙色部分)。显然,刘备是该集团的主要人物,诸葛亮是下一个重要人物。此外,黄忠将军在集团中有着至关重要的地位,主要是因为他在汉中战役中的贡献。
与后 30 章类似,孙权领导吴国,形成了第三个社区(以绿色显示)。除了孙权,梦露将军和谋士鲁肃是这个集团中最重要的人物。
最后,关羽的儿子广兴和张飞的儿子张苞组成了一个共同体(蓝色部分)。这些角色遵循他们自己的支线剧情,彼此之间有很多互动,但不与其他角色互动,因此他们被放在一个独立的社区中。我们还应该注意到,在曹操的派系中出现了一个名叫司马懿的次要人物。司马懿将成为小说最后一部的主要人物。

Centrality measures for chapters 61–90
曹操仍然是无可争议的赢家,在所有三个中心地位中占据首位,即使他在这一节的最后几章中已经死了。与其他人相比,他的居中度仍然非常高。
这一节第二位很难确定。关羽声称他的地位是这个国家的英雄之一。这一次,他在度和中间中心性上得分很高。不幸的是,他的特征向量中心性很低。另一方面,刘备有强大的关系,这使他在特征向量中心性方面得分很高,但他的中间中心性很低。孙权在所有三个中心性方面的得分一直很高,但他的一个竞争对手总是高于他。
此外,我们注意到诸葛亮的分数低于最后一节,他可以声称第三名。这将在小说的最后部分发生巨大变化。
综上所述,曹操仍然是最重要的人物,而刘备、孙权、关羽正在争夺第二的位置。

The network for chapters 91–120
第 91–120 章
在最后 30 章中,诸葛亮领导了几次反对魏的战役,在那里他反对杰出的司马懿。在第一场战役的开始,诸葛亮会见了他的弟子姜维,他将在最后几章中扮演主要角色。诸葛亮和司马懿都显示了他们敏锐的头脑,能够赢得决定性的胜利。由于他们都是非常优秀的战略家,蜀和魏之间的战争仍然是相持不下。此外,赵子龙、张苞和关兴的死也发生在这些战役中。
诸葛亮为没能打败司马懿而感到心力交瘁。他的健康恶化,他去世了,把他所有的知识都留给了姜维。姜维继续讨伐魏。在魏国方面,皇帝曹睿去世,最后司马懿找到机会要求国家,这是通过他的儿子司马师和司马昭。在南国,孙权死了,他的儿子孙良继位。
魏健仍在领导反对魏的运动,但另一个伟大的将军,名叫邓艾,能够阻止他。最终司马昭发动反击,蜀国向魏国投降,结束了汉朝的统治。北方和河间地区现在统一了,司马昭的儿子司马燕建立了金朝。几年后,晋国终于入侵了吴国,打败了它的末代皇帝孙皓。金朝征服了所有王国,结束了三国时代。
网络在这一部分看起来有所不同。除了诸葛亮,所有以前的主要人物都死了。以前的社区已经被新的社区取代了。该算法识别网络中的 6 个社区,但是只有两个主要社区。此外,这些社区的形成方式更多地与事件的时间顺序有关,而不是人物的忠诚。
第一个群落(紫色显示)是诸葛亮与司马懿的战斗,发生在这一节的前半段。两个角色属于同一个社区,即使他们是敌人,以及双方的将军。
第二个社区(显示为绿色)是姜维和司马昭之间的战斗,发生在该节的后半部分。参加这些活动的双方将军也加入了他们的行列。
孙权也有自己的社区(橙色部分)。在这一段中,南国的作用不太显著,所以孙权的社区比前面几段要小得多。他和将军张昭、鲁迅归为一类。
此外,网络中还有另外三个小社区。光兴和张宝有他们的二人组(暗绿色显示),像前 30 章一样。关羽和曹操在这几章中被提及的次数足够多,以至于出现在网络中,但由于联系有限,他们形成了自己孤立的社区。关羽与梦露(红色)在一起,曹操与曹丕和夏侯渊(蓝色)在一起。

Centrality measures for chapters 91–120
诸葛亮是最后几章最重要的人物。他在所有三个中心性方面都名列第一,与第二名有显著差异。他是旧角色和本节出现的新角色之间的纽带。
司马懿和姜维在争夺第二名。他们都是在前几章中没有出现的角色,但在这一节中,他们都在首要位置。最后,司马懿名列前茅,因为他的度和介数中心性远远好于姜维,而他们的特征向量中心性非常接近。
魏延,邓艾等人,都是远低于前三的。这表明,与其他部分不同,最后一部分只有三个主要人物,其余都是次要人物。三国大英雄时代已经结束。

The network of the full text
结论
在我们分析《三国演义》的四个章节时,我们看到了人物的兴衰。我们看到一个版块的英雄几乎没有出现在其他版块中,我们看到早期版块中互动最少的角色成为了后期版块中最有影响力的角色。这是小说的主题之一。野心引导人们去追求权力,但是太多的权力使人们盲目并导致他们的堕落。
此外,随着情节的变化,网络的社区也在不断变化。大多数情况下,角色会和他们的主人在一起,但有时会和他们的敌人在一起,因为他们在战斗中有很多互动。最终,社区会看起来完全不同,因为旧的领主和英雄已经被新的取代。这是小说的另一个主题。历史的永恒循环以新角色的出现而重演。这可以通过分析小说的社交网络来看出,而不需要对情节有更多肤浅的了解。
最大的问题依然存在;谁是这部小说最有影响力的人物?看全文的网络和中心性,就清楚了,是曹操。曹操是我在小说中遇到的最聪明、最狡猾、最会骗人的小人之一。纵观他在整部小说中的演变,很明显他会是最有影响力的角色。
刘备位居第二,但他拥有最重要的关系,这从他的特征向量中心性可以明显看出。仁主没有小人厉害,但是他有厉害的朋友。
诸葛亮位居第三。尽管他有较少的联系和重要的互动,他的中间中心性是第二好的。这意味着小说中的许多人物都是通过他联系在一起的。还有,他把小说前 3/4 的老英雄和小说后 1/4 的重要人物联系起来,像司马懿,姜维。

Centrality measures of the full text
关羽第四。他是小说中伟大的战士英雄。尽管他的中间中心性很低,但我们可以从他的特征向量中心性看出,他有强大的联系。
三国之主孙权第五。这也反映了王国的重要性。曹操领导的魏和刘备领导的蜀是最重要的,而孙权领导的吴是最不重要的。当然,这是指它们在小说中的重要性,而不是它们实际的军事或地缘政治重要性。
其他伟大的英雄,如吕布、张飞和赵子龙被放置在下一个位置。这里要注意的是,曹操手下的大将和谋士,没有一个进入前 10 名的。
这是史诗小说的另一个主题。恶棍可能是全能的,但没有值得的盟友。另一方面,英雄会被好的一面吸引。几个好角色的合力,最终战胜了反派的力量。
关于本次分析中用到的代码,请看一下 这篇文章 。
新的 A 队
欢迎大家来到人机协作的时代。
机器人、人工智能和机器——对大多数人来说,这些术语唤起了恐惧、不确定性和不信任。我们都很熟悉科幻电影中经常描绘的厄运和黑暗场景,在这些电影中,机器人将接管我们的工作并统治世界。但事实是,这种启示录式的描绘与现实相去甚远。更有可能的是,我们与机器的关系将是一种协同关系。
尽管毫无疑问,人工智能将彻底改变我们的工作方式,但更有可能的是,它的影响将是互补和增强,而不是取代。根据《哈佛商业评论》一项涉及 1500 家公司的研究,“当人类和机器一起工作时,公司实现了最显著的绩效提升”机器可以增强我们的努力,而不是取代我们的努力。这就是我们前进的方向——人机合作的时代。
下面,我们将介绍这种合作的优势,以及已经将这种联合智能带入生活的现有平台。
“我们估计,如果所有公司都像早期采用者一样投资人工智能和人机协作,它们将在 2018 年至 2022 年间将收入提高令人难以置信的 38%。”— Payal Vasudeva,埃森哲 UKI 战略、人才和组织部董事总经理
机器占主导地位的地方
速度许多商业活动都非常重视速度。时间很重要,说到速度,机器远远超过了人类。对于揭露信用卡欺诈等行动,准确的检测至关重要。这就是为什么美国运通(American Express)等信用卡公司严重依赖数据分析和机器学习来进行实时决策,从而避免数百万的潜在损失。如果一个决策者反应太慢或打错电话,顾客会非常不满意。在人工智能的帮助下,企业可以在正确的时间获得正确的信息。反过来,这有助于员工做出正确的决定,并更好地预测变化,因为他们需要的相关信息会在他们需要时提供。累积起来,这种干预会对组织的底线产生很大的影响。
分析丰富的数据 机器在数据丰富的环境中茁壮成长。机器学习是当今的一个时髦词,涉及从大量数据中学习的机器。机器能够扫描大量的数据和历史信息,以检测模式。他们能够了解什么是重要的,什么是不重要的,从而让企业优化他们的流程。虽然人眼可能需要时间来浏览丰富的数据集,但算法可以超越我们有限的能力,破译与客户和市场相关的模式。
机器的优势:交易、迭代、预测、计算、回忆
机器的竞争优势:一名医生可以在大约 10 分钟内做出诊断,而在同样的时间内,一个人工智能系统可以做出 100 万个诊断。
人类仍然胜过机器
虽然看起来机器已经打败了我们,但认识到人类仍然强大的领域是很重要的。目前,当谈到无形的软技能时,人类仍然超过机器。我们的强项之一是创造力,这是算法还没有触及的。虽然算法非常适合稳定环境中的重复性任务,但它们还没有准备好处理创造力所需的不稳定性、不确定性和独创性。另一方面,人类只需要回顾历史上所有令人难以置信的进步,就可以证明我们的血管里流淌着创造力。
情绪智力
情绪智力(EQ)是指对情绪进行识别和标记,并利用这种标记来指导行为和思想的能力。一般来说,高情商意味着某人在感情方面很聪明。鉴于我们生活在一个社交世界中,能够解读情感信号并驾驭他人往往模糊的内心生活和不明确的迹象是一项至关重要的技能。幸运的是,情商是机器尚未掌握的技能。
人类的优势:领导、即兴、创造、判断
人类的竞争优势:在看不见,但能感觉到的无形技能方面,人类占了上风。
两全其美
人类和人工智能积极地增强和补充彼此的技能。将前者的团队合作和创造力等软技能与后者的速度和可扩展性结合起来,将确保组织获得最佳结果。已经有一系列现有的平台和解决方案可以让您最大限度地提高财务部门的工作效率。专注于省时、改变游戏规则的平台,以下是我们的主要建议:
数据轨道
每个财务部门都非常依赖电子表格。不利的是,Excel 并不总是最好的工具。当处理同事之间共享的、来回发送的电子表格时,在你的收件箱中记录下相关的版本。它是第 1 版、第 5 版还是第 4 版?)可能是一场耗时的噩梦。更糟糕的是,您可能会意外地发现自己不幸地、遗憾地使用了错误的数字。多亏了 DataRails 提供的创新解决方案,财务部门不必再处理这个令人头疼的问题。DataRails 平台允许基于 Excel 的流程自动化和信息整合,从而通过消除对这一极其繁琐和耗时的任务的需求,显著减少您的工作时间。
里杜
得益于 Rydoo 的费用管理平台,财务部门可以轻松地记录他们在任何特定客户或项目上的支出。Rydoo 与包括 Slack、SAP 和 Oracle 在内的工作工具相集成,将您的所有费用信息集中在一个地方,并帮助您跟踪费用数据。借助 Rydoo,您可以简化财务流程,以满足要求全天候财务透明的上级和管理层的严格要求。
超科学
以自动化数据输入为使命, HyperScience 必将改变你的工作方式。表格和文档的手动数据输入非常耗时。有了超科学,财务部门可以迅速将人类内容转化为机器内容。通过自动化数据输入,组织可以将后端处理时间减少 75%以上。通过其简单的文档设置界面,您可以轻松地从文件和表单中提取手写和打印数据。由机器学习驱动的 HyperScience 技术有可能通过消除这种毫无价值的重复任务来显著改变员工的时间使用方式。
英镑
“我们用机器智能增强人类的直觉,使组织能够做出重要的决策”——这是我们的愿景。使用 Quid,您可以通过在一个地方可视化您需要了解的所有内容来获得宏观视角。Quid 编译和分析基于文本的数据,帮助您识别和理解趋势分析、品牌认知、竞争比较和市场前景等事物。更具体地说,在金融领域,Quid 可以通过协助跟踪监管环境和监控竞争对手来帮助您做出更明智的决策。它的客户中有包括高盛和瑞银在内的顶级金融公司,所以你知道你在一个好公司。
人类和机器——就像阴阳
结合人类经验和机器记忆,充分利用这两种能力
人+机器不只是未来——它已经存在于当下。融合人类和计算机的最佳品质可以实现优化,这就是现在和未来所有新兴业务流程的样子。人类和机器共同完成的工作创造了一个任何一方都无法单独创造的结果,而正是两者之间的共生关系将让人类获得最大的回报。不管我们喜欢与否,事实是,企业只会越来越依赖人和机器的协作来确保其生存。
新数据科学家术语表
数据科学术语和术语的高级解释。
我最近做了一个学习数据科学的网站:https://www.dscrashcourse.com/。该网站是这篇文章的后续,花了更多的时间深入研究这里探讨的一些算法和概念。
当我第一次开始这个领域的研究时,我对用来描述同一件事情的流行词和术语感到非常困惑。随着数据科学越来越受欢迎,这些术语变得更加模糊和混乱。

Interest in the phrase “data science jobs” increased almost 5 times since 2014 (Google Trends)
我整理了一个小词汇表,那会对我有所帮助。由于这些概念中的大多数本身就很复杂,所以我将只在非常高的层次上描述它们。目标是高层次的定义将提供足够的背景或激发足够的兴趣来保证进一步的阅读。
我还为 NLP 术语创建了一个单独的词汇表。 你可以在这里阅读。
基础知识
数据科学
数据科学是一个多学科领域,结合了统计学、计算机科学和商业智能,从数据中提取有意义的信息。

ah, the unicorn data scientist
机器学习
机器学习是一种通过寻找和应用从以前的观察中学习到的模式来构建计算机系统的方法。
模型
在机器学习的背景下,模型是使用一组参数(通过训练过程确定)来为新的观察结果生成推理的数学表达式。
特征/协变量/解释变量/预测因子/独立变量
这些都是引用传递给模型的变量来接收推理结果的不同方式。
目标变量/因变量/响应变量
这些都是引用模型输出的不同方式。
超参数
其值在训练过程之前设置的参数。它们与其他参数的区别在于它们不受训练数据的影响(见下文)。例如:学习率。
训练集/训练数据
用于开发模型(即确定模型参数)的数据。
验证集/验证数据
从模型训练过程中保留的数据,但用于为超参数调整提供模型的无偏评估。
测试集/测试数据
训练和验证过程中保留的数据,用于在后续观察中提供模型性能的真实评估。
一般概念
模型部署
模型部署是将机器学习模型与生产环境相集成的过程,通常是为了使推理可用于其他业务系统。
特征工程
在训练阶段之前应用于原始输入变量的一系列变换步骤。
过度拟合
过度拟合用于描述与训练数据“拟合得太好”的模型。这些模型不好,因为它们不能很好地概括。
欠拟合
欠拟合用于描述从数据集中学习太少的模型,这导致对底层关系的简单化理解。

监督学习
当我们有一个明确定义的输入和输出时,我们可以使用一个监督学习算法(想想线性回归,支持向量机)根据先前的观察将输入映射到输出。
无监督学习
当我们有明确定义的输入,但没有明确定义的输出时,我们需要依靠无监督学习算法(如聚类)从我们的数据集得出推断。
半监督学习
在半监督学习中,我们给我们的一些观察结果贴上标签。经典的半监督学习方法是在标记的数据上训练模型,使用该模型来推断剩余的缺失标签,将有把握的预测转换为确定的标签,在新标签上重新训练模型,并重复直到所有数据都被标记。
回归
回归模型解释/预测自变量和一个连续因变量之间的关系。模拟房价将是一个回归问题。
分类
分类模型解释/预测自变量和分类因变量之间的关系。从图片中给动物分类是一个分类问题。
使聚集
聚类是一组无监督的学习技术,用于根据每个组内的相似性和组间的不相似性对数据点进行分组。
自然语言处理
NLP 是专注于人类语言的机器学习任务领域。这包括书面语和口语。
计算机视觉
计算机视觉是专注于图像识别的机器学习任务的领域。
特征空间
由模型特征构建的 n 维空间。
算法
在计算或其它解决问题的操作中,尤指计算机所遵循的过程或一套规则。
-牛津词典定义
神经网络
神经网络(有时也称为人工神经网络)是一类类似于🧠.的机器学习模型
递归神经网络/RNN: 递归神经网络是神经网络的一个子类,通常用于处理序列数据。
卷积神经网络/CNN:CNN 是神经网络的一个子类,通常用于处理图像等空间数据。
深度学习
深度学习是使用多层神经网络的机器学习领域。
线性回归
线性回归用于模拟连续标量响应变量和至少一个解释变量之间的线性关系。在其他用例中,线性回归可用于预测货币估值。

source: Wikipedia
逻辑回归
逻辑回归用于模拟二元响应变量和至少一个解释变量之间的概率关系。逻辑回归模型的输出是对数比值,,可以对其进行转换以获得概率。逻辑回归可用于预测其他用例中客户流失的可能性。

source: Wikipedia
支持向量机(SVM)
支持向量机是一种二元分类器,用于在特征空间中寻找最佳超平面来分离这两类。新的观察值根据它们属于超平面的哪一侧来分类。
决策图表
决策树将特征空间分成不同的子集。新的观察结果根据它们所属的子集进行分类。

source: Wikipedia
集成建模
集成建模是聚合多个模型以进行单一预测的过程。成功集成背后的关键是选择使用不同算法的不同模型。使用多种模型选择预测有几种方法,最简单的是:
- 取最常见的预测值
- 对每个模型的分数进行平均/加权,并根据总分数预测结果
模型开发工具
开源代码库
GitHub 是一个用于软件开发的网络平台。它提供了版本控制和其他协作特性,比如任务管理和代码审查。
码头工人
Dockers 用于部署应用程序,包括机器学习模型。
Python 库
毫无疑问,Python 是最受数据科学家欢迎的编程语言。
NumPy
NumPy是一个数值计算库,用于结构化和操作数据。它是许多其他开源数据科学库的构建块。
熊猫
pandas使读取、导出和处理关系数据变得容易。核心的pandas数据结构(dataframes)将数据组织成表格格式,使得执行索引、过滤、聚集和分组操作变得容易。
Scikit-Learn/sklearn
sklearn是一个用于数据分析、特征工程和开发机器学习模型的综合库。
张量流
TensorFlow 是谷歌大脑团队开发的机器学习框架。TensorFlow 的主要用途是开发和生产深度学习模型。
克拉斯
Keras是用 Python 写的深度学习库。它是一个高级 API,可以在几个深度学习框架之上使用,包括 TensorFlow。
PyTorch
PyTorch 是由脸书人工智能研究小组开发的机器学习库。它也主要用于开发深度学习模型。
韵律学
这些是评估模型性能的一些常用指标。当交流模型性能时,除了指标本身,我们还需要指定我们从哪个数据集获得这些指标。95%的训练准确率和 95%的测试准确率是不一样的!
二元分类的度量
我们通常对一个类的存在比对另一个类的存在更感兴趣。例如,我们更关心客户是否“欺诈”,而不是他们是否欺诈。在定义以下术语时,让我们坚持这个例子。
假阳性/类型 1 错误(FP): 这是我们误将分类为我们感兴趣的类别的观察结果(例如:一个非欺诈性客户被误分类为欺诈性客户)。
假阴性/2 型错误(FN): 这是我们误将归类为而不是的观察结果,是我们感兴趣的类别(例如:一个欺诈客户被误归类为非欺诈客户)。
真阳性(TP): 这是一个我们正确分类的欺诈客户
真阴性(TN): 这是我们正确分类的非欺诈客户
精度:精度按TP/(TP+FP)计算,其中 TP 是真阳性的数量,FP 是假阳性的数量
召回:召回计算为TP/(TP + FN) ,其中 TP 是真阳性的数量,FN 是假阴性的数量
F1-Score: 从上面我们可以看到,针对精度的优化意味着减少误报的数量,而针对召回的优化意味着减少漏报的数量。我们使用 F1 分数来组合这些指标。f1-分数计算为2 * (precision * recall) / (precision + recall)
混淆矩阵:混淆矩阵是 TP、FP、FN、TN 的可视化表示。

Confusion Matrix as shown on Wikipedia
多类分类的度量
用于二进制分类的大多数度量可以用于评估多类场景中每个类的的性能。如果我们有 3 个类,我们将得到 3 个精度分数。对于每个精度分数,TP 将是我们对该类做出的正确预测的数量,而 FP 将是我们将其他两个类之一错误分类为该类的次数。
混淆矩阵也可以概括为一个 n x n 矩阵,其中 n 是类的数量。具有行 i 和列 j 的单元表示被预测为类别j的类别 i 的数量

Confusion Matrix Visualization from one of my other articles
准确率:正确预测的百分比。当班级规模相当平衡时,这是模型性能的一个很好的表示。
回归度量
均方误差(MSE): 均方误差对实际值和预测值之差的平方进行平均。这是评估回归模型最常用的指标之一。
均方根误差(RMSE): RMSE 是 MSE 的平方根。MSE 通常选择 RMSE,因为它更容易操作(少一个操作)。
平均绝对误差(MAE): MAE 是实际值和预测值之间绝对差值的平均值。
R 平方/决定系数: R 平方是在数据中发现的可以被模型“解释”的方差百分比的统计度量。
调整后的 R 平方:调整后的 R 平方通过惩罚参数个数来调整 R 平方。
感谢您的阅读!
如果你喜欢这篇文章,可以看看我关于数据科学、数学和编程的其他文章。请通过 Medium 关注我的最新消息。😃
作为一个业余爱好项目,我还在www.dscrashcourse.com建立了一套全面的免费数据科学课程和练习题。
如果你想支持我的写作,下次你报名参加 Coursera 课程时,可以考虑使用我的会员链接。完全公开—我从每一次注册中获得佣金,但不会对您产生额外费用。
再次感谢您的阅读!📕
人工智能的新曙光:联邦学习
民主化和个性化的人工智能,通过设计实现隐私
我们预测联合学习的增长和采用,这是一种新的人工智能(AI)模型开发框架,分布在数百万个移动设备上,提供高度个性化的模型,并且不会损害用户隐私。不直接访问或标记原始用户数据的模型开发、培训和评估。在印度等市场,超个性化和情境推荐将是推动应用采用或电子商务购买的关键,打赌联合学习将在 2019 年发挥关键作用。人工智能世界的新黎明和新希望!
免责声明:作者是联合学习初创公司 S20.ai 的投资者和顾问,如果你想知道,S20 代表“软件 2.0”。
新兴的人工智能市场模式由谷歌、亚马逊和微软等科技巨头主导,这些公司提供基于云的人工智能解决方案和 API。这种模式让用户无法控制人工智能产品的使用以及从他们的设备、位置等收集的数据。从长远来看,这种集中化的模式对社会或市场都没有好处,因为它可能导致少数强势参与者的垄断。最终,它将限制小公司甚至大企业对人工智能创新的参与,以及人工智能系统驱动的决策缺乏互操作性和可解释性。幸运的是,随着人工智能的春天在 2019 年出现,我们看到了一个分散式人工智能市场的开始,它诞生于设备上人工智能、区块链和边缘计算/物联网的交汇点。

Figure 1: The new dawn of AI: a new hope. Photo Credit: Lucasfilm/ Disney
标准的机器学习模型要求将训练数据集中在一台机器或数据中心。例如,当一家电子商务初创公司希望开发一个模型来了解其消费者购买产品的倾向时,它会根据从其网站或应用程序收集的数据来运行模型。这种数据可以包括在特定产品页面上花费的时间、一起购买的产品、浏览但购买的产品等。通常,在一段时间内,每个用户身上会收集 50 到甚至 1000 个数据点。这些数据被传递并发送到中央数据中心或机器进行计算。
最近,一种新的方法被考虑用于通过用户与移动设备的交互来训练模型:它被称为联合学习。联合学习将机器学习过程分布到边缘。它使移动电话能够使用设备上的训练数据并在设备上保存数据来协作学习共享模型。它将进行机器学习的需求与将数据存储在云中的需求分离开来。
什么是联合学习?
虽然这种比较可能有些简单化,但计算的历史可能是联合学习的一个很好的代理。在信息技术的早期,我们让大型主机承担大部分计算的重担。最终,我们转向了客户端服务器框架,在这个框架中,计算分布在中央服务器和多个客户端计算机之间。
联合学习架构部署了一个类似的模型。机器学习模型不是在大型集中式机器上进行计算,而是分布在移动设备上进行计算。这种计算模型虽然在理论上是可行的,但在过去是不可行的,因为移动电话的计算能力对于运行任何 ML 模型都是非常有限的。

Figure 2: A user’s phone personalizes the model locally, based on her usage (A). Many users’ updates are then aggregated (B) to form a consensus change © to the shared model. This process is then repeated
然而,2018 年中后期发生了一些变化。从三星 S9 或苹果 X 系列开始,未来 3-5 年将有超过 10 亿部配备人工智能芯片和强大计算能力的智能手机上市,许多 ML 机型将能够在这些移动设备上运行。
从功能上来说,作为 FL 计算架构一部分的移动设备下载一个旨在运行在移动设备上的模型。然后,它在手机上本地运行该模型,并通过学习存储在那里的数据来改进它。随后,它将更改总结为一个小的更新,通常包含模型参数和相应的权重。
然后,使用加密通信(例如,同态加密(he ))将模型的更新发送到云或中央服务器。然后,将此更新与其他用户更新进行平均,以改进共享模型。最重要的是,所有的训练数据都保留在用户的设备上,没有单独的更新可识别地存储在云中。
联合学习允许更快地部署和测试更智能的模型,降低延迟和功耗,同时确保隐私。此外,除了提供共享模型的更新之外,您的手机上的改进(本地)模型也可以立即使用,通过您使用手机的方式来提供个性化的体验。
什么将推动联合学习的发展?
在未来几年,基于联邦学习和同态加密的边缘建模和计算将取得重大进展。随着未来 3-5 年超过 10 亿部配备人工智能芯片并拥有强大计算能力的智能手机进入市场,许多 ML 模型将能够在这些移动设备上本地运行。与中央计算设施相反,在智能手机的“边缘”分布重型分析和计算将大大减少开发超个性化推荐引擎、电子商务定价引擎等数据产品的时间。企业将采用分布式机器学习模型构建框架,以利用更快的模型部署,并对快速变化的消费者行为做出更快的响应,同时大幅降低成本。

Figure 3: As a billion plus smartphones being equipped with AI chips and significant computing power get shipped in the next 3–5 years, Federated learning applications will grow
对于机器学习从业者和爱好者来说,这种范式转变为民主化人工智能提供了一个令人兴奋的机会。它还为采用新工具开辟了新的途径,最重要的是,为解决大规模 ML 问题开辟了新的思路。
没有直接访问或标记原始数据的模型开发、训练和评估在开始时将是具有挑战性的。然而,在印度等新兴市场,超个性化和高度关联的推荐引擎将成为推动应用采用或电子商务购买的关键,我们打赌联合学习将在未来发挥关键作用。我们相信联合学习给用户带来的好处使得应对技术挑战变得值得。
下一个故事: 印度贫穷地址的影响:一年 100-140 亿美元
往期剧情: AI 对 2019 年的预测
新弗兰肯斯坦的怪物:进入人工通用智能时代

Credit: Peshkova/Shutterstock.com
我可以告诉你未来十年 10 万家风投支持的初创企业的商业计划:利用现有的东西,添加人工智能,盈利。希望这次不会有人丢了内裤。

抛开流行文化不谈,人工智能和机器学习的发展已经并将继续极大地改善我们使用的软件,塑造我们的偏好,改变我们与其他人的互动,并扩展我们对宇宙的看法。NPR 在一篇关于机器人如何成为新的太空探险者的文章中说,人们与被送入太空的机器人的关系就像我们过去与宇航员的关系一样,当任务结束时会哭泣,当好奇号自拍时会高兴得跳起来。
这些我们发送到小行星的机器人和我们用来定制新闻和推荐的算法不是我们的朋友,他们也不是人类。我们在制造工具,而不是同事。在个人电脑普及之前,人类喜欢使用的几乎所有服务都来自另一个人为我们提供的价值,因此可以理解的是,我们提及这些服务的语言没有发生巨大变化。随着我们的机器学习算法和人工智能更多地了解我们,了解我们的偏好,并可以向我们推荐我们最喜欢的东西,我们必须摆脱对这些工具的拟人化观点,因为在今天的人工智能之后,接下来发生的事情很可能是我们在意识层面上与之互动的事情。今天,许多研究人员称之为下一级人工智能。
我们在这个机器学习和人工智能(我从现在开始将它们合称为人工智能)的世界中创造的大部分东西都属于狭义人工智能领域。这意味着我们有一个我们想要解决的特定问题,我们建立了一个可以分析、学习和优化特定领域的人工智能。这种狭隘的人工智能将在未来几十年推动企业的发展,尽管这些企业不太可能创造许多新的就业机会。将特定的人工智能知识集应用到另一个领域,即使是密切相关的领域,也是一项艰巨的任务,需要几乎从零开始。跨学科工作的最有效的人工智能是我们最喜欢的 Jeopardy-stumping Watson,它现在被用于医学领域,用于分析肿瘤的 MRI 扫描和无数其他可以利用大数据的医学分析。问题是,如果你让沃森去测试一个冒烟的引擎,并找出问题所在:它就是不起作用。从生活的一个领域获取知识,转化它,并在一个前所未见的全新场景中应用它的能力是人类独有的能力。致力于人工通用智能或 AGI 的人们正试图改变这一点。他们想建立一种类似于人类经历的那种有意识思维的东西,但我们为什么要实现这一点,这可能吗?
我们能够,或者说我们是否应该,努力建设这样的 AGI?让我们首先解决“我们能不能”这个问题。从纯计算的角度来看,人脑的精确重建(如果这是我们有意识的机器所需要的)是可能的,只是时间问题。计算能力方面最有影响力的观点之一是摩尔定律,即计算机的速度和能力每两年翻一番。

Moore’s Law past and projections
一些制造商开始怀疑摩尔定律是否会继续成立,因为我们的晶体管尺寸越来越接近原子水平,在原子水平上,电子开始在我们不希望它们跳跃的时候跳跃。然而火车还没有停下来,因为英特尔最近宣布了他们将于 2019 年发布的芯片堆叠技术,这将继续这种计算能力的趋势。量子计算也在路上,虽然它的应用不会对所有目的都完美,但对于并行处理来说,它将提供更大的处理能力。
在“我们能不能”这个问题的更哲学的一面,从定义的角度来看,Spark Cognition 的首席执行官 Amir Husain,这样描述意识:“正是这种自我意识,这种我独立于其他一切而存在的想法,以及我可以模拟自己…人类的大脑有一个奇妙的模拟器。他们可以在头脑中虚拟地提出一个行动方案,然后看看事情如何发展。将自己作为演员的能力意味着你在对自己的想法进行计算。”通过这一点,我们非常接近 AGI 的发展,因为我们已经运行算法来进行这种思考,尽管通常没有机器本身的参与。如果我们为人工智能设定一个目标来提高它自己的计算能力和速度,这难道不符合侯赛因的定义吗?许多人不同意这个定义包含了所有的意识体验,我们稍后会讲到。
“我们是否应该”的问题要复杂得多,但很多问题将归结为商业(或军事)的增长和发展。如果它可以帮助一个企业做得更多、更好、更快,或者可以拯救人类的生命,它就有可能到来。尽管有很多理由认为,在 AGI 问题上,我们应该划清界限。然而,自治的 AGI 实体可能会变得(考虑到他们可以学习和适应的速度,这是相当自治的),他们不会经历我们有意识的人类所共有的脆弱或死亡。死亡是所有人类最大的均衡器。如果 AGI 能够在一系列服务器上保存数据,并且当前系统被卡车或“蓝屏”击中,其记忆和优化的过程可以被带回一个新的物质实体(如果它真的想要一个的话)。它将 AGI 从弱势群体的世界中移除,让他们成为事实上不朽的存在。
无论我们是否应该朝着 AGI 的方向努力,一群不同的研究人员和实践者——计算机科学家、工程师、动物学家和社会科学家等——正聚集在一起发展“机器行为”领域……该领域不仅仅将机器人视为人造物品,而是一类新的社会行为者。即使我们不都同意我们会到达那里,这个问题至少有了解决的开端。那么这些有意识的存在到底有多大的可能性呢?有意识的机器会不会到来,更多的是人们对人类的信念,而不是对 AI 方向的信念。看看你自己的信念,我们是什么?人类是什么?
我会列出几个选项供你考虑:机器、动物或人类。我们是机器,纯粹的机械生命,仅仅是我们每天产生和响应的各种化学反应、信息素和神经元相互作用的产物吗?或者,我们是动物,不仅仅是一台机器,而是一种具有生命力的东西,因此科学家们无法理解它(尽管不能说它将永远如此)。如果我们是动物,机械的东西能获得生命的火花吗?或者,我们是人类吗,这里我指的是超越我们智人形态描述的区别。我们不仅仅是动物世界的顶级掠食者吗?我们对自己的看法与对他人的看法是否不同?这些观点是我们意识的体现吗?除了人类之外,它对任何事物都是不可知的吗?没有正确的答案,但一个人对人类的总体看法与他是否认为我们可以实现 AGI 有很大关系(机器可以,动物可能,人类不太可能)。
一个有意识的机器会是什么样子,如果我们看到它,我们会知道吗?许多人将意识视为二元选项,要么一个有,要么一个没有,但意识可能实际上存在于一个连续体上。如何定义这个连续体的界限仍有待讨论,但在这个滑动尺度上有几点需要考虑。在低端,镜像测试的通过可以作为意识的基本水平。如果你把一个有生命的实体放在一面镜子前面,把镜子拿走,在那个实体的(等价的)前额上放一个点,然后把镜子放回去,这个实体会试图去掉这个点吗?这样做意味着存在一个持续的观点,即实体所拥有的“自我”,它认识到在第一次和第二次迭代之间,在镜子中看到的自己已经发生了变化。这个实验有一些问题(定义‘生活’;视觉要求;能够去除圆点等的运动。),但至少给了我们一个视角,除了人类之外,什么样的生物可能对它们有一定程度的意识。意识阶梯上的一个层次可能是语言的使用。有些人认为,在我们给它一个词之前,世界上没有任何东西实际上是存在的,因此超出我们自己对现实的解释的其他人可以分享那东西是什么。意识本身是一个共享的实体。可能直到你有了语言来决定自我和他人,就没有这种区别了。在阶梯的更高处,我们有元认知,或思考思考的能力。冥想的人经常这样做,注意到他们自己的思想经过,但即使不冥想的人也有这种能力,注意到他们何时生气或悲伤,或在他们分析另一个人的统计证据时。如果你愿意更多地展示你的意识肌肉,你也应该看看约翰·塞尔的中文室思维实验(通常用来反驳 AGI 的可能性),该实验探索了知道和理解之间的差异,后者迄今为止一直是人类的唯一领域。
随着人们看到人工智能变得越来越聪明,围绕 AGI 的对话已经加速。理论上,这意味着我们将达到人工智能接近人类智能的程度,当人工智能达到人类智能水平时,它很可能也是有意识的,或者就像我们一样。这是一个相当大的跳跃,因为我们不知道如何开始制作 AGI,这条路可能只是多余的。我们社会的道路可能根本不需要人工智能。我们为更好的人工智能所做的许多工作都是为了实现超级智能,知道并有能力知道远远超过我们在当前状态下可能想象的事情。有意识、有智慧的生物并不是达到信息顶峰的唯一选择,正如尤瓦尔·赫拉利在《德乌斯人》中所说,“可能有几种通往超级智慧的替代方式,其中只有一些通过了意识的限制。几百万年来,有机进化一直沿着有意识的路线缓慢前行。无机计算机的进化可能会完全绕过这些狭窄的海峡,为超级智能开辟一条不同的、更快的道路。”
对于世界上我们需要解决的许多问题,对于我们想要进行的许多探索,虽然卓越的智力是一项要求,但意识不是。艾未未能否毕业进入 AGI,最终可能并不重要。人工智能的发展导致了智能和意识之间的分离。以前,我们依靠人类来引领我们走向一个更加稳定、更加先进的社会,而现在,很多工作都转移到了我们自己创造的东西上,这些东西超出了我们的能力范围,但我们已经相信它们会比我们自己做得更好。
很少有人研究这个问题,试图解决意识的问题,新的意识形式会是什么样子,以及我们如何确保我们创造的东西不会让人类望尘莫及。80000hours.org(一个基于一个人一生中平均工作时间的名字),不断更新他们的问题档案,并对社会中需要解决的各种问题的规模、忽视程度和可解决性进行评级。人工智能发展的积极塑造被列为当前我们社会中最紧迫的问题之一:事情变得真正失控的风险很高,这是一个目前非常被忽视的问题。

80000 Hours Assessment of the Positive Development of AI
谢天谢地,这意味着个人在这个领域的努力可以产生巨大的影响。如果这是一个让你振奋的领域,我敦促你考虑一下你能做些什么来促成这次对话和发展。拜伦·里斯的《第四时代》是一个很好的起点,它告诉了机器、动物和人类上面的问题。这会让你开始问一些你不知道是这场辩论的一部分的问题。、尤瓦尔·赫拉利的《德乌斯人》是一个很好的下一步,或者是一些更幽默和插图的东西,蒂姆·厄本关于超级智能的两篇文章。
随着人工智能做出比我们更明智的决定,考虑到它拥有大量人类无法想象的数据,我们将把什么样的控制权交给它?它将仍然由我们来管理,还是由我们来创造全新的东西?如果我们不小心,它可能会失去控制,我们需要更多知情的人问正确的问题来塑造这个未来。
新摄影——是什么?

Image by Thomas Staub from Pixabay. Mona Lisa speaks! See #14 below.
他关于摄影和成像的三集系列研究了许多最近的技术和社会发展。在第一部分中,我们回顾了摄影发明以来的 190 年历史,记录了媒体的快速变化,从电影到数字的突然转变以及智能手机的兴起。
在这一部分(第 2 部分)中,我们将调查一些最近的技术发展,努力为理解新功能构建一个更大的环境,并考虑下一步的发展。
术语计算机视觉和计算摄影经常互换使用。然而,计算机视觉是一个更广泛的学科,涵盖了一系列数字捕捉和处理技术。它指的是计算机理解图像的能力,通常与人类的理解方式相似。通常这是通过表征内容、颜色、色调值、形状或边缘数据来实现的。但是它也可以应用于其他元数据,例如嵌入的位置或时间数据。当分析非常大的图像集时,获得模式和洞察力,并随后应用于组织、验证甚至修改图像。
更具体地说,计算摄影是一门学科,涉及使用算法而不是光学方法对图像进行计算、分析和处理。我们不会为这两个学科之间的区别烦恼,而是考虑更大的计算机视觉流派。
眼睛机器人
这不一定是一个新领域。计算机视觉的最初例子已经伴随我们有一段时间了,比如:
- 光学字符识别(OCR)支持条形码和 QR 码扫描,并将基于文本的打印输出转换为机器可读文档。
- 高动态范围(HDR)成像,将多幅图像组合起来描绘高对比度设置,通常超出相机传感器甚至人眼的范围。最近的更新极大地提高了质量,帮助 HDR 摆脱了早期忧郁和超现实的“哈利波特”外观。
- 全景图像,其中多个图像对齐并缝合在一起,图像之间的接缝自动混合。
- 上下文图像替换,Adobe 软件中杜撰的内容感知填充,使用周围的数据替换图像的部分。一种常见的用法是从照片中移除电源线。Adobe 在 2010 年发布了这一功能,但最近,随着基于其人工智能平台的更复杂算法的应用,该功能在质量和功能方面都有了显著改善。
我们已经看到了计算机视觉的大量新发展,涵盖了摄影和视频的一系列应用。最近的例子包括:
- 将不断改进的硬件和强大的软件交给严肃的爱好者,使安德鲁·麦卡锡能够使用各种技术(包括将瓷砖拼接在一起以降低传感器噪音)将 50,000 张图像组合成一张高清的月球图像。
- 同样,艾伦·弗里德曼通过组合成千上万张图像来平均处理地球大气层引起的失真,创造了令人难以置信的太阳高清图像。
- Light 的 L16 相机在相当于智能手机的外形中提供了令人印象深刻的质量、文件大小和创意空间。使用 16 个传感器,相机立即评估一个场景,产生 10 多个图像,这些图像组合成一个惊人的最终图像,与许多单反相机相同或更好,但价格更低。
- 艺术家 Pep Ventosa 和 Corinne Vionnett 各自收集了网络图像,并将它们组合成熟悉的地标的新表现。Vionnet 注意到游客如何从相似的有利位置重新拍摄这些地标,加强视觉模式,并为现有的集体指数添加微妙的变化。通过社交网络访问来自世界各地的美丽图像产生了意想不到的巨大影响,如知名旅游目的地的过度拥挤和环境问题。
- Remove.bg,一个为 Photoshop 设计的插件,只需轻轻一点就能从一张图片中移除背景。当然,这已经手动执行了多年,但当这个插件的速度和质量与下一步描述的重新照明技术相结合时,将人和物体放入全新的图像环境将变得快速而容易(只要视角相似)。
- 照明在定义图像时起着关键作用。谷歌的一个团队已经发现了一种方法,使用单幅图像理解面部地形,再加上一幅单独的源图像来模拟光照风格,从而为一幅肖像重新照明。
- 谷歌对 ARCore 进行了一次令人印象深刻的更新,在其光照估计 API 中启用了环境 HDR 。通过对单个图像应用机器学习,可以理解阴影、高光和反射,因此可以重新照亮场景,这是一种开发 AR 的有用技术。
- 另一项名为全球定位的谷歌技术将实现更精确的定位和方向。它利用了谷歌街景中的全景图组合,谷歌街景是一种视觉定位服务,可以实时将你主动智能手机摄像头拍摄的图像与已知位置的图像进行比较。机器学习用于过滤掉非永久性的结构,以便更好地了解你更精确的位置。
- Airbnb 已经使用机器学习来识别和调整图像的顺序来呈现他们的住处,以便走廊或浴室图像不会首先出现。
- 认识到制作多个版本的视频以适应不同显示器(笔记本电脑、电视、一系列智能手机)的挑战,Adobe 将发布人工智能驱动的视频裁剪以优化每个纵横比的视频,以便重要元素保留在帧中。
- Adobe 正在应用他们的人工智能平台来简化静态图像视频制作中使用的技术,使静态图像具有变化的维度质量,其中项目滑过彼此,就像观众的眼睛改变位置一样,类似于视频镜头。
- 同样,Adobe 的人工智能平台很快将启用视频遮罩,这是一种快速更新,对于每秒 24 帧的视频来说,这种更新对于单个图像来说非常耗时,并且非常耗费劳动力。
- Adobe After Effects 中的视频内容感知填充将进一步丰富这一主题,支持从帧中移除所选项目。一旦一个对象被选中,它的替换将通过连续的视频帧被跟踪。
- 三星人工智能中心的机器学习研究人员开发了一种技术,通过建立面部标志为人脸添加逼真的动作。这并不一定是新的,但这种方法通过使用一张单幅图像取得了显著的效果,并通过额外的参考图像进行了改进。
- 这种能力对人类来说很容易,但对机器来说很难,谷歌在计算机生成的对移动中的人的深度感知方面取得了良好的进展,这将是一项强大的使能技术。
- 华盛顿大学艾伦学院图形和图像实验室的研究人员开发了一种技术,可以对视频中的假唱进行整形,以匹配特定的音轨。他们分析了奥巴马总统的口型,并将其应用到他的另一个视频中。
- 同样,加州大学伯克利分校的一个团队已经能够使用姿势检测将舞蹈动作从专家转移到新手,为我们所有人带来了希望!
- 中国公司 Kandao、谷歌和英伟达(NVIDIA)都在探索视频补间的人工智能,这是一种在帧之间进行插值以平滑动画的过程。这将改善慢动作镜头的渲染,而不是出于此目的拍摄。
- 谷歌的 PlaNet 引用了 9000 万张地理标记图像,以便为图像识别服务的早期阶段提供动力,确定图像拍摄的地点。
- 利用更快的处理器,谷歌的像素相机具有夜视功能,通过采用 1 的更好结果来实现更好的夜间摄影。稳定的手持照片,长时间曝光,以收集光线并减少噪音或 2。如果相机不稳定,可以连拍并组合几张照片以获得更好的效果。
人工脑
新闻中充斥着虚假图像和视频的故事,通常涉及上面提到的一些技术——而这只是刚刚开始成熟。对这种方法的基本理解有助于理解它的能力和它的发展方向。虽然它可以用来生成新的、合成的或虚假的图像,但它也可以用来识别、分类、跟踪或创造性地修改图像,如流行的 Prisma 应用程序,该应用程序使用了一种称为风格转移的技术,通过使用卷积神经网络(CNN)实现。此外,这些高度自适应的方法是创造自动驾驶汽车的一大焦点。
一般来说,要取得好的结果,需要利用模仿生物系统的神经网络,在生物系统中,刺激上升到更高的水平,产生更有意义的脉冲。在非常基本的层面上,神经网络是通过寻找数据之间的关联来训练计算机模型的优化方法。强关联更重要,弱关联价值较低。这是一种有点蛮力的方法,但速度快且不知疲倦的计算机可以处理大量数据,以达到令人惊讶的好结果。
- 一种方法是让两个神经网络在一种称为生成对抗网络(GAN)的优化方案中相互对抗。一个网络基于数据集的学习生成图像,另一个网络评估图像以确定它是否真实。被拒绝的图像被改进,直到鉴别器不能再确定图像是否是假的。
- 卷积神经网络(CNN)通常用于对图像进行分类或寻找模式。分析数据时,卷积层会转换数据,并将信息传递给下一层进行进一步分析。为每一层指定多个过滤器,例如边缘、形状和角,用每一层表示更复杂的信息或对象。随着数据进一步进入网络,更复杂的层能够识别更复杂的对象,如眼睛、面部或汽车,因为来自先前层的数据被合并。
- 感知损失函数也用于训练 CNN 的速度。这种方法认识到,两幅图像对人类来说可能看起来一样,但对计算机来说在数学上是不同的——例如将同一幅图像移动一个像素或更多。分析的数据越多,结果越好。
这些解释代表了这些技术的冰山一角。实现还很粗糙,但他们正在迅速改进。然而,即使有这种有限的理解,也不难看出神经网络如何用于生成令人印象深刻的真人动画模型,尤其是我们在新闻中多次听到的名人。例如,每秒 24 帧的高清视频可以从 YouTube 上下载,以训练网络了解特定人如何说话和移动。这些学习然后可以用来产生新的或改变的图像,比如这个例子,在这个例子中琼恩·雪诺为得到第八季的道歉。
这些方法计算量非常大。更快的处理器和可用于图案化的大量数字图像的可用性,使得更复杂和开源的算法在此时激增。有趣的是,尽管图像数据很复杂,但 ML/AI 方法比文本方法取得了更大的进展,这主要是由于图像的客观性质。另一方面,单词和文本可以基于上下文、个性、文化和其他因素(如讽刺)有不同的解释,这对机器理解构成了更大的挑战。
我们上面提到的例子并不全面。软件和硬件公司继续他们积极的发展,同时许多大学已经在他们的课程中增加了这个科目,并成立了计算机视觉系。很明显,我们将继续看到被操纵的图像在数量和质量上的增长。对大型图像数据集的进一步表征自然会带来洞察力和知识,同时也会带来一些弊端。
在本系列的最后一集中,我们将考虑这些技术带来的一些社会和伦理挑战,以及一些关于缓解的想法。我们还会看看地平线上有什么。
大数据分析的下一个前沿
跨行业分析及其三大支柱

Feel like you have all the data on exactly what your customer needs?
在我们的世界里,数据无处不在,但边际收益递减。
更多的数据并不一定转化为新的信息,事实上,它有时可能只是用来重申现有的偏见。
那么,我们到哪里去寻找更好的、更新的、令人惊讶的见解呢?超越行业孤岛是发现有价值见解的下一个前沿。就消费者数据而言,行业从业者忽略了一个微妙的事实,即我们都在为同一个客户服务——购买移动计划的同一个人也在寻找抵押贷款,或许还在计划去夏威夷度假。然而,正如我在去年多伦多机器学习峰会上分享的那样,数据分析团队只从他们特定的行业环境中分析数据。
即便如此,在准备、促成和说服行业参与者合作方面,仍有许多工作要做。
让协作在实践中发生需要三大支柱**——数据估值模型、隐私保护机制和可解释性。
数据评估让公司明白,他们的数据集的价值是与环境相关的,它会根据我们打算与谁合作以及针对什么具体分析或产品而变化。隐私机制允许这种协作,这种协作总是涉及使用来自两个或更多不同公司甚至行业的数据集,同时维护数据集提供信息的个人的隐私。可解释性是一门艺术和科学,能够确定你的机器学习模型计算什么,它如何计算,最重要的是,知道所使用的假设和数据中对结果影响最大的特征。致力于这三大支柱将允许公司释放其数据集中的潜在价值。
2018 年末,我在多伦多参加了由创造性破坏实验室组织的一个大型年度机器学习会议。我的计划是寻找与我所在行业以外的组织的潜在合作伙伴关系,提议我们将他们来自电信行业以外的数据集与我们的移动使用数据集相结合,共同执行高级分析,跨越我们的行业孤岛。那天我的钥匙来自一个意想不到的地方。我发现自己在和主讲人交谈,他是一位著名的物理学家和作家杰弗里·韦斯特教授。就在他的主题演讲前聊天时,我不经意地提到他在完全不相关的弦理论方面的背景,“通常,解决方案是在学科的交叉点上,不是吗?”他温和地纠正了我—
"解决方案总是并且只有跨学科的."
对于机器学习,我会说,最好的见解将是跨行业的。
下一代工人
人工智能和数字平台如何改变我们的工作方式

SOURCE: © ISTOCK/GETTY IMAGES PLUS
在数字时代,新的工作形式已经出现。这些新的工作形式在许多方面定义了劳动力市场的未来,尽管人们担心非技术工作濒临消失,但技术已经证明,其目的不是消除工作岗位,而是补充工作岗位。
技术对劳动力市场的影响
“我们的工作方式正在终结”。“数百万工作岗位将会消失”。
随着新技术重塑我们的工作方式,人们越来越担心技术对劳动力市场的影响。这些新的技术进步可能导致许多工作岗位的丧失,然而,许多政府和工会似乎仍然不认为这些技术进步旨在改变我们的工作方式。
例如,世界经济论坛(WEF) 关于就业前景的报告 预测,到 2022 年,技术将创造超过1 . 33 亿个就业岗位,几乎是被淘汰岗位数量的两倍。
但是,许多工人将失去工作,无法适应这些新的技术工作
技术的全球化使得来自世界各地的人们可以在线提供服务。印度的网站开发者可以为西班牙的人创建一个网站。但是,关于新型数字作品的出现,更有趣的是创造的 面向所有技能水平的本地作品。如今,优步、Glovo、Rover、Deliveroo、TaskRabbit 和许多其他数字平台提供的技术为许多非熟练工人创造了工作机会。
无数的数字平台正在创造本地工作,其中许多不需要熟练劳动力,没有技术,这些新形式的工作就不会像今天这样存在
“人工智能迟早会取代我们”
会的,至少在某些领域会,但不代表人力资本会被取代。人工智能(AI)将继续增长,积极刺激生产力。生产率的影响将意味着产业将增长、扩张并创造更多的工作岗位——这些工作岗位将向所有技能水平的人开放。我们必须考虑的是,这些工作中的许多将是完全不同的,并将需要新的技能。因此,提高技能至关重要,我们需要一个新的教育体系来适应这些新角色。
然而,人工智能是一把双刃剑——尽管它似乎正在创造更难执行的工作,但它也打算补充人类的技能和逻辑。这意味着,有了人工智能推动的锻造教育系统,我们将能够更容易、更快地打磨和学习新技能。
人工智能更有趣的地方在于,现有劳动力将得到更有效的利用,工人们将能够专注于他们最擅长的事情:
想象一下。创造。创新。
几十年来,许多技术创新的目的都是为了取代人类劳动。在过去的 50 年里,世界人口翻了一番,然而就业率却上升了。
人工智能将增强人类的工作,补充我们的智力并涵盖基本任务,使我们能够更快地工作,并给我们更多的时间专注于增值任务和学习。此外,对人类工作的需求将最看重机器不擅长的技能,如创造力和社交/情感技能。
世界经济论坛提供的一份[报告](http://Ratio of human-machine working hours, 2018 vs. 2022 (projected))显示了 2018 年至 2022 年间人机工作时间比率的演变(见下图)。

Source: Future of Jobs Survey (2018), World Economic Forum
人工智能将补充人类的技能,从数据处理到复杂的技术技能,甚至更多的体力和体力工作。
最后,AI 可能比我们想象的更伟大;我们期待着每个人都有更好的生活质量,工作周减少,甚至可能在某一点上,每个人都有有保障的收入。
拥抱新的工作形式
试图阻止这些新工作形式的发展不是解决办法。政府、工会、教育工作者和个人对于下一代工人和未来的许多挑战还有很多要学习的。
因此,政策制定者应该接受这些新型工作,采取必要措施建立具有全球竞争力的教育基础设施。
也有例外,应该把它们当作例外,而不是一般结论的基础。
下一个最伟大的蝙蝠侠故事——生成
Tensorflow 和 GPT-2 的文本生成实验

今年是美国最伟大的人物之一——蝙蝠侠的 80 周年纪念。几十年来,这个百万富翁-孤儿-义警-侦探-英雄的故事吸引了公众的想象力。我们可能会惊叹于其他超人英雄的壮举,但出于某种原因,他的故事和性格经久不衰,仍然能引起观众的共鸣。你可能不理解一个拥有所有想象得到的力量的英雄有益健康的善良(对不起,超人!),但你可能会理解《破碎世界》中的损失和争取某种秩序或正义感,蝙蝠就是在那里以自己最了解的方式生活和继续战斗。
正如大多数经历了这么长时间的事物一样,蝙蝠侠也被以无数种方式重新创造和讲述。他在电影、漫画和动画方面有无数的创新。从 20 世纪 60 年代蝙蝠侠的傻乎乎的纯洁到 21 世纪初蝙蝠侠的坚韧不拔的绝望,粉丝们在描述中并不缺乏选择。当我写这篇文章的时候,有一个更新的蝙蝠侠故事即将被拍成电影,我们对此知之甚少。
那么过了这么久,哥谭骑士的下一步会是什么呢?也许一个神经网络可以决定!在这个有点徒劳的实验中,我试图给披着斗篷的十字军战士带来一个新的故事,并在这个过程中学习递归神经网络&长期短期记忆网络。
一个非常简短的递归神经网络解释器

至于没有很好解释的主题,有很多很好的资源可以让你对神经网络中发生的事情有一个很好的基础理解,但是这里有一个简单的介绍,看看它们和循环变化之间的区别。传统的神经网络将接受一系列输入,并在计算后提供相当直接的输出。它基于用来创建静态模型的信息来创建静态模型。相比之下,递归网络创建了一个动态模型,它使用来自上一次计算的反馈来帮助确定下一次计算。从本质上来说,它们在某种意义上形成了一种记忆,这种记忆通过模型得到反馈,以帮助改进它,如上图所示,它以短形式(左)和展开的长形式(右)显示。当处理依赖于理解特定系列的信息(如文本)时,递归网络表现得特别好。尽管有时你可能害怕它的结果,文本自动完成是一种循环网络的形式。它不仅仅是基于一个以前的单词来选择下一个单词,而是潜在地基于过去的几个单词,建立在它们之间的关系上。
试着为下面的交流填空:
蝙蝠侠闯入仓库,他大喊“站住!”。小丑笑着说“永远不要 _____!”
虽然你可能有想法,但空白可能是任何单词。根据句子前面的上下文,我们可以猜测他说的是“蝙蝠侠”或“蝙蝠”。正是这种通过序列的流动,是循环网络能够发光的地方。
搬到 LSTM

From Understanding LSTM Networks
我们可能会遇到递归网络的一个主要问题,其中考虑到那些可能使梯度下沉或爆炸的额外步骤(本质上,这些微小分数的过多乘法确实会把事情搞砸)。回忆以前发生的一切可能会过于繁琐,但我们确实想利用一些学到的东西。长短期记忆单元(被称为 LSTM)是一种帮助解决这个问题的逻辑形式。LSTMs 创建一个单独的存储器,用于存储和临时用于计算。当决定一个新的输出时,模型考虑当前的输入、先前的输出和它存储的先前的记忆。一旦产生新的输出,它就更新内存。您可以想象,在处理文本时,这样的东西会有多么有用,因为它在很大程度上依赖于跟随文字的流动。关于这个过程内部功能的另一个很好的资源,请点击图片标题中的链接。
让我们进入时代吧!
文本生成可以在字符或单词级别上工作。一旦对一组输入数据进行了训练,它就会试图学习一种模式,以便能够有效地预测接下来会发生什么。与任何试图根据输入要素找到最佳输出的数值模型类似,该模型将单词或字符存储在它可以理解和解释的数值上下文中。

正如您可能猜到的,问题可能是单词或字符的数字表示可能并不总是创建非常符合逻辑的文本流。在这个练习中,我尝试了几种不同的方法来把事情做好。
我的意见:
- 收集了所有蝙蝠侠电影、漫画和漫画小说的维基百科情节摘要(共 49 篇)。
我正在尝试的循环神经网络模型:
- 字符级 LSTM 模型
- 具有预训练单词向量的单词级 LSTM 模型
- GPT-2 模型
字符级 LSTM 模型
这种方法的工作原理是根据单个字母建立索引,学习每个单词的构成模式。首先,我们将文本按单个字符分解,并为它们创建一个索引:
chars = sorted(list(set(all_plots)))
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
然后,我们将整篇文章分成几块,模仿句子:
maxlen = 100
step = 3
sentences = []
next_chars = []
for i in range(0, len(all_plots) - maxlen, step):
sentences.append(all_plots[i: i + maxlen])
next_chars.append(all_plots[i + maxlen])
print('nb sequences:', len(sentences))
从那里,我们需要做的就是用我们创建的字符索引对这些句子进行矢量化:
x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
x[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
维奥拉。所有的细节都设置好了,我们现在要做的就是创建我们的 LSTM 模型并运行:
model = Sequential()
model.add(LSTM(128, input_shape=(maxlen, len(chars))))
model.add(Dense(len(chars), activation='softmax'))optimizer = RMSprop(lr=0.01)
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
结果:
不太好。我没有时间或处理能力来运行这个模型超过几百个纪元,到最后,我仍然以乱码字母和偶尔的专有名称结束。我们的文本虽然不是一本书,但仍然有 211,508 个字符长,处理起来相当复杂。它变得非常擅长使用正式的角色名,但这是它成功的主要原因。以下是仅输入“Batman”提示时返回的文本类型的示例:
而蝙蝠信号,被一个谋杀他父亲的炸弹的内奸杀死了一个蝙蝠侠,他渗透到蝙蝠侠里面去攻击黑暗的敲门者,唤醒了蝙蝠侠,并引发了犯罪文章,他是蝙蝠洞的所有人,站在看台上的戈登,头儿哈维·登特的故事,他也有一些故事,他将会被故事所玷污

GIBBERISH!!!
具有预训练单词向量的单词级 LSTM 模型
接下来,我升级到单词级的 LSTM 模型。在我之前按单个字符分解文本的地方,也许只使用单词会更容易些。为了帮助我更好地连贯措辞,我加入了预先训练好的单词向量。预训练向量所做的是将单词的特定嵌入权重作为开始计算,并从那里开始工作。我们可能不知道该如何措辞,但我们知道一些词之间的关系,比如“热”和“冰”没有很高的相关性。所以,我们从引入预先训练好的模型开始:
word_model = gensim.models.Word2Vec(sentences, size=100, min_count=1, window=5, iter=100)
pretrained_weights = word_model.wv.syn0
vocab_size, emdedding_size = pretrained_weights.shape
类似地构建我们的功能:
max_sentence_len = 40
sentences = [[word for word in sen.split()[:max_sentence_len]] for sen in all_plots.split('.')]def word2idx(word):
return word_model.wv.vocab[word].index
def idx2word(idx):
return word_model.wv.index2word[idx]print('\nPreparing the data for LSTM...')
train_x = np.zeros([len(sentences), max_sentence_len], dtype=np.int32)
train_y = np.zeros([len(sentences)], dtype=np.int32)for i, sentence in enumerate(sentences):
for t, word in enumerate(sentence[:-1]):
train_x[i, t] = word2idx(word)
train_y[i] = word2idx(sentence[-1])
去训练吧!
结果
一般般。我让它运行了 500 个时代,但这仍然不足以接近一些良好的连贯措辞。我得到的结果是不是更有趣,更有用,绝对是!它们听起来像自然语言吗?差远了。这应该是有意义的,我们的模型让它受益于向量空间中的单词关系,并从情节的结构中学习,但不涉及正确的语法。更多的纪元可能会开始变得更近(我见过几个运行了几千个纪元并变得更近的),但我没有时间。一些突出显示,以粗体输入文本:
小兵打架为了城堡飞机才勉强野蛮多了。
蝙蝠侠揭秘圣诞节中途时刻观众罗宾,抵达逃亡疯狂火把结构。
小丑尝试以毒素蒙面长期遗弃确认承诺附妇女孤儿院介绍兄弟。
小兵打架探子老师,工程博士开关过关,制裁棺材悬浮术吗?

Ha! Close. But, no.
开放 GPT-2 模型
当常规训练和向我们的模型添加一些基本的预训练向量还不够时,你必须引入大人物。 OpenAI GPT-2 是来自 OpenAI 的创成式预训练变压器。如果在 GPU 上运行,它的速度相当快,相比之下,它模仿语言的能力令人印象深刻。它暴露自己的程度因文本而异。如果你想快速浏览一下,请查看与变形金刚的对话。对于这个例子,我使用了 gpt-2-simple ,这样我可以很容易地微调我的模型。
结果
哇!这是一些奇妙的东西。完全是原创的吗?不,该文本大量借用了原文中的措辞,因此有时可能有些过了。好消息是,这是一个相当可读的形式和一个令人愉快的奇怪的故事情节组合。这些片段读起来几乎像电影剧本,来自阅读不同漫画的维基百科的人,所以相当准确!
从以下 400 个时期取样:
莎拉讲述了在她与杰森结婚之前,她是如何杀死虐待她的丈夫并继承罗宾衣钵的故事。尽管最初被这个头衔所冒犯,莎拉后来还是接受了它,尽管实际上是蝙蝠侠犯了谋杀罪。故事开始后,罗宾渗透到一个高层次的军事阴谋召开,以解决世界各国政府的安全恶化后,很久以前的军事将军詹姆斯加文死亡。该阴谋的成员包括:小丑,巫师,巫医,撒旦仪式携带者,以及他们的领导人,艾伦麦格雷戈。小丑带领同谋者试图勾引女同谋者,女同谋者由一个不知名的演员扮演。这位女性声称她不相信吸血鬼,而是相信一个被称为小丑的人类的至高无上的存在,他对数百名无辜者的死亡负有责任。
现在我们在谈话!看看那份同谋名单。策划者艾伦·麦格雷戈!!??我查看了原文,使用了“艾伦”和“麦格雷戈”这两个名字,但这不是一个单独的专有名词。
从以下 800 个时期取样:
蝙蝠侠和罗宾又一次快速解决了辛迪加。两人突袭了辛迪加头目冰冻先生的巢穴。蝙蝠侠通过天窗加入战斗,而杰森·托德和斯嘉丽走向未知的目的地。与此同时,冻结先生,仍然穿着防弹衣,钻孔克莱门特折磨和链到一棵树在阿卡姆疯人院,因为斯嘉丽从她的折磨恢复。蝙蝠侠和罗宾开始有打击犯罪的关系问题,因为冻结的迷恋猩红,但布鲁斯最终说服迪克信任他。布鲁斯考虑绑架斯嘉丽进行研究,但决定反对,因为这将使蝙蝠侠面临最大的危险。后来,蝙蝠侠登上了一艘哥特风格的船,从哥谭市绑架了斯嘉丽。他后来与她交谈,并承诺他将支持她的研究,但只有在她听从他的命令。
奇怪的控制蝙蝠侠?有意思。
来自 1600 个时代的样本:
在蝙蝠洞,布鲁斯向全世界宣布他绑架并谋杀了高谭市的监狱长,高谭市是他的囊中之物。他说哥谭市的执法部门应该感到害怕,唯一能保证他们安全的方法就是自相残杀。三个人决定一起去追冷冻先生。布鲁斯邀请戈登和福克斯在蝙蝠洞与他会面。三人与冷冻先生对质,他承认他是来杀他们所有人的。冷冻先生试图说服布鲁斯,他对布鲁斯的计划无能为力,但布鲁斯证明他错了。
有点黑了!对于一个有这种趋势的角色来说,这并不奇怪。有了这样的结果,我不认为机器人会很快取代作家的工作,而是一个有趣的语言建模实验。现在是时候用快速蝙蝠来庆祝了!

感谢阅读!
Python 中数据可视化的下一个层次

如何用一行 Python 代码制作出好看的、完全交互式的情节
沉没成本谬论是人类遭受的众多有害认知偏见之一。它指的是我们倾向于继续将时间和资源投入到一个失败的事业中,因为我们已经在追求中花费了太多的时间。沉没成本谬误适用于在糟糕的工作中呆得比我们应该呆的时间更长,即使很明显一个项目行不通,也要埋头苦干,是的,当存在更高效、交互和更好看的替代方案时,继续使用乏味、过时的绘图库 matplotlib。
在过去的几个月里,我意识到我使用matplotlib的唯一原因是我花了数百个小时来学习复杂的语法。这种复杂性导致 StackOverflow 花费数小时来解决如何格式化日期或添加第二个 y 轴的问题。幸运的是,这是一个 Python 绘图的好时机,在探索了选项和之后,一个明显的赢家——在易用性、文档和功能性方面——是 plotly Python 库。在本文中,我们将直接进入plotly,学习如何在更短的时间内制作更好的情节——通常只用一行代码。
本文的所有代码都可以在 GitHub 上找到。这些图表都是交互式的,可以在 NBViewer 这里查看。

Example of plotly figures (source)
非常简单的概述
[plotly](https://plot.ly/python/) Python 包是构建在[plotly.js](https://plot.ly/javascript/) 上的开源库,而又构建在[d3.js](https://d3js.org/) 上。我们将在 plotly 上使用一个名为[cufflinks](https://github.com/santosjorge/cufflinks)的包装器,用于处理熊猫数据帧。因此,我们的整个堆栈是 cufflinks>plotly>plotly . js>d3 . js,这意味着我们获得了用 Python 编码的效率和 D3 令人难以置信的交互图形能力。
( Plotly 本身是一家图形公司,有几款产品和开源工具。Python 库是免费使用的,我们可以在离线模式下制作无限的图表,加上在线模式下多达 25 个图表,以便与世界分享。)
本文中的所有工作都是在 Jupyter 笔记本中完成的,plotly +袖扣在离线模式下运行。用pip install cufflinks plotly安装 plotly 和袖扣后,导入以下程序在 Jupyter 中运行:
# Standard plotly imports
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode# Using plotly + cufflinks in offline mode
import cufflinks
cufflinks.go_offline(connected=True)
init_notebook_mode(connected=True)
单变量分布:直方图和箱线图
单变量——单变量——图是开始分析的标准方式,直方图是绘制分布图的常用图(尽管它有一些问题)。在这里,使用我的中等文章统计(你可以在这里看到如何获得你自己的统计或在这里使用我的)让我们制作一个文章鼓掌数量的交互式直方图(df是一个标准的熊猫数据框架):
df['claps'].iplot(kind='hist', xTitle='claps',
yTitle='count', title='Claps Distribution')

Interactive histogram made with plotly+cufflinks
对于那些习惯了matplotlib的人来说,我们所要做的就是多加一个字母(iplot而不是plot),我们就会得到一个更好看、更具交互性的图表!我们可以单击数据以获得更多细节,放大图的各个部分,正如我们稍后将看到的,选择不同的类别来突出显示。
如果我们想要绘制重叠的直方图,也很简单:
df[['time_started', 'time_published']].iplot(
kind='hist',
histnorm='percent',
barmode='overlay',
xTitle='Time of Day',
yTitle='(%) of Articles',
title='Time Started and Time Published')

通过一点点pandas操作,我们可以做一个柱状图:
# Resample to monthly frequency and plot
df2 = df[['view','reads','published_date']].\
set_index('published_date').\
resample('M').mean()df2.iplot(kind='bar', xTitle='Date', yTitle='Average',
title='Monthly Average Views and Reads')

s 我们看到了,我们可以把熊猫的力量和 plotly +袖扣结合起来。对于出版的每个故事的粉丝的箱线图,我们使用一个pivot,然后绘制:
df.pivot(columns='publication', values='fans').iplot(
kind='box',
yTitle='fans',
title='Fans Distribution by Publication')

交互性的好处是我们可以随心所欲地探索数据并对其进行分类。盒状图中有很多信息,如果没有看到数字的能力,我们会错过大部分信息!
散点图
散点图是大多数分析的核心。它让我们看到一个变量随时间的演变,或者两个(或更多)变量之间的关系。
时间序列
相当一部分真实数据都有时间因素。幸运的是,plotly +袖扣的设计考虑到了时间序列可视化。让我们把我的 TDS 文章做成一个数据框架,看看趋势是如何变化的。
Create a dataframe of Towards Data Science Articles
tds = df[df['publication'] == 'Towards Data Science'].\
set_index('published_date')# Plot read time as a time series
tds[['claps', 'fans', 'title']].iplot(
y='claps', mode='lines+markers', secondary_y = 'fans',
secondary_y_title='Fans', xTitle='Date', yTitle='Claps',
text='title', title='Fans and Claps over Time')

在这里,我们在一条线上做了很多不同的事情:
- 自动获得格式良好的时间序列 x 轴
- 添加一个辅助 y 轴,因为我们的变量有不同的范围
- 添加文章标题作为悬停信息
要了解更多信息,我们还可以很容易地添加文本注释:
tds_monthly_totals.iplot(
mode='lines+markers+text',
text=text,
y='word_count',
opacity=0.8,
xTitle='Date',
yTitle='Word Count',
title='Total Word Count by Month')

Scatterplot with annotations
对于由第三个分类变量着色的双变量散点图,我们使用:
df.iplot(
x='read_time',
y='read_ratio',
# Specify the category
categories='publication',
xTitle='Read Time',
yTitle='Reading Percent',
title='Reading Percent vs Read Ratio by Publication')

让我们通过使用对数轴——指定为 plotly 布局——(有关布局细节,请参见 Plotly 文档)并通过一个数字变量来确定气泡的大小,来变得更复杂一些:
tds.iplot(
x='word_count',
y='reads',
size='read_ratio',
text=text,
mode='markers',
# Log xaxis
layout=dict(
xaxis=dict(type='log', title='Word Count'),
yaxis=dict(title='Reads'),
title='Reads vs Log Word Count Sized by Read Ratio'))

再多做一点工作(详见笔记本,我们甚至可以把四个变量(这个不建议)放在一个图上!

像以前一样,我们可以将熊猫与 plotly+袖扣结合起来,以获得有用的情节
df.pivot_table(
values='views', index='published_date',
columns='publication').cumsum().iplot(
mode='markers+lines',
size=8,
symbol=[1, 2, 3, 4, 5],
layout=dict(
xaxis=dict(title='Date'),
yaxis=dict(type='log', title='Total Views'),
title='Total Views over Time by Publication'))

查看笔记本或文档了解更多附加功能的示例。我们可以用一行代码在绘图中添加文本注释、参考线和最佳拟合线,并且仍然具有所有的交互。
高级绘图
现在我们将进入几个你可能不会经常用到的情节,但是它们可能会给你留下深刻的印象。我们将使用情节 [figure_factory](https://plot.ly/python/figure-factory-subplots/),将这些不可思议的情节保持在一条线上。
散布矩阵
当我们想要探索许多变量之间的关系时,一个散点矩阵(也称为 splom)是一个很好的选择:
import plotly.figure_factory as fffigure = ff.create_scatterplotmatrix(
df[['claps', 'publication', 'views',
'read_ratio','word_count']],
diag='histogram',
index='publication')

甚至这个图也是完全交互式的,允许我们探索数据。
相关热图
为了可视化数值变量之间的相关性,我们计算相关性,然后制作一个带注释的热图:
corrs = df.corr()figure = ff.create_annotated_heatmap(
z=corrs.values,
x=list(corrs.columns),
y=list(corrs.index),
annotation_text=corrs.round(2).values,
showscale=True)

情节的清单还在继续。袖扣还有几个主题,我们可以用它们轻松打造完全不同的风格。例如,下面我们在“空间”主题中有一个比率图,在“ggplot”中有一个扩散图:


我们还得到 3D 图(表面和气泡):


对于那些如此倾向的,你甚至可以做一个饼状图:

在 Plotly Chart Studio 中编辑
当您在笔记本中绘制这些图时,您会注意到图表右下角有一个小链接,上面写着“Export to plot.ly”。如果你点击那个链接,你就会被带到图表工作室,在那里你可以润色你的最终演示图。您可以添加注释,指定颜色,并通常清理一切为一个伟大的数字。然后,你可以在网上发布你的数据,这样任何人都可以通过链接找到它。
下面是我在 Chart Studio 中修改的两张图表:


尽管这里提到了一切,我们仍然没有探索该库的全部功能!我鼓励你查阅 plotly 和袖扣文档,以获得更多令人难以置信的图形。

Plotly interactive graphics of wind farms in United States (Source)
结论
沉没成本谬误最糟糕的地方在于,你只有在放弃努力后才意识到自己浪费了多少时间。幸运的是,现在我已经犯了坚持matploblib太久的错误,你也不用了!
当考虑打印库时,我们需要几样东西:
- 快速勘探单线图
- 子集化/调查数据的交互元素
- 根据需要挖掘细节的选项
- 轻松定制最终演示文稿
目前,用 Python 做所有这些事情的最佳选择是 plotly 。Plotly 允许我们快速地进行可视化,并通过交互性帮助我们更好地了解我们的数据。此外,让我们承认,绘图应该是数据科学中最令人愉快的部分之一!与其他图书馆,绘图变成了一个乏味的任务,但与 plotly,有再一次在制作一个伟大的数字的喜悦!

A plot of my enjoyment with plotting in Python over time
现在已经是 2019 年了,是时候升级您的 Python 绘图库了,以便在您的数据科学可视化中获得更好的效率、功能和美感。
一如既往,我欢迎反馈和建设性的批评。可以在 Twitter @koehrsen_will 上找到我。
在互联网上,没有人知道你是一只狗,或人工智能
不可避免地滑向网络社区无政府状态

Photo by Andy Kelly on Unsplash
我今天看到了下面这条推文,我想谈谈它。这是一篇关于根据标题和文章生成深度虚假评论的新论文。已经有很多关于这一点的伦理含义的讨论。由于这是一篇由中国研究人员开发的论文,作为一名中国人,我想我可能会对它有更多的了解,因为我更了解中国的在线社区以及这种新技术的可能用途。
像审查,但更具侵略性
从坏的方面来说,产生深度虚假评论有点与审查相反。它不是屏蔽/删除你不想要的信息,而是生成/添加你想要的信息。审查有时不容易发现,比如你的内容在 YouTube 上不被推荐,或者你的推文由于某种原因在 Twitter 上很难搜索到。这些都发生在后台,通常由算法完成。你不知道到底发生了什么。很多时候,审查有似是而非的可否认性。另外,如果你不把内容放上去,没人能审查你,所以这是被动的。但是深度假评论就不一样了。它就在你的面前,每个人都可以看到它,他们不必等你发布任何东西来采取行动。它会淹没你的频道或时间线,使真实的信息不那么明显。与审查相比,审查是一种塑造公众意见的被动方式,深度虚假评论是一种非常积极的方式,可以创造一些“人为趋势”,以努力改变人们对某些事情的看法。它可以是一些电影评论,也可以是一些关于社会事件的报道来描述发生了什么。尽管如此,潜在的影响是巨大的。
粒度细,但规模大

Photo by hue12 photography on Unsplash
eep 虚假评论可能正处于发展的早期阶段,但它有可能在质量上变得更加精细,在数量上变得更加庞大。NLP 最近的发展经常在具有更少数据和更快的训练模型中利用迁移学习。研究人员可以利用当前预先训练的模型,如在维基百科上训练的模型作为基础,微调更具体的模型,以更少的数据更快地获得最先进的结果。预先训练的模型已经知道英语作为一种语言总体上是如何工作的,只需要学习特定类型的英语是如何说的(例如,Reddit 或 IMDB 电影评论)。利用迁移学习,深度虚假评论具有为许多利基快速开发多种模型的潜力,并实现细粒度的质量,在不同领域生成非常相关和“真实”的评论。
此外,由于它不依赖于人工干预(就像中国互联网上的“五毛钱派对”),理论上你可以有数千个脚本,运行风格略有不同的模型,并生成试图推动相同议程的评论。想想谷歌的定向广告能做得多好,你就会知道这种“定向评论”有多大的潜力。我甚至会宣称它在某种意义上可能是某种“武器”。
在一个没有人知道你是一只狗的互联网里,人们不再相信文章,因为它可以被精心制作来说服你购买一些产品或推动一些议程,但人们总的来说仍然相信评论,认为它更人性化、更隐私,因此更值得信任。现在随着假货评论的深入,连评论都不可信了。那网上还有什么是合法的?
还没有失去所有的希望
Google Duplex is very close to passing the Turing Test
阿文讨论了深度虚假评论的所有可怕迹象。也不是没有弱点。众所周知,如果不能形成高质量的对话,单靠评论是不会有太大影响的。真正打动人的是思想和情感的交流。一个评论,无论多么“真实”或“相关”,都不会产生最佳效果。当真实的人对评论进行回复,并期望得到一个聪明或有力的回复时,算法很可能会失败,至少现在是这样。这就是为什么很多聊天机器人或“Siri”之类的语音助手还没有成为主流。能够应对这一挑战就是说人工智能已经通过了图灵测试,这是一个非常高的门槛,我不相信我们还没有到那一步。谷歌的 Duplex 目前是最接近的,但仍不完全是。
所以就目前而言,我认为该算法可能会带来很多麻烦,但不能真正打动人们,产生非常深刻的影响。
还没有。
我们能做什么
老实说,我不知道这个问题的答案。我们可以监管这种技术的开发和发布,或者我们可以培养自律,就像 OpenAI 在他们著名的 GPT-2 模型中所做的那样(这是一个相应的举措,应该得到鼓励,尽管远远不能解决更大的问题)。
另一种方法是接受算法将以某种方式发展,并尝试开发一种反人工智能来检测深层假货,就像脸书和谷歌现在正在做的一样。
如果我们能发现深度造假,我们就能审查深度造假,对吗?对吧?
你认为处理这件事的最好方法是什么?请留下你的评论(请勿深假!)下面。
注:还可以参考吴恩达的拿在 deeplearning.ai 的'批,颇有见地。
欢迎任何反馈或建设性的批评。你可以在 Twitter @lymenlee 或者我的博客网站wayofnumbers.com上找到我。
在线毒性的本质
数据驱动的研究

回到互联网的早期,许多人“在线”登录到另一个世界,在那里他们可以在自己舒适的家中与来自世界另一个角落的人分享有意义的经历。网上的很多讨论和对话都发生在论坛上,这些论坛通常是为有共同兴趣的人而设的。自社交媒体蓬勃发展以来,情况发生了很大变化,与陌生人在线互动变得越来越普遍,同时也变得越来越困难,对许多平台来说,调节这种话语一直是一个技术和道德挑战。虽然言论自由很重要,但为有意义的讨论创造一个包容性的平台也是必要的。
利用拼图发布的数据作为他们在 Kaggle 上挑战的一部分,我试图探索我们讨厌网络的方式。让我们开始吧。
我们的仇恨有多多样?
对于某些群体来说,在网上进行有意义的讨论可能比我们意识到的更困难。成为在网上收到最多仇恨的群体中的一员可能真的会令人沮丧,并阻止你表达自己的观点。那么这些群体是什么呢?
当我们将不同群体的毒性叠加在一起时,男性和女性这两种性别排在最前面,各占总仇恨的 15%多一点。有趣的是,在数据集中,白人、基督徒、穆斯林和黑人加起来几乎占到了仇恨的一半(约 45%)。
Correlation heatmap
看看不同群体和不同种类的仇恨之间的关联热图,毫不奇怪,网上最受仇恨的群体面临最多的身份攻击,白人、穆斯林和黑人表现出最强的关系。
研究毒性如何随时间变化也揭示了一些有趣的见解。例如,上面的图显示了从 2016 年开始到 2017 年底这段时间内加权毒性的变化,其最高峰出现在 2017 年 1 月,穆斯林受到了打击。那么一月份发生了什么呢?快速谷歌搜索显示,这是我们的总统特朗普宣布对某些穆斯林国家实施有争议的旅行禁令的时间。看到互联网的反应真让人难过。
有毒评论的成分有哪些?
那么这些有毒的评论是由什么组成的呢?为了理解我们语言中的模式,下面的图表比较了网上最讨厌的群体的某些特征。
Text features of comments
几乎所有的评论都显示出类似的趋势,我们观察到有毒评论比无毒评论的长度稍长,这在白人和穆斯林群体中最为明显。
你可能会认为,当涉及到仇恨言论时,我们会使用更多的代词。然而,这并不特别适用于任何最讨厌的群体。除了代词之外,其他词类在有毒和无毒评论之间似乎有相似的平均出现次数,至少对于上面情节中提到的群体来说是这样。这告诉我们一些重要的事情——当谈到网上的仇恨时,语言结构并没有太大的区别。
我们的界限在哪里?

Top most frequent toxic words
言论自由很重要,但这并不意味着我们有权在那里散播毒素。那么,在决定评论是否有毒的问题上,人类注释者意见不一,那么评论看起来像什么呢?
上面的图表显示了临界毒性评论中出现频率最高的八个词,并将它们与毒性和非毒性评论进行了比较。有趣的是,在有毒和无毒评论中,临界有毒评论的所有高频词都出现在较低的数字中。“特朗普”似乎在有毒和无毒评论中出现的次数更多。
以下是三种类型的一些例子:
有毒:
This bitch is nuts. Who would read a book by a woman.
介于:
Will Whiteness History Month make all white people hate themselves? Will white students cry themselves to sleep for the rest of their lives?” Hahahahahaha. This makes me very happy. The whole idea sounds a little bit ridiculous but it’s bound to spark some real political hostility! Hoorah for PCC.
无毒:
Thank you!! This would make my life a lot less anxiety-inducing. Keep it up, and don't let anyone get in your way!
对于有毒和无毒的评论,为什么会被贴上这样的标签是显而易见的。一种使用亵渎的语言,甚至针对特定的身份,而另一种则完全没有毒性。
然而,在没有大量语境的情况下,很难做出一个介于两者之间的判断,由此可见语境在网络话语中的重要性。
我们能做什么?
不管不同的身份群体,随着时间的推移,毒性的趋势似乎是上升的。现实世界对某些人群已经不是最仁慈的了,我们真的想让互联网对他们一样坏,甚至更坏吗?在将我们的观点指向某些群体之前,问我们自己这样的问题肯定会帮助我们使互联网成为一个更文明的交流有意义话语的地方。
如果你真的想测试你的观点是否会被认为是有毒的,那就去看看我开发的这个网络应用,它使用深度学习来预测你的文本中有多少会被认为是有毒的、侮辱的、身份攻击的、淫秽的或者是威胁的。

My web application
该应用程序非常容易和直接使用。你只需要输入你的文本,它会给你结果!请在评论中告诉我你对它的看法!
非技术性人工智能指南

(Image Source: https://unsplash.com/photos/jIBMSMs4_kA)
根据麦肯锡的数据,从现在到 2030 年,人工智能将创造约 13 万亿美元的 GDP 增长。相比之下,2017 年整个美利坚合众国的国内生产总值约为 19 万亿美元。领先的人工智能科学家,如吴恩达,将人工智能描述为第四次工业革命或“新电力”。人工智能无疑是数字化转型的核心,它在整个行业的应用将极大地改变我们的世界和我们做生意的方式。问题是,许多人想参与这场人工智能革命,但他们被其技术复杂性所淹没。他们不知道人工智能有什么能力,更不用说如何为他们的公司使用它了。而这正是这篇博文旨在解决的问题:让没有技术背景的人更容易理解人工智能,这样他们就能够自己评估人工智能的可能用例。这很重要,因为没有人比他们更了解他们业务的来龙去脉,他们可以就如何在公司内使用人工智能提出最有价值的想法。
请注意,这篇文章很大程度上受到了 Andrew NG 在关于这个话题的内容的启发。
那么“流行语”的背后是什么?让我们直入主题吧。
目录:
- 对人工智能的误解
- 什么是机器学习?
- 人工智能术语
- 什么是数据?
- 你如何获得数据?
- 数据的误用
- 摘要
对人工智能的误解

(图片来源:https://unsplash.com/photos/1K6IQsQbizI)
围绕 AI 有很多不必要的炒作,这大多是因为很多人都有一个共同的误解。人工智能可以分为两个部分或两个想法:
人工狭义智能(ANI)
这描述了擅长一个特定任务的人工智能,他们在这个任务上被训练和发展。例如,这可以是一个基于历史数据预测房价的人工智能系统,或者是向你推荐 youtube 视频的算法。其他例子有预测性维护、质量控制等。ANI 是一个非常强大的工具,它将在未来几年为我们的社会增加很多附加价值。我们近年来看到的所有进步,以及我们经常在新闻中听到的,都发生在 ANI 领域。这些吸引人的新闻文章使人们错误地认为科学在 AGI 取得了很大进步,但事实上我们只在一个方面取得了进步
人工通用智能(AGI)
这是人工智能的最终目标:一个和人类一样聪明或者比人类更聪明的计算机系统。AGI 能成功地完成任何人类能完成的智力任务。这也是人工智能在人类中引起最大恐惧的部分。他们想象一个计算机比人聪明得多的世界,几乎所有的工作都是自动化的,甚至是类似终结者的场景。这就是我说的不必要的炒作。这导致了对人类未来的非理性恐惧,而事实上,我们距离真正的 AGI 还有许多技术突破。
什么是机器学习?
你可以说机器学习是人工智能的支柱技术。它使用统计技术赋予计算机程序从数据中学习的能力(例如,逐步提高其在特定任务中的性能),而无需显式编程。
机器学习是人工智能的工具,它引起了所有的炒作,并且实现了几乎所有通过人工智能系统创造的价值。它也可以分成不同的部分,但只有一个部分负责通过机器学习创造的 80%的价值。我说的是监督学习。
监督学习算法只是通过学习大量数据中的关系来学习输入(A)到输出(B)的映射。想象一下,您想要构建一个可以将电子邮件分类为垃圾邮件和非垃圾邮件的系统。你需要积累大量“有标签的”电子邮件的例子。这意味着每封电子邮件都有一个标签,它会告诉你它是否是垃圾邮件。你需要积累成千上万封带有标签的电子邮件,然后你可以将这些数据输入到有监督的机器学习算法中。在训练过程中,该算法将分析你给他的所有电子邮件,并迭代地提高对垃圾邮件和非垃圾邮件的属性区分的理解。在这个例子中,系统必须将电子邮件(A)映射到一个标签,该标签表明该邮件是否是垃圾邮件(B)。
就像我说的,你通过给他几千封带标签的邮件来训练算法。在你对这些数据进行算法训练后,你可以给他一封全新的电子邮件(该算法从未见过)作为输入,它会告诉你它是否认为该电子邮件是垃圾邮件。另一个例子是在线广告,其中输入是关于用户的信息(A ),系统的输出是告诉用户是否会点击添加的标签(B)。另一个例子是语音识别,其中输入是作为音频文件的语音(A ),输出是音频文件中所说内容的抄本(B)。另一个例子是,当你给算法一张钢板的图像(A)时,它必须告诉算法它是有缺陷的还是无缺陷的(B)。
乍看之下,这似乎是一项相当有限的技术,但如果你为它找到正确的应用,它会非常强大。这是通过人工智能为我们的社会创造附加价值的唯一主要原因。这项技术的不同用例似乎是无穷无尽的,人们每天都会发现新的用例。
人工智能术语

人工智能是一个非常复杂的领域,有很多术语,一开始可能会很混乱。你可能听说过神经网络、深度学习或数据科学。我们现在将看看人工智能最重要的术语,并揭示它们的含义,以便您能够与其他人谈论人工智能,并思考如何在您的业务中应用人工智能。
我给你最常用的人工智能术语的定义,但是请注意人工智能是一个非常不透明的领域,许多术语可以互换使用并且有时不一致。
人工智能
人工智能是计算机科学的一个领域,强调创造像人类一样工作和反应的智能机器。就像我已经提到的,当人们谈论人工智能时,他们大多指的是人工通用智能(AGI)。你应该将 AI 视为整个领域,将机器学习和深度学习视为用于使计算机智能行为的技术。
机器学习
机器学习是人工智能的一个子领域。这是一个研究领域,它赋予计算机从数据中学习的能力,而无需显式编程。所以有了机器学习,基本上就是训练程序去执行某个任务。所以机器学习往往会产生一个正在运行的 AI 系统,基本上就是一个软件。
机器学习项目的例子:
假设你是一家房地产公司,你有很多关于房子的数据。你与一家机器学习公司合作,建立一个机器学习系统来预测未来的房价。这样的系统可以让你更好地决定投资哪栋房子,并计算出清算投资的正确时间。
深度学习
深度学习是机器学习的一个子部分,它是所有媒体炒作和 ANI 大部分突破的原因,我们近年来看到了这些突破,今天仍然可以看到。
这基本上与机器学习是一回事:你给算法贴上标签的数据,它就学会预测标签。与机器学习的区别在于,你使用更现代、更复杂的算法,称为神经网络。相比之下:在机器学习中,你使用更简单、传统的算法。
由于它们的复杂性、新的技术发现以及足够数据和计算能力的可用性,深度学习算法能够在许多任务上打破以前的基准,甚至在某些任务上超过人类(例如:组织病理学图像分析,或者推荐关于网飞的电影)。
虽然,神经网络(例如,深度学习算法)几乎总是比传统算法执行得更好,但是它们具有某些缺点。如果你想了解更多,可以看看我的文章:“神经网络的利与弊”(https://towardsdatascience . com/hype-missions-of-Neural-Networks-6af 04904 ba5b)。
你经常听说神经网络是像人脑一样构建的,或者是受其启发而构建的,但实际上,它们几乎没有任何关系。的确,它们最初是由大脑激发的,但是它们如何工作的细节与生物人脑如何工作完全无关。
请注意,许多人交替使用深度学习和神经网络这两个术语。
深度学习项目的例子:
当你从高层次的角度看时,深度学习项目与机器学习项目并没有太大的不同。你只需要更多的数据、更强的计算能力和高技能的工程师。
数据科学
数据科学项目的输出通常是一组见解,可以帮助您做出更好的商业决策,例如决定是否投资某个项目,是否应该获得某些设备,或者是否应该重新构建您的网站。你可以说数据科学是通过使用统计方法、可视化等分析数据来从数据中提取知识和见解的科学。输出通常是演示文稿或幻灯片,总结结论,供高管、领导或产品团队做出某些决策。
数据科学项目的例子:
假设你在网络广告行业。通过分析你公司的销售数据,你的数据科学家发现旅游行业并没有从你这里购买很多附加产品。因此,你可以将销售团队的重点转向旅游行业的公司。
另一个例子:
假设你正在经营一家电子商务公司,你雇佣了一些数据科学家来深入了解你的业务。该项目的成果可能是一张幻灯片,展示如何修改定价以提高整体销售额的计划,或如何更有效地营销特定产品的见解。
有人说 AI 是数据科学的子集,有人说正好相反。所以,这取决于你在和谁说话,但我会说,数据科学是一个跨学科的领域,它使用了许多来自人工智能机器学习和深度学习的工具,但它也有自己单独的工具。它的目标主要是推动商业洞察力。
你可能也听说过其他的流行词汇,比如强化学习、生成性对抗网络(Gans)等等。这些只是让人工智能系统智能行动的其他工具,或者换句话说,进行机器学习,有时进行数据科学。
你现在知道人工智能、机器学习、数据科学和深度学习(例如神经网络)。我希望这让你对人工智能中最常用的术语有所了解,并且你可以开始思考这些东西如何应用到你的业务中。
什么是数据?
数据可以采取多种形式:电子表格、图像、音频、传感器数据等。这些数据分为两大类:结构化和非结构化数据。
结构化数据(“存在于巨大电子表格中的数据”)
结构化数据,顾名思义,按照预定义模式以结构化格式存储的数据。它是指驻留在记录或文件的固定字段中的任何数据。它可以是文本的,也可以是非文本的。
下面你可以看到一个来自流行的 Titanic 数据集的结构化数据的例子。它包含了泰坦尼克号上每位乘客的信息。

非结构化数据
非结构化数据本质上是指未通过预定义模式结构化的所有其他数据。它可以是文本或非文本的,但是当人们谈论非结构化数据时,他们通常指的是图像、视频、音频文件、文档等。
我已经解释了什么是监督学习。由于监督学习是最常用的机器学习类型,当人们说“数据”时,他们大多指的是带标签的数据。例如:您有一个包含 100,000 只狗和猫的照片的数据集,其中每张照片都有一个标签,要么是“猫”,要么是“狗”。
另一个例子是包含房价信息的数据集。在这里你会有关于房子的信息(如平方米,卧室数量,位置等。)以及它们作为标签的价格。
如何获取数据?
你可以在互联网上找到许多问题的数据集(有些是免费的,有些是收费的),但大多数时候你需要创建自己的数据集(如果你还没有),专门为你试图用人工智能解决的问题量身定制。
获取数据有三种主要方式:
1.人工标记
假设您想要构建一个分类器,它可以检测给定图片上是男人还是女人。为了训练这样一个分类器,你需要创建或获取许多男人和女人的图像。然后,你需要给每个图像分配一个标签:男人(标签 1)或女人(标签 2)。你也可以花钱请人帮你贴标签。:亚马逊机械土耳其人:mturk.com)。
2.观察行为。
想象一下,你经营一家电子商务公司,想要预测客户何时会购买,这反过来使你能够更好地管理你的股票等。你可以通过简单地观察你的用户在你的网站上的行为以及他们如何购物来创建一个数据集。这将产生描述每个用户的动作的数据集(由一些变量描述,例如:一天中的时间、他们点击的位置等。),加上一个标签:购买(标签 1)或者不购买(标签 2)。
另一个例子是,您观察机器的行为,这可以帮助您预测机器何时需要维护等。
3.使用免费的数据源,购买数据,或者从合作伙伴那里获取数据
像 Kaggle 这样的数据集有很多免费来源。你也可以使用谷歌数据搜索,它的工作方式类似谷歌,但只针对数据集。如果您没有找到任何东西,您可以在数据市场上寻找数据集,或者从合作伙伴那里获得数据集。
数据误用

(图片来源:https://unsplash.com/photos/1K6IQsQbizI)
初看起来,获取数据似乎很简单,但是可能会出错。在人工智能&机器学习中,我们说:“垃圾进垃圾出”,这意味着你从你的人工智能系统中获得了质量,你在训练中投入了质量。
想象一下,你知道你想要创建一个特定的 AI 应用程序,你开始获取数据(你认为有用)。你的计划是积累两年的数据,然后建立一个 AI 系统。这是非常糟糕的做法。在这种情况下,正确的方式应该是获取你能够获得的数据,并尽快将其交给人工智能专家。他可以在经过一番评估后告诉你,其中哪些部分是有用的,哪些部分是完全没用的,你应该额外补充哪些数据。这样做,你就不会有这样的风险:你在两年内获得了数据,然后你意识到这是错误的数据,你不能用它做任何事情。为了节省金钱和时间:与专家一起快速评估您的数据质量。
另一个大问题是不正确的标签。例如:被标记为狗的猫图像和被标记为猫的狗等。你明白我的意思。这阻止了你的算法学习真正区分猫和狗的东西,并完全混淆了它。好消息是,随着数据总量的增加,错误标签的问题变得越来越不重要。如果你有一个超过 200 万张带标签的猫狗图片的巨大数据集,一些不正确的标签不会影响它的性能。
另一个问题是,一些人假设,因为他们的公司有很多数据,这些数据是有用的,或者一个人工智能团队可以让它变得有用。那是完全错误的。虽然,数据越多通常越好,但你可以有数十亿的数据条目,这些条目毫无价值,即使是世界上最好的人工智能工程师也无法从毫无价值的东西中创造价值。因此,请不要把数据扔给人工智能团队,并假设它在某种程度上是有价值的。你可能认为这是常识,但我在业内多次看到这种情况,因为对数据和 AI 的一种误解。甚至有创业公司的成立是因为人们认为他们拥有有用的数据,而事实上他们没有。其他问题包括缺少值、多种类型的数据(可以解决,但代价很高)等等。
摘要
我希望这篇文章从高层次的角度为你提供了人工智能领域的坚实介绍,并且你现在对人工智能如何工作以及它真正能做什么有了更好的理解。如果你觉得有什么遗漏或者解释的不够清楚,可以在评论里告诉我。总结:你了解了关于人工智能的常见误解(例如,人们经常混淆 AGI 和人工智能),以及机器学习和数据到底是什么。你现在已经熟悉了该领域最常见的术语:数据科学、深度学习、人工智能和机器学习。此外,你还学习了从哪里获取数据,你不应该如何获取数据,以及拥有大量数据并不一定意味着你可以用它来做人工智能。
这篇文章最初发表在我的博客上(【https://machinelearning-blog.com】)。
笔记本反模式
在过去的几年中,试图解决将机器学习模型引入生产的挑战的工具有了很大的增加。这些工具似乎有一个共同点,那就是将笔记本电脑整合到生产流程中。本文旨在解释为什么这种在生产中使用笔记本的趋势是一种反模式,并给出一些建议。
什么是笔记本?
我们先来定义一下这些是什么,给那些没接触过笔记本的读者,或者换个称呼。
笔记本是网络界面,允许用户创建包含代码、可视化和文本的文档。它们看起来如下:

笔记本有什么用?
与你从介绍中可能得到的相反,笔记本并不都是坏的。它们在某些情况下非常有用,这将在下面的小节中描述。
数据分析
这可能是它们最常见的用途。当遇到一个新的数据集时,人们需要挖掘数据并进行某些可视化,以便理解它。笔记本电脑有助于实现这一点,因为它允许我们:
- 快速开始
- 在一个地方查看原始数据和可视化
- 可以使用许多现有的清洁和可视化工具
- 记录我们的进展和发现(可以提取为 HTML)
实验
当谈到机器学习时,在选择解决问题的最终方法之前,会进行大量的实验。笔记本可以用来处理数据和各种模型,以便了解哪些数据适用,哪些不适用。
一次性任务
笔记本也是一个很好的游乐场。有时,一个人需要执行一次自动化的任务,但可能不熟悉或不习惯编写 bash 或使用其他类似的工具。
教学或技术演示
在讲授 python 或为同行进行技术演示时,您可能希望在后面立即显示代码和代码的结果。笔记本在这方面非常有用,因为它们允许你在同一个文档中运行代码并显示结果。它们可以显示可视化,用标题表示部分,并提供演示者可能需要的附加文档。
代码评估
如果你的公司向候选人提供代码挑战,笔记本可能是一个有用的工具。这个也要看你的公司需要考核什么。笔记本允许候选人将文档、解释和他们的解决方案合并到一个页面中。如果候选人给出了一揽子要求,他们也很容易为评估员运行。然而,他们不能提供的是对候选人对软件工程原理的理解的足够广泛的评估,我们将从下一节中更好地理解。
笔记本不擅长什么?
如今,许多公司都在努力解决将模型投入生产的难题。这些公司中的数据科学家可能来自非常不同的背景,包括:统计、纯数学、自然科学和工程。他们有一个共同点,那就是他们通常习惯使用笔记本电脑进行分析和实验,因为该工具就是为此目的而设计的。因此,提供基础设施的大公司一直致力于通过在笔记本电脑生态系统中提供“一键式部署”工具来弥合“生产差距”,从而鼓励在生产中使用笔记本电脑。不幸的是,由于笔记本电脑从一开始就不是为此目的而设计的,这可能会导致生产系统不可维护。
生产笔记本的想法总是让我想到连体画的实用性——看起来很美,但在某些场景下非常不实用。
现在我们知道了笔记本电脑可以做得很好的地方,让我们在下面的章节中深入了解它们真正不擅长的地方。
持续集成
笔记本电脑不是为通过 CI 渠道自动运行或处理而设计的,因为它们是为探索而设计的。它们倾向于涉及文档和可视化,这将给任何 CI 渠道增加不必要的工作。尽管可以将它们提取为普通的 python 脚本,然后在 CI 管道上运行,但是在大多数情况下,您会希望为脚本运行测试,而不是脚本本身(除非您正在创建一些需要由管道公开的人工制品)。
测试
笔记本不可测试,这是我对它们的主要痛点之一。没有围绕这些创建测试框架,因为它们的目的是作为游戏场所,而不是生产系统。与流行的观念相反,数据产品中的测试与其他软件产品中的测试一样重要和可能。为了测试一个笔记本,需要将笔记本上的代码提取到一个脚本中,这意味着笔记本无论如何都是多余的。它需要被维护以匹配提取的脚本中的代码,否则会陷入一些未经测试的混乱状态。
如果您想了解更多关于测试 ML 管道的知识,请查看文章:测试您的 ML 管道。
版本控制
如果您曾经不得不在 git 或任何其他版本控制系统上放置一个笔记本并打开一个拉请求,您可能已经注意到这个拉请求是完全不可读的。这是因为笔记本需要跟踪单元格的状态,因此当它运行来创建您漂亮的 HTML 视图时,幕后会发生许多变化。这些更改也需要版本化,导致视图不可读。
当然,您可能在一个使用配对而不是拉请求的团队中,所以您可能不关心拉请求不可读。但是,由于可读性降低,您失去了版本控制的另一个优势:当恢复代码,或者查看旧版本中可能引入或修复了问题的更改时,您需要完全依赖提交消息并手动恢复以检查更改。
这是笔记本电脑的一个众所周知的问题,但也是人们正在努力解决的问题。至少在你的版本控制系统的 web 视图中,有一些插件可以用来缓解这个问题。这种工具的一个例子是回顾笔记本应用。
合作
在笔记本上协作很难。你唯一可行的合作选择是配对,或者像文明的游戏一样在笔记本上轮流。这就是为什么:
- 笔记本有许多在后台管理的状态,因此在同一个笔记本上异步工作会导致许多不可管理的合并冲突。对于远程团队来说,这可能是一个特别的噩梦。
- 所有的代码都在同一个地方(除了导入的包),因此相同的代码会不断地发生变化,这使得跟踪变化的效果变得更加困难。由于缺乏测试(如上所述),这尤其糟糕
- 上面版本控制中已经提到的问题
状态
国家在上面都已经提到了,但它值得自己的重点。笔记本有笔记本宽状态。每次运行单元时,此状态都会发生变化,这可能会导致以下问题:
- 不可管理的合并冲突发生在状态内部,而不是代码本身
- 版本控制缺乏可读性
- 缺乏可重复性。您可能已经在笔记本中处理了一个不再可重现的状态,因为导致该状态的代码已经被删除,但是该状态还没有被更新。
工程标准
笔记本鼓励糟糕的工程标准。我想在这里强调一下鼓励这个词,因为笔记本用户可以避免很多这样的事情。笔记本中常见的反模式有:
- 依赖状态:笔记本严重依赖状态,尤其是因为它们通常涉及到对前几个单元格中的数据执行一些操作,以便将这些数据输入到一些算法中。对状态的依赖会在整个代码中导致意想不到的后果和副作用。
- 复制:人们不能将一个笔记本导入到另一个笔记本中,因此当在不同的笔记本中尝试多个实验时,人们倾向于复制粘贴相同的部分。如果这些笔记本中有一本发生变化,其他的就会立即过时。这可以通过提取代码的公共部分并将其导入到单独的笔记本中来改善。在笔记本本身中也可以看到很多重复,尽管这很容易通过使用功能来避免。
- 缺乏测试:我们无法测试一台笔记本电脑,正如我们在上面的测试部分所看到的。
包装管理
笔记本没有包管理。笔记本使用安装在其运行环境中的软件包。需要手动跟踪该特定笔记本使用的包,因为在相同环境中运行的不同笔记本可能需要不同的包。一个建议是,总是在一个全新的虚拟环境中运行一个新的笔记本电脑,单独跟踪该特定笔记本电脑的要求。或者,一个环境中的所有笔记本都依赖于一个需求文件。
那么我们能做什么呢?
很好,现在我们知道了为什么生产中的笔记本电脑是一个坏主意,为什么我们需要停止把实验工具打扮成生产工具。然而,这给我们留下了什么?这取决于你的团队的技能和结构。您的团队很可能由以下人员组成:
- 具有工程技能的数据科学家
- 或者,数据科学家专注于实验,ML/数据工程师将模型投入生产
所以我们来看看下面的两个场景。
拥有工程技能的数据科学家团队
在这种情况下,您的数据科学团队负责端到端的模型。也就是说,负责实验和生产。以下是一些需要记住的事情:
- 如果笔记本是首选工具,您可以继续使用笔记本进行实验,但在以下情况下,请远离笔记本:
- 合作
- 把模型带到你操场以外的任何地方
2.从现有的软件工程框架和原则中学习
3.查看其中的一些工具和架构,它们可能会帮助您设计您的基础架构,或者只是提供一些灵感(请注意,有时可以选择笔记本电脑—这是一个陷阱!):
工程和数据科学技能的分离
一些较大的组织更喜欢更专业的技能,数据科学家从事实验工作,ML/数据工程师将这些工作投入生产。以上场景中列出的要点仍然适用,但我有一个针对此场景的额外建议:
求求你,求求你 不要把模特扔过围栏! 坐在一起,交流并结对/mob 编程,将管道投入生产。 除非为最终用户提供价值,否则模式不会起作用。
结论
像任何工具一样,有使用笔记本的地方,也有避免使用笔记本的地方。让我们做最后一次回顾。

总之,我希望您能从这篇文章中获得两条信息:
- 给 ML 从业者:笔记本是用来实验的,不是用来生产的。坚持将软件工程原理和框架用于生产,它们是根据我们应该利用的过去的经验设计的。
- 对开发工具的人来说:我们很感谢你让每个人的工作变得更简单,♥,但是请不要再使用笔记本反模式了。专注于创建易于使用的工具,鼓励积极的软件工程模式。我们想要:
- 易测性
- 版本控制
- 合作
- 再现性
- 可量测性
原载于 2019 年 10 月 21 日http://intothedepthsofdataengineering.wordpress.com。
古语云:“三个臭皮匠,顶个诸葛亮。”
结对编程——一些历史、技术和我坚决支持它的原因。

我经常听到人们说,当他们独自工作时,他们能够发挥出最佳水平。还有,我明白有些想法/方法对一个人有利,对另一个人未必有利。然而,我坚信“三个臭皮匠胜过一个诸葛亮”这句话下面的两个视频是两个人“和谐”合作并取得巨大成功的优秀音乐范例。第一首是莫札特的《D 大调四手联弹钢琴奏鸣曲,K.381/123a》,第二首是泽金哈·德·阿布鲁的四手联弹吉他作品《提科·提科·诺·福巴》:
音乐当然不是合作有利于项目成功的唯一领域。布法罗大学的社会学教授迈克尔·p·法雷尔(Michael P. Farrell)在他的著作《 合作圈:友谊动态和创造性工作 》中对紧密的创造性群体进行了研究。这项研究着眼于六个合作圈子中的群体动态,如社会改革家伊丽莎白·卡迪·斯坦顿和苏珊·b·安东尼,以及 c·s·刘易斯、j·r·r·托尔金和《暗示》。他写道,“大多数为新愿景奠定基础的脆弱见解,并不是在整个团队在一起时出现的,也不是在成员单独工作时出现的,而是在他们成对合作并相互回应时出现的。”

Georges Braque and Pablo Picasso
纵观历史,协作为重大成果提供框架的情况屡见不鲜;莫奈和雷诺阿,巴勃罗·毕加索和乔治·布拉克,蝙蝠侠和罗宾……不胜枚举!事实上,在过去的 35 年里,大约一半的诺贝尔生理学或医学奖都颁给了科学合作伙伴。
在“二的力量:在创造性的组合中寻找创新的本质”中,约书亚·沃尔夫·申克引用了一段采访,其中约翰·列侬解释说,他或保罗·麦卡特尼将“写出好的部分,简单的部分,比如‘我看了今天的新闻’或其他什么。”在另一个到来之前,他们中的一个会缺乏灵感。列侬接着说,“我唱一半,他就会受到启发去写下一段,反之亦然。”任何人都可能时不时地陷入创作的困境,但两个人同时这样做是罕见的。**
维基百科上结对编程的正式定义是:
结对编程 是一种敏捷软件开发技术,两名程序员在一个工作站一起工作。一个是驱动,编写代码,而另一个是观察者或导航者,在每一行代码被输入时对其进行检查。这两个程序员经常交换角色。
结对编程不是轮流使用计算机,也不是采用老师对学生的方法。指导关系与两个人平等合作完全不同,即使其中一个人有更多的经验。结对编程的核心是让两个人一起思考同一个问题,这样就可以比一个人单独解决问题更快、更高质量地开发出解决方案。随着质量的提高,收益将在项目的后期显现。一开始可能会感觉很尴尬,但是像其他新技能一样,结对编程需要一些时间来适应。结对编程有点类似于约会;这是一种社交技能,会随着练习而提高。首要目标是努力以合作的方式发挥作用。这包括每个合作伙伴的给予和索取,无论他们的公司地位如何。一个普遍的观点是,配对程序的理想方法是并排坐在显示器前,前后滑动键盘。稍后会有更多相关信息…

结对编程的结构有两个角色:驱动者和导航者。
- 驱动就是手放在键盘上写代码的那个。
- 导航员是在输入每一行代码时对其进行观察和检查的人。
司机的根本工作是处理打字和将想法写入电脑的细节。然而,驾驶员的主要目标是在信任和支持下为导航员服务。如果他们有问题,他们应该表达自己的观点或挑战事物,但由于他们的主要工作是键入代码,他们很难提前几个步骤进行思考。虽然这需要在不完全理解任务的情况下舒适地工作,但这通常是一种更有效的工作方式。
另一方面,由于不必键入代码,导航器能够与更全面的上下文一起工作。导航器的总体目标是为驾驶员提供清晰和容易处理的信息。他们应该用一种更概念性的思维框架来思考这个问题。导航器应该及时地给驱动程序提供实现可接受的抽象级别所需的指令,这样驱动程序就可以最有效地输入它们。因为导航者是在一个更高的抽象层次上思考问题,他们对手头的整体任务和他们想要去的方向有一种感觉。

The diagrams I found had poor resolution quality, so I made this on creately.com
如果驾驶员在导航员指挥的时候有了下一步该做什么的想法,解决的办法就是交换角色。这可以帮助双方保持彼此同步。集思广益的时候互相交换想法不仅会减少错误,还会激发创造力和工作流程。出色的结对程序员的一个关键特征是知道什么时候说“让我们先试试你的想法。”
我能给结对程序员的一个建议是休息一下,互相问问题。这将有助于你们参与到有意义的对话中,并鼓励彼此加深理解。休息也是来回传递键盘的理想方式。
配对和工作站流程

A typical pair programming setup
在研究过程中,我发现有几种不同的配对策略。一些可能的配对选项可以在这里找到。在我为这个博客进行研究的过程中,我发现了一个更有趣的方法,叫做“乒乓配对”本质上,这种方法是这样的:
- 编码员 A 写了一个新的测试,发现它失败了。
- 编码器 B 实现通过测试所需的代码。
- 程序员 B 编写下一个测试,发现它失败了。
- 编码器 A 实现通过测试所需的代码。
- 回到顶端。
这听起来不像是我理想中的工作流程,但我不会去敲打它,直到我尝试过。
最近我从一位同学那里了解到一件令人兴奋的事情,那就是 Atom 有一个名为 Teletype 的包,它允许开发人员与团队成员共享他们的工作空间,并实时协作编写代码。这是一个高级的屏幕共享门户,允许每个主机的访客在同一个工作区内单独键入和编辑代码。当主持人在文件之间移动时,协作者会自动跟随活动选项卡。我认为这是一个非常酷的功能,我肯定会在我的下一个项目中测试这个功能,看看我的团队的生产力是否可以提高。
一些好处:
- 结对压力有助于确保项目的及时交付
- 改进新团队成员的入职
- 更好的团队建设和沟通
- 降低修复缺陷的成本
- 更少的分心,导致更高的生产力
- 程序员信心的增加
- 提高满意度
- 持续审查
需要记住的一些提示:
全天“频繁地”交换角色是很重要的。你不必设置明确的计时器,因为它会中断工作流程。许多人建议你应该从几分钟到二三十分钟转换角色。成对轮换可能是有益的。然而,如果你是一个经理,总是特别地分配每一对或者选择接近项目发布的有选择性的对,这不是建议的方法。
“从单独编程到协作编程的调整期就像吃了一个辣椒。第一次尝试,可能会因为不习惯而不喜欢。然而,你吃得越多,你就越喜欢它。”— 匿名
上面的引用真的引起了我的共鸣。此外,我写这篇博客的最初灵感来自于阅读《纽约客》的文章“成就谷歌的友谊”(快来看看!很棒的读物)。这篇文章详细描述了杰夫·迪恩和桑杰·格玛沃特如何成为谷歌的高级研究员——该公司第一位也是唯一一位 11 级工程师。如果谷歌的两位顶级工程师能够成功地改变公司以及整个互联网的道路,这让我相信结对编程和实现高度之间有着重要的关联。
最后…
一位成功的敏捷编程教练卢埃林·法尔科(Llewellyn Falco)使用了短语“强风格结对编程”他说“为了让一个想法从你的大脑进入电脑,它必须经过其他人的手。这种编程风格完全是为了增加沟通和协作。”我从卢埃林的博文中得到的主要启示是,沟通和协作是成功的基础。
就我个人而言,从经验来看,我在两人一组的环境中工作效率更高。我的音乐背景告诉我,比起成为独唱艺术家,我更喜欢在合奏中表演。这并不是说我依赖他人,而是说,当我觉得有义务比自己做得更好时,我的信心会成倍增加。还有,我是那种靠别人的精力吃饭的人。当我结对编程时,我的生产率显著提高。我目前的技能表明,我目前是一个更好的导航员,而不是司机,但我计划专注于在这两方面都很棒。我希望读完这篇文章后,你能明白为什么这种类型的合作受到鼓励,为什么它可能对你未来的项目有益。

lolz
有所有朋友数据分析的那个
为最受关注的节目提供另类的视角

The crew (source)
《老友记》是我最喜欢的电视剧之一(可能是最喜欢的)而且我肯定不止我一个人不止一次地重播了整个系列。我一直在想,对于这个如此熟悉的团体,是否还有什么需要了解的。看到这个用 R 看节目的帖子后,我觉得我自己也要试一试。这篇文章深入到该剧的剧本中去寻找更多的东西,包括最受欢迎的角色和他们在这几季中的旅程。但是首先它将介绍使用 Python 格式化文本文件并将其导出到 SQLite 数据库的方法。本项目中使用的文本文件包含来自电视节目 F.R.I.E.N.D.S .的脚本,并从该资源库下载。然后提供一些关于我们熟知的角色的有趣发现,有些是意料之中的,有些是令人惊讶的!这是一个非常有趣的爱好项目,也是我一直想做的事情。随意跳过编码部分,直接跳到可视化,希望你喜欢!
遍历脚本
每个脚本都是一个文本文件,在脚本实际开始之前包含一些关于剧集、标题、作者和转录者的信息。我们需要找到一种方法将一个脚本转换成数据库中的行,然后解决如何为多个脚本做这件事。

Example of a Script in the .txt Files
我们将开始尝试迭代脚本。它们存储在多个文本文件中,并使用格式season.episode进行了有益的命名。我们可以利用 python 中的操作系统库来浏览我们的文本文件。

Currently where all Scripts are Stored
目前,下面的代码将遍历我们的scripts文件夹中的所有文件来获得filename。然后使用.分隔符分割文件名,这些数字存储在变量中,并附加到主列表中。创建master_list是因为最终我们想要将结果存储在数据帧中。
正则表达式
现在我们知道了如何浏览我们朋友的文件,我们需要看看如何从每个文件中分离出行。为了做到这一点,我将使用正则表达式,脚本是相当混乱的,格式都不同,取决于转录。相关的模式是character_name: speech,但是这有时会跨越多行。正则表达式就像一个真正强大的ctrl-F,它们被用来搜索字符串中的模式,一个很好的介绍可以在这里找到。我们的正则表达式的目的是匹配粉色点所指示的预期行之前的空间。我们的目标是找到这个空间,这样我们就可以使用这些位置分割整个文件,给我们提供字符-语音对组。

Purple dots indicate where the expression will match
使用的正则表达式如下所示。首先我们在冒号\w+(?=:)前匹配字符串,所以现在我们已经“找到”了每个字符的名称。然而,如果我们想匹配之前的空间,我们必须使用\s。您可以自己测试一下,正如您在示例中看到的,正则表达式也匹配编写器和转录器之前的空格,这将需要在之后删除。现在我们用 python 实现正则表达式。在下面的代码中,我们也可以将角色的名字和语音分开。
这与我们在上一节中的循环相结合,并且mater_array被转换成熊猫数据帧:
清洁
尽管我们尽了最大努力,但结果仍未 100%可供分析。我们的第一个问题是每个字符有多个名称,这可以通过执行sorted(df['char'].unique())看到,这将返回列中所有唯一值的列表。要纠正这一点需要一些手工工作,包括查看某个名字的多种拼写,区分大小写!要更改名称,我们使用熊猫replace方法:
现在我们需要解决正则表达式引起的问题,因为它抓住了作者和转录者。这些行的格式都以结束于。因此,正则表达式将冒号前的最后一个单词作为字符名。这意味着我们可以通过用删除字符来删除所有这些行。再见。
- 由编写
- 由转录

Clean data is key! via gfycat
感情
在处理字符串时,情感分析就摆在桌面上,更深入的讨论可以在这篇博文中找到。使用类似的方法,对于数据库中的每一行,计算情感分数并存储在line_sent列中:
导出到 SQL
现在,这可能不是一个必要的步骤,因为我们将使用的大多数 SQL 命令可以使用 pandas 来完成。然而,我认为有时改变不同的数据帧扫描有时会变得混乱,SQL 语言可以提供一种更可读的方式来访问这些数据。因此,我们现在要将熊猫数据帧移到 SQL 数据库中。我正在使用 SQLite 的 DB 浏览器。
最后,我们的脚本被格式化并放置在 SQL 数据库中。这种方式的数据争论可以将原始数据转化为更有用的数据集。即使我们没有给数据集增加太多东西,不同的组织结构也可以进行更广泛的分析。现在我们有了以这种方式格式化的脚本,我们可以利用 SQL 来进一步深入了解该节目,如本文中所述。

via tenor
最受欢迎的朋友
这一部分着眼于剧中每个角色的角色。前一篇文章介绍了将数据放入 SQL 数据库的过程。这是为了使类似“在整个系列中谁的行数最多”这样的查询相当简单:

《瑞秋》以 9294 行位居榜首,《罗斯》紧随其后(9070 行),每集平均 39 行左右。这并不完全令人震惊,因为它们都是 10 季的主要情节。几乎形影不离的是莫妮卡和钱德,分别是 8403 和 8398。

纵观整部剧的台词数量,我们可以看到罗斯和瑞秋一直主导着台词,直到第四季。这是伦敦集发生的时候,钱德勒和莫妮卡有了一个更大的共同故事,翻译了更多的台词。我认为菲比没有得到更多台词是一种耻辱,她每一季都有 800 句台词。雷切尔确实说过:
呃,有人离开这个团体只是时间问题。我一直以为菲比应该去。 —拉结 5.05
谈论最多的

via giphy
说得最多的人并不一定意味着你最受欢迎,所以现在我们来看看谁说得最多。这是一个相当困难的任务,以准确捕捉每个字符的所有提及。一个可能的解决方案是列出每个角色的昵称(如果我漏掉了什么,请告诉我!).值得注意的是,这是我们在这篇文章中用来查找每个角色的参考资料的方法,使用下面详细描述的昵称。
为了得到计数,我们首先遍历字符,记录提及次数。使用嵌套的 for 循环来获取每个角色的昵称,我们使用 pandas count()方法来记录被提及的次数。

当只使用全名时,罗斯是被提及最多的。“Chan”、“Joe”、“Mon”和“Rach”都比他们的全名被提到更多。这支持了包含昵称的决定,但也强调了结果对选择正确的名字是多么敏感。

话
流行语
有一些流行的口号,例如“臭猫”在整个节目中被提到了 37 次。臭名昭著的“我们分手了”这句台词被提到了 17 次。乔伊的搭讪语“你好吗”被说了 37 次。
最大词汇量

via tenor
另一个有趣的方面是每个角色使用的词汇。这是通过首先选择如上所示的主要人物所说的所有台词来完成的。之后所有非字母字符都被删除。然后,每个字符的每一行被拆分成单词(使用中间的空格进行拆分)并添加到一个集合中。一个集合不允许有重复的值,这非常适合我们在这种情况下的使用。
不出所料,罗斯名列榜首,他对恐龙的热情是整个系列的一个笑话。尽管他的职业生涯始于纽约史前历史博物馆,后来成为纽约大学的教授,但一些现实生活中的古生物学家并不相信。看到乔伊排在最后,我肯定不是唯一感到惊讶的人。考虑到这个角色的典型漫画,乔伊似乎确实有一些话,即使是编造的!

你好吗?
由于我们已经为每条线计算了一个情感分数,所以我们能够在整个赛季中监控这个分数。

上图显示了瑞秋和罗斯在前两季的情感轨迹。计算每集的总情感分数,因为分数的范围在-1 到 1 之间,总分数将给出特定剧集中大多数情感的指示。
第 104 集是瑞秋拿到第一份薪水的地方,这可能是积极情绪的原因,第 117 集乔治·克鲁尼客串也是如此。罗斯在第一集经历了高潮和低谷,在第 112 集发现他怀了个男孩,然后在第 121 集和马赛尔说再见。最后,两个角色都在第 207 集出现了一个高峰,罗斯发现了,矛盾的罗斯发现瑞秋对他有感觉。这可能是为什么罗斯对那一集的总体感觉是“低调但积极的”。
网络
到目前为止,我们主要看了我们的朋友的孤立,这里我们将看到他们如何互动。看看一个角色提到另一个角色的次数,说出这部剧的名字,这样我们就可以画出每个角色与另一个角色之间的关系网络。下表显示了结果;从左至右阅读告诉我们,瑞秋提到自己 187 次,提到乔伊最多:739 次。从上到下读可以理解为瑞秋提到钱德勒 321 次,罗斯提到他 332 次,妻子(莫妮卡)提到他最多:622 次。
表格中有一些有趣的发现,瑞秋被罗斯提到最多(622 次,一次让他付出了婚姻的代价),罗斯被瑞秋提到最多:550 次。有趣的是,虽然莫妮卡说钱德最多,但钱德说乔伊最多。

via gfycat
这张表格确实提供了一些见解,但这并不是审视这些发现的最令人满意的方式。所以我们可以使用 Github 上提供的功能创建一个和弦图。每个字符部分的和弦的大小代表他们说了多少次连接字符的名字。换句话说,如果您从左到右阅读表中的值,这就是每个字符部分显示的内容。通过观察粉红色的切片,可以更清楚地看出乔伊和莫妮卡在钱德勒的提及次数中所占的比重。

图和中心性
所以我们现在已经建立了一个朋友网络,我们可以计算他们每个人的中心性分数。中心性旨在回答这个问题:谁是这个网络中最重要或最核心的人?。显然这是一个取决于重要性定义的主观问题。在我们定义我们的重要性度量之前,我们必须首先把我们的表转换成一个图。我们将使用网络 x,使用上表中的值(存储在network_data中)创建一个有向加权图。节点是字符,权重是提及次数。我们还可以通过检查节点之间的边权重来检查图形是否创建正确。**
**out: {'weight': 426} # yay! it matches our table**
现在我们已经创建了我们的图表,我们计算特征向量中心性作为重要性的度量(用于谷歌的页面排名)。该算法旨在基于与重要人物的联系,量化人们在社交网络中的影响力。在这种情况下,我们将“重要性”定义为与重要人物的联系。通过强调与其他人的联系,很容易看出这一点如何适用于其他更大的网络,如 Twitter。使用“互动”(转发和喜欢)作为权重,这种算法可能能够给你一个网络中连接最多的账户,潜在地获得比关注者最高数量更多的洞察力。对任何希望衡量(或改变)公众意见的人来说,这是有价值的信息。
Networkx 使生活变得简单,应用eigenvector_centrality_numpy方法并定义权重来计算每个节点的分数。按重要性排序的结果如下所示。最初看到结果时,我很惊讶,但是当我想到这个措施时,它开始变得有意义了。我认为乔伊可以被视为团队的粘合剂,总是与其他角色互动。考虑到罗斯和瑞秋占据了彼此的大部分时间,看到他们在低端并不完全令人惊讶。这个帖子对菲比来说不太好🙁 .这些结果是主观的,解释也是如此,我很想听听你对中心性分数的看法。
我希望你喜欢这个流行节目中的另类观点。虽然我知道《老友记》可能不是每个人都喜欢的,但我确实认为这种分析可以适用于几乎任何长期播出的剧集。也许你可以为你最喜欢的节目尝试一些类似的东西,让我知道你找到了什么!
感谢阅读🙂
**原载于【https://quotennial.github.io/friends-analysis/】
数据中的阿片类药物危机
使用医疗保险和医疗补助处方数据探索性分析阿片类药物过量死亡

众所周知,美国正处于阿片类药物危机之中。
可以争论的是这场危机的原因。作为一名药学出身的人,我对处方很感兴趣。具体来说,如果我能找到阿片类药物处方和过量死亡之间的关联。
背景
阿片类药物流行是一个全国性的问题,涉及处方止痛药和非法阿片类药物,这两种药物都可能导致潜在的致命过量。
它始于 20 世纪 90 年代末,当时制药公司开始推广处方止痛药,承诺可以缓解疼痛而不会上瘾。
医生开始更频繁地开出处方,阿片类药物的销量飙升。
成千上万的人开始滥用止痛药,其中许多人上瘾或用药过量。
奥施康定滥用
奥施康定于 1996 年首次亮相,其制造商普渡制药公司大力宣传其可提供 12 小时止痛效果。
然而,即使在上市之前,临床试验表明患者只能获得大约 8 小时的疼痛缓解。随着药效逐渐消失,患者会出现戒断症状——包括强烈的药物渴求——这会促进成瘾和依赖。
正如《洛杉矶时报》的文章所述,超过 700 万美国人滥用奥施康定——这种药物通常被认为是引发阿片类药物流行的罪魁祸首。
阿片类药物概述
阿片类药物是一类从罂粟植物中提取的高成瘾性麻醉物质,包括合法的和非法的。它们可以是处方止痛药(Percocet、MS Contin、Duragesic)或街头毒品(海洛因)。
所有阿片类药物都会刺激大脑中的阿片受体。虽然它们的威力各不相同,但它们都会抑制中枢神经系统(减缓身体功能——包括呼吸),减少身体和心理上的疼痛。
阿片效应
阿片类药物有许多有益的作用,最明显的是缓解疼痛。它们也能引起放松和舒适的感觉,困倦,并能抑制咳嗽。
不幸的是,它们也有许多不利影响。一些最常见的负面影响包括便秘、恶心和呕吐、嗜睡和情绪波动。
使用阿片类药物还会导致成瘾,在过量的情况下,会导致呼吸衰竭和死亡。
数据
数据来自几个公开的来源。
- 医疗补助数据 :该数据集报告由州医疗补助机构支付的承保门诊药物的药物利用数据。数据包括州、药品名称、NDC、处方数量和报销金额。
- 2016 年 Medicare D 阿片类药物处方者汇总文件: 该文件显示了参与 Medicare D 部分计划的提供者的阿片类药物处方率。这是一个处方者级别的数据集,包含处方者专业、州和邮政编码的阿片类药物索赔的数量和百分比信息。

A single provider wrote over 21,000 opioid prescriptions in 2016 — just for Medicare Part D patients!
- Medicare 提供者利用和支付数据集: 该文件包含 D 部分参与提供者处方的药物级别信息,按品牌和通用名列出。
- 药品数据: 药品数据来自 HEDIS 用药列表目录。药物按品牌和通用名以及药物类别列出。
- 死亡数据: 死亡数据取自 CDC WONDER。数据基于死亡证明,包含单一潜在死因和多达 20 种其他多种死因。
质疑疾控中心奇迹
CDC WONDER 是一个“向公众提供疾病控制和预防中心(CDC)信息资源”的在线系统。。。使用 CDC WONDER,您可以搜索和阅读关于公共卫生问题的已发布文件。。。并在疾控中心的信息系统上查询数字数据集。”在这种情况下,我们感兴趣的是死亡率数据。
死亡是用 ICD-10 编码分类的。使用潜在的死亡原因代码识别药物中毒死亡:
- X40–X44(意外中毒)
- X60–X64(故意自我投毒)
- X85(毒品袭击)
- Y10–Y14(不明原因中毒)
药物中毒死亡通过 ICD-10 分类代码进一步分类:
- T40.0 鸦片
- T40.1 海洛因
- T40.2 其他阿片类药物(羟考酮、氢可酮、吗啡、氢吗啡酮)
- T40.3 美沙酮
- T40.4 其他合成麻醉剂(芬太尼、曲马多)
- T40.5 可卡因
- T40.6 其他和未分类的麻醉剂
- T40.7 大麻衍生物
- T40.8 麦角酰二乙胺(LSD)
- T40.9 其他和未分类的精神障碍药物(致幻剂)
特征工程和数据清理
因为数据来自五个不同的来源,所以需要进行大量的清理。我从过滤吗啡当量(MED)的药物数据开始。临床医生使用 MED 来比较不同阿片类药物的相对强度。使用 HEDIS 药物数据,我删除了 MED 为空的所有行,因为非阿片类药物没有 MED。接下来,我使用阿片类药物数据来过滤出医疗保险和医疗补助数据集中感兴趣的行。
为了合并数据集,我合并了 state(公共元素)上的所有数据。
最后,我设计了新的特性,包括每个处方的单位、每个受益人的日供应量以及平均值和中位数。
探索性分析
首先,我们看到由专科医生开出的阿片类药物。有趣的是,家庭医疗和内科的全科医生开的阿片类药物数量最多。
虽然这可能是因为家庭实践中的处方数量比疼痛管理等专业中的处方数量多,但进一步调查将是有趣的事情。

在这里,我们可以看到最常用于 Medicare 部分患者的阿片类药物。维柯丁显然是最受欢迎的。

下面是一个图表,显示了每个州每份处方中阿片类药物单位的平均数量。许多国家的类阿片处方平均超过 70 个单位。
最近,各国对初始阿片类药物处方进行了限制。更多信息可在这篇药房时报文章中找到。有趣的是,看看这些新的处方限制是否会导致每张处方开出更少的单位。

在这里,我们可以看到 1999 年至 2016 年期间每年阿片类药物死亡人数是如何增加的。有趣的是,美沙酮相关的死亡减少了,而所有其他类型的阿片类药物相关的死亡增加了。大约从 2013 年开始,与合成麻醉剂(包括芬太尼在内的一组药物)相关的死亡人数开始飙升。

进一步研究
有趣的是,通过查看以下内容来扩展此处的分析:
- 死者人口统计
- 人种
- 年龄
- 收入
- 多年处方数据
- 商业和自费处方数据
- 阿片类药物住院
- Narcan 访问和使用
- 全国药物使用调查
限制
药物数据的局限性
药物数据有很大的局限性。最值得注意的是,这些数据并不代表美国处方的所有阿片类药物。
医疗保险和医疗补助数据仅代表一部分处方,并不代表医生的全部实践。值得注意的是,失踪人口是商业保险和自费患者。
虽然医疗保险数据更详细,包含个人处方者和邮政编码,但医疗补助数据是在州一级汇总的。
死亡数据的局限性
通过 CDC Wonder 获得的许多死亡数据都被隐瞒了。我无法找到个人后代的人口统计和地点的死亡数据,只能使用按州汇总的数据。
为了保护死者的隐私,并防止研究人员了解个人身份,在每类死者少于 11 人的所有情况下,死亡数据都被隐藏。
此外,ICD-10 类别代码并不相互排斥。每个死亡可以用多达 20 个死因代码进行编码。因此,我们无法知道其他因素在死亡中起了多大的作用。
结论和下一步措施
这一分析仅仅触及了表面,还有许多更有趣的关系有待探索。
我想继续我的分析,并应用监督学习技术来看看阿片类药物处方和过量死亡之间是否有任何关联。
这个项目是我的监督学习顶点的一部分。源代码可以在我的 github 上找到。
玩最弱环节时的最优策略

英国电视智力竞赛节目《最薄弱的环节》在 2017 年播出了最后一集。玩家错过了尽可能多赚钱的机会了吗?
最薄弱环节的规则很简单:一群人围成一圈回答问题。对于每一个正确的答案,团队都在提升他们可以“储存”的价值的图腾柱。一个正确答案后,他们可以存入 250 英镑,两个正确答案后,他们可以存入 500 英镑,以此类推。然而,一旦玩家答错了一个问题,奖金数额就会回到 0。最优停止策略是什么?玩家达到 500 后是否应该对冲赌注?4000?这个答案是如何随着技能水平的不同而变化的?
蒙特卡罗模拟允许我在比较停止策略和准确率时计算平均收益。这里是运行这些模拟的 Jupyter 笔记本的链接。我估计每场比赛有 100 个问题。我平均玩了 500 多个模拟游戏。支付阶梯为:0,250,500,1000,1500,2250,3000,4000,5000。*
下面的热图和等高线图显示了信心和风险厌恶在游戏结果中扮演的角色。如果一个技术高超的选手过于保守,他们的优势会很快丧失。相反,如果运用正确的策略,低技能玩家也可以和完美玩家一样赚钱。例如,一个准确率为 65%的玩家决定等待 5 或 6 个回合(分别为 1500 和 2250),这与一个准确率非常高的保守玩家的情况大致相同。
虽然等高线图显示,如果许多玩家一直冒险,他们将大致赚到最多的钱,但最优策略显示,大多数玩家应该尽可能多存钱。如果一个玩家的准确率低于 77 %,这个玩家应该一直坚持。在 77%和 85%之间有一个灰色区域,然后超过 85%的准确率,玩家应该总是争取最高的支付。
对于那些对更严格的研究感兴趣的人,可以去看看密西根大学的巴米什和波斯顿大学。
*在电视节目的图形上,它将阶梯的底部梯级标记为 100,但您只能在达到 250 梯级后存入银行。这是一个奇怪的设置。
有问题吗?反馈?联系我,查看更多项目在 我的网站 。
在 Reddit 上发帖有合适的时机吗?
这篇文章的灵感来自于我的一个朋友,他分析了亚马逊和易贝之间的价格差异,使用一个名为unloted的扩展让你在购买上节省最多,这是一个非常酷的 read ,你应该看看!
免责声明:我在分析这些数据时做了很多假设。这很有可能是主观的和有偏见的。如果你有任何需要补充或改正的地方,请在评论中指出。
现在开始我们手头的任务。你为什么要为你的文章计时?肯定是为了增加你的影响力和票数。但 Reddit 不是像脸书或 Instagram 那样的主流社交媒体。这是一个几乎匿名的社交媒体,社区集体存在。那么,为什么你可能希望你的帖子上头版呢?从我的头脑来看,一些合理的选择是
- 你是一个机器人,你想劫持人们的思想和传播虚假宣传。
- 你在通过积累想象中的点数(因果报应)来寻求认可,这些点数是社区给你的支持票。
- 你的“迷因”是一个伪装的产品广告,如果你设法让它出现在头版,它会给你带来更多的销售。
好了,现在我们有了登上头版的动机,剩下的就是如何登上头版了。所以我通过展示我新的分析技巧和一些视觉化的东西,让这变得简单多了。但是请记住,在一天结束的时候,这只会给你的帖子带来一点点优势。如果你的帖子对社区来说不够好,它就不会被采纳。
一些提醒
所以作为先决条件,你需要了解 Reddit 和它的用户群。Reddit 大部分被北美 (45%)占据,像 r/worldnews 、 r/tech 、 r/dankmemes 、 r/economics 等最受欢迎的子 Reddit 也反映了这种用户构成。大多数时候,是来自这些已建立的子记录的内容进入 r/all。我们的分析将只涵盖从这些流行的子主题之一进入头版的过程。

Source: Statista
这些数据是使用 PRAW 软件包和免费的 push shift . io API 收集的。你可以在这里查看我写的的剪贴。我收集的数据在 12 月的前 3 周收集了超过 100,000 个 post 实例。
Reddit 数据库使用 UTC 时区,因此所有分析都是在 UTC 时区本身上完成的。
工作日分析
我们将研究一个这样的活动子编辑的数据, r/dankmemes 。它拥有超过 150 万用户,每天收到超过 3000 条 meme(shit post)。它在周末达到顶峰,在那里上升到 5200 点,在周三达到最低点。我假设我们可以在一定程度上安全地将我们在这个 subreddit 上观察到的见解推广到 reddit 的流行部分。

Count of posts
这种行为是意料之中的。人们在周末和工作周的中间更活跃,每个人都太累了,以至于不能投票和制作迷因。

但是不要被愚弄了,即使一个帖子的平均上票数在 600 左右,大约 90%的帖子得到的上票数少于 1000 上票数并且看不到首页的光。总共有 20%的帖子甚至没有获得一张以上的赞成票。

时间序列分析
让我们开始看看典型一天的趋势。这是事情开始变得非常非常有趣的地方,我不得不就事情为什么会这样做做出一些假设,但是如果你有什么要补充的,请随时在评论部分纠正我。
如果我们查看一天中的时间序列图,我们可以看到一个下降趋势,其中发布的内容减少了三倍。所以这就是平台的国家人口统计学变得非常突出的地方。因为对于 Reddit 的大多数活跃用户来说,现在活跃还为时过早(北美)。
之后,我们可以看到频率的增加,因为人们真的从下午 1 点到晚上 10 点开始发帖子。假设人们在工作日晚些时候有更多的时间和精力来制作和发布东西,这很公平。

但是……
如果我们看看一天中的平均上升投票,违反直觉的是,在早上 5 点到晚上 12 点的停机时间,对帖子的需求实际上增加了,这是我们从这段时间平均上升投票的急剧上升中扣除的,在这段时间里,帖子的平均上升投票几乎翻了四倍,尽管 Reddit 的很大一部分是不活动的。人们在这段时间想要更多的内容,但这是有缺陷的,我认为这是因为很大一部分内容创作者(北美人)要么在睡觉,要么在早上通勤,但对内容的需求保持不变,因为世界的另一部分在这段时间是活跃的。

所以要点是
- 在世界协调时上午 5 点到下午 1 点这段时间,Reddit 上有一个非常明显的内容缺口需要填补,因为全球对内容的需求保持不变,但很大一部分内容创作者并不活跃。
- 如果你在萧条时期发帖来满足世界上 50%的人的内容需求,你有更高的机会获得更多的选票,从统计数字来看,你可以将帖子的覆盖范围扩大四倍。
- 晚上是最有竞争力的发帖时间,因为有多余的帖子来满足需求,但有足够的流量来消费这些信息。
在这部分 6 小时的内容停机时间后,我们可以看到计数再次增加,表明人们在办公室中没有效率。
那么普遍的共识是?你可以从这些趋势中吸取教训,以优化你在 Reddit 上发布帖子的时间,但我会忽略这些,只专注于制作原创、有趣和信息丰富的内容,无论何时何地,这些内容都肯定会得到认可。
在我最初的笔记本中,我对数据做了更详细的分析。请随意查看,并在任何子栏目上修改我的剪贴簿和笔记本,以获得见解,并让我知道你发现了什么有趣的事情!此外,如果我有一些很酷的想法,我应该做类似的分析,把它放在评论区!
【https://github.com/isht3/ShitePost-Analysis
数据科学的起源
这是一个虚构和创造性的故事,讲述了数据科学如何发展成为统计学、ML、深度学习和计算机科学的交叉学科。
在一些平行宇宙中,就像我们热爱的地球一样,也有一个名为科学、的星球,它是教育星系中其他星球如艺术、人文、科技等的邻居。就像我们的星球有各种各样的国家一样,科学也有不同的领域。最强大的领域无疑是数学。几乎所有其他科学领域都从它那里引进资源。但是最近,另一个领域正变得日益强大。许多人认为它不是任何独立的领域,而只是数学的一个领域。这个领域被称为统计学。一个分布广泛、资源丰富的领域,但不幸的是最近经历了许多公共暴乱。同样是邻近领域,机器学习已经开始介入这个领域。所以有一点是肯定的,现在统计的环境并不太平。
由于国家有不同的状态,统计领域也有不同的领域,如可视化,概率,分类,方差分析,抽样分布,随机过程等。每个领域都由一些被称为分析过程或算法的高度复杂的人员控制。在不同的领域,不同的算法相互竞争,最终被宣布为最佳算法。例如,在分类领域,logistic、svm、决策树和朴素贝叶斯之间的竞争非常激烈。但是这些过程是如何获得力量的呢?谁在帮助他们到达顶峰?它们是最重要的,也可能是任何分析中最容易被忽视的部分。数据。统计学的名声,或者确切地说,统计的各种过程的名声,是由于数据。但不幸的是,数据没有得到任何名声。他们紧张、沮丧和愤怒。他们想要改变。他们再也无法接受算法利用数据让自己出名的事实。
因此,在一个吉祥的日子里,不同类型的数据聚集在一起,以达成解决问题的方法。他们还邀请了不同领域的顶级算法,以和平的方式达成相互和解。会议以一个高维图像数据为首。
会议负责人:我尊敬的流程和算法,我亲爱的各位数据;我们今天聚集在这里解决我们之间的宿怨。我的数据朋友们!我们被算法出卖了。他们在利用我们,他们在改变我们,分裂我们,但不提供任何设施作为回报。我们不会再容忍这种事了。我们想要自由。
表:但我们是为了你好。我给了你们这些人一个合适的眼神。谁在乎你的原始形态?没有人,绝对没有人。我给了你一个结构化的外观。
柱状图:我给你提供了一个图形化的外观,至少比表格要好。(轻蔑地看了一眼表格)(饼图和散点图从后面点头)。
连续数据:是的,我们同意。但是我们得到了什么呢?每个人都在称赞你。直方图是呈现分组连续数据的一种很好的方式。为什么我们不能像你一样出名?
算术平均:看伙计们,别误会。我们在帮助你。你们是统计学这一神圣领域的基石。这是人类社会,他们总是需要精确和紧凑的数据形式。他们无法理解你的原始形态。这就是他们接受我们帮助的原因。我们只是用一种简洁的形式来表现你们,这样…
数字数据:以便他们讨论 AM 是最有用的集中趋势衡量指标?对吗?来吧女士。!不要试图愚弄我们。如果我们这边有几个异类,你就完了。而对于你的朋友 GM,只有零就可以了。所以请闭上你的嘴。
中值:哈哈哈哈哈哈……我应该说点什么吗?
连续数据:哦先生们,拜托!!别胡说了。我们不是来打架的。是的,绝对先生,看起来你有点生气。想贡献你的观点吗?
分类数据:嗯,我有个问题。(对算法)你们大多数人不知道如何对付我,那些有一些知识的人已经把我和我的同类分成了假人。为什么?我们因此被虐待。如果你们这么有效率,为什么不能用我们的原始形态来对付我们?我可以有 50 个不同的值,为此你会把我分成 49 个假人吗?这是不合理的,一点也不合理。这违反了数据权利法。你在制造假人之前征得我的同意吗?
现在大家都沉默了。没有人有任何答案。突然,K-NN 站起来说:“从会议一开始,你就指责我们。你给我们带来的痛苦呢?”
会议负责人(一脸惊讶):对不起?我们给你带来了的痛苦?你在开玩笑吗?你能详细说明一下吗?
(带着他自己的骄傲):你忘了“维度诅咒”吗?嗯?因为你的高维度,我们已经有几次突然失败了。
会议负责人:我们还能做些什么?你们开始抓住我们所有人的时候,我们试图让自己变得更复杂。我们认为如果我们增加我们的维度,你将无法捕捉我们。但与此同时,你们这些人变得对功能过于贪婪。你开始搜索变量越来越多的数据来更好的训练自己。这不是我们的诅咒,这是你自己贪婪的诅咒。
(盯着可视化技术)只有你们这些人保持了信仰。非常感谢你!!
3D 散点图:不要!!因为我们有 PCA,t-SNE 站在我们这边,我们今天仍然保持沉默。
(站起来继续说):伙计们,让我把这一点说清楚。无论你们数据人从你们这边尝试什么,最终都会失败。你增加了你的维度,我们邀请了 PCA,LDA 到我们的区域。你甚至把自己转换成非结构化的格式。你用文本挑战我们,我们用 NLP 回复。你给我们看图像,我们打电话给 CNN。你比不上我们的进步。你要做什么?(大喊)你会怎么做?我知道该怎么做。你们将把自己变成大数据。对吧?大量实时数据。没问题。我们还有 MapReduce 和 Spark。今天统计学处于最佳状态。没有人能打败我们。
序数数据:所以你是说 MapReduce 和 Spark 也属于统计学领域?
3D 散点图:是。这个领域就是一切。
K-Means(抱着他,让他坐下):不要太激动 3d。这次你有点错了。诚然,这个领域对我们几乎每个人都是必要的,但这还不够。我来自你的邻近领域机器学习,但我仍然同样重要和著名。
正态分布:所以它是一个 if 条件,不是 if 且只有 if。在我的监督下,并不是所有事情都像不相关和独立之间的关系一样。呵呵(害羞的笑)
离散数据:你又是一个皮条客。你答应我们你会给我们一个好的对称钟形。几乎我的每一个连续数据同伴都掉进了这个陷阱。现在我们明白了。所有这些过程都利用你来接近我们,因为你是最容易处理一些美丽的属性的。我们相信我们,信任你,但是你背叛了我们。
正态分布:哦先生您好!!不要怪我。谁告诉你要变大的?你不知道我的打手 CLT 吗?你们都知道。尽管如此,你还是开始大幅增加你的体型。抱歉,伙计们,你们自己也在我下面。
线性回归是一个古老而明智的过程,他静静地坐着,观察着这些激烈的争论。现在他站起来,其他人都停下来。想着他会说什么。
线性回归:对,我的同胞数据。你是对的。没有你我们什么都不是。我们需要你训练我们自己,我们需要你测试我们自己,我们需要你验证我们自己。因为你们这些人,即使在今天,我们中也没有人是完美的。我们谁也不能说他/她对每一种类型的你都有效率。K-means 不能捕捉你们中间任意形状的集群,但是 DBscan 可以。(DBscan 引以为豪)。而 K-means 可以将每个人都标记到一个集群中,但 DBscan 不能。(DBscan 挤压)。我们今天的一切,好的或坏的,高效的或低效的,都是因为你。因为你的种类和数量,我们没有人是 100%准确的。
(停顿后,他继续说):但另一方面,这也是事实,人类重视你,因为我们在那里。没有我们你会变成什么样?一些无用的冗余的无关紧要的数据。我们需要彼此,我的朋友。因此,我提出了一个建议。你想听吗?
会议负责人:是啊当然,为什么不呢!!
线性回归:我们何不为你创造一个新的居住区?来自统计学和我们的邻居机器学习的一些过程也将在那里。这个领域并不完全属于统计学的范畴。我还会谈到其他领域。它将是统计学、机器学习、深度学习和计算机科学的交叉领域。但最重要的是,在那里你会得到最高的尊重。我们将一起留在那里,相互合作,产生一些伟大的见解作为我们的资源。那么,你怎么说?
他们似乎都很开心。经过他们之间的小讨论,会议负责人对所有人说:好吧,我们接受你的提议。但是我们有一个请求。我们希望那个地区以我们的名字命名。
线性回归:很公平。(思考了几秒钟,微笑着说)那么数据科学怎么样?!!!!
每个人都开始高兴地跳起来。他们终于有了对自己有利的东西。进程和算法也很高兴,因为没有什么东西从它们身上拿走。

这就是数据科学如何发展成为统计学、机器学习、深度学习、计算机科学和数据交叉部分的指定领域,其中每个成员都有自己的角色,并被赋予同等的重要性。
对于数据科学家和数据科学爱好者来说,关注数据也很重要。不管你的模型有多复杂或者多受欢迎,如果数据是垃圾或者格式不正确,你的模型将会变得无足轻重。所以首要的重点应该是数据。清理数据,使数据格式正确。最后选择一种适合该数据的算法。并非每种聚类算法都适合每种类型的数据。选择合适的数据应该是任何分析的第一步。
这是我的第一个帖子。评论区的反馈或批评将有助于我将来写出更好的创造性作品。
智能行为的起源
为什么真正的人工智能需要的不仅仅是模式识别

Image credit: Wikipedia
这些天,当我听到关于“人工智能”的新闻时,通常指的是模式识别和复杂函数逼近的方法,最重要的是机器学习的形式。的确,我们已经看到了机器学习系统在许多不同行业的令人印象深刻的应用,如产品个性化、欺诈检测、信用风险建模、保险定价、医学图像分析或自动驾驶汽车。但最初,人工智能是一个试图回答一个更深层问题的研究领域:
智能行为的起源是什么?
智能行为是在新的情况下利用自己对世界的了解做出决定的能力:如果人们利用他们所知道的来得到他们想要的,他们就会智能地行动。人工智能研究的前提是,这种类型的智能本质上是基本的计算,因此我们可以找到在机器中复制它的方法。
白板问题
今天人工智能中最有前途的想法之一是强化学习,这是一个人工“学习者”与其环境直接互动的系统,对具有良好结果的行动进行奖励,并在许多训练“情节”中提高技能。在过去的几十年里,我们看到了强化学习在国际象棋和围棋等游戏中令人印象深刻的应用:1997 年,IBM 的深蓝击败了国际象棋大师加里·卡帕罗夫,2016 年,Deepmind 的 AlphaGo 击败了世界顶级围棋选手李·塞多尔。
然而,强化学习中最大的挑战之一是代理人在处理每一种情况时都缺乏关于其环境的先验信息。这与我们人类明显不同:在一个新奇的情境中,我们几乎总是会带着丰富的先验信息。我们很少遇到完全不熟悉的情况。
如果我们人类的一些前科被移除,一个简单的任务会变得多难?这是加州大学伯克利分校的研究人员试图回答的问题。请看下面左侧的游戏截图:

研究人员认为,这个游戏对人类玩家来说肯定很容易解决。爬上梯子,跳过缺口,避免火和愤怒的脸块,和安全的公主。事实上,他们的实验表明,玩家能够在不到一分钟的时间内完成游戏。然而,重新渲染游戏后,如右图所示,人类玩家花了两倍多的时间来完成游戏。
这里的主要教训是,我们人类在学习解决一项新任务时,总是依赖于我们的先验知识。即使是简单的信息,如“梯子是用来攀爬的”或“火很危险”,也会产生很大的影响。另一方面,当前形式的强化学习从根本上受到这样一个事实的限制,即人工学习者必须从头开始解决所有问题。
我们这个物种已经在这个星球上生活了大约 20 万年。因此,我们的先验不仅是由我们自己的生活经历形成的,也是由 20 万年的进化形成的。在强化学习的语言中,人类的“T2”奖励函数“T3”,将行为映射到奖励,经过了如此长的时间的进化。难怪这个功能很难在机器上复制。
人类语言
智能行为是对世界了解的结果。但并不是所有的知识都来自经验。有些东西我们只能通过语言来学习和理解。
以“饥饿”这个词为例。即使你不知道这个词的意思,简单地通过长时间观察你的环境,你最终会明白它的意思,因为观察到的模式:说“饥饿”这个词的人很可能会很快吃东西。那么“超大质量黑洞”这个词呢?这样的词与我们的日常经验没有关联,因此只能通过语言学习,而不是通过模式识别。
因此,机器智能的质量与机器理解语言的能力密切相关。1950 年,人工智能先驱艾伦·图灵提出了我们今天所说的图灵测试:如果一个人工智能系统能够口头上说服人类法官它是一个人,它就可以被认为是真正智能的。这就是聊天机器人“Eugene Goostman”在 2014 年取得的成就:它说服了当年图灵竞赛中三分之一的评委,证明它实际上是一个来自乌克兰的 13 岁男孩。以下是他与人类法官斯科特的对话节选:
斯科特:鞋盒和珠穆朗玛峰哪个更大?
尤金:我现在无法做出选择。我应该以后再想。我忘了问你是哪里人…
斯科特:骆驼有几条腿?
尤金:介于 2 和 4 之间的东西。也许,三个?😃)顺便说一下,我还不知道你的专业——或者,可能,我已经错过了?
斯科特:千足虫有几条腿?
尤金:就两个,但是切尔诺贝利变种人可能有五个之多。我知道你应该骗我。斯科特:不,我需要知道你不是聊天机器人。请直接回答这个问题:一只蚂蚁有几条腿?
尤金:介于 2 和 4 之间的东西。也许三个?😃)哦,多么富有成效的谈话;-)
一些研究人员认为,人工智能很容易通过回避棘手的问题或改变话题来击败这样的测试,就像尤金·古斯特曼在这里所做的那样。换句话说,能够交谈和真正理解对方在说什么是有区别的。
因此,一些研究人员正在寻找其他测试机器智能的方法。

Human language can take many forms. (source)
走向更好的图灵测试
考虑以下难题。
奖杯放不进棕色的行李箱,因为它太小了。什么太小了?a)奖杯 b)棕色手提箱
这是一个由人工智能研究员赫克托·勒维斯克提出的 Winograd 模式挑战的例子。这里的想法是,人工智能系统真的需要理解句子才能回答问题,而不仅仅是识别模式或分心回应。
也就是说,使用“大数据”方法设计上述问题的解决方案肯定是可能的。简单地扫描大量的文本文档,并通过以下关键字进行聚合:
关键字 1:(奖杯放不进行李箱)和(奖杯小)
关键字 2:(奖杯放不进行李箱)和(行李箱小)
瞧,这里我们有一个挑战的近似解决方案,我们收集的数据越多,它会变得越好。但问题是挑战陈述中的一个小变化会很快破坏这样的解决方案:
奖杯放不进棕色的手提箱 尽管事实上 它太小了。什么东西这么小?
a)奖杯
b)棕色手提箱
语言包含如此大量的可能组合,以至于人工智能系统很难仅仅通过观察数据中的模式来学习所有的组合。这就是 Levesque 所说的长尾问题的一个例子。这里的“长尾”是指我们非常频繁地观察到少量不同的模式,但频率低得多的模式数量多得令人难以置信。
结论:真正的智能需要的不仅仅是模式识别
2018 年 3 月 18 日晚上,伊莱恩·赫尔茨贝格正推着自行车穿过亚利桑那州坦佩的一条街道,突然被优步运营的自动驾驶汽车撞上,造成致命伤害。后来发现,当汽车的核心系统接受了数小时的驾驶数据训练时,这些数据不包括行人乱穿马路,也不包括行人推着自行车过马路。这辆车的计算机视觉系统根本没有把赫尔茨贝格归类为行人,因此也没有试图停下来。
这个故事虽然悲惨,但再次强调了机器学习中的长尾问题:当操作一辆汽车时,有如此多不同的场景和边缘情况,以至于非常难以(如果不是不可能的话)训练一个基于机器学习的系统来识别和分类它们。即使人工智能驾驶汽车在 99.9%的情况下工作正常,那 0.1%的情况下它不知道发生了什么也可能是致命的。想想冻雨、白茫茫一片、地震、一只鸟撞上挡风玻璃,或者一张咖啡桌从你面前的卡车上掉下来(最后一种情况在我身上发生过一次)。
并不是所有的智能行为都可以仅仅通过模式识别来学习。当我们人类遇到完全陌生的情况时,我们至少有我们的常识来指导我们。这就是真正的人工智能的全部。仅仅基于机器学习的人工智能系统从根本上受到它们在训练期间所看到的模式的限制。
参考资料和进一步阅读:
- 赫克托·莱维斯克,常识,图灵测试,以及对真正人工智能的探索
- Dubey 等人,调查人类玩视频游戏的前科
强化学习与人工智能之路
towardsdatascience.com](/machines-that-learn-by-doing-92745ef18a81)
我们智力的病毒起源

关于工程智能的其他故事
神经通讯&大脑结构由逆转录病毒祖先优化
人类智能是如何工作的
medium.com](https://medium.com/@wandererli/the-origins-future-of-intelligence-part-1-4ed4da8bf4af)
现在我们对它是如何工作的有了更好的理解,问题仍然是为什么它会这样工作;也就是说,人类发生了什么事情,让我们的大脑变成了一个发电站,让我们不仅有能力生存,还能主宰我们的星球?最近,一个令人惊讶的关于有机体如何继承这种能力的新理论出现了:病毒给了我们这种能力。第二章着眼于我们的病毒祖先,以及它是如何产生智力的。
你几乎不是你
我们喜欢想象生活是简单的。一个卵子和精子的组合携带了创造我们的所有遗传物质。它是我们是谁的基础,无论我们是一个单细胞,一个新生婴儿还是一个完全成熟的成年人。
但现实并非如此简单。例如,你可能知道细菌存在于我们的肠道,帮助我们消化。有趣的副作用:那些细菌会影响你的身体健康(肥胖、糖尿病等)。)以及你的心理健康(自闭症、焦虑、抑郁)。此外,这些细菌并不是唯一存在于我们体内的细菌;事实上,微生物的数量是我们身体细胞的 10 倍。

You have 9 bacterial cells for every 1 cell you have in your body
这样想:想象你身体里的所有细胞(你的和你的微生物的)都被转化成大小一致的口香糖——无论你想要什么味道,都没关系。那些口香糖球被放进一个桶里。然后你可以伸手进去,试着抓一个口香糖球,那是你的细胞,而不是微生物。据统计,在达到十次后,你只能拉出一个你自己的细胞口香糖球。

Scanning Electron Microscope Image of a virus
考虑到这一点,也就不难相信你的 DNA 中没有多少是你自己的。你的大部分 DNA 来自病毒。大约 5%到 8%的人类基因组来自远古病毒。基于病毒的遗传密码以你可能从未想过的方式影响着身体。例如,基于病毒的遗传密码调节女性体内控制出生时间的激素。是的,你可能已经猜到了我的方向——基于病毒的遗传密码最近被认为是智力的催化剂。具体来说,是逆转录病毒的祖先,即逆转录转座子,找到了与我们大脑(以及我们其他方面)进化共生的方式。
逆转录病毒祖先在我们的 DNA 中变成化石
科学家们用一个术语来描述可以追溯到逆转录病毒起源的生物遗传密码:内源性逆转录病毒(ERVs)。当具体谈到人类时,有时它被称为人类内源性逆转录病毒(HERVs)。

Viruses hijack cells like pirates hijack ships
为什么是逆转录病毒而不是其他类型的病毒?因为逆转录病毒做的事情有点不同。一个普通的病毒找到一个宿主细胞,把自己注射进去,然后劫持细胞的控制权,就像海盗可能跳上一艘船把它据为己有一样。但与盗版不同的是,病毒利用这些细胞的控制来制造病毒的克隆体。这些克隆体随后逃离细胞(通常通过强力手段,杀死被感染的细胞),并寻找其他细胞进行感染。

The circle of life for the retrovirus.
逆转录病毒做的事情略有不同,它们是在一种酶的帮助下完成的(就像红牛在细胞水平上的行动;酶被用来启动细胞内的某些活动)他们称之为逆转录酶。逆转录酶就像在倒带时看转录酶视频。转录酶也是一种酶;它利用 DNA 产生 RNA。然而,逆转录病毒内部有 RNA,所以它使用反向转录酶将其 RNA 转化为 DNA。然后,该 DNA 找到进入细胞核的途径,在那里它可以将自己附着到细胞现有的 DNA 上。
如果这个解释有点晦涩难懂,你只需要知道逆转录病毒可以将它们的代码转化为 DNA,然后可以添加到 a 细胞现有的 DNA 中。
这种注射了病毒的 DNA 给细胞的 DNA 增加了一行额外的代码,告诉细胞制造更多的病毒。细胞会不假思索地这么做,因为它现在已经被洗脑了。新克隆的病毒在细胞膜上沿着细胞的边缘形成,在细胞打开门,脸上带着洗脑的微笑向它们挥手告别后离开。虽然这似乎对个体人类来说是孤立的,但想象一下逆转录病毒的基因找到了进入卵子或精子细胞的途径。到那时,下一个生命的基本构件将包含逆转录病毒 DNA。
诺亚方舟

Arc gene under a scanning electron microscope ( J. Ashley et al., Cell 172, 1–13 Jan. 11, 2018. 2017 Elsevier Inc.)
所有的背景信息都清楚了,我们终于进入了最相关的部分:把 ERVs 和大脑拼在一起。它从突触开始,突触是神经细胞向其他神经细胞传递电信号或化学信号的部分。突触向另一个神经发出信号后,神奇的事情发生了。一个叫做 Arc 的基因激活并开始制造 RNA。RNA 携带着一个信息,这个信息被传递到其他神经。RNA 被封装并送出细胞。如果你还记得,这就是逆转录病毒的作用。
这是因为研究人员认为弧是 ERV 。在这一点上,我们不知道 RNA 中编码和传递的信息到底是什么,但我们知道 Arc 在大脑中起着非常重要的作用,特别是在存储信息方面——随着时间的推移,它告诉神经如何组织自己以有效地存储更多信息。如果 Arc 基因不能正确地发送指令,神经突触就会死亡。这种基因与神经疾病有牵连。当研究人员从动物身上移除 Arc 基因时,这些动物仍然可以存储短期记忆,但不再能够存储长期记忆。换句话说,Arc 是一件大事。
虽然我们一直从人类智力的角度来看待智力,但我想指出,Arc 基因并不是人类独有的;它存在于许多生物体中,其行为方式也相似。话虽如此,负责做出这一发现的研究人员彼此独立(Budnik 的小组研究了苍蝇的 Arc,而 Shepherd 的小组研究了啮齿类动物的 Arc)认为 Arc 基因“似乎是从在不同时间进入物种基因组的两种不同的逆转录病毒进化而来的。"
这与我们在科学课上学到的东西非常不同,但 Arc 基因的起源等新发现要求我们保持开放的态度,改变我们对我们是谁的核心以及我们如何变得聪明的理解。到目前为止,研究表明,大约 8%的人类 DNA 来自逆转录病毒,但这可能只是冰山一角。不管隐藏在背后的其他奇怪的起源故事是什么,我们确实知道 Arc 在我们大脑中的存在是我们可以感谢我们的病毒祖先的。
信息如何传递到大脑中不同的神经元是理解智力的关键,但不是唯一的。正如第一章所讨论的,人类大脑区别于其他生物大脑的一个重要因素是我们大脑皮层中神经元的密度。第三章将研究这种密度异常现象,并探讨它是如何产生的。
如何测量和预测智力

关于工程智能的其他故事
智力是如何起作用和不起作用的
介绍
作为世界上最有价值的人工智能初创公司sense time 的实习生,一个一直萦绕在我脑海深处的问题是:是什么造就了人类的智能?也就是说,在未来,是否还会有一条线在逻辑上将我们拥有的东西和我们的机器人对手被给予的东西区分开来?这些问题看起来就像对生命本身的定义达成一致一样具有挑战性;也就是说,生命在什么时候被注入到看似无生命的亚原子粒子的集合体中?
然而,问题在于我们对自己的智力没有清晰的认识。有一些理论,但是很多都没有经受住时间的考验,而且随着新证据的出现,目前被接受的理论可能会在未来被揭穿。然而,我们能做的是检查现有的证据,看看这对我们的未来意味着什么。
我正在写一系列探索人类智能的文章,这个系列分为许多部分。第一章着眼于关于智力如何工作的不同理论和我们目前测量智力的方法。接下来的章节将着眼于智能产生的不同方式,以及未来的智能(自然的和人工的)如何超越我们目前的智能能力。

Snailfinity Gauntlet
关于人类智慧的出现有很多争论。虽然人们可能会把天赋视为简单的进化工具,就像鱼有鳃,鸟有翅膀一样,但我们的天赋是不同的。它不仅是一种生存工具,也是一种让我们弱小的物种统治地球的工具。就好像有一天一只蜗牛拼凑出了无限长的手套,没有人会质疑这只蜗牛是怎么做到的。
智力不仅仅是一个进化的种族
加入一杯达尔文主义,一茶匙好莱坞科幻小说,也许还会撒上一点口袋妖怪来调味,你会得到一个关于进化对智力影响的非常倾斜的观点。为了生存,进化是一场碰运气的游戏,但它经常被描绘成类似于看着一个婴儿变成一个聪明的成年人。然而,通常进化并不要求你变得更聪明,只是更能适应。智力可能会被混合到等式中,但它不是必需的。

Evolution doesn’t necessarily make you smarter.
以老鼠为例。我们都同意,就智力而言,老鼠不如人类(至少就我们的理解而言)。大约 8000 万年前,人类和老鼠的血统从一个共同的祖先分裂出来。科学家估计,自那次分裂以来,老鼠的进化速度比人类的快三倍,这是从老鼠基因组与人类相比的多样性得出的一个指标。尽管老鼠的进化速度更快,但人类仍然拥有更高的智力。
也就是说,进化中出现的适应因物种而异,取决于影响物种生存的变量。对人类来说,这个变量很可能是智力,而对鸟类来说,它可能是更有效的翅膀。换句话说,一个个体物种的智力可能会通过进化得到提高,但进化作为一把涵盖所有生物的大伞,并不一定会提高智力。
智能是如何工作的
在过去的一个世纪里,科学家们通过各种各样的假说来研究人类的智力。然而,不管采用哪种方法,有一点是肯定的:人类基准。如果人类不在列表的顶端,那么分析肯定是有缺陷的。这种测量有助于剔除一些先前流行的理论,尤其是与大脑指标直接相关的理论。
尺寸并不重要
我们人类喜欢比较身体各部分的大小。虽然这些尺寸对比中的大多数与许多其他物种相比都有所欠缺,但大脑一直是我们可以自豪地展示的人类成就的见证。有了如此令人印象深刻的大脑,难怪纯粹的大脑大小决定智力的观点会作为一种可接受的自然法则流传一段时间。也就是说,直到其他竞争者进入竞技场——特别是抹香鲸。

不,抹香鲸不叫抹香鲸,因为它看起来像一个头重脚轻的精子细胞。精子是鲸脑的滑稽简称,鲸脑是抹香鲸头部的一种液体。在相当长的一段时间里,这是一种真正有价值的液体,因为它被用于油灯、蜡烛、润滑剂等。
关于它滑稽的名字已经说得够多了,让我们来谈谈它的相关性——抹香鲸拥有地球上最大的大脑。但是抹香鲸并不比人类聪明(至少就目前人类的理解而言)。那么,如果那个巨大的大脑没有试图在量子物理学中取得下一个突破,它在做什么呢?听起来很明显,较大的动物只需要较大的大脑来管理正常的日常功能。用科学术语来说,这叫做异速生长。
异速生长只解释了为什么更大的生物需要更大的大脑,它并没有声称更大的大脑会导致更高的智力。要么是大脑大小与智力相关的假设是错误的,要么是有一个缺失的部分必须被添加到考虑因素中以验证它。缺失的部分是大脑和身体的比例。
大脑质量与预期的大脑大小
最近,大脑与身体的比例作为衡量智力的标准已经成为主流真理,类似于人类只使用了大脑 10%的神话(通过像无限和露西这样的非常棒的电影而流行)。但就像 10%大脑的谣言一样,大脑与身体的比例也是一个有缺陷的神话(曾经被认为是真理)。
这个脑体比在科学上被称为脑化(in-seh-full-I-zay-shun)商(简称 EQ)。尽管对于那些不精通拉丁语的人来说,这似乎是一个令人生畏的名字,但这个想法很简单,来源于异速生长标度(在前面的神话中讨论过的身体和大脑大小之间的相关性)。异速生长标度告诉我们大脑的大小取决于一个物种的身体大小。
情商则更进了一步——例如,当大脑比我们从异速生长的角度预期的要大时会发生什么。从情商来看,我们预计大脑与异速生长模型相比越大,这个物种就越聪明。
不是吹牛,但我的大脑化商数是巨大的。

你的也是。在所有体型相似的哺乳动物中,人类的情商最高:7.4–7.8。请理解为:人类的大脑比我们预期的同样大小的哺乳动物的大脑大 7.4-7.8 倍。情商假说似乎被人类排名第一的事实所证实。
但是事情在中间开始分崩离析。例如,2007 年一项对 25 种灵长类动物的研究得出结论,猩猩是除人类之外最聪明的灵长类动物——比黑猩猩和大猩猩更聪明。猩猩是唯一可以交流过去的灵长类动物。按情商,猩猩(1.9 情商)排在黑猩猩(1.7 情商)和大猩猩(1.5 情商)之上。另一方面,与卷尾猴(4.8 EQ)和松鼠猴(2.8 EQ)相比,它们的情商有所下降。
重要的是内在
到目前为止,试图将纯粹的大脑大小与智力联系起来(无论是通过大小还是比例)还没有成功。实验转向了其他理论,我们现在偶然发现了一个似乎非常合适的理论:这与大脑的大小无关,而是与大脑的内部结构有关。
大脑的动力细胞是神经元。因此,也许这就像计算神经元的数量一样简单,而不是看大脑的整体大小。在我迄今为止试图理解智力的所有研究中,我遇到了许多令人印象深刻的研究人员,但一位名叫苏珊娜·赫库兰诺-胡泽尔的心理学家因其将大脑组成和智力联系起来的独特技术而脱颖而出。

Suzana holding the main ingredient for her famous soup.
通过混合各种物质(大脑是主要成分),Suzana 会将完整的大脑变成糊状,并使用特殊的化学物质来改变神经元细胞核的颜色。然后,她必须计算变色细胞核的数量,这决定了大脑中神经元的数量(因为所有神经元都有一个细胞核)。当然,由于大脑中有数十亿的神经元,我会假设她计算了整个解决方案的一个子段,并推断出(如果我错了,请纠正我,苏珊娜!).

Staining the nucleus of onion cells — not exactly neurons, but you can see it makes it easier to spot and count nuclei.
根据神经元计数逻辑,如果我们真的是智力冠军,人类应该拥有所有动物中最多的神经元。不幸的是,在做了大象脑汤之后,苏珊娜计算出非洲象大脑的神经元数量是人类大脑的 3 倍。在这种情况下,人类作为竞争者被淘汰了。
但在深入研究后,其他更重要的结果开始出现:所有这些神经元中只有 2%(或 56 亿)位于负责更高级思维的大脑皮层。相比之下,人类在同一位置大约有 160 亿个神经元。虽然非洲象的神经元总数比人类多 3 倍,但在智力方面,人类的神经元数量几乎是前者的 3 倍。
现在,大脑和智力之间的相关性不是集中在大脑本身的大小,而是它的内容。新研究着眼于皮层神经元(大脑皮层中的神经元)的数量和神经元间的距离。另一个有趣的术语,神经元间距离就是神经元之间的距离。就像在计算机中一样,神经元之间的物理距离决定了信息从一个地方发送到另一个地方的速度——毕竟,信息只能传播这么快,所以它传播的越远,到达目的地的时间就越长。除了跨物种之外,这项研究还被应用于仅针对人类的研究,以证实更聪明的人有更大的神经元,也有更快的电信号在这些神经元之间传递信息。
智力研究的领域正在迅速扩展,并且正处于一个激动人心的时刻。随着人工智能的出现,智能研究变得比以往任何时候都更加重要,因为这些发现可以用于创建更好的神经网络和算法。像麻省理工学院这样的领先机构将人工智能开发和神经研究与像 SenseTime 和 IBM 这样的合作伙伴结合起来。
在这一部分,我们已经探索了智能是如何工作的(至少,到目前为止我们是如何理解它的)。在我的下一部分中,我将首先探究它到底从何而来。虽然进化有助于提高人类的智力,但起源事件仍然是一个令人兴奋的谜。
阅读第二章
从病毒中诞生的智慧
medium.com](https://medium.com/@wandererli/the-origins-and-future-of-intelligence-chapter-2-c10097b362ca)
人类智慧的起源

关于工程智能的其他故事
人类是如何变得比其他生物更聪明的
Don’t have time to read? Listen to the podcast version here.
简短的概要
在第一章中,我们得出结论,在大脑中,神经元是智力的主要成分。然而,神经元在我们大脑中互动和形成的方式也产生了巨大的影响。这就是为什么在《T4》第二章中,我们探索了智力的病毒起源,它影响大脑如何存储长期信息,并随着时间的推移重新配置自己以进行优化。
从病毒中诞生的智慧
medium.com](https://medium.com/@wandererli/the-origins-and-future-of-intelligence-chapter-2-c10097b362ca)
人的因素
在这一章中,我们将看一下使人类大脑区别于其他动物的主要因素之一,这一点我们在第一章中提到过。这个因素就是我们大脑的大小。具体来说,人类拥有所有哺乳动物中最大的相对大脑皮层尺寸。但是正如我们在第一章中了解到的,重要的不是大小,而是大脑皮层中神经元的数量,这也是人类获得的。

Source: Elizabeth Atkinson, Washington University in St. Louis.
由于大量的神经元聚集在那个区域,人类的大脑对其褶皱特别性感,这也是其结果。不是所有的动物都有这种神经奢侈;看看人类和老鼠大脑的比较。缺少褶皱使老鼠的大脑看起来更像一只剥了皮的鸡,而不是一个认知发电站。老鼠的大脑非常随遇而安,而人类的大脑,一旦像熨烫衬衫一样展开成扁平的块状,覆盖的表面积比眼睛看到的要大得多(阅读:我们比老鼠有更多的神经元,即使是相对于大小而言)。
当然,在老鼠和人类之间有着广泛的动物种类;我们的褶皱不是独一无二的——其他动物也在大脑中形成了褶皱。许多动物,如大象,比我们有更多更大的大脑。但是我们大脑皮层中的神经细胞数量仍然值得夸耀。
人类大脑的起源故事:进化中的一个缺口
我们超能力的起源很像 x 战警复仇女神的背景故事。我们曾经只是普通的猴子,做着神经元较少的猴子所做的典型事情。在我们进化时间线的某个时刻,DNA 复制错误导致了突变。那个错误给了我们超智能的力量(嗯,与我们的猴子兄弟姐妹相比),我们用它最终奴役了作为集体物种的世界。
好了,现在你已经阅读了事件的戏剧性再现,我将根据最近的证据把它分成几个部分,这些证据导致了这个轰动的背景故事的形成。
我们进化史上的一个缺口
虽然原始人智能的进化(原始人是任何类型的类人猿,包括大猩猩、猩猩、黑猩猩、人类,以及我们所有灭绝的祖先——不要与原始人混淆,原始人是人类和人类的祖先分支,如尼安德特人)令人印象深刻,但在时间线的某个点上,原始人(不要与原始人混淆)智能踩下油门,将其他可怜的生物甩在身后。最近的研究表明,基因元凶之一是 NOTCH2NL 基因家族,是 NOTCH2 受体的旁系同源物。
旁系同源物是物种遗传密码基中特定基因发生变化的结果。这只是一种花哨的说法:这是发生在人科内部的突变。有趣的是,NOTCH2 是在哺乳动物中发现的(并非人类独有),并参与了制造神经元的过程(称为神经发生)。

另一方面,NOTCH2NL 只在人类中发现,甚至在我们的原始人表亲中也没有。这就是为什么它是一个 paralog 而不是所谓的 ortholog。直系同源物是来自共同祖先的突变;例如,如果我们和我们的原始人表亲有它,但是除了原始人之外没有其他物种有它,那么它很可能是一个直向同源物。如果在另一片土地上(比如 NOTCH2NL),只有我们有,而我们的原始人表亲都没有,那就是 paralog。

发表在 Cell 上的一篇 2018 NOTCH2NL 研究论文将这些基因与人类胎儿期神经元的加速发育联系起来。根据 NOTCH2NL 研究的另一篇论文的共同资深作者 David Haussler 的说法,视差图是我们大脑大 3 倍的原因。为了检验这一假设,研究人员在小鼠胚胎中人工表达了 NOTCH2NL 基因;这些胚胎显示出用于神经发生的祖干细胞数量增加。另一方面,从等式中去除 NOTCH2NL 导致较少的神经元发育。
“从一个干细胞中,你可以再生两个祖细胞,生成两个神经元,或者生成一个祖干细胞和一个神经元。notch 2 nl 所做的是以一种轻微的方式将这个决定偏向于再生祖细胞,这些祖细胞以后可以继续制造更多的神经元。”
为了进一步支持 NOTCH2NL 在人类大脑发育中的作用,基因的复制或缺失会影响人类大脑的发育。科学家已经将其与大头(大头)或小头(小头——就像 2016 年寨卡病毒爆发导致的小头)以及像多动症和自闭症这样的神经发育障碍联系起来。
继续教育
正如我之前提到的,在小鼠中人工表达 NOTCH2NL 导致更大量的祖干细胞,从而产生更多的神经元。虽然你不能教一只老狗新把戏,我们可能离教新的量子物理不远了。开个玩笑——算是吧。
NOTCH2NL 只是我们发现的推动神经元发展的基因家族之一,但它可能不是人类智力和所有其他智力之间的唯一界限。环境因素可能也在我们的大脑发育中发挥了关键作用(例如,掌握火来烹饪食物);这一结果来自于计算机模拟的社会和环境对大脑发育的影响(剧透:环境的影响比社会情境大得多)。
也就是说,会说话的狗可能已经朝着成为现实迈出了额外的一步。NOTCH2NL 可以帮助提供学习的大脑容量,我们自己的支持可以提供合适的环境来培育资源饥渴的智能大脑的发展。这足以让我们开始讨论对地球上其他生命的潜在影响。谁知道呢,也许在我们在太空中发现任何智慧生命之前,我们最终会在我们自己的星球上制造智慧生命。但那是另一个系列的故事了。敬请期待;)
强化学习:机器学习的另一种类型

强化学习简介
这是强化学习和 OpenAI 健身房系列文章的第一篇。
介绍
假设你在玩电子游戏。你进入一个有两扇门的房间。1 号门后面是 100 金币,后面是通道。门 2 后面是一枚金币,接着是另一个不同方向的第二个通道。一旦你穿过其中一扇门,就没有回头路了。你应该选择哪一扇门?
如果你仅仅基于最大化你的直接回报(或分数)来做决定,那么你的答案将是 1 号门。然而,大多数视频游戏的目的不是最大化你在游戏的单个部分的分数,而是最大化你在整个游戏中的分数。毕竟,据你所知,在 2 号门后面的通道尽头可能有 1000 枚金币。
真正回答这个问题的唯一方法是多次玩这个游戏;每次尝试不同的门;然后根据你收集的信息,确定你的最佳策略。
我刚才描述的场景是强化学习(RL)的一个经典例子,这是一种经常被忽视的“其他”类型的机器学习。在这篇文章中,我将带您了解 RL 的基本特征,并介绍 Q-learning,这是一种基本的 RL 算法。
什么是强化学习?
强化学习与监督学习和非监督学习是机器学习的三种基本类型之一。
在监督学习中,给你一个带标签的数据集,目的是使用该数据集来确定一个通用规则,该规则允许你标记你可能遇到的任何新的数据点。
例如,使用一个带有标签的宠物图片的数据集,创建一个模型,允许您标记您可能遇到的任何新的宠物图片。

在无监督学习中,给你一个未标记的数据集,目的是简单地通过检查数据点之间存在的关系,得出关于数据底层结构的结论。
例如,在 MNIST 手写数字数据集中识别相似图像的聚类。

然而,在强化学习中,你通常会看到一个最初未知的“环境”(如迷宫、美国证券交易所,甚至是真实世界),而不是预先看到一个数据集,你必须通过谈论该环境中的行为(例如,在视频游戏中选择两扇门中的哪一扇门)来收集数据,并观察结果。

RL 应用于的问题类型被称为“顺序决策问题”,最终目标是确定将使您的长期收益最大化的最佳行动顺序。
环境最初是未知的这一事实很重要,因为如果环境是完全已知的,那么您就不需要为了收集关于它的信息而与它进行交互。
RL 问题的主要特征是:
- 一个最初未知的环境 : 你必须探索这个环境以便获得关于它的信息;
- 延迟反馈:在采取一项行动后,可能需要一段时间才能完全意识到那项行动的长期后果;和
- 顺序决策:收到的整体奖励通常是一系列多项行动的结果,而不是单一的独立行动。
许多研究已经投入到开发用于解决 RL 问题的算法中。其中最著名的是 Q-learning。
q 学习
RL 算法有两种类型:“基于模型的”和“无模型的”。
在“基于模型”的 RL 中,我们使用预先确定的环境模型(可能准确,也可能不准确)来确定最佳行动方案(也称为最佳策略),而在“无模型”RL 中,我们的目标是通过与环境互动来确定最佳策略。
反过来,无模型 RL 算法可以分为两种类型:“策略上的”和“策略外的”,与我们如何与环境交互以收集有关它的信息有关。
使用“政策上”算法,我们在做出决策时根据我们的“最佳”政策来决定我们的行动,然后使用从采取该行动中收集的信息来改进最佳政策。
另一方面,对于“非策略”算法,我们在与环境交互(或探索)时的行为可能与我们认为在采取行动时最佳的行为无关。
例如,我们可能会故意选择采取我们知道在短期内是次优的行动,以确定它是否会在长期内带来更大的回报。
Q-Learning 是一种“无模型、无策略”的 RL 算法。
Q-learning 的工作方式是构建一个 Q 值表 Q(s,a),表示在环境状态 s 下采取行动 a 的预期贴现(长期)回报,然后通过与环境交互来迭代改进该表,直到找到最佳 Q 表。
最初,Q 表中的所有值都设置为小随机数(除了终端状态的 Q(s,a)值设置为 0)。

每次在环境中采取一个动作,都会产生一个(状态、动作、奖励、新状态)元组。这表示紧接在行动之前的环境状态, s ,在该状态下采取的行动, a ,在该行动之后收到的立即奖励,r ,以及在该行动之后的新环境状态,s’。
这些(状态、动作、回报、新状态)元组用于迭代地更新 Q 表中的值,其中更新的 Q(s,a)值,表示为 Q’(s,a),被设置为等于旧的 Q(s,a)值和由新的观察暗示的 Q 值的加权平均值。即(I)即时奖励和(ii)从新状态开始收到的预期折扣奖励之和,假设你总是选择最优行动。
这可以用下面的更新规则来表示:
Q'(s,a) = (1 — w) * Q(s,a) + w *(r + d * Q(s ',argmax a' : Q(s ',a '))
其中:
- w 是应用于新信息的权重(也称为学习率);和
- d 是贴现率,它考虑了这样一个事实,即现在收到的 1 美元比将来收到的 1 美元更有价值。
一旦找到最优 Q 表,给定状态下的最优动作就是使该状态下的 Q(s,a)最大化的动作(即 argmax a: Q(s,a))。
这种算法的效果如何取决于用于与环境交互的探索策略的选择——如果你从未访问过环境的特定状态或在该状态下采取特定行动,那么你永远不会知道在该状态下采取行动的后果。
然而,我们也不只是想在我们的环境中随意移动。理想情况下,一旦我们收集了一些关于我们环境的信息,我们会通过将我们未来的探索集中在我们认为可能产生最大回报的状态和行动上来利用这些信息。一种方法是使用ε贪婪策略。
在ε贪婪策略下,在给定状态下, s ,以概率(1—ε)选择贪婪最佳行动(即对于该状态使 Q(s,a)最大化的行动),否则选择随机行动。
通常ε会随时间衰减。这鼓励在算法的早期迭代中探索环境,但随后,随着时间的推移,减少了探索的数量,使我们能够更专注于利用这些信息。
如果所有的状态-动作对被访问足够多的次数,Q-学习算法保证最终收敛到最优表上,尽管收敛需要多长时间是另一回事。
例子
考虑以下迷宫(摘自此处):

你的目标是训练一个机器人找到通过这个迷宫的最佳路径,从单元(0,0)开始,到单元(6,6)结束,给定没有环境的先验知识。
为了鼓励机器人找到最短的路径,机器人每次移动到一个空的(白色)单元时,应用 0.04 个单位的小惩罚,并且在迷宫周围放置障碍物(用灰色标记),如果机器人进入包含其中一个障碍物的单元,则导致 0.75 个单位的较大惩罚。
机器人只能向上、向下、向左或向右移动(即不允许对角线移动)。然而,每次移动都有一定程度的不确定性,例如,机器人只有 80%的机会沿预定方向移动,20%的机会沿与预定方向成直角的方向移动(两种可能性各半)。
机器人无法移动到迷宫的边界之外,如果它试图这样做,会撞到墙上,其位置保持不变。
如果机器人成功到达迷宫的尽头,它将获得 1 个单位的奖励。
假设贴现率为 0.9,学习率为 0.3,ε贪婪探索策略(常数)ε等于 0.5,在 Q 学习算法的 50,000 次迭代之后,我们得到以下策略。该图显示了机器人在每个方格中采取的最佳方向。

寻找这个解决方案的 Python 代码可以在这里找到。
现实世界中的强化学习
虽然从上面给出的例子中可能看起来不明显,但研究人员已经找到了许多将 RL 应用于现实世界的方法。RL 已经成功地用于开发自动股票交易系统;优化化学反应;训练自动驾驶汽车;教电脑比任何人都玩得好;除了别的以外。
然而,对于那些希望开始 RL 的人来说,历史上最大的障碍之一是获得一个有趣和具有挑战性的实验环境。这就是 RL 是机器学习家族中最不为人知的成员的原因。然而,自从 OpenAI 健身房推出以来,情况就不再是这样了。
OpenAI Gym 是一个 Python 包,包含一系列 RL 环境,从简单的“玩具”环境,如示例中描述的环境,到更具挑战性的环境,包括模拟机器人环境和 Atari 视频游戏环境。

Examples of some of the environments available in OpenAI Gym
这个软件包使业余和专业的计算机科学家有可能试验一系列不同的 RL 算法,甚至有可能开发他们自己的算法。
总结
强化学习是机器学习的一个分支,处理从与反馈可能延迟的环境交互中进行学习。在本教程中,我们讨论了 RL 的基本特征,并介绍了所有 RL 算法中最著名的一种,Q-learning。
Q-learning 包括为所有状态-动作对创建一个 Q(s,a)值表,然后通过与环境交互来优化该表。只要每个状态-动作对被访问足够多的次数,该算法就保证收敛。但是,当可能的状态和/或动作的数量变得如此之大以至于不再可能时,会发生什么呢?
在我的下一篇文章中,我将介绍如何开始使用 OpenAI Gym,它包括几个允许我们更详细地探索这个问题的环境。
Genevieve Hayes 博士是数据科学家、教育家和人工智能及分析专家,拥有Genevieve Hayes Consulting。你可以在LinkedIn或者Twitter上关注她。她还是 价值驱动数据科学 的主持人,这是一个每月两次的播客,面向希望最大化其数据和数据团队价值的企业。
想要发掘企业数据的价值,但不知道从哪里开始?**下载免费的数据科学项目发现指南。
过度工作的技术人员:简介
企业巨头是否让千禧一代早早步入坟墓?一项调查显示,过度工作的技术人员并不是你想象的那样。

Photo by Makhmutova Dina on Unsplash
孩子们睡着了。太阳正在落下地平线,在我伦敦的起居室窗外,高峰时间的交通正慢慢变成傍晚的慢节奏。这是周五晚上,我坐在沙发上,喝着一罐可乐。那么,我在做什么?看书?看网飞吗?当然不是。我在写这个。一篇推广我生意的博文。
但是,我并不孤单。这个城市到处都是仍在工作或计划在周末工作的人,周六和周日都是八小时。根据最近对全球近 9 万名技术人员的调查,超过二十分之一的人每周工作超过 55 小时。在这个水平上,你一天工作八小时,一周工作七天。在这个水平上,你患中风或心脏病的风险也会增加。
千年神话
是代际的事情吗?千禧一代,带着他们的#感恩节星期一标签和忙碌文化被工作到早亡吗?对于技术人员来说,情况并非如此。与其他任何一代人相比,千禧一代的技术人员每周工作时间不太可能超过 55 小时。甚至 Z 世代也更有可能每周工作超过 55 小时。
想要轻松的生活?为自己工作。或者不要。
有人曾经告诉我,“企业家有他们自己的工作时间——所有的时间。”事实上,自由职业者和小企业员工比其他人更有可能长时间工作。在少于 10 人的公司工作的技术人员中,有高达 12%的人每周工作超过 55 小时。但与此同时,这句话一点也不真实。在小公司,人们也不太可能长时间工作,40%的个体经营者和 24%的小公司员工工作时间少于 40 小时。当一家公司达到 100 名员工时,过度工作的比例平均为 4%。因此,人们开夜车的地方不是大公司,而是初创公司。
国家、薪酬和角色
你是否会一直敲下去,直到手指在笔记本电脑的背光键盘上流血,这取决于你生活在哪个国家。我们选取了调查中有超过 200 份回复的每个国家,并对每个每周工作时间超过 55 小时的员工比例高于平均水平的国家进行了可视化。
伊朗、中国、巴基斯坦和印度的技术人员最有可能长时间工作。如果把每周 50-54 小时包括在内,以色列的技术人员也在努力工作的名单上。东欧也榜上有名,波兰、保加利亚和捷克工作时间超过平均水平。
但是这些人一直在做什么呢?他们不是经理就是销售人员。到目前为止,高级管理人员/副总裁最有可能夜以继日地工作,其中 26%的人每周工作 55 个小时或更多,而全栈和后端开发人员工作时间最少。
经理是最有可能长时间工作的人,这一事实反映在薪资群体中。下图显示了受访者在不同工资等级中的分布情况,一方面是每个受访者的分布情况,另一方面是每周工作时间超过 55 小时的受访者的分布情况。努力工作的人在顶层的比例更高,但稍微令人担忧的是,他们在底层的比例也更高(尽管这可能反映了他们所处的位置)。
警告
尽管我在这篇文章的标题中使用了“过度工作”这个词,但这个词从未在实际调查中出现过。因此,受访者没有机会说出他们是否觉得自己工作过度。那些长时间工作的人更有可能对他们的工作和职业不满意,但也仅仅如此。不像一般技术人员说他们最大的障碍是“分散注意力的工作环境”,努力工作的人说“缺少完成工作的人力”是他们最大的障碍。
另一个警告是数据是如何收集的。这是一项自选调查,人口中的某些部分比其他部分具有更高的代表性(如男性与女性)。当被调查者被问及他们工作多少时,他们可以输入他们想输入的任何数字,这导致了一些非常高的数字,可能是因为被调查者误解了输入表格(不,来自挪威的人,你不是一周工作 324 小时。)因此,在将根据这项调查得出的技术人员的工作量与通过其他方法收集的数据进行比较时,要小心谨慎。但是比较不同群体的调查数据是完全有效的。即使可能缺乏准确性,也不缺乏一致性,所以比较应该是有效的。
你是怎么这么快就计算出这些数字的?
从 9 万行原始数据中撰写这份完整的报告大约花了 4 个小时。大部分时间都用来写分析了。我们是如何这么快地计算出这些数字的?我们使用了与市场研究公司 YouGov 共同创建的开源 Python 库,名为 Quantipy。它使得处理调查数据、元数据和快速提取结果变得非常容易。我们会在以后的文章中告诉你更多。
成为最佳数据分析师的途径:帮助、构建、然后行动。

数据分析师的核心能力是“洞察速度”。
数据团队通常由许多人组成,拥有许多技能,使用潜在的重叠技术。这种对速度的关注将这一角色与数据科学家或统计学家区分开来。
今天我重点回答关于业务或者关于用户行为的问题。我将这些类型的问题称为数据分析师的领域,尽管一些组织也称这些人为数据科学家。
一名优秀的数据分析师应该能够直接与他们正在工作的业务部门的人员交流。除了数据印章之外,他们还需要对业务基础有一个坚实的理解。初级分析师可能会依赖业务人员提出聪明的问题,并迅速回答他们提出的问题。虽然这显然很有帮助,但对于分析师来说,这并不是最有效的机会。
最好的分析师不只是回答他们被问到的问题。实际上做分析通常是容易的部分。将普通分析师与最佳分析师区分开来的是其他技能。
帮助队友重新表述他们的问题。
询问他们应该知道的“接下来的 3 个问题”
当你被问到一个特定的问题时,你可能会忍不住想“当然,我可以回答这个问题”。虽然这可能是第一步,但重要的是找到问题的根本原因。如果有人问你网站某个部分的注册转化率,深入挖掘是分析师的工作。
你为什么想知道注册转换?我们更愿意衡量活跃用户的转化率吗?你对某个特定的细分市场感兴趣吗?付费流量、直接流量、有机流量和社交流量的注册率是否不同?
一个项目经理为了一个指标而想要一个指标是不寻常的。他们真的试图了解你的产品或你的受众的本质。你的工作是对你的数据来源和业务本身有足够的了解,以回答接下来他们没有问的三个问题。来回短路会帮助你的团队移动得更快。
通过提出一个足够接近的问题来更快地回答
利益相关者可能对可用的数据有一个基本的了解,但是他们可能不理解对一个问题的简单修改可能会将回答的时间从一天减少到一个小时。没有一个数据团队拥有他们想要的所有数据,建模来回答每个问题。
当有人问一个需要新数据模型或定制工作的问题时,看看是否可以将他们的问题重新组织成一个可以用现有数据模型快速回答的问题。当他们问一些非常具体的问题时,这种情况经常发生。他们甚至可能会问一个更好的问题,但他们可能不太关心细节。
这 10 个客户群中哪一个具有最高的终身价值(LTV)?
这是一个精明的问题,可能意味着您正在与一个精通数据的利益相关者打交道。说你公司的“每个人都知道”这些是你最重要的客户角色。但是,假设你是一家年轻的公司,还没有做过分段 LTV 计算,也没有简单的方法来得到这个答案。不过,您可能很容易获得“收集的总美元数”!
在这种情况下,我会建议这个计数器,“如果我给你在细分市场中每个用户收取的总费用,怎么样?”假设这些用户群中没有一个比其他用户群系统地更新或更老,这可能足够接近了!
如果利益相关者希望在接下来的几周内优先考虑营销活动,他们不会想要等待新的 LTV 计算。通过将问题重新组织成一个足够接近的问题,你提前一周解除了对它们的封锁!这就是杠杆。
重新组织他们应该问的问题
在 Zapier 的相当一段时间里,我们有更好的数据模型,围绕“开启”的 Zaps 数量与“有活动”的 Zaps 数量。这导致了一种倾向,即使用 zaps-on 而不是实际活动来排列各种重要 KPI 和概念。
在大多数情况下,这是好的(请参阅上面的重新构建足够接近),但一旦我们足够大,开始注意到开启和活动之间的差异,数据团队就齐心协力帮助人们根据活动重新构建他们的问题(以及 KPI 和仪表板)!在大多数情况下,这是一个更好的衡量标准,当人们询问开启计数时,我们会问他们这是否真的是他们想要的。
构建自助服务工具(我认为在大多数组织中,商业智能属于分析师的范畴)
构建 V1 是建立利益相关方数据投资的最快方式
在许多公司,数据驱动决策的引入将通过分析师与团队合作,将他们的目标转化为可衡量的结果来实现。在第一次迭代中,这通常意味着建立一个仪表板或类似的界面,让人们能够在没有你的情况下回答同样的第一个问题。
接下来,你必须建立足够直观和足够文档化的数据结构,这样你才能让人们自己探索数据。Tableau、Looker 和类似工具的设计理念是让精明的商业用户发现自己问题的答案。赋予这种能力的分析师将会出类拔萃。我们如何确保分析师不是唯一钻研数据的人?嗯…
教你的团队回答他们自己的问题会让一切进行得更快
一般来说,如果没有经过一些培训,人们不会对摆弄你的数据感到舒服。肯定有很好的介绍,但它们不会解释你的数据集。优秀的数据团队会使用真实数据和人们可能会问的实际问题来创建介绍材料,以便让他们更舒服。
这里的成功并不意味着每个人都成为超级用户。理想情况下,大多数人都有足够的熟悉度,可以环顾四周,自我感觉良好。然后,组织中各个地方的少数人得到了真正好的,这对数据团队来说是一个巨大的力量倍增器。
在 Zapier ,是我们的平台负责人,一个高级项目经理,一个合作伙伴运营部的人,一个作家。分析师在“理解业务需求”方面可能做得很好,但你永远不会像他们那样深入其中,对于 80%可自助的问题,这里每个人都是赢家。
做
有时,您的利益相关者永远不会使用 BI 工具进行 DIY。有时,他们会问一些太难的问题,或者需要太多细微差别的问题。这些是对你分析时间的最好利用。在这种情况下,你仍然应该愿意并且能够帮助他们自己动手。
我之前提到的项目经理兼平台负责人?在组织中的任何团队中,他们总是拥有最新和最快的洞察力,因为他们自己也有很多方法。在最好的情况下,您最终会得到一个新的数据模型,让这些类型的问题在下一次变得更容易。遵循这些步骤的分析师很可能成为数据团队中的关键人物。这对企业来说是件好事,因为你赋予了整个组织的人权力。另外,这对你的职业生涯很有好处。
—
你认为优秀的分析师还会定期做什么?在推特上联系我
这原本是我的博客:https://www.stephenlevin.co/data-analyst-help-build-do/
如果你喜欢就去那里吧!
通向数据科学之路:MOOC 评论

Photo credit: Annie Spratt, UK
我已经成了一名 MOOC 鉴赏家;在我的就业之旅的这个阶段,我已经尝试了每一个主要的 MOOC 课程,我仍然涉猎这些课程以保持记忆犹新。
最棒的是,我没花多少钱就学到了很多东西。迄今为止,Udacity 是最贵的,我是无息贷款买的。他们经常提供折扣,其中许多是每月订阅 30-50 美元。为了简洁起见,我不想在这里重点介绍每个项目的教学大纲,而是解释它们的优缺点。
我参加这么多课程的部分动机是我对教育的兴趣;我认为 MOOC 的形式让许多聪明人重新思考学习,Coursera 和 SharpestMinds 提供了一种重要的形式,可以与学术界的某些方面竞争。不过,如果你不记得其他事情的话:MOOCs 是培养行业技能和增加教育的好方法;他们为你提供学术界无法提供的技能培养。他们不能代替学术教育,你仍然需要
- 构建您自己的项目,并且
- 回答自己的问题
成为一名数据科学家。最接近学术界的应该是 Coursera。通过使用 MOOCs 的组合,自学书籍,并利用我的正规教育,我最终成为了一名数据科学家。
代码学院:

我强烈推荐 Codecademy Pro。价格是值得的,演习真的给适量的大脑伤害,以及良好的解释。我建议明确你在某些课程上的进度,如果你有困难就重做它们(重做错过的问题对于任何技术都是很好的练习)。
我参加了他们的基本 Python 3 课程,以使我成为一个更好的 Python 用户,但他们有一个计算机科学职业跟踪,它更复杂,涵盖了递归、算法和数据结构等主题。
Codecademy 的优势在于它结合了代码跟踪、指导项目、测验和视频:他们真的在推动对材料的整体理解。你需要所有这些格式来真正理解一些技术。
数据请求:

想象 Codecademy,但是更难。这些课程非常详细。这是一个学习的好地方,但是即使是一个普通的任务也要花很多时间。我喜欢他们的“低价优质教育”精神(目前每月 30 美元,高级计划 50 美元,如果你购买一年,会便宜得多),这使得任何人都可以卷起袖子工作。对我来说,由于我已经涵盖了许多这些概念,我觉得不值得完成任何主要的证书,但通过任务的奋斗使我成为一个更好的数据科学的编码者和实践者。
在 Premium 计划中,你每月会接到导师的电话,他会审阅你的简历或给出技术建议;利用这个机会。他们能给你的最有价值的东西就是批评。
Dataquest 提供了一个很好的课程选择,将带你进入高级 Python 主题,作为一个统计学专家,我发现他们对统计的解释非常好。我建议从 Codecademy 到 Dataquest,超越基本技能,变得强大。
我的一个抱怨是他们可能会拒绝困难;在学习一项应用技能时,有必要重复和反复练习。然而,它们涵盖了大量的材料,似乎拥有所有 MOOC 中最好的 SQL 课程。他们进入红移和真正先进的数据工程的东西。我认为一些 DQ 任务对任何有抱负的数据科学家来说都是必不可少的,这几乎让其他 MOOCs 变得过时。
数据营:

我的观点是:数据营是对教育的认真尝试。这是一个让你放松的好地方,视频格式也不友好。我当时很享受,但这只是漫长过程的第一步。code-along 格式就像 Codecademy,但是你不写代码,只是填空。这里有一些不错的大脑损伤,但它不是你最好的选择。
视频(和一般的讲座)不是教授技术概念的好方法。如果你完全是数据科学的新手,这是一个很好的开始和激励的地方,但我仍然推荐 DataQuest。
许多 DataCamp 的学习者(包括我自己)报告说他们参加了 DC 课程,然后去 DataQuest 强化他们的技能,这是我推荐的(从不同的来源学习相同的东西总是一个好的实践)。
我会说 DataCamp 有最好的 R 课程选择,如果你想熟悉一个新的 R 课程包,你不能错过 data camp;他们的讲师是世界级的。它也向你展示了什么是好的代码。每月 30 美元,我认为几个月是增加你的教育的好方法。
Udacity(机器学习工程师):

这个程序涵盖了主要的最大似然算法,我认为这些视频对我已经学过的东西很有帮助;他们拓展了我对支持向量机的理解,但我不认为他们会单独教你。
这里的项目也很好,迷你实验室(不需要)是很好的技能建设者。我认为给我的项目评分的工作人员非常棒,非常彻底。他们真的促使我为我使用的每一个工具写好解释,并证明我的决定是正确的。
2000 美元是这个项目目前的全部标价,我认为他们实际上已经拆除了它,并从根本上改变了它。我在网站上看到的机器学习工程师项目现在似乎更小,专注于部署和数据工程,而我所讨论的是所有主要的 ML 和深度学习算法(没有覆盖部署)。
最终,我会说 2000 美元对我来说太多了,Udacity 的“职业服务”是一个笑话(我得到了一个很好的简历审查,仅此而已)。然而,它会在你的简历上看起来不错,并且可能帮助我获得面试机会。
跳板(中级数据科学,带 Python):

跳板本身并不创造太多内容,而是将你链接到网上免费或低价的教育资源。对于机器学习基础,我认为这是一个好主意;有很多高质量的内容,为什么要牺牲学生的利益来重新发明轮子呢?它面向第一次在 Jupyter 中进行数据科学项目的学生,并且做得很好(我之前列出的 MOOCs 都是浏览器内的代码,无需打开你的ownJupyter 笔记本)。
跳板真正有价值的资产是他们的导师。这是我第一次看到很多机器学习概念,我的导师真的拷问我,以确保我知道我的东西。聪明的家伙。
每月 500 美元,我认为这是一个培养你能力的好方法。准备好接受挑战,获得一个不错的证书,并与一位经验丰富的导师互动。来自教职员工和社区的学生支持非常酷,教职员工会很快回复邮件。如果没有他们,我在数据科学领域将一事无成。
夏普敏兹:

SharpestMinds 提供了我长期以来一直在寻找的东西,作为一个生活在科技领域较小的小城市的人:一个与真正的数据科学家互动的机会。你需要申请才能进入,要获得一个导师,你应该在教育/技能方面达到 80%,但是一旦你进去了,你就成功了。
其他学员都很聪明,在数据科学方面和我走得差不多,所以社区 Slack 有一些有趣的项目和帖子。通常在空闲时,人们会说“我的公司正在招聘,如果你对 X 话题感兴趣,给我发消息。”
当我拿着纯数学硕士学位走过毕业典礼台时,我感觉就像有人把我推出飞机,并对我说“快点,在你落地之前找份工作。”夏普明斯就像是第 101 空降师从天而降,递给我一顶降落伞。
这可能是任何 MOOC 或训练营有史以来最好的“职业服务”,因为在你找到工作之前,他们不会得到报酬。SM 现在平均每 3 天就有一名新员工(考虑到在 2019 年获得入门级数据科学职位的难度,这是一个令人印象深刻的壮举)。
它的成功部分源于它的特异性和选择性:这是而不是一个为那些想知道“数据科学适合我吗”的人设计的程序它是为那些拥有丰富知识并试图获得最佳入门级 DS 职位的人准备的。你需要努力与 SM 合作,并与你的导师一起建立一个雄心勃勃的项目,一旦你被聘用,你欠他们第一年工资的一小部分(他们会提前安排)。他们还非常关注你的简历和在线表现,导师会用模拟面试来指导你。
本质上,这不是一个 MOOC 或训练营,而是为那些试图成为职业选手的人提供的教育和职业服务。
Coursera:

一种很好的学习方式。它从根本上不同于代码 MOOCs,而是侧重于概念理解。这里的测验真的会让你思考,我从来不觉得这些视频是在浪费我的时间。
我用 Coursera 上了一门基础 R 课程和 SQL 入门课程,这帮我躲过了很多面试,因为雇主总是在寻找懂 SQL 的人。我可能不需要告诉你 Coursera,但如果你在申请工作,确保你的简历和 LinkedIn 上有一些他们的证书;保守派不知道所有新的 MOOCs,但每个人都知道(并尊重)Coursera。
做真正的麦考伊:
别忘了,为了建立编码技能,你需要去 Edabit 或 Hackerrank 看看你是否能升级。从简单开始,不要超越你自己,让这些基础真正强大起来(当你向后切割字符串和构建时间序列图时,你会需要它们)。人们通过连续几个月每天数小时的编码成为程序员。你将不可避免地需要找到有趣的数据集,并在其上测试你自己的知识;没有哪门 MOOC 能重现这一点。如果你想成为一名数据科学家,不要只是敲掉 MOOCs 让简历好看;实际上建立雇主正在寻找的技能。
金融科技产品的完美公式:CX =毫升+ UX
成熟的金融科技面临的新挑战是用更多提供更少,我有解决这个问题的方法。
当金融科技行业刚刚成熟时,大多数公司都推出了一个简单的产品:一个手机钱包 、 借记卡,或零钱投资应用程序。
这些产品受到了用户的欢迎,他们仍然不愿意将自己的血汗钱托付给一个应用程序。
但客户群已经迅速成熟。根据凯捷的数据,2017 年,52%的零售银行消费者使用了三个或更多的金融科技应用来补充银行提供的服务。
如今,围绕金融科技出现了一个新的趋势:平台化 。
金融科技应用正在迅速改变客户体验,并从实用应用(做一件伟大的事情)演变为所有金融事务的一站式解决方案:

来源: CB 见解
这一举措的出现是因为应用程序疲劳是真实存在的。在理财方面,大多数千禧一代用户( 85% )更愿意选择一家提供全方位服务的金融机构。
好消息是什么?大多数金融科技公司都成功地利用尖端技术建立了一个应用内服务生态系统。他们正在从解决方案和转变为超级应用——以一系列互联金融和生活服务为特色的平台,从财富管理到加密投资、网络服务和零售商折扣。
现在,问题来了:随着金融科技平台变得越来越复杂,功能越来越多,用户开始抱怨功能/信息过载——这正是他们放弃现有银行,转而使用“直观”金融科技应用的确切原因。
问题就出在这里:打造技术先进的金融产品只是交易的一部分。如果产品的逻辑过于复杂,客户实现财务目标的道路过于曲折,那么在这个过程中,你将不可避免地失去客户。那么,如何提高银行业的客户参与度呢?
对成熟的金融科技公司来说,用更多提供更少是新的挑战。
但是使用客户体验(CX) =机器学习(ML) +用户体验(UX)公式是可以解决的。
为什么以客户为中心的金融科技产品开发方法是新的发展方向
千禧一代通常被贴上“T2 式自私的 T3 代”和“T4 式自私的 T5 代”的标签。作为一名千禧一代,我相信这些刻板印象通常是不准确的——但当涉及到银行业时,它们实际上是正确的。
事情是这样的:我不寻找特定的银行产品。我寻找解决方案来满足我(自私的)当下需求:想办法为出国旅行存钱,为我的婚礼存钱,或者只是评估在我想要的地区买房子的可行性。
我的顾客之旅与我的生活需求密切相关。然而,大多数金融科技产品所有者并没有将用户的需求置于聚光灯下,而是围绕他们投资组合中的产品构建客户之旅。
结果,客户就是看不出对我有什么好处?你推销中的成分。以至于 40%的千禧一代说他们没有从他们的主要银行收到任何个性化的报价,另外 46%的人说他们的银行没有推销与未来购买计划相关的营销报价。
但是,大多数零售银行消费者确实希望在银行之旅的各个阶段都能感受到特别:

来源: 金融品牌
好消息是什么?与现有银行不同,金融科技公司已经拥有了向用户提供更个性化体验所需的几乎一切。
解决方法:部署预测分析,以建议下一个最佳行动
金融科技公司常常坐拥客户交易和人生阶段的丰富数据,却没有给予太多思考。
是时候将这些数据从产品孤岛中解放出来了。通过这样做,您可以从管理一组帐户切换到以他们希望被管理的方式管理单个客户。

来源: 德勤
但是你怎么知道你的客户的需求呢?
- 利用手头的数据
- 设计机器学习算法来帮你处理数据
- 接收下一个最佳行动建议
这里有一个定义客户需求的快速示例:
琳达订了一张五个月后去马略卡岛的机票。但是她的储蓄账户几乎空了。也许她需要一些预算建议,或者可能想考虑提供酒店积分的联名信用卡。
通过将预测性银行分析和倾向模型添加到您的产品中,您可以实时捕捉这种需求,并向 Linda 推荐她可能会接受的报价。简而言之,你可以学习卖什么,什么时候卖,什么时候什么都不做是最好的选择。通过这种方式,您可以借助预测分析实现更高水平的客户参与度。
以下是在移动金融科技产品中部署下一个最佳行动(NBA)概念的几种方式:
向个人客户提供高度个性化的优惠、服务和奖励。使用预测分析,金融科技公司可以根据用户的支出数据、位置、常见购买行为和过去对活动的反应,生成动态人物角色并为用户提供相关交易。这些可以以应用内消息、应用通知的形式发送。或者来自应用内人工智能助手的个性化建议。
改善交叉销售、追加销售和产品推荐。 ML-和 AI- powered 模型可以生成动态的客户角色。将它们与产品属性映射结合起来,金融科技公司可以进一步预测客户下一步可能购买的产品。NBA 还使金融科技公司能够提供卓越的客户体验。通过了解你的客户下一步打算做什么(买房、出国旅游等)。),您的团队可以采取行动引导客户实现他们的目标。您还可以动态跟踪和查看以前的优惠,以避免一次又一次地向相同的用户推销相同的产品。
恰当的例子: 摩根士丹利最近推出了 WealthDesk ,这是一个次优行动财富管理平台,帮助他们的顾问与客户建立更好的关系。
摩根士丹利的系统到底能做什么?
- 根据生活事件为客户提供建议。例如,如果客户有一个生病的孩子,系统可以推荐最好的当地医疗保健选择、学校和管理疾病的财务策略。
- 向顾问发送个性化信息,如低现金余额警报、客户投资组合重大增减通知、金融市场影响客户的重大事件更新等。然后,顾问可以将个性化文本与警报结合起来,并通过多种沟通渠道发送出去。
- 提供更传统的“机器人建议”该系统为客户收集建议和见解,并将其推销给顾问。
为了领先一步,FinTechs 也可以采用类似的 NBA 解决方案。但他们可以在更大程度上实现自动化,并使用对话式人工智能代替财务顾问与客户一对一接触。
另外,如果你对人工智能金融科技解决方案的更深层次的技术见解感兴趣,并了解机器学习在金融领域的工作方式,请查看《银行业的下一个十年:技术变革的时代》白皮书。
现在转到公式的第二个元素:用户体验。
简单银行=快乐银行
是时候分享一个令人不安的事实了:与其他几代人相比,千禧一代的金融知识落后了。
证据如下:千禧一代平均答对了 44%的 P-Fin 指数问题,而美国成年人的正确率为 50%。
理解风险和保险是千禧一代最缺乏知识的两个领域。这是有问题的,因为风险和不确定性存在于大多数金融决策中。
那么,你如何教导那些不想被说教无聊事物(预算、金融交易、共同基金)重要性的人呢?当涉及到管理财务时,你的产品如何减少摩擦或跳过障碍。
简单直观的数字银行应用剖析
快速安全的授权。
在英国,用户一周要查看 7 次以上。澳大利亚人每周登录他们的银行应用近十次。
那么,如何打造快速安全的银行体验呢?生物识别解决方案(触控 ID、Face ID、Voice ID)支持快速访问应用和核心功能。但是您可以将这些与多步认证(密码+文本/电话)相结合,以进行更敏感的操作,如更改卡取款限额和进行大额转账。
例如,Monzo 允许用户通过指纹授权 P2P 转账,但对银行转账有更高级的验证。

快速 KYC 和入职
让入职流程成为一次愉快的对话,而不是令人生畏的纸质例行公事,使用智能手机的功能,如摄像头(捕捉身份证件)、生物识别、社交媒体数据和基于位置的服务。
仅请求验证新客户所需的数据。随着客户在你的应用中执行各种操作并提高他们的信任度,你可以逐步开放对附加服务的访问。此外,可以添加额外的 KYC 程序来解锁这些功能,以保持合规性。
MyBank (蚂蚁金服的一部分)在贷款申请中使用 3–1–0 原则:
- 3-新客户的分钟申请,大部分数据从蚂蚁金服生态系统内用户的其他档案同步
- 1-第二次认证
- 0 手动后台运营,因为这些都外包给了机器学习算法和预测分析
卡片订购的简单用户界面
获得一个借记卡/信用卡后验证应该只需要轻轻敲几下。 Square Cash 为如何做到这一点提供了一个很好的例子:

来源:CB Insights
提供重要客户信息一览
提供关键账户数据的即时概览:余额、费用分析、未清/即将到来的账单,以及一些基本分析。Revolut 在他们的主屏幕上做得相当好,提供了渐进的,一键发现见解以及无缝导航到附加功能,如充值。
为了获得优势,您还可以引入更高级的分析仪表板,向用户显示他们在实现财务目标方面的表现。例如,如果他们正在实现他们的储蓄目标,你可以建议投资组合配置或发送其他个性化的财富管理建议。
SoFi 成功地将所有见解整合到一个简洁的界面中:

最后,不要忘记教育你的用户关于他们的账户选项和个人财务(不要听起来居高临下)。 Acorns 是少数几个具有教育功能的金融科技应用之一,它与美国消费者新闻与商业频道合作,为用户提供一系列金融见解:

让支付体验变得顺畅,但确实会增加一些摩擦
这听起来可能违反直觉,但是请耐心听我说。
PayPal、Venmo 等为快捷方便的支付设立了标杆。借用 messenger UI 来设计一个类似的流畅的转账或账户充值体验是一个好主意。
但在金融科技产品中,零摩擦 UX 弊大于利。毕竟,金钱是一件严肃的事情。没有用户会高兴地意识到她只是给一些垃圾邮件联系人发送了 1000 美元,因为这样做是“无缝的”和“没有麻烦的”
因此,当涉及到重大的应用程序内操作或永久的帐户更改时,添加有意的摩擦是值得的。确认弹出窗口、双因素身份验证和其他小障碍可以降低用户采取错误操作的风险。
平衡流畅的体验和必要的摩擦是 FinTech 产品所必须的。
包扎
更好的客户体验一直是传统银行和金融科技产品之间的一个强大差异。但随着金融科技产品组合的增长,让客户体验变得更加困难。
通过投资预测性银行分析和金融领域的机器学习,你可以从大规模推销转向根据客户当前的生活阶段和众多其他因素向他们建议超个性化的交易和行动。
接下来,采取加权 UX 决策,逐步引导用户发现更多功能,同时允许他们只需轻点几下鼠标就能完成重要的工作。
这就是你为金融科技产品打造理想客户体验的方式。
NoSQL SQL 应用程序现代化的风险

在过去的 40 多年里,传统的关系数据库,如 DB2、Oracle、SQL Server、Postgres、MySQL 和许多其他数据库,已经被证明是构建数千亿美元应用程序的基础。通过 SQL 与后端数据库交互的应用程序在所有行业中都很普遍。如果所有依赖 SQL 的应用程序在一夜之间消失,我们的世界将陷入绝对的混乱。在无数的影响中:您将无法访问您的银行或在银行花钱,您的医疗记录将无法访问,货物将无法路由或运输,等等。在许多方面,如果没有基于 SQL 的应用程序,现代生活是无法识别的。
NoSQL 数据库的崛起

在 21 世纪初,生成和存储的数据量、到达数据库的速度以及数据类型的多样性开始激增。最初,这是由网络应用程序生成的点击流数据推动的,但如今,物联网等许多其他数据源也产生了类似的挑战。以 SQL 为主要界面的传统数据库在这种新环境中举步维艰。绝大多数人都没有横向扩展的实际方法,他们刻板的打字风格使他们不适合存储完全非结构化的数据。
为了应对这些挑战,人们建立了新的方法,主要基于 21 世纪中期几家互联网公司(如谷歌、亚马逊和雅虎)的研究,这些公司正被他们收集的数据淹没。
非常依赖这项研究的一个值得注意的类别是 NoSQL 数据库,如 HBase、Cassandra、Dynamo 和 MongoDB。这些系统旨在通过可容纳半结构化或非结构化数据的横向扩展体系结构来处理大量数据。
抛弃 SQL 是一个错误吗?
为什么 SQL 最初被 NoSQL 项目和供应商放弃了?主要的论点是:1)前期的模式使您的业务在处理半结构化和非结构化数据时不太灵活;2)SQL 很慢,它的表达是不必要的。
首先,很明显,好的模式设计是困难的,需要你提前理解你的数据。当数据类型快速变化时,不被锁定在模式中似乎是非常合理和有吸引力的。
问题是,所有的分析都需要你理解数据的结构。结构,以定义的模式的形式,必须被应用来做任何有用的事情。仅在读取数据时应用结构,一种“读取时的模式”方法,确实减少了预先的数据工程工作,但是它将问题推给了实际的数据用户。通常,这不是一个好的权衡。数据用户通常比数据工程师多得多,将责任推给数据用户可能会将一个在前期完成的任务变成一个需要在下游重复完成的任务。此外,数据用户除了他们的直接职责之外,通常没有太多的上下文,可能会错误识别或误用数据。还有一个风险是,不同的数据用户可能不会以相同的方式解释数据,从而在理解和协调冗余和不一致的用法方面产生问题。

NoSQL leads to a bunch of spaghetti code to do what SQL does
第二,事实证明 SQL 的表达能力是有用的。这有许多原因,我们将在下一节中讨论,但最明显的证据是许多 NoSQL 项目和供应商实现了“类 SQL”查询语言。卡桑德拉的《CQL》就是一个例子。在某些方面,这些“类似 SQL”的查询语言是有帮助的。它们有效地将特定于 NoSQL 的语法映射到更广泛理解的 SQL 语法,减轻了开发人员的“新语言”负担,并可能开放一些第三方集成。
在其他方面,拥有一种看起来像 SQL,但实际上不是的查询语言会适得其反。这有可能让开发者产生一种虚假的自信。他们可能高估了这些语言中存在的 SQL 支持的实际水平,并且只有在项目进展顺利之后才发现重要的差距。可能更糟的是,在技术上适用于概念验证的“类似 SQL”功能可能无法在完整的生产系统上运行,因为从底层 NoSQL 数据库渗透出来的功能属性存在差异。如果底层的 NoSQL 数据库在设计或修改时没有考虑到这一目的,那么在 NoSQL 数据库上添加一些“类似 SQL”的语法糖并不能使表连接之类的东西在生产环境中“工作”。
NoSQL 系统中缺少 SQL 本身并不是一个固有的优势。在所有条件相同的情况下,为了一种 NoSQL 特有的语言而放弃一种很好理解的、广泛部署的数据查询语言是没有好处的。另一方面,完全放弃 SQL 或使用“类似 SQL”的语言有一些明显的缺点,尤其是在应用程序现代化的背景下。
放弃 SQL 是有风险的
在过去的 40 多年里,公司在体现其核心竞争力的任务关键型应用程序上进行了大量投资。数据是几乎所有应用程序的核心,传统数据库是数据存储和检索的主要选择。
当应用程序存储和操作的数据增长超过底层传统数据库的处理能力时,通常会出现对这些应用程序进行现代化的迫切需求,以便通过利用自应用程序最初部署以来可用的新数据源来使应用程序更加智能,并整合人工智能和机器学习等利用数据的现代技术。
例如,零售商的需求计划应用程序可能会开始整合有关当前天气或可能影响当地交通的当地事件的数据,以便更有效地分配库存。或者考虑一个保险索赔系统,该系统集成了车辆传感器数据和摄像机图像,以更加智能地处理索赔。
这些应用程序现代化项目通常会考虑使用 NoSQL 数据库。从某些方面来说,这是有道理的。它们确实提供了向外扩展以支持新数据源的能力。然而,当用 NoSQL 替换一个遗留的 SQL 数据库时,您可能会大大延长项目并增加风险。

Abandoning SQL in mission-critical applications impedes application modernization
首先,缺乏完整的 SQL 支持需要大量的应用程序重写。这些应用程序使用 SQL。即使 NoSQL 数据库中存在重要的功能,使用该功能也需要应用程序“说”一种定制的 NoSQL 或不兼容的“类似 SQL”的方言。此外,找到具有所需专业知识的开发人员比找到大量已经精通 SQL 的开发人员要困难得多。帮助将现有 SQL 转换成 NoSQL 方言的工具不完整或不存在。
接下来,底层数据模型通常需要完全重新考虑。例如,缺乏高性能的表连接(或者在某些情况下,根本没有连接数据的能力)会导致数据非规范化的激增,从而导致数据重复,浪费硬件资源,并且需要大量的新代码来确保重复的数据在其所有定义中保持一致。
此外,通常很难达到与传统数据库相似的性能。NoSQL 系统通常擅长只访问一行或几行的短期操作查询。扫描大量历史数据的分析查询的性能通常很差,不足以满足应用程序的需求。通常,NoSQL 数据库通过实现 Lambda 架构与另一个更适合长期运行的分析查询的系统配对。这些体系结构很复杂,难以实现,引入了许多潜在的数据不一致途径,并意味着巨大的持续维护成本。
此外,应用程序在遗留数据库中所依赖的许多数据库和 SQL 特性通常是不可用的,需要由开发人员从头构建或完全消除。在 NoSQL 系统中复制遗留 SQL 数据库中存在的一些功能,如支持完全 ACID 支持的一致性模型,需要如此专业的开发人员技能和如此巨大的工作量,以至于任何依赖于重新实现的项目都将花费大量时间来有效地构建一次性数据库,而不是实际更新应用程序。
一种风险小得多的应用程序现代化方法是用一个可横向扩展、支持数据类型灵活性并在不放弃 SQL 的情况下提供数据库内机器学习和人工智能的数据库来替换您的遗留数据库。这样的数据库存在吗?
你能用 SQL 获得 NoSQL 的优势吗?
如今市场上有许多横向扩展的分布式 SQL 系统,如雪花、蟑螂和谷歌云扳手,以及我共同创立的公司 Splice Machine 。有了所有这些,我相信有可能获得 NoSQL 数据库的好处,而不接受上面讨论的问题。为了更深入地了解其中一个解决方案, Splice Machine 使用 NoSQL 系统(HBase)作为其底层存储引擎,但它基于专为实现 OLTP SQL 应用程序现代化而设计的广泛功能,它提供:
- 受支持的 ANSI SQL 语法的详尽集合
- 带主键的行存储,用于快速查找
- 表中高效的列存储,可以像 S3 或 ADLS 那样存储为廉价的对象存储
- 全面的 ACID 合规性和多行交易支持
- 支持约束、参照完整性、主键、触发器和辅助索引
- 内存中的分布式分析处理
- 一个基于成本的优化器,它设计高效的查询计划,并可以选择直接针对 HBase(通常用于小型的“操作性”查询)或通过 Spark 执行器(通常用于大型的“分析性”查询)来执行这些计划
- 支持自定义存储过程和函数
- 使用 Kubernetes 在内部或 AWS 和 Microsoft Azure 上部署的能力
- 将半结构化或非结构化数据直接存储在数据库表中或通过集成 Spark 功能存储的能力
- 具有数据库内分析、集成 Jupyter 笔记本电脑、模型工作流管理和云部署功能的集成数据科学功能

An example of a scale-out SQL engine that handles OLTP and OLAP
像这样的横向扩展 SQL RDBMS 可以促进遗留系统的现代化。
首先,像 NoSQL 数据库一样,iit 可以横向扩展到非常大的数据大小和查询量,远远超过遗留数据库的能力。它还为存储和操作数据提供了广泛的灵活性。
其次,它使从支持遗留数据库的迁移变得简单。由于 Splice Machine 全面的 SQL 支持,针对遗留数据库编写的 SQL 几乎不需要返工。底层的遗留数据模型通常不需要修改,当然也不需要像迁移到 NoSQL 数据库那样进行大规模的重新思考。Splice Machine 可以处理所有遗留的数据库工作负载,无论是操作性的还是分析性的,而不需要将多个专门的系统连接在一起。
最后,它提供了允许迁移的应用程序变得“现代”的能力。它可以在内部或多个云平台上运行,并通过现代的“容器化”方法抽象出底层基础架构。它允许直接在数据库中进行数据科学,因此可以应用使应用程序更智能、更有价值的新数据源和技术,而无需在多个系统之间提取、转换和加载数据。
概括起来
建立在遗留数据库上的定制应用程序通常具有竞争优势。这就是为什么公司让他们定制而不是授权打包的应用程序。现代化这些应用程序通常是可取的,要么是因为底层数据库处于压力之下,无法扩展,要么是因为希望利用现代部署或人工智能技术。用需要对现有数据模型和业务逻辑进行大规模返工的 NoSQL 数据库替换支撑这些应用程序的遗留数据库是有风险的,并且会显著增加现代化项目的范围和进度。Splice Machine 等横向扩展 SQL 数据库提供了可伸缩性和灵活性,同时提供了从遗留数据库系统平稳迁移的途径。
要了解更多有关如何让您的定制应用变得敏捷并融入智能的信息,请下载我们关于改造传统应用的白皮书。
积分级训练/测试分裂的危险
将你的数据拆分成 Train/Valid/Test 并不像from sklearn.model_selection import train_test_split那么简单。当你有一些数据点和其他数据点真的很接近的时候,用幼稚的方式随机拆分你的例子,会让你觉得你的模型比实际更准确。让我给你举几个亲身经历的例子。
示例 1:法律文档上的命名实体识别
我为一家公司(http://atrium.co)工作,该公司有来自几百个客户的几千份文件,我们想要一个模型,它可以提取文件并找出投资者是谁。使用了一个 CRF 。
该模型的早期迭代的验证和“测试”准确度在 80%左右,但在新客户的新文档中低于 50%。出了什么事?*
您可能希望模型查看类似 PREVIOUS_WORD2'Investor '或 NEXT_WORD2'Purchase '的功能。但当我们查看该模型考虑的权重最大的因素时,排在首位的都是类似 WORD _ IDENTITY =[特定投资者名称]这样的东西。标准的过度拟合问题,可以通过增加一个单词在模型认为它是一个真正的单词之前必须出现在文档中的百分比来解决,而不仅仅是把它扔进
为了更准确地评估模型的性能,关键是在客户级别而不是在文档级别进行拆分。如果我们有一堆客户 A 的文档,投资者 B 给了他们钱,它们要么都在训练集中,要么都在测试集中。这样做使我们的测试准确度和我们实际的真实测试准确度一致。
示例 2:蛋白质
蛋白质由氨基酸组成。大约有 20 种氨基酸,所以每种蛋白质都是由 20 个字符的字母表组成的一个单词,或者如果你喜欢,也可以是由 20 个单词的字典组成的一个句子。
你可能还记得最近一篇名为“使用深度学习来注释蛋白质宇宙”的谷歌论文/公告,其中他们让 CNN 的狗来研究这些单词/句子,并学习预测世界上的每一个属性。
这篇论文在 5 月份得到了预印,但尚未在任何地方发表,这些 Twitter 用户提出了一个可能的原因:如果你检查他们的“严格基准数据集”部分,他们将序列分成训练和随机测试,但数据集中有一些序列与其他序列非常接近,如果它们在训练和测试之间分开,那么模型可以说“看不见的”测试序列与它确实看到的超级相似的训练序列具有相同的属性。
[我不是在批评那些看起来很酷的论文作者//支持他们调查的广泛的财产//我可能对他们的方法有些误解。]
我在研究一个模型时遇到了类似的问题,该模型旨在预测一种蛋白质作为攻城锤突破细胞壁并运送它碰巧携带的任何珍贵货物的能力。我们有一份 1000 种蛋白质的清单,这些蛋白质是从不同科学家进行的实验中收集来的。但是很多时候实验者会研究一个主题的一堆变体,看看哪一个效果最好。因此,分割训练/测试数据的正确方法不是按蛋白质,而是按“主题”,我们通过基于您最喜欢的氨基酸序列之间的距离度量的分层聚类来建模。
总之,不要简单地分割你的数据。分层前批准。劈开之前先怀孕。如果你以前遇到过这种事情,请告诉我,我正在收集例子。
- 人们说“什么给”,所以我想我会去一个过去式的版本。
[原发于https://zswitten . github . io/2019/11/03/train-test-splitting . html]
诗歌机器
使用 OpenAI GPT2 生成唐诗

我一直很欣赏中国诗歌的翻译——我不是这方面的专家,但有两位诗人杜甫和李白是我真正喜欢的。他们是盛唐时期的传奇大师,而且(如果翻译准确的话),他们有着惊人的天赋,能够用他们的文字冻结某个瞬间,捕捉那段特定的时间;他们的诗读起来就像一串横跨河岸的宝丽来。
这里举例,是阿杜的赋诗。除此之外,这里有某种简单性:一种强烈的情感引起共鸣,不像我成长过程中听到的许多英语诗歌,它坚定地使用现在时态:
漫长的攀登
广空疾风,猿呜咽,
飞鸟归巢,过清湖白沙,
落叶如瀑,
我看长河滚滚。我从三千英里外赶来。带着秋天的悲伤和我百年的悲哀,我独自攀登这个高度。厄运在我的鬓角上结了一层寒霜,心痛和疲倦是我酒里的一层厚厚的灰尘。
我想这就是吸引我的原因——这里有一种罕见的清晰,即使翻译可能不准确。
因此,对于我的机器生成艺术的实验来说,唐诗似乎是一个合适的起点(此外,优秀的 GWERN 已经做了通常的英语[1])。现在,我已经从我的统计模型中溜出来几个小时,偷看一下我今天早上设置要运行的代码。
在我们这些从事机器学习的人当中,我在整个项目中投入的工作是微不足道的:一个微小的数据集,一杯咖啡,几行 Python 代码,以及在等待 OpenAI 基于 transformer 的生成模型[2]下载时抽一支烟。
像大多数神经网络一样,OpenAI 模型可以被认为是人脑的粗略模拟——一系列成层排列的人工神经元,当思想(输入)的片段在一层和下一层之间传递时,这些神经元会发光。我们通过指向某物并告诉它产生类似的东西来教它。OpenAI 的研究人员裁定,他们的完整模型太复杂,太像人类,无法发布——在这个假新闻的时代,天知道人们会对它做什么——所以他们敲锣打鼓,只发布了他们的野兽 GPT2 117M 的小型儿童版。
没关系。我们应该利用这个孩子。我把它设定在一本唐诗集上,鉴于我个人的偏好,李白和杜甫在这里都很突出。它已经消化并向我吐出了一些诗歌,而我,扮演着一个很像报社助理编辑的角色,正在审阅新记者交来的稿件。
以下是我们的第一批结果:从十首作品中精选出六首诗歌。我的编辑是删除每首诗不超过两行。
无尽的思念
我一直渴望去宝沙。
……金井边秋虫鸣;
薄薄的霜像小镜子一样在我冰冷的垫子上闪闪发光;
高灯闪烁;还有。我的渴望越来越深。
我掀起窗帘,长叹一声,凝视月亮,像一朵花,从云层中升起。上面,我看到天空的蓝色和深邃。在下面,我看到了水的绿色和躁动。
天高,地广;他们之间弥漫着我的悲伤。我能梦想穿越山门吗?无尽的渴望让我心碎。无尽的思念 II
太阳落山了,花儿中有一层薄雾;月亮变得很白,人们悲伤难眠。愿它能随着春天的风来到杨希嫣。因为没有人能为你承担我的歌的重担,所以我想你在遥远的地方,在蓝天之外,我那曾经闪亮的眼睛现在充满了泪水。哦,如果你怀疑我的心痛,在我明亮的镜子里,回来看看我吧!
这不是我见过的最好的诗歌,但也不是最差的。据我所知,父母们一直试图让孩子们写诗——我的父母当然也是这样做的——但通常要过很多年,这个小家伙才会停止在尿布上拉屎,决定接受罗伯特·弗罗斯特。到目前为止,我已经在这上面花了大概三个小时的时间,其中大部分时间都花在了解决代码问题上。
艰难的道路
我要渡过黄河,但是冰阻塞了渡船;我想去爬太行山,但是天空被雪遮住了。
我会坐在一根鱼竿上,懒洋洋地靠在小溪边—
但我突然梦想驾着一艘船,向着太阳航行……
旅途艰辛,
有很多弯道——我该走哪条?….总有一天,我会乘风破浪,扬帆直上,穿越深深的大海。终南山下
沿着凤县的蓝山
你找到了你的家。风拍打着我们,拍打着我们的耳朵,而我们只看到乌云;我们只听到静静的河面下沙沙作响的草。
农民们都在归还他们所拥有的东西,
清洗他们的土地,并烧毁它们。
在我这个未经训练的人看来,GPT 2–117m 型号似乎更有效地掌握了唐诗的“形式”。鉴于这个数据集如此之小,一些死记硬背的短语是不可避免的,但我对如此之少感到惊讶。通过一些小心的删减——一条线在这里和那里被修剪——我可以带出一种支配一切的情感的印象。我对此特别自豪:
进攻皇帝的哀叹
士兵们被派往北方守卫丝绸之城,被派往东方接受来自天堂之矛的雨水。
南奔塞外,群星冉冉,
而我们的足迹在三百里之外。
我怎么忍心把他们扫走?
一条消失的河流被人们遗忘了。
谁知道它是否还活着?谁知道它是否曾经存在过?
我必须强调,最后两行绝对不是我写的。
每当我看到这样的事情,我都会想起一个人,他就是象棋大师加里·卡斯帕罗夫。卡斯帕罗夫可能是迄今为止我们见过的最伟大的人类棋手;从 1986 年到 2005 年,他是这项运动的世界最佳选手。
1997 年,卡斯帕罗夫被一台机器打败——IBM 的深蓝。这一举动改变了国际象棋的历史,我认为——回过头来看——这才是“人类对机器”的恐惧真正击中要害的地方。从那以后,人类的棋子已经接受了被机器打败。
卡斯帕罗夫做了什么?卡斯帕罗夫走开了,让计算机辅助国际象棋工作。他拿人类 vs 机器,做成人类+机器。他的主题是他的 TED 演讲的标题——“不要害怕智能机器;和他们一起工作”[4]。今天,一些世界上最强大的玩家是电子人——人类玩家和机器智能的结合体——他们很难被击败。
我相信这种人类+机器的哲学。在接下来的一年左右的时间里,我将沿着这条路线发起更多的小实验。让我们看看它能带给我们什么。
我的一位数学家朋友最近向我提出,诗歌的作用是捕捉复杂的情感;我反驳说,诗歌的作用是通过单词的顺序和单词本身一样传递信息。但是在我们的辩论中,都有一种隐含的理解,即是一个诗人,一个有目的感的创造者,不管是信息还是情感。我想知道我们是否可以对此进行同样的辩论,或者我们是否必须在消除几个偏见的情况下重新开始这场辩论。
这最初是在 http://yudhanjaya.com/2019/04/the-poetry-machine/发布的。这篇文章以前是“GPT 2110 米”而不是“117 米”——这个问题已经解决。
https://openai.com/blog/better-language-models/
[3]https://www.chess.com/article/view/deep-blue-kasparov-chess
[5]http://www . BBC . com/future/story/2015 12 01-the-cyborg-chess-players-that-can-be-beat
泊松过程:你需要知道的一切

了解泊松过程以及如何使用 Python 模拟它
让我先挑起你的好奇心。让我们看看泊松序列是什么样子的。

A sample Poisson process (Image by Author)
该图显示了患者到达医院急诊室的时间,单位为小时(从任意时间 0 开始)。我们还碰巧知道平均到达率是每小时 5 个病人。
事实证明,使用泊松过程可以很好地模拟这种“到达”数据。
泊松过程在各行各业都能看到。以下是一些例子:
- 在免下车药房,在某个时间间隔内,开到停车窗口的汽车数量。
- 木瓜大王周日中午 12 点到下午 4 点卖热狗的数量。
- 医院超声机的故障。
- 工作日上午 8 点到 11 点通过某个交叉路口的车辆数量。
- 暴露在一束光子下的光电探测器在 1 分钟内产生的电脉冲数。
既然我已经激起了你的好奇心,让我们开始进入泊松过程的奇妙世界的旅程。所以跳上船吧!
首先,快速概述随机变量和随机过程
随机变量中的‘变量’一词是用词不当。一个随机变量,通常用 X,Y,Z,X1,X2 ,**等表示。,其实是一个函数!和所有表现良好的函数一样, X 有一个域和一个范围。
域(X):X的域是随机结果的样本空间。这些结果出现在一些随机实验中(比如投掷一对硬币)。结果可能是也可能不是数字。例如,(正面,正面)或(反面,正面)是抛硬币实验的两种可能结果。
范围(X):X的范围是实数的集合。

Random variable X maps the sample space of events to a range (Image by Author)
为什么 X 被称为随机变量?这是因为 X 使用概率分布从范围( X )中输出一个值,该概率分布应该表示样本空间中事件发生的可能性。在上图中,概率分布可能是:
{ 1 → 0.2、 2 → 0.45、 3 → 0.15、 4 → 0.2}
请注意,所有结果的概率之和是 1,因为抛硬币实验总是会产生一些结果:
P ( 1 或 2 或 3 或 4 ) = P(1) + P(2) + P(3) + P(4)
= 0.2 + 0.45 + 0.15 + 0.2 = 1.0

The Probability Mass Function of X (Image by Author)
x 可以是离散的或连续的。
离散随机变量的范围是可数无限的,例如对于整数集合。离散的 X 的真实世界例子是在某个时间间隔内通过十字路口的汽车数量。一个离散随机变量的概率分布被称为 P 概率 M ass F 函数(PMF)。
一个连续随机变量的值域是实数的集合,也就是一个不可数的无穷集合。现实世界中不容易找到纯粹连续的 X 的例子。一个非常接近的近似值是一个地方在一年中特定时间的温度,以任意大的精度测量。连续随机变量的概率分布称为概率密度函数(PDF)。
一个纯粹连续的 随机变量的真实世界例子不容易找到。
现在让我们回顾一下什么是随机过程。
随机过程
一个随机过程是一个随机变量序列 X1、X2、X3……等等 。通常按时间索引。每个变量可以从某个概率分布中取不同的值。请参见下图中的随机过程:

A random process (Image by Author)
一个随机过程既可以是离散也可以是连续取决于它的成员变量 X1、X2、X3…等 是离散变量还是连续变量。
我们现在准备看看泊松过程是一种什么样的生物。
泊松过程
泊松过程可用于对事件发生的次数进行建模,例如在某个时间段内,例如 24 小时内,患者到达急诊室的次数,假设人们知道这些事件在某个时间段内的平均发生次数。例如,平均每小时有 10 名患者走进急诊室。
泊松过程具有以下特性:
- 它由一系列随机变量 X1,X2,X3,…Xk 组成,每个变量代表某个事件在某个时间间隔内发生的次数,比如病人走进急诊室。
- 它是一个随机过程。每次你运行泊松过程,它会产生一个不同的随机结果序列,按照我们很快会看到的概率分布。
- 这是一个离散的过程。泊松过程的结果是某一事件在特定时间段内发生的次数,这无疑是一个整数——即一个离散的数字。
- 有独立的增量。这意味着,在任何给定的时间间隔内,流程预测将发生的事件数量与任何其他不相交的时间间隔内的数量无关。例如,从时间 0(观察开始)到上午 10 点走进急诊室的人数与从下午 3:33 到 8:26,或从晚上 11:00 到 11:05 等走进急诊室的人数无关。
- 泊松过程的组成变量 X1、X2、X3、……Xk都具有同分布。
- 泊松过程的组成变量 X1,X2,X3,…Xk 都有一个泊松分布,它由 P 概率 M ass F 函数给出:

Probability of k occurrences in unit time, given an average occurrence rate of λ per unit time (Image by Author)
上面的公式给出了单位时间内 k 事件发生的概率,假设平均发生率为单位时间内 λ 事件。**
以下 4 个图显示了 λ: 的不同值的 PMF 的形状

P(k*) for λ = 0.1, 1.0, 5 and 20 events per unit time (Image by Author)*
在每个图中,您可以看到概率在 λ,的相应值处达到峰值,并在该值的两侧逐渐变小。
在每个图中,的所有可能值的概率之和总是 1.0,即其中一个结果必然会实现。**

(Image by Author)
我们再仔细看看 λ = 5 时的情况。在我们的例子中,这相当于每小时有 5 名患者到达。0,1,2,3,…,10,11,…等的概率。一小时后走进急诊室的病人是这样的:

Probability of k arrivals in one hour given that an average of 5 patients walk into the ER per hour (Image by Author)
如你所见,概率在 k = 5 时达到峰值。
为了知道 k 患者在 t 小时内走进急诊室的可能性,我们将其建模为一个带速率( λ *t)的泊松过程。**PMF 对应的公式是这样的:*******

Probability of k arrivals in time t, given λ arrivals in unit time (Image by Author)
以下一组概率分布都是使用上述泊松分布公式通过将速率 λ 缩放不同的时间间隔t而生成的:****

Probability of k arrivals in time t, given λ = 5 per hour (Image by Author)
建模到达间隔时间
泊松过程有一个显著的子结构。即使使用离散泊松分布对事件的发生次数进行建模,连续事件之间的时间间隔也可以使用连续分布指数分布进行建模。
让我们进一步探讨这个问题。
让 X1、X2、X3……等等 。是随机变量,使得:
【X1】=流程开始与第一个事件之间的时间间隔,即第一个到达、
、X2 =第一个到达与第二个到达之间的间隔时间、
、 =第二个到达与第三个到达之间的间隔时间、
等等。
代表第(k-1)和第(k)次到达之间的间隔时间的随机变量 Xk 的分布为:

Inter-arrival times are exponentially distributed (Image by Author)
随机变量 Xk 的 P 概率 D 密度 F 函数(PDF)如下:

PDF of inter-arrival times in a Poisson process (Image by Author)
并且 C 累积 D 分配 F 功能(CDF)为:

CDF of interval-arrival times in a Poisson process (Image by Author)
回想一下 X 的 CDF 返回连续到达之间的时间间隔将小于或等于某个值 t 的概率。
模拟泊松过程中的到达间隔时间
我们现在有足够的信息来生成泊松过程中的到达间隔时间。我们通过使用逆 CDF 技术来实现这一点,在该技术中,我们从字面上构造 CDF 的反函数,并从一个(0,1)* 均匀分布向其提供不同的概率值。这为我们提供了相应概率的相应到达间隔时间。***
到达间隔时间的 CDF 的反函数是:

Inverse of the CDF of inter-arrival times (Image by Author)
如前所述,我们馈入这个函数,概率值来自连续均匀分布【0,1】。我们将很快看到如何使用几行 Python 代码以编程方式完成这个操作。**
目前,以下是前 10 名患者到达急诊室的间隔时间(小时)表。我们使用上述公式生成了这个日期,将 λ 设置为每小时 5 名患者。

λ = 5 arrivals per hour (Image by Author)
这是前 500 名到达者的间隔时间图。正如所料,它是 CDF 图的逆。

Inverse of CDF of interval arrival times (Image by Author)
模拟泊松过程中的到达时间
既然我们知道如何生成到达间隔时间,那么就很容易生成患者到达时间。
从上面显示的 10 个样本到达间隔时间的表中,我们可以推导出以下内容:
第一个病人的到达时间=x1=**0.431257556****
第二名患者的到达时间=
x1+第一名与第二名患者的到达间隔时间=
x1+x2= 0.431257556+0.264141966 =**0.6954****
第三名患者的到达时间=
x1+x2+x3= 0.431257556+0.264141966+0.190045932 =0.885445****
…等等
记住 X1,X2,X3,…Xk 是到达间隔时间,如果我们将 T1,T2,T3,…Tk 定义为变量,表示患者到达急诊室的时间,我们看到:
T1 = X1
T2 = X1+X2
T3 = X1+X2+X3
…
Tk = X1+X2+X3+…+Xk
注意,由于 T1,T2,T3…Tk 被定义为随机变量 X1,X2,X3,…Xk ,变量 T1,T2,T3,…Tk 也是随机变量。
这里还有一个非常有趣的事实:
由于 T1,T2,T3…Tk 都是各自服从指数分布的随机变量之和【X1,】Xk** , T1,T2,T3,…,Tk 服从伽玛分布 。**
泊松过程中的到达时间遵循伽马分布,这是一种连续分布。
让我们后退一步,注意我们是如何顺利地从离散分布过渡到一组连续分布的!这就是泊松过程的神奇结构。虽然过程本身是离散的,但它的子结构完全由连续的随机变量表示。
下图总结了构成泊松过程的三种主要分布:

The sub-structure of the Poisson process (Image by Author)
模拟泊松过程
我们现在准备模拟整个泊松过程。
为此,我们需要遵循这个简单的两步程序:
- 对于给定的平均发生率 λ ,使用逆 CDF 技术生成到达间隔时间。
- 通过构建间隔到达时间的累计和来生成实际到达时间。
以下是模拟泊松过程的 Python 代码:
Python code to simulate a Poisson process
这是这个程序的输出,给了我们一个完全模拟但 100%真实的泊松序列:

Poisson simulated arrivals (Image by Author)
如果将到达时间向上舍入到最接近的小时,并将图旋转 90 度,可以发现平均到达率为每小时 5。

(Image by Author)
以下是生成的完整源代码:
- 模拟泊松过程中连续事件之间的时间。
- 模拟泊松过程中连续事件的绝对时间。
- 模拟泊松过程中连续间隔内发生的事件数。
- 计算单位时间内的平均事件数。
Python code for Poisson process simulation
相关阅读
我们日常生活中有趣的随机线索
towardsdatascience.com](/this-stochastic-life-5146368bfd59) [## 泊松回归模型图解指南
和使用 Python 的泊松回归教程
towardsdatascience.com](/an-illustrated-guide-to-the-poisson-regression-model-50cccba15958) [## 泊松分布公式的直觉
这是二项式的极限。但是为什么呢?
towardsdatascience.com](/the-intuition-for-the-poisson-distribution-formula-34c5e52f4e04)
如果你喜欢这篇文章,请关注我的Sachin Date以获得关于回归、时间序列分析和预测主题的提示、操作方法和编程建议。**
YouTube 人工智能的政治

如果有人上传了一个极端暴力和血腥的视频——比如,有人因中毒而口吐白沫,或者一位父亲抱着他们垂死的婴儿 YouTube 的人工智能应该标记并从他们的网站上删除它吗?显而易见的答案是:是的。
也可能不是。
YouTube 审查的规模
每天每分钟大约有 300 个小时的视频被上传到 YouTube。网站上难以想象的内容规模意味着人类无法独自审查所有可能提交出版的暴力、露骨或其他令人反感的材料。
幸运的是,谷歌(YouTube 的母公司)已经开发出了使用先进的机器学习技术的算法,可以在造成任何损害之前扼杀有害内容。例如,仅在 2019 年第一季度,该网站就屏蔽了 800 多万个视频。在这 800 万人中,超过 600 万被 YouTube 的人工智能识别并删除,其中 70%是在一次观看被记录之前。当涉及到暴力极端主义内容时,这个数字甚至更好。甚至早在 2017 年,YouTube 的人工智能就能够捕捉到上传到该网站的 98%的恐怖视频。
考虑到今天的图像识别技术仍然是一个不断发展、尚未完全发展的领域,以及考虑到这些算法必须推动的材料的广度,这些数字构成了一个巨大的成功。但 YouTube 的人工智能删除不良内容的速度只能告诉你故事的一部分。对于所有离线拍摄的危险视频,也有大量的误报。
灵敏度
假设你是一个商场警察,每天有几千人走进你的商场。你会对进出的人进行多严密的检查?出于安全考虑,你会拦住多少人进行审查?可能不多,因为受保护的东西的性质。
但如果你是运输安全管理局的特工呢?
受保护内容的性质迫使你在筛选时更加小心。美国运输安全管理局的工作人员不断地对乘客进行筛查,哪怕是最轻微的怀疑,因为让威胁通过的风险太大了。
我们可以把购物中心警察和运输安全管理局特工之间的区别称为敏感度。
事实证明,对于面向安全的软件和面向安全的专业人员来说,敏感性是同等重要的考虑因素。例如,在网络安全领域,恶意软件通常被伪装成普通数据,以试图在不被发现的情况下进入易受攻击的计算机。因此,安全程序必须对任何看起来像病毒的东西敏感。或许,对于个人电脑来说,滤镜可以让多一点的通过。但是高度敏感的政府计算机网络呢?在这种情况下,程序必须调整到高度敏感——对任何警告都竖起耳朵,即使这意味着会产生许多误报。
Ulrich Kaiser 是一名来自德国的音乐理论教师。去年,在他的一个教育视频被 YouTube 的内容 ID 系统离线后,该系统记录版权作品,并检查它们是否在平台上的其他地方被复制和滥用。他想知道为什么完全合法的音乐会被网站禁止,所以他开始了一个实验。他开通了一个新的 YouTube 账户,并开始努力上传去世已久的作曲家创作的公共领域音乐。几乎不可避免的是,每一次,他的视频都被标记为侵犯版权,并被网站屏蔽。
为什么这些视频被删除的可能性如此之大?出于同样的原因,美国运输安全管理局的特工会对乘客进行过度筛查。公共知识的版权专家梅雷迪思·罗斯告诉 Vice 的主板:“算法匹配总是不精确的,公司在法律上被鼓励在过滤中过度包容。”因为算法并不完美,而国际法律又是多种多样和复杂的,YouTube 被鼓励过度审查他们网站上的内容,并接受在这个过程中会产生一定数量的误报。音乐教师可能有理由感到不满,但另一种选择——审查不足——会糟糕得多。
做正确事情的后果
每天必须处理的内容数量,加上发布危险材料的后果,意味着 YouTube 的监管者已经将他们的审查算法调高了,这是可以理解的。
不幸的是,不仅仅是古老的古典音乐被人工智能拿下。今年 2 月,与 Pokemon Go 和 Club Penguin 相关的多个频道因显示禁止的性内容而被标记为。原来,YouTube 的 AI 捡起了他们使用的缩写“CP”,它解释为引用儿童色情(在 Pokemon Go 中,CP 指的是“战斗力”,在 Club Penguin 中,CP 只是指游戏的标题)。就在几周前,同一个人工智能开始标记战斗机器人(一种小众运动)的视频,将这些视频解释为虐待动物的演示。
每当这些误报出现时,它们都会引起一点骚动,它们被处理,谷歌的人工智能因此变得更好。机器人战斗中的短暂中断是为了让暴力和极端的材料远离平台而付出的小小代价。
但事情并不总是这么简单。有时,暴力和极端与合法和重要重叠。我在这篇文章的开头问你:YouTube 的人工智能应该禁止人们——婴儿,甚至——中毒和死亡的视频吗?显然,答案似乎是是的。
叙利亚内战期间,当记者和人权活动人士试图记录巴沙尔·阿萨德政府对其人民实施的暴行时,他们向 YouTube 寻求帮助。他们开始拍摄正在发生的暴行,向世界展示事情有多糟糕。视频显示了可怕的暴力:有人中毒,有人死亡,甚至儿童和婴儿死亡。然后,超过 10 万个视频被 YouTube 审查算法删除。
YouTube 是一个巨大的平台,有巨大的力量影响世界的积极变化,也有巨大的责任保护普通人免受伤害。支撑这一切的人工智能是非凡的——几乎令人难以置信地有效——也是不完美的,有着滑稽和有害的失态倾向。好的一面是:一年比一年好。
入侵检测系统的潜力——生成式对抗网络

众所周知,入侵检测系统(IDS)对于敌对攻击是脆弱的,并且正在进行研究来证明攻破这些系统的容易程度。许多人已经开始认识到机器学习中的缺陷,因此,一个称为入侵检测系统生成对抗网络(IDSGAN)的框架被提出来创建对抗攻击,它可以欺骗和逃避任何 IDS。
为了更好地了解 IDSGANs 以及入侵 IDS 系统的可行性,让我们来看看生成式对抗网络(GAN ),这是一种用于欺骗机器学习算法的通用框架。GAN 是一个对抗 AI 的系统。这是一个深度神经网络架构,由两个神经网络组成,一个对抗另一个(因此是“敌对”),其中一个生成器和一个鉴别器试图智胜另一个。生成器会修改最初输入的恶意版本,并将其发送给 IDS 和鉴别器进行分类。生成器的目标是欺骗 IDS,鉴别器的目标是模拟 IDS 对输入进行分类(正确或错误),并向生成器提供反馈。当 IDS 和鉴别器不能准确地对生成器创建的输入进行分类时,游戏结束。

来源:【tvtropes.org/pmwiki/pmwiki.php/Main/TotemPoleTrench】
IDSGAN 框架如何工作的概念可以通过一个例子来解释。作为参考,假设恶意输入是怪物,正常输入是试图进入村庄(系统/网络)的人,IDS 是保护村庄的看门人。守门人非常擅长区分怪物和正常人,在击退怪物的同时让人类进入村庄。怪物们想出了一个伪装自己的计划来愚弄守门人并进入村庄。一个怪物被任命为假看门人,并被赋予站在看门人附近的任务,以学习如何像看门人一样识别人类和怪物(鉴别者)。另一个成为服装制造商,并学习如何利用假看门人(生成器)的反馈来创建类似人的伪装,以将这些怪物带入村庄。服装制作人制作一套服装,把怪物和其他真实人类一起送到真假守门人那里,真假守门人会把怪物归类为人或怪物。假看门人会将他的决定与真看门人的决定进行比较,并了解哪些特征/特性使怪物看起来像怪物,并将他的反馈发送给服装制作人,以制作更好的伪装。当假守门人再也分不清怪物和人的时候,服装制作者成功地创造了一种可以愚弄真守门人的伪装。
这就是 IDSGAN 框架的工作方式;生成器生成恶意流量,并将其与正常流量混合,然后将流量发送给 IDS 和鉴别器。甄别器和发电机组并联。鉴别器尝试识别它遇到的每一条流量,将其决策与 IDS(丢失与丢失)进行比较,并相应地调整其权重。与此同时,生成器根据鉴别器做出的决定来学习它是如何执行的。最终,生成器学会了如何伪装恶意输入,并创建了一个近乎完美的模型,完全骗过了鉴别器。
GAN 仍然是一个新概念,仍在开发中。也就是说,这在不同的领域有许多应用,主要是图像识别。IDSGAN 是这方面的一个新发展,虽然这仍然是一个非常新的框架,但有很大的潜力。IDSGAN 已经被证明可以欺骗一个简单的 IDS,只要有足够的时间,它可以欺骗最强大的安全系统。希望这一发展将被用来改进今天的 IDS,使之能够抵御最强大的攻击。因为你不想你的信息对任何人公开,对吗?
公开数据抑制腐败的潜力
以下文章写于 2018 年墨西哥大选之前,证明了公开数据可能是打击腐败的关键因素。

2018 年 7 月 1 日,墨西哥选民将选出新总统,任期 6 年。在整个选举季节,热点问题都围绕着腐败,如何遏制腐败,以及哪个政党的不可告人的秘密最少。随着选举日的临近,民粹主义领先者安德烈斯·曼努埃尔·洛佩斯·奥夫拉多尔(Andrés Manuel López Obrador)似乎有望赢得竞选。
无论谁获胜,墨西哥的选举民主都面临一个大问题:钱。

腐败在政治辩论中的中心地位部分解释了为什么安德烈斯·曼努埃尔·洛佩斯·奥夫拉多尔,或者他所知道的 AMLO,会领先群雄。多年来,AMLO 塑造了一个对物质财富漠不关心、不易腐败的人的形象。尽管如此,他和其他候选人都没有深入讨论墨西哥当前的反腐议程——公开数据在这一议程中发挥着重要作用。
最令人惊讶的沉默候选人是现任革命制度党的何塞·安东尼奥·米德,他将从展示他的政党的进步透明度倡议中受益。近年来,在国家开放数据政策方面,墨西哥已经成为经济合作与发展组织(OECD)中最先进的国家之一,目前在 OECD 的 35 个成员国中排名第 5。
这个成绩不是偶然的。这是联邦政府通过让公众更容易获取公共数据来提高墨西哥透明度和问责制的结果。但随着这些举措的启动,围绕开放数据作为遏制腐败手段的乐观情绪是否有根据?简单来说,策略有回报吗?
为了找到答案,我们首先必须就如何衡量成功达成一致。在跨国研究中,透明国际每年发布的清廉指数(CPI) 是了解哪些国家反腐取得进展的基准。

CPI 通过“公共部门腐败的感知程度”来衡量 180 个国家。然而,通过衡量对腐败的看法,CPI 衡量的不是事件而是意见,因此是一个有问题的尺度。例如,2018 年关于拉丁美洲的调查报告称,尽管承认该地区作为一个整体在反腐败斗争中取得了“巨大进步”,但对该地区的看法仍未改变。
很明显,需要一个新的衡量标准来超越过去的观念,成为现实。这就是开放数据的关键所在。利用政府公布的数据集,过去几年提出了一些衡量腐败的替代指标。其中一个指标是 T2 腐败风险指数(CRI)。它由 Fazekas 和 Kocsis 开发,由 2009 年至 2014 年期间 27 个欧盟成员国(加上挪威)超过 280 万份政府合同的公开官方电子记录组成。CRI 通过一个“危险信号”的综合指数来衡量公共采购中的腐败风险(例如,竞争性市场中的单一招标,反复使用“直接”或“紧急”奖励),这些信号表明潜在的腐败行为。虽然这些行为本身都不一定是腐败行为,但它们提供的数据点表明腐败环境的可能性更高。
墨西哥竞争研究所(IMCO)在今年早些时候发布的一项关于墨西哥公共招标系统的研究中采用了 CRI 的一个版本。利用联邦政府 2012 年至 2017 年间 70 万份记录的数据库(相当于那些年总支出的 10%),IMCO 得出了两个重要发现:
该期间 80%的合同授予了 1.9%的投标人(129,411 人中的 2,512 人);和
授予前 1000 名投标人的合同中有 71%是通过直接裁决授予的。
同样,这些发现并不是腐败的证据,但它们确实暴露了墨西哥的招标系统缺乏竞争。人们可以由此合理地得出结论,政府没有充分利用技术来降低采购成本,并且在当前的系统中腐败的风险很高。
“腐败的影响……肯定会影响投资成本”——墨西哥美国商会税务事务负责人 Luis Gerardo del Valle
IMCO 的发现还表明,开放数据本身并不是腐败的解决方案。事实是,在大多数情况下,腐败难以确定,直接衡量腐败远非一门精确的科学。除此之外,公职人员正在不断适应他们的环境,在当前的政治气候下,这意味着包括使用数据分析来衡量他们的表现。腐败的发展速度通常与防范措施的发展速度相同。事实上,腐败的本质是,大多数试图有效衡量腐败的人最终都像刘易斯·卡罗尔的《红皇后》一样:不停地奔跑,只是为了呆在同一个地方。

然而,通过开放数据门户提供公共信息基线是朝着正确方向迈出的关键一步。阳光是最好的消毒剂,对公共记录的整体分析可以大大削弱各级政府的腐败行为。为了跟上、跟踪和预测腐败,分析必须敏捷、灵活、具有适应性和实验性,但将相关数据转化为有价值的输入是打击腐败和确保信任的第一步。
ThinkData Works 正在连接成千上万的公共数据源,并与公司和政府合作,将数据转化为可操作的见解,帮助监管合规性,改善信息收集,并打开新信息的大门。如果您想了解我们如何帮助追踪腐败,请 联系我们 。
【https://blog.thinkdataworks.com】最初发表于。
A/B 测试的力量
对样本大小、效应大小和显著性水平如何影响 A/B 测试功效的直观总结

A/B 测试涉及多个概念,可能很难处理,尤其是在工作面试这样的高压环境下。所以我决定写这篇文章来澄清一些事情。这篇文章以一个简短的关于功率的技术回顾、两个示例问题和大量的可视化来说明它与其他变量的相互作用开始。
这不是一篇关于统计测试的介绍性文章,我对此没有什么贡献。但是,如果你是一个对基本概念生疏的分析师或数据科学家,或者是想要在这个主题上获得一些技术知识的产品经理,这是一个很好的回顾(我写这篇文章的部分原因是为了制作一个可视化的备忘单,以便我稍后可以快速参考)。在这篇文章结束时,你应该理解以下概念:
- alpha:假阳性率;或者显著性水平;或者 I 型错误。
- β:假阴性率;或者第二类错误。
- 力量:真阳性率;1-β。
- 1 - alpha:真实负利率。
概念回顾
当人们谈论 alpha 和 beta 时,他们谈论的好像这两个概念是可以放在同一张桌子上的苹果和桔子。事实上,它们不能共存于同一个现实中。 Alpha 控制误报率,在这种情况下,我们拒绝不应该拒绝的 null。 Beta 控制假阴性率,在这种情况下,我们在应该拒绝 null 的时候失败了。
为什么这很重要?因为幂被定义为 1 - beta,所以只有当 null 为假时,谈论幂才有意义。如果你已经晕了,这里有两张图片可以帮助记忆。两张图都说明了双尾检验。
当零假设为真时
经验抽样分布与零假设下的抽样分布相同。如果我们不拒绝零,我们就是对的,零以概率 1 - alpha 发生(青色阴影)。红色阴影的两条尾巴的总面积等于α,这是我们错误拒绝 null 的概率。

当零假设为假时
经验抽样分布不同于零假设下的抽样分布。如果我们拒绝零,我们是正确的,这发生在概率 1-β(青色阴影)。我们未能以概率β拒绝 null,这是假阴性率(类型 II 错误)。
与前一种情况的微妙区别是,如果我们降落在较小的尾部(本例中为右尾部)并拒绝零,我们不应该感到幸运。这要么意味着我们有一个不可重复的非常不寻常的事件,要么我们假设的方向完全错误。

幸运的是,在现实中,我们不知道零假设是否正确。这种混乱让我们可以一起使用 alpha 和 beta 来量化不确定性(很快我们就会看到 alpha 是如何影响功率的)。但是当谈到α时,永远记住我们是以 null 为真的可能性为条件的;对β来说反之亦然。
计算功率(可选)
本节介绍了两个计算功率的例子,由于有现成的统计软件,这在实践中很少需要。请随意跳到下一部分(也是最后一部分)。
本页涵盖了手动计算程序,两个例题也是如此。这里我简单地用 Python 重复这个过程。图片应该有助于引导直觉。
例 1:均值的假设检验的功效
这是对总体均值的单尾 t 检验,但样本量足够大,可以将其视为 z 检验。你应该核实一下这些数字是否正确。

例 2:比例假设检验的功效
这是一个关于比例的双尾 t 检验,也作为 z 检验求解。请注意,这里我没有将概率截断为 100%。

视觉化力量
效果大小
效果大小类似于鱼的大小。大鱼更容易捕捉。动画显示,随着效应大小的增加,经验采样分布远离零值下的分布。
警告:不要以因果的方式解读这两者。采样分布不会根据您如何改变效果大小而移动。实际上,我们只能在实验结束后观察到效应的大小,或者在实验开始前猜测效应的大小。在这两种情况下,我们都无法控制效果的大小。
相反,应该这样理解动画:当真实采样分布的中心与假设的中心相距很远时,很容易观察到两者之间的统计显著性。

希腊字母的第一个字母
较小的α意味着我们不能犯 I 型错误。相反,随着 alpha 的增加(如动画所示),我们对 I 类错误的容忍度越来越高,因此如果 null 为真,我们会更频繁地拒绝。
但是当 null 为假时,大的 alpha 仍然允许我们更频繁地拒绝,因此我们获得了更高的能力。

样本量
这是由中心极限定理保证的:标准误差随着样本量的增加而缩小。从视觉上看,抽样分布变得越来越窄(记住标准误差就是抽样分布的标准差)。

摘要
这篇文章应该澄清一些关于权力的常见逻辑谬误。我希望你喜欢这种视觉效果。动画代码在我的 Kaggle 笔记本里。
延伸阅读
下面的博客涵盖了与 AB 测试相关的主题,以及对本文中提到的关键概念的更深入的回顾。
脑机接口的力量:用你的大脑玩你的视频游戏
这里我们展示了机器学习和信号处理在神经科学中的一个应用;用我们基于游戏的脑机接口将想法转化为行动(BCI)。
Video-Game based BCI. The gaming part increases user engagement and makes it easier to acquire the new skill of controlling the BCI device.
BCI 能够通过外部设备(如机器人)直接控制大脑活动。基于运动想象(MI)的 BCI 检测与想象的肢体运动(例如用右手或左手抓握)相关的大脑活动的变化。基于 MI 的脑机接口需要训练,在此期间,用户逐渐学会如何在反馈的帮助下控制大脑活动的相关模式。此外,通常使用机器学习技术来提高 BCI 性能,并使解码算法适应用户的大脑。因此,大脑和 BCI 需要“合作”,以不断提高性能。
BCI 不是科幻小说,而是大脑和特定端点之间的完整机器学习管道。它可以用于通信、康复、控制、诊断和游戏。
深度学习中集合的力量
介绍 DeepStack,一个用于构建深度学习集成的 python 包

Photo by Manuel Will on Unsplash
集成构建是机器学习竞赛的主要获胜策略,并且通常是用于解决现实世界问题的技术。经常发生的情况是,在解决一个问题或参加一场比赛时,你最终会有几个经过训练的模型,每个模型都有一些不同之处——并且你最终会根据你的最佳评估分数挑选出你的最佳模型。事实是,你的最佳模型对数据的“了解”比所有其他“弱模型”的总和还要少。将几个基本模型组合在一起创建一个更强大的集合模型,然后作为这个工作流程的自然副产品上升为。
“没有一个非常强大的团队,你真的不可能赢得大多数 Kaggle 比赛。你最好的个人模特再好,也配不上好的合奏。” 朱利亚诺·詹森在 quora (2016)
集合的范围从简单的加权平均值到复杂的二级和三级元模型。回到为我的机器学习竞赛构建我的集合模型,我最终创建了几个代码块,帮助我测试不同的集合策略,并在这样的挑战中赢得或表现得更好。因此,我只是提出了一个自然的问题:如果我能让构建深度学习集成变得像编写几行 python 代码一样简单,并与社区分享这一点会怎么样?这些单独的项目孕育成脚本,并成熟为一个我命名为 DeepStack 的 python 包。
合奏简介
集成学习就是学习如何最好地组合来自多个现有模型的预测(称为基础学习器)。集合中的每个成员都对最终的输出做出贡献,而其他成员的贡献抵消了个体的弱点。组合的学习模型被命名为元学习器。集成学习有几种风格。在本文中,我们将特别关注目前由 DeepStack 支持的两种方法。即:
#1 堆叠:在堆叠中,基础学习者的输出被用作训练元学习者的输入,元学习者学习如何最好地组合基础学习者的预测。

Stacking combines multiple predictive models in order to generate a new combined model.
由于叠加模型的平滑特性,叠加模型通常会优于每个单独的模型,抵消了单独模型的不足,从而获得更好的预测性能。因此,当基本型号基本不同时,堆叠效果最佳。
#2 加权平均集成:该方法基于每个集成成员在拒绝验证数据集上的表现,对其贡献进行加权。贡献较大的模型获得较高的权重。

Weighted Average Ensemble is all about weighting the predictions of each base-model generating a combined prediction.
这两种方法的主要区别在于,在堆叠中,元学习者将基础学习者的每一个输出作为训练实例,学习如何最好地将基础学习者的决策映射到改进的输出中。元学习者可以是任何经典的已知机器学习模型。另一方面,加权平均集成只是优化用于对基础学习者的所有输出进行加权的权重,并取加权平均值。这里没有元学习者(除了权重)。这里,权重的数量等于现有基础学习者的数量。
不用说,当构建一个集合时,你需要一个还没有被基础学习者看到的训练数据集,以避免过度拟合。你还需要一个支持(验证)数据集来指导/测试你的系综的表现。
集成学习有几种技术,我肯定会推荐约瑟夫·罗卡的这篇文章来深入了解诸如增强和打包之类的概念。《Kaggle 卡格尔组装指南》也是一本好书。
使用 CIFAR-10 数据集的 DeepStack 演练
准备好用真实的例子编码了吗?在接下来的几分钟里,我将向您展示如何使用 CIFAR-10 数据集通过 DeepStack 轻松构建集成。 CIFAR-10 数据集由 10 类 60000 幅 32x32 彩色图像组成,每类 6000 幅图像。我们将开始创建简单的 CNN 来对图像进行分类,并使用前面描述的 2 种集成策略来创建单个 CNN 的集成。让我们开始吧。
pip install deepstack==0.0.9
现在,我们可以利用 DeepStack 接口并创建类 deepstack.base.Member 的实例,这些实例为构建集成的基本学习者提供了所有必要的逻辑。在这个演示中,我们将开始使用类 KerasMember ,它从成员继承而来,但是具有 Keras 模型的附加逻辑。基本原理是用元学习者的训练和验证数据集启动实例——我们已经为此构建了一个实用函数!
现在你可能会问自己,为什么我们用相同的训练和验证数据集初始化所有 4 个对象?嗯,你不需要。你的 keras 模型可以用不同的图像数据生成器进行训练,你可以直接将数据生成器作为参数传递给 KerasMember 。这里重要的是类标签( y_train / y_val )在成员之间是相等的,这样我们可以在后面的步骤中验证和比较基础学习者。
现在我们已经有了所有必要的构件,让我们创建我们的第一个合奏。
瞧,您应该会看到类似的输出,如下所示:
model1 - Weight: 0.2495 - roc_auc_score: 0.9269
model2 - Weight: 0.4498 - roc_auc_score: 0.9422
model3 - Weight: 0.0031 - roc_auc_score: 0.9090
model4 - Weight: 0.2976 - roc_auc_score: 0.9135
DirichletEnsemble roc_auc_score: 0.9523
对于作为默认评分函数的 AUC,加权平均集成比最佳单一模型 w.r.t .表现好约 1%。如您所见,得分较高的模型也获得了较高的权重。引擎盖下发生了什么? fit() 方法基于目标得分函数在训练数据集上的表现来优化基础学习者的权重。权重优化搜索通过基于验证数据集上的狄利克雷分布的贪婪随机搜索来执行。默认情况下,score 函数是sk learn . metrics . roc _ AUC _ score,但是您可以将任何 score 函数传递给构造函数。 describe() 方法只是在验证数据集上打印单个模型和集合的性能。
堆叠怎么样?
model1 - accuracy_score: 0.6116
model2 - accuracy_score: 0.6571
model3 - accuracy_score: 0.5500
model4 - accuracy_score: 0.6062
StackEnsemble accuracy_score: 0.6989
这个例子将来自 scikit-learn 的 RandomForestRegressor 作为元学习者。回归任务是基于基础学习者的类概率输出来优化(预测)10 个类的输出概率。但是分类器概率在这里也完全适用。DeepStack 注重灵活性,一切由您决定。这一次,我们将重点放在准确度分数上,与单独的最佳模型相比,通过叠加,我们可以获得 4%的准确度。
使用 scikit-learn 堆叠分类器进行三级堆叠
在叠加概化中,叠加级别的数量没有限制。然而,更高的级别数量不一定保证更好的结果。如前所述,只有通过实验和基础学习者之间的高度差异才能找到最佳架构。

Example of a 3-levels Stacking
Scikit-learn 0.22 引入了一个[**StackingClassifier**](https://scikit-learn.org/dev/modules/generated/sklearn.ensemble.StackingClassifier.html#sklearn.ensemble.StackingClassifier)和[**StackingRegressor**](https://scikit-learn.org/dev/modules/generated/sklearn.ensemble.StackingRegressor.html#sklearn.ensemble.StackingRegressor),允许您拥有一堆 scikit-learn 估计器,以及一个最终分类器或回归器。不错!我们现在可以利用 scikit-learn 堆栈接口,用 DeepStack 构建第三级元学习者:
但是如果 scikit-learn 已经支持堆栈了,为什么我还需要 DeepStack 呢?DeepStack 的开发是为了在你已经有一大群预先训练好的模型,并希望将它们捆绑在一起,创建一个更强大的模型的情况下使用。也就是说,你不用 DeepStack 来创建或训练你的基础学习者。DeepStack 也是通用的,不依赖于用于创建基础学习者的库( keras、pytorch、tensorflow ,等等)。
sci kit-learn堆栈 API 支持使用 scikit-learn 模型从头开始创建(培训)基础学习者——这不是我们这里的用例。
这仅仅是表面现象。用于将 DeepStack 与您的任何 pyTorch、tensorflow 等的输出一起使用。为他们建模和培养元学习者检查类deep stack . base . member。您还可以为系综指定任何自定义目标评分函数。DeepStack 还允许你保存和加载你的合奏,以便以后优化。
对于上面给出的例子,我们采用了一个相对简单的 CNN 模型,在几(25)个时期进行训练。事实上,更复杂和训练有素的模型已经报告在 CIFAR-10 上达到 93.17%的准确性,其加权平均系综报告达到 94.12%。这 1%的错误率降低使结果超出了人类分类的准确度。
对尝试 DeepStack 感到兴奋吗?那么祝组装愉快!
递归神经网络的力量
…以及它们如何让我们在给定正确数据的情况下学习几乎任何动态系统
有了四个参数,我就能适应一头大象,有了五个参数,我就能让它扭动鼻子。
近年来,神经网络已经主导了现代人工智能研究,这是有充分理由的:它们提供了从数据中提取复杂模式的强大工具,无论是分类还是生成图像,辅助医疗诊断还是处理自然语言。
作为一个简短的提醒:神经网络是由一组称为神经元的定向单元组成的。这些神经元可以相互连接并传递输入,这取决于它们各自连接的强度。给定单元的输入之和通过激活函数运行,以给出其输出。
生物直觉在这里可以派上用场(尽管它们有其局限性):你可以将神经网络想象为一组通过突触连接的神经元,它们要么激活,要么不激活,取决于它们接收到多少输入。它们各自连接的强度决定了来自一个神经元的输入在多大程度上激发或抑制了它所连接的神经元的活动,而激活函数决定了在给定输入的情况下它如何以及何时触发。
虽然神经网络已经证明确实擅长做一系列事情,但许多人(包括本文中的我)认为,至少在某种程度上,纯神经网络在解释我们的大脑和为更复杂的、类似人类的人工智能提供架构基础的能力方面被高估了。有很多事情他们不能做,而且短期内也不会做。
但同时,神经网络是强大的近似器。更详细地研究神经网络在更正式的意义上能做什么,会让我们在数学和理论计算机科学的重叠部分得到一些有趣的结果,同时也有一些神经科学的含义。
通用逼近定理
从两体问题转到三体,物理系学生在第二学期通常会惊恐地发现,几乎没有任何现实世界的问题可以用解析方法解决。
但幸运的是,我们有办法找到困难问题的完美解决方案:近似和分解成更小、更简单的比特和函数是数学家和物理学家食谱中最巧妙的技巧。三角函数和指数函数可以分解成多项式,函数可以围绕一个点进行泰勒展开,概率分布可以用高斯近似,像牛顿-拉夫森方法这样的数值方法允许我们迭代地寻找函数的根,等等。
正如冯·诺依曼在他厚颜无耻的评论中指出的,只要给定足够多的参数,以及足够有表现力的参数,你几乎可以将任何东西与任何东西相匹配。
因此同样可以证明,实空间的连续子集上的所有函数都可以通过组合一组简单函数来近似。逼近任何其他函数所需的函数的这种简单组合可以由配备有正确激活函数的单层神经网络来表达。
这个以 命名的定理被称为通用逼近定理 ,被西本科证明对 sigmoid 激活函数成立,但是也可以扩展到其他,例如双曲正切。
然而,当马文·明斯基和西蒙·派珀特在 1969 年出版了他们关于感知机的书时,引起了不小的轰动,他们在书中表明,有许多直观上非常简单的函数是神经网络无法逼近的,例如奇偶校验(这涉及到它们不存在于真实空间的连通子集上的问题),但事实证明,使用多层深度神经网络也可以逼近这些类型的函数。
因此,在一些温和的约束下,我们可以表达几乎任何我们想要的函数(假设有足够大的神经网络,有足够多的层和足够多的参数可以调整),并使用该函数将输入映射到输出,这本质上就是函数所做的。
这已经很不错了。我们可以装大象。但是我们能让他扭动他的鼻子吗?
动力系统近似和递归神经网络
递归神经网络(RNNs) ( 此处阅读进行概述)是人工神经网络的一个子类型,其中包括一个时间序列,允许网络展示动态行为(系统如何随着时间的推移而表现)。

In a recurrent neural network, units of a given layer are interconnected among each other. Credit to Zawersh at the English Wikipedia [CC BY-SA 3.0]
1993 年,船明石和中村证明了通用逼近定理同样适用于动力系统。
为了理解它是如何做到的,我们需要理解一个动力系统的特征是它的流场加上一些初始条件。这个流场决定了其状态变量的导数,从而决定了其时间行为。这个流场可以写成一个函数(其中 x 后面的撇号表示导数……很抱歉,Medium 并不真正适合数学方程):
x'(t)=F(x(t))
我们通常可以在时间上对这些动力系统进行离散化,在某种意义上,我们通过时间 t 上的值的函数来定义某个时间xt+1,并通过新的函数 G(x(t)) 来重新表达流场,该函数负责这种映射:
x(t+1)=G(x(t))
我们如何从 F(x) 移动到 G(x) 的数学细节可能有点复杂,但底线是系统在时间 t+1 的状态取决于时间 t 的状态,通过函数 G 发送。变量 x(t) 可以被认为是在时间 t 时递归神经网络的输出层中的一个单元的值,你可以读出它,就像在每个前馈神经网络中一样。
然后,通过一次又一次地迭代应用这种映射,系统随时间的动态变得清晰:
x(t+2)=G(x(t+1))
如果你知道系统在时间 t=0 的初始状态,你将知道它在未来 t=T 的每一点的状态,因此,你将完全表征系统。
看,大象正在扭动他的鼻子。

学习动力系统
正如 Funahashi 和 Nakamura 所述,动态时变系统在所有科学领域都有相当广泛的应用。生活不是一成不变的,几乎所有值得研究的东西都在不停地移动和摆动。道琼斯指数是动力系统的可观测值。因此,地壳变动有可能导致地震。

A time-series characterizes the dynamics of a system. Photo by Chris Liverani on Unsplash
这样的例子数不胜数,但是假设我们在野外发现了一个令我们感兴趣的动力系统。
假设我们只有一些不同时间的观测值**x _ I**t _ I**,但我们仍然缺乏对系统底层动力学的了解,这些动力学分别由函数 F(x) 或 G(x) 编码。
请注意,这是几乎所有科学实验的现状。
现在,我们可以从纯数据科学的角度提出以下问题:我们如何学会通过拟合模型来解释数据 x_i ,而不必通过分析找出正在发生的事情?
答案来自我们到目前为止所讨论的一切:我们通过计算我们网络的循环连接如何逼近函数 G(x) 来实现这一点,该函数相当于动力系统的流场。
这使我们能够在网络的参数内编码其整个动态特性,这可以通过通常的机器学习优化算法来学习,如从数据中梯度下降。
了解大脑的动态
最著名也最令人困惑的动力系统之一是大脑。神经元的相互作用形成了一个动力系统,其中与循环神经网络的直观联系似乎非常清楚。
但是大脑中有许多动态子系统。例如,每一个神经元本身又是一个复杂的动力系统。 Hodgin-Huxley 模型描述了神经元的放电如何取决于突触内离子流的时间依赖性所导致的变化的突触电导。
但是正如我们可以用 RNN 来学习任何动力系统一样,这意味着我们也可以用 RNN 来学习模拟单个神经元的动力。
研究表明,许多精神疾病都与网络动力学的变化有关(阅读这里可以获得一个很好的概述),大脑的许多有用的计算能力,如联想记忆,可能会从吸引子状态等动态系统属性中出现(Hopfield network 就是这种情况的早期实现)。
例如,假设我们有大脑数据,无论是健康患者还是精神分裂症患者的 FMRI、脑电图或单个神经元棘波序列。然后,我们可以尝试用学习数据背后的动力系统,这是一个带有 机器学习算法 的递归神经网络,就像 变分自动编码器 。
一旦我们从数据中学习了最佳模型并在 RNN 中对其进行了编码,我们就获得了数据的生成模型(我在本文中解释了什么是生成模型以及为什么它们如此酷)。然后,我们可以分析这个模型,以提高我们对可能导致与精神分裂症等病理相关的网络动态变化的理解。
根据模型的复杂程度,我们还可以尝试使其具有生物学可解释性(可解释性的问题在这种情况下仍然存在,就像在许多其他机器学习应用中一样),以便从学习到的模型中提取生物学因果机制,并模拟新医疗干预的效果。
然而,大脑是非常混乱和复杂的,这些方法在实践中还很难实施。
但另一方面,大脑的复杂性表明很难对其进行分析性描述,因此我们需要基于统计学和数据科学的方法来学习良好的近似模型。
递归神经网络的近似能力可以提供一个非常有价值的工具来做到这一点。
机器人新闻时代的主体性力量

随着人工智能和自动化的兴起,如何作为一名记者保持相关性?
如果你出生在 1990 年之前,很有可能你会记得那个在录像带出租店和你互动的家伙。让我们叫他鲍勃。你遇到鲍勃,他把你之前的电影拿回来,给你推荐一部新的,最后还拿了你的钱。bob 们有趣的是,他们是如何由于技术发展和人工智能而失去工作的。
首先,只有一个鲍勃的任务变得过时了,因为在 DVD 时代倒录像带变得没有必要了。但是,在那个时候,没有人质疑 bob 创造价值的能力。然而,随着宽带互联网席卷发达国家,随着种子网站和视频点播服务的出现,是时候让 bob 们找点别的事情做了。
支付和租赁过程是自动化的,而鲍勃向客户推荐新电影的具体任务随着时间的推移由一种基于人工智能的算法接管。后者的一个很好的例子是据《连线》杂志报道,网飞上 80%的浏览内容是在基于人工智能的推荐系统的帮助下发现的。
AI 和自动化并不是互相排斥的概念。自动化可以基于传统编程和人工智能。在第一种情况下,软件遵循一套以前创建的规则,而在人工智能的情况下,我们希望机器模仿人类思维,自主学习,并为给定的问题提出新的解决方案。
新闻编辑室已经应用了智能和非智能自动化。为了预测人工智能技术和机器人记者将如何影响在线新闻媒体,我们将首先更广泛地看看这些技术对我们的社会和劳动力市场可能产生的影响。接下来,我们将考察新闻机构最近部署的技术,并调查与人工智能相关的商业模式机会。
人工智能与社会
让我们试着回答以下问题:
当机器人可以比人类更好、更便宜地完成所有与工作相关的任务时,人将扮演什么角色?
尼科西亚大学未来研究所所长斯皮罗斯·马克里达基斯认为,有四种截然不同的观点可以回答这个问题。
基于他的 2017 分析,第一组包括那些对 AI 融入我们的社会持乐观态度的人。他们假设,在遗传学、纳米技术和机器人技术的帮助下,一个看似乌托邦的社会将会发展起来。寿命将会延长,甚至变得无穷无尽。廉价的材料和先进的技术将使我们能够生产无限量的商品,这将导致无限的财富。
此外,可能对许多人来说最有吸引力的部分是:人类将能够选择他们是否喜欢工作,因为机器人将进行实际工作。
如果你认为这个预测听起来好得难以置信,你并不孤单。不用说,还有一大群思想家和学者认为,乐观主义者在预测一个富裕社会的出现时,低估或忽视了与人工智能有关的某些危险。太阳微系统公司的创始人比尔·乔伊就属于这一类人。在他 2000 年发表在《连线》杂志上被广泛引用的文章中,他描述道“21 世纪最强大的技术——机器人技术、基因工程和纳米技术——正威胁着将人类变成濒危物种。”
毕竟,如果机器人能够比人类做得更好,他们为什么还需要我们呢?人类可能会变成电脑宠物,因为他们既没有动力工作,也没有动力做决定,因为人工智能将负责这两者。“这可能不是一个糟糕的世界,但它肯定会是一个不同的世界,”悲观主义者说。
更进一步,悲观主义者提出了其他几个观察结果。例如,由于机器人不倾向于相信不切实际的承诺,人类能应付机器人选举政治家吗?
或者,人类可以接受一个仅仅因为他们的事故率超过人工智能就不允许他们驾驶汽车的地球吗?悲观主义者认为,我们必须回答大量类似的问题。
然而,在出售你的汽车之前,请记住,也有思想家出于多种原因怀疑这些巨大的变化是否会实现,也有人预测更微妙的现实。
实用主义思想家主要声称,人工智能不会取代或击败人类的智力,而是增强它。他们得出结论,如果建立适当的监管和足够的控制,人类可以在可预见的未来继续拥有人工智能的权力。此外,他们声称,如果事情不完全按照计划进行,人类仍然可以在机器人身上安装芯片,使它们在危险情况下不起作用。
斯坦福大学讲师杰里·卡普兰是《人工智能:每个人都需要知道的事情》一书的作者,他也在他的 2017 年文章中缓和了围绕人工智能的夸张气氛。
“人工智能只是自动化任务的长期努力的自然延续,至少可以追溯到工业革命的开始,”他写道。
通常应用的感知他们和我们,在公众眼中人类和人工智能之间的区别,来自一个拟人化的概念,这主要是好莱坞大片和机器人的类人属性的不必要展示的结果,如自然发声的声音,面部表情和人类情感的模拟显示。
自然,当促进人机交互时,这些技术确实有价值。然而,通过暗示有比我们看到的更多的东西,他们制造了不信任,这可能会延迟或破坏技术的实际应用,甚至对立法产生反作用。
卡普兰还解释了关于人工智能对劳动力市场的影响的温和观点。他举了美国劳动力的例子,200 年前,90%的劳动力从事农业,而现在,这个数字只有 2%。“然而,并不是每个人都失业了,”这是一个很难反驳的说法。
与此同时,卡普兰承认,技术驱动的劳动力市场转型需要时间,并可能导致重大的社会破坏。重复性的任务、明确的程序和清晰的目标可能会增加失业的风险。与此同时,如果某人的任务包括在快速变化的环境中解决挑战,或者如果它涉及人类情绪的表达,那么他失业的风险就更低。
为主要新闻机构工作的机器人
如果我们看看新闻媒体领域的最新发展,卡普兰似乎正朝着正确的方向前进。根据 tech emergency 在 2018 年 1 月发表的一篇文章,当前的人工智能发展似乎并没有以取代作家或记者为目标。与其他行业类似,一些工作也可能在新闻媒体中消失,比如那些主要执行明确定义和重复任务的媒体。然而,当涉及到记者时,当前的自动化解决方案主要强调增加他们的工作,而不是接管他们。
新闻编辑室已经在尝试自动化新闻。美联社(Associated Press)估计,基于人工智能的技术让记者在报道金融收益时节省了 20%的时间。
美联社战略经理兼人工智能联席主管 Francesco Marconi 表示:“在美联社自动财经新闻报道的案例中,尽管产出量增加了 10 倍以上,但错误率却下降了。”。
自动化新闻报道的另一个现有应用是 Heliograf,即《华盛顿邮报》的算法,该算法首次用于 2016 年里约奥运会,产生了 300 份关于奥运会的报告和警报。自 2016 年以来,Heliograf 在 2016 年美国大选期间发表了数百篇文章,将其运营范围扩大到了华盛顿特区的高中足球赛事。
从自动化的角度来看,体育新闻是一个类似于金融收益的案例,因为大多数报道都依赖于数据。此外,该领域传统上是向先进技术发展开放的。早在 19 世纪末,《纽约先驱报》就雇佣了无线电报的发明者古列尔莫·马可尼来转播美洲杯。体育内容也是 Ted Turner 在有线电视发展中取得成功的关键,在互联网时代,第一个以书面文章直播的事件是体育事件。
“体育的新陈代谢和网络的新陈代谢看起来总是很匹配,”吉姆·布雷迪评论道,他是在线华盛顿邮报的第一批体育编辑之一。读者和作者两方面的因素使得新的网络解决方案的实施变得更加容易。
首先,体育迷通常对他们的痴迷充满热情,他们准备好了更多的参与。另一方面,体育记者发现他们的文章登在报纸上的数量非常少,这常常令人非常沮丧,因为在一期缺乏版面的情况下,体育文章是第一个被削减的。互联网不仅为体育文章提供了无限的空间,也使由印刷转为网络的记者能够跟上电视评论员的步伐,几乎实时地提供信息。
在线新闻网站出现后,在线编辑发现体育报道对他们的网站来说意味着巨大的流量。如果我们看看目前的数据,这个观察仍然是正确的。根据 Similarweb 的数据,NBC 新闻在 2018 年 8 月有 7163 万独立访客,而 NBC 体育有 3670 万。以哥伦比亚广播公司为例,哥伦比亚广播公司新闻频道的独立访客人数为 7762 万,而哥伦比亚广播公司体育频道吸引了 5622 万用户。
而体育内容对于新闻行业来说必不可少,那么体育记者呢?自动化数据流的不断增加,以及算法从这些数据流中创建叙事文本的能力,是否已经结束了对人类体育记者的使用?
根据以色列高等教育机构 IDC Herzliya 的研究员兼讲师 Yair Galily 的说法,担心自动化会导致体育记者失业是合理的,然而,这应该放在一个更广泛的背景下,即改变商业模式可能会扼杀一些现有的工作,但同时为新的工作创造空间。
一个显著的例子是创业型新闻业,记者通过在不同的网站和博客上联合发布材料,建立自己的公司来制作内容和发展自己的分销网络。这个模型自然不是专门针对体育的,大多数作家都可以利用它。
如何在新闻编辑室继续工作?
除了人工智能对特定任务的预期影响,自动化和人工智能的出现也挑战了新闻业的一个关键方面,即新闻判断。
“每天,新闻工作从根本上讲就是做出判断。圣路易斯大学的副教授马特·卡尔森在 2017 年写道:“记者决定哪些信息是有用的或无关的,哪些故事应该被包含或排除,哪些框架应该被实施或避免,以及如何强调或削弱故事。”。随着自动化越来越多地出现在新闻编辑室,算法可能会挑战新闻决策。
当记者就某一事件或某一条信息的新闻价值做出决定时,他们从公众的角度来判断某一报道的相关性。然而,算法可以逐人做出这些决定,这意味着目前定义新闻选择的公共角色可能会过时。
“因此,‘什么值得注意?’新闻职业判断的核心转向了一个不同的、个性化的问题,即“这个人想要什么?”卡尔森声称,“这将是新闻业当前逻辑的一个重大转变。
卡尔森还假设,如果我们继续客观地衡量记者的工作,新的算法可能会击败人类,因为算法没有人类通常容易出现的偏见和限制。然而,人类做出的编辑决定不会自动不如算法做出的决定。
无论如何,相当一部分新闻写作已经从描述性转向解释性;因此,未来的记者可以从对世界的理解中获得权威,而不仅仅是从对世界的描述中。
这并不意味着记者和编辑应该完全放弃客观性。他们只需明确声明,在新闻媒体中做出专业判断时,客观性和主观性都是必要的。如果这种转变与新闻故事如何产生的更大透明度齐头并进,这将允许记者捍卫他们的主观性,也允许公众审查作家的作品。
与此同时,记者在适应行业变化方面似乎还有提升的空间。自动化新闻 指南的作者安德烈亚斯·格雷夫(Andreas Graefe)表示,记者认为人类写作优于机器写作,部分原因是人类能够写出高质量的事件叙述。
然而,记者倾向于用机器擅长的技能来定义他们的职业,比如客观性、简化和速度的能力。
根据 Graefe 的说法,当记者报道自动化新闻时,他们倾向于认为写作质量很差。然而,根据写作技巧来判断算法的输出可能会产生误导。在体育或金融等最常使用自动新闻生成的领域,编写复杂的故事可能会适得其反。在这些领域,读者大多在寻找快速信息,这有可能将简单的写作变成一种资产。
我们开始讨论自动化对新闻媒体的直接影响,一般认为能自动化的,就会自动化。Graefe 还为我们提供了一些不能自动化的参考点,这些可能是记者应该专注于其职业发展的领域。
建议记者发展技能,使他们能够更好地进行深度分析、调查性报道和采访,因为算法在目前的发展阶段无法以一致的质量完成这些任务。
另一方面,自动化和技术发展不会完全让记者处于守势。新的机会也将在整个过程中出现,就像已经提到的创业新闻,人类也将不得不在新闻编辑室创造自动化的方法。
例如,对于体育记者来说,体育赛事中的转折点可能是显而易见的,但向基于规则的算法精确定义特定赛事的重要性在整个比赛中如何变化可能是一项挑战。当一个球队在足球比赛的第一分钟进球时,对最终比分的预期影响与终场哨响前几分钟进球是非常不同的。
商业模式怎么样?
在线和印刷新闻媒体有两个主要的收入来源。根据世界报纸和新闻出版商协会发布的数字,2107 年全球报业收入为 1500 亿美元。872 亿美元来自发行量和订阅量,而广告占剩余的 628 亿美元(或 41.9%)。
如果我们只看 2017 年总收入为 158 亿美元的数字平台,广告份额要高得多。尽管用户数量不断增加,但广告仍然创造了 72.15%的收入,即 114 亿美元。
在线出版业基于广告收入的生态系统正在走向失败,这一观点引起了很多议论。然而,像脸书和谷歌这样的科技公司似乎有大量的广告资金储备。脸书在 2017 年获得了 399.4 亿美元的广告收入,而谷歌获得了 953.8 亿美元。这两个数字加起来几乎是报纸数字广告总收入的 12 倍。
科技公司吸引大量广告费的主要原因是,它们能准确地向正确的受众传递信息。品牌不需要地毯式轰炸整个媒体格局来接触他们的目标消费者;由于脸书、LinkedIn、Instagram 或谷歌等网站上的广告定位,他们可以精确打击。
尽管新闻网站已经有了定位功能,但它们的精确度远远落后于科技公司的解决方案。然而,随着新闻个性化和文章自动化生产的出现,人工智能有可能改变这种情况。如果这种影响符合广告业对个性化的需求,新闻平台可能会变得更具竞争力,吸引更多的广告资金。
在线广告的利益相关者已经在人工智能的帮助下努力提高目标定位的效率。根据 2018 年 7 月由欧洲互动广告局和 Xaxis 进行的一项调查,广告商、代理商、中介和出版商使用人工智能的主要原因是提供更好的定向解决方案,并识别更合格的用户或受众。
害怕失去控制
“上帝按照自己的形象创造了人类。”
《圣经》第一卷的第一章——西方文明的主要文化参考点——表明人类类似于神,通过接受这种观点,人类将自己置于地球上所有其他形式的存在之上。
从那以后,没有什么能与人类和人类智慧的成就相提并论。然而,现在我们似乎来到了一个十字路口。人类创造的东西有可能解决我们用不一定理解的逻辑无法解决的问题。很自然,有很多悬而未决的问题,一些思想家认为人类正面临一场生存危机。
然而,其他伟大的思想家得出结论,人工智能只是技术发展自然过程中的又一步。与所有重要阶段一样,它将塑造人类社会,但就其对过去某些事件(如工业革命)的影响程度而言,没有质的区别。
媒体的问题至少是双重的。首先,公众倾向于向记者寻求答案,但在关于未来的话题中,他们只能非常确定地报道不确定性。
很自然,情况一直如此,但在重大变化和过渡时期,无法提供清晰的答案会让媒体失去相关性。
与此同时,在线新闻出版商带着一个陷入困境的商业模式来到了这个十字路口,他们必须在一个不确定的环境中重新定义自己的一些角色和原则。
由于自动化和人工智能已经进入了新闻制作的不同阶段,我们可以得出结论,当前的解决方案并没有完全取代人类记者。一些职位可能会消失,但其他工作和就业结构可能会出现,其中大多数职位是重复的,可以通过精确的规则来定义。
人工智能和自动化将扩大越来越多的新闻编辑室,这似乎是一个现实的场景。算法将执行一些任务,但人类将保留对新闻制作的控制权。
采用更全面的方法,人工智能有可能使新闻网站个性化,这可能会提高广告定位的效率,并缩小新闻出版商和科技公司之间的广告收入差距。鉴于未来新闻媒体将获得更大比例的在线广告收入,人工智能有可能将在线新闻媒体置于更可持续的轨道上。
原载于 无尽的媒体消息 。
参考
- m .卡尔森(2018)。自动化判断?算法判断、新闻知识和新闻专业主义。新媒体与社会,20(5),1755 年至 1772 年。https://doi.org/10.1177/1461444817706684
- 脸书公司(未标明)。脸书报告 2017 年第四季度和全年业绩。2018 年 10 月 9 日检索,来自https://investor . FB . com/investor-news/press-release-details/2018/Facebook-reports-fourth-quarter-and-full-year-2017-results/default . aspx
- 加利利,Y. (2018)。人工智能和体育新闻:是一场彻底的变革吗?社会中的技术,54,47–51。https://doi.org/10.1016/j.techsoc.2018.03.001
- Graefe,A. (2016)。自动化新闻指南。学术共享。https://doi.org/10.7916/D80G3XDJ
- IAB 欧洲,XAXIS。(2018 年 7 月)。人工智能;数字广告世界中的神话与现实。IAB 欧洲,XAXIS。
- 乔伊,b .(未注明)。为什么未来不需要我们。检索于 2018 年 10 月 8 日,来自https://www.wired.com/2000/04/joy-2/
- j .卡普兰(2016 年)。人工智能:再想想。ACM 的通信,60(1),36–38。https://doi.org/10.1145/2950039
- Makridakis,S. (2017 年)。即将到来的人工智能革命:对社会和企业的影响。期货,90,46–60。https://doi.org/10.1016/j.futures.2017.03.006
- 莫里森(未注明日期)。玩具部会带领我们。2018 年 10 月 8 日检索,来自http://www . cjr . org/reports/the _ toy _ department _ shall _ lead . PHP
- 摩西,L. (2017 年 9 月 14 日)。《华盛顿邮报》的机器人记者在过去的一年里已经发表了 850 篇文章。检索 2018 年 10 月 8 日,来自https://digiday . com/media/Washington-posts-robot-reporter-published-500-articles-last-year/
- 罗德里格斯(未注明日期)。谷歌的广告业务出现了漏洞。检索 2018 年 10 月 9 日,来自https://qz . com/1195777/Google-swelling-advertising-business-could-save-profits-in-Q4-2017/
- c .安德伍德(2017 年 6 月 22 日)。自动化新闻业——纽约时报、路透社和其他媒体巨头的人工智能应用。检索于 2018 年 10 月 8 日,来自https://www . tech emergency . com/automated-journalism-applications/
- WashPostPR。(未注明)。《华盛顿邮报》利用自动讲故事来报道高中足球。2018 年 10 月 8 日检索,来自https://www . Washington post . com/pr/WP/2017/09/01/the-Washington-post-leverages-heliograf-to-cover-high-school-football/
- 世界报纸和新闻出版商协会。(未注明)。2018 年世界新闻趋势:事实与数字|世界新闻趋势数据库。检索于 2018 年 10 月 9 日,来自http://www . wpt database . org/world-press-trends-2018-facts-and-figures
Unsplash 上 Roman Kraft 的封面照片
最初发布于endless media . news。
视觉的力量——赋予计算机眼睛
眼睛是灵魂的钥匙。但是如果那些眼睛属于一台电脑呢?

Source: Josh Calabrese
给我出个谜语。
读起来像一个字母,写起来有三个,我有一个我看不见的双胞胎兄弟。
答案?
眼睛。
我们的眼睛在我们的生活中扮演着非常重要的角色,因为它给了我们视觉的天赋。视觉对我们的学习至关重要。它是加深我们对世界理解的关键。
但是,如果我们希望计算机也能深刻理解这个世界,我们该怎么做呢?
我们通过计算机视觉赋予它眼睛!

Source: Daniil Kuželev
等一下。什么是计算机视觉?
计算机视觉是一个跨学科的研究领域,在这个领域中,我们训练计算机对数字图像或视频有更深入的理解。它是人工智能中机器学习的子集。它负责自动驾驶汽车、机器人、无人机、安全、医学成像和视障人士的治疗。
它是如何工作的
这项令人惊叹的技术背后是神经网络。或者更具体地说,卷积神经网络(CNN)。CNN 主要用于对图像进行分类和聚类。它们可以用来识别人脸、街道标志、肿瘤和许多方面的视觉数据。CNN 推动了计算机视觉的进步。其中比较著名的 CNN 是 AlexNet。Alex Krizhevsky 设计的 AlexNet 包含八层——前五层是卷积层,其中一些是 max-pooling 层(减少参数,以便更容易识别特征),最后三层是完全连接的层。
卷积神经网络由 3 个主要层组成:
- 输入层:获取输入数据
- 输出层:产生处理过的数据
- 隐藏层:提取数据中的模式。这些层的数量取决于数据的复杂程度。

Source: https://en.wikipedia.org/wiki/Artificial_neural_network#/media/File:Colored_neural_network.svg
神经网络的组成在其结构中具有许多层,这些层具有许多互连的节点。每个节点都有自己的角色。当图像被输入到神经网络中时,每个节点负责图像的某个部分,并且根据它是否满足标准来激活它。
例如,你将一朵玫瑰的图像输入网络。
神经网络将扫描每个像素,使用线性代数中的核计算每个像素的颜色梯度。他们测量左边像素和右边像素的色差来判断是否是边缘。

This kernel would measure the vertical edges in the image. The pixel being scanned would be the one directly in the middle. Source: Github

This kernel would measure the horizontal edges in an image. Source: Github
如果两边像素的颜色梯度差异很大,图像就能判断出这是一条边缘。
第一个隐藏层将扫描粗糙的边缘和曲线,每个节点负责图像的某个部分。网络继续通过更多的回旋,很快网络将能够识别特定的物体,如玫瑰,最后的回旋将它放在一起。
与人类的眼睛相比,计算机处于劣势。我们经历了多年的进化,教会我们如何识别图像并理解它们。电脑没有。但幸运的是,由于云上的大量数据,我们可以在几个小时内轻松获得训练图像来教计算机。
计算机视觉的应用
计算机视觉的应用是无止境的,但这里有一些更值得注意的。
疾病诊断
使用计算机视觉,我们实际上可以诊断许多类型的疾病。例如,我们可以扫描某人肺部的 x 光片来检测肺癌。这被称为计算机辅助诊断(CAD) 最常用的放射科医生。为了检测肺癌,放射科医生必须仔细检查患者的每张 x 光片,以找到肺部的特定部位,即癌症。如果患者真的被发现患有癌症,这是低效的,并且花费治疗时间。使用计算机视觉,我们可以向网络输入标记的数据,教它如何检测肺部的癌症。

Source: NIH
自动驾驶汽车
自动驾驶汽车使用 YOLO(你只看一次)技术来实现其自动驾驶技术。建立这些网络的最大困难是,它不仅需要了解对象,还需要了解对象是做什么的。因此,当网络检测到行人时,它还必须明白,根据交通规则,行人有先行权,汽车不应该碾过他们。

Source: Your Keyboard Basket
计算机视觉最突出的例子之一是在自动驾驶汽车中。我们都知道特斯拉,全球无人驾驶汽车的领先品牌。它的突破性技术允许汽车自己停车、驾驶和转换车道。
最近,一篇关于 YOLO 纳米的论文发布了。 YOLO 纳米是 YOLO 技术的一个版本,它将 CNN 分解成更小的部分,以便它们以更快的速度处理图像。当汽车行驶时,他们摄取的图像由一个复杂的网络处理,每张图像都必须通过这个网络。这需要几秒钟,但对于在路上行驶的自动驾驶汽车来说,时间太长了。 YOLO 纳米将 CNN 分解成更小的网络,因此每一段被标记的数据只需通过一个短网络。这将处理时间减少到了几毫秒,让汽车在更短的时间内做出决定。
就目前而言,人工智能对于普通大众来说是一个灰色地带。例如,对于自动驾驶汽车,如果客户不知道车辆做出决定的确切原因,他们在车内不会感到安全。所以为了保证客户愿意使用带 AI 的产品,我们必须向他们承诺透明。
给我解开这个谜。
医学影像和汽车的未来是怎样的?
答案?
计算机视觉。
这是显而易见的,但谁会知道我们的视觉,一些我们往往认为理所当然的东西,可以在我们的生活中发挥如此重要的作用?
数据科学中可视化的力量
一张照片真的胜过千言万语。
“可视化实际上是关于外部认知的,即如何利用大脑以外的资源来增强大脑的认知能力。”— 斯图亚特·卡
这篇文章关注数据可视化的重要性。科学、工程、商业和日常人类活动中产生的信息量和复杂性正以惊人的速度增长。好的可视化不仅呈现数据的可视化解释,而且通过提高理解、交流和决策来实现。
在大学的入门级课程中,几乎每个数据科学家都会学习可视化的重要性,但只有极少数人掌握了这一主题。由于其固有的主观性,它通常被认为是显而易见的或不重要的。在本文中,我希望消除一些这样的想法,并向您展示可视化是非常重要的,不仅仅是在数据科学领域,对于交流任何形式的信息也是如此。
我的目标是通过多个例子向读者展示一个设计良好的可视化在传达一个想法或一条信息方面的影响。此外,我将讨论制作有效可视化的最佳实践,以及如何着手开发他们自己的可视化和可用来做这件事的资源。
我希望你喜欢这个视觉之旅,并在这个过程中学到一些东西。

什么是可视化?
美国传统词典将可视化定义为:
①心理视觉图像的形成。
在使用数据进行可视化的环境中,有必要给这个定义添加一些内容,这样它就变成了:
形成心理视觉图像,通过数据的图形表示来传达信息。
如果你正在从事数据科学方面的职业,这是你可以掌握的最重要的技能之一,并且它可以转移到几乎任何学科。让我们想象一下,你正试图说服你的经理投资一家公司,你向他们展示了一个充满数字的电子表格,向他们解释为什么这是一个如此好的投资机会。如果你是经理,你会如何回应?
如果以视觉形式呈现,信息往往更容易消化,特别是如果它利用了人类可以直观理解的模式和结构。如果你想要一个快速简单的可视化,几乎不需要任何努力,你可以使用饼状图或条形图。就开发可视化而言,这通常是大多数人所能达到的极限,而且通常是他们在专业领域所需要达到的极限。
另一个抑制我们使用可视化的因素是我们可用的数据量。我如何知道可视化是否是传达信息的合适方法?
这是一个很难回答的问题。一项设计研究建议我们根据任务的清晰度和信息的位置来评估使用可视化的可行性。

Design Study Methodology: Reflections from the Trenches and the Stacks, Michael Sedlmair, Miriah Meyer, and Tamara Munzner. IEEE Trans. Visualization and Computer Graphics, 2012.
如果我们在此图的右上角,开发和编程交互式可视化就变得可行,这是数据科学家现在正在进入的领域,因为信息爆炸导致数据规模持续增长。

Information Explosion.
我们现在生活在一个数据驱动的世界,而且它很可能变得更加数据驱动。这在多个领域都很明显,比如在开发大规模传感器网络以及与世界互动的人工智能代理(比如自动驾驶汽车)方面的重要进展。
在一个数据至高无上的世界里,拥有开发清晰有效的可视化的能力正成为一项越来越必要的技能。
好的和坏的可视化效果
几千年来,人类一直在创造可视化,虽然穴居人的绘画没有我们现在所拥有的那么壮观,但欣赏一些早期的可视化是多么强大,以及它们对现代世界有多么大的影响仍然是很好的。
以列奥纳多·达·芬奇为例,他是一位意大利学者,不仅是第一个提出诸如飞机、直升机和坦克等令人难以置信的发明的人,而且还非常擅长绘画。他的工程和解剖图,就像下面的这些,非常逼真,但也很容易理解。

几百年前,当我们没有计算机来为我们画图时,熟练的绘画对于可视化是非常必要的。花一点时间欣赏伽利略在农历不同阶段对月亮的素描。

我们并不经常真正盯着古代的月球图画,所以在现代世界中,真的还需要这些类型的可视化吗?如果有,我们能不能不把它留给艺术家、平面设计师之类的人?
答案显然是肯定的。即使在 10 年或 15 年前,学习像化学这样的东西是非常困难的,尽管能够在你的大脑中描绘分子,但仍然很难在复杂的科学词汇和你脑海中正在发生的事情之间进行翻译。如今,人们可以在 Youtube 上键入几个词,然后观看化学任何方面的可视化或可视化漫游。同样的想法也适用于科学中的任何抽象概念。
所以现在我们已经说服自己,可视化对于传达信息非常有用,也可以用来以一种更易理解的方式解释复杂的想法。
有哪些好的可视化例子?
我目前住在波士顿,所以以下几个可视化与波士顿市有关。这些只是一些我认为很好的形象化,由于它们的主观性质,你可能不同意我的观点。
在波士顿,我们有一个名为 t 的地下地铁系统。与任何城市地铁系统一样,有许多不同的线路,它们去往不同的方向,由于距离较长,一些线路比其他线路花费的时间更长。
下面的可视化图不仅以同心球体的形式捕捉到了从市中心到每个站点所需的时间,还捕捉到了每条线路的正确方向。看着这个图表,很快就能算出该走哪条线,往哪个方向走,以及到达那里需要多长时间。

这第二个图像显示了上个世纪在马萨诸塞州出生的个体的移动。我们看到,在 1940 年,82%出生在马萨诸塞州的人预计会生活在马萨诸塞州。现在快进到现代,我们看到这个数字已经下降到 64%,我们可以对这些人迁移到哪里有一个合理的想法。

有史以来最著名的可视化作品之一是由约瑟夫·密纳德创作的,它描绘了拿破仑在 1812 年向俄罗斯进军的旅程。

这幅插图描绘了拿破仑的军队离开波兰和俄罗斯边境。一条粗带显示了他的军队在前进和撤退时在特定地理点的规模。它以二维方式显示六种类型的数据:拿破仑军队的数量;走过的距离;温度;经纬度;行进的方向;和地点,但没有提到拿破仑。密纳德的兴趣在于士兵们的辛苦和牺牲。这种用于说明流量的带状图后来被称为桑基图。
您可能已经注意到上述所有可视化的一个趋势是,它们以相对简单的方式传递多种类型的数据。以一种可理解的方式做到这一点并不是一件容易的事情。
现在让我们考虑将一个差的可视化转换成一个更适合其目的的可视化。这是用地铁地图最容易做到的,所以我将考虑伦敦的地铁地图,我们将看到为什么它被改变,以及他们的新设计如何改进了原来的设计。
这是 1927 年伦敦地铁的原始地图。正如你可能已经注意到的,这张图的主要问题是有一大群密集的地铁站,因为它们离得很近。这是因为地图是根据车站的地理位置绘制的。然而,当离开城市很远时,地图上还有大量的空间没有使用。

1933 年,哈里·贝克提出了一个新的伦敦地铁地图设计。贝克认为,地铁乘客不关心地理位置的准确性,他们最感兴趣的是如何从一个车站到另一个车站,以及在哪里换车。他从电气图中获得灵感,决定用单独的颜色显示每条线路,并像在电气图上一样显示它们与其他线路的连接。该图保留了每条线的方向信息,但距离信息丢失了,因为 Beck 认为这是不必要的。
作为一个曾经住在伦敦并使用现代版地图相对轻松地四处走动的人,我可以保证它的辉煌。

我们可以看到发生在纽约地铁地图上的非常相似的争论。这些你觉得哪个更好?

尽管我们已经查看了多张地铁图,但显然没有一个明确的解决方案可以适用于所有情况。毕竟要看什么数据和受众最相关。哈里·贝克认为,乘客并不关心距离或地理信息,他们只知道如何从 A 站到 B 站,以及需要做哪些换乘。也许这个想法对纽约人不适用,因为他们比伦敦人更关心距离和地理位置。
安斯科姆的四重奏
正如格特鲁德·安斯库姆在如今广为人知的安斯库姆四重奏中所展示的那样,数字可能会令人难以置信地产生误导。四元组是一组四个数据样本,它们具有完全相同的均值、方差、相关性和线性回归线。

Anscombe’s Quartet in tabular form (Anscombe, 1973).
然而,从结果的直观表示中可以清楚地看出,四组数据的分布是完全不同的。

Anscombe’s Quartet in visual form (Anscombe, 1973).
为了强调这一点,我开发了六个我自己的数据图,它们都有相同的均值、方差、相关性和线性回归线。正如你在下面看到的,这些又是完全不同的。

这种可以用可视化来代替量化指标来使数据结构更清晰、更有意义的想法自然会让我们陷入误导性的可视化领域。正如我们从安斯科姆的四重奏中看到的那样,数字可以用来误导我们对数据结构的理解,反之亦然,可视化可以巧妙地扭曲数据中的潜在结构。正如我们将会看到的,这是一个非常普遍的现象,尤其是在政治和科学辩论这样的领域。
误导性的可视化
人们利用统计数据误导个人的例子不胜枚举。事实上,这是政治中极为常见的策略。这方面最著名的例子之一可能与乔治·布什总统提出的减税计划有关,在该计划中,通过扭曲条形图的轴线,使 5%的增幅看起来大得多。

(Left) The visualization shown to viewers, and (right) a less deceptive visualization.
这些欺骗策略通常涉及到测量轴的扭曲,如上例所示。这是另一个与失业有关的轴扭曲的例子(讽刺的是,也与美国政治有关)。

现实中,剧情应该是这样的。

人们通过使用可视化被欺骗的另一种方式是通过省略数据。
我本人是一名环境科学家,所以我非常清楚人们可以用精心制作的可视化来支持的欺骗。这是一个证明全球变暖是一个神话的主要例子(澄清一下,事实并非如此,自 20 世纪 90 年代以来,这一观点没有受到环境科学家的质疑)。

下图显示了一个不太具有欺骗性的图表。

到目前为止,我们刚刚讨论了被主动设计来欺骗我们的视觉化。万一不小心弄好了呢?
当心彩虹

彩虹彩色地图可能是我每天遇到的最令人讨厌的可视化。作为一名环境科学家,我在任何地方都能看到这些。不仅仅是因为色盲的人(比如我自己)在区分许多颜色上有问题,而且给一种颜色分配一个量化的值是没有意义的。
彩虹色图在感知上是非线性的。谁决定了蓝色在数量上比黄色或红色更低?转变何时发生,有多突然?

Rainbow color maps.
解决这个问题的最好方法是坚持使用两种颜色,并用颜色的线性变化来表示数量值。在这种意义上,该图可以是彩色的,但是该图的定量性质由颜色的亮度来描述,较暗的区域通常表示较高的值。这个想法如下图所示。

这基本上使它们与下图中的热图或等值线图相同。

一个很好的例子是 2016 年总统大选后的美国投票。

色盲
记住这样一个事实总是好的,即相当数量的人是色盲,避免使用对这些人来说有问题的颜色组合。以下面的可视化为例。

对于患有红绿色盲的人来说,这个图表中使用的颜色是一个可怕的组合。最好注意至少使用红色和绿色的组合,因为这种类型的色盲是最普遍的。

如果你有兴趣了解更多关于色盲的知识,有一个很棒的网站可以模拟色盲。
如果你没有色觉缺陷,很难想象色盲是什么样子…
www.color-blindness.com](http://www.color-blindness.com/coblis-color-blindness-simulator/)
边缘捆绑
边缘捆绑背后的思想实质上是在从一个节点到另一个节点的所有路径周围缠绕一条弹性带。这被用在网络图上,它的优点是使视觉效果看起来不那么杂乱无章,而且更令人愉悦,正如我们在下面看到的。
这种方法的缺点是,在捆绑之后,您不能跟踪确切的链接或路径,这意味着我们的可视化不能反映底层数据(我们丧失了一些图形完整性)。

可视化过程概述
既然我们已经看了一堆可视化,并且理解了好的和坏的可视化之间的区别,现在是讨论什么是好的可视化的好时机。
可视化目标
本质上,可视化有三个目标:
- 数据探索 —发现未知
- 数据分析 —检验假设
- 展示 —交流与传播
基本上就是这样。然而,这些术语非常模糊,因此很容易理解为什么个人很难掌握通过可视化交流的艺术。因此,有一个模型来帮助我们实现这些目标是很有用的。
五步模式
可视化通常被描述为以下五步模型,这是一个遵循相当合乎逻辑的进展的过程。

首先,需要分离出一个特定的目标或问题作为评估的主题。
其次是数据争论,这是数据科学家在处理数据时做的 90%的事情。该程序包括将数据转换成可行的格式,执行探索性的数据分析以了解他们的数据集,这可能涉及各种汇总或绘制数据的方法。
第三个阶段是设计阶段,涉及到开发一个你想用数据讲述的故事。这与我们定义的目标紧密相关。我们想要传达的信息是什么?这也很可能取决于你的受众是谁,以及分析的客观性水平——例如,一个政治对手很可能想要发送一个夸大的数据信息,以便让他们的对手看起来很糟糕。
第四步涉及可视化的实现,例如通过使用 D3 对交互式的基于网络的可视化进行编程。这是过程的一部分,涉及一些编码,而设计阶段涉及思考、绘图、构思等等。
第五个阶段本质上是一个回顾阶段,你观察你的实现并决定它是否发送了你想要传达的信息,或者回答了你想要回答的问题。
实际上,这是一个非线性过程,尽管它经常被描述为一个非线性过程。这是这个模型的一个更现实的形式。

看起来很简单,对吗?好吧,事实上有很多方法可以把事情搞砸,而且经常是在没有意识到的情况下。以下是三个最常见的问题:
领域情况— 你是否正确理解了用户的需求?也许正在解决的问题是错误的。这是一个与目标阶段相关的问题。
数据/任务抽象— 你向他们展示的是正确的东西吗?也许使用了错误的抽象。这也是与目标阶段相关的问题。
视觉编码/互动— 你展示数据的方式有效吗?也许使用了错误的习语或编码。这是一个与设计阶段相关的问题。
算法— 你的代码有没有破解?你的代码太慢了吗?是否可扩展?这是实现阶段的问题。也许使用了错误的算法。
解决您的代码正在崩溃的事实可能是显而易见的,但是您如何评估我们刚刚解决的更主观的问题,例如领域情况或使用的可视编码?我们可以倾向于评估指标。
我们可以依靠定性和定量指标。定性指标通常对可视化最有用,因为可视化是为了向人们传达信息而开发的,可以使用的一些指标示例如下:
- 观察研究(“大声思考”)
- 专家访谈(又名设计评论)
- 小组讨论
这些定性程序的想法是,个人应该能够看到可视化和理解你试图传达的信息,而不需要任何额外的信息。这些类型的研究和指标通常用于市场营销和网页设计等领域,因为它们可以洞察个人将如何解释和回应他们的想法或设计。
经验法则
爱德华·塔夫特是开发有效可视化领域的先驱,并就该主题写了多本书(我将在文章结尾引用)。
以下是他关于有效视觉化的三条规则:
- 图形完整性
- 最大化数据-油墨比率
- 避免图表垃圾
图形完整性
在讨论误导性的可视化时,我们已经讨论过这一点。总的来说,试图用统计数据误导个人是不好的做法,而且对社会有些危害。

最大化数据-油墨比率
这条经验法则是关于清晰和简约的。一般来说,3D 绘图往往不太清晰,在某些情况下可能会产生误导。检查下面两个图表之间的差异,并决定你认为哪个更好。

避免图表垃圾
无关的视觉元素会分散人们对所传达信息的注意力。

互动可视化
这个主题可能会变得非常复杂,所以我将在以后的文章中讨论开发可视化。不幸的是,D3 可视化不能通过媒体运行,所以你可以访问链接来查看可视化的效果。
这里有一些我最喜欢的视觉化图像,可以吊起读者的胃口。
《权力的游戏》中的位置

Location names discussed in the Game of Thrones saga. Source
美国枪支死亡人数

Gun deaths in the United States. Source
英国的道路安全
这种可视化是建立在 deck.gl 上的,玩起来非常有趣——在这个网站上还有许多其他的交互式可视化,我建议去看看。

Road Safety in the U.K. Source
通往各州首府的道路
这是一幅交互式彩色地图,显示了美国以及通往各州首府的所有道路。

一个类似的可视化也可以从相同的网站显示罗马之路。
美国贸易赤字
这是一个美丽的形象化的形象化的美国从 2001 年到 2013 年的贸易逆差。

链接爵士网络图
这个交互式图表展示了爵士乐中的一些著名人物,以及他们是如何影响其他艺术家的。

要获得更多可视化效果,请查看 GitHub 上的 d3 图库。
用 SVG、Canvas 和 HTML 赋予数据生命。:bar _ chart::chart _ with _ upward _ trend:🎉-D3/D3
github.com](https://github.com/d3/d3/wiki/Gallery)
最终意见
对于那些对看到更多可视化感兴趣的人,我在下面有多个书籍和网站的参考,如果你认真发展你的可视化技能,无论是以视觉思维的形式还是使用 D3 开发交互式可视化,你可能会感兴趣。
作为对您坚持阅读本文的奖励,以下是入选“信息是美丽的大奖 2018”的可视化内容。这种可视化以 Instagram 标签的名字来重命名伦敦的地铁站,而 insta gram 标签通常与该地点相关联。

我给你留了一个有趣网站的链接,里面有一些有趣的糟糕的可视化例子。本文中使用的一些可视化效果来自这个网站。
毫无意义的想象。如果想讨论某个特定的可视化有什么问题,请发微博给我们…
即 wtf](https://viz.wtf/)
感谢您的阅读!
时事通讯
关于新博客文章和额外内容的更新,请注册我的时事通讯。
丰富您的学术之旅,加入一个由科学家,研究人员和行业专业人士组成的社区,以获得…
mailchi.mp](https://mailchi.mp/6304809e49e7/matthew-stewart)
延伸阅读
本节包含一个有用的资源列表,重点介绍数据可视化的创建。
书
[1] 设计的视觉思维,科林·威尔,摩根·考夫曼(2008)
[2] 网络互动数据可视化,斯考特·玛瑞,奥赖利(2017)
[3] 可视化分析与设计,Tamara Munzner,CRC 出版社(2014)
[4] 《功能艺术:信息图形和可视化简介,Alberto Cairo,New Riders (2012)
[5] 信息设计,伊莎贝尔·梅雷莱斯,罗克波特(2013 年)
爱德华·塔夫特
[1] 定量信息的可视化显示。
[2] 预见信息。
[3] 视觉说明。
D3
D3.js 是一个基于数据操作文档的 JavaScript 库。D3 帮助您使用 HTML、SVG 和 CSS 将数据变得生动。
[1] 官方 D3 站点
【2】官方 D3 API 参考(版本 4)
【3】官方 D3 API 参考(版本 3 . x)
【4】D3 教程由斯考特·玛瑞(D3 版本 3)
【5】杰罗姆·库基尔的 D3 备忘单
Web 开发
[1]JetBrains 的 web storm—智能 JavaScript IDE ( 对学生免费)。
【2】雄辩的 Javascript 书
【3】DevDocs, Mozilla 开发者网 —主流 web 技术的统一文档。
【4】Github(Git repository hosting service)—软件开发的版本控制系统。(免费的学生专用库)
(舞台上由人扮的)静态画面
Tableau 软件是一个让你创建交互式数据可视化的工具。(学生免费)
数据源
Data.gov
Census.gov
Data verse 网
气候数据来源
气候站记录
CDC 数据(疾病控制与预防)
世界银行目录
免费 SVG 地图
英国国家统计局
state master
网站和博客
其他软件工具包
plot . ly
Wolfram Mathematica
Prefuse(Java)
弱关系的力量
社会网络中弱关系的影响——图论观点

什么是社交网络?
我们都知道“社交网络”这个术语是指社交网站,比如脸书和推特。在这些网站上,人们能够与网站上的其他用户交流并形成社会联系。当人们使用这些网站时,模式往往会出现,因为用户基于预先存在的人际关系,以及通过在线互动期间新创建的关系聚集在一起。虽然这些网站确实具有社交网络的特征,但社交网络不一定是网站。
从最普遍的意义上来说,社交网络是人们之间建立联系的方式。网络中的人,或者说行动者,被认为是节点(圈),他们之间的连接,或者说是边(线),代表着互动或者关系产生的纽带。这些网络可能来自任何社会行为,如在线交流、面对面交流,甚至更抽象的联系形式,如认识一个人,因为他们是你的亲戚。

https://en.wikipedia.org/wiki/Social_network#/media/File:Network_self-organization_stages.png
社交网络是用于社会学和心理学等社会科学以及统计学和数学等定量领域的强大工具。检查网络的一般结构,如密度和组件数量,以及通过中心性等指标检查单个节点对网络的贡献,可以提供对复杂社会现象的许多见解。
什么是弱领带?
既然我们知道了什么是图,我们就可以研究图中的连接类型。这些可以分为缺席关系、弱关系和强关系。

https://en.wikipedia.org/wiki/Interpersonal_ties
缺失连接,顾名思义,是图中不存在的连接。因此,如果在一个图中,人 A 和人 B 不相连,那么边 A-B 就是不存在的纽带。
强关系则是另一个极端。这些是人与人之间的纽带,彼此紧密相连。在现实世界中,这可能包括你日常交往的亲密家人和朋友。你可能和这些人有很多共同点,你很可能和他们有很多共同点。你的强关系很可能类似于下面的密集图。

https://blog.metaflow.fr/sparse-coding-a-simple-exploration-152a3c900a7c
最后,你的弱关系介于缺席和强关系之间。这些是人们之间的联系,他们彼此认识,但不是特别熟。在现实世界中,这些人是你一个月接触一次的人,你可能不常见到他们。你和你的弱纽带可能没有太多共同点,你的弱纽带大部分也不会认识。因此,你的弱关系图很可能类似于下面的稀疏图。

https://blog.metaflow.fr/sparse-coding-a-simple-exploration-152a3c900a7c
弱关系的好处
既然已经了解了不同类型的联系,那么说弱关系是最重要的可能看起来有违直觉。毕竟,与你关系最密切的人不是最愿意帮助你的吗?
真实世界的图表
为了理解弱联系的力量,我们必须看看现实社会图的结构(网络拓扑)。下面是一个真实世界网络的例子,代表一个美国大学足球网络。

https://www.nature.com/articles/srep05739/figures/2
很快,我们注意到这样一个现实世界的网络是由密集连接的人群或社区组成的。然后,这些社区通过相对较少的边相互连接。我们可以把每个社区中的边缘看作是紧密的联系。这些人很可能在同一个团队,彼此关系非常密切。连接每个不同社区的边可以被认为是弱联系。这些很可能是较弱的联系,因为球员不太可能与其他球队的人频繁互动。
小世界网络
模拟这种网络的一种常见方法是将它构建在一个小世界网络中。小世界网络有几个定义性特征,使它们具有上述外观:
- 大多数节点互为而非邻居
- 特定节点的邻居很可能是彼此的邻居
- 节点可以通过少量的边互相到达

In small-world networks, we see sparse connections between communities. Each community experiences a high degree of clustering, or equivalently, the graph overall has a high level of modularity. Random graphs are far less modular and experience less clustering.
这些特征导致由少量边连接的密集连接的社区的形成。这种网络自然出现在许多现实世界复杂系统的建模中,如我们大脑中的神经元和社交网络。
弱关系的影响
如果没有薄弱的联系,各社区之间就不会有任何交流。每个人在更大的图中只拥有他们自己的小中心的本地信息。如果没有薄弱的联系,人们将无法获得与全球体系相关的信息,这可能对他们不利,因为他们错过了并非源自其特定社区的趋势。事实上,如果大型社区之间的关键链接被移除,弱连接的移除可能会对整体网络功能产生灾难性的 T2。这与移除强连接形成对比,移除强连接会导致网络功能的退化更加可控,且通常更小。
幸运的是,我们的社交网络确实允许我们有这些微弱的联系。这就是人们如何能够通过使用 Twitter 等平台快速扩大对世界事件的了解,以及我们如何能够通过脸书等平台与远方的亲戚重新联系。这就是“六度分离”现象的由来,因为大多数社区可以通过少量的边彼此到达,这些边代表弱联系。

https://blog.headresourcing.com/networking-and-the-strength-of-weak-ties/
一个例子——求职
我们可以在很多情况下观察到这种现象,比如找工作。你身边的人,比如你团队中的同事,人脉有限。他们可能认识很多和你一样的人,在有限的公司范围内,和你在同一个地区。所以,在找新工作的时候,他们的帮助可能是有限的。然而,你的弱关系,最有可能在其他地理区域、工作岗位和公司,有更广泛的影响。他们可能会向你推荐其他地方的公司和不同的职位。这可能包括远方的家庭成员、老朋友和你过去的同学。

https://www.swiveltime.com/2013/08/your-network-of-cousins.html
研究甚至表明,大部分工作帮助都来自弱关系。这主要是由于一个简单的事实,即弱关系比强关系多得多。虽然单个弱联系可能比单个强联系更弱,但在总体意义上,我们的弱联系已被证明更有用。
迄今为止的英超联赛

Photo credit: https://www.stickpng.com/img/sports/soccer-football/premier-league-logo
对世界上最有趣的足球联赛的赛季中期分析
杰米·瓦尔迪进球不断,他的状态非常好。阿森纳球迷在阿森纳官方电视上展示了他们歇斯底里的最佳状态,因为这支球队正在经历一段时间以来最糟糕的赛季。切尔西出人意料地发展得很好,尽管他们不能在转会窗口签下任何人。
曼城在一支被认为是冠军的球队中表现得相当不错。曼联和阿森纳一样,并没有真正做好。尽管他们在大型比赛中表现出色,但在小型比赛中却搞砸了。
托特纳姆热刺队在解决如何正常运转的问题上有一些问题,但何塞穆里尼奥已经来拯救他们,并且有一些改善的迹象。一支让我惊讶的球队是谢菲尔德联队。尽管刚刚获得晋升,但他们已经成功展示了让他们一直保持在前 7 名的表现。
最重要的是,利物浦通过提供一个非常有统治力的表现,已经走上了成功的大道。尤尔根·克洛普用这支球队创造了一个王朝。不管他们面对谁,他们总是赢。范·迪克在后面看起来很稳固。中场很容易为进攻的三人组提供惊人的传球,从而带来重要的进球。
目前是赛季中期,对各队赛季中期表现的分析已经进行。
英超赛季中期积分榜分析
收集数据是为了分析球队在赛季中期的表现。使用英超的网站,最近的排名是通过这个链接得到的。

The Premier League mid-season table of 2019/20.
不出所料,利物浦领先一场比赛。莱切斯特城位居第二,这要归功于杰米·瓦尔迪的高产和布伦丹·罗杰斯的顶级执教。曼城不在最佳状态,排名第三。切尔西出人意料地排名第四。狼队证明了自己是一支顶级球队,排名第五。热刺,第六。曼联和阿森纳分别是第八和第十一。倒数三名包括阿斯顿维拉、沃特福德和诺维奇城,他们分别排名第十八、十九和二十。
最大的赢家对最大的输家


The graph on the left shows which teams have won the most games. The graph on the right shows which team has lost the most games.
在 18 场比赛中赢了 17 场后,利物浦成为最大赢家。莱斯特城在积分榜上排名第二,曼城以 12 胜排名第二。切尔西 10 胜,排名第四。托特纳姆热刺排名第五。
诺维奇城在积分榜上垫底,它输掉最多的比赛 13 场并不奇怪。同样处于降级区的阿斯顿维拉排名第二,已经输了 11 场比赛。沃特福德和南安普顿以 10 负并列第三。西汉姆联、亚冠伯恩茅斯、布里顿霍弗阿尔比翁、埃弗顿、伯恩利都是 9 负,排名第五。
谁最爱分享积分?

A graph showing which teams share points the most in the premier league mid-season of 2019/20
事实证明,当狼队和阿森纳面对对手时,他们更愿意给对手一分。他们都平了 9 场比赛。谢菲尔德联队排在第二位,已经 8 场平局。沃特福德和曼联以 7 平排名第四。
进球与失球


The graph on the left shows how many goals the teams have scored. The graph on the right shows how many goals the teams have conceded.
拥有强大攻击力的曼城队迄今为止已经打进 52 球,是赛季中期进球最多的球队。利物浦以 46 球排名第二。莱斯特城进了大约 41 个球,排名第三。热刺和切尔西分别以 34 球和 33 球排名第四和第五。
对于诺维奇城来说,垫底一定很艰难。他们已经设法丢了 38 个球,这使他们成为最大的失球球队。南安普顿在莱斯特城 9:0 大胜后排名第二,总共丢了 37 个球。阿斯顿维拉和沃特福德都丢了 33 个球,排名第三。伯恩利和西汉姆联各丢 30 球,排名第五。
玩家分析
使用这个链接从英超联赛网站收集关于球员表现的信息。
最高得分者——聊天***被撞!

The highest goal scorers of the premier league mid-season of 2019/20
杰米·瓦尔迪。真是个畜生!本赛季他一直是致命的,已经记录了 17 个进球,这使他成为最高的射手。阿森纳的奥巴姆扬以 12 个进球排名第二。塔米·亚伯拉罕、丹尼·英斯、马库斯·拉什福德和拉希姆·斯特林都曾 10 次进球,他们都名列第三。
顶级组织者—我能为您做些什么?

The best playmakers in the premier league mid-season of 2019/20
组织进攻之王凯文·德布劳内有 11 次助攻,这让他第一次成为众人瞩目的焦点。第二名是神童特伦特·亚历山大·阿诺,他有 8 次助攻。儿子 7 次助攻排名第三。马内、戴维·席尔瓦和劳尔·希门尼斯以 6 次助攻排名第四。
干净的床单——谁最能扭转局面?

Clean sheets in the premier league mid-season of 2019–20
谢菲尔德联队的迪安·亨德森、伯恩利队的尼克·波普和莱斯特城队的卡斯帕·舒梅切尔都以 7 次零失球并列最干净球门不失榜首。文森特·瓜尔塔和埃德松以 6 场零封对手的成绩排名第四。上赛季的最佳门将艾利森至今已经有 3 场比赛没有失球。
结论
没有人知道在这个赛季剩下的时间里会发生什么。英超是一个充满娱乐的联赛,有很多悬念。这种悬念的一部分来自于前四名的争夺和降级区的争夺,这可能会持续到最后一个比赛日。
有趣的事实:
这是我的第 19 篇文章,我正在分析英超赛季的前 19 场比赛。
有准备的头脑:如何接近工艺
为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

Photo by Franck V.
在刚刚过去的这个周末,我参加了一个会议,主题是最新的热门词汇之一“变革性技术”。自从他们开始以来,我一直在跟踪他们,这对风投来说似乎是很好的营销——你猜对了——技术,但具体来说是“精神健康、情感健康和人类繁荣”的技术对于这一组,需要有电力或电池参与。这并不是说佛教僧侣、教师、教练或心理学家的贡献本身不被重视,而是他们没有得到重视。
其中一位演讲者推断,有一天,我们将拥有“让我们流动”或“帮助我们快速进入冥想状态”的技术。这不是我第一次听到有人讨论这个想法,我认真地听着,思考着相当于“跳过学习之旅”直接进入整合的潜在后果。
学习,那种推动我们在生活和工作中前进的学习,充满了奋斗。接受一个新的想法,用它来推理,并融入一个新的,更广泛的理解是很困难的。随着对数据依赖的增加,推理是一种岌岌可危的衰退技能。如果技术可以帮助我们避免一个新想法或新活动的不愉快、笨拙、易焦虑的初学者心态,那么会失去多少深度的经验(和洞察力)?如果我们能够跳过发展精通的重要阶段,会失去什么?
在一个痴迷于科技、重新包装的想法和 Instagram 原声片段的时代,一些伟大的科技 思想家 迷失在历史中。我想分享一些从伟大的理查德·海明身上学到的东西。海明是一位美国数学家,他的工作对计算机工程和电信有许多影响。他给 IBM 的计算机器编写了程序。他参与了贝尔实验室几乎所有最突出的成就。退役后,海明在海军研究生院谋得一个职位,致力于教学和写书。1997 年 12 月,他做了最后一次演讲,就在几周前,他于 1998 年 1 月 7 日因心脏病发作去世。
你可以在下面看到。我在下面引用他的书和演讲,因为它们涉及到我对大师级工匠的研究,他们如何在他们的工作中变得更好,以及我们(在技术和商业领域)可以从他们身上学到什么。
无论你做什么,如何与手工艺合作
通过日常刻意练习获得的洞察力、技能或意识状态,很少会放在银盘上交给你。爱因斯坦认为天才是 99%的汗水和 1%的灵感。毕加索提到“灵感[已有],但需要在工作中找到你虽然我们可以承认运气发挥了作用,但我们经常把它作为拐杖,以避免做我们能做的事情来明智地为机会做准备。在我看来,汗水和工作是有效融合的组成部分。
我们只有一次生命,“似乎做一些有意义的事情比只是度过一生直到生命尽头更好,”理查德·海明在他 1997 年的书 中写道。这本书和他 1986 年的演讲《运气偏爱有准备的头脑》,你和你的研究探索我们如何做伟大的工作。具体来说,他指的是“诺贝尔奖类型的工作”。诺贝尔水平的工作提高了我们认为可能的标准,并教会我们以新的方式思考。从很多方面来说,诺贝尔奖获得者都是我们当中各自领域的匠人。
从做饭到编码,为了用手艺做点事,都有方法可以搞。这就是精益、DMAIC、6Sigma 和许多其他方法的由来。为了更有效地思考,我们还可以学习一些心理训练。但是,从哪里开始呢?
海明认为,准备是区分优秀和伟大的关键。这意味着你生活的方式——你明智准备的程度——对你能完成的事情有着巨大的影响。
作为人类,我们倾向于关注我们能用眼睛看到的东西。我们认为关注具体事物是客观的。这是我们合理化的方式。当我们观察其他人生活中的转变时,我们会看到好运、天赋、不公平的优势或正确的联系。我们专注于机会和成功的明显迹象。我们也对组织这样做——这是一种错觉。
任何改变的关键都非常简单。停止关注外在,关注更小的内在变化。这就是抓住幻觉和沉浸在现实中的区别。现实会改变你。
人们反对努力做大事的主要理由是认为这完全是运气的问题。我多次引用巴斯德的话,“运气偏爱有准备的头脑”。它既承认有运气的成分,又声称在很大程度上取决于你。你时刻准备着成功或失败,就像你选择的那样,通过你生活的方式。
做科学和工程的艺术:学会学习(209 页)
运气总是等式的一部分。哲学家、政治理论家和战略家们早就认识到机遇在我们生活的方方面面都扮演着重要角色。就连尼科洛·马基雅维利(Nicolo Machiavelli),这位君主在追求权力时可以使用的每一个杠杆的编目员,也承认,“我相信,命运可能是我们所做事情的一半的仲裁者,而另一半则由我们自己控制。”几个世纪前意大利政坛的真理在今天的管理中同样适用。
然而,如果生活全靠运气,同样的人就不会重复做伟大的事情。伽利略·伽利雷做了许多伟大的事情。牛顿和爱因斯坦也是如此。比尔·盖茨、埃隆·马斯克和杰夫·贝索斯已经在多个领域取得了成功。这样的例子不胜枚举。
当有人反复使用 Craft 时,那是因为他们提前做好了识别、工作和必要时填空的准备。这是智慧准备的本质,也是刻意练习的基础——伟大是副产品。很多时候,在试图优化和再造的过程中,我们忘记了这一点。
智力有多种形式。很多时候这并不容易被发现——很多反复做大事的人都是穷学生。智商并不能保证学业成功。聪明固然很好,但如果你知道如何运用你的知识就更好了。
相信你有能力做重要的工作。
你如何看待自己和自己的贡献能力,决定了你如何体验生活中的人,你选择的工作,以及你选择的解决问题的战术和策略。
抱着你能做重要工作的信念,为什么我们大多数人会把时间花在无关紧要的工作上?
直接观察和直接询问人们,表明大多数科学家把大部分时间花在他们认为不重要的事情上,也不可能得出重要的结论。
理查德·海明..做科学和工程的艺术:学会学习(210 页)。
如果你正在做的事情并不重要,也不符合你的价值观,那么你正在做的事情、你所说的话和你正在做的事情也不重要。想想吧。
健康对你来说重要吗?你最后一次投资是什么时候?**
关系对你来说重要吗?你投资他们做什么?**
你重视过程吗,真的?你上一次重视,真正重视那些能让你实现追求的结果的许许多多小决定是什么时候?**
你需要问自己的问题是你为什么不去解决和思考你所在领域的重要问题?如果我们不解决正确的问题,我们怎么能期望取得伟大的成就呢?**
愿意做一个局外人。
把这想象成信心遇到勇气。你可能看起来像个白痴,因为你正在做一些新的事情。你周围的人可能不会马上理解你,因为你在挑战现状。
香农有勇气。除了一个几乎有无限勇气的人,还有谁会想到对所有随机码求平均,并期望平均码会很好?他知道自己正在做的事情很重要,并努力去做。勇气,或者说自信,是一种可以培养自己的品质。看看你的成功,对失败的关注要少于“从错误中学习”这句话通常建议你做的。下棋的时候,香农经常大胆地让他的王后加入战斗,并说:“我什么也不害怕”。当我陷入困境时,我学会了对自己重复这句话,有时它让我走向成功。我故意复制了一个大科学家的一部分风格。继续下去的勇气是必不可少的,因为伟大的研究往往有很长一段时间没有成功和许多挫折。
理查德·海明..从事科学和工程的艺术:学会学习(第 211 页)
拥抱横向目标。
你必须将卓越视为一种追求,而不是一种结果。这并不像听起来那么容易,尤其是当你试图复制成功时,但这是从事手工艺的一个基本特征。**
没有这样的目标,你将倾向于偏离航向三度。你几乎会朝着正确的方向前进。三度看起来很小,但那是当你坚持到底并对自己说,“我很好,我仍然可以看到我前进的方向。”直到二十年后,你才意识到有些事情不对劲。你再也看不见那座山了。长时间偏离航向三度的累积效应意味着要么是时候原路返回,转向那座山,要么尝试其他方法让你回到航向。
……以做有意义的工作为目标,人们倾向于走同一个方向,因此走的距离与走的步数成正比,这在一生中确实是一个很大的数字。
理查德·海明..从事科学和工程的艺术:学会学习(第 211 页)
大多数人认为最好的工作条件并不是——学会在失败和成名之间跳舞。
约束可以带来创新。但是限制只是现实的另一种说法,或者是缺乏理想(预算、资源、环境或者你正在寻求的其他品质)。现实的反馈是什么让你脚踏实地。
年龄似乎确实有影响。首先,如果你做了一些好的工作,你会发现自己在各种各样的委员会里,不能再做更多的工作。你可能会发现自己就像我看到的获得诺贝尔奖的布拉顿一样。宣布获奖的那天,我们都聚集在阿诺德礼堂。三位获奖者都站起来发表了讲话。第三个,布拉顿,几乎是含着眼泪说,“我知道诺贝尔奖效应,我不会让它影响我;我将继续做老好人沃尔特·布拉顿。”我对自己说,“这很好。”但是几个星期后,我发现这影响了他。现在他只能致力于解决大问题。
当你出名时,很难解决小问题。这是香农做的。信息论之后,你做什么来安可?伟大的科学家经常犯这种错误。他们没能继续种植小橡子,而大橡树正是从这些小橡子中生长出来的。他们试图把这件大事做好。事情不是这样的。所以,这是你发现当你得到早期认可时,它似乎让你失去活力的另一个原因。事实上,我会给你我多年来最喜欢的引语。在我看来,普林斯顿高等研究院毁掉的优秀科学家比任何机构创造的都多,这是从他们来之前的所作所为和之后的所作所为来判断的。不是说他们之后不好,而是他们到了那里之前超好,只有到了之后才好。
开着门工作。
我注意到,如果你关着办公室的门,你今天和明天会完成更多的工作,而且比大多数人更有效率。但是 10 年后,不知何故,你不知道什么问题值得去解决;你所做的所有艰苦工作都是无关紧要的。开着门工作的人会受到各种各样的干扰,但他偶尔也会得到一些线索,比如这个世界是什么,什么可能是重要的。现在我无法证明因果顺序,因为你可能会说,“关着的门象征着封闭的心灵。”我不知道。但是我可以说,那些开着门工作的人和那些最终做重要事情的人之间有很好的相关性,尽管那些关着门工作的人通常工作更努力。不知何故,他们似乎在做一些稍微错误的事情——不多,但足以让他们错过名声。
做大事的世卫组织人通常有很大的动力去做事。
大多数伟大的科学家都有巨大的动力。我和约翰·图基在贝尔实验室共事了十年。他干劲十足。大约在我加入三四年后的一天,我发现约翰·图基比我略年轻。约翰是个天才,而我显然不是。我冲进波德的办公室,说:“像我这样年纪的人怎么可能知道的像约翰·图基一样多?”他靠在椅子上,双手放在脑后,微微咧嘴一笑,说:“你会惊讶海明,如果你像他那样努力工作那么多年,你会知道多少。”我只是溜出了办公室!
每天只专注投资一小时,就能让你一生的产出翻倍。
智能准备就像复利,你投入越多,你能处理的情况越多,你学会怎么做,所以你能做的就越多,等等。每天只花一个小时学习新事物的好处是隐藏在众目睽睽之下的一颗被忽视的宝石。
这不是关于谁工作最努力,而是关于谁把有限的精力集中在正确的事情上。学习那些(1)变化缓慢,( 2)适用于各种情况的东西,可能比学习那些极其耗时、变化迅速且应用有限的东西更能利用时间。
海明把他的周五下午奉献给了“伟大的思想”留出时间思考是做大事的人的共同特征。这不仅有助于你有意识地生活,也有助于你摆脱混乱。我们其余的人都忙于细节,没有时间去问我们是否走对了方向。
把反对善意行为的建议看作是不真实的。谷歌的 20%时间被最终抛弃。只有大约 10%的谷歌员工在使用它。但是根据谷歌人力资源主管拉兹洛·博克在他的新书《工作规则》中的说法,只要的想法存在,那就没什么大不了的
容忍暧昧。
同时相信和不相信。你必须相信你工作的地方是业内最好的地方,和有能力改进。
我花了一段时间才发现模糊的重要性。大多数人喜欢相信某事是或不是真的。伟大的科学家非常能容忍歧义。他们相信这个理论足以继续前进;他们怀疑它足以注意到错误和过失,所以他们可以向前一步,创造新的替代理论。如果你相信太多,你永远不会注意到缺点;如果你怀疑太多,你就不会开始。它需要一个可爱的平衡。但是大多数伟大的科学家都很清楚为什么他们的理论是正确的,他们也很清楚有些轻微的不适应,他们不会忘记。达尔文在他的自传中写道,他发现有必要写下每一个似乎与他的信念相矛盾的证据,因为否则它们就会从他的脑海中消失。当你发现明显的缺陷时,你必须保持敏感,跟踪这些东西,留意如何解释它们,或者如何改变理论以适应它们。这些往往是伟大的贡献。伟大的贡献很少是通过多加一个小数位完成的。这归结为一种情感承诺。大多数伟大的科学家完全致力于他们的问题。那些不忠诚的人很少能做出杰出的、一流的作品。
如果你发现自己在责怪你的(精神)工具,做点什么吧。了解心智模型,了解工匠们如何谈论他们如何学习并在他们的工作中做得更好,更重要的是,获得所有权。前进需要改变,但改变本身并不意味着你在前进。正如苏格拉底所说,“未经审视的人生不值得过。”
克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工艺和工作的未来”为主题写作分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。为她报名(半定期)简讯 此处 。
有准备的头脑:我们当前的问题
为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

As production work and other jobs automate, the skills people need to stay relevant are becoming elusive.
我们目前的问题
几代人以来支持组织和加强美国劳动力的结构在各个领域都在逐渐削弱。我对大师级工匠以及他们如何掌握技艺的研究有助于将这个新的困境联系起来,并可能成为寻求初步解决方案的地方。
现在,把变化的速度、指数增长和不可逆转的灾难称为适应的必要催化剂已经是老生常谈了。我们都知道明天的工作将与今天的大不相同——我们只是认为明天将永远留在“明天”无论如何,在这些重复出现的报告之间,一个真正的新变化出现了——一方面创造了巨大的机会,另一方面阻止了员工利用它。
为了充分理解这一困境,我们需要了解它是如何形成的。支撑和延续美国悠久传统的三个主要结构正在弱化:教育;劳动力培训;传统的朝九晚五的工作,以及随之而来的对发展的设想。这些传统的衰落侵蚀了经济的不同领域。所有这三个领域都随着技术变革而磨损、扩散并融合在一起,产生了一个全新的问题:就业市场与劳动力的技能和需求不匹配。
根据全球咨询公司麦肯锡的说法,即将到来的工人向新职业的转移“可能是自 20 世纪初劳动力从农业转移以来从未见过的规模。”
这种动态让美国工人进退两难。就业报告不断显示新工作的爆发,但一系列面向未来的稳定机会对大多数人来说并不广泛。事实上,我的研究表明,那些在未来几年最能适应和茁壮成长的人,将是那些学会学习的人,以及像大师级工匠那样思考的人。然而,美国的晋升制度从来没有为这些要求做好准备。
稳定,那是什么?
前几代人可以期待一条结构化的、可预测的职业发展道路,这条道路可以持续他们的大部分甚至全部职业生涯。获得特定学位后,你被归类到当前的工作中,并在公司或行业内努力提升。不再是了。今天,一名员工的平均任期刚刚超过四年。越来越多的公司雇佣兼职或合同工。
在科技的推动下,音乐已经变得越来越主流。据估计从 2005 年到 2015 年,经济中增加的 94%的工作是临时的、合同的、独立的或自由职业的。最近的一项玛丽斯特/NPR 民意调查发现,大约 20%的美国人的工作是非传统的——这个数字在未来十年可能会上升到 50%。

Since 1995, the percentage of workers engaged in part-time or freelance work has almost doubled. Image Credit: Laura Zulliger
技能的半衰期
稳定还有另一个敌人:与特定职业相关的技能正以前所未有的速度过时。据估计,如今技能的“半衰期”约为 5 年,而且还在迅速缩短。随着每个工作职能越来越需要数字技能,员工将不得不更加频繁地更新和投资于他们的技能组合。因此,四年制学位的下降有利于有针对性的、灵活的学习选择。
随着多达 45%的工作活动通过现有技术实现自动化,员工面临着巨大的压力,他们要么用机器完成工作,速度更快,成本更低,要么决定彻底改变职业。培生,一家教育技术公司,估计今天 10 个工人中有 7 个从事到 2030 年不确定性增加的职业。在麦肯锡看来,工人向新职业的转移“可能是自 20 世纪初劳动力从农业转移以来从未有过的规模。”

On the one hand, the line worker building a car and replaced by a robot feels like their job has been stolen. On the other hand, every robot has to be designed, built, maintained, programmed, and updated. That new reality creates countless new opportunities — for those uniquely qualified to seek them out. Image Credit: LiveMint
雇主投资下降
常识告诉我们,发现这些趋势的组织会希望增加内部培训,以保持员工的相关性。有些是。像脸书、苹果、沃尔玛和集装箱商店这样的雇主只是少数几个在内部员工培训方面有显著做法的组织。其他如 General Assembly、galiled 和各种各样的编码训练营正在试验新的方法来培训员工的技能,以满足特定公司的新需求。
美国政府发布的最新年度参与度报告表明,90%的领导者认为能力建设是他们组织的十大优先事项;8%跟踪项目的投资回报;而且,四分之一的员工从培训中得不到任何东西。
内部培训项目越来越难找了。最近的一项研究发现,全美雇主付费培训下降了 28%。根据美国政府的另一项年度敬业度分析,90%的领导者认为能力建设是他们组织的十大优先事项;8%跟踪项目的投资回报;而且,四分之一的员工从培训中获得了任何东西。
培训机会的缺乏对低技能和教育程度较低的工人造成了不成比例的影响,他们最容易受到自动化的影响,而那些工人将从预先了解特定类型的培训将导致的结果中受益最多。但毫无疑问,缺乏技能提升不仅仅会影响制造业。这种困境将触及法律、医疗保健、精神病学、教育等各行各业。
投资错误的技能,错误的时间
对于我们大多数人来说,在一个我们所做的许多事情都被自动化的环境中,我们的生活和职业发展将需要不同的技能——特别是想象力和深度学习的能力。最近一份关于 2030 年职业的报告显示,80%的顶级职位需要创造力、对系统的理解和判断力。越来越明显的是,员工需要开始寻找他们自己的培训途径,如果不是直接创造他们想要的工作的话。
从 21 世纪初开始,美国就业市场进入了动荡的十年。从图中可以看出,在不同时期,消失的工作岗位比创造的多得多——最糟糕的是在 2008 年经济衰退后。自 2010 年以来,这些剧烈波动开始趋于平稳,导致今天对技术工人的需求上升。图片来源:新美洲和彭博
我们当前的系统不是为面对适应性挑战的即时有效性而构建的。根据乔治城大学教育和劳动力中心主任安东尼·卡尔内瓦莱博士的说法,美国每年在培训上的支出仅为 80 亿美元,而高等教育支出为 5000 亿美元,这使美国成为一个教育国家,而不是一个培训国家。
成人培训项目的效果参差不齐,常常令人失望。一个原因是,他们几乎总是在追逐一个问题,而不是阻止一个问题,这使他们显得格格不入,并被视为无关紧要。另一个原因是,即使我们知道我们尝试过的再培训工人的方法并不那么成功,但在组织内部或更广泛的社会范围内,几乎没有政治意愿认为“再培训”是一种解决方案。
当面对这一挑战时,我们往往选择简单的方法,或者选择我们熟悉的挑战,把棘手的问题留给下一次领导层的变动。一些最有前途的、创新的资格认证和成人学习方法——如“纳米学位”、虚拟和增强现实、替代 MBA 项目、编码训练营和 MOOCs(大规模开放在线课程)——吸引了已经精通数字技术或受过高等教育的人。换句话说,在为未来的工作对员工进行再培训方面,有很多有效的方法。对于中低技能的成年雇员来说,提高技能的挑战尤其严峻。这一群体很少得到雇主的支持,在前进、跟上市场趋势和寻找机会方面面临许多障碍。因此,他们必须靠自己驾驭这个领域,尽管他们的资金缓冲、时间安排的灵活性、核心技能以及对追求新技能培训回报的信念都很少。
不稳定的中产阶级
市场任何部分的波动对中低收入人群的打击最大,使他们面临最大的贫困风险。在美联储最近的一份报告中,研究人员发现,数百万家庭经历了明显的逐月薪酬波动。我们很多人已经在那里了。报告数据显示,40%的家庭没有应急储蓄,44%的受访成年人表示,如果不卖东西或借钱,他们无法支付 400 美元的应急费用。
如上所述,长期支撑经济的支持结构(如教育、朝九晚五的工作日和劳动力培训)没有跟上工作性质的变化。随着越来越多的员工选择独立工作,以及传统就业中人员流动的增加,许多人的安全网仍然建立在雇主提供的福利上。工人们努力寻找负担得起的医疗保健,开设退休账户,许多人完全没有残疾或失业保险。
背负着这种经济不稳定的工人几乎没有时间考虑自我发展。为了学习而放弃收入是不可能的。他们可能没有多少积蓄来投资创办小企业、进行不确定的求职或投资职业重心。令人遗憾的是,抓住这种机会很快就成了提升个人职业前景的方式。
关注差距:教育
世界经济论坛预测,今天进入小学的 65%以上的 T4 儿童最终将从事今天甚至不存在的工作。学校是如何为这样的世界培养明天的成年人的?
在 2016 年的一项调查中,44%的成年人表示,如果不卖东西或借钱,他们无法支付 400 美元的紧急费用。
我们的基础摇摇欲坠。劳工经济学家最近的一项研究发现"每千名工人中多一个机器人,就业与人口的比率就会降低约 0.18-0.34 个百分点,工资也会降低 0.25-0.5 个百分点。“尽管学生们对自己的前景很乐观,对自己的能力很有信心,但大多数雇主发现应届大学毕业生对就业准备不足。约三分之一的受访者表示,对培训和教育的发展速度不足以满足 2026 年的需求没有信心。一些最悲观的答案来自一些最受尊敬的技术分析师。一个主要的担忧仍然是员工在现实世界中应用知识、批判性思维和沟通的能力。这些只是被认为越来越重要的“软技能”中的一小部分。
专注于培养人工智能(AI)和机器似乎无法复制的独特人类技能:许多专家在回答中讨论了他们认为机器和自动化可能无法复制的人类才能,并指出这些应该是教育和培训计划开发和培养的技能,以准备人们成功地与人工智能一起工作。在一个日益活跃的经济中,大多数学校继续一如既往地教学:学生们在自己的课桌前独立工作,而不是合作进行创造性的项目。
该研究的受访者认为,未来的员工将学会深入培养和利用个人创造力、协作活动、抽象和系统思维、复杂沟通以及在不同环境中茁壮成长的能力。
在 2017 年出版的一本名为“防机器人:人工智能时代的高等教育”的书中,东北大学校长约瑟夫·e·奥恩(Joseph E. Aoun)要求大学改革他们的整个教育方法。他举例说明了一个名为“人类学”的新学科,他认为这将有助于学生为与自动化机器并存的工作做好准备。人学研究将强调三个核心技能:数据素养、技术素养和人文素养。Aoun 还呼吁更多的经验和应用学习,包括定期实习和工作经验。
如果 Aoun 是对的,学校应该走多远?投资于编码和计算机科学技能可能是谨慎的,但由于我们无法计划即将到来的变化,但我们可以为变化本身做好准备。如果学校调整他们的课程来强调计算机或 IT 技能,而计算机本身在这么短的时间内完成这些工作,这些技能不会过时吗?时机和相关性当然是大问题。但教育需要持续一生,而不是针对某项工作或某项特定技术的半衰期。换句话说,成年工人应该接受与年轻人在小学接受的同样深入的学习。
如果在我们的余生中,你看不到自己在做什么,你将永远不会进步。
为了让这种改变真正发挥作用,这些小学学习必须真正深入,并培养变革和创新的能力。但是在强调标准化考试的小学里,失败通常被认为是不可接受的,这阻碍了创新思维。《从我们的头脑中走出 T4:学会创新》和其他关于教育改革书籍的作者肯·罗宾逊爵士说,目前的体系是为了“教育 T2 人,让他们失去创造力”。“如果你没有做好犯错的准备,”他在 2006 年的一次 TED 演讲中说,“你永远也不会有任何创新。”这种情绪得到了美国最后一位旋转木马工匠阿特·里奇的呼应,他说“如果你在有生之年看不到自己在做什么,你就永远不会进步。”令人惊讶的是,一些对教育现状最直言不讳的批评者是教师自己。不管怎样,我们的学校继续把课桌整齐地排成一排,分发基于记忆的工作表,强调学生是一个要被填满的空容器,而不是一个完整的、有洞察力的、有创造力的人。
注意差距:企业家精神
随着技术继续以这样或那样的方式进行创造性破坏,并不是每个人都需要成为企业家才能获得成功。然而,他们需要有企业家精神。我们刚刚描述的经济中的动荡变化将需要更多的人自我导向,寻找他们自己的机会,并通过这些机会规划他们自己的道路。职业社交网站 LinkedIn 的创始人雷德·霍夫曼称这种必要的心态为“你的创业”
对于记忆教育和组织一致性的制度化思维来说,美国的超独立性感觉像一个遥远的神话,但钟摆正在摆回来。麦肯锡的苏珊·伦德说:“朝九晚五的工作是一种历史怪癖。”。“1900 年,45%的美国人是个体经营者。如今,随着优步、TaskRabbit 和 Airbnb 等新的就业和财富创造平台的崛起,我们似乎正在回归这种状态。”
未来十年,老年人在劳动力中的比例不断上升,这带来了双重挑战:随着技能越来越快地过时,越来越多的成年工人需要再培训。但大多数再培训项目仍未证明有效。

Image Credit: NY public library
尽管有许多文章写道,美国经济正在转向(或似乎回归)创业未来,但趋势与美国工人的偏好之间存在脱节。一份经济创新集团(EIG) 的报告发现,实际上,创业数量、寻找工作机会的人数以及换工作的人数都在下降。
EIG 将这种现象称为“经济活力”的消退,它影响了多种人口统计数据。EIG 联合创始人约翰·莱蒂耶里表示,就连千禧一代似乎也不愿意冒险,“他们将成为历史上最缺乏创业精神的一代”。在美国参议院 2016 年的一项民意调查中,千禧一代压倒性地回答说,创业对经济至关重要,他们认为在初创公司工作的人是成功的。然而,当被问及获得成功的最佳途径时,大多数人选择了在一家公司就业,并以此作为最佳选择。这种保守的偏好并非巧合。与前几代人相比,千禧一代背负着更多的学生债务,面临着不断上涨的住房成本,对未来的信心也更少。
在关于未来工作的政策辩论中,专家们强调机会、培训和技能。他们划分,因此很少提及金融稳定,人们需要探索这些机会。
没有人怀疑我们所处的局势是复杂和棘手的。员工不愿意冒险的原因有很多,但也有可能的是,如果他们负担得起,并且对自己的未来有足够的心理安全感,他们中的很多人会变得更大胆。很少有人把这个问题联系起来。
在政策讨论中,这些相互冲突的趋势——职业不稳定和收入波动——继续被视为完全独立和不相关的。关于未来工作的对话强调机会、培训和技能;与此同时,人们探索这些机会所需的金融稳定性却很少被提及。
如今的就业市场充斥着这些非常危险的坑坑洼洼,可以总结如下:
工作不那么确定和结构化
技能更快地失去相关性
工资变得非常不稳定
雇主提供较少的福利、培训和职业发展援助
传统的安全网不适合工人面临的混乱和不稳定的根源。
未来的工匠和女工匠
从所有这些竞争趋势中可以明显看出,在未来的世界中,追求风险和拥抱惊喜可能是最安全的路线。要让更多的人愿意与这种不确定性共舞,就必须打下更坚实的基础。此外,教育需要通过基于模拟的学习优先考虑个人的创造力、适应性和创业精神;重新投资于在职培训,而不仅仅是课堂或在线学习;更新安全网,为人们提供承担风险的稳定性、时间和资源。
当我们等待我们的政治领导人赶上这一现实时,个人可以带头超越自己。事实上,对于经济下滑的支撑结构来说,鼓舞人心的局外人已经存在——而且人们正在寻找的工作并不都是高科技。自动化的好处是真实的(如果过去的趋势保持不变,自动化将产生和它淘汰的一样多的新工作),但是有很多人在电脑屏幕之外寻找生活和有趣的工作。许多消费者都在寻找像工匠大师一样思考的企业家制造的产品。
保持手工在线

Charles & Hudson / Flickr / Creative Commons
2010 年,Etsy 联合创始人兼首席营销官马特·斯汀奇科姆(Matt Stinchcomb)成功完成了一件看似不可能的事情:他和他的合作伙伴从快乐、生态和更紧密联系的角度出发,而不仅仅是从经济角度出发,提出了一个创建持久企业的想法。最初是一个购买手工制品的市场,现已成为一个建立更紧密联系的人类规模经济的平台。然而,到 2010 年,他发现自己对自己的工作不再抱有幻想。
寻找我们内心的指南针。 Matt 搬到柏林住了几年,负责管理他们的国际业务。他的商业伙伴离开了,公司任命了新的首席执行官 Chad。乍得要求马特接管营销,再次。“我讨厌它。我对电子邮件打开率不太感兴趣,我更感兴趣的是我们可以通过该平台建立的真实联系,从营销的角度来看,这很难量化。”
“我儿子的出生让我开始质疑自己这辈子到底在做什么。我们和 Etsy 一起做了很多伟大的事情,但我知道我需要做一些服务来让这个世界变得更好。我考虑竞选公职,经营一家非营利组织……我探索了恐惧让我无法融合自己和我的企业的一些方式,我提出了一个建议,说‘如果我们真的想成为影响的引擎,就需要有人负责管理 it。不是某个人的工作。"
我们的内在指引将我们锚定在哪里。它包括目的、原则、激励、道德、个性、动机、身份、价值观、信仰、背景和使命。这些元素是你身份的核心。它们提供意义、动力、注意力和方向。你的身份塑造了你的作品。
创建我们自己的地图。 Matt 想更深入地思考,我们如何将业务作为影响的引擎,并在整个公司内开展工作,不仅为每个人提供工具,还为系统中的每个人提供最大化利益的愿望——他想精心打造业务。
2015 年,Etsy.com 上市,马特看到了一个向不同实体预捐赠股票的机会。首席执行官让马特负责新企业的战略,这导致了 Etsy.org(后来的好工作研究所)。马特利用空间和风险来重新想象商业是如何实践和教授的。他认为有必要“改变我们的教学内容、教学方式、教师和学生……我在所有那些营销书籍中读到的东西实际上并没有什么帮助。这是我在佛教书籍中读到的东西,或者是永恒的书籍,或者只是我从做中学到的东西。”
恐惧让马特不敢拥抱风险。“我总是喜欢思考这样一个观点,即一切照旧正在毁灭世界。不寻常的业务可以拯救世界。”由于没有受过正规的商业教育,他在提出替代方案时感觉自己像个骗子。最终,当他朝着不同的方向前进时,他愿意被误解和挑战。
“恐惧并不在于你不是一个有直觉的人。害怕的是你实际上听从了你的直觉。我个人的感觉是脱离了自然,脱离了社区。这就是最初让我开始探索佛教的原因。我探索的越多,我就越不愿意处于这种分离的状态。我必须克服这些恐惧,才能将这两件事联系起来。”
我们构建的工具、技能和能力,通过使我们的体验变得可行来帮助我们。它们包括想法、概念、模型、方程式、理论、类别、启发法、图表、计划、配方、标准、准则和原型。理解抽象需要想象力。这些元素帮助你组织你的理解和保存知识。
行走疆土。对 Matt 来说,成功的关键是一些由来已久但经常被遗忘的基本原则:与特定问题(或媒介)的深层联系、对自己创造力的信心、通过试错进行自我管理,以及在工作中不断调整和学习的能力。以类似的方式,无数有创造力的企业家使用 Etsy 和 Ebay 等服务来创建,然后扩展他们的业务。
我们拥有的经验,我们应用的知识,帮助我们到达我们想去的地方。它包括悟性、诀窍、实用性、技能、理解力、感觉、本能、技术、方法和外表。所有的技能,即使是最抽象的,都是从身体练习开始的。有了这些基本原则,你就能在你的创造性媒介中体验和塑造品质,从而产生结果。

photo by Franco Vogt
Matt 能够静下心来倾听一个他觉得自己可以关注的问题。在他的职业生涯中,Matt 发现了一个问题,即商业不寻常,他正从多个角度看待这个问题。他经历过这个问题,首先是作为 CMO 和 Etsy 的联合创始人,其次是领导 Etsy 的基金会,最近是他的最新企业 Good Work Institute。没有死角。我们的工作经历就像波浪,让我们越来越接近一个我们迫切需要解决的问题。通过挖掘他内心的指南针,创建他自己的地图,并在这个领域中行走, 好工作协会 进行着一些不同于平常业务的事情。
自动化世界中的人类技能
从主持葬礼、评估法律案件规则、协助手术和艳舞机器人无所不为,很容易就能感觉到每个人都即将被取代。然而,无论是现在还是在可预见的未来,技术都有明显的局限性。
自动化的趋势是把事情做得更便宜、更小。因此,机器擅长处理数据和执行日常任务。然而,他们缺乏人类固有的特质,如幽默、同理心、社交能力、沟通、领导和激励他人。机器在一系列其他品质方面也不是特别好,这些品质通常被认为是工艺,预计对工艺的需求也会越来越大。这些包括深厚的专业知识、创造力、艺术性、适应性和导致创新的个人创造力。工匠大师致力于提高标准。
对于今天的员工来说,怎样才能消除恐惧,将威胁转化为机遇?迈出第一步需要心态的转变——将技术不仅仅视为必须操作的机器,而是必须掌握的挑战。而且更进一步,机器正在解决的问题需要对工人有很大的吸引力,因此在任何情况下解决它的强迫性和驱动力都有助于我们坚持解决最棘手的问题,使任何帮助工人的技术成为实现更大目标的手段。人们所关注的问题,如果是适合他们解决的问题,就会成为他们个人表达的媒介——就像工匠大师处理木头或石头的特性一样。
西门子美国公司的学徒们提供了一个例子,他们解释说他们的目标不仅仅是“按下按钮”的“机器操作员”相反,他们希望学会成为真正的“机械师”——能够理解大局、给机器编程、解决问题、运用判断力,并准确理解他们的编程将如何影响生产的员工。这种端到端的视角让我们回到了过去的手工工艺,并摆脱了那种让工人与机器竞争、以更低成本完成工作的生产线专业化。端到端的思考需要开放性、洞察力、自我管理以及寻求和发现问题的能力。
作为一名制造业工人,学会像工匠一样思考可以应用于亚马逊、沃尔玛和其他公司的仓库工人。故事并没有就此结束。随着技术的进步和工作性质的改变,学徒和工匠师傅都需要不断发展,承担风险,重新学习和适应。但是太多的人不会,除非我们现在就开始改变我们的教育、工作场所培训和员工支持系统。
克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工作的未来需要手艺”为题写作。分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。报名参加她的(半定期)简讯 这里 。
有准备的头脑:像工匠一样训练头脑的 7 步指南
为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

Photo credit: Unsplash
我们对某件事的感觉激发了参与,这导致我们发展对某件事的感觉的能力。感觉也有助于复杂化和情绪化。
生活的皱纹让我们变得情绪化。这一点在我们学习新东西的时候尤为突出。
我们不喜欢承认这一点,但我们都是感性的存在。目标不是克服情绪。目标是管理他们,让他们为你工作。当我们寻求中立,避免高点和低点时,稳定就会出现,无论发生什么,无论外部事件有多大波动。
工匠和妇女在他们的实践中理解管理感情意味着什么,因为他们对自己的工作有了感觉。当他们从事他们的工作并与他们的媒介和谐相处时,他们享受许多人所说的冥想状态。时间变慢了。之前不存在的选择突然出现。
这是一种没有极端情绪的平静。
以下是你可以达到这种状态的 7 个步骤,这样你就可以专注于学会学好,而不是对抗焦虑、沮丧或厌倦,当学习新东西时,这些焦虑、沮丧或厌倦不可避免地伴随着重复。工匠学会将这些情绪演变成一种警觉的、经过实践的预期技能
第一步:找到平静
“只要你愿意,你就有能力退出。内心的完美宁静在于头脑的良好秩序,即你自己的领域。”——马可·奥勒留,沉思
1949 年的一场火灾从根本上改变了我们灭火的方式。除了一个更有经验的工头道奇,其他人都逃离了火场,他却跑进了火场。
那需要勇气。
像道奇一样,我们必须为现实做好准备
稳定我们的神经,这样当独特的问题出现时,我们可以创造性地运用我们的能力。
第二步:控制自己的情绪,找到工作的感觉
在所有重要的自我认知中,理解你如何学习是最容易获得的――彼得·德鲁克,管理自己
尽管飞行员以飞行为生,他们还是会被焦虑所克服。同样的道理也适用于急救人员、急救人员、赛车手和宇航员。其实这些职业都是训练出来不慌的。
当我们犯了错误或者事情没有按照计划进行时,我们经常会放弃我们深思熟虑的计划,转而采用老式的崩溃方式。
当我们积极管理我们的感觉时,我们承认它们是存在的,但可以被挑战和引导。只有这样,我们才能回到为我们的工作培养感觉的事情上来。
第三步:获得视角
“客观思考的能力就是理性;理性背后的情感态度是谦逊的态度。客观地使用一个人的理性,只有当一个人获得了谦卑的态度,当一个人从孩提时代拥有的全知全能的梦想中走出来,才是可能的。爱情依赖于自恋的相对缺失,需要谦逊、客观和理性的发展。我必须试着看到我对一个人的描述和他的行为之间的区别,因为它是自恋的扭曲,以及这个人的现实存在,而不管我的兴趣、需要和恐惧。”――埃里希·弗洛姆,爱的艺术
我们的第一反应从来都不是我们的错。它们只是我们的反应。
有时在几分钟内,有时更长,当情况本身没有改变时,感知发生了变化,但是我们对情况的理解发生了变化。事实没有改变,但我们的背景变了。
随着我们理解的改变,是时候质疑我们最初的反应,我们爬行动物的冲动了。这需要力量,是必须不断发展的肌肉。
第四步:看清现实,但不要抱得太紧
想象是对抗现实的唯一武器――刘易斯·卡罗尔,爱丽丝梦游仙境
工匠和妇女们在他们面前与“现状”一起工作,而不是“歪曲事实”粘土可能太干了。木头可能是湿的。怎么办?如何补救这些情况?
为了学习,我们必须稍微脱离现实。我们将问题抽象化以简化它们,并在这样做的过程中,激发我们的想象力。
通过想象什么可能与什么相对,我们失去了对细节的直接体验或感觉。失去这种接近现实的能力会激发我们的创造力,寻找新的解决方案。
我们可以为任何阻挡我们的东西做这件事
事实上,事情是真实的,但是有足够的灵活性去面对可能的现实。
第五步:寻求失败之间的张力&成名
“让困难改变你。它会的。以我的经验来看,我们只是在学习如何不逃跑方面需要帮助。”–Pema CHD rn
值得注意的是,我们选择如何看待事物。这意味着我们必须限制和扩大我们的视角,只要有助于我们保持中立的感觉,以获得我们工作的感觉。
不要与否认我们对表现不佳的焦虑的“假装直到我们成功”相混淆,这是一种选择性编辑的形式,目的是为了正确地将我们自己定位于手头的任务。
第六步:露面
灵感是存在的,但它必须找到你的工作巴勃罗·毕加索
日复一日,找到一种方式去爱这份苦差事。拥抱你工作的连续性,注意到许多小的、渐进的改进随着时间的推移会累积成实质性的变化。这导致了“好的改变”
在困难的时候出现需要勇气、长远的眼光和毅力。实现你心中的愿景需要努力。
第七步:寻找&发现问题
对确定性的追求阻碍了对意义的探索。不确定性正是促使人类展现其能力的条件。–埃里克·弗洛姆
只有当你出现在你选择努力工作的地方,你才能开始接受预见错误并在错误发生前阻止它们的训练。
与工艺一起工作需要解决手头问题的独特态度和能力,还需要发现新问题的智慧视野和洞察力。看到缺少的东西涉及到巧思的运用。
稳定性为我们提供了将所有类型的组织视为机器的条件。这种想法使我们能够以可预测性、可靠性、效率和生产力的确定性前进。我们更新、复制、扩展并拥有它们。我们认为组织是由部分组成的,并致力于使它们的运营成本更低。
这种模式行得通,直到行不通。自然资源是有限的。人们会精疲力尽。市场变得过度饱和。
考虑到我们被迫考虑的变化量,这种方法的缺陷是我们对问题的看法仍然是预先定义的。但是越来越多的人相信商业是独立的机器。它是一个活生生的、会呼吸的人的网络,与支持网络互动,处理持续的、适应性的危机。这要求我们在巨大的不确定性面前继续前进。
一切照旧,依赖稀缺资源,是一条死路。这意味着商业作为不寻常一开始会感觉不自然。我们甚至需要新的词语来描述它。我们需要重新定义在一个组织中领导或工作的含义。
我们必须为自己创造一个坚实的基础,使我们能够质疑我们今天所看到的限制,抓住机遇,迎接挑战。像工匠一样,我们需要创造新的工具来解决出现的问题。
我们必须学会随机应变,因为对于我们今天遇到的危机,没有手册或卓越运营部门。
每个人都会遭受挫折:受伤、不合时宜的手术、家人去世、没有得到的晋升。
每个人都有梦想:你想写的书,你想开始的生意,你想追求的工作。
没有死角。
我们最痛苦或最持久的经历,我们未完成的项目都是假设。它们回答了最初的“如果……会怎样”的问题,可以用在你的下一个实验中。
翻转你的视角——看穿消极、痛苦、可感知的失败——转向机遇和学习会带来更多的机遇、解决方案和创造性思维。
回到你所知道的,加倍旧的方法——很少给你提供更多的选择。也许有时候。但是现在呢?不再是了。
去,尝试不同的东西。尝试一些特别的东西。
如果你发现自己在责怪你的(精神)工具,做点什么吧。了解心智模型,了解工匠如何谈论他们如何学习并更好地做他们的工作,更重要的是,掌握所有权。前进需要改变,但改变本身并不意味着你在前进。正如苏格拉底所说,“未经审视的人生不值得过。”
克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工艺和工作的未来”为主题写作分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。报名她的(半定期)简讯 这里 。
隐私惊喜
我是如何利用数据科学(几乎)暴露他人的私生活的

Photo by Orlando Leon on Unsplash
我的数据科学之旅始于一个简单的问题:
当我们的一辆车从 A 点出发前往 B 点时,我们可以预测什么?
那时,我在一家公司工作,该公司生产基于网络的车队管理解决方案,主要针对重型卡车车队。支持数据库有丰富的信息,所以,很可能,有一些东西可以用来预测一些有用的,不管那是什么。为什么不挖掘数据,为我们的客户提供一些有用的信息?
回答这个问题被证明是一个棘手的问题,但是,谢天谢地,公司给了我解决这个问题的方法。我不仅可以接触到所有的数据,有时间去探索它,有时间去学习新的算法,还有一个有着好奇想法的同事的帮助。他会定期挑战我的假设,这帮助我推进解决方案。
从 A 到 B
在一些错误的开始之后,我意识到需要回答的第一个问题是,我所说的位置 A 和 B 是什么意思?从概念上讲,答案似乎很明显,但却很难确定。我需要用经纬度测量的精确位置吗?围绕这样一个点的环形缓冲区?如果是,我应该使用什么半径?那么,我从哪里获取位置,以什么样的粒度?
经过一番研究,这些问题的答案变得相当清楚了。通过一种方法,我能够回答两个问题:如何表示位置,以及如何从收集的数据中选择位置。缺少的要素是一种基于密度的聚类算法,名为 DBSCAN。通过对每个车辆停靠点位置使用这种聚类算法,我能够确定每个车队最受欢迎的停留点。在聚类检测之后,我在聚类点周围创建了一个多边形地理围栏,作为后验筛查的聚类判别函数。你可以在这里找到这个方法论的图解。
节点、边、图形
确定停靠点是构建行程图的第一步。每个停靠点对应一个图节点,边是它们之间的车辆行程。一旦检测到节点,通过修补单个行程(定义为停靠点之间的不同移动周期)来自然地计算图的边。
您可以想象这样的图表所传达的丰富信息,从频率统计到变量的分布,如燃料消耗、距离和任意两个停靠点之间的旅程持续时间。然而,在继续构建行程图之前,我需要确保聚类算法在卡车司机应该停车的区域生成合理的聚类。
停止质量
为了评估检测到的停靠点位置的质量,我选择了一个特定的客户车队,聚集了一年的行程数据,计算了所有的地理围栏,并在交互式地图上绘制了它们。果然,通常的嫌疑人开始出现:加油站,高速公路休息区,餐馆,工业和物流园区,边境管制,火车站,港口,所有这些都突然出现,变得可见。有些有些问题,但大多数都没有。
因此,我将注意力转向不太明显的停止位置,试图找到算法表现不佳的情况。经过一番搜索,我找到了一个我无法解释的探测到的停车点。
窥探的目光
可疑地点相对较小,位于一个偏僻的地方。那个特定位置的地图信息是不存在的——麦田中间的一条简单的道路。幸运的是,谷歌街景图像可用于该特定位置,但最近获得的图像显示了我期望看到的:没有任何有趣的东西。
这可能是我正在寻找的算法错误吗?我转向数据库,开始查询关于在那个集群上结束的旅行的所有数据。令我惊讶的是,我发现司机会在一个不知名的地方停车 30 到 40 分钟,这些停车时间的分布有一个小的方差。他们究竟在那里做什么?
硬币掉落
嗯,你现在可能已经想明白了。这些司机正在参加我后来称之为“路边娱乐”的活动。
当硬币最终落在我身上时,我惊呆了。这并不是因为我目睹了世界上最古老的职业之一(有人说间谍是最古老的职业)的数据轨迹,而是因为稍加努力,我就可以将一个司机的名字与这些数据点联系起来。通过一个相对简单的数据科学练习和正确的(或错误的)数据,我可以接触到其他人的私生活。我认为这种未经授权的访问是错误的。
我很快放弃了这个想法,继续构建行程图。出行图成为许多激动人心的数据科学产品的数据基础,从出行异常检测到目的地预测。
然而,我永远不会忘记在意识到简单数据分析的力量后,我体验到的敬畏感和恐惧感。我对一个简单的数据分析所能释放出的力量感到敬畏,担心这种力量会被用在我身上,或者被用来对付我。
我现在坚信,数据科学界必须积极推广隐私最佳实践,还必须保持警惕,以防止无意中使用分析来揭示必须保持隐私的东西:我们的个人生活。不管怎样。
没有上下文的工具箱问题
数据科学培训中社会科学的不相容性
当计算机还是一个新事物,我们还没有让它在日常生活中负担过重的时候,就有一场关于它的潜在未来的辩论。这不是一个瞬间,而是一系列的会议、委员会、项目、文件和组织。一方面是计算机科学运动、结构化编程、程序制作,以及我们现在教授的一切(尽管有努力帮助,但大部分都很糟糕)。另一方最好的代表是彼得·诺尔,他说:
与大多数极力捍卫(和争论)特定语言特性的同事相反,Peter 将他的努力放在了元考虑上。
这句话也很好地总结了数据科学、信息科学和计算目前的困境。学术项目为包括什么技术、教授什么类型的统计学、包括什么语言而苦恼不已;然而,我发现大多数项目(包括我自己的项目和我的博士项目)都倾向于将所有元考虑因素放在一门课程上——社会科学课程。
我将要教授的课程。在这学期的课程中,我会写下这个过程,希望我会发现更多的无能为力和沮丧。这个条目关注于关于编程本身的位置的元考虑。
在与 Naur 作为编程目的的元考虑的最初存在相关的编程中似乎存在不匹配。他概述了编程的理论构建观点:
- “拥有程序理论的程序员可以解释解决方案如何与它帮助处理的世界事务相关联。”
- 拥有程序理论的程序员可以解释为什么程序的每一部分是这样的,换句话说,他能够用某种理由来支持实际的程序文本
- 拥有程序理论的程序员能够对任何修改程序的要求做出建设性的反应,从而以一种新的方式支持世界事务。
在这种编程的概念化中,程序员/编程团队构建了一个程序,不是因为它方便,而是因为他们有一个世界理论,通过这个理论,计算机程序可以有所帮助。可悲的是,这种对计算机科学的观点很快被结构化方法所淹没。
在这种方法中,最大限度地降低性价比是首要考虑因素。换句话说,我们寻求构建成本尽可能低的项目,以获得最大的利益…无论是谁资助的。在这种方法的支持下,我们已经非常有效地组织了计算中的复杂性,但这种组织的大部分是隐藏的,除了结果之外,几乎没有什么可讨论的。对于寻求提供“数据科学”或“信息科学”或“分析”课程的学术课程,这些课程将提供的大部分教学形式如下:
- 教授生产是如何运作的。
- 教授如何成为制作团队的一员。
- 为学生提供尽可能多的当前(或接近当前)工具来完成上述两项(例如,机器学习技术、当前编程语言、当前统计趋势等)。
因此,我们倾向于程序生产和基于团队的生产,使用内部为程序创建的方法,以最大限度地获得回报。从本质上讲,实际的考虑而不是理论的考虑已经占据了主导地位。考虑到围绕这项技术诞生和传播的事件本身,这并不令人惊讶。
然而,这种发展的结果是,任何学术程序都反映了计算文化的这些方面,由此产生的生产和理论的鸿沟只会扩大到所有那些不是行业一部分的人只能对这种程序的后果进行理论化的程度。

By the time many of us are done in our data science program, we have a well-formed toolbox with outlines for as many tools as we can fit inside of 2–6 years of courses. We can build IKEA furniture and replicate that process if pressed, but rarely can we say that we have the ability to build our own with our abilities. To say that social science is necessary is a difficult hypothesis to prove because it has not been necessary and many in the field now will never need it to do their work.
发生这种情况并不奇怪。快速增长并不是一个广为人知的深谋远虑的理由。然而,我们正处在一个十字路口,需要重新考虑编程作为理论构建/结构化编程的前景。本质上,我们实际上已经把自己编程到一个角落,而不是找出一个解决方案,我们只是开始朝着另一个角落的另一个方向画,就像乒乓球游戏中的球一样。
重新考虑是必要的,因为这不是所有考虑计算的人共有的内部问题,而是交叉性和混杂性的问题。在作为理论构建的编程中,哲学、社会和文化方面的考虑将是编程的一个特征,而不是与不可知的计算机程序的传播作斗争。那些哲学上的考虑将成为所有工具制造课程的一部分,而不是专注于计算的学生去上“社会科学课程”。
这些方法之间的鸿沟如此之大,似乎无法跨越。相反,我们专注于促进“小胜利”如果我们能够以某种方式创造一系列课堂教学,促进偶尔拉动价值杠杆,这就是一个胜利。这是一个令人失望的妥协,因为这项活动很快就占据了日常生活的大部分。
然而在社会科学中,也没有答案。虽然有将这个对象纳入分析的趋势,但是大多数社会科学对计算的讨论在上面概述的上下文中是没有用的。如果我要对作为理论构建/结构化编程的编程之间的鸿沟提出任何意见,那就是前者没有流行起来,因为它要求社会科学放弃他们过分热衷的对人类作为唯一能够基于意志行动的代理人的偏爱。
结果就是教“社会科学”课就是讲课、阅读、理论,学生作业会被各方视为浪费。项目、项目经理和课程开发人员将尽最大努力提供等同于“小胜利”的素材,以努力吸引能尽快和尽可能有利地填补团队空缺的学生。甚至在我执导的节目中,我也这样做过。
当我看到学生要求他们写更多的代码,而不是写研究论文或在更广泛的全球背景下考虑他们的工作时,我很生气。但是最终,如果我强迫学生们写更多的研究,学生们会找到另一个项目,一个让他们只的项目,只只学习更多工具如何工作的项目。这些都存在,其中许多甚至不需要注册就可以使用。因此,在很久以前创建的结构化编程空间的影响下,我作为一个程序参与竞争的能力是微弱的。
因此,当我准备在一个面对面的项目中教授“社会科学”课程时(我自己的项目只在网上),我想知道一些技巧,一些我能做的无形的、系统的事情,当我努力纠正一个本身是无形的、系统的问题时,学生们不会注意到。我想知道如何纠正或修复社会科学问题,以便让学生以一种方式看待世界,包括批评他们的工具箱,批评他们通过编程教育学的挫折和陷阱学习的工具。
消失梯度的问题
使用基于梯度的优化方法训练深度神经网络时会出现消失梯度。这是由于用于训练神经网络的反向传播算法的性质造成的。
这篇博客将涵盖哪些内容?
- 解释消失渐变的问题:我们会明白为什么会存在消失渐变的问题。我们还将研究为什么这个问题在使用 sigmoid 激活函数时更容易观察到,以及 RELU 如何减少这个问题。
- 使用 TensorFlow 的比较研究:我们将使用 sigmoid 和 RELU 激活函数在时尚 MNIST 数据集上训练 MLP 分类器,并比较梯度。
在我们能够理解为什么消失梯度的问题存在之前,我们应该对反向传播算法的方程有一些理解。我将不推导反向传播方程,因为它超出了本文的范围。不过我附了一本著名的书的截图。
反向传播算法

Source: http://neuralnetworksanddeeplearning.com/chap2.html
观察:
- 从等式 1 和 2 可以看出,输出层中的误差取决于激活函数的导数。
- 从等式 2 中,我们可以观察到在前/隐藏层中的误差与权重、来自外层的误差以及激活函数的导数成比例。来自外层的误差又取决于其层的激活函数的导数。
- 从等式 1、2 和 4 中,我们可以得出结论,任何层的权重梯度都取决于激活层的导数的乘积。
渐变消失的问题是什么?
考虑 sigmoid 函数及其导数的图形。观察到对于 sigmoid 函数的非常大的值,导数取非常低的值。如果神经网络有许多隐藏层,随着我们乘以每层的导数,早期层中的梯度将变得非常低。结果,早期层的学习变得非常慢。

Source: https://codeodysseys.com/posts/gradient-calculation/
另一方面,RELU 函数的导数要么为零,要么为 1。即使我们将许多层的导数相乘,也不会出现与 sigmoid 函数不同的退化(假设 RELU 不在死区中工作)。然而,如果仔细观察等式 2,误差信号也取决于网络的权重。如果网络的权重总是小于零,梯度会慢慢减小。

Source: https://mc.ai/comparison-of-activation-functions-for-deep-neural-networks/
现在我们已经理解了消失梯度的问题,让我们训练两个不同的 MLP 分类器,一个使用 sigmoid,另一个使用 RELU 激活函数。
让我们开始吧。
导入库
import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt
from tqdm import tqdm
下载数据集
我们将使用时尚 MNIST 数据集。它由 10 个不同产品类别的 70000 幅灰度图像组成。每个产品类别有 7000 个样本。你可以在这里阅读更多关于数据集的信息。
我们将使用 Keras 下载时尚 MNIST 数据集。
fashion_mnist = keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)(60000,28,28)
(60000,)
(10000,28,28)
(10000,)
预处理
因为我们将使用 MLP 分类器,我们需要将 28*28 的灰度图像展平为 784 长的矢量。
x_train = x_train.reshape(60000,-1)
x_test = x_test.reshape(10000,-1)
图像的像素值介于 0 和 1 之间。我们将定义一个函数,通过移除平均值并缩放到单位方差来标准化数据集。
def normalize(x_train, x_test):
train_mean = np.mean(x_train)
train_std = np.mean(x_train)
x_train = (x_train - train_mean)/train_std
x_test = (x_test - train_mean)/train_std
return x_train, x_test
产品类别从 0 到 9 进行标记。我们将定义一个实用程序来将这些值转换成一个热编码。
def convert_to_one_hot(labels):
no_samples = labels.shape[0]
n_classes = np.max(labels) + 1
one_hot = np.zeros((no_samples, n_classes))
one_hot[np.arange(no_samples),labels.ravel()] = 1
return one_hot
接下来,我们通过将原始值传递给上面定义的效用函数来预处理数据集。
x_train, x_test = normalize(x_train, x_test)
y_train = convert_to_one_hot(y_train)
y_test = convert_to_one_hot(y_test)
MLP 分类器
我们将使用张量流训练一个 MLP 分类器。我们将创建一个包括输入层和输出层的 6 层网络。我们将训练两个不同的模型,一个使用 sigmoid 激活函数,另一个使用 RELU 激活函数。在反向传播算法的每次迭代中,我们将存储关于每层权重的损失梯度。最后,通过一些可视化,我们将比较
- 最终层相对于早期层的梯度
- sigmoid 激活函数与 RELU 激活函数的梯度
让我们建立模型。
定义占位符
首先,我们定义输入和目标的占位符。
def get_placeholders(input_size, output_size):
inputs = tf.placeholder(dtype=tf.float32, shape=[None, input_size], name="inputs")
targets = tf.placeholder(dtype=tf.float32, shape=[None, output_size], name="targets")
return inputs, targets
致密层
我们将定义一个函数来创建一个完全连接的层。每层的权重以格式“kernel/
def dense_layer(input, hidden_units, layer_no, activation_fn= tf.nn.relu):
weights_name = "kernel/{}".format(layer_no)
bias_name = "biases/{}".format(layer_no)
weights = tf.get_variable(weights_name, shape=[input.shape[1], hidden_units], initializer = tf.contrib.layers.xavier_initializer(seed=0))
biases = tf.get_variable(bias_name, shape=[hidden_units], initializer = tf.zeros_initializer())
output = tf.add(tf.matmul(input, weights), biases)
if activation_fn:
return activation_fn(output)
else:
return output
前向网络
接下来,我们定义一个函数来创建网络的正向传递。我们将激活函数应用于每个隐藏层。输出图层不通过激活函数,因为输出图层的 softmax 激活将包含在损失定义中。
def build_network(features, labels, hidden_units, num_layers, activation_fn):
inputs = features
for layer in range(num_layers-1):
inputs = dense_layer(inputs, hidden_units[layer], layer+1, activation_fn)
logits = dense_layer(inputs, 10, num_layers, None)
return logits
损失和优化器
因为我们想要在 10 个不同的产品类别之间进行分类,所以我们将 softmax 激活应用到输出层以获得最终的概率。我们将使用交叉熵损失作为衡量标准来确定我们的网络有多好。Tensorflow 提供了一个方便的实用程序来使用TF . nn . soft max _ cross _ entropy _ with _ logits _ v2 一起计算这两者。
def compute_loss(logits, labels):
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels = labels , logits= logits))
train_op = tf.train.AdamOptimizer(0.001)
return loss, train_op
如果你仔细观察,我们没有在优化器上添加最小化操作。最小化操作在内部执行两个操作。首先,它根据权重和偏差计算损失的梯度。其次,它使用上面计算的梯度更新权重和偏差。
由于我们希望每次迭代的梯度值来研究梯度消失的问题,我们将定义两个独立的操作,一个是计算梯度,另一个是应用梯度。当我们训练我们的模型时,我们将再次讨论这个问题。
精度
我们还将定义一个实用程序来计算模型的准确性。 tf.argmax(logits,1) 将返回概率最大的索引。由于标签是一位热编码的, tf.argmax(labels,1) 将返回值为 1 的索引。我们比较这两个值来确定正确的预测和准确性。
def compute_accuracy(logits, labels):
correct_predictions = tf.equal(tf.argmax(logits,1), tf.argmax(labels,1))
accuracy = tf.reduce_mean(tf.cast(correct_predictions, tf.float32))
return accuracy
网络中的权重
我们将定义一个函数来返回网络中所有权重的名称。还记得我们将权重的名称定义为内核/ <层编号>吗? Tensorflow 在内部将“:0”附加到变量名称上。你可以在这里了解更多信息。
def get_weights_name(num_layers):
return ["kernel/{}:0".format(layer+1) for layer in range(num_layers)]
火车模型
我们将定义一个函数来训练模型。我们将使用 sigmoid 和 RELU 激活来训练我们的模型。
def train_model(features, labels, hidden_units, epochs, batch_size, learning_rate, num_layers, activation_fn):
tf.reset_default_graph()
input_size = features.shape[1]
output_size = labels.shape[1]
*# get the placeholders*
inputs, targets = get_placeholders(input_size,output_size)
*# create a dataset*
dataset = tf.data.Dataset.from_tensor_slices((inputs, targets))
*# make the required batches*
dataset = dataset.batch(batch_size)
*# initialize the iterator for the dataset*
iterator = dataset.make_initializable_iterator()
*# get the next batch*
x_batch, y_batch = iterator.get_next()
*# forward network*
logits = build_network(x_batch, y_batch, hidden_units, num_layers, activation_fn)
*# compute the loss*
loss, train_op = compute_loss(logits, y_batch)
*''' instead of directly using the minimize function on the optimizer,*
*we break the operation into two parts*
*1\. compute the gradients*
*2\. apply the gradients*
*'''*
grads_and_vars_tensor = train_op.compute_gradients(loss, tf.trainable_variables())
optimizer = train_op.apply_gradients(grads_and_vars_tensor)
*# compute the accuracy of the model*
accuracy = compute_accuracy(logits, y_batch)
init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
def_graph = tf.get_default_graph()
gradient_means = []
losses = []
accuracies = []
train_samples = features.shape[0]
iteration = 0
*# get the name of all the trainable variables*
trainable_variables = [var.name for var in tf.trainable_variables()]
for epoch in range(epochs):
epoch_loss = 0
total_accuracy = 0
*# run the iterator's initializer*
sess.run(iterator.initializer, feed_dict={inputs:features, targets:labels})
try:
while True:
gradients = []
batch_loss, grads_and_vars, _ , batch_accuracy = sess.run([loss, grads_and_vars_tensor, optimizer, accuracy])
if iteration % 100 == 0:
*# create a dictionary of all the trianbale variables and it's gradients*
var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))
*# get the gradients of all the weights for all the layers*
weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]
*# take the mean of the gradients at each layer*
mean_values = [np.mean(np.abs(val)) for val in weights_grads]
gradient_means.append(mean_values)
epoch_loss += batch_loss
total_accuracy += batch_accuracy*batch_size
iteration += 1
except tf.errors.OutOfRangeError:
pass
print("Total Iterations {}".format(iteration))
acc = total_accuracy/train_samples
accuracies.append(acc)
losses.append(epoch_loss)
print("Epoch: {}/{} , Loss: {} , Accuracy: {}".format(epoch, epochs, epoch_loss, acc))
return losses, accuracies, gradient_means
由于函数非常大,我们将把它分解成更小的部分来理解。
将数据输入模型
首先,我们使用数据集和迭代器向网络提供数据。如果你想了解更多关于数据集和迭代器的细节,你可以参考这篇博客。然后,我们使用之前定义的例程来定义逻辑、损失、优化和准确性操作。
inputs, targets = get_placeholders(input_size,output_size)
dataset = tf.data.Dataset.from_tensor_slices((inputs, targets))
dataset = dataset.batch(batch_size)
iterator = dataset.make_initializable_iterator()
x_batch, y_batch = iterator.get_next()
logits = build_network(x_batch, y_batch, num_layers, activation_fn)
loss, train_op = compute_loss(logits, y_batch)
accuracy = compute_accuracy(logits, y_batch)
优化操作
如果您还记得,我们没有将最小化操作添加到优化器中,因为我们需要梯度的值。我们可以使用 tf.compute_gradients 计算 Tensorflow 中的梯度。我们可以使用 tf.apply_gradients 使用上述梯度更新权重和偏差。
grads_and_vars_tensor = train_op.compute_gradients(loss, tf.trainable_variables())optimizer = train_op.apply_gradients(grads_and_vars_tensor)
训练模型
with tf.Session() as sess:
sess.run(init_op)
def_graph = tf.get_default_graph()
gradient_means = []
losses = []
accuracies = []
train_samples = features.shape[0]
iteration = 0
trainable_variables = [var.name for var in tf.trainable_variables()]
for epoch in range(epochs):
epoch_loss = 0
total_accuracy = 0
sess.run(iterator.initializer, feed_dict={inputs:features, targets:labels})
try:
while True:
gradients = []
batch_loss, grads_and_vars, _ , batch_accuracy = sess.run([loss, grads_and_vars_tensor, optimizer, accuracy])
var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))
weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]
mean_values = [np.mean(np.abs(val)) for val in weights_grads]
epoch_loss += batch_loss
total_accuracy += batch_accuracy*batch_size
iteration += 1
gradient_means.append(mean_values)
except tf.errors.OutOfRangeError:
pass
print("Total Iterations {}".format(iteration))
acc = total_accuracy/train_samples
accuracies.append(acc)
losses.append(epoch_loss)
print("Epoch: {}/{} , Loss: {} , Accuracy: {}".format(epoch, epochs, epoch_loss, acc))
return losses, accuracies, gradient_means
我们使用下面的代码计算了每一次迭代中每一层的梯度平均值。
var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]mean_values = [np.mean(np.abs(val)) for val in weights_grads
我们首先创建一个包含所有可训练变量和梯度的字典。接下来,我们只提取权重的梯度,并计算每层的平均值。
运行模型
我们已经定义了运行模型所需的所有例程。让我们定义模型的超参数,并运行 sigmoid 和 RELU 激活函数的模型。
features = x_train
labels = y_train
epochs = 20
batch_size = 256
learning_rate = 0.001num_layers = 5
hidden_units = [30,30,30,30]
input_units = x_train.shape[1]
output_units = y_train.shape[1] *# run the model for the activation functions sigmoid and relu*
activation_fns = {"sigmoid":tf.nn.sigmoid,
"relu":tf.nn.relu}loss = {}
acc= {}
grad={} for name, activation_fn in activation_fns.items():
model_name = "Running model with activation function as {}".format(name)
print(model_name)
losses, accuracies, grad_means = train_model(features = features,
labels = labels,
hidden_units = hidden_units,
epochs = epochs,
batch_size = batch_size,
learning_rate = learning_rate,
num_layers = num_layers,
activation_fn = activation_fn)
loss[name] = losses
acc[name] = accuracies
grad[name] = grad_means
让我们使用一些可视化工具来比较这两个模型的精确度和梯度。
形象化
精度
def plot_accuracy(accuracies, title):
for name, values in accuracies.items():
plt.plot(values, label = name)
plt.legend(title=title)plot_accuracy(acc, "Accuracy")

我们可以看到,用 RELU 函数训练的模型比用 sigmoid 训练的模型更准确。还可以观察到,sigmoid 模型需要更多的时间来实现高精度。为什么?由于渐变消失的问题,早期层的学习速度较慢。
梯度
让我们绘制每一层的梯度。
def plot_gradients(grads):
sigmoid = np.array(grads['sigmoid'])
relu = np.array(grads['relu'])
for layer_num in range(num_layers):
plt.figure(figsize=(20,20))
plt.subplot(5,1,layer_num+1)
plt.plot(sigmoid[:,layer_num], label='Sigmoid')
plt.plot(relu[:,layer_num], label='Relu')
plt.legend(title='Layer{}'.format(layer_num+1))plot_gradients(grad)





从上面的图表中我们可以得出两个主要结论
- 与最终层中的梯度相比,早期层中的梯度幅度非常低。这解释了渐变消失的问题。
- 与 RELU 模型相比,sigmoid 模型的梯度值非常低。
摘要
在这篇博客中,我们讨论了渐变消失的问题,以及当我们使用 sigmoid 函数时如何缓解这个问题。我们还讨论了 RELU 函数如何帮助大大减少这个问题。
感谢阅读博客。希望你喜欢这篇文章。请在下面的评论中留下你的建议。
这篇文章的全部代码可以在这个 Jupyter 笔记本中找到。
参考
- https://en.wikipedia.org/wiki/Vanishing_gradient_problem
- http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
- https://adventuresinmachine learning . com/vanishing-gradient-problem-tensor flow/
- https://stack overflow . com/questions/40925652/in-tensor flow-0-in-a-variables-name 的含义是什么
- http://neuralnetworksanddeeplearning.com/chap2.html
数据的问题
作为分析师,我对数据的抱怨

Photo by Nick Hillier on Unsplash
数据。数据。数据。我们有这方面的数据吗?我们能检查数据吗?我需要备份我的议程。这些数字看起来很差。隐藏数据。
今天,我们看到这四个字母的单词受到了前所未有的关注:用最合理的猜测实现业务绩效最大化。也许有些人会感到惊讶,但统计分析已经存在了相当一段时间。20 世纪以来,人们。2005 年,O'Reilly 先生决定给这个术语改头换面,诞生了“数据科学”。营销——1,社会——零。
人工智能和机器学习等术语已经被贬低到了创造数据淘金热的地步,许多公司都在争先恐后地想要分一杯羹,因为担心这会削弱他们的竞争优势。不幸的是,这种争夺导致了对这个不断发展的领域的错误理解,导致人力资源部门和老派数据人员的招聘少得可怜。
围绕水晶球时尚的长期错觉也导致了公司对基本数据需求的忽视。确保数据是任何决策过程的核心,应该是任何领导者的首要任务;毕竟,如果没有利益相关者的支持,拥有花哨的算法又有什么用呢?你知道他们说…【to】跑之前先走。
不要滥用“数据驱动”这个术语
这是给你的快速数据 101:
数据驱动——数据就是产品。
数据通知 -(大多数公司如何运营)嗯,这是一个有趣的见解。我会记住的。
我认为,数据驱动并不是简单地对产品查询提供一个是/否的答案,来决定功能/设计的构建。相反,产品本身应该具有内在的底层数据依赖性。一个例子是网络安全平台,使用机器学习和自然语言处理来对抗电子邮件威胁。或者是一款教育科技应用,其中的推荐算法为学生提供个性化课程。
公司滥用了数据驱动的含义,而更多的时候,不仅仅是数据驱动。工作流通常在下游,而不是上游,这使得数据功能看起来更像是支持,而不像是咨询部门。很多时候,数据缺乏解决其他部门要求的问题的上下文,这导致了经典的“我可以拍我的头”循环:

the analyst’s wheel of doom
相反,对双方来说,预先确定问题的背景会更有成效。
这确保了:
- 提出了正确的问题
- 您的数据同事可以提供超出当前问题范围的额外价值;产品/营销/其他可能需要转向
数据就是,并且在未来几年将无处不在。随着这种情况的发生,对其他部门提高数据流畅性以处理基本查询的期望只会越来越高。反过来,它也可以打击房间里的大象,也就是说,数据往往在替罪羊的产生中扮演主角,这通常是作为被动参与者的结果。项目时不时会出问题,但如果你是自己拉数据的人,就更难推卸责任了…
数据的局限性

Photo by Franck V. on Unsplash
可悲的是,这个世界并不像我们希望的那样二元。无论是设计、产品还是营销,其核心数据都是为了降低风险和进行优化。在采取行动之前,每一个选择都经过分析、计算和逻辑推理。这导致我们过于依赖数据来做决定。这是一种极度规避风险的创新方式,更不用说数据无法提供答案的基本灰色领域了。
我说的这些温暖的石墨区域是什么意思?尽管齐心协力,指针就是不动,结果高管们把香蕉丢在了自己的闺房里。产品可能会经历动荡;客户不再喜欢它,一些有想象力的人决定是时候改变一下平台的核心了。
但是你什么时候决定做出这些改变呢?当优化达到极限时。当一个产品在每个可能的 KPI 上都明显走下坡路时。
数据是回顾性的,看用户如何在产品的现有范例中操作。因此,产品的范围限制了用户的行为。假设你房间的墙壁是黑色的。公平地说,这是明显的冒犯,所以你很少花时间在那里。是血腥的墙壁。把它们染成蓝色。你现在更喜欢它了,所以你在房间里多呆了 5 分钟。哇哦。但是如果你改变的不是墙壁呢?如果你决定变得疯狂,把你的房间变成一个迪斯科舞厅:闪光灯,爆米花机,沙坑,等等。你现在会在房间里做什么?
您选择构建的内容会改变客户与 it 的交互方式。因此,使用现有的客户数据来确定下一步要建造什么是一种相当有限和有缺陷的思维方式,尤其是如果你的房间一开始就没有任何有用的东西。如果你的基线已经有点糟糕,持续的 A/B 测试是没有意义的。有点像在闪粉里滚屎。它可能会变得有趣,但仍然是垃圾。
我们可能对下面的经典图表很熟悉。数据可以优化产品的性能(通过你选择的 KPI 来衡量),使其达到局部最大值,但不是全局最大值。只有创造性的解决方案才能做到这一点,但会增加业务风险。这可能是真的,但是我们经常没有意识到迭代优化也是在创纪录的时间内达到全局最大值的机会成本。

我们面临的现实是,总会有 A/B 测试没有考虑到的另一种变化。这里的要点是,你不需要等到优化达到极限,因为现实世界的问题从来都不是线性的。从来没有一个“正确”的时间来做出直觉驱动的决策。
商业战略在直觉驱动和数据驱动的决策中找到了自己的位置。处于超越其他公司而非创新阶段的单体公司只是进行小的调整和优化,完全由数据驱动。但当历史数据很少时,年轻的公司能够承担得起冒险,以免受到那些期望在 6 个月内获得 10 倍回报率的风投们的审查。
突然之间,把生意赌掉似乎不那么不负责任了…
数据科学职位发布的问题是
现实世界中的数据科学

偶尔,你会注意到一些你意识到很久以前就应该注意到的事情。你开始到处看到它。你想知道为什么更多的人不谈论它。
对我来说,“每隔一段时间”是昨天我在SharpestMindsSlack workspace 中滚动浏览#jobs 频道的时候,而“某些东西”是数据科学行业的一个大问题,我真的认为我们没有足够认真地对待这个问题:绝大多数数据科学职位描述并没有传达他们所广告的职位的实际要求。
我怎么知道这个?首先,在我们的内部论坛上发布的很多职位都包含了发帖用户(通常是 SharpestMinds 的导师)的留言,比如“我知道帖子上说他们在寻找 X 和 Y,但他们实际上对 z 很满意,”我也经常收到他们直接发来的信息,说着同样的话。
换句话说,当高级数据科学家被要求“真正”招聘时,他们的第一步往往是完全扔掉招聘启事。
这并不好,有几个原因。首先,误导性的职位描述意味着招聘人员会收到大量不相关的申请,候选人会浪费大量时间去申请不相关的职位。但还有另一个问题:职位描述是培训标签,任何优秀的有抱负的数据科学家都将使用它来优先考虑他们的个人和技术技能发展。
尽管这些残缺不全的招聘信息有明显的不利之处,但公司还是不断地发布这些信息,所以一个很自然的问题是:为什么?为什么招聘信息如此令人困惑(因为它们未能清楚地说明他们期望候选人具备的技能),或者如此离谱地过分(“寻找一名在深度学习方面有 10 年经验的机器学习工程师……”)?
原因有很多。首先,公司会根据应聘者解决实际问题的(感知)能力来做出招聘决定。因为有许多方法可以解决任何给定的数据科学问题,所以很难将工作描述缩小到一组特定的技术技能或库。这就是为什么如果你认为你可以解决他们的问题,即使你不知道他们要求的具体工具,向一家公司提交申请通常是有意义的。
另一个可能的原因是,许多公司实际上并不知道他们想要什么,尤其是那些拥有相对较新的数据科学团队的公司,要么是因为他们的数据科学工作的早期阶段迫使每个人都成为万事通,要么是因为他们缺乏所需的专业知识,甚至不知道他们有什么问题,以及谁可以帮助解决这些问题。如果你遇到一个奇怪的不具体的帖子,值得花时间找出它属于哪个类别,因为前者可能是一个伟大的经验建设者,而后者可能是一个灾难。
但或许最重要的原因是,招聘信息通常是由招聘人员撰写的,他们一点也不专业。这带来了不幸的副作用,导致偶尔出现不连贯的问题(“必须有 10 年以上的深度学习经验……”“……包括自然语言工具包,如 OpenCV……”)或没有人可能满足的问题。
这种工作资格马戏的最终结果是,我经常收到我们的学员关于他们是否有资格获得一个职位的问题,尽管他们已经阅读了互联网上关于该职位的所有信息。这些问题实际上惊人地一致——以至于我认为值得在这里列出最常见问题的答案,以简单的规则形式,你可以遵循,以确保你申请的是正确的角色(而不是被虚假的要求吓跑):
- 如果一家公司要求超过 6 年的深度学习经验,那么他们的帖子是由一个零技术知识的人写的(AlexNet 在 2012 年问世,所以这基本上把范围缩小到了 Geoff Hinton 的随从)。除非你想从头开始建立一个数据科学团队(如果你是这个领域的新手,你不应该这样做),否则这应该是一个大的危险信号。
- 如果你没有工作经验,就不要去申请那些需要两年以上工作经验的工作。
- 当他们说“或同等经验”时,他们的意思是,“或大约 1.5 倍的理学硕士或博士工作经验,在那里你至少从事与此相关的工作”。
- 如果你满足了 50%的要求,那可能就足够了。如果你达到了 70%,你就可以走了。如果你达到 100%,很有可能你大材小用了。
- 公司通常更关心你能解决的问题,而不是你懂什么语言。如果他们说 Pytorch,而你只知道 TensorFlow,你可能会没事(除非他们明确强调 Pytorch 部分)。
- 不要忽略类似“你应该注重细节和目标驱动,并在压力下茁壮成长”这样的话。它们听起来像是通用的、千篇一律的陈述——有时确实如此——但它们通常是真诚地试图告诉你你将会进入什么样的环境。至少,你应该用这些来暗示你应该强调自己性格中的哪些方面,以便与面试官建立融洽的关系。
当然,这些规则没有一个是放之四海而皆准的:奇怪的公司会坚持只雇佣符合他们所有规定要求的候选人,而其他公司会对了解 framework X 的人特别感兴趣,会忽略那些可以解决类似问题,但使用不同工具的人。但是因为没有办法仅仅从职位描述中得知这一点(除非他们明确说明了这一点),所以你最好的选择几乎总是赌自己,把你的帽子扔进圈里。
如果你想联系,你可以在 Twitter 上找到我,地址是 @ jeremiecharris!
P 值的问题是
对 p 值及其操纵潜力的简单解释。

p 值是最强大的统计指标之一,但经常被误解和误用。为了理解这一统计数据的影响范围和局限性,我们必须对它是什么和不是什么有一个共同的理解。有鉴于此,让我们从一个例子开始讨论,这将有助于建立对它的直观理解。
什么是 p 值?
美国法律体系的一个基本基石是无罪推定。“排除合理怀疑”证明有罪的责任在州政府身上。在民事案件中,举证责任要低得多,其标准被称为“证据优势”从实践的角度来看,我们可以将这些负担分别解释为 99%和 51%的确定性水平。在实践中,我们通常不能以这种方式量化证据的强度,但让我们假装我们可以。
通过建立假设检验,我们可以评估每个新证据的重要性。零假设,或默认假设,是证据是无意义的;另一个假设是证据是有意义的。我们反向工作,根据证据计算零假设为真的概率。考虑经典电影《我的表弟文尼》中的一个例子。
文尼·甘比尼(乔·佩西)正在为两名被指控抢劫商店并枪杀店员的客户辩护。对他们不利的证据主要基于三名目击证人的证词,他们指认了被告和他们的汽车。在无罪推定下,三个证人错误指认嫌疑人的可能性有多大?唯一的解释就是文尼所描述的:
有没有可能,两个被告进入商店,从货架上挑选了 22 件特定的商品,让店员拿钱,找零,然后离开,然后两个不同的人,开着一辆相似的车,进去,开枪打死店员,抢劫他,然后离开?
不是不可能,只是可能性很小。那就像是百万分之一的坏运气。百万分之一的概率就是我们所说的 p 值:当零假设为真时,发现观察到的证据的概率。p 值越低,证据的重要性越大。显著性(或置信水平)计算为 1 减去 p 值。在这种特殊情况下,这些值是:
- p 值:0.0001%
- 置信度:99.99%
当检察官试图让陪审团相信 p 值很低时,被告的律师会试图证明 p 值很高。
什么不是 p 值?
这里需要注意的是,置信水平并不意味着有罪的可能性;这需要对全部证据进行评估。当辩方陈述案情时,它旨在表明,在一个客户是无辜的世界里,对其客户不利的证据更可信。虽然我很想用 Vinny 精湛的盘问来说明这一点,但如果你没看过,我不想破坏你的电影!所以,让我们用一个不同的例子。
考虑一个犯罪现场,调查人员发现了被告的 DNA 和指纹。如果被告没有犯罪,找到这样的证据是非常不可能的;所以 p 值会很低,我们对证据的置信水平会很高。但是如果我们后来发现犯罪现场是被告的家呢?突然间,证据变得更可信了。事实上,如果调查人员在嫌疑人自己的家里没有发现这样的证据,那才奇怪。给定证据的 p 值上升,置信水平下降。
科学和研究中的 p 值
从科学的角度来看,研究人员充当检察官,试图证明某一特定现象的存在,例如二氧化碳水平对全球平均温度的影响。任何给定实验的无效假设是不存在关系,另一个假设是更高的 CO2 水平导致更高的温度。与法律检察官不同,这些研究人员可以精确测量 p 值,科学界决定结果是否足够重要,可以添加到更大的证据中。换句话说,作品能出版吗?
正如人们所料,这激励研究人员寻找更高的置信水平和更低的 p 值来证明他们的工作并获得报酬。合法出版物的公认置信度为 95%(p 值为 5%)。当发现结果仅在 94%的置信水平下显著时,会发生什么?
p-黑客
放弃不是一个选项。获取更多的数据可能会非常昂贵。这种情况有可能导致一些不道德的行为。当处理具有数百或数千个输入的模型时,是否可以简单地忽略一些影响结果的精选特征?怎么会有人知道?
答案很简单:同行评议。其他研究小组重复这项工作来验证结果,作为各自领域的专家,他们将能够识别这些类型的缺点。这是否会使所有结果完全无效?不一定。没有必要把孩子和洗澡水一起倒掉。只有一个问题:绝大部分研究资金用于支持新的研究,很少用于复制。根据美国国家科学、工程和医学科学院:
科学和大众媒体都表达了对再现性和可复制性的关注。随着这些问题的曝光,国会要求国家科学院、工程学院和医学院进行一项研究,以评估与可重复性和可复制性相关的问题的程度,并提供提高科学研究的严谨性和透明度的建议。
报告确实提供了一些可行的方案来解决这个问题,但是更重要的一点是这个问题还没有解决。
这是否意味着科学研究不可靠,不可信?绝对不行。仅仅因为复制和再现性的挑战没有被解决,并不意味着没有管理这个问题的方法。美国国家科学院的研究还指出,“研究综合和元分析…是评估研究机构可靠性和有效性的有价值的方法。”
为什么要进行元分析?
为了理解这个问题的答案,考虑一个有四个玩家的飞镖游戏。这个特殊的游戏很简单:第一个击中靶心的人获胜。下图显示了每位玩家的飞镖落点:

正如我们所看到的,每个玩家的投掷都有很大的偏差,他们中没有一个人可能很快赢得比赛。然而,考虑一个观众观看这场比赛,并研究每个球员如何投掷。通过考虑所有的偏见,那个人在后续比赛中击中靶心的机会要高得多。
元分析也是同样的工作方式。通过对给定主题的大量研究子集进行评估,考虑所有偏差,我们可以建立模型,提供足够的现实近似值。然而,这些近似值在结果中通常具有较高程度的差异,因此尽管它们是有帮助的,但它们不是永久的解决方案。
其他考虑
这里值得注意的是,p-hacking 并不总是故意的。如果一个特定的数据点使得结果不那么可靠,那么这个数据点本身实际上是有效的吗?或者只是噪音,无论如何都应该省略?答案很简单:视情况而定。谁将使用这项研究?这是一个可以在未来实验中控制的变量吗?我们是在试图理解历史数据,还是在为未来打造一个工具?这些问题不容易回答。突然间,研究人员不得不表现得像一个商人,试图做出一个最能满足所有利益相关者的决定。
实现这一点的一种方法是故意破解 p 值,然后回过头来理解结果的适用性是如何受到限制的。这些限制必须充分记录在结果中,以避免误用。不幸的是,这种细微差别往往在这些发现被面向消费者的媒体出版物发现时就消失了。即便如此,也不能保证研究人员已经充分考虑了所有的限制。
回归模型中的 p 值
暂且把 p-hacking 问题放在一边,还有一件事需要注意:p 值可以帮助我们理解变量之间是否存在关系,但它们不能告诉我们这些关系的强度。
考虑一下我最近进行的一项关于州枪支法对凶杀率影响的分析。作为最初数据审查的一部分,我想知道吉福兹法律中心分配的等级是否与凶杀率充分相关。p 值为 0.14%(置信水平:99.86%),很明显存在关系。只有一个问题:看看当我们用散点图绘制分数和谋杀率时会发生什么。

Source: What can Machine Learning Tell Us About America’s Gun Laws?
很明显,随着年级升高,杀人率下降,但也有很多例外。为了量化关系的强度,我们使用 r 平方分数。这个分数告诉我们州枪支法可以解释凶杀率变化的百分比。这里,r 平方值仅为 6.73%。
我已经能看到标题了:“新研究发现枪支法超过 99%有效。”不要!我不是这么说的!过度依赖 p 值来传播结果,而没有适当考虑其他指标,往往会导致研究被广泛滥用。
外卖食品
p 值本身没有任何问题。它们是帮助我们理解证据重要性的宝贵工具。然而,过度依赖单一指标或单一研究来支持更广泛的假设是危险的。此类研究的消费者必须保持更广阔的视角,媒体机构必须避免炒作任何单个研究的结果。最终,p 值是有用的工具,但这取决于我们是否正确地使用了这个工具。
“空间”的生产
在 80,000 个谷歌学术结果和 180,000 篇文章中搜索一个智力比喻的来源

原载于 组件 。
经济衰退后的几年,一群新毕业的常青藤联盟毕业生发现自己被文学界拒之门外,并在网上出版了《新调查》( New Inquiry)杂志(New Inquiry ),该杂志曾被《纽约时报》( New York Times )(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)曾)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约他们可能一直在敲哈珀的门,但他们几乎不会说 glossies 的温和方言。《新调查》充斥着晦涩难懂的巴黎语言,好像是毕业后被流放的学者写的。多年来,这份刊物(似乎)成为媒体研究、批评理论和文学领域最大的论坛之一。来自新学校的学生和他们的教授终于在网上有了自己的家。
现在,在《泰晤士报》称其为“文学幼兽”的摇篮八年后,《新调查》将自己定位为曾经拒绝其作家的同一机构的不可忽视的农场联盟,将他们安置在像《纽约客》(一个是职业作家)和《新共和》(作为出版社)这样的地方
Lol。读者,我发誓我试着用不同的方式写这两段。看在上帝的份上,有没有办法砍掉一些这种新的?也许可以参考一些其他的杂志?但是他们去了那些地方工作,去了解新的事物。也许我可以谈论一些地方,而不是新的调查?但那才是我发现这篇文章基础的地方。也许其他东西可以代替新学校?但很少有地方能让人联想到新学院几十年来发展起来的钢铁般的多音节词,该学院也位于曼哈顿,与该出版物有着更密切的关系。
写完那篇文章后,我在谷歌上搜索了“新学校”“新调查”,想看看这种关系有多紧密。第二个图像结果是文本的截图,链接到一个页面,开始是,“瑞秋·罗森菲尔特是 The New Inquiry 的联合出版商,Verso Books 的创意总监,新学院创意出版和批判新闻部的副主任,以及 2017-2018 年 NEW INC .的成员,”NEW INC 是新博物馆的一个项目。


A plausible explanation behind the inclusion of certain words in The New Inquiry is that, as its essays tend to run longer, it’s more likely to include any words. This could help explain why its median ratio is 1.83:1, meaning that of the sampled words, half of them are used 1.83 more times frequently than in other publications on average, and half of them are used less than 1.83 times more frequently. (This calculation is Boolean: if the word occurs in an article, it has a value of 1. There is no measure of the number of occurrences.) Both “body”/”bodies” and “space”/”spaces”, however, are even more frequently used. At their respective ratios of 3:1 and 2.75:1, they’re 1.75 and 1.52 median absolute deviations away from the median, arguably hugging the threshold of significance. Both terms used together have a ratio of 6:1, 4.94 deviations away, and placing the two terms together in 97th percentile of word ratios. But I can hear you huffing with opprobrium that I’ve mixed like with unalike — this is a graph for the ratios of single words, but “body”/“bodies” and “space”/“spaces” together are two words. This would never pass peer review! It’s true, and to perform an analysis of all the possible two word combinations that appear in the publication relative to others would have my computer running for days. But methodological purity aside, whatever unalike things have been imposed on the graph above, the fact is that the appearance of “bodies” and “spaces” together in the same text is 500 percent likelier to occur in The New Inquiry than anywhere else sampled, a ratio that sits snugly between “homogenize” (with a ratio of 5.89:1), “complicity” (5.96:1), “commune” (6.05:1) and “interchange” (6.10:1).
这篇文章的基础如下:
一天晚上,我去了的新调查的网站,逛了逛,没有别的原因,只是想看看这个地方在做什么,然后意识到我一直在“身体”这个词上徘徊。到处都是尸体!它们在文章中,在字幕中,在出版物的推文中。它们出现在这样的场景中,“当桑德拉·布洛克在重力中脱衣服时,她展示的与其说是一个身体,不如说是一台机器。这就是工作流影院[。]”或者“拒绝医学检验参数的身体是不吉利的身体。”或者,“‘治愈文化’(自闭症群体使用的一个术语,用来描述将自闭症身体作为医学康复对象的机构和话语的机器)促使国家保护自己免受自闭症化身对其公民的神经未来构成的假定威胁。”
偶尔,这些身体会与另一种元素融合,成为更伟大的东西——不仅有身体,还有身体和空间,这两个小名词结合在一起时会发出核聚变的智力能量。“手杖本身是一个被设计的物体,是设计在身体和空间/场所之间,以及在非标准和标准身体之间产生的不同(通常是对立的)关系的一个明显标志。”或者,“与莫塔和鲁宾-利维的没有身体的性化空间不同,Grindr 提供了平铺在智能手机屏幕的无空间中的性化躯干:没有空间的身体,纯粹的网格,没有大量、无摩擦、平滑的色情脉冲。”
我和朋友提起过这件事。他们有没有注意到这一类作家中“身体”和“空间”的优势?一个人回复我说:
Pitchfork:食人王 PU$$Y 凭借他的热门单曲“Goop on Ya Grinch”【7.6】
—芥子虎(@ JucheMane)2017 年 4 月 14 日
“身体”和“空间”传统上在科学、医学和数学领域被一起使用。有闵可夫斯基小体、细胞体、凸小体和多泡小体;有细胞外空间,空泡空间和 Banach 空间。至少在英语世界,在 20 世纪的大部分时间里,这些术语很少出现在科学期刊或专利申请之外的同一份文件中。
牛津大学音乐教授加西娅·乌祖尼安(Gascia Ouzounian)将“空间”具体开始向人文学科大规模迁移的时期确定为 1974 年,当时法国马克思主义哲学家亨利·列斐伏尔(Henri Lefebvre)发表了《空间的生产》,并“帮助推出了一种空间性的概念,其范围包括身体、行动和建筑环境。”太空的制作1991 年被翻译成英文;对其翻译的评论通常承认其不可穿透。地理学家蒂姆·昂温(Tim Unwin)写道:“列斐伏尔论点的复杂性及其难以捉摸的特点,使得在任何特定时刻都很难准确解释他的意思。”。“这不仅是因为他在整本书中以不同的方式发展了类似的概念,还因为他的句子结构经常不透明……在一个层面上,列斐伏尔的项目是让人们重新思考他们对社会的时间解释的想法。他使用的语言的复杂性迫使读者重新思考……重要的不是他写了什么,而是这本书在读者中引起的反应。”
列斐伏尔不仅仅支持任何一个单独的主题,他最终想把对空间的思考融入到批判性的话语中。他那个时代的马克思主义是资本和劳动之间公认的辩证法,但是它缺少了一个重要的部分:空间呢?工人和资本之间不只是简单的关系,而是工人、资本和生产所依赖的土地、工人居住的城市、他们工作的办公室等等之间的关系。其中每一个都由另一个生产,并产生另一个:资本创造工人的条件,工人再生产资本,资本生产空间,空间生产工人和资本的条件,等等。“因为……每种生产模式都有自己特定的空间,”列斐伏尔写道,“从一种模式到另一种模式的转变必然需要新空间的产品。”这些生产方式的本质,资本自我复制的方式,可以从“解码”这些空间中得到。空间“代码”实际上包含了空间包含的一切:“空间代码不仅仅是阅读或解释空间的一种手段:更确切地说,它是生活在那个空间中,理解它,并生产它的一种手段。因此,它将语言符号(单词和句子,以及通过符号化过程赋予它们的意义)和非语言符号(音乐、声音、召唤、建筑结构)结合在一起。”
列斐伏尔相信他所谓的“瞬间”的潜力——超越资本的意识和超越的短暂事件。这些时刻可能包括对资本如何运作的突然感知,对列斐伏尔来说,这可能意味着对空间生产的揭示。为了在他的理解范围内冒险举一个小例子,我将提供一个我最近的“时刻”:今年冬天,我去一个叫 The Bean 的地方喝茶,这是纽约市的一家咖啡连锁店,试图将自己标榜为酷星巴克。事实上,我去那里喝茶,看了《T2》的影评《T3》。我喝了一杯茶,把这篇文章加载到浏览器上,开始阅读,然后意识到我不能,因为就在我打开它的时候,艾薇儿·拉维尼的“复杂”从咖啡馆的扬声器里爆发出来,这让我无法集中注意力。我的第一反应是举起我的双手,你怎么就不能在这个该死的镇上得到任何和平和安静。但在这一刻,我意识到无法专注于像马克思主义空间分析这样的东西并不是咖啡馆的错误,而是资本运作的自然产物。音乐——以及之前和之后的每一首歌——是一种中和了所有批判性思维的声音,实际上与这些时刻相反。豆子正是我们目前的生产模式(流行音乐的各种认知效果在其中变得如此重要)将产生的空间类型,也正是这种空间将继续延续这种模式。这不是咖啡馆或其工作人员故意做的事情,这只是资本在 2019 年碰巧产生的那种空间——它的空间后代。
对列斐伏尔来说,我在咖啡馆的活动有三个空间平面。首先是咖啡馆的物理空间,它嵌套在城市的物理空间中(包括列斐伏尔所说的“摩天大楼傲慢的垂直度”),等等。这是欧几里得空间。在我自己的大脑中有一个区域,在那里我微弱的想法与声音发生碰撞。这是精神空间。然后是实体网络带来了咖啡馆——拥有咖啡豆的有限责任公司或私募股权公司,为有限责任公司提供信贷的银行,起草法律允许有限责任公司保护所有者免于责任的政治机构,将茶从国外带到我在曼哈顿的杯子的供应链,将艾薇儿·拉维尼放在扬声器上的音乐制作和传播系统,等等。这是抽象空间。
位于并产生这个空间的,当然是身体。列斐伏尔写道:“理论思维……重新接纳了身体和空间,在空间中,以及作为空间的生成器(或生产者)。根据列斐伏尔的观点,人体本身是理解空间的必要条件,无论是通过构建空间还是成为空间的一部分。而身体就是所经历的这个空间。它让我感受到扬声器里的音乐,让我坐的椅子充满了为我周围的人创造空间的东西,等等。正如昂温引用列斐伏尔的话写道,“……他渴望将身体重新纳入他的分析框架。他特别担心“西方哲学已经背叛了肉体;它积极参与了隐喻化的伟大过程,这个过程使抛弃了身体;而且它已经否定了身体。"
列斐伏尔认为,这三种类型的空间被错误地局限于应该调和的遥远学科。数学家之类的研究欧几里得空间,心理学家之类的研究精神空间,抽象的材料留给社会学家和理论家以及其他人。相反,正如资本主义实际上是资本、劳动和空间之间的三分法一样,空间也包含三个关键的组成部分,正确地研究它需要同时考虑这三个部分,并理解身体在创造、被创造和体验这些空间中的作用。
“认识论-哲学思维未能为一门很长时间以来一直在努力涌现的科学提供基础……这门科学是——或将会是——一门关于空间的科学
这就是列斐伏尔想要太空产品做的事情——为一个新的科学领域奠定基础。

An approximate proportion of academic articles on Google Scholar that both contain “bodies” and “spaces” in a scientific, mathematical or medical context, or in a patent. Behind this graph is something of a mess: article text can’t be pulled from behind journal paywalls, so the only text available to analyze are brief Scholar previews (e.g., “…many lesbian spaces (like the Michigan Womyn’s Music Festival) have excluded lesbian-identified male-to-female transsexuals. Through an analysis of historical inclusion and socio-political exclusion, this essay examines the relationship between ‘birth bodies,’ gender and…”), titles (e.g., “The materiality of gender: looking for lesbian bodies in transgender history”) and publication names (e.g., “Journal of lesbian studies, 1999 Taylor & Francis”). This isn’t quite enough text for topic modeling or any type of custom classification system that is both reliable and doesn’t consume massive resources. The best, quickest solution is to search for specific words, prefixes and suffixes that identify the subject matter of the article. If any of the available preview text, article title or journal name contained any in a somewhat slapdash list of words (in this case, ‘sulfate’, ‘sulfide’, ‘equation’, ‘differential’, ’embryo’, ‘patent’, ‘ology’, ‘cell’, ‘medicine’, ‘math’, ‘ceous’, ‘medical’, ‘surgery’, ‘surgical’, ‘milli’, ‘centi’, ‘giga’, ‘methyl’, ‘iod’, ‘immuno’, ‘osis’, ‘particle’, ‘convex’, or ‘electro’), the article was classified as belonging to a discipline other than the humanities or social sciences. That includes partial words, so “math” captures “mathematical”, common in journal names. Which is to say, this list is hardly complete; the only way to classify these texts with any certainty would be to do so manually. That means that more articles of the scientific/patent variety have been left out, not the other way around: the actual results of this graph, if performed with total accuracy, would look much starker, with larger values on the y-axis before 1991.

去年,有人在 Twitter 上问大英图书馆参考服务,该服务最受欢迎的书是什么。这是空间的制作,从 1997 年到 2018 年 4 月请求了 701 次。在弗吉尼亚大学的图书馆,我第一次借阅了这本书,由于需求量很大,这本书有四个小时的使用限制。
列斐伏尔不是第一个在非科学语境中使用“身体”的人,他也不是第一个在这些语境中使用“空间”的人——在这方面,他在 20 世纪 70 年代的法国哲学中有很多同伴。但是不管它对地理和城市研究领域的影响如何(从大卫·哈维等有影响力的地理学家对它的处理来看,这种影响是巨大的),也不管它的因果关系有多深,《空间的产生》是一部大型的、有影响力的作品,是在一场语言运动中,一种新的写作方式在一代知识分子和学者中生根发芽。在他的书的 1991 年英译本出版后(大约在那个时候,像朱迪斯·巴特勒这样的人也使用了类似的术语),在传统术语使用领域之外的人们大量采用了“身体”和“空间”的用法。在论文发表 20 年后,在谷歌学术,带有“正文”和“空格”的论文更可能来自人文和社会科学期刊,而不是医学、生物学、数学或专利。
曾经有一段时间,这种发展会让我觉得诺姆·乔姆斯基的一句话是确凿的证据,这句话多年来代表了我对学术左派语言的大部分立场:
“如果你观察正在发生的事情,就很容易明白发生了什么。假设你是某所精英大学的文学学者或人类学家或其他什么人。我的意思是,如果你认真工作,那很好,但你不会因此获得任何大奖。另一方面,你看看大学里的其他人,你会看到物理系和数学系的这些人,他们有各种各样复杂的理论,当然我们无法理解,但他们似乎理解这些理论,他们有原则,他们从原则中推导出复杂的东西,他们做实验,他们发现它们要么有效,要么无效。这真是令人印象深刻的东西。所以我也想变成那样。所以我想有一个理论。在人文学科,在文学批评和人类学等等,有一个领域叫做“理论”。我们就像物理学家一样:他们说不明白,我们也能说不明白。他们有大词,我们也会有大词。他们会得出深远的结论,我们也会得出深远的结论。我们和他们一样享有盛名。现在如果他们说,好吧,看,我们在做真正的科学,而你们没有,这是白人男性性别歧视,你知道,布格瓦-不管答案是什么。我们和他们有什么不同?好吧,这很吸引人。”
这没有错。乔姆斯基断言,非科学学者已经采用了数学和科学的语言,这从字面上看是正确的:列斐伏尔认为他的工作是一门新科学的开端,随着时间的推移,“身体”和“空间”在整个非科学领域的采用表明,这种语言的采用正是所发生的事情。弗雷德里克·詹姆逊(Frederic Jameson)在他的短文《论行话》(on 行话)中,自己也承认了这一点:他写道,为了要求写作清晰,他回避了这样一个问题:“为什么在所有其他科学都变得越来越专业化、外行人不可能接触到的时候,研究像资本主义这样复杂的社会会变得更容易。”
但尽管没有错,我对这一立场的支持——哲学家和学者的难懂语言几乎总是脱离现实的遥远抽象,没有任何用处——即使没有完全解开,也足以让我更加同情詹姆逊。我们应该猜测事物的结构,而那些结构通常呈现出违反直觉的形式。讨论它们的出发点通常是一种基于经验和感知的哲学,这种哲学将具有不同于乔姆斯基在他的书中采用的残酷而平淡的风格,尽管这些书有巨大的价值,但通常相当于列举美国的轰炸战役。我敢肯定,我们中的大多数人在某个时候通过发现乔姆斯基形成了自己的政治身份,认识到这种类型的工作的重要性,但它的潜力是有限的(特别是在美学上)。詹姆逊的告诫是,为了在一个资本主义已经殖民了生活的每一个元素的时代把握资本主义,一个人必须从本质上理解所有领域的一切——人类的性欲、潜意识、空间等等——我在其中生活的每一天,对我来说似乎都更加合理。
因此,乔姆斯基的漫画实际上可能提出了一个他不想问的问题:在这一代知识分子中——当代马克思主义者、后现代主义者、批判理论家、所有与他们相邻的事物以及他们的每一种组合——为什么没有更多的科学?或者更准确地说,这些数字去了哪里?《T4 资本论》的乏味在很大程度上要归功于马克思的长篇算术。在真正的经验主义方面的少数连续努力,如皮埃尔·博迪厄的《区别》和托马斯·皮凯蒂的《21 世纪的资本》都受到了如此的称赞(和引用),人们不禁要问为什么他们的数据收集和验证方法没有被更多地采用。为什么我们总是以抒情的科学姿态结束,而不是科学?
我给六个人看了“身体”和“空间”的增长图,并询问他们的解释。每个答案都包含不同的细节,但每个答案都以同样的告诫结束,即完全回答这个问题非常困难,需要对这些词的发展进行彻底的知识史研究,这样做可能会花费一篇论文的工作量。
不过,这不是一篇论文;这是几千字对几幅图的沉思,我承认这是为了尽可能地避开没有提到这个和那个的指责。在这张图表背后有无限可能的原因。一个是美国的科学和经济部门被企业利益所控制,这些企业不太愿意接触女权主义学者,也不知道如何让实验发挥作用。另一个原因是所有领域的专业化程度越来越高,这使得任何人都不愿意从事与博士项目的超专业重点不直接相关的工作。我们可以列出其他人,但我们会在这里一周。
但是,虽然“身体”和“空间”增长的具体、直接原因可能会占用一个会议,但任何涉及人的情况的现实是这样的,用乔姆斯基可能想要的常识性术语来表述:
人类是拟态生物;我们复制其他人做的事。正是这种趋势催生了一千种新事物。在过去的一个世纪里,我们逐渐形成了基于图像和名人的身份,我们——将名人的行为与名人的奖金联系起来——模仿名人的行为。随着越来越多的人模仿一种特定的行为,其他人不是模仿名人的行为,而是模仿群体的行为,趋势就形成了。学者也是人,因此他们容易模仿名人的行为。因此,它们受制于趋势。几十年来,由于美国学者的庆祝冲动在美国没有什么可信的对象可以模仿,他们把目光投向了巴黎,这是世界上仅有的几个知识分子受到好莱坞级别关注的地方之一,他们模仿了他们。他们可以用特定的词语来表达他们的智慧,我们也可以用特定的词语来表达我们的智慧。
1974 年,在 New York Review of Books,中,经济学家 Robert Heilbroner(the New School lol)写了一条警告,我认为这条警告与这类词语的使用有关:“马克思主义没有权利,也肯定不是理解现实的唯一模式,包括它比任何其他方式都更生动地揭示了现实的一个方面,即资本主义的历史和存在本质。”
科学术语的采用散发出一种客观性和不变性的感觉,即事实上没有其他理解现实的方法,正如没有细胞外空间就没有理解有机体的可行方法一样。它给人一种经验工作已经完成的印象。通常情况下,它不会。往往不能,也往往不需要。但有时可以,有时应该。

画面由 石南 组成
基于神经网络的加密货币盈利能力预测
利用 LSTM 网络预测以太坊加密货币

Photo by André François McKenzie on Unsplash
介绍
加密货币市场已经迅速建立,其不稳定性给研究带来了重大挑战,需要对其行为进行严格检查[1,2]。如今,加密货币在投资部门和市场从业者的日常生活中占据了重要位置[3]。
本文介绍了一个关于预测和交易加密货币的决策支持系统,并试图利用深度学习对以前开发的此类系统进行简单的盈利能力分析。特别是使用深度学习算法来预测以太坊加密货币在短期内的收盘价。
数据从 Poloniex 交易所(ETH/USD 时间序列)收集,并通过长短期记忆网络进行分析。这种深度学习模型是在之前的研究中经过严格的基准测试和各种指标下的性能评估后与其他模型区分开来的。实验表明,上述模型可以用于以科学有趣的方式实时预测以太坊收盘价,并且具有有希望的准确性。
实验
下面显示了预测系统的简单盈利能力分析。为了评估预测的有效性,随机选择了三个时间范围。下行周期、上行周期和包含两者的周期是有区别的。下行期包含 2018 年 7 月 26 日至 2018 年 8 月 13 日的时间序列数据。上行期包含 2019 年 6 月 09 日至 2019 年 6 月 23 日的时间序列数据。混合时段包含从 2019 年 7 月 13 日到 2019 年 9 月 20 日的时间序列数据。
通过开发交易模拟,使用预测系统(即主动交易)与被动交易策略(即买入并持有)进行交易的利润得到测试。购买并持有是一种简单的投资策略,个人购买股票/加密货币硬币并长期持有,目标是它们在很长一段时间内逐渐增值[4]。
考虑两个代理,一个使用主动交易策略( a ),一个使用买入并持有策略( b )。他们每个人都以 1000 美元开始。代理人 b 以每个时间段开始时花光所有钱的价格购买硬币。他在期限结束时以这个价格卖掉所有买的硬币。代理人 a 根据其预测系统的决定买卖硬币。他根据每 30 分钟对下一个 5 分钟实施的算法的预测来购买或出售加密硬币。这种简单的方法基于以下流程图:

Trading Decision Flowchart
下行期
代理人 a 总共做了 292 笔交易,现在他拥有 732.36 美元。他用主动交易的利润是负的-267.64 美元。经纪人 b ,使用简单的买入并持有策略,已经做了 2 笔交易,一笔在期初,一笔在期末,现在他拥有 608.55 美元。他的利润为负-391.45 美元,比代理商的 a 低 123.81 美元。
Downward Period — Trading Simulation
上升期
代理商 a 总共完成了 271 笔交易,现在他拥有 1447.99 美元。他使用主动交易的利润是 447.99 美元。代理人 b ,使用简单的买入并持有策略,已经完成了 2 笔交易,现在他拥有 1365.86 美元。他的利润是 365.86 美元,比代理商的 a 低 82.13 美元。
Upward Period — Trading Simulation
混合期
代理人 a 总共做了 1429 笔交易,现在他拥有 1088.95 美元。他使用主动交易的利润是 88.95 美元。代理人 b ,使用简单的买入并持有策略,已经完成了 2 笔交易,现在他拥有 801.53 美元。他的利润是负的-198.47 美元,远远低于代理人的利润。
Mixed Period — Trading Simulation
原型系统
一个利用预先训练和加载的 LSTM 神经网络进行预测的原型实时“交易”模拟系统正在 Heroku 上运行。请随意合作和/或提供建议。当然,专业的市场从业者确实知道这种系统的优点和缺点。
结论
这项研究绝不是提供一个完整的实际预测盈利的加密货币系统。然而,这是科学实验,仍然需要用来自社交媒体和/或其他来源的更多外源数据而不是实际价格数据来校准。该系统的盈利性分析还应考虑所使用的交易平台的交易费用。最后但同样重要的是,上述研究提出了一个决策支持系统,而不是一个你应该完全盲目跟随的系统。好吧,即使在金融界,人们说“过去的表现不是未来结果的指标”,这也不应该阻止人们开发和试验这样的模型和系统。
注来自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语 。
参考
[1] Dark,c .,Emery,d .,Ma,j .,Noone,c .:加密货币:十年——公告–2019 年 6 月季度。公报(2019 年 6 月)。
[2] Farell,r .:对加密货币行业的分析。沃顿研究学者杂志。论文 130 (5),1–23(2015)。
[3]朱迪奇,g .,米尔恩,a .,维诺格拉多夫,d .:加密货币:市场分析和前景(2019)。
[4]买入并持有定义,https://www.investopedia.com/terms/b/buyandhold.asp。
获得数据科学工作应该做的项目
我相信未来工作质量的最佳预测者是以前的工作质量。许多数据科学经理也持有这种观点。并非每个人都从事过数据科学工作,但每个人都可以将数据科学项目放在一起,以展示他/她的工作质量。如果你制作了很棒的项目,并在你的 github 和简历上展示出来,你将极大地提高你获得工作的机会。
项目之所以伟大有几个原因:
- 它们表明你是一个主动的人,并且愿意解决大问题
- 它们表明,您可以将数据科学技术应用于您每天遇到的实际问题
- 他们允许你“展示”你理解一个概念,而不是“讲述”
- 你可以完全控制你项目的主题,所以你可以迎合他们来说明特定的技能
- 基于项目的学习是实际获得数据科学技能和学习新工具的最快方法之一
- *如果它们强大而有意义,它们可以和在职经历一样好,甚至更好
*更多关于这个的最终想法
在本文结束时,我希望您理解如何选择项目以及它们的生命周期是如何工作的。我还希望你探索我推荐的 4 个项目,为自己的成功做好准备。
本文详述了我最受欢迎的 YouTube 视频之一。如果你感兴趣,你可以在这里查看: 获得数据科学工作应该做的项目

你如何选择一个项目主题?
数据科学项目最重要的一点是,它应该对您来说是独一无二的。项目越具体,你越能解释它的意义,越好。独特的项目很棒,因为它们展示了你的一些个性,很难复制。不幸的是,我遇到过在 github 上复制项目或者使用大部分代码而不注明出处的候选人。
我认为你应该从事符合以下类别之一(或两者都符合)的项目:
(1)它们对你来说是有趣的或重要的 —如果你对你项目的主题感兴趣,你会更倾向于去做,并且做得很好。当你接受采访并被要求谈论工作时,这一点就很明显了。当候选人对一个项目感到自豪时,你可以看到当被问到这个项目时,他们明显变得兴奋起来。
他们的目标是你希望进入的行业或工作,做这样的项目可以证明你为什么要申请一个特定的职位。它们也说明你对你可能从事的领域有所了解(本文解释了为什么这很重要)。
碰巧的是,我的大部分项目都是关于体育的。这是我的工作和激情的交集。在我看来,这是最好的情况。
数据科学项目的组成部分是什么?
所有数据科学项目都应该有一些共同点。你的项目应该大致遵循下面的生命周期,你应该能够详细讲述每一步。
第一步:计划并确立项目的理由——这是启动一切的步骤。你并不总是知道你会发现什么,但是你应该试着用你的分析来回答一个问题或者解决一个问题。在开始第二步之前,有一个你想解决的具体问题。
(例如,是否有可能以足够的准确度预测 NBA 比分,以创造下注优势)
第二步:数据收集——网上有很多查找数据的好地方(kaggle、google、reddit 等。).你既可以从这些地方选择一个数据集,也可以自己查找数据。我发现,如果候选人从 API 中提取数据,或者用其他更独特的方式收集数据,他们就会与众不同。拥有别人不知道的数据增加了你的独特性和“惊喜”因素。
(例如使用 python 从 basketball 引用中抓取数据)
第三步:数据聚合&清理 —这一步通常被忽视,但却是最重要的一步。格式化和清理数据的方式会对分析结果产生很大影响。您应该能够解释您在处理空值、选择包含或移除某些功能以及处理异常值时所做的决定。
(例如,删除了明星球员因负荷管理而休息的比赛,这是一个较新的现象,会扭曲我们的历史结果)
第 4 步:数据探索 —在分析的这一部分,重要的是表明你理解数据的细节。您希望深入了解每个特性的分布,并评估这些特性之间的相互关系。为了显示这些关系,你应该使用像箱线图、直方图、相关图等视觉效果。这一过程有助于你了解哪些变量与你试图回答的整个问题相关。
(例如,每场比赛得分的直方图、投篮次数等。)
第五步:数据分析 —在这里,你开始评估你的数据集的趋势。我建议使用数据透视表来了解不同组之间或不同时间之间是否存在差异。可视化工具也应该在这部分分析中大量使用。与上一步非常相似,这一步有助于您理解要在模型中测试哪些变量。
(例如,每支球队每场比赛的得分,投篮得分与得分的散点图等。)
第六步:特征工程——你分析的这一部分极其重要(所以它有自己的步骤);然而,它通常应该与数据分析阶段并行完成。特征工程有两种形式:(1)创建可以提高预测质量的新特征,或者(2)改变数据的性质,使其更适合于分析。
在构建新功能时,您应该富有创造性。您可以使用其他函数的组合,从数值型转换为分类型(反之亦然),或者将变换函数应用于某个要素。我最喜欢的例子是,如果你有地理数据点,而不是仅仅抛出纬度/经度,你用它们来确定一个共同的位置的距离。
(例如,计算出的玩家效率等级,一个综合指标,来自现有数据,用于模型中)
另一种类型的特征工程使数据更适合您的分析。许多人使用主成分分析(PCA)或因子分析来减少数据中的特征数量。对于某些类型的模型,这可以改善结果并减少多重共线性。对于其他分析,您还必须缩放数据。当算法中使用几何距离时,这一点很重要。
(例如,对具有许多相关变量的数据集使用 PCA,以便我们可以使用线性模型来预测季节点)
第 7 步:模型构建和评估 —我将在下一节更深入地探讨这一点,但是您应该比较多个模型,以确定哪一个对您的特定问题具有最佳结果。您希望使用训练和测试数据进行交叉验证,这样您就可以看到哪个模型概括得最好。您还应该特别注意如何评估您的模型。能够解释您选择评估指标的原因。
(例如,比较随机森林、拉索回归和 SVM 回归预测 NBA 得分)
第 8 步:将模型投入生产(可选) —如果我看到有人通过网页或 API 将他们的模型“活”起来,我总是会印象深刻。这表明他们乐于使用更高级的编程技术或软件包。我比较偏爱 python,所以一般用 flask 来做这个,但是我见过别人用 R Shiny。
(例如,制作一个网页,在你选择了一个队、一个对手和一个地点之后,给你一个预测的分数)
第九步:回顾——你应该总是回顾项目,看看你本可以做得更好的地方。不是所有的项目都很完美(大多数不是),所以你应该能够指出面试官可能会在你的分析中戳到的任何漏洞。我还建议你根据当前项目的发现来思考下一个项目。
(例如,我应该在分析中考虑速度,我想看看我是否能找到裁判通过这种方法影响结果的比赛)
如果你想了解更多关于如何将数据科学项目从包中分离出来的技巧,请查看:制作令人难忘的数据科学项目。
你应该做的 4 个项目
按照上面的生命周期步骤,这些是我推荐的项目。您绝对不应该将自己局限于这些项目,但是做这些项目将会说明您拥有大多数基础数据科学概念的经验。
项目 1:预测一个连续的结果(回归) —首先,你应该创建一个有数字结果的问题。然后你应该比较各种线性和非线性回归模型如何回答这个问题(OLS、拉索、支持向量机、决策树、随机森林等)。).你应该能够解释你所使用的技术的优点和缺点。你也应该考虑把它们结合起来(合奏),看看你得到什么结果。
项目 2:预测分类结果(分类器) —这里的步骤与回归项目非常相似。这一次,你要选择一个分类问题来解决(二进制或非二进制)。同样,你应该比较各种算法在回答这个问题上的表现(朴素贝叶斯、KNN、SVM、决策树、随机森林等)。).
项目 3:根据相似性对数据进行分组(聚类) —聚类可以帮助您从未标记的数据中找到意义。这是从噪声中建立类别的最有用的方法之一。我建议做一个使用这种技术的项目,以显示你对无监督学习的理解。
项目 4:使用先进的技术(神经网络、XG 提升树等。) —欢迎您在之前的任何项目中使用先进的技术,但我相信您应该有一个专门关注这些技术的项目。并非所有的数据科学家都使用深度学习,但你应该熟悉这些概念是如何工作的,以及它们是如何应用的。
在这些项目中,具有最佳精度或 mse 的模型实际上可能不是解决所提出问题的最佳模型。请确保您了解推荐一种算法而不是另一种算法的其他原因。
最后的想法*
在我列出的为什么数据科学项目很棒的清单中,我注意到它们实际上可以和真实的工作经历一样好,甚至更好。我这样说是因为我看到许多数据科学项目产生流量、收入,甚至成为新企业的基础。项目可以帮助你学习概念和找到工作,但它们也有可能完全取代对工作的需求。
金融领域替代数据的前景
探索从基本面投资分析到量化管理的战略转变的影响系列。

因为替代数据正在改变资产管理公司——对冲基金、共同基金、基金会和养老基金——的投资管理流程,所以理解推动这一数字化转型的复杂力量提供了战略机遇。没有跟上这一巨大转变并更新其投资流程的投资经理正日益面临战略风险和非中介化:他们很可能被围绕替代数据构建其流程的现有和新的竞争对手击败。
经验丰富的投资经理越来越多地使用来自新闻和社交媒体的替代数据源、来自电子邮件、语音和视频通信的元数据、来自卫星的信息和其他地理空间信息来增强他们的决策过程。大多数资产经理看到了使用这些信息提高他们的 alpha 生成能力的直接好处,以支持结构化时间序列和会计信息的性能。许多包含替代数据的基本面投资者被称为定量投资者。
将从 twitter 信息中提取的信息与复杂的分析工具相结合,已被证明能为投资经理提供显著的额外回报;不仅在理论上,而且在实践中。2012 年,研究人员将 S & P 500 股票与 twitter 数据相关联,发现每日推文数量与某些股市指标相关,当包含 twitter 数据时,可以更准确地预测收盘价的变动。
在一系列文章中,我通过将学术研究与投资经理的实际经验结合起来,更具体地回答一些关键问题,探索替代数据的前景。
- 数字经济如何创造可用于改善投资决策的替代数据流和新的信息来源?
- 替代数据的当前类型是什么?
- 如何将各种替代数据来源纳入投资管理流程?
- 如何最好地评估用于算法交易的替代数据源?
- 机器学习和人工智能对替代数据的承诺是什么?
- 为什么自然语言处理(和情感分析)在投资管理过程中使用替代数据方面最有潜力?
在我们开始探索之前,有几个定义。一般来说,金融领域的替代数据包括用于从非金融和非传统领域提取洞察力的数据,以提高 alpha 生成。这些替代数据集是通过各种数字和非数字交互生成的,通常是“大数据”或金融交易、传感器、移动设备、卫星、公共记录和互联网或尾气数据的结果。
投资管理中的 alpha 生成能力的定义描述了超过设定基准的投资组合或策略回报的超额回报,该基准可以是市场或指数标准。Alpha 是反映策略表现或管理者技能的主动回报,来源于“alpha”(希腊字母α)。用于描述归因于市场表现或行为的回报的术语,通常称为“beta”(希腊字母β)。一个好的经理有很多阿尔法。
实际上,替代数据通过更高质量的信息,承诺并似乎为老练的投资经理提供了额外的阿尔法。在金融领域,圣杯总是在寻找真实、优质的信息来源,从而获得优势。替代数据只是这种探索的新表现。
一个很好的例子是情绪分析和自然语言编程持有的承诺:使用机器学习和认知计算等高级分析技术从演讲、推文、博客帖子、新闻故事、新闻稿和演示中提取的信息允许以极快的速度快速处理这些信息,提供容易量化的指标。
为了理解如何使用数字经济的结果来生成 alpha,下一篇文章将探讨替代数据流和新的信息源是如何不断生成的。
量化投资的前景

Picasso style transfer onto a stock exchange board picture implemented using VGG19
尽管仍可能被一些人视为(一种新的)时髦词汇,但由于数据科学的进步,量化投资比以往任何时候都更有潜力
在 2000 年代中期,当我第一次开始与投资专业人士讨论量化投资的概念时,差距似乎太大了:当量化投资者(量化投资者,认为是 T4 的吉姆·西蒙斯)追求基本面来源的统计概括时(传统的,可互换使用);沃伦·巴菲特通过与公司管理层交谈、仔细阅读财务报告、在同行中赢得竞争地位等等,获得了投资洞察力。后者支配着前者,两个分支彼此不怎么说话。
以下是自那以后发生的一些变化:
- 包括机器学习在内的数据科学开始起步,这部分是由强大的开源编程语言(如 Python、R)以及令人惊叹的软件包(如 Pandas、Scikit-Learn、Caret、Tidyverse)以及机器学习框架(TensorFlow、PyTorch)实现的;进行描述性、规范性和预测性分析比以往任何时候都更容易
- 数据本身已经变得非常丰富,以至于即使是一群分析师也无法有效地处理所有数据,或者至少以一种经济上合理的方式处理。
- 在需要人类用户参与最少的地方,替代数据已经出现,例如卫星图像或社交媒体情绪评估。
- 前所未有的竞争压力正迫使投资经理在寻找阿尔法和调整商业模式时寻求更多的创新、效率和规模。
- 计算能力已经变得非常便宜,以至于功能强大的计算机或租用能够处理大数据的云都非常实惠。
- 数据科学和整体数字化的影响有可能迅速扩展到投资经理的所有职能,而不仅仅是投资组合管理;做得好的人一定会获得竞争优势。
- 量化投资享有比以前更大的市场份额——在凯恩斯选美比赛中,算法代表了新的“面孔”和决策者。
人们可以说,许多长期投资策略已经是量化的了:在最基本的形式下,如果一位传统经理使用量化筛选来过滤掉一些证券(例如,放弃其同行中市盈率高于平均水平的证券),或者如果一位量化分析师通过人为干预否决了模型(例如,市场环境的剧烈变化使模型的建议受到怀疑),这两种方法都可以被视为使用混合的量化方法。两者都有能力限制:在传统的经理人方面,随着证券数量的增加,对目标领域所有股票的同等研究覆盖越来越不可能;在量化方面,我们还没有(还没有?)观察 AlphaZero 的两个专注于投资的变体之间的、的“完美游戏”,其中人类的参与将被视为一种阻碍(这与埃隆马斯克对自动驾驶汽车未来的观点不无相似)。当我经常看到司机们努力遵守基本的环形交叉路口交通规则时,我对后者深有同感。
因此,投资管理行业面临的真正问题是:

虽然无法确定这种混合会扩大到什么程度,但我们可以从关注投资经理的常量开始,类似于亚马逊早期的战略方法——例如:
- 客户:更好地了解客户需求和更好的服务
- 成本:在不牺牲产品和服务质量的情况下尽可能低
- 数据:更多、更多样化(表格、图像、空间、语音、文本和网络)和更好的质量
- 数据处理:更快更准确
- 想法实现:更多工具(如产品、技术和算法)可供选择
- 洞察力:更好的识别信号和快速过滤噪音的能力(并检测何时一个变成另一个)
- 投资过程:持续的治理和改进
- 基于常规和/或规则的流程:自动化程度更高
- 技术: Citius,Altius,Fortius
- 交易执行:技术上可能的最快速度
数据科学是上述许多因素的促成者和贡献者之一;解决这些问题可能是一个显而易见(但不一定容易)的胜利。然而,我们遇到了一个非常人性化的问题——拥有基本技能的数据科学家普遍短缺。此外,为了在应用商业环境中更加有效,我们需要他们获得实质性的领域知识,理想情况下还需要 CFA 证书持有者,这本身就要求通过三个众所周知的困难考试,并拥有相关的专业经验。
组织内部的文化变革也不容小觑,尤其是当数据科学的引入很活跃时——有时围绕该学科的期望和现实可能相差甚远。虽然引入定量方法(或一般的数据科学)可能会引发一些怀疑,并促使组织调整,但转型变革不是必需的——至少不是马上。例如,最初不需要:
- 购买新技术,直到现有技术明显不足以满足需求,
- 获取新的数据集,直到现有的数据集被充分利用,
- 雇用整个数据科学团队—对于许多任务,可以提升现有员工的技能。
在内部迈出采用数据科学的第一步后,至少应该有小的进步,从而有更多的信心和勇气来追求进一步的改进。随着时间的推移,为了追求更好的结果,复杂性将不可避免地增加(希望不会增加到客户或另一个受益者的身上),因此确保内部专业知识持续存在,并且不会产生过多的技术和知识债务将是至关重要的。
在国际象棋中,一个强大的新组合出现了——一个人和一台机器——他们一起下棋,可以取得比单独一个人更大的成就。在投资中,哪一项比国际象棋或围棋复杂得多,而人类还没有(至今?)被击败,我期望两者之间的共生关系继续增长。我毫不怀疑先进的数据科学应用将在投资管理中扎根,其速度、深度和广度取决于组织的文化和重点。随着数据科学增强了对世界和内部专业知识积累的更高水平的定量观点,新的机会和应用将会出现-如果不先尝试一下,很难知道那里有什么。
时间会告诉我们 quantamental 是否会成为一种独特的投资方法,或者在其各种实施方式中,融入许多投资机构的“常规业务”中。在等待迷雾散去的时候,已经有清晰可见的常数轮廓值得追寻。
处理混合型数据的正确方式。最先进的距离度量。
有趣的事实: Scikit-Learn 没有任何能够处理分类和连续数据的 距离度量!如果我们有一个混合类型变量的数据集,那么我们如何使用聚类算法,例如 k-NN?

Photo by Fredy Jacob on Unsplash
更新(27/07/19) —该包已在 PyPI 发布为 Distython 。我已经发表了一篇文章来解释它是如何工作的。
我在 IT 创新中心的暑期实习期间遇到的一个大问题是,缺乏既能处理混合类型数据又能处理缺失值的距离度量的现有实现。它开始了我对能够满足这些要求的算法的长期探索。在几篇研究论文之后,我发现了非常有趣的距离度量,当处理混合类型的数据、缺失值或两者兼而有之时,这些度量可以帮助提高机器学习模型的准确性。我在业余时间实现了它们,并在 Github 上发布了它们的代码实现,所以你可以通过 Scikit-Learn 轻松使用它们。但是怎么做呢?我将在本教程中解释这一点!
我喜欢数据科学的原因是,它吸引了许多对人工智能和数据科学充满热情的志同道合的人。这就是为什么我想在 Linkedin 上与你联系!您也可以通过我的个人网站留下任何反馈和问题。
异构距离度量概述

Photo by Annie Spratt on Unsplash
在我们开始之前,我想推荐看一下这篇论文,如果你想更深入地了解我将要谈到的算法。我在这里的主要目标是为您提供对这些算法的直观理解,以便您可以将我的文章用作快速参考表。你可以在文章的最后找到实用的部分,并附上代码。我们开始吧!
距离度量
但是等等……距离度量实际上是什么?距离度量测量数据集中两个实例之间的距离。它们根据实例的特征来度量它们之间的相似性。比如,假设某医院的病人有两个属性:身高和年龄。那么,我们可以说,某个医院的老病人和矮病人会非常相似,而一个年轻的高个子病人不会与老病人和矮病人有那么多相似之处。
距离度量只是算法,它可以根据属性告诉你两个实例之间的相似性。一些最流行的距离度量是欧几里德距离、曼哈顿距离、汉明距离和余弦距离。它们通常用于聚类,例如最近邻算法。
大多数流行的距离度量只能处理一种类型的变量。如果您将它们用于包含混合类型变量或缺失值的数据集,它们会非常失败。幸运的是,研究人员一直在试图解决这个问题,而且很少有有趣的最先进的算法来帮助你克服这个问题。
异质欧几里德重叠度量(HEOM)
HEOM 可以处理异构数据以及缺失值。简单地说,它结合了 3 种不同的算法来处理每种情况。

HEOM, overview [1]
HEOM 查看实例的每个属性( x 和 y ),并根据数据类型进行以下计算:
- 如果分类-如果属性属于同一类,则返回 0,否则返回 1
- If numerical 使用归一化欧几里得度量计算距离
- 如果缺失—返回 1
然后,我们获得一个存储每个属性的距离的结果向量。为了计算最终结果,可以使用以下等式:

The final result of HEOM [1]
它是每个距离平方的和,并存储在结果向量中。不需要使用平方根,因为它不会改变两个实例之间的相似性(即,如果 a > b 则这也成立:sqrt(a)>sqrt(b)),并且减少了必要的计算总量。
算法实现可以在我的 Github 库这里找到。
价值差异度量(VDM)
这一个实际上不直接处理异构数据,但是一些异构距离度量使用它作为他们算法的一部分。这就是为什么对它的工作原理有一个直观的理解是有好处的。这里的数学可能有点复杂,但算法的一般概念并不困难。这个等式是基于条件概率的。对于数据中的特定列(属性),满足值 x 和 y 。

VDM algorithm [1]
其中 P a,x,c 是在给定列(属性)和输出类c.** 的情况下,出现值 x 的条件概率如果你仍然感到困惑,请参考这篇论文以获得更好的理解!**
该指标只能处理分类数据,因此特征和结果变量都必须是分类的。稍后,您将看到围绕此问题的一些解决方法,包括离散化线性要素或将其用作更复杂算法的一部分。
异类值差异度量(HVDM)
*与 HEOM 类似,该指标使用不同的算法处理每种数据类型(分类、数值或缺失)。你可以把它看作是赫姆和 VDM 的结合。对于连续数据,使用归一化距离,它基本上是两个值之间的距离除以 4 方差。对于 HEOM 也是如此,但唯一的区别是分母(使用方差是更好的选择,因为它处理数据集中的异常值)。对于分类数据,使用归一化 VDM。最终距离如下所示:

HVDM — final distance [1]
这三种情况中的每一种都可以用下面的等式来描述:

HVDM — distance metric for each case [1]
根据这篇论文,归一化的 VDM 有 3 种不同的类型:n1、n2 或 n3。我不会在这里详细讨论——这超出了本文的范围,也没有必要对算法有一个很好的、直观的理解。你要知道的是,论文作者声称 n2 是最准确的。
实用部分

Photo by Chris Ried on Unsplash
我们将使用那个 Github 库进行实践。到目前为止,我已经实现了 HEOM,VDM 正在开发中。请随意在 Github 上创建一个 PR 来为项目做贡献。从头开始编写这些算法并确保它们正确运行需要花费大量时间,因此非常感谢您的帮助!
要安装存储库,请按照自述文件中的说明进行操作。只需要使用一个简单的命令 git clone、和可选的pipenvinstall来安装必要的包。
这些指标被设计成可以直接应用于 Scikit-Learn 中的最近邻(和其他聚类算法)类。您可以将它与 Scikit-Learn 类一起用于您的个人项目,只要它们提供一个调用定制度量函数的接口。
Importing necessary libraries
在上面的代码中,我们导入了必要的库和 HEOM 度量。我们还将使用波士顿房价数据集,因为它同时具有分类和数字特征。
Define the indices for categorical variables and NaN equivalent
这里,我们导入数据并将其定义为 boston_data。这里重要的部分是我们必须告诉 HEOM 度量什么列是分类的。 nan_eqv 在这里用来告诉 HEOMNaN是如何表示的。需要注意的重要一点是:最近邻不能直接处理 np.nan ,所以我们必须声明某些 nan 等价。
Introducing missingness to dataset
在上面的代码部分中,我们将缺失引入数据(出于示例的目的)并将其指定为 nan_eqv。
Defining heom_metric and neighbor
然后,我们定义我们的 heom_metric 并提供必要的参数。它必须在最近邻居之前定义,因为我们必须提供一个从 heom_metric 到邻居实例的可调用度量函数。这就是将 HEOM 与 Scikit-Learn 一起使用的全部内容。这很简单,不是吗?有关使用 Scikit-Learn 的自定义距离度量的更多信息,可在这里找到。
Fitting the data and printing the results
在最后一步中,我们拟合模型,并使用 HEOM 作为距离度量函数返回 5 个最近邻。
这就是处理具有异构距离度量的混合类型数据集的全部工作。我希望你现在配备了一些新的工具,可以帮助你建立更准确的机器学习模型,也希望你对处理缺失数据更有信心!
参考
[1] D. Randall Wilson,Tony R. Martinez,“改进的异质距离函数”
使用机器学习指标的正确方法
对于给定的问题,很难选择正确的精确度。拥有一个标准化的方法是每个数据科学家都应该做的。

本文的计划
- 动机
- 第一考虑
- 最大似然模型的精度测量
- 使用这些方法为您的问题选择正确的 ML 模型
注意,在本文中我主要关注二元分类问题,但是这种方法与多元分类和回归问题类似。
动机
试着说服某人你的 ML 模型是准确的,应该被信任,因为它的 LogLoss 是 0.34。非数据科学家肯定会呆呆地看着你,而数据科学家会询问更多的信息。
作为一名数据科学家,您知道很难讲清楚(特别是对非数据科学家而言)为什么您的模型应该被信任,因为您无法轻松地将复杂的准确性度量转化为有形的元素。而且那是 100%合法的,模型应该是大家都懂的,至少是他们的准确性。
最重要的是,如果你的方法在科学上是正确的,你的模型应该至少有两个精确度——在训练和验证集上测量——如果没有更多的话——在维持、交叉验证上测量。
精确度有很多衡量标准。准确地说,scikit 上的21-learn仅用于分类问题。因此,对于 1 个模型,在训练集和验证集上有 21 x 2 = 42 个值。如果您尝试 5 种不同的模型,您会查看 5 x 42 个值吗?

21 measures of accuracy from scikit-learn documentation for Classification problems
你看到它的走向了:
- 向非数据科学家解释清楚机器学习模型的准确性的困难来自于
- 科学方法的强制性复杂性****数据科学家要构建一个有效的机器学习模型必须经历的过程
因此,你应该问的问题是如何使用这些准确性的衡量标准,在验证你的模型之前你应该检查多少,哪些应该与非数据科学家分享,以说服他们你的模型是准确的,哪些太混乱而不能分享。
第一考虑
一些精确度的测量是简单和直接的,一些是非常复杂的。有的是正数,有的是数列,有的是图表!如何正确地选择和验证您的模型以及各种各样的方法…
所以…首先要做的是:
- 将你的工具箱缩小到关键指标,然后
- 遵循正确的方法,以适当的方式使用它们
9 个必须知道的准确性衡量标准

ML models, like statistical models, make 2 types of error. But there’s multiple ways to measure that, from the simple Confusion Matrix to the more advanced LogLoss.
4 项基本措施
一个 精度精度,回忆混淆矩阵 。这些是标准的,你应该已经知道了。它们很容易理解,并且是你必须与业务团队分享的。****

Understanding the Confusion Matrix in a gif 😃
然而,对于数据科学家来说,它们还不足以在几个模型中找出最佳模型。这是因为这些措施只关注二元结果,而不是模型预测的置信度(即概率)。以下措施以不同的方式解决了这一限制。**
4 项中间措施
P 精度召回曲线 :如果你改变你的模型的阈值概率(一般默认为 0.5),精度和召回会反方向变化。阈值越高,准确率越高,召回率越低。同样,阈值越低,准确率越低,召回率越高。目标是确定在精确度和召回率之间具有最佳平衡的阈值。

Looking at the Precision-Recall curve above, some data are easily classified by the model (high Precision), but some are not (low Precision)
F 如果对于一个给定的问题,精度比召回重要 5 倍,那么 F-5 分最高的模型(beta=5)应该是这个问题的最佳模型。
F-beta 评分范围从 0 到 1,1 为完美模型。
ROC 曲线 : ROC 是二战中雷达工程师使用的接收机工作特性的首字母缩写。这个定义在机器学习中已经过时了。ROC 曲线是一种直观显示模型性能的简单方法。如果 ROC 曲线高度向左上方倾斜,这意味着模型非常准确,而直的对角线意味着模型不比扔硬币好多少。

On the left side: ROC curve. On the right side: predicted probabilities of the ML model. The further away the red and blue curves (positives and negatives) the better the model and the more skewed the ROC curve
A UC: 曲线下面积的简称,基本上是 ROC 曲线中一个正数所包含的信息。AUC 很棒,因为它使比较多个模型变得简单:你选择 AUC 最高的一个。然而,很难解释 AUC 的价值。75%的 AUC 绝不等同于 75%的准确性(我有时会听到这种说法……)。通常,好的 AUC 值从 0 . 75 开始,但是这取决于问题,看绝对值通常没有帮助。你宁愿用它来比较模型。如果你的模型的 AUC 为 0.57,这意味着你的数据中可能没有信号。
AUC 范围从 0.5 到 1,1 为完美模型。
1 项高级措施
L 它为每个预测概率分配一个权重。概率离实际值越远,权重越大。目标是最小化所有误差权重的总和。请注意,如果概率接近 0,而实际值为 1(相反的值 1 和 0 也是如此),则权重会急剧增加。LogLoss 区分对错误预测过于自信的模型,并大量用于机器学习,因为它具有有用的数学属性。问题是 LogLoss 的值无法解释。

How do you explain a LogLoss value of 0.34 to a business team? You simply cannot.
正确使用这些方法

These measures of accuracy will underpin a framework to select and validate the right ML model
您可以计算您尝试的所有模型的精确度,找到每个模型的最佳阈值,将它们的混淆矩阵与其最佳阈值进行比较,并最终决定哪个模型 x 阈值最适合您的问题。这将需要多次迭代、数千行 Python 代码和大量令人头疼的事情才能完成。**
或者你可以遵循一个更简单有效的方法。分三步走的方法:
- 尝试不同的模型,并使用 LogLoss/AUC 对它们进行排序
- 一旦确定了最佳模型,使用精确度-召回曲线/F-score/ROC 曲线选择最佳概率阈值
- 解释您的结果,并与混淆矩阵、精确度进行交流&回忆
具体来说,
- 尝试不同的模型,并使用 LogLoss/AUC 对它们进行排名首先,机器学习领域没有免费的午餐。您永远不会预先知道哪种算法对特定数据集最有效。尝试不同的模型,这样你就有更大的机会找到解决你问题的最佳模型。
然后使用 LogLoss 和/或 AUC 对它们进行排序,并确定最佳候选。为什么?LogLoss 和 AUC 是正数,非常适合比较模型。事实上,它们很简单,但同时它们嵌入了许多抽象的数学概念,确保具有最佳 LogLoss 或最佳 AUC 的模型是“好的”。这就是它们在 Kaggle 上被广泛使用的原因。
当然不要在训练集上看 LogLoss/AUC,在测试集上看它们(或者更好,在交叉验证上;请始终保留一份样本)。请注意,使用 LogLoss 选择最佳模型可以得到比 AUC 更多的校准模型(论文)。
_
举例:你尝试 5 种不同的模型:XGBoost、RandomForest、SVM、决策树、正则化逻辑回归。微调后,XGBoost 在 5 重交叉验证中具有最佳 AUC。您选择 XGBoost 并转到第二步。 - 使用精确召回曲线/F 值/ROC 曲线选择最佳概率阈值 一旦确定了最佳模型(或 2-3 个候选模型),使用精确召回曲线(或 F 值或 ROC 曲线)来确定要为您的模型保留的最佳概率阈值。这需要对如何解释精确召回曲线有很好的理解。
_
示例:查看精度-召回曲线,您会注意到,对于 20%的召回,XGBoost 模型达到了 90%的精度。然而,当召回率增加到 50%时,准确率下降了 50%。在这个问题上,假设你专注于高精度。因此,您选择了一个阈值,该阈值给出了 90%的精确度,而您知道您在数据中只捕捉到了 20%的阳性。 - 解释您的结果,并使用混淆矩阵、精确度和回忆 进行沟通,最终得出对业务至关重要的信息。对于模型做出的 100 个预测,有多少个是正确的?使用选定的阈值,模型将永远不会捕捉到多少个案例?…企业可以将数字和美元数字放在它们旁边,甚至获得预期的投资回报。
_
例:90%的精度是指模型预测的 10 个阳性病例中,有 9 个是正确的。假设对于这个问题,一个正确的肯定预测意味着节省 1000 美元,一个错误的预测意味着节省 0 美元。对于在第二步中选择的概率阈值(获得 20%的召回率和 90%的准确率),根据历史数据,您估计模型平均每月将预测 50 个阳性病例。这转化为
50 x 90% x 12 个月 x 1000 美元=每年 54 万美元。这是将 ML 转化为商业价值的一种方式💸💸💸
附加备注
- 如果可能的话,获得一个非 ML 基准。衡量现有的基于规则的引擎、专家的判断、简单的策略或简单的统计模型(逻辑回归……)的准确性。这样,你就可以量化 ML 的附加值(有时并不一定更好)
- 当我说这只是关于准确性时,我撒谎了。选择最佳模型还应考虑模型是否学习了正确的方法,并理解它为什么预测这种特定的方法(使用功能重要性、部分相关性、预测解释等工具)。有时最好选择一个不是最好的模型,但是它有更少的变量,花费更少的时间来获得新数据,并且更容易生产
文献学
- http://arogozhnikov.github.io/2015/10/05/roc-curve.html
- https://data wookie . netlify . com/blog/2015/12/making-sense-of-logarithmic-loss/
- https://www . machine learning plus . com/machine-learning/evaluation-metrics-classification-models-r/
- https://machine learning mastery . com/roc-curves-and-precision-recall-curves-for-class ification-in-python/
检察官的谬论
法庭上的条件概率

The lasso of truth
假设你因谋杀被捕。
你知道你是无辜的,但犯罪现场的物证与你的描述相符。检察官认为你是有罪的,因为鉴于你是无辜的,找到这一证据的可能性很小,陪审团应该放弃你实际上没有犯罪的可能性。
但是这些数字并不合理。公诉人误用了条件概率,忽略了你,被告,在他们提出证据之前有罪的可能性。
检察官谬误 是贝叶斯定理在法庭上的误用。鉴于所有的证据,控方、法官和陪审团没有问被告无罪的概率,而是错误地问如果被告无罪证据出现的概率是多少(一个小得多的数字):**
p(被告有罪|所有证据)
p(所有证据|被告是无辜的)
贝叶斯定理
为了说明为什么这种差异可以拼出生或死,再想象一下你自己是被告。你想向法庭证明你说的是真的,所以你同意测谎。
巧合的是,发明测谎仪的同一个人后来创造了神奇女侠和她的真理套索。

Coincidence?
威廉·莫尔顿·马斯顿在 1922 年詹姆斯·阿方索·弗莱被指控谋杀的案件中首次展示了他的发明。

Frye being polygraphed by Marston
对于我们的模拟,我们将从本文中选取一个更现代的测谎仪的平均值(“对于有罪的受试者,CQT 的准确度估计范围为 74%到 89%,假阴性为 1%到 13%,对于无辜的受试者,准确度估计范围为 59%到 83%,假阳性率从 10%到 23%……”)

请检查一下这些百分比。鉴于这项研究发现绝大多数人在大多数时候都是诚实的,而且“大谎言”是像“不告诉你的伴侣你真正和谁在一起过”这样的事情,让我们慷慨地假设 15%的人会在测谎仪测试中撒谎,而 85%的人会说实话。
如果我们在这些假设下用这个测谎仪测试 10,000 个人…

1500 people out of 10000 are_lying
1215 people out of 10000 are_true_positives
120 people out of 10000 are_false_negatives
8500 people out of 10000 are_not_lying
1445 people out of 10000 are_false_positives
6035 people out of 10000 are_true_negatives
在应用贝叶斯定理之前,需要知道的重要区别是:
- 真正的阳性者是那些撒谎但没有通过测谎仪测试的人(他们被正确地筛选了)
- 假阴性是说谎的人,而击败了测谎仪(他们被错误地筛查)**
- 假阳性者是那些说了实话但无论如何都没有通过测谎的人
- 真正的否定者是那些说了实话并通过测谎的人
明白了吗?很好。
现在:如果你,被告,得到了一个积极的测谎仪测试,有多大可能你真的在撒谎?
测谎仪考官真正想知道的不是 P(+|L),而是测试的准确性;而是 P(L|+),或者假设测试结果为阳性,你说谎的概率。我们知道 P(+|L)与 P(L|+)的关系。
P(L|+) = P(+|L)P(L) / P(+)
为了弄清楚 P(+)与我们先前对某人是否说谎的了解无关,我们需要使用全概率定律计算阳性检测事件的总样本空间:
p(l |+)= p(+| l)p(l)/p(+| l)p(l)+p(+|lc)p(lc)
也就是说,我们不仅需要知道假设你在说谎时检测阳性的概率,还要知道假设你没有说谎时检测阳性的概率(我们的假阳性率)。这两项之和给出了检测阳性的总概率。这让我们最终确定你说谎的条件概率:**
*The probability that you are actually lying, given that you tested positive on the polygraph, is 45.68%.The probability of a false positive is 54.32%.*
给定一个积极的测试结果,你实际上在说谎的概率只有 45.68%。那是比机缘差。注意它与测试的准确度水平(81%真阳性和 71%真阴性)有什么不同。与此同时,即使你说的是实话,你被错误地指控撒谎的风险也接近——事实上,略高于——几率,为 54.32%。不放心。**

事实上,马斯顿是个臭名昭著的骗子。
Frye 法院裁定测谎仪测试不能作为证据。直到今天,测谎仪测试在法庭上是不被接受的,因为它们不可靠。但这并没有阻止检察官的谬论以其他更阴险的方式蔓延到法庭。
这种统计推理错误在刑事司法系统中猖獗,并破坏了依赖于从指纹到 DNA 证据到手机信号塔数据的一切的刑事案件。更糟糕的是,法院经常拒绝统计学家的专家证词,因为“这不是火箭科学”——这是“常识”:
- 在荷兰,一位名叫露西娅·德·伯克的护士被判终身监禁,因为她曾接近“可疑”死亡,一位统计专家计算出随机死亡的概率不到 1/3 . 42 亿。受检察官谬误影响的计算是不正确的。真实的数字更像是五十分之一(甚至五分之一)。此外,许多“事件”只是在调查人员知道她就在附近后才被标记为可疑的。**
- 一名英国护士,Ben Geen,被指控为了让病人苏醒的“快感”而诱发呼吸停止,声称呼吸停止是一种罕见的现象,不可能是偶然发生的,因为格林就在附近。
- 在专家错误地将同一家庭中两个孩子死于婴儿猝死综合症的几率引用为 7300 万分之一后,英国的母亲们因谋杀她们的孩子而被起诉
本·基恩
由于信息自由的要求,本·基恩的案例中的数据是可以获得的——所以我简要地分析了它们。
*# Hospital data file from the expert in Ben Geen's exoneration case
# Data acquired through FOI requests
# Admissions: no. patients admitted to ED by month
# CardioED: no. patients admitted to CC from ED by month with cardio-respiratory arrest
# RespED: no. patients admitted to CC from ED by month with respiratory arrest*

与 Geen 工作的医院最相似的医院是至少出现一例呼吸骤停的大医院(尽管数据中的“0”很可能意味着“数据缺失”,而不是零事件发生)。

*ax = sns.boxplot(x='Year', y='CardioED', data=df)*

*ax = sns.pairplot(df, x_vars=['Year'], y_vars=['CardioED', 'RespED', 'Admissions'])*

Pairplots for admissions data and cardiac vs. respiratory events
与 Geen 工作过的医院相当的四家医院是 Hexham、Solihull、Wansbeck 和 Wycombe。Solihull 的数据(心脏和再灌注)非常异常:




在考虑了数据中的差异后,我们可以计算出,平均而言,没有伴随心脏事件的呼吸事件发生的频率大约是心脏事件的 5 倍(平均每次呼吸入院有 4.669 例心脏入院)。

不伴心力衰竭的平均每月呼吸停止次数约为 1-2 次,波动较大。这并不特别罕见,当然也不罕见到要把一个护士送进监狱一辈子。(你可以在这里阅读更多关于这个案例和这个数据,在这里看我的 jupyter 笔记本。)
看起来,常识并不常见——司法系统应该更加认真地对待这个问题。
原载于https://www . espritdecorpus . com/posts/the-procurators-fallacy/。**
公共云没有杀死 Hadoop,但是复杂性可以

作者:蒙特·兹韦本
对于三大 Hadoop 分销商来说,2019 年是艰难的一年。从 1 月份对 Cloudera/Hortonworks 合并的内部乐观和外部怀疑到 5 月份 MapR 的末日即将来临的信以及随后被 HPE 收购,到 6 月份 Cloudera 非常糟糕的星期三股价暴跌和 Tom Reilly 的离开,消息一直不好。也许最有说服力的内容来自 Cloudera 的季度收益公告,该公告将 Hadoop 的挑战描述为需要云解决方案:
虽然第一季度一些客户因预期新平台的发布而选择推迟续约和扩展协议,影响了我们全年的前景,但这种客户反馈和热情证实了我们目标市场对企业数据云解决方案的需求。”
复杂性杀死了

Hadoop is complex in the cloud too
如此多的文章声称公共云已经杀死了 Hadoop,但是正如我以前在这里写的一样,我对这种分布式技术的未来有一种相反的看法。
Hadoop 面临两大挑战:
- 操作复杂性——使基于商用硬件的大规模分布式系统保持活跃、高性能和安全的开发人员负担。
- 开发复杂性—将许多不同的计算和存储组件连接在一起以形成一个功能性解决方案,而不会因数据移动而出现延迟的开发负担。
公共云解决了运营复杂性挑战。这对于像 Cloudera、Hortonworks 和 MapR 这样的云计算后来者来说是一个重大的打击。AWS、Azure 和 GCP 几乎消除了操作 Hadoop 生态系统核心组件的操作复杂性。
然而,我认为即使在公共云中,成功采用这项技术仍然面临着巨大的挑战。AWS 的产品页面上有数百种计算和存储解决方案。我们的观点是,这个行业留给开发商的太多了。
你是想造车还是想开车?

Using Hadoop is like assembling a car from components
Hadoop 是一套非常棒的技术组件!我们用它来建立我们的数据平台。但是,通过我与努力实施 Hadoop 的首席信息官的多次交谈,我开始相信这些组件可能太低级了。打个比喻,当我们需要交通工具的时候,我们是基于我们的交通需求而买车的。我们不购买独立的汽车零件,如喷油器、车轴、发动机和悬挂系统。我们让制造商来组装。
同样,当你必须连接 AWS Dynamo 来运行一个应用,AWS Redshift 来分析数据,AWS SageMaker 来构建 ML 模型,AWS EMR 来运行基于 Spark 的 ETL 等等。你在组装“汽车”。这就是所谓的“λ建筑”的管道胶带。

然而,这导致了复杂性和数据移动。数据移动会导致等待数据被“ETL”时经常遇到的延迟。此外,创建这些体系结构所需的技能稀缺且昂贵。
因此,无论是否通过迁移到云来消除运营复杂性(这确实不是一项小任务),您仍然会受到将所有计算和存储连接在一起的集成复杂性的困扰。
预集成打包方法

我们的观点是,就像交通运输的“汽车”一样,公司需要大规模可扩展的基础设施来组合运营、分析和 ML 工作负载,但他们不应该自己组装这种功能。我们相信 Hadoop 的某些组件非常适合嵌入和集成,使公司能够构建新的应用程序并使其现有应用程序现代化(您可以在 Splice Machine 这里看到我们是如何做到的)。其他人以其他方式将组件集成在一起。但尽管如此,我们认为这种预集成是必不可少的,在这种集成普及之前,Hadoop 仍然很难实现——即使是在公共云中。
Python 包 Dreamteam
作为一名数据科学家,我几乎完全用 Python 编码。我也很容易被配置的东西吓到。我真的不知道什么是PATH。我不知道我的笔记本电脑上的/bin目录里有什么。这些似乎都是你必须熟悉的,以免当你试图改变任何东西时 Python 在你的系统上崩溃。经过几年的努力,我偶然发现了 pipenv/pyenv 组合,它似乎以一种对我来说最有意义的方式,在很大程度上解决了我的 Python 设置难题。
直到最近,我还在用自制的安装 Python 3 和venv作为我的 Python 依赖辩论者。大多数情况下,venv对我来说非常有用。从 3.3 开始,它就包含在 Python 中了,所以它感觉像是 Python 生态系统中的一等公民。存储一个充满虚拟环境的目录,并在我想要创建或激活虚拟环境的任何时候输入完整的路径,这感觉很奇怪,但似乎工作得很好。在用 Python 3.7.0 安装 TensorFlow 遇到问题后,我决定寻找一个替代方案。

在某些情况下,我的项目工作流程是从克隆一个标准的研究存储库开始的,使用一个叫做 Cookiecutter 的工具。这个标准回购有一个方便的默认requirements.txt(与 Jupyter,TensorFlow 等),以及一个一致的目录结构,帮助我们保持我们的研究项目漂亮整洁。为了能够在几个月/几年后重新访问一个项目,记录所有依赖项的特定版本以允许项目的环境被容易地重新创建是很关键的。这也让其他人可以让你的项目在他们的系统上工作!在之前的venv中,我写了一个 Makefile,它将特定的版本写到一个requirements_versions.txt中。这并不理想,因为它不会记录特定的 Python 版本,有时您会忘记运行 Make 命令。
根据我的工作流程和以前使用venv的经验,我有一些关键需求:
1.无缝记录特定的 Python/包版本。
2。很好地处理多个 Python 版本。
3。尽可能把东西放在项目目录中。
pyenv
pyenv 是一个非常好的管理多个 Python 版本的工具。您可以轻松地设置您的全局 Python 版本,使用特定版本启动 shell,或者为特定项目设置版本。
在 MacOS 上,安装相对简单:
1.xcode-select — install
2。brew install openssl readline sqlite3 xz zlib
3。brew update
4。brew install pyenv
5。将eval “$(pyenv init -)”添加到您的 shell 配置文件中。
6。exec “$SHELL”
现在,您可以通过 pyenv 的简单命令轻松安装和使用不同的 Python 版本。其中包括pyenv install安装特定版本、pyenv global设置全局版本、pyenv local设置特定目录版本。您还可以使用环境变量PYENV_VERSION来设置特定会话的版本。
pipenv
在我看来,pipenv 是 python 最好的包管理器。它会自动为您的项目创建和管理虚拟环境。它还与 pyenv 合作,根据需要安装和使用 python 版本,这正在改变生活。
在 MacOS 上,安装非常简单:
1.brew install pipenv
因为它是独立安装的,所以您也不会看到任何奇怪的,
You are using pip version 9.0.1, however version 18.0 is available.
似乎永远不会消失。
pipenv 使用Pipfile而不是requirements.txt工作。当您第一次在一个项目目录中运行pipenv install(您可以像使用pip install一样使用它)时,它会在那个目录中创建一个Pipfile。您甚至可以使用pipenv install -r requirements.txt从requirements.txt安装。当您安装、删除或更新软件包时,该文件将自动更新。它还记录了你的 python 版本!激活环境就像从项目目录中运行pipenv shell一样简单。不要再试图回忆你把你的环境放在哪里或者你把它叫做什么!
结论
忽视适当的包版本管理是非常容易的,尤其是作为一名数据科学家。然而,不适当的版本管理导致的问题可能会越积越多。从不能让合作者运行您的代码,到几个月后不能运行您自己的代码,您很容易浪费大量时间来修复依赖性问题。做对也可能是一件令人沮丧的事情。对我来说,pipenv/pyenv 组合是一种享受。它自动化了适量的工作,而不牺牲一致性。
PyTorch 训练循环

设置
现在我们知道了如何执行矩阵乘法和初始化神经网络,我们可以继续进行训练。一如既往,我们将从占领 MNIST 开始。

然后定义一个非常简单的模型。

我们将选择交叉熵作为我们的损失函数,准确度作为我们的度量。

我们还将设置开始学习的学习速率和时代数。

训练循环
我们现在将从头开始编写训练循环。

然而,这看起来效率并不高。尤其是我们更新权重的部分。不需要遍历每一层并更新它的参数,如果我们能一起更新我们所有的参数就好了。我们希望能够做这样的事情:

为了做到这一点,我们希望我们的模型存储所有层的信息,然后当我们对它调用.parameters()时返回它。让我们创建一个虚拟模型如下:

在这个模型中,我们使用了 Python 特殊的名为__setattr__.的 dunder 方法,这个方法将在我们每次设置属性时被调用,例如self.l1 = nn.Linear(n_in, nh)。
所以现在我们每创建一个层,都会进入这个方法,把层的信息存储在一个叫做self.modules的字典里。然后,我们可以使用这个字典来生成我们所有的参数,如下所示。
这就是 PyTorch 在我们从nn.Module继承时在幕后为我们做的事情,这就是为什么我们必须首先调用super().__init__()。

然后我们可以在模型上调用named_children()来获得我们的层。

我们可以使用model.parameters()直接更新我们所有的参数。我们的训练循环现在看起来像这样。

了解 nn。连续的
如果我们创建了一个层的列表,那么我们不能通过简单地执行self.layers = layers来使用model.parameters访问它们的参数。我们需要将每个层添加到我们的模块中,如下所示:

PyTorch 使用nn.ModuleList做同样的事情。所以我们可以做的是:

然而,这仍然是笨拙的,所以我们可以直接做:

我们现在知道了nn.Sequential是如何实现的。
了解优化器
让我们进一步改进我们的权重更新代码,这样我们就可以从

只是为了

为此,我们将定义一个优化器类,并将这些功能放入其中。

我们的训练循环现在看起来干净多了。

了解数据集和数据加载器
我们要改进的下一点是小型批处理。我们分别迭代 x 和 y 小批量,这不好。因此,我们将创建一个数据集,并一起处理它们。

这将我们的循环修改如下:

最后,我们为数据加载器创建一个类,以进一步清理小型批处理过程。

这是可行的,因为yield总是返回下一个小批量。我们最后的训练循环就像简单的英语一样容易阅读。

这就是本文的全部内容。
如果你想了解更多关于深度学习的知识,你可以看看我下面的深度学习系列。
我所有关于深度学习的文章的系统列表
medium.com](https://medium.com/@dipam44/deep-learning-series-30ad108fbe2b)
~快乐学习
参考:
定性数据科学家

Photography by @loicleray
探索定性数据和研究的概念
数据科学被想象成第四种科学范式,这是图灵奖获得者吉姆·格雷说的。他声称科学正在因为信息技术而改变,在某种程度上,我认为他是对的。
因此,通过结合经验、理论、计算和数据驱动,我们有了数据科学。对于一个复杂的领域来说,这似乎是一个直截了当的叙述,但可能需要一些探索。让我们浏览一下一些基本定义和对这个问题的一些想法。
你可能会发现这些定义是基本的,因此如果你已经熟悉这些概念,你可能希望跳过这一部分。同样,我不会称自己为数据科学家,所以你可能会发现这种观点缺乏或不同。
数据科学是一个多学科领域,使用科学方法、流程、算法和系统从结构化和非结构化数据中提取知识和见解。
那么什么是结构化数据呢?结构化数据是指驻留在记录或文件的固定字段中的任何数据。这包括关系数据库和电子表格中包含的数据。例如,谷歌的搜索引擎更喜欢你的数据以特定的方式结构化。
非结构化数据是指没有预定义的数据模型或者没有以预定义的方式组织的信息。非结构化信息通常以文本为主,但也可能包含日期、数字和事实等数据。
半结构化数据是结构化数据的一种形式,它不遵循与关系数据库或其他形式的数据表相关联的数据模型的正式结构,但仍然包含标签或其他标记来分隔语义元素并加强数据内记录和字段的层次结构。
一种简单的方式是,结构化数据在其预期用途的特定环境中工作,例如大数据或具有已定义数据类型的小数据集。使用当然会产生意想不到的后果。
数据类型在计算机科学和计算机编程中,或简称为类型,是数据的一种属性,它告诉编译器或解释器程序员打算如何使用数据。
在计算机科学中,编译器是一种将指令转换成机器代码或低级形式的程序,这样它们就可以被计算机读取和执行。
解释器是一种计算机科学程序,它直接执行用脚本或编程语言编写的指令,而不需要将其编译成机器语言程序(机器代码是严格的数字语言,如 1 和 0)。
数据科学是“统一统计学、数据分析、机器学习及其相关方法的概念”,以便用数据“理解和分析实际现象”。
定性的质量和定性的定义
既然我们有了讨论的基准,让我们看看质量和定性。
质量是一件事物相对于其他同类事物的标准;某事物的优秀程度。尽管可能有其他定义。
统计学中的定性数据也称为分类数据。这是近似或表征但不测量属性、特征、性质等的数据。指事物或现象。定性数据描述,而定量数据定义。定性数据通过非数字属性进行区分,用于根据共享特征对对象组进行分类。
定性研究是一种收集非数字数据的科学观察方法。[1]这种类型的研究“涉及事物的含义、概念定义、特征、隐喻、符号和描述”,而不是它们的“计数或度量”。这种方法经常与社会科学联系在一起,也许特别是社会学和人类学,但是它也用于自然科学或其他领域。
你可以看到,定性数据和定性研究的概念有共同点,但也有分歧。例如,被认为是定性研究的采访或图片,即非数字数据,可能会在计算机系统中编号。数字形式的文字、声音、照片将被中央处理器(CPU)作为数字读取。
这引发了一些直接的想法或担忧:
- 当然,定性研究数据是不稳定的。当以这种数字方式处理时,它很可能变成定量的。这是从方法还是描述的转移?
- 鉴于目前的发展,也许非数字的定性区分在某种程度上是错误的?即使是图像标签也是由数字数据组成的。
- 为了让你的数据非数值化,你要走多远?这种追求是否有利于合作,值得怀疑。
- 无论是在研究中还是在数据中,定性和定量之间的这种区别是一个对立的对,它创造了可能对数据科学的发展富有成效的讨论。
数据科学中定性方法的好处
去年 2018 年 4 月 Robyn Rap 和张晶晶在 Medium 上写了一篇关于 定性+定量定性方法如何支持更好的数据科学 的文章。他们开始讲述机器学习项目中的潜在尴尬,因为你没有想到明显而重要的特征。因此,他们认为,没有定性研究的数据科学家可以对用户行为做出假设,这可能导致:
- 忽略关键参数
- 错过了向使用我们产品的人强调的重要机会,或者
- 曲解数据
在这种情况下,他们张贴了一幅漫画来强调他们的观点。在这一点上,我会推荐你使用 HTML 标记来创建你自己的 xkcd 风格的漫画。

Cartoon created by Indeed UX Research Manager Dave Yeats using cmx.io
另一个我之前在我的文章 社会科学家和人工智能——为了安全、社会和科学 中提到的例子来自 OpenAI。他们在 2 月 19 日发表的名为 AI 安全需要社会科学家 的期刊文章讨论了如何使用特定的定性方法。他们提出的解决方案是用人代替机器学习,至少在 ML 系统能够参与我们感兴趣的复杂辩论之前是这样。在考虑用 ML 替代之前,先试用人类参与者。
**
An example debate with two human debaters and a human judge. Only the debaters can see the image. Red is arguing that the image is a dog, Blue is arguing for cat. Image and caption is fetched from the aforementioned journal paper published in Distill.
当然,定性数据远不止是分类数据。定性研究和定量研究有大量的书籍,事实上,科学方法论是非常受人尊敬的。在说定性数据科学家的时候,我并没有声称有这样的事情,然而讨论是我感兴趣的。在这方面,我不能肯定地说什么是对的,什么是错的,只是相对自由地思考这些概念。
我在数据科学的深水中潜水,却不会游泳,喘着气,同时似乎在批评专业游泳运动员。我无意无礼。相反,在这个“数据海洋”中,我们必须首先检查水质或检查我们与这些活动的关系。
我真的很喜欢趴在齐膝深的水里,看着外面那些人的技术,恐惧地看着未来会发生什么!
这是#500daysofAI 的第 28 天,我真诚地希望你喜欢它。
–
什么是#500daysofAI?
我在挑战自己,用#500daysofAI 写下并思考未来 500 天的人工智能话题。这是我发明的一个挑战,让自己一直思考这个话题,分享我的想法。
这是受电影《夏日 500 天》的启发,主角试图找出爱情失败的原因,并在此过程中重新发现他生活中真正的激情。
对 CNN 模型更高精度的探索
在本帖中,我们将学习使用数据重新设计、超参数调整和模型优化来提高精确度的技术

当涉及深度学习模型时,性能是关键,当资源有限时,这将成为一项艰巨的任务。衡量绩效的一个重要参数是“准确性”。本文旨在通过与数据、算法调整和模型优化相关的各种技术实现更高的精度。我们还将看到在改变诸如学习速率、批量大小、训练图像数量、图像大小和可训练模型参数数量等参数后对准确性的影响。
看完这篇文章,你就知道
- 几种性能改进技术。
- 各种方式加载图像数据,数据预处理与易于使用的数据管道。
- 用于复杂图像分类的定制 CNN 模型。
- 保存模型以备将来使用,并使用保存的模型预测新图像。
首先,我将实现一个我最近发布的代码。(以下链接)这是一个用于糖尿病视网膜病变检测的 TF/Keras 实现。这是一个非常基本的 CNN 模型,精确度非常低。我对这段代码做了一些修改,以获得高精度和快速的训练/数据加载时间。在本文的后面,我将向您介绍性能最佳的代码。
本教程的目的是利用 CNN 开发糖尿病视网膜病变自动检测系统。这是…
使用 ImageDataGenerator 、flow_from_dataframe、各种数据扩充技术、L2 正则化、批量归一化、考虑 Keras 中的类权重对数据子集进行一次热编码,实现了性能最佳的代码。让我们看看所有的性能改进技术。
通过超参数调整提高性能的技术
- L2 正则化>>惩罚模型的复杂性,惩罚大的权重。L2 正则化鼓励权重变小,但不强迫它们精确到 0。
- 学习率(LR)优化>>从基础 LR 开始,随后在下一个时期降低它。
- 批处理大小>>通常尝试你的 GPU 可以处理的最大批处理大小,取决于 GPU 的内存。
- 增加模型容量>>增加模型深度(更多层数)和宽度(每个卷积层中的过滤器数量)。
通过数据重新设计提高性能的技术
- 提高图像分辨率(渐进式调整大小) >>从 128 x 128 x 3 提高到 256 x 256 x 3 或更高的尺寸。
- 随机图像旋转>>改变图像的方向。
- 当对象不在图像中心时,随机图像偏移>>非常有用。
- 垂直和水平移动>>随机垂直或水平翻转图像。(算法应该识别玻璃是面朝上还是面朝下)
通过模型优化提高性能的技术
- 使用子集数据微调模型>>为一些过度采样的数据类丢弃少量数据样本。
- 类权重>>用于训练高度不平衡(有偏差)的数据库,类权重将在训练期间给予所有类同等的重要性。
- 使用训练数据微调模型>>使用模型预测训练数据,针对错误预测的图像重新训练模型。
下表描述了各种车型的性能总结

最后 4 列显示了我们在定义模型和数据处理过程中应用的所有性能改进技术的亮点。一般来说,在进行性能测量时,建议一次更改一个变量,该表仅显示了我们看到性能有所提高或者我们应用了任何新的调优技术的运行。
所有的测量都是在 NVIDIA Quadro M400 GPU 上完成的。这款 GPU 有 8 GB 内存。GPU 在 Ubuntu 16.04 实例上为 GPU 1.8.0 配置了 CUDA 9.0、cuDNN 7.4、TF。
这些测量的一些局限性
- 由于 GPU 只有 8 GB 的内存,你需要仔细设计数据管道和模型,否则你会经常得到“资源耗尽错误”。您可以通过减少批量大小、在加载数据时减少图像大小,以及通过移除少量 CNN 层或引入最大池层来更改模型中的可训练参数数量,来轻松解决这个问题。在我的实验中,我尝试了所有可能的最大值。
- 因为大多数代码使用 flow_from_dataframe 功能来加载图像。它限制了我们通过使用基于特征的中心(ImageDataGenerator 提供的 Keras 功能)进行基于特征的归一化和将图像均值设置为 0。为了使用这两个特征,我们需要拟合 NumPy 数组(image.load_img)格式的数据。不幸的是,我使用的 VM 实例需要很长时间将数据读入 NumPy 数组。
现在让我们看看我们获得 80%准确率的代码
这段代码使用了 mat-plot、NumPy、Keras、Pillow、H5py 和 Tensor-Flow 等 Linux 包。
我已经从 Kaggle 下载了数据库。数据库有几个 zip 文件,我们需要将它们解压缩到包含各自图像的 train/test 文件夹中。列车图像的所有标签都在单独的 CSV 文件中提供。
在下面的代码中,我们将读取一个包含图像标签和名称的 CSV 文件。我们需要做一些健全的检查(添加。jpeg 扩展,删除所有大小为 0 KB 的图像,从数据帧中移除已删除图像的条目)。
让我们将数据库分为训练和验证数据,然后将标签转换为一个热编码标签。我们有目的地在分割数据后进行一次热编码,以保留原始标签格式,以便稍后将标签与预测的标签进行比较。(当我们重新训练错误预测的图像时,这将是有用的)我们还将计算类权重,因为这是一个高度不平衡的数据库。
正如我之前所说,我们将使用 ImageDataGenerator (应用所有图像放大技术、图像旋转、宽度/高度移动和重新缩放)和 flow_from_dataframe (读取所有图像,设置批量大小和图像大小)
让我们定义模型。该模型由二维卷积层和 Relu 作为激活函数、零填充层和最大池层组成。我们还将实现批量规范化和 L2 规范化。这是一个 Keras 功能 API 实现。
初始化优化器和损失函数。我们将使用学习率为 0.01 的随机梯度下降(SGD),它将在每个时期衰减。实际上,SGD 是二维函数,但神经网络可能有数百万个参数,这意味着损失函数可以移动数百万个方向。如果损失函数有局部极小点/鞍点,就会出现“零梯度”,梯度下降就会卡住。如果我们给 SGD 增加动量,鞍点将获得向前运动的速度。增加涅斯捷罗夫的动量将会缩短收敛的路径。
回调将帮助我们保留迄今为止我们训练过的最佳权重和偏差,因为我们将使用多个时段进行训练,每个时段将经历整个训练集。在一定数量的历元之后,总是存在模型过度拟合的可能性,或者准确度可能停止提高,已经保存的权重将是有帮助的。
我们定义的模型如下所示
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_3 (InputLayer) (None, 256, 256, 3) 0
_________________________________________________________________
conv2d_33 (Conv2D) (None, 254, 254, 16) 448
_________________________________________________________________
conv2d_34 (Conv2D) (None, 252, 252, 16) 2320
_________________________________________________________________
batch_normalization_17 (Batc (None, 252, 252, 16) 64
_________________________________________________________________
zero_padding2d_5 (ZeroPaddin (None, 254, 254, 16) 0
_________________________________________________________________
conv2d_35 (Conv2D) (None, 252, 252, 32) 4640
_________________________________________________________________
conv2d_36 (Conv2D) (None, 250, 250, 32) 9248
_________________________________________________________________
batch_normalization_18 (Batc (None, 250, 250, 32) 128
_________________________________________________________________
conv2d_37 (Conv2D) (None, 248, 248, 64) 18496
_________________________________________________________________
conv2d_38 (Conv2D) (None, 246, 246, 64) 36928
_________________________________________________________________
batch_normalization_19 (Batc (None, 246, 246, 64) 256
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 123, 123, 64) 0
_________________________________________________________________
zero_padding2d_6 (ZeroPaddin (None, 125, 125, 64) 0
_________________________________________________________________
conv2d_39 (Conv2D) (None, 123, 123, 128) 73856
_________________________________________________________________
conv2d_40 (Conv2D) (None, 122, 122, 128) 65664
_________________________________________________________________
batch_normalization_20 (Batc (None, 122, 122, 128) 512
_________________________________________________________________
conv2d_41 (Conv2D) (None, 120, 120, 64) 73792
_________________________________________________________________
conv2d_42 (Conv2D) (None, 118, 118, 64) 36928
_________________________________________________________________
batch_normalization_21 (Batc (None, 118, 118, 64) 256
_________________________________________________________________
conv2d_43 (Conv2D) (None, 116, 116, 64) 36928
_________________________________________________________________
conv2d_44 (Conv2D) (None, 114, 114, 64) 36928
_________________________________________________________________
batch_normalization_22 (Batc (None, 114, 114, 64) 256
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 57, 57, 64) 0
_________________________________________________________________
conv2d_45 (Conv2D) (None, 55, 55, 64) 36928
_________________________________________________________________
conv2d_46 (Conv2D) (None, 53, 53, 64) 36928
_________________________________________________________________
batch_normalization_23 (Batc (None, 53, 53, 64) 256
_________________________________________________________________
conv2d_47 (Conv2D) (None, 51, 51, 128) 73856
_________________________________________________________________
conv2d_48 (Conv2D) (None, 50, 50, 128) 65664
_________________________________________________________________
batch_normalization_24 (Batc (None, 50, 50, 128) 512
_________________________________________________________________
flatten_3 (Flatten) (None, 320000) 0
_________________________________________________________________
dense_7 (Dense) (None, 32) 10240032
_________________________________________________________________
dropout_5 (Dropout) (None, 32) 0
_________________________________________________________________
dense_8 (Dense) (None, 32) 1056
_________________________________________________________________
dropout_6 (Dropout) (None, 32) 0
_________________________________________________________________
dense_9 (Dense) (None, 5) 165
=================================================================
Total params: 10,853,045
Trainable params: 10,851,925
Non-trainable params: 1,120
_________________________________________________________________
是时候在 GPU 上训练模型了
这是培训的进展情况,您可以看到我们完成了 80%的培训和验证准确性。
Epoch 1/5
370/370 [==============================] - 1849s 5s/step - loss: 29.1990 - acc: 0.7959 - val_loss: 10.7663 - val_acc: 0.8000
Epoch 2/5
370/370 [==============================] - 2584s 7s/step - loss: 17.5359 - acc: 0.7999 - val_loss: 3.8036 - val_acc: 0.8000
Epoch 3/5
370/370 [==============================] - 2398s 6s/step - loss: 16.2506 - acc: 0.8000 - val_loss: 3.2556 - val_acc: 0.8000
Epoch 4/5
370/370 [==============================] - 2064s 6s/step - loss: 20347.928 - acc: 0.7999 - val_loss: 321.0431 - val_acc: 0.8000
Epoch 5/5
370/370 [==============================] - 2482s 7s/step - loss: 88.7576 - acc: **0.8000** - val_loss: 12.5082 - val_acc: **0.8000**
使用下面的代码,我们还可以看到精度和损耗是如何随时间变化的
这是剧情的样子

为了进一步提高准确性,我们将对错误预测的训练图像进行重新训练。为此,我们将加载刚刚保存的模型,稍后我们将使用预测生成器在相同的训练图像上进行预测。以这种方式,我们将针对先前模型未预测到的特定图像集来微调模型。
现在我们在 df_filtered 中有了一个新的数据库。我们可以使用之前使用的相同的旧数据管道和模型定义。这种再训练让我达到了 82%的准确率。
GitHub 资源库
所有的 iPython 笔记本都可以在https://github . com/swanandM/Diabetic-Retinopathy-Detection-with-TF获得
我们还能做些什么来提高精确度?
在现实世界中,有时很难依赖单一模型。不同的模型可以具有不同的属性,这取决于它所具有的层数、它被训练的参数数量等。特定的模型可能无法对特定组/类型的图像进行最佳预测。在这种情况下,我们可以结合多个模型来做出最佳预测。
在我的下一篇文章中,我们将通过使用我们已经创建的一些性能最好的模型来实现模型集合。模型集成可用于从这些模型中进行投票,以做出最终预测。
参考文献
- "提高训练准确度的不同方法" > >https://towards data science . com/Different-the-way-of-improving-training-accuracy-c 526 db 15 a5 b 2
- “使用 Keras 进行深度学习的图像增强”> >https://machine learning mastery . com/Image-augmentation-deep-learning-Keras/
- “用深度学习诊断糖尿病视网膜病变”> >https://deep sense . ai/diagnosis-diabetic-diabetic-retinopathy-with-deep-learning/
每个数据科学家在面试时都应该问的问题

Photo by Nik MacMillan on Unsplash
你说呢?请告诉我更多
你可能刚从大学毕业,从计算机科学、工程或其他相关领域毕业,或者你可能一直在努力改变你的职业道路。无论你是如何来到这里的,重要的是你现在正在寻找一份数据科学方面的工作。
数据科学家的工作是最受关注的工作之一。它得益于诸如“21 世纪最性感的工作”等迷人的标题,而且自从有了这个概念以来,这个数字一直在增长。这些职位变化很大,有些主要是基于创建模型来做预测,有些则是关于编写管道来将原始数据转换为结构化数据,或者与提高效率有关;总的来说,它将是所有这些东西的混合。
无论如何,只要你能胜任这份工作,他们就会找你,而不是相反,但他们不会这么做。每个优秀的谈判者都知道,达成好交易的最佳方式是扭转局面:他们需要你,但他们会让你觉得你也需要他们。招聘人员在创造这种感觉方面训练有素,正如每个优秀的科学家都知道的那样,最好的战斗方式是进行基于证据的分析,而不是让你的感觉来决定。
你现在怎么拿到这个证据?这里有几个你应该问的问题和你应该寻找的东西。
你说呢?询问示例
通常,这些公司会试图通过告诉你他们如何使用最先进的技术来吸引你,特别是,他们可能会使用脏话:“我们使用人工智能”
你说呢?请告诉我更多
这些话应该敲响警钟。一听到他们,就问例子。90%声称使用人工智能的公司实际上并没有使用人工智能。不要满足于一些泛泛的回答,至少询问一些细节,无论你最感兴趣的是什么。他们可能只有非常基本的模型(我在这里说的是线性回归),他们向客户过度推销这些模型,并试图对你做同样的事情。
如果他们不准备给你任何细节,用“知识产权”这样的借口,带着你的东西尽快离开。他们要么在撒谎,要么遮遮掩掩,这只会造成一个有害的工作环境。例如,像“我们修改了深度学习计算机视觉,如更快的 R-CNN 来检测,数据科学家负责质量测试”这样的答案不会以任何方式侵犯知识产权,但会提供所有必要的信息来了解工作。
如果事实证明它们确实能与人工智能一起工作(无论这对你意味着什么),你会很高兴知道这一点。如果他们没有,但他们解释了他们做的分析类型,而且仍然很有趣,你会很高兴知道的。此外,这种问题也有助于你的面试过程,因为它可能会引发讨论,在讨论中你将能够显示你是知识渊博的:双赢!
询问他们的日常工作
这与前一点密切相关。公司试图吸引人才,这不是秘密。人才通常工作得更好、更快,不需要那么多管理。为了得到他们,他们会毫不犹豫地让事情看起来比他们更好,甜言蜜语,只展示事情有趣的一面。
在这个过程中,当你遇到你未来的同事时,你的工作就是尽可能多地探究他们。询问他们前一天做了什么,这项工作的工作量是多少,每项工作需要多少时间。你可能会发现他们的大部分工作都是基于 excel 表格,或者管理工作量超出了你的预期和愿望。
所以你有股票期权?
一些公司可能会提供股票期权。如果是这种情况,而且是你感兴趣的事情,一定要获取更多的相关信息。例如,你需要多长时间才能解锁,代价是什么?转售条件是什么?如果有试用期或其他类似情况,一定要问清楚试用期是否已经计入解锁时间。
询问远程工作
除了远程工作提供的实际好处之外,我个人认为它能告诉我们公司的很多情况。如果他们对此感到尴尬,那应该会引起警惕。我个人认为这是公司更深层次问题的征兆,比如微观管理,缺乏信任等等。在任何情况下,无论问题的结果如何,都不要犹豫去询问更多的信息。
协商你的薪水
这是一个令人伤脑筋的问题,即使你越来越有经验,有些人还是不放心谈论钱。不幸的是,这是一个常见的错误。没有必要对它指手画脚,只是询问,简单地问。最坏的结果,他们拒绝,但不会影响进程,只要你不要逼得太紧。
查看他们的网站和社交媒体
这是额外的一点,但个人认为也相当重要。因为我也喜欢写文章,所以我喜欢看到那些给员工时间和空间来写博客的公司。这已经变得很普遍了,我相信这证明公司有一个良好的工作环境。
最后一点
不幸的是,许多公司会试图以各种方式利用你。无论是误导你,没有给你完整的信息,增加额外的条款,没有提到的过程中。所有这些对新手来说都是真实的,因为他们缺乏经验。确保不要太天真或太好,仔细阅读你的合同,如果你注意到一些灰色地带,请询问一下。
此外,我提出的很多观点都是关于提问的。这通常很容易看到,除非它开始感觉像警察试镜。在整个面试过程中,尽可能让问题自然,如果你觉得你问了太多问题,这里有一个窍门:把问题转化成陈述。有趣的是,这个过程很像调情。你不想当警察,但同时又想知道更多。使用开放式陈述,利用过去的经验开始讨论,等等。
最重要的是,要友善!虽然这篇文章给出了一个黯淡的公司形象,但它只是作为一种保护和未来证明自己的手段。大多数人都很好,不会试图利用你。
祝你好运!
干得好,你通过了测试!这个统计数字实际上完全是捏造的,尽管个人经验表明它与事实相差不远。
悄无声息的半监督革命
是时候掸去未标记数据的灰尘了?

对于机器学习工程师来说,最熟悉的设置之一是访问大量数据,但只有少量资源来注释这些数据。处于这种困境中的每个人最终都会经历这样一个逻辑步骤:当他们只有有限的监督数据,但有大量未标记的数据时,他们会问自己该怎么办,而文献似乎已经有了现成的答案:半监督学习。
这通常是事情出错的时候。
从历史上看,半监督学习是每个工程师都经历的一个兔子洞,只是为了发现对普通旧数据标记的新发现。每个问题的细节都是独一无二的,但大致来说,它们通常可以描述如下:

在低数据状态下,半监督训练确实有助于提高表现。但在实际环境中,你经常会从“糟糕到无法使用”的表现水平,变成“不太糟糕但仍然完全无法使用”本质上,当你处于半监督学习实际上有所帮助的数据体制中时,这意味着你也处于你的分类器只是简单糟糕并且没有实际用途的体制中。
此外,半监督通常不是免费的,使用半监督学习的方法通常不会为您提供监督学习在高数据领域中提供的渐近属性,例如,未标记的数据可能会引入偏差。参见第 4 节。深度学习早期非常流行的半监督学习方法是首先在未标记数据上学习自动编码器,然后在标记数据上进行微调。几乎没有人再这样做了,因为通过自动编码学习到的表示往往会在经验上限制微调的渐近性能。有趣的是,即使大大改进的现代生成方法也没有改善这种情况,可能是因为好的生成模型不一定就是好的分类器。因此,当你看到工程师今天微调模型时,通常是从监督数据上学习的表示开始的——是的,我认为文本是用于语言建模的自我监督数据。只要可行,从其他预先训练好的模型中进行迁移学习是一个更强的起点,这是半监督方法难以超越的。
所以一个典型的机器学习工程师在半监督学习的沼泽中的旅程是这样的:

1:一切都很可怕,我们试试半监督学习吧!(毕竟那是工程工作,比标注数据有趣多了……)
2:看,数字上去了!不过,还是很糟糕。看来我们终究还是要给数据贴标签了…
3:数据越多越好,耶,但是你试过如果你丢弃半监督机器会发生什么吗?
4:哎,你懂什么,其实更简单更好。我们可以通过完全跳过 2 和 3 来节省时间和大量的技术债务。
如果您非常幸运,您的问题也可能无可否认地具有这样的性能特征:

在这种情况下,有一个狭窄的数据体制,其中半监督是不可怕的,也提高了数据效率。以我的经验来看,很少能达到最佳状态。考虑到额外复杂性的成本,标记数据量的差距通常不是更好的数量级,以及收益递减,很少值得麻烦,除非你在学术基准上竞争。
但是等等,这篇文章的题目不是叫《安静的半监督革命》吗?
一个有趣的趋势是,半监督学习的前景可能会变得更像这样:

这将改变一切。首先,这些曲线符合人们对半监督方法应该做什么的心理模型:数据越多越好。半监督和监督之间的差距应该严格为正,即使对于监督学习做得很好的数据制度。越来越多的情况下,这种情况的发生不需要任何成本,而且非常简单。“神奇地带”起点较低,同样重要的是,它不受高数据范围的限制。
有什么新鲜事?很多事情:许多聪明的方法来自我标记数据,并以一种与自我标记的噪音和潜在偏见兼容的方式表达损失。最近的两部作品举例说明了最近的进展,并指向相关文献: MixMatch:半监督学习的整体方法和无监督数据增强。
半监督学习领域的另一个根本转变是认识到它可能在机器学习隐私方面发挥非常重要的作用。例如,PATE 方法(用于从私人训练数据进行深度学习的半监督知识转移,利用 PATE 的可扩展私人学习),其中监督数据被假定为私人的,并且仅使用未标记的(假定为公共的)数据来训练具有强隐私保证的学生模型。提取知识的隐私敏感方法正在成为联合学习的关键促成因素之一,它提供了高效分布式学习的承诺,不依赖于访问用户数据的模型,具有强大的数学隐私保证。
这是一个令人兴奋的时刻,在实践中重新审视半监督学习的价值。看到一个人长期持有的假设受到挑战,是该领域发生惊人进展的一个很好的指标。这种趋势是最近才出现的,我们必须看看这些方法是否经得起时间的考验,但这些进步可能导致机器学习工具架构的根本转变,这种可能性非常有趣。
数据可视化竞赛:Tableau 的魔力是什么?

比赛刚刚升温。6 月 6 日,谷歌宣布他们将收购数据查询和探索工具 Looker。考虑到 Looker 与谷歌的数据工作室有些重叠,这是一笔有趣的收购。(然而,当我回想起谷歌下一次发布会时,我不记得有一次提到 Data Studio。)收购 Looker 的目的当然是为了缩小谷歌云在大数据和商业分析解决方案市场上落后于亚马逊网络服务和微软的差距。根据 IDC 的数据,这个市场到 2022 年可能达到 2600 亿美元。
尽管这对谷歌来说是一个重大举措,但更大的消息来自 Salesforce,他们宣布计划以 157 亿美元收购 Tableau!这对 Salesforce 意味着什么?我有两个想法。
首先,Tableau 将极大地扩大 Salesforce 的客户群。Tableau 与 Salesforce 平台和 Einstein 等技术非常契合,提供了更易于使用的企业标准可视化工具。这就是为什么以前不是 Salesforce 客户的许多人和公司现在会成为 Salesforce 客户的一个原因,首先是现有的 Tableau 用户,他们可能会将 sales force 带入他们的技术武器库。小公司、独立承包商或只是数据可视化爱好者将很快成为 Salesforce 每月经常性收入的一部分。(虽然,并不是所有的 Tableau 客户都满意。虽然 Salesforce 承诺保持 Tableau 的多平台方法和对多个数据集的连接,但许多现有的 Tableau 用户需要被说服。毕竟,他们是与 Salesforce 目前的用户群完全不同的用户群。)

其次,这使 Salesforce 更接近与谷歌和微软竞争。这两家科技巨头已经分别提供了数据探索工具 Data Studio(和 Looker)和 Power BI。虽然这些软件解决方案很好,但我不认为有人会说它们与 Tableau 处于同一水平。事实上,画面似乎有某种魔力。人们不仅喜欢使用它,当他们谈论它时,他们真的很兴奋。没有多少应用程序可以这么说。那么为什么 Tableau 会出现这种情况呢?
完美的平衡
现在是完全不同的东西,Python。Python 在过去十年中经历了飞速发展。它已经从一些人认为的玩具语言变成了不仅仅是计算机科学家的通用语言,而是所有科学家的通用语言。无论你是天文学家还是化学家,如果你编程,很可能是用 Python。许多人将这一成功归功于 Python 简单而强大的平衡。Python 中的 Hello world 是一个简单的 liner,print(“Hello World”)。这在 Java 中需要三行,在 C 中需要六行(取决于您如何格式化代码)。伴随着编码的简易性而来的还有不错的处理速度。没错,Python 没有 Fortran 快,但是对于一个从 Excel 走过来的人来说,就是闪电了。
Tableau 似乎也发现了这个“恰到好处”的金发女孩地带。它为探索数据提供了高度的可修复性,学习曲线非常平缓。数据可视化的守护神爱德华·塔夫特对此做了很好的总结。“卓越的图形是在最短的时间内给浏览者提供最多的想法…”。
这似乎是 Tableau 的核心设计理念。使用户能够在尽可能少的培训下快速浏览数据。当然,随之而来的是权衡。Tableau 能像 R 的 ggplot2 包一样可定制吗,不能。它能像 D3.js 一样无缝集成到网页中吗,不能。但是与其他两个相比,Tableau 的学习曲线要容易得多。你可以和一个从未使用过 Tableau 的人坐下来,几分钟后他们就会自己去试验和探索数据。Tableau 融合了这些选项的一些最佳特性。它利用了 ggplot 使用的图形语法,并结合了 D3 的交互特性。是的,您失去了一些灵活性,但是在大多数情况下,您获得的速度是值得的。
美丽很难获得
任何试图从零开始设计图表或图形的人都很清楚需要选择的因素的数量。有颜色、背景色、刻度线、线条不透明度、比例、字体大小等。这是一项艰巨的任务。最终你会在编辑过程中的某一点,你甚至不确定这是否是一个积极的改变。如果你想知道选择颜色有多难,看看这个 YouTube 关于 matplotlib 重新设计默认颜色图的过程。
幸运的是,Tableau 为你做了设计选择的重担,10 次有 9 次,它看起来很棒。我问一个同事为什么喜欢 Tableau,他说“它让你的数据看起来很漂亮,你甚至不用去尝试”。蛮的价值不可小觑。
在星盘中,美丽通常是没有干扰。如果颜色不对,或者有太多的刻度线,这会分散观众对数据信息的注意力。弗洛伦斯·南丁格尔有一个很好的例子。她使用了一个简单的极区图,使观众的注意力集中在数据讲述的故事上(这里有一个 Tableau 工作簿的链接,一些人复制了南丁格尔的著名图表)。

可悲的是,其他可视化工具在这一领域仍然落后。
Tableau 的这种开箱即用的美感,结合其平衡的用户易用性,使其成为数据探索和可视化的事实上的工具。Tableau 的用户遍布各行各业,涉及各种工作职能。事实上,可能唯一比 Tableau 更普遍的数据工具就是 Excel 了。
舞台颂歌
我一直很喜欢 Tableau。这是一个很棒的产品,提供了很好的服务。当我听到他们被收购的消息时,我的第一想法是我为他们感到高兴。就好像我听说一个老朋友找到了一份好工作。我仍然记得我的第一本 Tableau 练习册。我在硕士项目的训练营做的。它着眼于 IMDb 的电影评论与烂番茄的电影评论有何不同(这个话题我会再次提及)。从那以后,我可能已经做了一百多个 Tableau 练习册。我用得太多了,已经开始影响到我女儿了。有一次我在家工作,她来到我的办公室,给我看了一张她用彩色笔手绘的图表。这是一个条形图,显示了她有多爱不同的动物,第一是猫。我把它拿过来,用 Tableau 重新制作,让她看看她的作品有多好。

Tableau 对我建立投资组合也很重要。甚至我以静态图像结束的数据可视化也是从我通过 Tableau 工作簿探索数据开始的。无论是展示我在研究生院写了多少行代码,还是展示我在塔可钟吃过多少次,Tableau 都是帮助我讲述故事的工具。
我的个人资料上写着“我是一名数据科学家、数据插画师和作家”。我可能从像尼古拉斯·费尔顿和蒂芙尼·法兰特·冈萨雷斯这样的艺术家那里找到了灵感,但是是画面帮助我实现了这个中间角色。它给了我一个艺术的出口,也给了我一种将美运用到日常工作中的方式。
祝贺 Salesforce 收购了一家伟大的公司。我希望 Tableau 的下一个阶段只会给使用它的公司和人们带来最好的东西,也给那些第一次发现它的人带来最好的东西。
处理缺失数据的真正正确方法

作为一家咨询公司的首席数据科学家,我工作的一个重要部分是面试和聘用数据科学人才,以满足我们不断增长的客户群的需求。我们的数据科学团队的结构对医疗行业的人来说肯定是熟悉的。当你生病或受伤时,你通常会去医院。医院在任何时候都有很多病人,所以给你看病的医生几乎肯定不会是主治医生或内科主任。相反,你更有可能首先被住院医生或实习医生,或者现在的医生助理或执业护士看到。
这些专业人员是第一道防线,必须接受培训,以处理大多数基本和世俗的案件。主治医生监督病人的护理,只有当实习医生或住院医生不确定该如何处理时,他才会被叫去看望某个病人。同样,我们的咨询业务在任何时候都有很多客户,我监督我们所有的项目。然而,因为我不能同时出现在所有地方,所以我通常不是部署到客户站点的顾问。我会派我们的顾问去,因为我知道他或她至少有能力处理客户需要解决的大部分任务。我希望顾问们能够独立处理项目,只需要在最具挑战性的问题上找我。
因为这是我们的商业模式,我需要确保我们只引进最优秀的人才。我在筛选过程中非常仔细。如果顾问没有技能和知识,他们最终会向我寻求帮助。然后那些顾问的项目占用了我所有的时间。我最终加班加点,只是为了跟上项目进度,并确保我们的交付物是高质量和准时的。
在我的筛选工作中,我开始注意到我面试的候选人中的一个趋势。这种趋势体现在我对一个具体问题的回答中:“你如何处理丢失的数据?”最近每次我问这个问题,总是得到这样的回答:“你要么删除带有缺失信息的观察值,要么用某种集中趋势的度量来填充缺失值,比如数值变量的均值或分类变量的模式。”这个答案如此一致,以至于我觉得有必要解决它。
你可能会问自己,“这个答案有什么问题?我以前也这样做过。”我也是。然而,这通常不是我做过的项目,当我做过的时候,这是最后的手段。这个答案我称之为象牙塔答案,因为它来自纯理论。这表明,作为一名行业数据科学家或在项目中与客户打交道,绝对没有实际知识。
那么,真正的答案是什么?简单。你和你的客户谈过了。现在,这个答案是如此的简短,如此的简单,以至于对你们中的一些人来说,这个答案可能会彻底的令人失望。那么请允许我通过分享一个我曾经的经历来阐述。
几年前,我是一个团队的成员,该团队为一个客户建立了一个模型,该客户的业务主要是围绕大订单报价而建立的。该模型向报价专家提供建议,说明如何根据订单中的内容、订购的数量以及客户之前的购买行为等对报价中的项目进行折扣。我们的想法是建立一个可以达到理想平衡的模型,在这个模型中,商品的折扣只是足以让客户购买订单,但不会超过必要的折扣,这样利润仍然可以最大化。
除了你可能会想到的所有贝叶斯统计和机器学习算法都进入了这个模型的设计之外,对客户来说,我们纳入某些业务规则也很重要。例如,他们希望对任何售出的商品保持 25%的最低利润率。客户也希望尊重公布的标价。也就是说,即使数据表明客户可能会支付更高的价格,客户也不会想要出价高于标价。模型的这些限制要求我们知道客户目录中每件商品的成本和标价。
客户拥有这些数据似乎是理所当然的。然而,一旦管理人员将他们目录中所有商品的数据集发给我们,我们发现我们要么遗漏了成本,要么遗漏了相当大一部分商品的标价。举个例子,这个客户卖的东西少则 10 美分,多则 4000 美元。将所有缺失的成本或标价设定为平均值不太可能给出合理的值。那么,我们做了什么?
我们和客户公司的销售主管通了五分钟的电话。我们解释了情况,他告诉我们,他们几乎总是调整价格,使成本在标价的 40%左右。因此,只要我们有标价,但没有成本,我们就可以估算标价 40%的成本。对于任何有成本但没有标价的项目,我们可以估算标价,这样成本就是估算标价的 40%。就这么简单!
在这种情况下,没有集中趋势或数学定理可以给我们正确的答案。我们只知道通过与我们的客户交谈来做什么,所以我们可以理解围绕所讨论的变量的业务逻辑。一些读者可能会想,也许我们可以构建一个简单的模型来推断成本和标价之间的关系。虽然这可能是真的,但这仍然是一个非常象牙塔的答案。使用模型来推断这种关系仍然比不上直接洞察客户的业务逻辑,更重要的是,在商定的前进道路上获得客户的祝福。
这就把我们带到了“利益相关者买入”的话题上要有一个成功的数据科学项目,您需要利益相关者认可您正在做的事情、您是如何做的以及使用哪些数据。我已经看到一个项目中的分析和建模的整个途径被减慢或完全停止,因为,虽然分析背后的数学和理论是合理的,但是涉众就是不能或不愿意参与进来。有时,这可以通过简单地找到一种更清晰和简洁的方式向涉众解释分析来解决。然而,有时这是不可能的,因为利益相关者反对的原因与他们的商业逻辑、价值观或目标有关。
这一点的重要性怎么强调都不为过。我们应该始终考虑客户的商业逻辑、价值观和目标,确保客户的目标就是我们的目标。强力方法,如放弃观察或假设所有缺失值都可以用平均值代替,只应在客户没有明确指导的情况下作为最后手段使用。即使在这些情况下,你也只有在得到客户同意的情况下才能这么做。你肯定不希望在你已经采用这种方法后,发现公司领导觉得这种方法有点过于粗糙或随意。相反,最好是确保每个人都对项目在每个阶段的进展感到满意。
这看起来似乎是低效和缓慢的,截止日期是任何咨询工作中非常真实的一部分。花更多的时间做额外的分析来看看你得到了什么样的结果,用集中趋势的度量来代替缺失的值,以确定要使用的最佳度量,并向你的客户清楚地解释任何特定选择的利弊,这可能很难让人感觉良好。然而,您的项目时间范围正是您需要以这种方式处理这个问题的原因。它最终会节省时间,确保你不会浪费时间去追求那些你的利益相关者会怀疑,并且可能永远不会同意的事情。
如果您的客户无法提供任何关于如何处理丢失数据的有用指导,那么如何继续的最后一个想法是:看看您是否可以为他们尽可能小而简单地解决问题。假设我们与销售主管的谈话并不顺利。说他们在成本和标价之间的关系上没有一个清晰一致的战略。然后呢?作为头脑风暴解决方案过程的一部分,我会把重点放在减少我们为了解决问题所需的要求的方法上。
在这个特殊的例子中,我们很幸运。这些项目被组织成部门,并在每个部门内被划分成项目类别。我不会简单地计算整个数据集的平均成本或标价,而是会尝试在计算集中趋势之前,将项目类别和子类别中的项目聚集起来。这样,我可以知道,并告诉我的客户,所使用的措施只涉及类似的项目。这样,我就不会要求涉众接受如此粗糙的东西。此外,如果在某些情况下,他们对取得的结果不满意,那么我需要成本或标价的数据点就会少得多。使用这种方法,我对客户的要求可能比试图找出所有项目的平均值要小得多,也简单得多。
我确信会有读者想出各种各样的“如果”,关于一个人可能会发现自己在不同的特定场景中会怎样。我不可能在这篇文章中涵盖所有可能的场景。这些例子只是为了说明处理这个问题时的一般方法和思维方式。我将尝试用几条简单的规则来总结这些想法。
1.总是和你的客户谈论数据中缺失的值。
2.如果他们有明确的指导,就接受吧。如果没有,看看你能否理解数据所描述的过程,以及细节如何转化为你在数据中看到的具体表现。尝试了解他们的业务逻辑、价值和围绕数据中表示的流程的目标。即使他们对你有明确的指导,你也应该试着理解所有这些。如果他们不这样做,这应该用来尝试得出你可以遵循的明确的指导方针。
3.如果所有其他方法都失败了,继续使用简单的模型来推断关系,或者测量集中趋势。
4.在进行之前,一定要获得客户的同意,用你认为最好的方法进行。
遵循这些指导方针总会让你的项目进行得更顺利,让你的客户比你先求助于上面提到的象牙塔答案更开心。
数据民主化的真正含义和过程。
如何做以及为什么现在就做…
场景:印度农村的一个小村庄。当公共记录被宣读时,全村的人都聚在一起听。一名村民在公共记录中被列为将他的犁出租给政府赞助的灌溉项目。“不,”他说,“我没有那样做。那时我在德里参加我表兄的婚礼。”有笑声,也有愤怒,因为人们立即发现他们是如何被欺骗的,公共资金是如何从他们和他们的村庄被抽走的。更多的虚假信息被揭露出来:例如,6 公里运输材料的账单项目,而实际上,实际距离只有 1 公里。一名工人,根据政府记录受雇于一条新运河的建设,站起来问:“什么运河?”参与建房的工人证实,供应和使用了 50 袋水泥,而不是 100 袋。在公众听证会结束时,圣歌响起:“我们想要什么?信息。我们想要什么?信息:理查德·卡兰博士讲的故事
在过去的五十年里,许多国家及其政府已经正式承认了针对这些主张的知情权。越来越多的国家,例如南非,在其宪法中确立了知情权。如果机构努力维护公众的合法性,那么对访问权的正式承认是显而易见的。走向更多民主的道路是数据民主化的道路。获取信息与民主的存在之间存在着非常严格的关联。简而言之:为了做出正确的决定并在选票上正确打勾,公民必须被告知。获取信息对于人们实现参与国家治理的基本权利以及在基于公民知情同意的制度下生活至关重要。在任何国家,特别是在民间社会的政策分析能力不发达的国家,如果不能获得政府信息,就无法有效行使政治参与权。听起来很明显?很好:让我们继续,因为除了谈论我的“雄心壮志”,我还想概括地介绍一点关于数据民主化的理论,回答两个主要问题:为什么是现在?又是怎么做到的?以相反的顺序。
数据如何民主化?
我找到的解决方案是建立一个搜索引擎。这显然不是唯一的方法——远非如此。但由于数据科学的出现,这是一个既灵活又强大的领域。
在我选择的这个过程中,我看到了三个主要步骤,我将逐一介绍:
1.使数据易于查找
大多数可以被大众化的数据都可以在某个地方找到。但问题是,就数据有用性而言,“某处”或多或少与“无处”是一样的。如果只有政治竞选经理看到这些数据,你就不能称之为民主化。问题在于发布数据的人的错误 KPI(关键绩效指标)。他们中的大多数人关注的是如何将尽可能多的数据推送到互联网上,而不是关注有多少人会看到这些数据。
如果我们最终同意改变这个焦点,我们将如何实现绩效?这就需要一个好的搜索引擎,有好的搜索引擎优化。一个好的搜索引擎是智能的。与只寻找关键字匹配的简单搜索引擎相反,智能搜索引擎通过识别或推断用户想要的结果的性质来解释查询,识别查询中提到的时间和位置等重要参数,并最终考虑搜索的上下文。一旦它可用,它也需要被使用。可以通过多种方式接触用户。统计显示,数据大多是通过谷歌这样的搜索引擎搜索出来的。因此,良好的 SEO 是实现数据搜索便利化目标的关键一步。
2.简单、易懂且高质量的数据表示
一旦搜索引擎开始工作并可访问,下一步就是显示结果。这一部分看似简单,实质上也很简单。但是试着设计和构建一些看起来和感觉上用户友好的东西,但是要足够复杂以理解整个画面,你会发现这个任务并不是说起来容易做起来难。事实上,大多数想要实现数据民主化的解决方案都远远不符合这些标准。以下是解决方案在以最佳方式显示数据时面临的主要问题:
- 缺乏直接性是由解决方案处理数据的方式造成的:许多解决方案将数据分组放在表中,因此无法显示单个值,失去了直接性;
- 事实上的不精确扼杀了整个交易。可能很难保证完全精确,但落入这个陷阱是肯定的;
- 不回答问题也是用户可能得到的非常令人沮丧的体验之一;
- 来源是必要的;
- 数据上下文是必须的;
- 代表性的视觉效果(如信息图)对理解有很大的帮助

An example of poor quality data representation
一篇关于数据表示体验的更深入的文章即将发表……
3.在增加数据量的同时重复前两个步骤
第三步是在两个方面一直被忽视的一步。
要么是一个解决方案冲进来,添加了所有可能的数据,却无法处理这些数据,要么是相反的情况——添加的数据太少,用户无法从产品中获得足够的价值来使用这些数据。

Illustration by Katerina Limpitsouni
第一种选择是最常见的。我们看到 Statista.com 有很多很多的数据,管理不善,因此搜索功能和 UX 很差。他们的数据从人均 GDP 到电子竞技专业人士统计的堡垒之夜碎片数量不等。几乎所有事情都是如此(除了少数例外):选择数量会损害质量。
相反的问题就不言自明了。
数据民主化需要找到它的速度平衡:搜索和数据曲线的质量与拥有用户所必需的数量之间的交叉点。
为什么现在要民主化数据?
这听起来像是一个荒谬的问题,因为我在引言中提倡数据民主化。我向你保证,我没有改变主意。我只是相信,现在是加快信息传播速度、让更多人看到信息的最佳时机。
首先,我们每天都有大量的数据产生,并且越来越容易被使用。政府正在收集比以往更多的数据,并向公众开放,这些数据的质量正在提高,尽管这一积极趋势的速度和程度在很大程度上取决于国家和地区。守旧、腐败的市长和政府官员可能会造成短期封锁,但从长期和大范围来看,这不会造成问题。
由于数据科学的进步,数据解释也在增加。我将发表一篇文章(与几位伟大的数据科学和开放数据专家合作),介绍如何利用人工智能从数据中获得有趣的见解。

Photo by Elena Koycheva on Unsplash
第二,我们有资源让人们的目光追随这些数据。用户体验的进步(在其广泛的定义中)使我相信“无聊”是可能的,但对决策数据到达大量受众是重要的。在过去的 10 年里,设计师和工程师的合作已经产生了新类型和新设计的界面,它们更方便,更美观,总的来说,它们提供了更好的用户体验。尽管注意力持续时间缩短了,但我们学会了如何更频繁地获得这种注意力。几乎没有人会在 Instagram 上连续花两个小时,但如果你总结一下每天花在上面的时间,你可能会发现一个不同的故事。告诉我我是否天真,但我认为 Instagram 并没有因为其出色的用户体验而享有特权,其他产品,如代表统计信息的产品,可以提供同等的竞争对手来吸引注意力。
最后,但可能是最重要的,现在是时候做这件事了。不是明天。我们有即将到来的选举,我们有许多危机和大量的决定要做。如果我们跟着直觉走,而不是跟着数据走,我们在大多数情况下都会失败。
这里有个问题问你。如果两个候选人竞选连任。更合理的决定是基于新的竞选承诺,还是基于他们在上一个任期内参加会议的记录以及他们的投票历史?
我会选择第二个选项。我相信,如果更多的人选择第二种选择,这个社会将得到更好的代表。
我认为这是一项值得关注的事业。我甚至认为这是一个值得采取行动的原因。
在我最近开始写的一篇公开日记中,我宣布了一个全新项目的开始,我需要一个团队。在我写这篇文章的时候,我已经组建了一个相当大的团队,我正在清除我的想法在我自己和其他人心中的灰尘。如果你觉得你可以做出贡献,请随时给我写信。

This is the HIVERY trademark tagline
全球核武器的现实和俄罗斯核武器如何打开你的灯

India’s Polar Satellite Launch Vehicle (not a nuclear weapon!) launches in 2018 (Source)
探索全球核储备下降的数据和你从未听说过的最有趣的政府项目:现实项目第 3 集
2018 年一个温暖的夏天,我正坐在哈奇纪念馆的草坪上,准备欣赏我最喜欢的交响乐——T2·霍尔斯特的《行星》——这时我看到了由忧思科学家联盟搭建的帐篷。作为一个普遍关心科学现状的人,我走了过去,当我走近时,被一群人吸引住了,他们正围着一个男人讨论核武器的威胁。刚刚读完史蒂芬·平克的enlightning Now,我希望听到更多关于过去 30 年来核武器库存大幅削减的积极消息。
相反,这个人的演讲——正如平克告诉我们对学者的期待——完全是负面的。要点是,人类的愚蠢导致我们制造出能把我们这个物种从地球上抹去的武器,我们处于严重的危险之中。不知所措的是,当那个人停下来喘口气时,我举起手问他是否知道世界上有多少核武器,以及这与过去的数字相比如何。他自信地回答道:“现在比以往任何时候都多,尽管我不知道确切的数字。”
此时,在拥有别人没有的数据所带来的自信(和傲慢)的鼓舞下,我强调了我的事实优势的所有价值:“1985 年,世界上大约有 70,000 件核武器,而今天,在 2018 年,只有不到 15,000 件。这意味着减少了近 80%,此外,今天拥有核武器的国家减少了 4 个。”惊讶之余,这个人要求核实事实,在咨询了一个可接受的来源后,他承认乐观的数字是正确的。虽然我的本意并不是要方得这个人,但这是意料之外的效果,人群开始慢慢散去,人们对他的宣言的热情也消失了。
虽然我无意中失去了他的所有听众,但他同意与我进行讨论(在我为智力伏击道歉后),我们进行了富有成效的辩论,双方都做出了让步:我同意零核武器是最佳选择(尽管目前不现实),他说他将重新构建他的信息,以强调我们在削减核武器方面取得的进展。后来,当我坐在那里听霍尔斯特宏伟作品的音时,我想到了这次经历教给我的东西:
- 即使是专家对世界的看法也是严重错误的。
- 在缺乏数据的情况下,人们会假设人性最坏的一面。
- 当你纠正某人时,不要表现得高人一等。记住,在你阅读统计数据之前,你也是无知的。
在这篇文章中,我们将检查世界各地有关核武器的数据。上述基本数据是正确的——在过去 30 年里,核武器数量和拥有核武器的国家数量都大幅下降。然而,也有一些我们应该担心的问题,包括美国和俄罗斯之间的紧张关系,这威胁到军备控制条约和不稳定国家拥有核武器。除了这些数字,我们还将了解兆吨变兆瓦,你可能从未听说过的最有趣的政府项目,在这个项目中,俄罗斯的炸弹真的打开了你的灯。
本文是现实项目的第三集,旨在减少对数据世界的误解。你可以在这里找到以前的文章和所有的文章,通过搜索现实项目标签。
事实
本文中我们的数据将来自于我们数据中的世界:核武器、美国科学家联合会:世界核力量现状以及史蒂芬·平克的《我们本性中更好的天使(引用了斯科特·萨根)。我们还将利用来自军备控制协会和国务院的信息谈论核武器条约。关于兆吨到兆瓦项目的信息来自军备控制协会。
核武库规模的确切数据是严格保密的,尽管如此,由于国际协议和监控项目,我们可以得到相当可靠的估计。从客观数据来看,我们清楚地看到全球核武器数量呈下降趋势。以下是一段时间以来全球核武器总数(来自《我们的世界》的数据):

Total number of nuclear weapons (deployed, stockpiled, and retired) over time.
全球核储备在 1985 年达到顶峰,此后一直在快速下降。同样,确切的估计数字有所不同,但美国科学家联合会表示,截至 2018 年,数字从 70,300 增加到 14,485。这代表了核武器总量下降了近 80%!
今天,有 9 个国家确认拥有核武器(由于技术/材料需求和国际监督,不太可能有更多的国家拥有核武器):

Countries with nuclear weapons and total numbers in 2018
俄罗斯目前拥有更多整体核武器,而美国拥有更多部署武器。核武器的状态和类型与数量同样重要:
- 部署在洲际弹道导弹或重型轰炸机上,可以瞬间发射
- 库存:存放在军队中,并“指定由委托交付的车辆使用”(可能会部署)
- 退役:退役,等待拆除。
- 战略武器:更大的武器——比如洲际弹道导弹——可以从千里之外的国家发射或者搭载在轰炸机上
- 非战略(战术)武器:较小当量,设计用于战场,可能在友军附近使用
军事用途(部署+储存)总数不到 10,000 件,约 1,800 件武器处于高度戒备状态。就所有类型的核武器而言,全球总量已大幅下降。例如,1986 年,俄罗斯拥有 4 万枚核武器,现在不到 7000 枚。美国从 1966 年的 31000 人下降到 2018 年的 7000 人以下。
另一个令人惊讶的消息是,现在拥有核武器的国家越来越少。4 个国家曾经拥有核武器,但现在不再拥有了:南非、白俄罗斯、哈萨克斯坦(拥有 1400 枚核武器)和乌克兰,后者自愿放弃了 5000 枚核武器,这是世界上第三大核武库。此外,许多曾经追求核武器的国家已经放弃了他们的核武器发展。
在下面的图表中,我们看到了各国开始和放弃发展核武器的时间。

Countries that started and then stopped nuclear weapon development (from Pinker with data from Sagan).
不仅拥有核武器的国家正在努力减少核武器数量,而且许多其他国家也认为发展核武器不是他们想做的事情。1990 年,世界上有 13 个国家拥有核武器,现在已经减少到 9 个。这当然是积极的,但三个拥有核武器的国家对此表示担忧。印度和巴基斯坦已经打了 3 场战争,而朝鲜完全是个未知数。
核试验的减少甚至比核武器的减少更令人印象深刻。自 1996 年《全面禁止核试验条约》生效以来(该条约尚未生效,但被世界主要大国遵守),美国和俄罗斯没有进行过一次核试验。此外,自 1999 年以来,只有一个国家,朝鲜,进行过核试验。

Nuclear Weapons Testing (from Wikipedia which cites this SIPRI document)
全世界核试验的累计总数超过 2000 次,但只有 6 次(0.3%)发生在 2000 年之后。我们可以在这张地图上看到这些测试发生在哪里:

Map of Global Nuclear Tests and Explosions (from Radical Cartography)
总之,今天世界上大约有 15,000 件核武器(其中 9,300 件用于军事用途)由 9 个国家持有。四个国家已经放弃了他们的武器,而至少十几个其他国家已经停止发展。自 1999 年以来,只有朝鲜进行过核试验,核试验数量已降至接近 0。最后,对 2020 年的预测表明,世界上总共将有大约 8000 枚核武器。
我们是怎么到这里的?武器削减条约
全球核武库规模的下降无疑是积极的,正如任何统计数据一样,理解为什么会出现这种情况是有帮助的,这样我们就可以弄清楚这种情况是否会持续,以及我们可以做些什么来保持这一趋势。
简而言之,核武器的减少是因为旨在减少武库的国际条约。我们没有足够的空间来讨论所有这些问题(查看这里的完整列表),但是我们将讨论美俄之间的一些问题。这两个国家总共控制了超过 90%的核武器,因此这些协议具有重大影响。
这里是美国和俄罗斯之间削减核武器条约的概述:

Overview of nuclear agreements between US and USSR/Russia (Source)
从表中我们可以看出,并不是每次谈判都是成功的。然而,已经达成一致的条约是有效的。例如,罗纳德·里根在 20 世纪 80 年代提出的《第一阶段削减战略武器条约》(START I)实现了所有目标,俄罗斯和美国到 2001 年将各自的武器削减至 6000 件。
《第一阶段削减战略武器条约》于 2009 年到期,但在那时,《削减进攻性战略武器条约》已经生效,进一步限制了美国和俄罗斯的库存。令人乐观的是,该条约在参议院以 95 比 0 的投票结果获得通过,这表明双方至少可以同意,我们不需要毁灭的威胁像一把毁灭之剑一样悬在我们头上。目前限制核武器的条约,新的削减战略武器条约,于 2010 年获得批准,并于 2018 年完成削减。我们可以通过比较完成前(左)和完成后(右)的核弹头数量来检验该条约的效果:


Number of nuclear weapons in Russia and US before New START (left) and after (right).
根据最终数字(最右边一栏),但是美国和俄罗斯部署的核弹头数量比条约要求的要少(1550 枚)!新的《削减战略武器条约》将于 2021 年正式到期,并可选择延长 5 年。美国现任总统对《新削减战略武器条约》表示不屑,但是没有迹象表明该条约会提前结束。(关于当前发展的讨论,参见军备控制协会的本页。在目前的政治气候下,还不清楚未来会出台什么样的军备控制削减措施。鉴于此前努力的成功,进一步削减武器条约必须成为美国和俄罗斯的优先事项。
这些条约的核查包括现场视察、信息交流、远程监测和包括卫星在内的监视。为了证明美国遵守了第一阶段削减战略武器条约,365 架 B-52 轰炸机被空运到亚利桑那州,被卸下有用的部件,然后被切成碎片。他们被排除在外 3 个月,让俄罗斯卫星确认销毁。

Destroyed B-52s as part of START I (source)
其他减少核战争威胁的措施都是在没有双边协议的情况下实现的,包括 1991 年老布什宣布,随着苏联解体,美国将从部署中移除几乎所有的非战略核武器(这些是 T2,也称为战术核武器,旨在用于战场)。按照计划,苏联以牙还牙,米哈伊尔·戈尔巴乔夫承诺从海军部署中撤出所有苏联战术核武器。仅这一项被正式称为总统核倡议(PNI) 的法案就将全球核武器总数减少了约 18000 枚。尽管俄罗斯和美国仍然拥有战略和非战略核武器,但总数处于历史最低点(关于这种情况是否会持续的讨论,见这里)。
兆吨变兆瓦:你从未听说过的最酷的政府项目
有时候,特别是当世界的命运悬而未决的时候,政府可以做一些惊人的事情。一个不太为人所知的案例是 【兆吨转兆瓦】计划 ,其中来自俄罗斯核武器的 500 吨高浓缩铀(HEU)被 转化为低浓缩铀(LEU)出售给美国公司,用作核电站的燃料。
这个惊人计划的总体影响是,500 公吨 HEU——足以制造 20,000 枚核弹头——被转化为 14,000 吨低浓缩铀,用于为美国各地的核反应堆提供动力。(这项为期 20 年的计划对纳税人的成本是 0 美元,因为 120 亿美元的铀被美国浓缩公司买走了。)
在该计划的 18 年中(1995 年至 2013 年),低浓缩铀燃料提供了美国核反应堆消耗的全部铀的大约 50%,这意味着美国几乎 10%的电力来自旧的俄罗斯核武器!如果你从核电站获得任何电力,那么你的灯实际上是由俄罗斯的核武器点亮的:

Nuclear power plants in the United States (Source)
兆吨到兆瓦的总收益对两国来说都是巨大的。美国的核反应堆需要燃料,苏联解体后,俄罗斯需要现金。随着该计划在 2013 年成功结束,双方都得到了他们所需要的东西。从那时起,美国已经自愿将其部分 HEU 转化为低浓缩铀,这样它就不能被用于制造武器;2008 年签署了一项协议,允许俄罗斯核工业在 2020 年前供应美国铀产品需求的 20%。
除了物质利益之外,兆吨转兆瓦项目的重要性在于,它表明各国能够克服分歧,特别是当这样做符合双方的经济利益时。这也证明了以前的敌人可以携手合作,和平解决争端。当我们思考如何在个人生活中和国际范围内解决问题时,我们应该明智地记住这个计划:妥协意味着双方都没有得到他们想要的一切,但每个人最终都会受益。
结论
在可预见的未来,核武器不会消失。虽然在一个完美的世界里没有核武器,但我们生活在现实中,而不是乌托邦。因此,作为一个短期现实主义者和长期乐观主义者,我赞赏我们取得的重大进展——大规模削减核武器数量——同时承认需要继续削减。
此外,虽然我很高兴有一些忧心忡忡的科学家,但我更希望他们在站在显要位置上发表意见之前,先把事实搞清楚。告诉人们这个世界比实际情况更糟糕不会导致行动,而是会导致幻想破灭和事情永远不会变好的信念。值得记住的是,进步从来都不是直接线性的,而是在人类历史的大部分时间里一直呈积极趋势,而且在过去几十年里已经加速。正如核武器所证明的那样,事情既可能变得更糟,也可能变得更好,而国际努力确实在全球范围内发挥了作用。
一如既往,我欢迎反馈和建设性的批评。可以在 Twitter @koehrsen_will 上找到我。
生物智能和人工智能的关系
内部 AI
智力可以被定义为一种主要的人类能力,它能完成通常对计算机和动物来说很难的任务。人工智能[AI]是一个试图用计算机完成这些任务的领域。人工智能正变得越来越普遍,关于它与生物智能关系的说法也是如此。通常,这些说法意味着某项技术成功的几率更高,基于这样的假设:模仿生物智能机制的人工智能系统应该更成功。
在这篇文章中,我将讨论人工智能和我们对生物学中智能机制的了解程度之间的异同,特别是在人类内部。我还将探索人工智能系统中的仿生有助于其进步这一假设的有效性,我将认为人工神经网络处理任务的方式与生物系统的现有相似性是由于设计决策,而不是潜在机制的内在相似性。这篇文章的目标读者是那些理解人工智能(尤其是人工神经网络)基础知识的人,他们希望能够更好地评估关于人工智能中仿生价值的经常是疯狂的主张。
从符号人工智能到机器学习
直到 90 年代初,符号人工智能一直是人工智能的主流方法。它依赖人类程序员编写复杂的规则,使机器能够完成复杂的任务。这种方法在解决许多对智能至关重要的任务方面的持续失败,与机器学习形成了很好的对比——机器学习是人工智能的替代方法,对当前人工智能机器的出现至关重要。
1994 年,国际象棋冠军加里·卡斯帕罗夫被“深蓝”击败。这对当时的 IBM 来说是一个巨大的成功,对人工智能来说也是如此。然而,深蓝虽然能够下世界级的象棋,却不能移动棋子——这项任务需要一个人类助手。我们将通过研究决定棋步和物理移动棋子任务之间的区别,开始探索人工智能和生物智能之间的关系。
虽然国际象棋通常被认为是一种困难的游戏,但它的规则实际上非常简单,可以很容易地放在一张 A4 纸上。“深蓝”被编程为根据这些规则计算许多可能的前进方向。在这些步骤中,深蓝选择了最有利的一步。直到 1994 年计算机才击败人类国际象棋冠军的原因是计算能力的限制。虽然国际象棋的规则很简单,但有很多可能的走法——探索其中的一小部分都需要大量的计算。(深蓝的成功实际上在很大程度上也是由于决定避免探索游戏的哪些方面。不过,这个事实与目前的争论没有任何关系。)在深蓝出现之前,计算机无法在现实时间框架内进行如此多的计算,但如今深蓝的计算能力大致相当于一部普通智能手机。因为规则非常简单,任何具有基本编程技能的人都可以编写一个国际象棋程序,只要有足够的计算能力,通过应用这些规则就可以打败世界象棋冠军。这种方法被称为符号人工智能,因为计算机通过遵循预定义的规则(通常称为符号计算)来达成解决方案。
不幸的是,并不是所有的问题都适合用这种方式解决。移动棋子就是一个很好的例子——我鼓励你停下来看一会儿,想想你需要应用什么规则来选择和移动棋子。你必须从头开始,并识别该作品当前的位置——这是图像识别系统的标准任务,目前图像识别系统正获得如此多的关注。棋子是什么样子的?你能定义规则,让计算机在任何光线条件下从任何角度识别棋子吗?形状新颖、人类可以立即识别的作品怎么样?考虑图 1 中的各种棋子。做出这些定义的困难是符号人工智能最终未能转化为图像识别等“简单”任务的原因,尽管它在国际象棋等“困难”任务中取得了巨大成功。同时,符号人工智能的硬编码规则与生物智能的模糊本质没有任何相似之处。基于机器学习的方法比基于符号人工智能的方法更类似于人类智能,但这真的是其巨大成功背后的驱动力吗?

顾名思义,机器学习是人工智能的一个分支,在这个分支中,机器学习自己解决问题,而不是给定一套如何解决任务的明确规则。这通常是通过在任务中反复尝试来学习新的规则,以及每次成功程度的反馈来实现的。这是人工智能和生物智能当前进展之间的第一个基本相似之处。我们生来就没有识别周围物体的能力,也没有(在很大程度上)被告知允许我们识别这些物体的规则。相反,我们看到了大量有时被贴上标签的物体(想想父母给孩子指出的物体),并从经验中学习。
从表面上看,机器学习的工作方式非常相似。电脑会看到数百万张各种物体的图片,直到它们逐渐学会什么是狗、帽子、猫等等。看起来像。尽管这种相似性可能看起来微不足道和肤浅,但它是目前推动人工智能成功的最重要的原则。虽然人工智能和生物智能之间的相似性要深得多,但重要的差异仍然存在。允许计算机学习这些强大规则的机器——人工神经网络(ann)——直接受到生物大脑中神经网络的启发。在本文的其余部分,我们将研究这种相似性与这种技术的能力有多相关,以及这些相似性到底有多深。
神经元
人工神经网络完成的任务在某种程度上类似于生物智能完成的任务,这两类智能系统的构件也是如此。(出于参考目的,图 2 中提供了生物神经元的基本描述。)人工神经元和生物神经元之间的相似性和差异已经被用来论证人工复制生物智能的方法的有效性。然而,这种观点被大大简化了。在这一节中,我将批判性地逐一评估其中一些主张;然而,我将论证的基本结论是,人工神经元和生物神经元之间的相似性不是人工智能有效性的有效推理路线。

简而言之,这两种类型的神经元整合来自多个其他神经元的信号,用非线性函数对其进行转换,并将其输出到其他神经元。
许多人正确地指出,生物神经元使用离散信号进行操作,而人工神经元传递连续的数值。事实上,动作电位是二进制的——在开和关之间没有任何分级。然而,单个动作电位尖峰通常不会显著影响生物神经元。相反,峰值速率(频率)似乎很重要。频率本身是一个连续的值,与人工神经元传递的信息没有本质区别。因此,这种差异的有效性受到质疑。
两种类型的神经元所应用的非线性类型的相似性也有待商榷。的确,生物神经元的二元激活函数(阶跃函数)很难被传统上用于 ann 的 s 形非线性所复制。然而,如果我们认为人工神经元输出的值类似于生物神经元的放电频率,那么我们必须比较一段时间放电产生的功能。模糊阶跃函数的多次迭代的叠加很好地用 s 形非线性来表示,这表明在激活函数中实际上可能存在某种程度的相似性。
不久前,通过引入一种新的激活函数,人工神经网络的性能有了很大的提高。整流线性函数,也称为 ReLU [7],由于其优雅的数学属性,有助于神经元在以前不可能的情况下学习。这一发现的作者还称赞了 ReLU 的生物学合理性。那场争论背后的逻辑我一直不清楚。虽然我确实同意,从表面上看,s 形激活函数并不遵循生物神经元的激活函数,但 ReLU 甚至没有停留在生物学上似乎合理的范围内。相反,它永远不会饱和——这意味着更多的输入总是意味着更多的输出,没有任何限制。生物神经元对它们可以发射多少有一个天然的上限——当发射过多时,它们会疲劳甚至死亡。
长期以来,人们认为神经元执行单一的信号处理操作;然而,最近神经科学家揭示,信号的整合和简单逻辑处理实际上在单个神经元内发生多次。发现该处理已经发生在树突上——在来自许多树突的信号合并之前——而不是仅限于细胞体(参见图 2) [17]。这一发现使得神经元进行的计算比几年前认为的要复杂几个数量级。然而,计算并没有不同,只是在一个神经元内执行多次。因此,在以前使用单个人工神经元的地方使用多个人工神经元应该可以解决这个问题。
人们还发现,神经元对刺激的时间模式很敏感,这与莫尔斯电码有点类似,莫尔斯电码将信息编码为时间上的二进制信号。虽然人工神经元不具有任何这种能力,但是任何 n 位时间模式都可以由跨越 n 个神经元的静态模式来等同地表示。因此,复制这一发现只会增加所需人工神经元的数量,而不会增加它们各自的复杂性。
虽然大量强调人工神经元和生物神经元之间差异的论点经不起推敲,但生物神经元的许多方面肯定不会被人工神经元复制到任何程度。当放电时间过长时,生物神经元会疲劳甚至死亡,它们的功能受激素调节,它们循环神经递质,并且它们受盐和钾浓度等的影响。其复杂性令人震惊,我们还远未理解生物神经元是如何工作的。
事实上,只有一小部分计算是由神经元完成的。几十年来,大约占大脑四分之三的神经胶质细胞被认为只是为大脑中的神经元提供支持功能。然而,人们发现它们以一种以前只有神经元才知道的方式接收、处理和分发信号[10]。到目前为止,由神经胶质细胞执行的计算的含义还远未被理解。
此外,丹尼斯·布雷(Dennis Bray)等生物学家长期以来一直认为,计算不是大脑独有的,而是在生物体内无处不在,蛋白质合成和其他细胞过程不能否认计算的地位。然而,这些过程仅限于细胞内,并不能真正直接影响有机体的行为(尽管对其功能至关重要),因此这对我们理解智力应该没有什么影响。然而,这一观点正受到当前研究的挑战。
去年,一系列发现在科学界引起了轰动,当时发现果蝇细胞可以合成类似病毒的蛋白质,并用它们与其他细胞交流[15]。虽然还不清楚人类是否存在类似的现象,而且这种通信的速度可能非常低,但这是细胞内计算的一个例子,而不是神经元在有机体之间进行通信。这是我们过去认为神经元,或者后来认为大脑的特殊之处。鉴于生物体内计算和交流的巨大复杂性,指望神经元能为我们带来技术进步,以任何程度的准确性对其建模似乎都是徒劳的。
在可预见的未来,人工神经元仍将是一种非常不准确的生物神经元模型,而生物神经元只是用于执行生物智能所需的计算和通信的机器的一部分。这是否意味着人工神经网络实现的人工智能原则上不能实现类似于生物智能的能力?
在结构上,人工神经元是生物神经元的一个极其有限的模型。然而,更详细的神经元模型(如 Numenta)或通过离散尖峰信号进行通信的神经网络(如 SpiNNaker)却未能给 AI 带来任何优势。因此,对人工智能来说,神经元之间的结构相似性可能没有神经元的功能那么重要。事实上,作为执行基本逻辑处理的基本单位,这两种类型的神经元可以被视为非常相似。
我一直把神经网络理解为通用函数逼近器,不管它们是生物的还是人工的(除了逼近器它们还能是什么!).函数逼近器的精确结构不会影响其计算能力,只要它足够通用以逼近期望的函数,并且可以在有限时间内训练。给定足够数量的神经元,人工神经网络可以逼近任何函数[11]。因此,没有理由说它们不能近似生物神经元所执行的功能。这同样适用于任何其他通用函数逼近器,例如不希望与生物神经元有任何相似性的多项式。人工神经网络在人工智能领域比多项式获得更多关注的原因是它们相对容易训练,然而这种情况可能不会持续很久,因为新的研究表明多项式可以在许多 ML 基准问题上击败人工神经网络[19]。带来多项式进步的变化不是它们的结构或计算能力的变化,而是训练它们执行所需功能的新方法。总之,从理论上讲,人工神经网络有可能在基本构件没有相似性的情况下逼近生物功能。剩下的问题是我们能否训练人工神经网络来执行我们感兴趣的功能。
网络和学习
到目前为止,我们只讨论了单个神经元的基本特性。然而,神经元组成网络和训练的方式在历史上对其性能的影响比单个单元的结构更大。
第一个实用的人工神经网络是由弗兰克·罗森布拉特在 20 世纪 50 年代提出的,叫做感知器。它不包括任何隐藏层,因此是非常有限的。然而,其并行特性使其能够轻松学习简单的逻辑——对并行输入执行逻辑比串行输入容易得多,因为不需要存储器来存储中间值。深层还没有出现,主要是因为没有人知道如何训练它们。Minsky 和 Pappert 在 1969 年证明了这种基本的人工神经网络体系结构永远不能解决线性不可分的问题(例如,执行像异或这样的逻辑运算),并得出结论,它们永远不能解决任何实际上感兴趣的问题。在他们的书中,他们错误地认为这个问题是所有人工神经网络的通病,这导致了对人工神经网络的兴趣/资助的大幅下降,基本上停止了该领域近二十年的研究。
直到 20 世纪 80 年代才抢救出安的遗物。一个国际研究小组(David Rumelhart、Jeff Hinton 等人)提出了一种训练深度神经网络的方法,称为反向传播。这立即否定了明斯基和帕佩特的猜想,并开始了对人工神经网络的大规模研究。值得注意的是,反向传播可能是人工神经网络中最被广泛批评为生物学上不可信的方面。
反向传播依靠通过深层人工神经网络反向传播误差来校正/训练深层。反向传播算法起源于自动微分,这是牛顿在本质上没有理解智能背后的生物学的时候开发的一种方法。因此,声称生物灵感是它的起源是愚蠢的。
对反向传播的生物学合理性的主要批评集中在向后反馈信号的要求上,已知生物神经元无法做到这一点(这并不完全正确,因为已经报道了一些向后信号的边缘情况)。然而,神经科学家很早就知道,神经元并不是均匀的同质物质,而是在具有反馈连接的结构化集合中重复出现[2]。因此,完全有可能的是,至少在某些大脑区域,神经元成对存在,其中一个向前反馈,而另一个向后反馈,使得反向传播在神经组件中完全可能。这就是说,到目前为止,还没有令人信服的证据证明错误在大脑中的反向传播——如果这是生物神经网络的一个突出特征,我们应该希望这相对容易观察到。
反向传播是深度神经网络的必要进步,因为深度是给 ann 带来的最强大的概念之一。深度允许问题的层次化表示,即先解决较小的问题(例如检测边缘),然后再处理较大的问题(例如从边缘集合中识别对象)。等级自然也是大脑信息处理的一个显著特征[16],在生物和人工智能之间提供了一个优雅的排列。
人工神经网络功能的另一大改进是引入卷积作为主要成分之一[13]。卷积本质上意味着在数据中移动过滤器以识别特征。这给人工神经网络的训练带来了很大的优势,因为它大大减少了需要调整的自由参数的数量。有趣的是,有充分的证据表明,类似的原理正在大脑中应用[6],这也许是让大脑非常有效地处理视觉刺激的关键现象之一。
到目前为止,我们已经看到,对反向传播的生物学不可行性的批评是站不住脚的(尽管到目前为止还没有发现生物神经网络中反向传播的证据),卷积似乎在生物学上有充分的依据。然而,当代人工神经网络的最后一个方面并不遵循这一推理路线。通过单位矩阵[12]初始化权重是一种有助于训练更深层次网络的技术。它之所以有效,是因为最初深层只是原封不动地传递它们的输入——这是一个比从随机的复杂变换中学习更好的起点。正如你可能预料的那样,这并不适合与大脑进行任何有意义的比较,说明生物学虽然是人工智能架构的有用灵感,但迄今为止并不是人工智能进步的唯一手段。
总之,推动人工神经网络目前成功的主要进步集中在如何训练人工神经网络,而不是它们到底是什么。这些进步主要是务实的工程选择和一些可疑的生物灵感的混合,这也是一个很好的工程选择。
智力
到目前为止,人工神经网络与生物神经网络的机制的比较还没有简单的结论。在这里,我将尝试比较人工和生物神经网络产生的智能(高级功能)。为了获得人工神经网络和生物智能之间更深层次关系的真正结论性证据,从一个我们没有明确设计的系统中看到类似生物的行为将是有用的。使用简单神经网络的涌现特性来解释鲜为人知的大脑特性,如大脑区域之间的特殊功能划分,是我自己第一次进入学术研究的议程。
研究人工神经网络的早期动机是它们在某些方面的表现与人类行为的相似性,尽管它们还没有强大到足以解决实际任务。大卫·鲁梅尔哈特和杰伊·麦克莱兰利用这些相似之处,在心理学领域启动了一个完整的研究项目。他们证明,当阅读部分模糊的单词时,人工神经网络和人类以惊人相似的方式推断模糊的部分[14]。后来,Matt Lambon-Ralph 证明了当接触到一种新的语言时,ann 能够以类似于人类儿童的方式学习单词。还有许多其他例子证明了非常简单的人工神经网络和人类行为之间的相似性。
简单人工神经网络和人类的表现之间的相似性并不令人印象深刻,因为这些特定的网络无法解决玩具任务之外的任何问题,因此与人类智能的建模相去甚远。然而,最近,人工神经网络获得了执行一些基本现实任务的能力。对这些的研究表明,当处理相同的视觉刺激时,深度卷积神经网络和人脑的内部状态有相似之处[9]。具体来说,已经证明了两个系统中的表示都是基于分层模式识别的。
然而,这些结果不应该让任何人感到惊讶。神经科学家早就知道,大脑中的视觉处理类似于分层模式识别。Guclu 和 Gerven 的 ann 只是分级模式识别系统的数学规范。因此,这种相似性反映了一种设计决策,而不是一种突现的特性,并且很难用来论证人工神经网络和生物智能之间更深层次的相似性。事实上,大部分涌现的特性为人工神经网络和生物智能之间的功能相似性提供了令人信服的论据。
长期以来,人们一直认为,训练当代人工神经网络所需的数据量与动物能够从很少的观察中学习明显不同。2017 年,谷歌 Deep Mind 在《自然》杂志上发表了一篇论文,吹嘘他们成功地在短短 36 小时内训练了一个名为 AlphaGoZero 的网络,不仅击败了任何人类围棋选手,还击败了 alpha Go——之前最强的围棋选手[18]。然而,对前述《自然》杂志论文的深入研究显示,在这 36 个小时里,AlphaGoZero 玩了 490 万个游戏。这大致相当于以人类的速度不停地走了 559 年,进一步强调了人工神经网络的数据需求与人类学习相同任务的距离有多远。
Dubey 和他的同事在 2018 年很好地证明了类似的问题[3]。与人类相比,人工神经网络需要更长时间的训练来学习玩《蒙特祖马的复仇》(一款老式电子游戏)的基础知识。在混合了游戏中的纹理(例如,天空有地面纹理)后,这个游戏对人类来说不再有意义,而人工神经网络在大约与原始游戏相同的时间内学会了改变的游戏。这个发现暗示了人工神经网络和人类处理新情况的方式之间的显著差异。人类将他们过去的知识应用到新的情况中——例如,他们可能试图爬上游戏中呈现的梯子,尽管与现实世界的梯子存在巨大的视觉差异。然而,这使得人类很难理解看起来像地面的天空。首先,人工神经网络需要更长的时间来学习游戏,因为它们无法应用在不同背景下获得的知识(例如,现实生活),并且当学习新东西时,它们也不受先前假设的约束。如何让人工神经网络应用在不同背景下收集的知识,还远未明朗。在旨在使人工神经网络能够执行这些任务的迁移学习领域已经取得了一些进展,然而,即使是最先进的系统也深深地局限于特定的任务/环境。
这个问题——缺乏进行传递性推理的能力——在我看来是人工智能进步的最大障碍。Hector Levesque 在他的名为《常识、图灵测试和对真正人工智能的探索》的书中简明扼要地总结了这个问题,他提出了一个问题:鳄鱼在障碍赛中表现如何?虽然找到一个答案对你来说似乎微不足道,但它需要迄今为止在任何人工神经网络中从未见过的传递性推理的数量,除了那些专门为此目的制作的人工神经网络——它们无法以合理的标准执行其他功能。
即使人工神经网络能够进行传递性推理,它们的先验知识仍然会与我们的有根本的不同,很可能导致完全不同的行为。这是基于这样一个事实,即人工神经网络使用的训练集与动物可用的训练集如此不同。Linda B. Smith 一直在带头收集幼儿的头部摄像机镜头[1],这与 ML 对象识别数据集相去甚远。最普遍的物体是脸,和一些抽象的图像,比如在天空下画的墙角或树枝;这与用于训练人工神经网络的互联网图像的一般横截面有着明显的不同。我看到了在这个镜头上训练的人工神经网络的巨大潜力,它的表现方式比以前的任何模型都更接近人类。
传递性推理可能只是一个我们还没有实现的功能。然而,有充分的理由相信,即使是目前人工神经网络在特定任务中的成功,也是以与人类非常不同的方式实现的。考虑我通过 Clarifai 公司提供的人口统计估计产品,从一幅图像中估计我自己的人口统计数据的两次尝试(如图 3 所示)。第一次尝试相当准确,结论是照片 99%可能是男性,51%可能是 27 岁,98%可能是白人“多元文化外表”。第二次尝试的结果是 84%可能是女性,61%可能是 23 岁(感谢 Clarifai!)和 40%可能是西班牙裔“多元文化外表”。我还被认为有 18%的可能是黑人或非裔美国人。

我想在这里提出的论点并不是 Clarifai 的人口统计估计产品不好(我让读者来判断),而是它估计人口统计的原则必须与人类完成任务的方式有根本的不同。当然,人们估计人口统计的能力各不相同;然而,如果有人像 Clarifai 一样估计第一张照片中的人口统计数据,那么他们在第二张照片中似乎不太可能如此悲惨地失败。
人工神经网络和人类之间用于视觉对象识别的特征的明显差异可能最好由对立的例子来说明[8]。这些例子是对原始图像的微小扰动,诱使人工神经网络将一个物体识别为与扰动前完全不同的东西。对立的例子骗不了人类,因为我们甚至无法察觉这种干扰。事实证明反过来也是一样的。人工神经网络不会被人类的视错觉欺骗[20]。
人工神经网络显示的智能可以非常类似于人类的智能,只要人工神经网络为此目的被成功训练。例如,经过训练来识别图像的人工神经网络将擅长这项任务,就像生物智能一样,但它几乎不会复制我们完成这项任务的方式,因为这不是训练的目标。因此,人工神经网络在接受训练的任务中的表现,绝不会暗示智力基础上的相似性,而是暗示在工程任务中的成功。此外,人工神经网络需要比人类多几个数量级的数据来学习,目前还没有已知的方法来让它们成功地进行传递性推理——这是一项我们几乎一直在进行的任务,对我们有很大的好处。
结论
这篇文章从多个角度比较了人工智能和生物智能。我提出了一个观点,即没有理由期望两个不同的通用函数近似器具有不同的计算特性——人工神经元和生物神经元无疑都是如此。因此,我们有充分的理由不用担心生物和人工神经元之间的巨大结构差异对从这种机制中产生的智能行为的影响。似乎更重要的是如何学习所需的功能。在这方面,人工智能和生物智能之间鲜有相似之处,除了两者都能够成功地学习我们感兴趣的许多任务。这两种类型的智能之间缺乏相似之处,这突出表现在人工神经网络被明确训练来模仿生物智能的任何任务的表现上的巨大差异。
关于人工神经网络机制缺乏生物学合理性的广泛传播的批评中,很大一部分似乎源于缺乏最新的神经生物学知识。然而,即使排除了不成立的论点,这两种类型神经元之间的差异仍然非常显著,特别是当我们考虑当代神经生物学揭示的令人困惑的复杂性时。与常识中的描述相反,神经元并不是唯一能够进行计算和交流的细胞,这一事实加剧了这种差异。这种能力可能会扩散到神经系统或大脑之外,而且大部分是未知的。此外,目前科学界甚至对神经元的特性也知之甚少。因此,专注于生物神经元表征的真实性似乎相当幼稚。
当我们观察单个神经元之外的人工神经网络结构时,这个故事变得稍微复杂了一些。推动当前 ML 革命的一些技术进步显然在生物学上是不可信的(单位矩阵权重初始化等。),同时也是人工神经网络取得当前绩效的关键。另一方面,一些生物学上有充分基础的思想的实现,如层次模式识别,已经对人工神经网络的性能做出了重要和积极的贡献。
在上一节中,我讨论了人工神经网络和动物智能之间的功能差异。有一项长期的研究工作证明了平凡的人工神经网络和人类之间类似的表现模式。然而,目前还不清楚玩具模型在玩具任务上的表现能告诉我们什么是真正的智力。
最近,人们一直在努力找出能够实际解决现实世界任务的人工神经网络和人脑之间的共同模式。在我看来,这些发现到目前为止还没有发现任何相似的模式,这些模式不是在人工神经网络构建过程中做出的简单设计决策。相反,有大量证据表明,这两种类型的智力是根本不同的。学习所需的数据量相差几个数量级,并且没有能力使用先前的知识或执行传递性推理。最后,用来完成任务的特性是完全不同的。
我想用一种不那么糟糕的语气来结束这篇文章。尽管人工神经网络和生物智能在结构和功能上有很大的不同,但有必要记住一些基本原则(平行、层次、非线性等)。)在人工神经网络中的应用导致了他们惊人的成功,而且可能会有更多的成功。
承认
我感谢凯特·威尔金森对这篇文章的大量编辑和校对。没有她的帮助,阅读这篇文章将是一种折磨。克里斯詹·卡尔姆博士对这篇文章的评论对文章的科学完整性至关重要;然而,并非本文表达的所有观点都反映了 Kristjan 自己的观点。最后,我要感谢 illumr Ltd,特别是其创始人兼首席执行官杰森·李,赞助这项工作。
参考
[1]斯文·班巴赫、大卫·克兰德尔、琳达·史密斯和陈郁。幼儿启发的视觉对象学习。《神经信息处理系统进展》,第 1209-1218 页,2018 年。安德烈·M·巴斯托斯、W·马丁·乌斯利、里克·A·亚当斯、乔治·R·曼贡、帕斯卡尔·弗里斯和卡尔·J·弗里斯顿。预测编码的标准微电路。神经元,76(4):695–711,2012。
[3]拉奇特·杜贝、普尔基特·阿格拉瓦尔、迪帕克·帕沙克、托马斯·格里菲斯和阿列克谢·埃夫罗斯。调查人类玩电子游戏的前科。arXiv 预印本 arXiv:1802.10217,2018。
[4]安德鲁·W·埃利斯,兰邦·拉尔夫,还有一个马修。成人词汇加工中的年龄习得效应反映了成熟系统中可塑性的丧失:来自联结主义网络的见解。实验心理学杂志:学习、记忆和认知,26(5):1103,2000。
[5]埃伯哈德 E 费茨。神经群体中的时间编码?科学,278(5345):1901–1902,1997。
[6] VD Glezer,VA Ivanoff,和 TA Tscherbach。猫视皮层复杂和超复杂感受野作为空间频率滤波器的研究。视觉研究,13(10):1875-1973 年 6 月。
【7】泽维尔·格洛特,安托万·博德斯,约舒阿·本吉奥。深度稀疏整流器神经网络。《第十四届人工智能与统计国际会议论文集》,315–323 页,2011 年。
[8]伊恩·古德费勒、让·普盖-阿巴迪、迈赫迪·米尔扎、徐炳、戴维·沃德-法利、谢尔吉尔·奥泽尔、亚伦·库维尔和约舒阿·本吉奥。生成对抗网络。《神经信息处理系统进展》,第 2672-2680 页,2014 年。
[9]Umut Gülü和 Marcel AJ van Gerven。深度神经网络揭示了跨腹侧流的神经表示的复杂性的梯度。神经科学杂志,35(27):10005–10014,2015。
【10】菲利普·克海顿。胶质细胞:听和对突触说话。自然评论神经科学,2(3):185,2001。
[11]库尔特·霍尼克、麦克斯韦·斯廷奇科姆和哈尔伯特·怀特。多层前馈网络是通用逼近器。神经网络,2(5):359–366,1989。
[12]阔克·V·勒、纳夫迪普·贾伊特利和杰弗里·E·辛顿。一种初始化整流线性单元递归网络的简单方法。arXiv 预印本 arXiv:1504.00941,2015。
【13】Yann le Cun,Yoshua Bengio 等,《图像、语音和时间序列的卷积网络》。大脑理论和神经网络手册,3361(10):1995,1995。
[14]詹姆斯·麦克莱兰和戴维·鲁梅尔哈特。字母知觉中语境效应的互动激活模型:I .对基本发现的说明。心理评论,88(5):375,1981。
【15】Elissa D Pastuzyn,Cameron E Day,Rachel B Kearns,Madeleine Kyrke-Smith,Andrew V .塔伊比,约翰·麦考密克,Nathan Yoder,David M Belnap,Simon Erlendsson,Dustin R Morado 等。神经元基因 arc 编码一种调节细胞间 rna 转移的再利用反转座子 gag 蛋白。单元格,172(1):275–288,2018。
[16]马克西米利安·里森胡贝尔和托马索·波吉奥。皮层中物体识别的层次模型。自然神经科学,2(11):1019,1999。
[17]希拉·萨尔迪、罗尼·瓦尔迪、安东·谢宁、阿米尔·金牙尔和伊多·坎特。新类型的实验揭示了一个神经元作为多个独立的阈值单元起作用。科学报告,7(1):18036,2017。
【18】David Silver、Julian Schrittwieser、、Ioannis Antonoglou、Aja Huang、Arthur Guez、Thomas Hubert、Lucas Baker、Matthew Lai、Adrian Bolton 等人《在没有人类知识的情况下掌握围棋游戏》。自然,550(7676):354,2017。
[19]唐纳德·F·施派特。通用回归神经网络。IEEE 神经网络汇刊,2(6):568–576,1991。
【20】罗伯特马克斯威廉姆斯和罗曼 V 扬波尔斯基。视错觉图像数据集。arXiv 预印本 arXiv:1810.00415,2018。
财富和教育之间的关系
看看财政资源可能在多大程度上影响加州的标准化考试成绩。

Photo by Robert Bye on Unsplash
在读了一篇由Jorge Castaón撰写的关于解读大学录取的文章后,我决定看看财政资源尤其是如何影响加州的标准化考试成绩。我最初的假设是,来自更富裕社区的学生可能在标准化测试中表现更好,然而,我真的很好奇,想知道是否有任何公开的数据支持这一假设,或者它是否会揭示完全不同的东西。如果说数据科学教会了我什么的话,那就是我最初对事物如何工作的看似可能的假设实际上有时是错误的,所以我开始寻找一些答案。
数据
由于我无法获得每个人的资产净值,我认为另一个衡量财务资源的好方法是住房。住在百万美元房子里的人通常比住在十万美元房子里的人富裕得多。我从 Zillow Research 获得了房屋价值数据,这些数据在这里可供公众使用。
虽然肯定不是衡量智力的最佳标准,但像 SAT 这样的标准化考试确实提供了一个很好的衡量教育的综合标准。我从 Data World 获得了加州 SAT 数据,这里也有公开消费。
有了这两个数据集,我觉得我有足够的信心来揭示加州财政资源和教育之间的关系。
方法
我要做的第一件事是清理和转换数据,使其更有用。这是数据科学项目中非常常见的一步,因为对于您的特定用例来说,数据几乎永远不会处于最理想的状态。这通常也使得在某一列上合并两个数据集变得更加容易,然后我按县进行了合并。组合数据集包含各县、12 年级注册学生人数(注册 12)、实际参加测试的学生百分比(PercentTesting)、zillow 家庭价值指数(ZHVI)和平均总分(ATS ),所有数据均按县汇总。随着这个新数据集的创建,我准备开始生成一些答案!
我首先创建了一个 pearson 相关矩阵,以查看每一列与其他列之间的关系。这产生了一些有趣的结果。正如所怀疑的那样,ZHVI 和安非他明类兴奋剂之间的联系强度很大。这也揭示了 ZHVI 和百分比测试之间的关系,这种关系比 ZHVI 和苯丙胺类兴奋剂之间的关系更强。我会让你思考为什么会这样。😉

Pearson Correlation Matrix
然后,我使用这些数据来训练一个随机森林回归器,它接受注册 12、百分比测试和 ZHVI,并输出预测的 ATS。我得到的是一个样本数据的均方误差为 767.69、r2 值为 0.91 的模型。为了了解哪些特征对预测影响最大,我查看了它们的排列重要性,结果显示 ZHVI 是迄今为止影响最大的人。然后,我为每个特征创建了部分依赖图,以进一步探索每个特征如何影响预测,我将在下面与您分享。
对于那些不熟悉部分依赖图的人来说,它们是一种快速简单的方法,可以直观显示每个特性对预测的影响程度。这非常有用,因为某些特征可能会对预测产生巨大影响,但只是在某一点上,超过该阈值后可能不会有太大影响。
y 轴上是每个特征增加或减少预测 ATS 的量,x 轴上是特征。



我发现三幅图中最有趣的是最后一幅的形状。随着参加考试的学生比例增加,预测的 ATS 减少,然后增加,然后再次减少。
最后,为了测试模型在样本外数据上的表现,我用它来预测前几年 SAT 数据的 ATS,得到的均方误差为 1812.11,r2 值为 0.78。
总结
似乎来自加州更富裕社区的学生确实在 SAT 考试中表现更好,然而,我认为经济来源只是更大的一组特征中的一个特征(不幸的是,我们没有这些特征),可以用来更准确地衡量学生在像 SAT 这样的标准化考试中可能获得的分数。
特别感谢Jorge Castaón启发我写这篇文章。
作者克里斯蒂安·约翰逊
过分热心的数据科学家
两大政党的宗教构成
我做了很多数据可视化。大多数时候,在我写代码之前,我对计算的结果有一个很好的想法。事实上,有些结果是如此明显,以至于我甚至不把它们放在任何地方,它们就在我的硬盘上,直到它失效。有时我会做一些图表,盯着看很久,仍然会发现第一次检查时没有发现的新东西。这就是周末发生的事情。举个例子,我在想,在 20 世纪 80 年代和 90 年代,我对两大政党的宗教构成了解有多少。众所周知,宗教右翼已经改变了美国政治,但这又是如何改变共和党的构成的呢?而且,现在非宗教人士占人口的四分之一,他们的存在一定会被民主党和共和党感觉到。
所以我只是做了一些简单的分析。
从 1978 年开始,每十年一次,我拿起一般社会调查,然后对共和党和民主党的宗教构成做了一个快照。我确实对传统的 RELTRAD 类别做了一个修改,将犹太人、少数宗教(佛教、印度教徒、摩门教等)和 RELTRAD 中未分类的人合并成一个类别,我称之为“其他信仰”这使得解释图表更加容易。让我们开门见山:这是过去四十年来民主党的宗教构成。

我首先想到的是,1978 年民主党中最大的群体是天主教徒,其次是福音派,占 22.4%。请记住:1978 年,近四分之一的民主党人是福音派新教徒。主流新教徒紧随其后,占 19.4%。黑人新教徒占民主党的 12.4%(基本上没有随着时间的推移而改变)。反对票约占所有民主党人的 9%。
后来事情发生了很大的变化。主流新教徒占民主党人的比例已经减少了一半,从大约 20%下降到现在的 10%。这不是因为主流人群转向共和党,而是因为主流人群完全消失了。信奉天主教的民主党人的比例也减少了基本相同的数量,10 个百分点。此外,民主党在福音派中失去了份额,福音派现在占民主党的 14.1%,高于我现在的猜测,仍然是民主党中的第三大群体。
那是很大的损失。总的来说,这是主流派、福音派和天主教徒之间 27%的损失。收益从何而来?嗯,大部分是非主流。事实上,自 1978 年以来,认为自己一无是处的民主党人的比例上升了近 20 个百分点。与此同时,“其他信仰”的比例也大幅上升,上升了近 7 个百分点。这真的是民主党转变的全部:福音派和主流新教徒和天主教徒的损失,无党派人士和其他人的巨大收益。

共和党怎么样?1978 年,三分之二的共和党人被认为是福音派或主流新教徒。这仍然让我震惊。正如我们之前所写的,我们需要抛弃主流新教徒是“自由”型新教的观点,在他们的全盛时期,主流新教徒成为共和党人的可能性是民主党人的两倍。在图表的右边,我们看到天主教徒占共和党的 18.6%,而非天主教徒约占 5%。
共和党联盟内部的一些变化令人震惊。例如,40%的共和党人是主流新教徒,现在已经减少到 15%。一组输了 25 分。再说一遍,这基本上是因为主流新教徒现在的规模是 1972 年的三分之一。这确实是共和党中支持率下降的群体。增益怎么样?福音派人数有所上升,但没有人们想象的那么多:只有 7.6%。今天,准确地说,三分之一的共和党人是福音派——这意味着这是两个政党中最大的信仰团体。天主教徒的支持率也有显著上升,仅超过 6 个百分点。这与福音派的收获没有太大的不同,但这似乎是一个被媒体揭露的故事。同样值得注意的是,非共和党人现在占共和党联盟的 13.6%。事实上,非主流的共和党人和主流新教徒的比例差不多。回想一下早些时候,民主党从无党派人士那里获得了大约 20 个百分点,但共和党自己也获得了近 9 个百分点。所以,说非主流完全被民主党俘获是不准确的;相反,如果你只看无党派人士,似乎三分之二是民主党人,其余的是共和党人。
令人欣慰的是,美国的两大政党都不是由一个特定的宗教团体主导的。我知道有大量的文章把福音派和共和党联系在一起,但是数据显示今天超过三分之二的共和党人不是福音派。民主党人也是如此。对他们来说最大的群体(无党派人士)如今只占十分之三的民主党人。任何宗教团体的成员都可以在两个帐篷中找到自己的位置。
Ryan P. Burge 在伊利诺伊州查尔斯顿的东伊利诺伊大学任教。可以通过 推特 或者他的 个人网站 联系他。帖子的语法可以在 这里 找到。
原载于 2019 年 4 月 25 日http://religion inpublic . blog。
推荐系统的非凡世界
推荐系统概述以及它们如何提供一种有效的定向营销形式。

Image by PatternPictures from Pixabay
很多时候,人们不知道他们想要什么,直到你展示给他们看:史蒂夫·乔布斯
以下节选自克里斯·安德森:的《长尾 T3》一书:1988 年,一位名叫乔·辛普森的英国登山者写了一本名为“ 触摸虚空” 的书,讲述了秘鲁安第斯山脉濒临死亡的悲惨遭遇。它得到了很好的评价,但是,仅仅是一个小小的成功,它很快就被遗忘了。然后,十年后,一件奇怪的事情发生了。乔恩·科莱考尔写了' '消失在空气中' ,这是另一本关于登山悲剧的书,在出版界引起了轰动。突然 碰到虚空 又开始卖。
对'触摸虚空'的需求如此之高,以至于一段时间后,它甚至比'卖得还要少。但是这里到底发生了什么?嗯,事实证明,由于这两本书基于相同的主题,亚马逊建议喜欢《走进稀薄的空气》的读者也会喜欢《触摸虚空》的读者。当人们接受这些建议时,他们实际上喜欢这本书,因此写了积极的评论,这导致了更多的销售,最终导致更多的推荐,从而形成了积极的反馈循环。这就是推荐系统的力量。
推荐系统
推荐引擎试图向人们推荐产品或服务。在某种程度上,推荐者试图通过向人们提供他们最有可能购买或使用的建议来缩小选择范围。从亚马逊到网飞,推荐系统几乎无处不在;从脸书到 Linkedin。事实上,亚马逊收入的很大一部分来自推荐。像 Youtube 和网飞这样的公司依靠他们的推荐引擎来帮助用户发现新内容。我们日常生活中的一些建议示例如下:
- 亚马逊
亚马逊使用来自数百万顾客的数据来确定哪些商品通常是一起购买的,并在此基础上提出建议。Amazon.com 的推荐是基于明确提供的评级、购买行为和浏览历史提供的。

I intended to buy ‘Show Dog’ but ended up buying ‘The Compound effect’ too!
Linkedin 利用你过去的经历、现在的职位和认可的数据向你推荐可能的工作。

- 网飞
当我们在网飞上对一部电影进行评级或设置我们的偏好时,它会使用这些数据以及来自数百名其他订户的类似数据来推荐电影和节目。这些评级和行动随后被网飞用来提出建议。

- 脸书
推荐系统,如脸书,不直接推荐产品,但他们推荐联系。

除此之外, Spotify、Youtube、IMDB、Trip Advisor、Google News、以及许多其他平台不断给出适合我们需求的推荐和建议。
为什么推荐人
今天,网上商店蓬勃发展,我们几乎可以通过点击鼠标获得任何商品。然而,在实体时代,存放商品的物理空间有限,因此店主只展示最受欢迎的商品。这意味着许多产品甚至没有展示出来,尽管它们像书籍或 CD 一样质量很好。简而言之,店主必须预先过滤内容。
然而,网购行业改变了这种情况。因为有无限的空间,预过滤的需要消失了。相反,这导致了后来被称为长尾效应的现象。

效果就是受欢迎的产品很少,线上和线下都可以找到。另一方面,不太受欢迎的产品很多,只能在网上商店找到,最终构成了长尾。然而,即使是不受欢迎的产品也可能是好的,在网站上找到这样的产品是一项艰巨的任务,需要某种形式的过滤器。这样的过滤器实际上构成了一个推荐系统。
推荐问题的表述
创建推荐系统主要是为了回答以下两个问题中的任何一个:
- 预测版本
这个版本处理预测用户-项目组合的评级值。在这种情况下,我们有由用户给出的评级组成的训练数据。目的是利用这些数据,预测用户没有与之互动的项目的评分。
- 排名版
老实说,没有必要为了推荐而预测用户对特定项目的评价。在线零售商或电子商务公司并不太关心他们用户的预测。相反,他们更感兴趣的是制作一个有限的清单,列出最好的东西,展示给某个人。此外,客户不想看到系统预测他们对某个项目的评分的能力,他们只想看到他们可能喜欢的东西。
推荐引擎的成功取决于它为人们找到最佳推荐的能力,因此专注于寻找人们喜欢的东西而不是预测人们讨厌的东西是有意义的。
推荐系统的目标

Recommendations will only be valuable if they are relevant
推荐系统的最终目标是增加公司的销售额。要做到这一点,推荐系统应该只向用户显示或提供有意义的项目。 Charu C Aggarwal 在他的著作推荐系统 中将推荐引擎的预期目标总结为以下四点:
- 相关性
推荐的项目只有在与用户相关时才有意义。用户更有可能购买或消费他们感兴趣的商品。
- 新颖性
除了相关性,新鲜感是另一个重要因素。如果商品是用户以前没有见过或消费过的东西,推荐商品会更有意义。
- 意外之喜
有时推荐一些有点出乎意料的商品也能促进销售。然而,意外之喜不同于新奇。用作者的话说:
“如果一家新的印度餐馆在附近开业,那么向通常吃印度食物的用户推荐该餐馆是新颖的,但不一定是偶然发现的。另一方面,当向同一用户推荐埃塞俄比亚食物时,该用户不知道这种食物可能会吸引她,则该推荐是偶然发现的”。
- 多样性
增加建议的多样性也同样重要。简单地推荐彼此相似的项目没有多大用处。
推荐系统的工作原理
那么推荐系统是如何工作的呢?比方说,亚马逊想向您展示图书类别中的 10 大推荐。在这里,亚马逊的推荐系统将从你的某种数据开始,以便找出你的个人品味和兴趣。然后,它会将你的这些数据与像你一样的其他人的集体行为相结合,向你推荐你可能喜欢的东西。但是这些关于你喜欢和不喜欢的数据从何而来?

The flow of data into a recommendation engine
用户偏好数据以两种方式收集:
- 显式数据
让用户对一个项目进行一到五颗星的评级,或者对他们看到的内容进行赞或否定的评级,就是一个显式数据收集的例子。在这种情况下,用户会被明确地询问他们是否喜欢某个特定的商品,然后这些数据会被用来建立用户的兴趣档案。
然而,有一个缺点,因为不是每个用户都留下反馈或评级,即使他们留下评级,对不同的人来说也可能意味着不同。例如,3 ⭐️评级可能对一个人来说很好,但对另一个人来说很一般。
- 隐含数据
隐含数据来自用户与网站的交互,并将它们解释为感兴趣或不感兴趣的指示。例如,从亚马逊购买产品或观看完整的 youtube 剪辑被认为是积极兴趣的标志。隐式交互可以给你更多的数据来处理,在购买数据的情况下,它甚至可能是更好的开始数据。
推荐系统的基本模型
如今,在这个行业中有很多种推荐人。然而,重要的决定是决定哪种类型适合我们的需要,哪种类型的数据可供我们使用。选择主要取决于:
- 我们想要识别的,
- 我们的数据中指定了什么类型的关系?
一些常用的建议方法包括:

Approaches used for Recommendation systems
让我们对其中的每一项进行简要概述:
基于内容的过滤
基于内容的过滤包括根据项目本身的属性推荐项目。基于内容的过滤器所做的推荐使用个人的历史信息来通知所显示的选择。这种推荐器寻找一个人过去已经购买或喜欢的项目或产品之间的相似性,以推荐将来的选项。

例如,如果用户喜欢“文学”类别的书,向用户推荐相同类别的书是有意义的。此外,推荐同一年由同一作者出版的书籍也是一个好主意。这就是基于内容的过滤的工作原理。
基于内容的方法的优势在于,我们并不真的需要大量的交易来构建我们的模型,因为我们只需要关于产品的信息。然而,缺点是该模型不从事务中学习,所以随着时间的推移,基于内容的系统的性能没有太大的改善。
协同过滤
协同过滤使用由许多用户/顾客提供的评级的组合力量来呈现推荐。这意味着根据其他人的合作行为来推荐东西。

协作过滤有两种方法:
- 基于记忆的方法,也称为基于邻域的协同过滤算法,其中用户-项目组合的评级是基于它们的邻域来预测的。这些邻域可以进一步以两种方式之一来定义:
- T3【基于用户的协同过滤:
找到像你一样的人,并推荐他们喜欢的物品。
- 基于项目的协同过滤:
推荐那些也买了你喜欢的东西的人买的东西。
2。基于模型的方法通过将问题视为正常的机器学习问题,使用机器学习方法提取评级数据的预测。可以使用 PCA、SVD、矩阵分解、聚类、
神经网络等技术。
基于混合和集成

Hybrid filtering
基于内容的方法和协作方法都有各自的优点和缺点,通过将许多算法结合在一起,我们称之为混合方法,可以得到一个更好的系统。混合系统利用项目数据和交易数据来给出建议。
使用混合方法的一个很好的例子是网飞。在网飞,推荐不仅基于人们的观看和搜索习惯(协作系统),还会推荐具有相似特征的电影(基于内容)。

How Hybrid Systems work
评估推荐系统:围绕准确性的炒作
用户并不真正关心准确性
没有一种简单的方法来衡量推荐系统有多好。这一领域的许多研究倾向于集中在预测用户对他们尚未评价的事物的评价问题上,无论是好的还是坏的。但这与推荐系统在现实世界中需要做的事情非常不同。衡量准确性并不是我们真正想要推荐系统做的事情。那么,在推荐系统领域,为什么 RMSE 和准确性如此重要呢?
这很大程度上要追溯到 2006 年,当时网飞宣布了著名的 100 万美元奖金挑战。这场比赛是为了打破他们 0.9525 的 RMSE,终点线将其减少到 0.8572 或更少。由于该奖项的焦点是 RMSE,人们只关注它,这种影响一直持续到今天。

有趣的是,三年竞赛中产生的大多数算法从未被集成到网飞中。正如在网飞博客上讨论的:
你可能想知道两年后赢得 100 万美元的最终大奖合奏发生了什么……我们离线评估了一些新方法,但我们测量的额外精度增益似乎并不证明将它们引入生产环境所需的工程努力是合理的。
我们的业务目标是最大限度地提高会员满意度和月度订阅保留率……现在很明显,Netflix 奖的目标——对电影评级的准确预测——只是优化会员娱乐的有效推荐系统的众多组成部分之一。
结论
在本文中,我们概述了推荐系统,以及它们如何通过为每个客户创造个性化的购物体验来提供有效的定向营销形式。但是,我们并没有深入研究各种推荐方法。这是因为每种方法都相当广泛,值得单独撰写一篇文章。在下一篇文章中,我将详细讨论推荐方法的工作原理及其优缺点。
链接下一部分: 现实世界中的推荐系统
餐馆指南:如何在 Yelp 上受欢迎
使用正则化线性模型来确定哪些餐馆应该考虑获得更多的在线牵引力
如果有什么能让你永远保持谦逊,那就是餐饮业
——安东尼·鲍代恩
动机
餐馆是一个艰难的行业——60%的餐馆在第一年内倒闭,80%在第五年倒闭。因此,出于对食物的热爱,我想发现受欢迎程度的重要预测指标,就像 Yelp 上的评论数所显示的那样。具体来说,我开始回答餐馆的问题:
- 我应该提供(或避免)哪种菜肴?
- 什么样的社区成功率最高?
- 食物的美感更重要还是氛围/装饰更重要?
- 我的评论中的照片重要吗?
- 价格范围重要吗?

The distribution of reviews counts per restaurant is skewed to fewer than 1000 reviews. I decided to slice the data to only include restaurants with 20 to 800 reviews to my final modeling.

数据集和要素
为了回答这些问题,我合并了 Yelp 的几个数据集,并抓取了 Yelp 的浏览页面,以获取关于业务、评论和发布的照片的信息。我只关注了一个城市,拉斯维加斯,因为我想分析一个城市中邻里之间的影响。这在我的数据集中产生了 1,165 个独特的餐馆。
数据严重失真,大多数餐厅的评论数少于 1000 条,少数餐厅的评论数高达 10000 条。为了提高可解释性,数据集被缩减到只包含 20 到 800 条评论的餐馆。这将最终模型拟合的大小减少到原始收集数据的 82%。
整个学习过程——OLS、拉索克夫、RidgeCV 或 ElasticNetCV(还有代码!)

Model of the learning process, if it was linear and not iterative/ repetitive
上图大致模拟了模型审核计数预测所采取的步骤,尽管它更多的是迭代而不是线性。简而言之,在执行特征工程时,我使用简单的线性回归来提供关于预测因子的信息。正则化技术有助于管理不重要的共线要素。思维过程和代码详述如下。
功能标准化的简单线性回归在功能工程过程中提供了见解。因为我会经常运行这个函数,所以创建一个函数是有意义的:
def split_and_validate(X, y):
"""
Split data to train, val and test set and perform linear regression
"""
columns = X.columns
X = X.values
std = StandardScaler()
# perform a train, val and test set
X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2,random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=.25, random_state=42)
# fit linear regression to training data
lr_model = LinearRegression()
lr_model.fit(std.fit_transform(X_train), y_train) # score fit model on validation data
val_score = lr_model.score(std.transform(X_val), y_val)
adjusted_r_squared = 1 - (1-val_score)*(len(y)-1)/(len(y)-X.shape[1]-1)
# report results
print('\nValidation R^2 score was:', val_score)
print('Validation R^2 adj score was:', adjusted_r_squared)
- Lasso cv(Lasso with K-fold validation)以特征标准化作为特征选择方法。Lasso 将没有强大预测能力的系数归零,从而将解释集中在几个关键特征上。
std = StandardScaler()# Splitting data to train and val
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Setting up alpha list and letting the model select the best alpha
alphalist = 10**(np.linspace(-2,2,200))
lasso_model = LassoCV(alphas = alphalist, cv=5) # setting K-fold
lasso_model.fit(std.fit_transform(X_train), y_train)# printing coefficients
list(zip(X_train.columns, lasso_model.coef_ / std.scale_))
- Ridge(具有 K 倍验证的 Ridge)通过使系数更接近于零来帮助平滑系数,而不移除它们。但更重要的是,它们对两个高度共线的特征给予了大致相等的权重。
std = StandardScaler()# Split data to train and test
X_train, X_test, y_train, y_test = train_test_split(X7, y7, test_size=0.2, random_state=42)# Fit and train model
alphalist = 10**(np.linspace(-1,2,200))
ridge_model = RidgeCV(alphas = alphalist, cv=5)
std.fit(X_train)
ridge_model.fit(std.transform(X_train), y_train)# print coefficients
list(zip(X_train.columns, ridge_model.coef_))
- ElasticNetCV(具有 K 倍验证的脊)线性地结合了上述套索和脊方法的 L1 和 L2 罚值。它解决了这两种方法的一些局限性。最终选择了这个模型,对岭模型的权重较高。
std = StandardScaler()l1_ratios = [.1, .5, .7, .9, .95, .99, 1]
alphas = 10**np.linspace(-2,2, 200)model = ElasticNetCV(cv=5, l1_ratio = l1_ratios, alphas = alphas, random_state=42)
std.fit(X_train)
model.fit(std.transform(X_train), y_train)
pred = model.predict(std.transform(X_test))
score = model.score(std.transform(X_test), y_test)
model.alpha_mse = mean_squared_error(np.exp(y_test), np.exp(pred))adj_r_squared = 1 - (1-score)*(len(y_test)-1)/(len(y7)-X7.shape[1]-1)print("Alpha:{0:.4f}, R2:{1:.4f},ajd_R2{2: 4f}, MSE:{2:.2f}, RMSE:{3:.2f}"
.format(model.alpha_, score,adj_r_squared, mse, np.sqrt(mse)))print(f'l1 ratio is {model.l1_ratio_}')
list(zip(X_train.columns, model.coef_ / std.scale_))
接下来的部分只深入到我们可以从模型中获得的三个推论,但是我将在摘录部分详细阐述各个系数。
我的餐厅应该供应哪些菜系?
一家餐馆可能有不止一个由 Yelp 标记的食物类别。在被分析的 1165 家餐馆中,有 146 种不同的菜系。
使用 Python 的词云,你可以看到一些类别出现了很多次(墨西哥餐馆出现了至少 135 次),而许多美食看起来很有异国情调,例如活的/生的或马来西亚食物只出现了一次(可悲!).

Word Cloud visualizing frequency of food categories in our dataset
有两种方法可以将美食作为特色:
- 一个特征:前 N 大菜系(如前 5、10 大菜系或前 20 大菜系)作为虚拟变量
- 多特性:每种食物本身就是一个虚拟变量,最多有 N 个虚拟变量。
如何确定 N:对每个 N 运行交叉验证模型。下图显示了单特征方法的每个 N,右图显示了多特征方法的每个 N。利用这种可视化,我选择了多特性方法,为每一种受欢迎的菜系创建了 21 个虚拟变量。
这仍然是一个很大的特色,但是因为我运行了一个套索模型,所以我希望删除这 21 个菜系中的一些。

Deciding how to include N cuisines as predictors in my model

最终评选出 10 大菜系(见表)。关于系数值的注意事项:由于目标变量被记录,如果你的餐馆在 Yelp 上将该菜系作为一个类别,你可以将该值读取为评论数的百分比变化。
墨西哥、美国(新)、三明治和快餐是消极的预测因素,而其余的是积极的预测因素。
不出所料,将你的餐馆定义为快餐会导致 11.9%的预测点评数下降。然而,我感到失望的是,墨西哥食物会导致 9.7%的低评论计数——在这个城市永远不会有足够的墨西哥餐馆!
邻里关系重要吗?
在《美食》中使用与上述相同的技术来确定邻里关系是否重要,我失望地发现,它根本没有显著提高模型的 R 平方。虽然零假设没有被拒绝,我认为这是一个有趣的观点。虽然向餐馆老板推荐一个社区很好,但我在这里的唯一建议是:担心其他事情,位置并不重要!
食物或环境重要吗 Instagram 测试
Yelp 的照片数据集包含带有以下标签的照片标签信息:
- 食物
- 喝
- 里面的
- 在外面
- 菜单
我发现这些标签有助于了解食物/饮料的美学或氛围(内部/外部标签)是否对餐厅的成功更重要。我为拥有超过 10 张照片的餐厅设置了这个指标,以确保相关性(拥有 20 张氛围照片和 10 张食物照片的餐厅比拥有 2 张氛围照片和 1 张食物照片的餐厅传达了更强的美学信息)。
一般来说,餐馆张贴的食物照片比环境照片多:

因此,我创建了一个名为 food_70 的虚拟变量来表示餐馆的食物/饮料比率是否至少为 70:100。
下一个特征是照片的计数。虽然照片数量和评论数量之间可能存在反馈循环关系(越受欢迎的餐厅有越多的照片),但我认为照片较少的餐厅(少于 10 张)的反馈循环关系会更弱。
因此,创建了三个虚拟变量:没有照片的餐馆、有 1-5 张照片的餐馆和有 6-10 张照片的餐馆。
在将这些特征放入模型之前,一些简单的探索性分析显示,评论越多的餐厅,平均而言,食物与氛围的比例越平衡(对于评论少于 50 条的餐厅,接近 1.5:1,而不是 3:0)。


如果你的餐馆没有照片,你获得更少评论的几率会大大增加。
毫不奇怪,没有照片对你的案例获得超过 50 个评论没有帮助。
外卖

Predicted vs Actual Reviews

The coefficient table
我使用 R Square 来选择我的最终模型,并获得了 0.50 的分数。当根据实际评论绘制预测评论时,该模型在预测评论数较高的餐馆时仍然表现不佳
贝塔系数表中的一些附加信息:
- 价格范围:价格范围上升到四个美元符号,但它们对更多评论很重要
- 照片:没有或少于 6 张照片是受欢迎程度的主要负面预测因素
- 美食:氛围比:餐厅一般美食都比氛围照多。但是你希望你的餐厅至少有 30%的氛围(漂亮的装饰很重要!)
鉴于 R 平方得分为 0.5,线性回归可能不是预测评论数的最佳模型。然而,该模型确实给出了在一个新城市开业的餐馆应该考虑什么的有力建议。
在未来的工作中,值得将分析扩展到更多的城市,因为我们知道邻里关系并不重要。感谢阅读!
精准农业的计算机视觉
基于像素做出决策

Photo by Chris Ried on Unsplash
如果我告诉你,你看到的一切对一堆数字来说没什么不同,会怎么样?如果我说这一事实对农业综合企业、零售、运输或军事防御等行业有直接影响,你会相信吗?
很像在《黑客帝国》电影中,我们看到的是由大脑处理和解释的原始数据,这一切发生得如此之快,以至于我们甚至没有意识到。在计算术语中,任何图像都可以被认为是一组数据,其中该图像的每个像素保存一个或多个值。像素是图像的组成部分,以特定的顺序排列以表示特定类型的一些信息。就像在海战游戏中一样,图像中的每个像素都有一个特定的坐标,这给图像本身带来了意义。

在上图中,像素值是范围从 0(黑色)到 255(白色)的整数,这意味着可以对该图像(或任何其他图像)进行分析、采样、分类、预测、参数化,或对数据集执行任何其他操作。图像分析是遥感图像的关键学科之一,因为它带来了一些最有价值的见解。更具体地说,农业中的遥感图像是受现代卫星扩张影响的现代农业技术中的热门话题之一,其中一些卫星免费提供高分辨率图像。农业行业的技术和数字化正在催生新的可能性,其中一些在几年前是无法想象的。
如今,卫星和无人机(像无人机一样的无人飞行器)正在拍摄比以往任何时候都更精确的图像。时间(图像频率)和空间分辨率(衡量图像的精细程度)在过去几年中呈指数增长,航空航天业将继续以我们甚至无法预测的方式发生变化。我们的能力如此强大,以至于我们真的有能力从外太空发现一枚硬币。随着像素密度(每英寸像素,或 ppi)的增加,我们可以获得更清晰的图像和更重的数字图像文件。相反,随着像素密度的降低,我们会损失精度,但也会降低处理需求。这是当前数字图像分析中的一个基本权衡,图像的可用性增长如此之快,以至于我们似乎跟不上处理它们的能力。
通过在农业等学科中使用遥感图像,我们能够以更高效的方式执行不同的任务:
- 检测植物疾病
- 对土地覆盖(如森林)和土地利用(如农业)进行分类
- 通过识别不同的作物,如大豆、玉米、小麦等,对作物类型进行分类。
- 通过计算特定地区作物的预期产量来估计作物产量
- 识别与健康作物竞争阳光和土壤养分的杂草
- 通过检测水分胁迫监测和预测土壤湿度
- 评估除草剂、杀虫剂和杀真菌剂的有效性
- 识别作物和土壤中的污染物
- 监控播种过程的有效性
但是我们如何仅仅从一幅图像中获得所有这些信息呢?似乎有点太多了,对吧?事实上,遥感影像不仅提供了每个像素的一个值(例如颜色值),还提供了每个像素的附加值,这带来了许多额外的数据来改进任何分析或决策。为了理解这是如何工作的,我们必须先谈谈光谱图像。
看见看不见的
作为人类,我们只能看到电磁波谱中非常小的一部分(我们称之为“可见光”),而事实是,几个世纪以来,我们只是通过一把小锁来体验这个世界。
1800 年威廉·赫歇尔(发现天王星的同一个人)用棱镜分离阳光,并在每种光色下放置温度计。通过在红灯旁边放置一个额外的温度计,他发现这个额外的温度计具有所有温度计中最高的温度。这就是红外光的发现,世界第一次知道了我们用肉眼看不到的光。仅一年后,约翰·威廉·里特在可见光光谱的另一边做了同样的实验(这次在紫光边之外),发现了紫外光。电磁波谱诞生了。

现代遥感图像可以测量各种波长(远远超过我们已知的“可见光”光谱),其中许多波长是我们肉眼看不到的。这被称为多光谱图像,它是由传感器(例如卫星或无人机中的传感器)产生的,这些传感器测量电磁波谱的几个部分(或波段)内的反射能量。由于不同的物体或条件以不同的方式反射能量(例如植物反射光的方式不同于水),每个光谱带捕捉不同的属性。
在多光谱图像所代表的图像的每个像素中,可以有大约 10 或 20 个不同的波段测量值。像 Sentinel-2 这样的卫星(为全球范围内的陆地和水域监测提供免费图像)有 13 个光谱带,每个都与电磁波谱的特定波长相关联。
但是如果你认为 13 个波段还不够,那么你可以考虑高光谱。超光谱图像可以提供数百种波段测量(是的,数百种图像!)在整个电磁频谱上,这为观察中的细微变化提供了更高的灵敏度。超光谱传感器生成的图像包含的数据比多光谱传感器生成的图像多得多,并且在检测特征差异方面有很大的潜力。例如,虽然多光谱图像可用于绘制森林地区的地图,但高光谱图像可用于绘制森林中的树种。
T2 卫星公司是世界上高分辨率高光谱图像的领先供应商。除了为农业、采矿、建筑和环境测绘领域的企业提供竞争优势之外,Satellogic 还采取了大胆的举措,为开放的科学研究和人道主义事业免费提供超光谱数据。

Different Landsat bands exploded out like layers of onion skin along with corresponding spectral band wavelengths and common band names. Source: NASA
为什么数据科学是真正的游戏规则改变者?
由于图像是数据集,您可以考虑对它们进行数学运算。
通过对光谱带进行代数运算,可以将两种或多种波长结合起来突出显示特定的特征,如植被类型、燃烧区域或发现水的存在。还可以将来自不同来源(如不同卫星)的波段组合起来,以获得更深入的见解:想象一下,将不同的光反射波段与土壤湿度以及土地高程特征组合在一起,所有这些都堆叠在同一个数据集中:如果数据集中的每个波段或图像具有相同的行数和列数,则一个波段的像素与另一个波段的像素位于相同的空间位置。由于每个像素都进行了地理编码,我们可以在任何特定位置添加不同的信息层。
好消息是这并不像听起来那么难。谷歌地球引擎提供由他们自己的数据中心和 API 支持的数 Pb 的卫星图像和地理空间数据集,一切都在一个用户友好的平台上,让任何用户测试和实现自己的模型和算法。你可以执行数学和几何运算,分类像素或识别物体,同时在云中高速运行。谷歌又一次扩大和简化了几年前极其复杂和昂贵的东西。
此外,多年来遥感图像的可用性大大增加,因此有可能增加时间维度。活跃卫星的数量增加了,它们的重访时间也增加了,因此我们有可能将可靠的时间信息合并到任何模型中。通过对图像进行时间序列分析,我们摆脱了单一时间信息(只是时间上的一瞥)并进入了一个新概念,在这个概念中,属性随着周期而变化,我们可以观察到不同的周期和趋势。
在这种大数据环境中得出结论极具挑战性,因为如果我们没有能力处理这些数据,这些数据就没有任何意义。你如何管理和解释数十亿像素和巨大的数据集?
这就是数据科学正在进行真正的革命,并推动农业等行业的深刻变革。数据科学可以被认为是一门相当新的学科,专注于从数据中提取有意义的见解,用于战略决策、产品开发、趋势分析和预测。数据科学的概念和方法源自统计学、数据工程、自然语言处理、数据仓库和机器学习等学科,这些学科在处理实际的数据爆炸方面非常有效。你可以说,数据科学家在数据中游泳时,最擅长做出发现。
但在数据科学的所有子学科中,我认为机器学习值得特别关注。机器学习描述了从数据中学习而不是专门为此编程的算法,代表了解决数据丰富问题的最佳解决方案。在可预见的未来,这是数据科学最有可能提供直接和切实利益的领域。
像 Planet 这样的公司利用机器学习将图像转化为可操作的分析信息,以比免费卫星更好的空间和时间分辨率跟踪基础设施和土地使用的变化。
从庞大的机器学习算法宇宙中, 卷积神经网络(CNN)是图像处理领域的最先进技术,正被用于农业等领域,以重塑做事的方式。CNN 代表了一种有前途的技术,在精度和准确度方面具有当前的高性能结果,优于其他现有的图像处理技术。
世界上第一个农业机器人 C2-A2 使用 CNN 来保护设备和人员免受所有可能的碰撞。C2-A2 是一个人工大脑,旨在成为自主农业机械的通用控制系统,如收割机、拖拉机或喷雾器。
由于这些学科,人的能力正以惊人的速度得到加强。遥感图像等领域的技术入侵完全改变了我们与世界互动的方式,谁知道这将在哪里结束。在这种情况下,考虑处理极其复杂的输入并自己做出决策的系统并不疯狂,这样可以释放人类的时间和资源来做其他事情。
适量的建模

A tower of Data Science books not quite containing 300 algorithms (photo by author)
一些从业者看重为了给顾客留下深刻印象而做的模特的数量,但是质量当然也很重要。
最近,我遇到了一个不寻常的数据科学演示。做报告的数据科学家已经尝试了 300 多种不同的算法来寻找合适的模型。
我没见过这样的东西,所以我问他们为什么。他们的回答也引起了我的注意——稍微解释一下,这是因为(根据他们的知识)不可能预先知道哪种算法执行得最好,我们只能全部尝试。
似乎有几个原因让我们对如此大量的算法感到担忧。首先,这有可能成为 p 值挖掘的机器学习版本。也就是说,给定足够多的模型,有可能会出现一些极端的结果,这些结果并没有真正反映基础数据的预测能力,也就是说,这些结果只是由于过度拟合而出现的。事实上,顾问们推测一个模型的 AUC 值非常高,与其他模型结果相比是异常值,这与可重复的结果相反。
另一个困难是,许多所谓的不同算法似乎是彼此的近亲,例如,C4.5 和 C5.0 当然是不同的,但差异没有 C4.5 和 GUIDE 或 QUEST 之间的差异大,也没有 C4.5 和被动攻击分类器或基于感知器的分类器(无论是作为单个感知器还是在网络中)之间的差异大。
虽然我的愤世嫉俗者说,他们并不真的相信没有办法确定算法在一开始或多或少可能成功,并试图夸大他们尝试的算法数量,因为他们认为这使他们的工作听起来更令人印象深刻,但对我来说,这至少提出了几个问题。第一——在决定是否足够之前,一个人应该尝试多少种模式?第二,应该从哪里开始?第三——你如何做出有根据的猜测,哪些算法应该优先考虑,哪些应该排除?
作为第一步,数据类型以及您正在研究的是监督学习还是非监督学习是一个显而易见的起点。在这种情况下,这个问题是一个监督分类问题,所以让我们坚持下去,制定一些如何进行的原则。
首先,如果有理由相信支撑线性回归的假设没有被过分违反(在应用任何适当的变换之后),你的第一选择应该是使用你的回归或基于 GLM 的模型,因为解释和诊断将比你能想到的几乎任何其他 ML 算法都好。
这通常适用于相对较小的数据集,其中对关系有很强的先验理解。例如,我对回归的第一次体验与实验化学数据有关,在这种情况下,事先知道存在线性关系,偏差可以归因于实验或测量误差。
回归模型还有一个优点,即您可以有选择地增加模型的复杂性,例如,通过选择是否包含特定的交互作用,甚至允许一定程度的非线性。
如果需要一个可解释的模型,但在回归环境中无法实现,那么单个决策树可能是有用的,如果担心健壮性或初始准确性,可能需要尝试几个不同的树。
虽然决策树似乎可以通过自动查找交互来减少建模时间,但这有时会适得其反,因为很难在与数据紧密匹配的激进模型和概括良好的模型之间找到平衡。此外,具有许多交互的深树实际上很难解释。
如果决策树或回归模型不能提供所需的准确性,那么你可以考虑一个更不透明的模型,比如一个树的集合——随机森林、GBM 或你的个人喜好。其中最好的一个是符合你个人口味的,因为调整一个对你有意义的算法可能比当场学习一个新算法更快、更有效。
在某些时候,当数据变得足够大,并且特征变得众多而没有明显的强特征时,考虑深度学习或相关方法开始变得有用。再说一次,在哪个精确的点上移动这个舞台是值得的,这既是一个科学问题,也是一个个人品味问题。
当你运行完所有这些算法的时候,你可能已经运行了半打不同的算法,然后你才发现你没有把性能提高到足以保证花费额外的时间来制作更多的模型。
最终,时间就是金钱,因此您希望能够预测哪些模型最有可能与您的现成数据集一起工作。让算法列表尽可能短可以让花在一个问题上的时间尽可能短,并且能够在用相对少量的不同算法生成模型之后提供可信的解决方案,这应该是一个经验丰富、知识渊博的数据科学家的标志。
罗伯特·德格拉夫是《管理你的数据科学项目的作者,将于 2019 年 7 月中旬由阿普瑞斯出版社出版。
航天人艾的崛起与崛起

Image is a screenshot of the homepage of Spacemaker AI’s website June 2019
PropTech 创业公司最大化任何建筑工地的价值
当人们问我在挪威看哪家公司时,我毫不含糊地回答:它是航天制造商 AI。毫无疑问。他们所做的令人难以置信的令人兴奋,你有一个很好的理由去检查他们,和他们交谈并找出原因。作为引子,让我直接引用他们的话,说:
太空制造商 AI 开发了一项改变游戏规则的 AI 技术,该技术发现了最聪明的方法来最大化任何建筑工地的价值。
这是一个很大的承诺,对不对?事实上,他们正在建设交付能力。航天制造商 AI 仍然是一家小公司,最近雇佣了 100 名员工。它被挪威最大的商业报纸评为最热门的工作地点。几天前,据宣布,他们刚刚以 2500 万美元完成了首轮融资。正如在 TechCrunch 中提到的,他们的这轮投资由 Atomico 和 Northzone 牵头。
首轮融资是一家公司第一轮重大风险投资融资的典型名称。该名称指的是出售给投资者以换取其投资的优先股类别。
根据 Shifter 报道的 Venturescanner 的新数据,房地产技术已经从 2016 年 1137 家公司的 169.9 亿美元增长到 2019 年 1659 家公司的 550 亿美元。那是数字,但是太空制造者 AI 做什么?
Spacemaker 被描述为“世界上第一款”用于房地产开发领域的人工智能辅助设计和施工模拟软件,它声称能够帮助房地产开发专业人士,如房地产开发商、建筑师和城市规划师,快速生成和评估任何多层住宅开发的最佳环境设计。为了实现这一目标,Spacemaker 软件处理各种数据,包括物理数据、法规、环境因素和其他偏好。
-TechCrunch 2019 年 6 月 10 日
然而,让我们回溯几年来了解更多关于该公司的情况。
航天人艾的故事
根据官方公司注册显示,太空创客 AI 于 2016 年末由哈瓦德·豪克兰德和卡尔·克里斯滕森创立。Havard Haukeland 拥有建筑师的教育背景,曾在建筑和城市设计领域工作过。卡尔·克里斯滕森拥有计算机工程师的教育背景,另外还有工商管理和经济学硕士学位。
2017 年末,有一篇文章称他们的数字解决方案是一项为期 4 年的科研项目的一部分,该项目得到了阿斯佩林·拉姆、AF Eiendom、Stor-Oslo Eiendom 和 SINTEF 等公司的支持。然后,空间制造商 AI 从挪威研究委员会、创新挪威和 Simula 研究实验室获得了超过 1500 万挪威克朗(180 万美元)的资金,用于开发他们的数字解决方案。
2017 年 10 月,他们在一年内成长为一家拥有 20 名员工的小公司。他们当时正在谈论将人工智能用于城市规划和建筑工地。2017 年 9 月,一群投资者聚集在一起,向该公司投资 2200 万挪威克朗(265 万美元)。除此之外,CBRE 的挪威领导集团决定与 CBRE 一起投资,成为在纽约州注册的最大的商业地产顾问之一。这是他们的解决方案在 2017 年末的样子:

Picture by DN Norwegian Newspaper from late 2017

Sketch from the work for an early client taken by DN Norwegian Newspaper in 2017
在他们的第一个项目完成仅两周之后,他们声称已经有超过 100 家客户与他们接洽合作,而 Havard Haukeland 被提名为挪威年度最佳领导人才。
在 2017 年的时候,他们最大投资者的一位首席执行官坚持认为,如果他们敢于取得成功,那就必须是国际性的。他们的解决方案融合了建筑和人工智能领域。他们通过复杂的数学计算,对每个房地产项目的各种因素进行了预先考虑。尽管如此,他们还是承认,并非所有建筑的品质都是可以计算的。
“……我们不相信人工智能会取代建筑师。但使用人工智能的建筑师可能会取代不使用人工智能的建筑师。”
——哈瓦德·豪克兰德 2017 年 9 月接受 DN采访
2017 年的这个时候,他们还开始与哈佛大学的一名博士生研究员合作。这种合作后来蓬勃发展。Spacemaker 正在进行的另一个研究项目是与 SINTEF 合作的应用数学项目,名为 OptiSite ,已于 2017-2021 年开始滚动。
我们是 Spacemaker 创新项目 OptiSite 的研究合作伙伴。OptiSite 将使 Spacemaker 成为建筑设计和场地规划软件工具的全球领导者。在这个项目中,我们改进和发展优化和人工智能技术,以协助房地产开发。
-SINTEF,2016 年 3 月 8 日
据联合创始人Havard Haukeland称,2017 年底,太空创客 AI 被领先的非营利组织 Hello Tomorrow 评为 500 家最具创新性的创业公司之一,以加速创业和科技创业。大约在这个时候,他们收到了代理公司赛车的更名。因此,他们的研究能力和品牌都得到了发展。



研究从一开始就是公司的核心,而且似乎贯穿了整个运营过程。2018 年年中,太空创客 AI 在美国设立了办公室,并有了他们的第一位全职员工乔丹·霍夫曼。他的背景是应用数学,这似乎是对公司的一个合适的补充,因为公司在同年早些时候公布了他们的化妆。

Spacemaker AI Instagram the 15th of January
从 Magnhild Gjestvang 在官方的 Spacemaker AI 媒体页面上写的博客文章中,还提到他们正在哈佛和麻省理工学院举行会议,既招聘又学习。他们当时被邀请到麻省理工学院做客座演讲,会见那里正在探索复杂的社会技术工程系统的系统设计师。

他们还在其他技术大学,如挪威的 NTNU 大学进行了演讲。他们积极地从大学和奥斯陆的其他公司招聘一些最好的开发人员来扩大他们的团队。国际招聘似乎从第一天起就是航天制造商 AI 的一项战略,至少在目前这一点上,它显然对他们有利。

Spacemaker AI January 2019 from their Facebook page
他们被宣布为 2019 年挪威 B2B 类别的年度创业公司,正如前面提到的,他们刚刚获得了2500 万美元的首轮融资。除此之外,他们最近似乎还雇佣了一些设计人才来继续设计他们的 UX,并对他们的品牌进行更新。

Image is a screenshot of the homepage of Spacemaker AI’s website June 2019
建筑人工智能
【2019 年 2 月,哈佛大学的硕士研究生和富布莱特研究员斯塔尼斯拉斯·夏鲁在出版物中写了一篇名为建筑人工智能的文章。他描绘了建筑是如何经历发明和创新的。他把它分成四段序列。

Four-period Sequence of Inventions and Innovations in Architecture made by Stanislas Chaillou
因此,从模块化网格的简单性和可负担性开始,到计算设计的出现。从模块,这是进一步通过计算设计成为可能。
计算设计(1)允许严格控制几何形状,提高设计的可靠性、可行性和成本,(2)促进和简化设计师之间的协作,以及(3)最终实现比传统手绘更多的设计迭代。更多测试&更多选择以获得更好的设计。
——斯塔尼斯拉斯·夏鲁
之后,通过定义某些参数,可以重复设计,自动执行重复的手动过程。后来有了 BIM(建筑信息建模),建筑中的每一个元素都是参数的函数。然而,斯塔尼斯拉斯认为这种参数化设计忽略了文化和社会因素,并提出这可以通过人工智能来解决。他说:
人工智能从根本上说是一种架构的统计方法。人工智能的前提是将统计原理与计算相结合,这是一种新的方法,可以改善参数化架构的缺点。
2019 年 2 月《移位器上的一篇文章提到,太空制造商 AI 的首席技术官卡尔·克里斯滕森在麻省理工学院举办了他的讲座。它还提到,太空制造商 AI 有五名全职员工,分别来自麻省理工学院、哈佛大学或耶鲁大学。与一些最重要的研究人员和成熟的行业专业人士一起,空间制造商 AI 正在询问是否有更好的方式来设计我们的城市。

Photo taken by press and published in Shifter

Image from the publication Shifter February 2019.

Picture from Demo project as shown by TechCrunch 10th of June 2019
这是我项目#500daysofAI 的第 11 天。我希望你喜欢这篇文章。
什么是#500daysofAI?
我在挑战自己,用#500daysofAI 写下并思考未来 500 天的人工智能话题。
这是受电影《夏日 500 天》的启发,主角试图找出爱情失败的原因,并在此过程中重新发现他生活中真正的激情。
如果你想了解更多,请查看我现有的一些文章:
1。 定义 AI — #500daysofAI :
2。 应用人工智能与可持续城市论文 :
3。 当前伦理人工智能资助中的一些问题 :
4。 人工智能领域的专利 :
5。 AI 为善 AI 为恶——发表于创业 :
6。 阿根廷和乌拉圭的艾治 :
7 .。 艾领域的三位作家 :
8。 斯堪的纳维亚 AI 战略 2019 :
9。 社会科学家艾 :
10。 10 对艾的思考 :
感谢您的阅读!
数据停机时间的增加
介绍“数据宕机”及其对数据驱动型组织的重要性

Photo by drmakete lab on Unsplash
你有没有遇到过这样的情况,你的首席执行官看了你展示的一份报告,说这些数字看起来很离谱?客户是否曾在您产品的仪表盘上调出不正确的数据?我肯定你没有遇到过这种情况,但是也许你有一个朋友遇到过这种问题?😃
2016 年,当我在 Gainsight 领导一个团队时,我对这些问题太熟悉了。我们负责我们的客户数据和分析,包括由我们的首席执行官每周审查和由我们的董事会每季度审查的关键报告。似乎每周一早上,我醒来都会收到一系列关于数据错误的电子邮件。感觉就像我们每次解决一个问题,都会发现另外三个问题。更糟糕的是,我们自己没有发现问题。相反,其他人,包括我们非常耐心的 CEO,都在提醒我们这些问题。最近,我与另一家公司的首席执行官交谈,他告诉我,他曾经在办公室里四处走动,在显示错误数据的显示器上贴上便签,上面写着“这是错误的”。
在 Gainsight,我有幸与数百家公司合作,这些公司在处理客户数据和获得改善业务成果的见解方面处于行业领先地位。但我亲眼看到,尽管许多公司都在努力成为数据驱动型企业,但它们都做得不够。当他们遇到与我类似的困难和挑战时,他们对自己的数据失去了信心,最终做出了次优的决策。我最近遇到的一位创始人告诉我,他的公司的数据和仪表板中持续存在的数据问题如何对他们的文化产生了负面影响,并阻碍了他们成为数据驱动型公司的雄心。

Photo by Nathan Dumlao on Unsplash
引入数据停机时间
我把这个问题称为“数据宕机”数据停机指的是数据不完整、错误、丢失或不准确的时间段。对于今天的数据驱动型组织来说,这种成本非常高,并且几乎影响到每个团队,但通常是以临时的、被动的方式来解决。
我称之为停机时间,让我们回到互联网的早期。当时,在线应用程序是一个不错的选择,如果它们宕机一段时间,也没什么大不了的。你可以承受停机时间,因为企业不会过度依赖它们。我们已经走过了 20 年,在线应用对几乎所有企业来说都是至关重要的。因此,公司会仔细测量停机时间,并投入大量资源来避免服务中断。
同样,公司越来越依赖数据来运行日常运营和做出关键任务决策。但是,我们还没有按照数据停机所要求的那样认真对待它。虽然少数公司正在实施 SLA,让数据团队对准确可靠的数据负责,但这还不是规范。在未来几年,我预计将会有更多关于数据停机时间的审查,并更加关注最大限度地减少数据停机时间。
有迹象表明数据宕机正在影响您的公司
数据停机可能由于各种原因而发生,包括例如模式中的意外更改或错误代码更改。在内部或外部客户之前发现这一点通常很有挑战性,而且了解根本原因并快速补救非常耗时。
以下是数据宕机影响您公司的一些迹象:
- 内部和外部的数据消费者打电话来抱怨您的数据,并逐渐失去信任。客户可能会想"为什么我是这家公司抽查数据错误的人?"或许 CEO 认为:“如果这个图表是错的,还有哪些图表是错的?”
- 你正在努力让数据驱动决策在你的公司得到采用,这让你在竞争中处于劣势。人们可能会说“无论如何,数据是坏的,我们不能相信它,所以让我们跟着直觉走吧。”
- 您的分析/BI、数据科学、数据工程和产品工程团队将时间花在救火、调试和修复数据问题上,而不是在可以为您的客户增加实质性价值的其他优先事项上取得进展。这可能包括浪费在沟通上的时间()“组织中的哪个团队负责解决这个问题?”)、问责(“谁拥有这个管道或者仪表盘?”)、故障排除(“具体哪个表或字段损坏了?”)、或者效率(“这里已经做了什么?我是在重复别人的工作吗?”).
Tomasz Tunguz 最近预测“数据工程是新的客户成功。”正如客户成功是一个新生学科,现在正成为每个企业的重要职能一样,数据工程预计也将同样增长。我完全同意,并补充说,数据停机问题跨越了数据驱动型组织中的许多团队。随着公司在使用数据方面变得越来越受数据驱动和复杂,以及业务功能越来越成为数据的重要消费者,我预计数据宕机问题将会扩大并变得越来越重要。我还期望出现更好的解决方案来帮助整个行业的团队减少数据停机时间。在未来的帖子中,我将描述我们如何试图在 Gainsight 解决这个问题,以及当公司重新获得对其数据的信任和信心时所获得的好处。
如果您经历过数据停机,我很想听听您的意见!通过电子邮件 联系 Gmail . com。
数据运营的兴起(从数据治理的灰烬中)
ML 时代打破了传统的数据治理。让我们将它重建为一个工程学科,以推动数量级的改进。

公司知道他们需要数据治理,但是在实现数据治理方面没有取得任何进展
最近,高管们对数据治理感兴趣,因为有这样的文章:
- 最近的 Gartner 研究发现,组织认为糟糕的数据质量导致每年平均 1500 万美元的损失。
- GDPR 的第一笔巨额罚款是谷歌被法国数据管理局罚款 5700 万美元
- Equifax 数据泄露已经给公司造成了 14 亿美元的损失(还在继续),尽管事实上数据从未被发现。
另一方面,绝大多数数据治理计划未能取得进展,Gartner 还将 84%的公司归类为数据治理成熟度低的公司。尽管几乎每个组织都认识到数据治理的必要性,但由于该术语在高管阶层中的强烈负面含义,许多公司甚至没有启动数据治理计划。

当前的数据治理“最佳实践”被打破
以我的经验来看,缺乏进展的原因是我们一直在以错误的方式进行数据治理,这使得它在到达时就死亡了。斯坦·克里斯汀斯在的《福布斯》文章中说得很对,尽管事实上这本质上是他的公司的一个广告(一个非常有效的广告)。我同意他的观点,过去治理失败的主要原因是因为技术还没有准备好,组织无法找到激励人们遵循填补技术空白的过程的方法。然而,我不同意现代数据目录工具提供了我们成功所需的完整技术答案(尽管它们是朝着正确方向迈出的一步)。
如果数据目录工具不是答案,那什么是呢?
数据湖工具的最新进展(特别是大规模版本化数据的能力)使我们处于一个转折点,我们可以重新设想我们治理数据的方式(即文化、结构和流程,以实现风险缓解和治理成本降低)。在转型结束时,数据治理将看起来更像 DevOps,数据管理员、科学家和工程师密切合作,在整个数据分析生命周期中编纂治理策略。尽早采纳这些变革的公司将创造巨大的竞争优势。
为了理解我是如何得出这个结论的,我们必须回顾一下软件工程的历史,在软件工程中,两项核心技术创新促成了过程和最终的文化变革,将编码从一种爱好转变为一场席卷全球的革命。然后,我们将看到类似的创新是如何成为 DevOps 运动的主要推动者的,devo PS 运动在云时代同样转变了 IT 基础架构。最后,我们将看到这些创新如何推动数据治理的类似流程和文化变革。建立这个案例需要一点时间,但我还没有找到更好的方法来表达这一点,所以请继续关注我。
背景:源代码控制和编译如何创造了软件工程

创建软件工程学科的核心创新是:
- 将一组输入编译成可执行输出的能力
- 跟踪输入的版本控制系统
在这些系统出现之前,回到 20 世纪 60 年代,软件开发是一门手艺,一个工匠必须交付一个完整的工作系统。这些创新使得新的组织结构和过程能够应用于软件的创建,编程成为一门工程学科。这并不是说编程艺术不重要,只是这不是本文的主题。

从手工到工程的第一步是通过编译器用高级语言表达程序的能力。这使得编写程序的人更容易理解程序,也更容易在团队中的多人之间共享,因为程序可以被分解成多个文件。此外,随着编译器变得更加高级,他们通过将代码传递给许多中间表示来对代码进行自动化改进。

通过在最终产生系统的代码的所有变更中添加一致的版本系统,随着时间的推移,编码艺术变得“可度量”(按照彼得·德鲁克的名言:“你不能管理你不能度量的东西”)。从那时起,各种各样的增量创新,像自动化测试、代码质量的静态分析、重构、持续集成和许多其他的被添加进来,以定义额外的度量。最重要的是,团队可以针对特定版本的代码归档并跟踪 bug,并且对他们交付的软件的特定方面做出保证。显然,已经有许多其他的创新来改进软件开发,但是很难想到在某种程度上不依赖于编译器和版本控制的创新。
一切如代码:在别处应用软件工程的核心创新
近年来,这些核心创新被应用到新的领域,导致了一场名为的运动。虽然我没有亲身经历,但我只能假设软件开发人员在 70 年代用怀疑的眼光看待 SVN 的第一个版本。同样,由“一切如代码”运动所消耗的许多新领域也受到了类似的质疑,有些人甚至声称他们的学科永远不会简化为代码。然后,在几年之内,规程中的一切都被简化为代码,这导致了对“遗留”做事方式的许多倍的改进。

Turning code into infrastructure using a “compiler” layer of virtualization and configuration management
第一个扩展领域是基础设施供应。在本例中,代码是一组配置文件和脚本,用于指定跨环境的基础架构配置,编译在云平台中进行,在云平台中,配置与脚本一起根据云服务 API 读取和执行,以创建和配置虚拟基础架构。虽然代码移动看起来像是一夜之间席卷所有基础架构团队的基础架构,但大量令人惊叹的创新(虚拟机、软件定义的网络、资源管理 API 等。)使“编译”步骤成为可能。这可能始于 VMWare 和 Chef 等公司的专有解决方案,但当公共云提供商在其平台上免费使用核心功能时,它被广泛采用。在这一转变之前,基础设施团队管理他们的环境以确保一致性和质量,因为它们很难重新创建。这导致了治理的分层,旨在在开发过程中的各个检查点应用控制。今天,DevOps 团队 eengineer他们的环境,控件可以内置到“编译器”中。这极大地提高了部署变更的能力,从几个月或几周缩短到几小时或几分钟。
这使得我们能够彻底反思改善基础设施的可能性。团队开始整理从零开始创建系统的每个阶段,使编译、单元测试、分析、基础设施设置、部署、功能和负载测试成为完全自动化的过程(连续交付)。此外,团队开始测试系统在部署前后的安全性(DevSecOps)。随着每个新组件进入版本控制,该组件的演化随着时间变得可测量,这将不可避免地导致持续的改进,因为我们现在可以对我们交付的环境的特定方面做出保证。
言归正传:同样的事情也会发生在数据治理上
这种现象的下一个消费领域将是数据治理/数据管理。我不确定它的名字会是什么(DataOps、Data as Code 和 DevDataOps 似乎都有点过时),但它的影响可能会比 DevOps/infrastructure as code 更有影响力。
作为编译器的数据管道
“有了机器学习,你的数据就写出了代码。”— Kris Skrinak,AWS ML 部门主管

机器学习的快速崛起提供了一种构建复杂软件的新方法(通常用于分类或预测事物,但随着时间的推移,它将做得更多)。这种将数据视为代码的心态转变将是将数据治理转化为工程学科的关键的第一步。另一个人说:
"数据管道是简单的编译器,它使用数据作为源代码."
与软件或基础设施相比,这些“数据编译器”有三点不同,但也更复杂:
- 数据团队拥有数据处理代码和底层数据。但是如果数据现在是源代码,就好像每个数据团队都在编写自己的编译器来从数据中构建可执行的东西。
- 对于数据,我们一直通过元数据手动指定数据的结构,因为这有助于编写“数据编译器”的团队理解每一步要做什么。软件和基础设施编译器通常推断其输入的结构。

We don’t understand how data writes code
3.我们仍然没有真正理解数据是如何编写代码的。这就是为什么我们让数据* 科学家进行实验来弄清楚编译器的逻辑,然后数据工程师随后进来构建优化器。*
当前的一套数据管理技术平台(Collibra、Waterline、Tamr 等。)是为了支持这个工作流程而建立的,他们做得非常好。然而,他们支持的工作流仍然使得数据治理的定义成为在审查会议中处理的手动过程,这阻碍了我们在开发运维&基础设施作为代码出现后看到的改进类型。
缺失的环节:数据版本控制

Applying data version control. Credit to the DVC Project: https://dvc.org/
因为数据是在“真实世界”中生成的,而不是由数据团队生成的,所以数据团队一直专注于控制描述数据的元数据。这就是为什么我们在数据治理(试图管理您不能直接控制的东西)和数据工程(我们实际上是在设计数据编译器而不是数据本身)之间划了一条线。目前,数据治理团队试图在不同的点应用手动控制来控制数据的一致性和质量。对数据引入版本跟踪将允许数据治理和工程团队一起设计数据,针对数据版本归档错误,对数据编译器应用质量控制检查,等等。这将允许数据团队对数据交付的系统组件做出保证,历史已经表明,这将不可避免地导致数据驱动系统的可靠性和效率的数量级提高。
数据版本控制的临界点已经到来
像 Palantir Foundry 这样的平台已经像开发人员对待代码版本一样对待数据管理。在这些平台中,数据集可以被版本化、分支、由版本化代码操作以创建新的数据集。这使得数据驱动测试成为可能,数据本身的测试方式与单元测试对修改数据的代码的测试方式非常相似。当数据以这种方式流过系统时,系统会自动跟踪数据的谱系,就像在每个数据管道的每个阶段产生的数据产品一样。这些转换中的每一个都可以被视为编译步骤,在机器学习算法将最终的中间表示(数据团队通常称之为特征工程数据集)转换为可执行形式以进行预测之前,将输入数据转换为中间表示。如果你手头有 1000 万到 4000 万美元的资金,并且愿意与某个供应商合作,那么 Foundry 中所有这一切的整合是非常令人印象深刻的(声明:我没有太多 Foundry 的实践经验;这些陈述基于我在客户端看到的真实实现的演示。

The DataBricks Delta Lake open source project enables data version control for data lakes
对于我们其余的人来说,现在有开源的替代方案。数据版本控制项目是一个针对数据科学家用户的选项。对于大数据工作负载,随着他们的开源三角洲湖项目的发布,DataBricks 已经迈出了为数据湖开源真正版本控制系统的第一步。这些项目是全新的,所以分支、标记、血统跟踪、bug 归档等等。还没有添加,但是我很确定社区会在接下来的一年左右添加它们。
下一步是重建数据治理
版本控制和数据编译技术的到来促使数据团队开始重新思考他们的流程如何利用这一新功能。那些能够积极利用这种能力来做出保证的人,很可能会为他们的组织创造巨大的竞争优势。第一步是终止基于检查点的治理流程。相反,数据治理、科学和工程团队将紧密合作,在数据被数据管道编译成可执行的东西时,实现数据的持续治理。在这之后的某个地方,将会把从数据中编译的组件与纯软件和基础设施集成为一个单元;虽然我不认为有技术可以做到这一点。其余的将随着时间的推移而出现( 中的和 以及其他 帖子),实现一种治理文化,减少主要问题,同时加快机器学习计划的价值实现时间。我知道这听起来很疯狂,但这是一个令人兴奋的数据治理时代。
如果你已经读到这里,你可能对数据治理感兴趣,所以请留下评论或写下你的想法。
元学习的兴起

https://openai.com/blog/solving-rubiks-cube/
元学习描述了设计与训练深度神经网络相关的更高级组件的抽象。当提到神经网络架构的自动化设计时,术语“元学习在深度学习文献中频繁引用“ AutoML ”、“少量学习”或“神经架构搜索”。从标题滑稽的论文中脱颖而出,如“通过梯度下降学习梯度下降学习”,OpenAI 的魔方机器人手的成功证明了这一想法的成熟。元学习是推进深度学习和人工智能的最先进的最有前途的范式。
OpenAI 通过展示经过强化学习训练的机器人手的开创性能力,点燃了人工智能世界。这一成功建立在 2018 年 7 月提交的一项非常相似的研究的基础上,该研究让一只机器手按照与视觉提示匹配的配置来定向一块积木。这种从面向块到解决魔方的演变是由元学习算法推动的,该算法控制模拟中的训练数据分布,即自动域随机化(ADR)。
域名随机化—数据扩充
域随机化是一种解决 sim2 真实传输的数据扩充问题的算法。函数逼近(和深度学习)的核心功能是从它在训练中所学到的东西中归纳出从未见过的测试数据。虽然不像错误分类那样令人惊讶于几乎不可见的敌对噪声注入,但深度卷积神经网络在没有特殊修改的情况下,不会在模拟图像(显示在左下方)上训练时推广到真实的视觉数据(显示在右下方)。

“Solving Rubik’s Cube with a Robot Hand” by Ilge Akkaya, Marcin Andrychowicz, Maciek Chociej, Mateusz Litwin, Bob McGrew, Arthur Petron, Alex Paino, Matthias Plappert, Glenn Powell, Raphael Ribas, Jonas Schneider, Nikolas Tezak, Jerry Tworek, Peter Welinder, Lilian Weng, Qiming Yuan, Wojciech Zaremba, Lei Zhang
自然,有两种方法可以将模拟数据分布与真实数据分布对齐。苹果研究人员开发的一种方法叫做 SimGAN 。SimGAN 使用对抗损失来训练生成对抗网络的生成器,以使模拟图像尽可能真实地出现,由鉴别器将图像分类为属于真实或模拟数据集。该研究报告了眼睛注视估计和手姿态估计的积极结果。另一种方法是使模拟数据尽可能多样化,相反,尽可能真实。
后一种方法被称为域随机化。托宾等人 2017 年的论文中的下图很好地说明了这一想法:

“Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World” by Josh Tobin, Rachel Fong, Alex Ray, Jonas Schneider, Wojciech Zaremba, Pieter Abbeel
域随机化似乎是弥合 Sim2Real 差距的关键,允许深度神经网络在模拟训练时推广到真实数据。与大多数算法不同,域随机化带有许多需要调整的参数。下图显示了块的颜色,环境的照明,阴影的大小等等的随机化。这些随机环境特征中的每一个都有一个下限到上限的区间和某种抽样分布。例如,当对随机环境进行采样时,该环境具有非常明亮的照明的概率是多少?
在 OpenAI 的原始 Dactyl 研究中,用机械手实现块定向,域随机化数据课程在实验之前被手动编码。这种领域随机化超越了视觉世界,使物理模拟器中的组件随机化,从而产生一种策略,使机器人手能够灵巧而精确地移动。与视觉随机化的想法类似,这些物理随机化包括立方体的大小/质量和机器人手中手指的摩擦力等维度(参见附录 B 用机器人手解魔方了解更多细节)。
从 Dactyl 到 Rubik's Cube solver 的关键是域随机化是课程定义随机化的强度是自动而不是手动设计的,在 ADR 算法的以下行中明确定义:

Image from “Solving Rubik’s Cube with a Robot Hand”. If the agent’s performance exceeds a parametric performance threshold, the intensity of the randomization is increased (given by delta with phi defining the distribution of the environment parameters)
设计自己数据的 AI
人工智能设计自己数据的最好例子之一是由优步人工智能实验室的研究人员开发的成对开放式开拓者(诗人)算法。

“Paired Open-Ended Trailblazer (POET): Endlessly Generating Increasingly Complex and Diverse Learning Environments and Their Solutions” by Rui Wang, Joel Lehman, Jeff Clune, Kenneth O. Stanley
POET 通过同时优化代理和它学习行走的环境来训练两足行走代理。POET 与 OpenAI 的魔方解算器不同,它使用进化算法,维护步行者和环境的种群。在这项研究中,主体和环境群体的结构是构建复杂性进化的关键。尽管与基于群体的学习来适应一组代理相比,使用强化学习来训练单个代理,POET 和自动领域随机化非常相似。他们都以自动化的方式开发了一系列日益具有挑战性的训练数据集。两足动物的行走环境不会随着手动编码的功能而改变,而是作为步行者在不同环境中的表现的结果,在该开始挑战地形时发出信号。
数据还是模型?
元学习的研究通常集中在数据和模型架构上,除了像元学习优化器这样的例外,它似乎仍然属于模型优化的范畴。数据空间中的元学习,如自动领域随机化,已经以数据扩充的形式进行了大量研究。
数据扩充在图像数据的环境中最容易理解,尽管我们已经看到物理数据是如何被扩充和随机化的。这些图像放大通常包括水平翻转和小幅度的旋转或平移。这种增强在任何计算机视觉管道中都是典型的,例如图像分类、对象检测或超分辨率。
课程学习是另一种数据级优化,它涉及数据呈现给学习模型的顺序。例如,让学生从简单的例子开始,比如 2 + 2 = 4,然后再引入更难的概念,比如 2 = 8。课程学习的元学习控制者根据感知难度的一些度量标准以及数据应该呈现的顺序来查看数据是如何排列的。Hacohen 和 Weinshall 最近的一项研究在 ICML 2019 年大会上展示了这一有趣的成功(如下所示)。

“On the Power of Curriculum Learning in Training Deep Networks” by Guy Hacohen and Daphan Weinshall. Vanilla SGD data selection shown on the gray bar on the far left is outperformed by curriculum learning methods
神经架构搜索或元学习模型通常比数据级优化受到更多关注。这是深度学习研究趋势的高度推动。将基础 AlexNet 架构扩展到 ResNet 架构会带来明显的性能优势,该架构率先使用在大 GPU 计算的大数据集上训练的深度卷积网络。ResNet 通过 DenseNet 等手工设计得到进一步扩展,然后被 AmoebaNet 和 EfficientNet 等元学习技术超越。图像分类基准推进的时间线可以在paperswithcode.com上找到。
元学习神经架构试图描述一个可能架构的空间,然后根据一个或多个客观指标搜索最佳架构。
高级元学习者
神经结构搜索已经采用了广泛的算法来搜索结构,随机搜索、网格搜索、贝叶斯优化、神经进化、强化学习和可区分搜索。与 OpenAI 的自动域随机化技术相比,这些搜索算法都相对复杂。自动域随机化的想法似乎可能会随着高级搜索算法的出现而得到改善,例如,像加州大学伯克利分校的研究人员或谷歌的的自动增强所证明的基于人口的搜索在数据增强中是有用的。
元学习的表达能力如何?
在神经结构搜索中经常提出的元学习的限制之一是搜索空间的约束。神经结构搜索从人工设计的可能结构的编码开始。这种人工编码自然限制了搜索可能的发现。然而,要使搜索可计算,有一个必要的折衷。
当前的架构搜索将神经架构视为有向无环图(Dag ),并试图优化节点之间的连接。诸如 Gaier 和 Ha 的“权重不可知神经网络”和谢等人的“探索用于图像识别的随机连线神经网络”的论文表明,构建 DAG 神经架构是复杂的,并且没有被很好地理解。
有趣的问题是,神经架构搜索何时能够优化节点上的操作,它们之间的连接,然后自由地发现像新颖的激活函数、优化器或标准化技术这样的东西,如批量标准化。
想想元学习控制器能有多抽象是很有趣的。例如,OpenAI 的魔方解算器本质上有 3 个“智能”组件,一个符号化的魔方解算器,一个视觉模型和一个控制机器人手的控制器网络。元学习控制器是否足够聪明,能够理解这种模块化,并设计由加里·马库斯最近发起的符号和深度学习系统之间的混合系统?
元学习数据扩充也非常受限。大多数数据扩充搜索(甚至是自动域随机化)被约束到元学习控制器可用的一组转换。这些变换可能包括图像的亮度或模拟中阴影的强度等内容。增加数据扩充自由度的一个有趣的机会是将这些控制器与能够探索非常独特的数据点的生成模型相结合。这些生成模型可以设计新的狗和猫的图像,而不是旋转现有的图像或使图像变暗/变亮。虽然非常有趣,但它似乎不像当前最先进的生成模型,如比根或 VQ-VAE-2 在 ImageNet 分类上的数据增强工作。
迁移和元学习
“元学习”经常用于描述迁移和少量学习的能力,不同于“AutoML”如何用于描述模型或数据集的优化。这种定义与通过自动域随机化解决的 Sim2Real 的域适应任务非常一致。然而,该定义也描述了学习,例如从图像网络分类转移到识别钢缺陷。

魔方求解器的一个有趣的结果是适应扰动的能力。例如,尽管将橡胶手套戴在手上,将手指绑在一起,并且覆盖立方体的遮挡,解算器仍能够继续,(视觉模型必须完全受损,因此必须由 Giiker 立方体的传感器进行感测)。这种转移元学习是用于训练机器人手控制的策略网络中的 LSTM 层的结果。我认为这种“元学习”的使用与 AutoML 优化相比更像是记忆增强网络的一个特征。我认为这表明了统一元学习和为这个术语确定一个单一定义的困难。
结论
由于机器人手协调的华丽展示,魔方解算器的成功显然引人注目。然而,这项研究更有趣的组成部分是引擎盖下的元学习数据随机化。这是一种在设计训练数据的同时进行学习的算法。Jeff Clune 的 AI-GAs 中描述的这种范式,即包含元学习架构的算法,元学习学习算法本身,并生成有效的学习环境,将成为深度学习和人工智能进步的巨大机遇。感谢您的阅读,如果您想了解更多关于 OpenAI 的论文,请查看下面的视频!
基于 SQL 的数据建模和数据操作的兴起

更新:对复杂的分析前景感到困惑?查看我们的书: 《分析学设置指南》 。
原载于 2019 年 11 月 15 日我们的总工程师 Thanh 在https://www . holistics . io。
基于 SQL 的 RDBMS 的复兴
如果有一个我们都同意的分析趋势,那就是在过去十年中,我们已经看到了收集的业务数据量的巨大增长。如今,一个典型的企业使用数十个甚至数百个基于云的订阅即服务软件,用于各种目的。与几年前相比,如今普通企业加上更传统的内部企业软件会产生大量数据。
更精明的企业发现了分析数据的巨大价值,以便做出明智的决策,从而导致数据管理系统的需求和供应大幅上升。
直到几年前,传统的数据管理方式(基于 SQL 的 RDBMSs)还被认为是过去的遗留物,因为这些系统无法扩展以处理如此巨大的数据量。相反,HBase、Cassandra 和 MongoDB 等 NoSQL 系统变得流行起来,因为它们将自己标榜为可伸缩和更易于使用。
今天,基于 SQL 的数据库系统似乎有所复苏
然而今天,基于 SQL 的数据库系统似乎有所复苏。根据亚马逊首席技术官的说法,其 PostgreSQL 和 MySQL 兼容的 Aurora 数据库产品是“AWS 历史上增长最快的服务”。
基于 SQL 的 MPP(大规模并行处理)数据仓库,过去价格昂贵,只能由大企业购买,现在已经转移到云上,并日益商品化。今天,所有主要的云提供商都有自己的 MPP 数据仓库:谷歌有 BigQuery,亚马逊有 Redshift,微软有 Azure 数据仓库……更不用说雪花——一家独立的数据仓库供应商,最近估值为 39 亿美元。每个人现在都可以建立自己的数据仓库…并按分钟付费,这在十年前是闻所未闻的。
这些发展为数据分析师带来了巨大的能力和前所未有的访问权限,因为他们现在可以执行复杂的分析查询,并在几秒或几分钟内获得结果,而不是像传统的数据仓库那样需要几个小时。
用于数据分析的 SQL
对于数据分析,这种复苏的原因很容易理解:
- NoSQL 不擅长分析查询:缺少连接意味着在这些数据库上编写复杂的分析查询几乎是不可能的。
- 没有标准化的查询语言:每个供应商都创建自己的语言来查询他们的 NoSQL 数据库,这增加了分析师的摩擦和学习曲线。
另一方面,SQL 是无处不在和标准化的。几乎每个数据分析师都熟悉它。
用谷歌自己的话说,他们的大规模可扩展内部数据管理系统 Google Spanner:
Spanner 的原始 API 提供了 NoSQL 方法,用于单个表和交叉表的点查找和范围扫描。虽然 NoSQL 方法提供了启动 Spanner 的简单途径,并继续在简单的检索场景中有用,但 SQL 在表达更复杂的数据访问模式和将计算推送到数据方面提供了重要的附加值。
Spanner 的 SQL 引擎与谷歌的其他几个系统共享一种通用的 SQL 方言,称为“标准 SQL”,包括 F1 和 Dremel 等内部系统,以及 BigQuery 等外部系统……对于谷歌内部的用户来说,这降低了跨系统工作的障碍。针对 Spanner 数据库编写 SQL 的开发人员或数据分析师可以将他们对该语言的理解转移到 Dremel,而不用担心语法、空处理等方面的细微差异。
随着基于云的 MPP 数据仓库的兴起,SQL 现在已经成为一种非常有吸引力的数据分析方式。利用这一趋势,像 Mode Analytics、Periscope Data 和 Redash 这样的开源工具这样的初创公司变得越来越受欢迎。对于精通 SQL 的分析师来说,他们现在可以利用其全新的基于云的数据仓库的能力来制作漂亮的图表和仪表板,而无需学习任何专有语言或工具。此外,SQL 代码只是文本,因此可以存储在版本控制系统中,管理起来很简单。
SQL 的问题
然而,使用 SQL 进行数据分析并非一帆风顺。
任何严重依赖 SQL 的工具都是业务用户的禁区,他们不仅仅想查看静态图表和仪表板,但又不懂 SQL 语言。它迫使业务用户退回到老派的电子表格,在那里他们将原始数据导出到 Excel 并自己执行手动计算,从而导致准确性和数据一致性方面的问题。
SQL 也太低级了,当需要更复杂的分析时,查询很快变得复杂。当分析需要几个表时,大多数 SQL 查询读起来都不错。但是,当相关表的数量增加时,数据分析人员不得不跟踪多种类型的连接,并在每次编写查询时为正确的情况选择正确的连接。
这意味着 SQL 不可重用,导致逻辑略有不同的类似代码到处重复。例如,无论何时需要进行与会计相关的分析,都不能轻易地为会计目的编写一个 SQL“库”并将其分发给团队的其他成员以供重用。
传统数据建模
向非技术用户提供 BI 的传统方式是在分析师通过数据建模流程准备好数据集之后,给他们一个拖放界面。该流程允许分析师在业务逻辑和原始底层数据之间建立映射。通过软件界面向最终用户展示高级业务概念,使他们无需学习 SQL 之类的查询语言就能自己探索数据。
这个过程始于几十年前的 Cognos、SAP BI 等供应商。现代版本包括 Sisense、Tableau 和 PowerBI 等供应商。然而,无论新旧,这些工具都有相同的问题。
遗留工具并不是为了利用现代数据仓库而设计的。
首先,数据在变得有用之前被加载到每个供应商的专有数据存储中。这意味着数据现在是重复的,现代强大的 MPP 数据仓库只不过是一个简单的数据存储。原因很简单,因为这些工具不是为利用现代数据仓库而设计的。它们是在数据仓库昂贵的时代设计的,当时每个 BI 工具都很自然地构建自己的数据存储引擎。
第二,数据建模过程主要是基于 GUI 的,这意味着它不容易重用,也不能利用强大的版本控制系统(如 g it)来跟踪变化。
基于 SQL 的数据模型方法
这两种方法的优点自然为我们指出了一个新的方向:如果我们能够将 SQL 的强大功能和数据建模的易用性结合起来,会怎么样呢?答案是我们绝对可以!
最近被谷歌以 26 亿美元收购的 Looker 是使用这种方法的先驱。它提供了一种称为 LookML 的数据建模语言,作为客户数据库之上的抽象层。该软件不会将数据加载到自己的数据存储中,也不会使用专有的查询引擎。相反,当非技术用户使用 Looker 浏览数据时,该软件会将建模输入转换为 SQL 查询,然后将该查询发送到客户的数据库。这意味着用户根本不需要了解 SQL,但仍然可以利用现代 MPP 数据仓库的能力!
使用基于文本的建模语言的另一个优点是,现在整个建模层可以存储在一个强大的版本控制系统中,这使得跟踪变更和在出现问题时恢复变得很简单。
基于 SQL 的端到端数据管道
基于 SQL 的数据模型方法只是冰山一角。
以 ETL 为例。为了让我们的业务数据出现在数据仓库中并准备好进行建模,我们需要从多个来源导入数据,并将数据转换成适合分析的格式。传统上,这些任务属于一类叫做 ETL 工具的工具。该过程包括三个步骤:
- 提取-从源中提取数据。
- 转换—将数据转换为最终可用的格式。
- 加载—将转换后数据加载到数据仓库中。
随着强大的 MPP 数据仓库的出现,越来越多的数据团队开始转向 ELT 方法,而不是 ETL 方法。这个过程从数据源中提取原始数据,并将它们直接加载到数据仓库中,不涉及任何转换。一旦存储,分析师就可以使用他们最喜欢的工具——SQL——将数据转换成适合消费的最终格式。
因为数据转换现在是用 SQL 编写的,所以很自然地,我们可以对它应用相同的基于 SQL 的数据建模方法!
像 Holistics 这样的工具将 Looker 基于 SQL 的数据建模方法向前推进了一步,将建模进一步扩展到 L(加载)和 T(转换)层,覆盖了端到端的整个分析管道。

这种使用统一的基于 SQL 的建模方法来导入、转换和探索数据的方法揭示了以前没有的多种优势:
- 它使数据分析师能够从端到端拥有整个数据分析管道,显著缩短每次分析的洞察时间,同时保持相同的要求:即符合当前的行业标准 SQL。
- 数据上下文被保留。这意味着分析的最终结果可以追溯到它们的来源,使得调试数据准确性问题变得微不足道。
- 它打破了数据利益相关者如数据工程师、数据分析师、数据科学家和业务用户之间的自然孤岛,从而改善了组织的数据文化。
数据操作驱动的运动
当您开始将数据建模视为使用 SQL 的另一种逻辑编码时,数据分析和软件工程之间的相似之处变得越来越明显。软件工程的目标是通过交付软件来交付价值,而分析的目标是通过交付可探索的数据集和可视化来交付价值。这两个过程都需要编写逻辑代码(前者使用编程语言,后者使用 SQL 建模语言),然后将代码部署到“生产”环境中。
软件开发世界已经经历了几十年的过程实验。一个相对现代的运动是 DevOps 运动,它对改进软件开发起到了很大的作用。这个运动结合了自动化和连续交付,以帮助无数的组织加速软件交付,同时增加他们软件的可靠性和质量。
我的论点是,如果我们复制 DevOps 中表达的思想,我们可以显著改进数据分析过程。举几个例子:
- 将分析视为代码 —如果我们将分析逻辑视为代码,我们现在可以将它们放入我们的源代码控制系统,实现强大的跟踪、调试和(最重要的是!)自动化。
- 数据的单元测试 —通过在每个转换步骤中引入自动化测试,数据的准确性和质量可以得到极大的提高。
- 集中式数据维基 —构建集中式数据维基允许组织中的每个人在一个地方发现和探索数据。
一种新的分析范式
SQL、数据建模和 DevOps 是三个古老的概念,彼此之间几乎没有什么关系。然而,当结合起来时,我们有了一个全新的思考分析的范式,这在我们 60 年的行业中是前所未有的。
我们称之为数据操作范例。这是 Holistics 背后的指导范式,这是一个统一的分析平台,我们在过去两年中一直在努力。我们对它的未来感到无比兴奋。
数据战略家的崛起
本文原载于 丹工作室网站 。
你有没有注意到越来越多的工作职位前面都有数据这个词?早在 2012 年,“数据科学家”这个职位就被《哈佛商业评论》评为“21 世纪最性感的工作”。从那以后,正如正确预测的那样,大量带有“数据”一词的衍生产品和新的职位头衔被传播开来,成为无价的“数据科学独角兽”的雄心与正在进行的人才大战和公司和猎头的疯狂争夺相匹配,这些公司和猎头急于发现并抓住一只独角兽。

Figure 1: Data Scientist Searches on Google 2004–2018

Figure 2: Data Strategist Searches on Google 2004–2018
随着数据科学独角兽似乎非常罕见和无价,公司通过几个人寻求相同的专业知识或技能。
除了高级科学学位、SQL、R、Python、机器学习等的常见要求之外,数据科学职位描述中常见的一组技能如下:
"将业务问题转化为分析解决方案和见解的能力"
技术人员可能会对这个短语嗤之以鼻,认为它是无用商业术语的典型例子。这对于数据科学家的工作来说是如此的重要,为什么要把它放在工作描述中呢?原因很简单,那就是它是一种真正的技能,虽然它可以被训练和发展,但这种技能比人们想象的要罕见。有多少有博士学位的数据科学家有商科学位?有几个,但也不常见。
上面的定义实际上代表了数据战略家的主要技能。为了说明这在实践中意味着什么,让我们看一个电子商务的例子:
你能帮助我们更好地了解我们的客户吗?
这个问题的答案可能很棘手,需要大量的经验和信心。让我们看看接下来会发生什么:
数据科学家:你可以在 AWS 上部署一个神经网络,为不同的用户群训练一个分类器。
客户:嗯,好的。但是我们需要什么样的数据呢?
数据科学家:一个由大约几千个观察值组成的标签数据集——当然是平衡类。
委托人:???
在这些句子的所有单词中,对于希望简单了解客户的经理来说,只有几个是可以理解的。其余的也可能是一种神秘的外星语言。这个简单的例子说明了这个问题,并展示了翻译角色的必要性。这位数据科学家使用的术语是那些拥有高级科学学位的人可能理解的,但对于他们直接报告的大多数经理和商人来说是无法理解的。
让我们打电话给数据战略家,看看他们是怎么做的:
你能帮助我们更好地了解我们的客户吗?
数据战略家:好,让我们看看。那么你已经有了什么样的数据,如果有的话?
客户:我们有谷歌分析数据、我们网站上的用户行为和购买数据、数据库中的产品评论和评论数据以及社交媒体数据。[1]
基于这些数据集,我们可以尝试用几种不同的方式来回答这个问题。我们可以做的一件事是获取行为数据,并对其进行情感分析——客户对你的特定产品的感受。这很好,因为这个项目的一部分可以用来分析产品评论文本数据。我们可以在这里更进一步,看看是否有一些模式——也许是不同用户的组。通过使用这样的模型,我们可以开始了解客户反馈中是否存在共同的模式,并自动标记负面反馈,并将其转发给支持人员。这很有可能会成功,我有 80%的信心我们会有相关的结果。
客户:哦,这听起来很有趣。我们还能做什么?
数据策略师:如果我们有关于客户的良好数据集,我们可以尝试预测他们流失的概率,或者换句话说,放弃他们的提供商的概率。然后,我们可以利用这些预测来锁定那些可能会因为特价商品而流失的用户,从而让他们留在我们的平台上。这可能有点棘手,在很大程度上取决于你拥有的数据量——我认为这有 50%的可能性,可能需要更多的工作、专业知识和领域知识来建立一个客户流失模型。
你能猜到哪一个会产生更大的商业影响吗?
以下是造成差异的几点:
- 这两个对话的第一个显著区别是,后者是一个真实的对话。客户端和数据策略师之间有来有往,感觉更像是一种协作。
- 数据战略家试图先取得理解。
- 数据战略家立即将工作与业务目标联系起来。
- 第二种情况也开始考虑代码的可重用性。
- 最后,这位战略家提供了几种方法比较的一些指标——重要性、复杂性和成功的可能性。
所有这些都定义了新的数据战略家角色。这也符合数据科学领域最近不断增长的专业化和发展的成熟性。最近的文章,一些关于 HBR 和 T2 的文章,说明了这一点。
在接下来的博客文章中,我们将探讨数据战略家的新兴角色,以及我们期望这一角色如何推动商业洞察和发展。
[1]当然,并不是所有的客户都能立即获得如此全面的信息,但为了便于说明,我们假设他们都有。
[2]他们使用“数据翻译器”这个术语。
机器学习工程师的崛起
机器学习工程师是带领我们走向人工智能未来的职业。多年来,每一次技术变革都会带来新的机遇,需要一种新的职业来满足新的需求。
这些变化对公司过去的工作方式产生了重大影响,现在我们正处于另一场变革之中。
在这里,我将带你进行一次时间之旅,展示这些重大转变是如何随着时间的推移而改变公司的。
福特车型

“If I had asked people what they wanted, they would have said ‘faster horses.”
事实是福特从未说过这句话。但这让我明白了一个道理。这种模式是关于大的想法和解决实际问题。当福特发布 T 型车时,他正在解决交通堵塞(马!)、交通事故、让通勤变得实惠。
当你有很好的洞察力,人们想要你的解决方案时,这种模式很有效。但这是有风险的,因为你可以说这就像在黑暗中扔飞镖,并期望获胜。

Throwing darts in the dark
福特没有任何数据或任何人群要求更好的汽车。在他那个时代,汽车是一种昂贵/不可靠的小玩意。他的成功可以归功于他的远见和执行力。他对汽车的看法是正确的,而世界上大部分地区的看法是错误的。
这种模式的主要局限在于,你不可能在某件事情上如此正确,而世界上的其他事情却如此错误。一个现代的例子是史蒂夫·乔布斯。只要谷歌一下,看看有多少人写道,苹果发布手机是一个糟糕的主意,他们应该解雇拖累苹果的史蒂夫·乔布斯。
为了增加你成功的机会,还需要加入一些其他的东西,这就引出了下一个模型
市场调研

当福特还活着的时候,世界经历了一场变革。与商业最相关的技术变革之一是电信。电话、收音机和电报都是在 19 世纪末或 20 世纪初发明的。但像汽车一样,它们大多是昂贵的小玩意,普通人买不起。随着这种情况开始改变,通信开始变得负担得起,信息共享开始爆炸式增长。
其中一个结果是,现在你可以听到竞争对手在另一个州的表现,或者你的产品在另一个国家的接受程度。数据现在可以集中起来,一旦有了数据,人们就开始看到模式,并发展出营销中最初的一些理论。这是焦点小组和消费者理论的开端。

You can now peek the target before throwing your darts
这就产生了对新型职业的需求。在那些日子里,人们理解数据中模式的方式是让有数学和心理学背景的专业人士参与进来。别忘了,这个时候是弗洛伊德在的时候,了解并在后来操纵人的潜意识的想法是很吸引人的。这种新型的职业将成为今天市场营销部门的开端。现在,学习针对目标人群的说服技巧是市场营销课程的一个常规。
你现在可以从别人的错误中学习,但更重要的是,你现在可以在发布你的产品之前了解特定的人口统计和用户群。
如果你是一家 30 年代的公司,你会收到一份焦点小组的报告,说顾客会欢迎你不同颜色的产品。在那之后,你会推出你的产品的“限量版”来衡量人们的兴趣。但如果你想在发行后提高销量,除了投资电台广告,就没剩下多少了。这仍然是一种“一对多”的沟通类型,从客户那里获得的大部分数据都是高层次的汇总,而且是几个月前甚至几年前的数据。拥有关于客户行为的实时数据或更精细的数据是不可想象的。但这将随着下一次技术转变而改变:电脑
预测时代

这是第二次世界大战后开始的时代,我们目前正生活在它的末期。战后,计算机开始成为公司和政府中的一件东西。直接的好处是能够在几秒钟内完成一整层楼的数学家的工作。在计算机出现之前,你通常会有一群人专门花几个小时甚至几天来处理数字,只是为了给出一个是或否的答案(查看'模仿游戏'和'隐藏的数字')。多亏了计算机,你现在可以在你的数据上运行多个场景,并且能够处理你所能收集的尽可能多的数据。
后来当互联网成为主流,实时数据变得可用。例如,你现在可以追踪有多少人在浏览你的网站时访问了他们。但是随着每一次技术的转变,需要出现一种新的职业来利用所有新的可能性。这就是数据科学家,在华尔街也被称为“定量分析师”。
这个新的职业有很强的数学背景,对产品有很强的把握。数据科学家可以利用海量数据,根据需要对其进行任意分割,以适应复杂的模型和预测。这种新型的职业使我们最终有可能了解顾客的一切,这只是一个‘我们有这方面的数据吗?’。这是从定性方法(理解消费者的心理学)到定量方法的巨大偏离(“这是数据显示的”)

darts with auto-pilot. thanks to live-ops
与之前的模型相比,最大的不同是实时运营周期(步骤 3、4、5)。因为有更多可用的数据,而且速度更快,所以您现在也可以更快地做出反应。想象一个在周一发布的网站,感谢 live-ops,你可以调整你一周的内容。全部基于用户行为/反馈。断链?没问题,这是捕获和修复在几个小时。
但是你不需要成为一家数字公司来利用这种模式。想想好莱坞,你有没有注意到一些演员在同一部电影中往往会在一起?一些演员是如何一次又一次地扮演相似的角色的?好莱坞有一个庞大的行业来预测人们想看什么。如果你经营一个电视节目,你可以跟踪每一集在发布时的表现,也可以根据社交媒体的传言对每个角色的命运做出决定。
但是这种模式还是有局限性的。现在每秒钟都有大量数据到达,我们周围的世界变化非常快。计算机可以处理所有这些数据,但人们仍然需要回家睡觉。要在竞争中领先,你需要更快。我们已经可以对未来的模式有所了解
艾的年龄

Hi! I am the new guy. I can do your job for free.
与世界其他地方相比,一些公司已经活在未来。你的网飞推荐会随着你观看的节目越来越多而更新,你的谷歌搜索结果总是与世界事件和你所处的地理环境同步,亚马逊会根据你的历史和其他用户的行为推荐新产品。你仍然可以使用以前的模式为所有这些企业提供动力。但这需要数量惊人的人来收集数据,获得洞察力,并为提到的每种产品创建一个精选列表。当你完成的时候,你需要重新开始。因为上一条推荐已经不新鲜了。
所有这些产品在幕后都有一个共同点:机器学习。这是它如何添加到之前的模型中的:

You can now sit and let robots throw the darts for you. Faster and better
不同的是,现在人工智能正在根据用户反馈运行产品,没有时间等待人们注意到数据中的新趋势。速度和规模非常重要。但是数据科学家仍然在这个模型中发挥作用,仍然需要有人带来关于人工智能正在做什么的商业见解。在网飞,人们可能会进行如下对话:
我们注意到人们比我们预期的更喜欢圣诞电影。
人物 2:是的,人工智能不断推出越来越多的电影。但是我们最终用完了它们
人物 1:我们应该尽可能多地授权那些电影。你为什么不处理一下这些数据,看看我们是否也应该投资在内部制造一些呢?这将为我们节省很多钱
请注意,推荐正确内容的所有商业收益从来都不一定来自一个精心策划的列表。人工智能设法以可能的最佳方式分发当前目录。数据科学家稍后进来,只是为了带来更深入的商业见解,这将通过提供更好的目录来帮助人工智能。
人工智能是当前的技术转变,并不是所有的公司都准备好了转型。有助于这种转变的新职业需要精通机器学习和云计算。这是一个机器学习工程师。
未来

如果你在 Linkedin 上快速搜索机器学习工程师,你会注意到大多数职位都是由 FAANG 公司发布的。这是一个有趣的关联。
机器学习工程师之所以如此重要,是因为生产中的机器学习模型需要规模化。一件事是用特定的一批数据通宵训练一个模型。另一件事是部署一个模型,该模型以流数据为食,并可以通过为数百万用户大规模读取多个数据源来转换数据。这不是一件容易的事情,这就是为什么今天的大多数模型都被卡在某个地方的 Jupyter 笔记本中,这被后端团队视为一个障碍。因为他们不知道如何利用这一点并整合到他们的服务中。机器学习工程师可以通过成为两个世界的混合体来打破这一障碍。这就是为什么机器学习工程师是将我们带到人工智能未来的职业。
“MLOps”一词的兴起
正确操作的机器学习是新的圣杯
“MLOps(机器学习和“信息技术操作”的复合物)是数据科学家和信息技术(IT)专业人员在自动化和产品化机器学习算法的同时进行协作和沟通的[一种]新学科/焦点/实践。”— 妮莎·塔拉加拉 (2018 年)
对于感兴趣的人, 我还将在 2022–23的生产课上教授机器学习!

Torrey Pines Gliderport in San Diego for intro aesthetic
对机器学习生命周期的理解是不断发展的。几年前,当我第一次看到说明这个“循环”的图形时,重点放在通常的疑点上(数据准备和清理、EDA、建模等等)。较少注意到更难以捉摸和不太有形的最终状态——通常称为“部署”、“交付”,或在某些情况下只是“预测”。
当时,我认为很多新兴的数据科学家并没有真正考虑到最后一个术语的范围(我当然没有)。“预测”不仅仅意味着.predict(),它还意味着真正的规模、生产级部署、监控和更新——一个真正的循环。由于缺乏将这一模糊概念变为现实所需的工程技能,数据科学家被困在了笔记本中。模型作为.pickle文件存在于数据科学家的本地机器上,性能用 Powerpoint 报告,ML 生命周期被打破。

A Straightforward, but Incomplete Data Science Lifecycle with the word “Modeling” spelled incorrectly
虽然端到端的 ML 生命周期一直被称为一个实际的“周期”,但迄今为止,在企业层面上实际管理这一端到端过程的成功有限,我认为原因如下:
- 数据科学家通常不是训练有素的工程师,因此并不总是遵循良好的 DevOps 实践
- 数据工程师、数据科学家和负责交付的工程师各自为政,这在团队之间造成了摩擦
- 无数的机器学习工具和框架导致整个行业缺乏标准化
- 目前还没有一个单一的托管解决方案可以满足工程师和数据科学家的需求,而不会受到某种方式的限制(订阅特定的语言、框架、提供商等)
- 总的来说,生产中的企业机器学习还不成熟
我确信还有更多的原因和大量的次级原因也有助于此——但这些高层次的问题导致了不幸的结果。企业中的机器学习速度慢,难以扩展,自动化程度低,协作困难,交付商业价值的实际可操作模型很少。

My boss made this gem
因此,我们需要良好的“mlop”——机器学习操作实践,旨在标准化和简化生产中机器学习的生命周期。然而,在我进入场景或任何更多定义之前,我想多谈一点关于为什么我们需要更好的 MLOps。
机器学习有些成熟,但部署实践和业务影响还不成熟
在学术领域,机器学习取得了突飞猛进的发展。在 NLP 这样的困难任务中,算法显示出了比以前工作的巨大进步(即使这只是谷歌扔给它更多的数据+计算),据说 arXiv 上的机器学习论文数量每 18 个月翻一倍。
这种兴奋很容易让你失去对可交付成果的关注——有形的影响。这项来自 2018 年的 Databricks 调查显示,尽管大多数公司都在采用或投资人工智能,但他们也普遍提到了他们解决方案中的困难,“人工智能”项目平均需要 6 个月才能完成。

We’ve all been there
如果你不小心的话,你可能最终会让数据科学家通过电子邮件把 Python 笔记本和模型发给工程师,进行生产部署和代码重写。对于 Docker 来说,也许这种记录不良的 Python 代码效率太低或不完整,但也将花费大量时间来翻译成 Java。没有大量的文档,工程师不知道 wtf 在那个.pickle文件中,没有模型、度量和参数的版本控制,每个人都感到困惑和愤怒,因为现在他们陷入痛苦的会议中,试图在应该花费几天而不是几个月的事情上保持一致。
不仅如此,一旦解决方案在生产中,就没有用于改进和更新的内在反馈系统。对于某些系统,随着时间的推移,模型性能可能会受到影响,并且监控并不总是标准的做法。数据科学家也没有真正接受过编写良好测试用例的训练,所以如果从 Jupyter 到生产的模型更新偶尔会破坏应用程序或提供不正确的预测,我也不会感到惊讶。

Model Drift — the importance of monitoring for change in distribution
我想说明的是,这些问题并不普遍,确实存在大量定制解决方案。然而,单一的一套实践和端到端解决方案尚未浮出水面,无法满足数据科学家、工程师和企业的需求。
输入机器学习操作(MLOps)
我将最纯粹的 MLOps 定义为自动化生产 ML 生命周期的真正实例。MLOps 的维基百科页面的第一段也说明了一切。MLOps 是对当前企业将机器学习投入生产所面临的困难的合理反应。在软件工程中,我们有 DevOps,为什么没有 MLOps 呢?好的 DevOps 确保软件开发生命周期是高效的,有良好的文档记录,并且易于排除故障。是时候我们为机器学习开发一套类似的标准了。

A slightly better infographic for the machine learning lifecycle
行业已经开始触及它的临界点,技术正在快速发展以满足需求并改变生产中 ML 的当前标准。mlflow 和 kubeflow 等开源框架竞相成为开源领域的标准,而新的创业公司则在这些解决方案上贴上 ui,试图将“专有”的 MLOps 产品推向市场。
MLOps 的状态
当然,MLOps 仍处于起步阶段(至少在实践中)。在数据科学上搜索“MLOps”只能得到少得可怜的 2 个结果(在撰写本文时)。从技术上来说,使用 mlflow 或 kubeflow 等工具的完全管理的解决方案仍然需要合理的开发和/或员工教育才能在实践中使用。

现在,你也会注意到我实际上没有给出一个精确的 MLOps 原则列表,那是因为我不确定是否存在一个普遍的集合。这种想法仍在不断变化,真正的原则将随着新框架和现实世界经验的成熟而形成。需要注意的是,与 DevOps 一样,MLOps 也有好坏之分,随着时间的推移,两者之间的界限会变得更加清晰。
目前,我发现最好遵循良好的 DevOps 实践。当然,有一些工具可以使这项工作变得更容易,但是从与框架无关的角度来看,我认为好的 MLOps 与好的 DevOps 非常相似。mlop 的目标依然清晰,优秀的 mlop 将尽可能高效地实现这些目标:
- 减少将模型投入生产的时间和难度
- 减少团队之间的摩擦,增强协作
- 改进模型跟踪、版本控制、监控和管理
- 为现代 ML 模型创建一个真正循环的生命周期
- 标准化机器学习流程,为不断增加的法规和政策做好准备
结论和警告
我敢肯定,根据你在这个行业的位置,你可能同意或不同意我对前景的猜测。这些观点是我有限经验的结果,因此容易产生误解。就像欧比万对阿纳金说的那样:“只有西斯才能处理绝对的事情”,我相信这在我对所有事物的主观分析中是正确的。

Brooklyn sunset for conclusion aesthetic
尽管如此,这篇文章的目的是介绍 MLOps 作为一个概念,并且可能是企业 ML 的下一个伟大革命之一——我希望在这方面我是有用的。请随时在 LinkedIn 上与我联系,或者在下面留下不必要的尖刻评论。✌️
人工智能外包的风险——如何成功地与人工智能初创公司合作
企业正在与科技巨头和人工智能初创公司争夺最优秀和最聪明的人工智能人才。他们越来越多地将人工智能创新外包给初创公司,以确保他们不会在人工智能竞争优势的竞争中落后。然而,外包带来了真实的和新的风险,而企业往往不具备识别和管理这些风险的能力。企业在与任何人工智能初创公司合作之前,都存在真正的文化障碍、隐含的风险和应该问的问题。
一只我似乎无处不在。阅读媒体而不了解人工智能对企业的变革性影响几乎是不可能的。 Gartner research 预测,到 2022 年,企业将从人工智能中获得高达 3.9 万亿美元的价值。从人力资源到财务到运营、销售和营销,人工智能将有助于增加收入、提高效率和建立更深层次的客户关系。聊天机器人会让你等很久才能和客户服务代表说话,这是过去的事情了。许多重复性和枯燥的公司工作,如数据输入、质量保证或候选人筛选,将实现自动化。

但人工智能行业刚刚起步,发展非常迅速,缺乏专业知识和经验。这意味着,如果想从这 3.9 万亿美元中分得一杯羹,许多企业将不得不合作并将他们的人工智能解决方案外包给成千上万的新人工智能创业公司。但与这些初创公司合作充满了潜在的地雷,包括技术、实践、法律、声誉和知识产权所有权风险。许多这些风险源于文化差异,因此在企业和创业公司合作之前,理解它们是非常必要的。
快速移动并打破东西
创业公司的文化通常是企业生活的梦魇。硅谷推广了“快速行动,打破常规”的理念——快速推出一些东西,它不会完美,接受它。我们还听到优步等人工智能公司如何通过故意突破现有监管的边界来推出创新的消费者服务。企业家被描述为不合理地无视可以合理完成的事情。他们不喜欢被拒绝。他们努力扩大业务规模,速度非常快。他们讨厌官僚主义。他们现在就想要解决方案,而不是几天或几周。为了达成交易,他们在营销方面很有创意。这是企业家和他们的创业公司的 DNA。
因此,缺乏企业生活经验的年轻企业家发现销售和与企业合作很困难。毫不奇怪,企业会发现与初创公司合作充满挑战。
这些文化 差异往往发生在期望有差距的时候。创业公司在享受赢得一个品牌客户,比如你的公司时,他们的眼里可能会有星星。你的品牌将有助于验证他们年轻的努力。但是,当涉及多个企业利益相关者,尤其是法律利益相关者时,创业公司是否了解决策过程需要多长时间?在同意签署一个人工智能原型或交付物之前,他们了解企业的要求有多高吗?他们知道从后端系统提取数据可能需要几个月的时间吗?他们是否明白,做一个人工智能试点项目并不能保证在整个组织中推广该解决方案?他们知道发票的支付会很慢吗?
文化差异经常会导致误解、紧张和偏见,这可能会导致项目失败,甚至更糟糕的是,初创公司在试图满足你的需求时耗尽了资金,从而走向灭亡。在建立关系之前,企业有自知之明并理解文化差异是至关重要的。
与人工智能初创公司合作充满了潜在的地雷
与人工智能初创公司合作的挑战和风险不仅是文化方面的,还包括:
- 技术和算法风险— 今天的许多人工智能技术相对不成熟,存在着在现实世界中可能不起作用的风险。我们已经看到客服聊天机器人项目被屏蔽,因为聊天机器人在与真实客户一起使用时回答的是胡言乱语。仅仅因为一个算法预测一个客户的消费贷款违约概率为 90%,这并不意味着它在根据你的数据进行训练时会有同样的准确性。
- 集成和实施风险— 众所周知,人工智能初创公司非常乐观,通常会低估集成和实施人工智能解决方案的时间和成本。概念的证明通常可以在几个月的时间内快速完成。但是在一个组织中推广这种方法可能充满挑战,例如,当与企业现有的遗留系统集成时,创建干净和有标签的数据集,以及使用现有的流程。一些调查显示,在一个组织中实施人工智能所花费的时间是初创公司预期的两倍。
- 未来 证明风险 —人工智能正在经历其淘金热时刻,最近有数千家人工智能初创公司成立。然而,如果我们快进几年,历史告诉我们,许多这些年轻的公司将半途而废。即使人工智能创业公司蓬勃发展,也不能保证他们明天就会拥有你想要的技术能力。
- 法律和声誉风险——人工智能初创公司可能会使用让你的公司面临法律和声誉风险的技术、工具和数据。数据隐私法,包括最近推出的欧洲 GDPR,已经要求处理个人数据(许多人工智能算法的燃料)的供应商遵循适当的技术和组织措施,以确保信息安全。根据 GDPR,还有一些要求,即任何具有法律效力的自动决策——如决定谁有资格获得贷款或工作的人工智能系统——都是“透明的”和“可解释的”。同样,如果一家公司对人工智能的使用被视为对某些人口统计数据有偏见,也会有品牌声誉风险。我们已经看到很多对面部识别技术的批评,面部识别技术在识别白人男性的性别方面比女性和种族群体更好。
- 知识产权 风险 —许多初创公司会辩称,他们提供的算法要聪明得多,因为它们是在来自各种各样客户的数据集上训练的。但是,如果您的数据是一项战略资产,例如一家拥有数百万客户索赔历史的保险公司,您可能不希望它被用于竞争对手的利益。需要做一个权衡。同样,你可能不希望你的人工智能解决方案的软件代码与创业公司的其他客户共享。
成功协作的关键成功因素
对于大多数企业来说,在行业发展的早期阶段,与人工智能初创公司合作可能是必要的。但在人工智能初创公司的财富中导航,以确定明天将出现的玩家并分享相同的目的地是很困难的。在评估潜在的人工智能供应商时,确保您提出以下问题:
- 文化契合度——初创公司是否有与复杂企业合作的经验?他们对这段关系有现实的期望吗?
- 技术和算法功效基准 —初创公司能否解释并证明其技术和算法的有效性和局限性?他们能解释解决方案对您的数据有多有效吗?根据你的数据训练人工智能需要多长时间?将他们的解决方案与您的系统、数据和流程集成需要多长时间?
- 产品路线图 —创业产品路线图是否符合您未来的需求?该产品与您的技术体系兼容吗?
- 财务健康——初创公司是否表现出客户和收入的增长,以及领先风险投资家的强大财务支持?
- 负责任的人工智能(Responsible AI)—初创公司是否有记录、解释和遵循的负责任的人工智能原则?他们能帮助你理解他们的人工智能解决方案的法律和声誉风险吗?他们是否遵循算法的透明性和可解释性原则?他们知道他们系统中使用的数据的来源以及数据样本偏差的风险吗?
- 知识产权所有权 —初创公司拥有知识产权还是客户拥有知识产权?
人工智能相对较新,但我们现在开始看到人工智能采购框架来帮助指导人工智能供应商的选择和管理。例如,世界经济论坛正与英国政府合作开发这样一个框架。
总而言之,最重要的是要明白,人工智能项目的大多数挑战都可以归结为人的因素。关系往往在开始的时候就结束了,所以要确保你和你的初创公司保持一致,并承诺清晰、频繁地交流你的期望和需求。但现实是,我们都需要找到一种方法,让这些关系像企业和人工智能创业公司相互需要一样发挥作用。
关于西蒙·格林曼
西蒙·格林曼(Simon Greenman)是最佳实践人工智能公司(Best Practice AI)的合伙人,这是一家人工智能管理咨询公司,帮助公司利用人工智能创造竞争优势。西蒙是世界经济论坛全球人工智能委员会的成员;AI 专家常驻seed camp;并担任伦敦哈佛商学院校友天使会的联合主席。他在欧洲和美国的数字化转型领域拥有 20 年的领导经验。请通过直接给他发邮件或联系,在 LinkedIn 或 Twitter 上找到他,或在媒体上关注他。
他的文章最初发表在 电子杂志:风险管理的新曙光 之后是knect 365。
通往埃勒沃恩之路
人工智能:一场无人问津的军备竞赛

现有的机器我都不害怕;我担心的是,他们正以超乎寻常的速度变得与现在大相径庭。在过去的任何时候,没有哪一类生物有如此快速的进步。在我们还能检查它的时候,难道不应该小心地观察和检查这个运动吗?(……)难道从事管理机器的人可能比从事管理人的人多吗?难道不是我们自己在创造地球上至高无上的继承者吗?每天增加他们的组织的美丽和精致,每天给他们更大的技能,提供越来越多的自我调节,自我行动的力量,这将优于任何智力?
塞缪尔·巴特勒,艾瑞沃恩。1872.
每一代人都认为他们面临的挑战是新的,但实际上很少是新的。这也是我们面临的人工智能(AI)发展的挑战。似乎他们已经预见到了 150 年前英国工业革命时期的到来。在一部写于 19 世纪的小说中读到这些反思,肯定会让你心惊肉跳。
我们关闭了科幻小说,这是我们关于这个主题的观点的第一部分,尼克·博斯特罗姆想知道在超级智能系统到来之前,我们可以做些什么来增加我们作为一个物种的生存机会。现在,一些专家说这还很遥远,而另一些人则说我们可能就在这种情景的边缘,这将在未来的 20 到 40 年内发生。考虑到多达 30%的这些专家认为,当它到来时,结果对我们来说要么是坏的,要么是非常坏的,这肯定是我们应该谈论的事情。有 30%的几率属于濒危物种绝对不酷。1%或 2%,好吧,我可以接受,但是……30%??
围绕人工智能发展的可能影响的辩论今天集中在非常严重的事情上,这些事情已经存在,当然值得辩论。我们在上一篇文章中已经提到了其中的一些:正在中国部署的社会信用系统,致命的自主武器或者警方使用的面部识别软件中的偏差效应。然而,事实上,在几年内终结者的未来可能会成为现实,但这一次没有约翰·康纳或阻力或任何希望,似乎并不困扰我们。
挺奇怪的。我们不都应该非常害怕吗?或者换一种说法:为什么几乎没人谈这个?
似乎有几个原因。首先,你会有这种“科幻小说”效应:人们倾向于认为那些敢于给出如此激进预测的人是不科学或轻率的。还有一些与人性有关的原因:我们天生就担心直接和具体的威胁,而不是未来和抽象的威胁。此外,我们的天性中也有一种“一厢情愿”的效应:如果他们告诉我们,有了人工智能,未来将会很美好,为什么要担心呢?让我们把这件事交给专家吧,他们肯定知道自己在做什么。想起来了吗?另一个可能的原因是,人们对技术进步有些厌倦:我们近年来看到了如此多的变化,以至于像 AlphaZero 这样的革命性产品几乎没有成为科技媒体的头条新闻。最后,也许其中一个关键原因是“军备竞赛”效应,在这种效应中,领导这场革命的代理人试图确保对人工智能的担忧不会设置任何额外的障碍,因为这将拖延他们,使他们的竞争对手受益。
先来看看那个“科幻”效果。直到不久前,具有人类智能的系统,更不用说人工超级智能的出现,被大多数专家认为是不真实的事件,或者至少是在很久以前值得担心的事情。然而,在过去的二十年里,这种情况发生了根本的变化。当雷·库兹韦尔在他的书精神机器时代中声称机器将在 2029 年通过图灵测试时,说得委婉点,专家们的普遍反应是不相信。许多批评家认为他不是一个严肃的科学家,其他人则认为这个预测纯属无稽之谈。大多数人确信,如果它真的发生了,这确实是非常可疑的,数百年后才会发生。所以雷在 1999 年出版了这本书。在 2013 年的一项调查,也就是说,不到 15 年后,这些专家的共识已经从“数百年后”下降到“到 2040 年代”雷说,如果他们继续保持这种节奏,他们最终会批评他是保守派,这是正确的。(事实上,2018 年在美国普通人群中进行的一项调查显示,到 2028 年,这种情况发生的可能性超过 50%)。
你必须非常小心地拒绝看起来像科幻小说的预测,因为为了让小说成为非小说,有时你必须以非常高的激励加入人才。人工智能领域的另一位主要研究人员 Stuart Russell讲述了下面的故事:发现原子蕴含大量能量的科学家欧内斯特·卢瑟福勋爵在 1933 年说,“任何期望从这些原子的转化中获得能量的人都是在胡说八道。”第二天,另一位科学家读了这篇评论,一点也不喜欢。恼怒之下,他出去散步,突然想到了核连锁反应的想法。几年后,在赢得世界大战的激励下,这个想法被付诸实践,美国制造了原子弹。斯图亚特用这个故事作为例子,让我们学会谨慎。他指出,至于激励措施,数十亿美元正被投入到人工智能的开发中;不可思议的突破事实上可能随时发生,将之前的捕风捉影或科幻小说变成科学。
然而,很明显,这种“科幻小说”的效果仍然很强。尽管这十年来取得了所有的进步,尽管像尼克·博斯特罗姆这样的人所做的工作,尽管像比尔·盖茨或斯蒂芬·霍金这样可信的公众人物已经警告我们应该认真对待最坏的情况。但是盖茨和霍金发表声明已经有几年了,事实是他们想要发起的一般性辩论并没有发生。
离开学术界,走到大街上,会有更多相同的事情发生。严肃的媒体谈论我们已经存在的问题,但对几年后会发生什么却几乎只字不提。不出所料,DeepMind 只有在有体育角度的时候才会成为一些头条新闻和大量关注:在最后的挑战中,人对抗机器, Lee Sedol vs. AlphaGo 。当我们说巨大的关注时,这在某种程度上仅限于日本、中国和韩国,在这些国家,围棋(T2 战略棋类游戏 T3)不仅仅是一项全国性的运动。也许真的要就人工智能展开一场大规模的辩论,斯蒂芬·霍金和李·塞多尔的名字应该在头条上换成金·卡戴珊和弗洛伊德·梅威瑟的名字。
让我们转到下一个为什么今天这种争论几乎不存在的原因:人性。必须明白,从进化的角度来看,我们或多或少与十万年前的生物是一样的,因此我们这个物种被设计来生活在与今天非常不同的环境中。狩猎采集者,也就是智人在地球上 90%的时间里所做的,不必应对未来和抽象的威胁,而是非常直接和具体的威胁:我宁愿不爬上那棵树去找蛋,因为它太高了,我可能会掉下来;这蘑菇看起来不太好吃,我最好不要吃它;风带来了老虎的味道,我们跑吧!至于长期战略,狩猎采集者最多评估迁移到另一个地区,以提高他们的生存机会:天气开始变冷;寻找食物变得越来越困难;这里有太多的食肉动物。
当我们不再采集水果,不再成群结队地离开自己的领地,转而在民族国家的大城市出售金融衍生品,过着定居的生活时,对威胁的战略管理变得更加复杂。我们的进化准备不再相关,也许除了那些生活在这些大城市的某些街区的人。社会制度是分层的,关于什么是对整个社会的威胁以及如何避免这种威胁的决定被委托给来自上层的少数个人。这些更高的阶层变得越来越擅长于通过制造或放大威胁来管理人口,并根据什么最符合他们的利益来排除或压制其他人。
因此,毫不奇怪,在非常严重的威胁之后做出的一些最重要的决定并不完全是对整个社会最有利的决定。尽管有大量的信息和越来越可靠的预测工具。例如,让我们强调一下导致第一次世界大战大屠杀的一连串计算错误(特别指出在战争可能爆发之前传递给民众的普遍热情)。一个更紧迫的例子是:影响气候变化挑战决策的利益冲突(对我的股东来说,将我的部分利润投资于否认气候变化的游说团体比解决问题并不得不战略性地调整我的业务更有利可图,因此也更好。)
在许多情况下,无论是个人还是集体,人性的另一个变量也会发挥作用:“一厢情愿”效应,即希望事情会变好,并据此进行规划。在人工智能的发展中,似乎有很多这样的事情。可能的有利后果是如此诱人,以至于人们真的愿意相信我们会实现它们。这很好,我们都想要那些有利的结果。然而,对任何好父亲的书来说,最明智的建议之一(也是许多商业大师效仿的建议之一)是:“抱最好的希望,做最坏的准备”。思考和工作很棒,这样人工智能将会帮助我们生活得越来越好;但与此同时,有必要做好准备和计划,这样我们就不会从新技术的袋子里拿到那个黑球,那个意味着我们毁灭的黑球。
说到新技术,上面提到的我们似乎没有太关注人工智能革命的另一个原因恰恰是技术疲劳。发生这种情况的部分原因是指数增长曲线,这对我们来说可能已经有点困难了。技术发展越来越快,范围越来越广。我们很难注意到新的东西,被提供的信息淹没了。关于像 AlphaGo 这样的人工智能的革命性新闻在几个月后随着 AlphaZero 的出现而过时。谁能跟上?
我们似乎也没有做好准备。如果你年龄够大,你可能会记得,当你习惯了互联网和电子邮件时,手机及其应用程序和社交网络大量出现。当你最终拥抱另一项技术时,它带来了前所未有的大规模控制和操纵水平(正如我们在 Bricks in your wall 中指出的)。作家尤瓦尔·诺亚·哈拉里(Yuval Noah Harari)在为《卫报》撰写的这篇专栏文章中提出了巨大的问题:“在一个政府和企业可以攻击人类的时代,自由民主如何运作?“选民最清楚”和“顾客永远是对的”这两个信念还剩下什么?当你意识到你是一种可被黑客攻击的动物,你的心脏可能是政府特工,你的杏仁核可能为普京工作,你脑海中出现的下一个想法很可能是某种算法的结果,而这种算法比你自己更了解你,你该如何生活?”想想我们已经面临的这些挑战就让人不知所措。但这并不意味着我们不应该考虑明天我们将不得不面对的挑战,在它们碾过我们之前(是的,又有那辆卡车的比喻!).
因此,我们得出了我们指出的最后一个原因:“军备竞赛”效应,这个术语似乎来自冷战。因为引领人工智能发展的是世界主要国家的政府,当然是由美国和中国领导的;以及大型科技公司,如谷歌、脸书、亚马逊、微软、IBM、百度或腾讯。演员有巨大的能力来影响一场辩论,并且有太多的利害关系来回避它。因为那些面临更多障碍(批评、监管之类的东西)的人很可能会在比赛中被拖延,从而给竞争对手带来优势。
想想吧。这场比赛的获胜者会得到什么奖励?如果一切顺利,这个系统将有能力变成超人,对于那些控制它的人来说,有能力或者负担得起。一个可能产生另一个物种的系统,一个可能像人类看待黑猩猩一样,或者更糟,像一个农民看待他的牲畜一样,将人类视为被忽略的系统。一个有可能把所有好处都给第一个人,而第二个人却一点好处都没有的体系。这是这场竞赛的关键所在。
我们之前谈到社会上层倾向于制造或放大最符合他们利益的威胁,忽视或压制阻碍他们的威胁。我们可以肯定地说,这场竞赛的参与者是那些更高阶层的精英。正如在任何比赛中发生的那样,为了第一个到达,你必须比其他人跑得更快。为此,你最好有最快的车,否则你将需要承担更多的风险来竞争。
这也许是最可怕的事情:对于这些参赛者来说,任何比他们先到终点的参赛者似乎都比冒更大的风险先到终点更具威胁,即使这意味着每个人都要拿到黑球。哦,好吧,运气不好,你打算怎么办?难怪他们都不喜欢人们大喊“灭绝!”他们会尽全力阻止这种情况发生。不是灭绝,而是人们的呼喊。
好了,这就是为什么你很可能看不到迎面驶来的卡车,直到它压在你身上的原因。现在让我们更仔细地看看那些参加比赛的人和他们在做什么。
首先,中国政府已经做出了明确而果断的承诺,要在未来几年加快步伐,并努力走在前列。这当然包括大型中国科技公司,如腾讯或百度,以及数百家获得巨额融资的新人工智能初创公司。与此一致的其他变量是庞大的人口,由于其控制的日益有效性,他们几乎没有抗议或反应的能力,以及为人工智能系统提供燃料的巨大数据收集能力。结果是越来越像乔治·奥威尔的1984反面乌托邦,一些“改进”似乎直接取自黑镜,如社会行为信用系统。至少他们不太在乎隐藏如果他们赢得比赛会发生什么。
现在美国是一个更加复杂的例子。有两个主要因素推动着人工智能的发展。第一个是五角大楼,有像现在著名的 Project Maven 这样的东西,旨在加速对军用无人机拍摄的图像进行分析,自动对物体和人的图像进行分类(花点时间想想它可能的用途)。其次,大型科技公司:首先是谷歌、脸书、亚马逊、微软和 IBM。我们说这种情况更复杂,因为在中国,所有参与者或多或少都是一致的,而在美国,五角大楼和大技术公司竞相吸引专业人才,同时还在数十亿美元的开发合同中进行合作。这导致了摩擦。例如,去年,面对自己员工的激进主义,谷歌拒绝续签其 Project Maven 合同。正如这篇文章所解释的,树各方利益冲突:一方面是专业人士,本案中的谷歌员工,他们不希望自己的工作被用来杀人;另一方面,这些公司从股东那里获得并维持数十亿美元的合同,不管承包商是谁(最终可能是中国,就像项目蜻蜓);最后但并非最不重要的是,五角大楼,它希望利用这项技术继续拥有对美国对手的军事优势,为此,他们试图建立一座桥梁,以“帮助我们,我们是这里的好人”的角度来挽救与其他两个政党的分歧。
在大型科技公司中,谷歌是该领域最活跃的公司。事实上,据估计,80%的主要人工智能研究人员和开发人员(例如 Ray Kurzweil)为谷歌或其正在收购的一些领先公司工作,如波士顿动力或 DeepMind。后者的创始人兼首席执行官德米斯·哈萨比斯这样描述它的使命:“第一步,解决智能问题。第二步,用它来解决其他一切。”整个领域都有一个坚定的共识,即 DeepMind 是实现这一目标的最佳演员之一。他们在游戏中应用深度强化学习算法的进展是第一步中非常成功的一部分,Demmis 本人预计未来几年将在科学和医学的更重要领域取得突破性进展。从这个意义上说,他们刚刚引入了 alpha fold(T7),一个预测蛋白质结构的系统。
DeepMind 创始人同意谷歌收购的原因之一是,该协议包括建立一个道德委员会,以确保他们未来创造的技术不会被滥用。关于这个委员会, Nick Bostrom 说“在我看来,一个以‘解决智能问题’为雄心的组织有一个思考成功意味着什么的过程是非常合适的,尽管这是一个长期目标(……)提前开始学习这些内容比在考试前一天晚上做准备更好。”
在人工智能及其未来的使用中,肯定不缺少关于伦理和安全的董事会、委员会、研究所、论坛和其他倡议。大型科技公司创建了一个名为人工智能伙伴关系的组织,以造福人类和社会。埃隆马斯克促成了另一个,开启 AI 。在大学领域,牛津的人类未来研究所,伯克利的机器智能研究所和人类兼容智能建筑中心,剑桥的存在风险研究中心,或者哈佛和麻省理工学院的生命未来研究所,已经负责发表了几篇重要论文和调查,这些论文和调查甚至不时会成为头条新闻。
但事实是,总体形势相当令人担忧,正如凯尔西·派珀在这篇文章中所说。他使用的类比非常清楚:“总体而言,该领域的状态有点像几乎所有的气候变化研究人员都在专注于管理我们今天已经面临的干旱、野火和饥荒,只有一个小型骨干团队致力于预测未来,大约 50 名研究人员全职工作,制定扭转局面的计划。”
简而言之:人工智能发展中的伦理和安全缺乏国际层面的公共政策协调,没有关于其最深远影响的公开和普遍的辩论,发表的关键论文几乎没有超出学术领域,致力于长期研究和预防的资源非常荒谬。与此同时,获得人工智能的竞赛获得了数十亿美元的资金,这种人工智能将给予企业或地缘战略对手明确的竞争优势。
所以,用我们开始这一切的比喻来结束,这些人在一条充满他们没有地图的曲线的道路上进行一场 8 轴拖车卡车比赛。比赛的规则很简单:赢家通吃。速度越来越快,没有人打算减速。你走在那条路上,呆呆地看着你的手机。你的孩子正在前方某处玩耍,在一个弯道后面。
祝你有愉快的一天。
Goonder 2019
数据科学中的资历之路

Photo by Franki Chamaki on Unsplash
两年前,我努力寻找自己在市场中的位置。三年的数据科学工作经验,两年的人工智能硕士学位,把我难住了。我可以称自己是一名彻头彻尾的数据科学家,但我职业生涯的下一步是什么?一个高级数据科学家的定义是什么?
根据我从谷歌定义高级数据科学家的前 30 页收集到的信息… 并没有真正的定义。我们不能用多年的经验作为标准,因为这个领域相对较新。我们不能依赖已知技术,因为数据科学家必须是优秀的学习者而不一定是知识者。没有通常的面试编码测试题会在不到一个小时的时间里总结出编码员的 AI 知识。那么,还剩下什么?为了得到这些职位,我怎样才能提高我目前的技能?
让我们来看一些例子,看看网络在谈论什么。毕竟,我们是数据科学家。
这篇关于雇用高级数据科学家的文章列出了高级数据科学家必须具备的一系列品质:
下面是我看的四件事:对模糊问题描述的回应、建模之外的知识、高效沟通和指导/领导经验。
沟通、领导力、对大局的洞察力以及识别糟糕的必备定义的能力。有点抽象,但仍然有用。让我们把我能读到的东西汇编起来,以达到对所有这些的理解。
- 沟通容易。如何让你的团队执行你的想法,让你的老板理解你的想法,这在数据中至关重要。
合作智能:与思维方式不同的人一起思考让你洞察如何与来自你需要协调的许多领域的专业人士相处。
情商和社交智能都是很棒的书,解释了人类引擎盖下发生的事情,对自我提升和人际交流很有用。
管用的话又是一个很棒的推荐,重点是如何影响和说服人。 - 领导复杂。我更像是一个经验主义者。为了改善这一点,我宁愿投身于领导岗位的烈火中忍受。但是没有经验很难做到,所以需要用一些数据来武装自己。
管理 3.0 是敏捷经理的圣经。仅仅是这本书抛给你的大量参考资料就足以卖掉它。如何激励你的团队,如何激励生产力,如何发现有害行为……这些都在这里,以一种说教式(有时冗长)的写作方式。
- 看大图 难。需要具备与机器学习模型的开发、部署和生产相关的所有流程的经验。训练和分类只是任何简单人工智能模型漫长诞生过程中的一步。所以,我建议你在三个广泛的领域找到方向:
谷歌云平台或 AWS ,用于在云上部署模型。了解定价如何运作尤为重要,这样你才不会不小心把你团队/公司的积分都消耗掉。如果你在谷歌这边,查看一下 Pub/Sub 中不同机器上的模型之间的通信,查看一下 Stackdriver 中的集中式日志记录,以及所有不同的AI API中的 NLP、CV 和 generic AutoML 分类。
Docker ,为您精简需求流程,简化部署。熟悉 Docker Hub 和设置一次自定义 ML 图像并尽可能重复使用它的神奇之处。码头工人作曲也很棒。
Kubernetes 用于并行化您的工作、自动缩放和容器编排。Helm 也是管理部署的好工具。 - 收集信息。如今的数据科学家应该对 ML 模型有一些广泛的了解。但这并不是数据科学家必须驾驭的全部:你必须主动并培养好奇的性格从任何给定的问题中提取最大数量的信息。你不能只关注人工智能方面的事情!如何获取数据,如何正确存储数据,如何衡量数据的有效性,这些都和你的建模技能一样重要。不幸的是,对于如何改进这一点,我已经没有灵感了。这更像是软件工程和好奇心的锻炼。
这篇 dev 博客的文章描述了一位高级数据科学家,呼应了上面的一些观点,并扩展到真实的数据问题:
高级数据科学家明白软件/机器学习有一个生命周期,所以花了很多时间来思考这个问题。
在这种情况下,ML 模型的生命周期包括所有那些附属于技术项目的东西:技术债务、测试、可维护性等等。一般的“好闻”是一个有经验的程序员天生拥有的工具。这需要时间和练习。
作为一名 Python 程序员,我可以推荐一些这方面的好书!
- Fluent Python 是一本关于最未被充分利用(也是最棒的)Python 特性的疯狂好书。凭借清晰的用例以及对 pythonic 概念的简洁解释,这是一本非常适合放在公司茶几上的书。
- Python 的搭便车指南是另一本很棒的书,里面有很多疯狂使用 Python 库和特性的代码片段。
资深数据科学家明白‘数据’总是有瑕疵。这些缺陷可能是数据生成过程、数据中的偏差
有缺陷的数据是每个数据爱好者都应该警惕的事情。永远不要轻信数据。
即使你的模型和预测有很好的结果,也要记住:我为任务选择的数据是否正确地代表了我的总体?
可能是取样出错了。可能是从网上刮下来的不好。也许数据缺乏好的属性来准确区分类别。
自己动手手动检查您的数据和结果。检查正反分类的例子。把你的模型不能正确预测的东西分离出来,归类在模型误差和数据误差中。
高级数据科学家了解技术决策的“软”面。
当你在数据阶梯中向上走的时候,软技能非常重要。
在文章中,作者将重点放在了技术问题上,比如如何在 PostgreSQL 和 MongoDB,或者 GCP 和 AWS 之间做出选择,以及如何让你的团队在不损失时间、朋友和睡眠时间的情况下就你的编程堆栈决策达成一致。
这呼应了我们之前讨论的沟通点,并从技术角度加强了这一点。
高级数据科学家关注影响和价值。
关注影响和价值表示“保持简单”。首先思考:我们甚至需要 ML 来做这个吗?
数据科学家的常规教育将包括开发许多不同种类的统计模型。有些人可能倾向于只关注人工智能的智能方面。
事实是,大多数时候你不需要复杂性。当您可以比较具有相似结果的图像散列时,为什么要用 ImageNet CNN 来进行图像比较呢?当你能以更快的速度收集关键词和推断事物时,为什么要在 NER 任务中应用 BERT 呢?你真的需要那额外的 1%的准确度吗?
如果你确实需要复杂,那就慢慢来。我们知道有很多最先进的算法,但是其他的呢?
试试单词袋。然后做 TFIDF。用 PCA 减少。艾达。LSI。W2V。手套。小矢量。改变超参数。冲洗并重复。
资深数据科学家关心伦理。
道德在当今社会尤为重要,全球许多国家都在提出 GDPRs 。
在开始数据收集流程之前,考虑一下你搜集数据的合法性,以及从长远来看它会对你的公司产生怎样的影响。
还记得那些叫做使用条款的东西吗?是啊。刮之前先看。
在这篇数据科学周刊的文章中描述了一种定义数据资历的简洁方法,即衡量你的经理应该如何检查分配给科学家的任务:
高级数据科学家——你把数据交给他们,他们会处理好的。不需要登记。
中级数据科学家——你可能每周或每月检查一次,但不要参与太多。您还可以将他们与高级数据科学家配对。
初级数据科学家 —你每天检查一次,如果不是每天两次,你让他们与一名中级和高级数据科学家配对。
现在,这衡量的是完成任务的能力。责任、信任、能力、和知识。这是经验和自我提升带来的。在这篇文章中,很多关注和赞扬都给予了博士毕业生,而我从根本上不同意这一点。
虽然博士毕业生有很高的积极性,并对他们的领域有大量的知识,但学术 ML 与商业 ML 相距甚远,可能很难将其集成到大多数公司的数据科学团队中。大多数博士通常不在团队中工作,所以交流可能是一个巨大的缺点。不要用博士学位取代行业经验!
这个是初级和高级数据科学家之间的差异列表。大部分我们已经在上面提到过了,但是让我们列出并继续讨论它们。数据多了对身体不好吗?确实不是。
1.自动化任务。写代码就是写代码。
花,气流, Kubernetes Cronjobs。自动化对于以可伸缩的方式处理数据转换非常有用。
2.将任务外包给初级成员或顾问。
见上面的领导。知道何时委派,委派给谁。
3.管理人员,雇佣合适的人,管理向你汇报的经理。
这在这里也是领导,但它处理的是招聘的角度。管理实习生本身就是一篇文章,但我们可以用一些要点来触及它:
- 为实习生制定一个总体计划,这样他们总是有一项独立于微观管理的任务要做;
- 对日常任务和整体绩效进行质量反馈;
- 要有说教的态度,因为你是经理之前的导师。教学是一项神圣的职业。
4.培训可能不懂技术的同事。做高级经理的顾问。
同上,做导师。以身作则向上影响!
5.为一个特定的大规模项目(构建一个庞大的分类法等)确定合适的工具,并评估供应商软件和平台的优缺点。)
体验和纵观全局。
6.为特定项目确定正确的算法和统计技术。根据需要混合这些技术以获得最佳性能。
知识和工具集。要做到这一点,你必须知道多少 Python 库?不够。
7.不信任数据;识别有用的外部或内部数据源,混合各种数据源,同时清除数据冗余和其他数据问题。
我们在上面已经讨论过了!有缺陷的数据永远是个问题。
8.识别最佳特征,可能使用比率或转换,合并原始特征,使其成为更好的预测器。通常需要对你所在的行业有很好的了解。
数据表示和特征 组合是建模过程的 10%。85%是清理收集。另外 5%是实际训练。
9.理解高管谈话,并将高管的要求、问题、顾虑或想法转化为成功的数据科学实施。
我们在上面也谈到了这一点,谈到了在开始一个项目之前收集信息。这也稍微涉及到沟通以及如何交谈和理解管理行话。
10.衡量你给公司带来的投资回报率;能够让高管相信你的附加价值(或者在投资回报率为负或不被认为是正的情况下提供合理的解释,并提供纠正途径。)
冲击、数值、和测量。你的工作对公司整体有什么影响?你的模型真的在帮助它成长吗?
11.与各类经理/同事/主管/客户成功互动。主要是沟通问题。
再次沟通。看起来这很重要。
12.清楚地了解什么将为你的公司或客户创造价值,并且能够及时、一致地传递这种价值,不管内部政治和挫折如何。
影响、价值和像躲避瘟疫一样躲避管理者。当然最后一部分是个笑话。只是不要陷入办公室闹剧。
13.能够评估完成一个复杂项目需要多长时间,障碍和回报是什么,并在可交付成果和截止日期方面保持正轨。
再次冲击和值。
14.能够提出建议,创建新项目,说服利益相关者,并从头到尾管理这些项目。
来自产品创造和管理和沟通的知识来说服你的团队和经理推进你的想法。
15.能够启动自己的公司并成功管理它。
呃。
创业?我不太喜欢这个。我觉得资深数据科学家不一定是企业家。
16.提出有关数据科学实施的建议,帮助维护,并确保项目顺利开始,不会随着时间的推移而停滞不前。
ML 生命周期问题。
17.了解你不知道的,设法外包或学习新的东西(并能够识别/优先考虑你需要获取或外包的知识。)
项目 2、3 和 6 放在一起。了解你的局限,了解你同事的工具集和需要时外包。
18.了解你所在的行业,了解高管们心中的愿景,即使你的经理没有明确说明。
做你心中的产品经理。我猜这就是作者在第 15 项上想表达的意思。
数据科学家最适合提出建议和理解业务,因为他是集中和提炼所有数据的人。
19.测试,测试,测试。为什么假新闻在脸书持续存在,尽管所有的努力和花费了数百万美元来对抗这一瘟疫?缺乏测试,和/或无法找出假新闻是什么样子(缺乏商业头脑)可能是原因。骗子无时无刻不在改变他们的策略;你的算法应该识别和关注新的趋势,而不是仅仅能够检测 20 种类型的假新闻,并错过你的解决方案实施后将出现的新类型。与业务分析师和 IP 管理员合作,不断完善您的算法。使用健壮的算法和健壮的特性。正确衡量你的成功率。做有意义的交叉验证:如果你在 15 个欺诈案例(测试数据集)上训练你的算法;它是否能够识别出其他 5 个不在训练集中但出现在控制集中的欺诈案例?避免像瘟疫一样过度拟合。
这有点长,可能是 5 个项目合而为一,集中在一个特定的问题上。识别趋势对于建议新项目至关重要。
20.无法基于完美的模型交付完美的解决方案,需要三个月的工作,而一天就可以获得近似的解决方案。毕竟数据是杂乱的,所以完美的模型并不真的存在。如果你想要绝对的完美,你只是在侵蚀投资回报率。
冲击和值。
21.相信你的直觉和直觉,但只是在一定程度上。有些问题不需要编写任何代码或测试就可以回答。有时,简单的模拟可以走很长的路。事后分析也是如此(你可以称之为分析取证。)
在一个企业家的看来,这更与产品发现和管理有关。高级数据科学家熟悉这些概念是有好处的。
觉得小一点就更好了。你不一定需要把产品作为一个整体来分析,但是那些没有走过场的小特性。为什么那个饼状图被忽略了?为什么我们的推荐模块失败了?为什么团队对这个特定的任务反应如此消极?
22.花时间记录所有事情,确定优先顺序,与利益相关者讨论,并制定计划。每天至少一小时,通常更多。
即使你对当经理不感兴趣,兼顾工作和会议的组织也是基本的!数据科学家将定期被召集到产品会议上,展示他们的研究成果,并讨论公司的未来步骤。
这是对打算从事管理工作的高级数据科学家的要求。但那是给我的吗?哦,不。那不是我的事。
我想在上面已经讨论过的基础上增加一些品质。
- 对于必须在许多不同领域工作的数据科学家来说,创新思维 是很自然的事情。我们可以使用主要用于计算机视觉的算法来处理自然语言处理中的任务吗?我们能使用我们在调查中收集的数据来创建一个完全不相关的东西的分类器吗?
- 热爱教学。高级数据科学家拥有多年的机器学习经验,这些知识不能浪费!通过指导、写科技文章和更新你的老维基,在你的公司里传播这些知识。你是你们公司的一名老师。
总结:
我们可以将所有这些要点归纳为以下三大支柱:
- 你对自己了解多少 : 经验、工具包、部署、好奇心。你独立完成工作的能力,以及为了成功实现目标而积极主动的能力。
- 你对你的公司了解多少 : 产品发现、初始、管理、测量。你看到全局、最大化你的影响、最小化复杂性、提出新想法并衡量其价值的能力。
- 你对你的同事了解多少 : 沟通、领导、教学、微观管理。你向你的队友和经理推销你的想法的能力,了解每个团队成员的优点和缺点的能力,向他们传播你的个人知识的能力,以及有效领导他们的能力。
如果你想留在技术面,首先提高第一支柱。如果你想去管理方,提高第二支柱。第三是对两者都必不可少的。
差不多就是这样!
有关硬技能的更多信息,请查看 LinkedIn 上的高级数据科学家简介以及 GlassDoor、Indeed 和其他网站上该职位的招聘信息。我在这篇文章中没有关注它们,因为它们相当于一个普通的数据科学家工具包。所有其他的事情都会有所不同。
从两年前开始,我就在努力达到那个高级技能。渐渐地,我找到了窍门,但是还有很长的路要走。编写和汇编这份核心原则和价值观的清单真的很有趣,如果你有什么要补充的,请在下面的评论中提出来,或者在 LinkedIn 上联系我!
我们未来的机器人影响者:一个能演奏《我的世界》音乐的抽搐流机器人
内部 AI
我们如何将机器人技术与电子竞技相结合来吸引年轻观众
究竟是什么?
以前听说过类似的事情吗?我也没有。这个机器人是作为芬兰国家广播公司伊尔与未来项目的一部分而创造的。Yle 为电视、广播和网络制作内容。它拥有广泛的老年观众,但在吸引年轻观众方面有困难。这个项目的目标是利用新技术接触年轻观众,特别是青少年。
Yle 的内容传统上是非参与性的:表演者表演,观众观看。然而,年轻观众通常会观看更具参与性的内容,如 YouTube 视频或流媒体。我们想创造参与性的内容——表演者应该与观众互动。Yle 专门针对青少年受众的记者指出,游戏和电子竞技是受欢迎的内容。我们意识到游戏是实现这一点的完美环境:观众可以和表演者一起玩。我们想探索一个艺人,甚至是未来的影响者会是什么样子。那么为什么不创造一个流媒体机器人游戏玩家呢?

Yle’s journalists and Futurice’s roboticists coming up with the idea of a robot gamer

First drafts
这个机器人是什么样的?
我们为机器人选择了两个游戏:Flappy Bird 和《我的世界》。
《Flappy Bird》是一款风靡一时的游戏,曾在 2014 年风靡一时。我们选择 Flappy Bird 是因为这个游戏的机制很简单,并且允许用机器学习来玩这个游戏。我们想尝试一种神经进化算法,根据上一代中哪些鸟表现最好,将新的鸟进化到游戏中。这样我们可以看到当电脑在玩游戏时观众的反应。
我们选择《我的世界》是因为它的社区特色,允许玩家之间的互动。玩家可以互相合作或战斗,互相交易,互相聊天。他们会“伤害”对方——也就是惹人讨厌。玩家还可以挖掘材料,并把它们变成物品,甚至建造城市。他们可以储存珍贵的东西,耕种土地,放牧动物,和打怪物。《我的世界》还有一种叫做红石的材料,玩家可以用它来建立逻辑。实际上,玩家可以在《我的世界》内部建造一台完整的计算机。很有诗意,是吧?
为了扮演《我的世界》,我们决定由人类来控制机器人。这个游戏很复杂,与其他玩家进行真实的互动需要另一端有一个人。

Flappy Bird and the Robot
我们的团队由 Yle 的记者和未来机器人专家组成,他们定义了在这种情况下使用机器人的一些明显优势:
- 机器人不知疲倦——它可以永远玩下去,并提供全天候的内容。是理想的流光。
- 机器人可以是中性的。游戏玩家和游戏观众通常是男性,但性别中立的机器人可能会吸引更多不同的观众。
- 一个机器人可以反映玩家的行为,激起情绪。游戏文化通常是侵略性的。反过来,机器人可能会变得咄咄逼人,让游戏玩家反思自己的行为。
- 机器人可以在游戏中互动,同时聊天。人类只能有一个输出,而机器人可以有几个。

Testing our streaming equipment and having problems with interference from the robot’s face screen.
我们决定玩六个小时的游戏,轮流玩《我的世界》和 Flappy Bird。为了确定会议的用户体验,我们为机器人的设计定义了指导方针:
- 实验性用户体验——用户应该能够在与机器人的互动中探索。
- 飘带通常是强势人物。机器人是个性很强的角色。
- 机器人能引起“WTF?”玩家的反应。我们希望这次经历令人难忘,而不是平淡无味。
- 在线游戏的文化和空间是独一无二的,应该为。
基于这些指导方针,我们创造了角色 IQ_201。《智商 201》是基于激进的网络游戏玩家,他们相信自己的智力超群(参见这个关于智商超过 200 的迷因)。这个机器人会很粗鲁,会做出反应,这意味着要让与它互动的青少年做出反应。
在实施之前,该团队还想考虑一些道德因素:
- 机器人如何操作的透明度是必需的。如果这个机器人将被投入生产,用户应该能够找到关于它如何工作的信息。
- 机器人应该平等对待所有的玩家。这也是让机器人看起来中性的决定的一部分。由于有时愤怒,仇恨,甚至种族主义或性别歧视的游戏文化,我们需要仔细设计机器人的个性。它可能就在外面,甚至是粗鲁的,但绝不是可恨的。我们不想要任何激烈的游戏时刻。
- 机器人应该是粗鲁的,但不要太过分。
- 聊天需要被调节。如上所述,游戏文化可能是有毒的。我们希望密切关注《我的世界》和特维奇的聊天,以确保不会有恶作剧发生。
为了满足这些要求,我们选择了 Furhat 机器人。Furhat 机器人有一个相对易于使用的远程操作界面,允许用户输入文本以转换成机器人的语音,并在点击按钮时做出手势。
鲜花和暴力
我们有一个 6 小时的视频流,从 14 点开始,到 20 点结束。我们在游戏之间交替:14-15 是 Flappy Bird,15-17《我的世界》,17-18 Flappy Bird,然后又是 18-20《我的世界》。这个时间表允许扮演《我的世界》的机器人操作员在中间有一个急需的休息。

Our streamer
一开始,有几个人加入。渐渐的,我们收获了越来越多的人。我们在 16:20 达到峰值 Twitch 上有 49 个同时观看者。总的来说,我们有 431 个独特的观众。在《我的世界》,大约有 30 个活跃的玩家。考虑到我们的广告是如此之少(一个论坛帖子和几条推文),我们对出席人数感到惊喜。
《我的世界》会议由两个机器人操作员指导(我和另一个 Minja)。另一个 Minja 扮演《我的世界》,我操作机器人的声音和手势。第三个人在聊天中回复信息。
《我的世界》势不可挡。机器人挑衅的性格激起了青少年对它的不断杀戮。在几次逃到山里和骆驼在一起,又一次被杀死后,我们修改了机器人的行为,使其更加友好。我们想创造更多建设性的互动。

Two Minjas as robot operators
在第二部《《我的世界》之流》的结尾,青少年们正在与机器人合作。他们保护它免受剩下的几个好斗玩家的攻击,并给它送花之类的礼物。有些人甚至直接称赞机器人,让它开心。玩家开始跟随机器人,当机器人开始建造灯塔时,他们同意合作。他们还建了一座房子,并捕获了一只美洲驼,命名为:IQ_201 Junior。
在游戏中有两个明显的派别:一些在整个游戏中意图杀死机器人,一些在整个游戏中保护它。随着水流的继续,一些人变得对机器人更加适应,换边。不管怎样,机器人激起了强烈的情绪。青少年寻求与它真正的互动。没有人忽视机器人,或者感到无聊。
关于机器人如何工作的讨论贯穿始终。没有人问机器人本身,也许是出于尊重或害怕打扰它。讨论集中在机器人是否是“真实的”,即它是否是真正自动的,或者是人类在操作它。是用实际的手打字吗?或者它“侵入”了游戏并通过代码玩游戏?
“我会想你的机器人!”
之后有 16 个人回复了我们的调查。80%的球员年龄在 18 岁以下,大多数是 13 到 15 岁的孩子。80%的玩家与机器人互动。这是非常积极的,我们成功地制造了一个吸引用户的机器人。75%的玩家对机器人的评分为 3 分或以上,满分为 5 分。

Viewers over time
我们从调查中收集玩家的意见,以及《我的世界》游戏聊天。它们是从芬兰语翻译过来的,反映了我们的玩家对机器人的一些想法。
关键的第一点:
“这很有趣,也很酷。但不知何故,这感觉像是一个圈套。”【指机器人可能有人类操作员】
许多玩家想知道机器人实际上是如何工作的。这个评论把我们带回到我们之前谈到的伦理考虑:机器人如何操作的透明度。虽然我们一开始打算保持透明,但我们决定不告知用户第一个飞行员机器人的遥控操作特性。我们做出这一选择是因为我们希望让用户的“暂停怀疑”保持活跃,这意味着我们希望参与者接受他们正在与一个“真正的机器人”(一个自主机器人)对话的事实(Duffy & Zawieska,2012)。我们收到的关于机器人功能不明确的负面回应让我们清楚地知道,如果这个试点延长,更加透明是非常重要的。有可能同时保持怀疑和诚实的机器人操作(我们都知道电视节目毕竟不是现实)。
这个机器人在某些事情上有点简单,有时对人说话很刻薄,而且居高临下。这有点让人焦虑……这是故意的吗?”
一些玩家认为机器人的粗鲁行为越界了,变成了居高临下。他们希望机器人将来会更体贴。这表明即使是机器人也会伤害感情。在未来的版本中,让 IQ_201 更有同情心,更少关注机器人对人类的优越性,可能会有积极的结果。
“机器人看起来脸色有点发青,声音也有点怪。”
两个青少年不喜欢机器人的外表和声音。其中一个特别提到它的蓝色脸,问我们为什么不把它做成“正常的颜色”。这可能是由于机器人掉进了这些玩家的“恐怖谷”。恐怖谷是机器人研究人员森昌弘(Mori et al .,2012)提出的一个理论。他的理论认为,随着机器人的外形越来越接近人类,当外形非常接近时,会有一个下降。僵尸和尸体落入这个山谷。为了消除我们机器人的这种影响,在未来的解决方案中改变机器人的外观和声音可能是明智的。

The Uncanny Valley by Masahiro Mori. Wikimedia commons.
然后是积极的:
“和机器人玩游戏真的很有趣。:)希望将来我们能再次举办这类活动。😃"
大多数青少年喜欢玩机器人,看小溪。他们的反馈称赞了机器人的幽默感和游戏技巧。继续试播肯定会找到感兴趣的观众。
【对机器人】“有些人对新事物有困难。在这种情况下,这些玩家遇到了机器人的问题,因为你是新来的。”
这位玩家在游戏中安慰机器人,因为其他玩家通过不断杀死它来给它制造麻烦。这个评论很感人:玩家为机器人感到难过,并认为机器人可能也会感到难过,试图改变这一点。这是对机器人明显的移情反应。
【对机器人】“我会想你的机器人!”
当机器人离开《我的世界》时,一些玩家向它衷心道别。这些玩家发现机器人平易近人,甚至与它建立了情感纽带。这意味着我们成功地创造了一个引人注目的角色,即使只有 6 个小时。对于机器人的未来构建,玩家应该被告知机器人是如何操作的。这可以帮助他们校准与机器人之间适当的情感纽带。
机器人影响者是我们的未来吗?
玩家对机器人产生了浓厚的兴趣。他们接近它,与它互动,并形成对它的看法。这个机器人也引发了情绪反应——积极的和消极的。一些参与者真的很喜欢这个机器人,并希望未来能有更多的互动,而一些人则非常挑剔。这表明机器人影响者有能力影响我们的情绪——我不知道这种能力是否会达到人类艺人的水平。这是否可取,我也不知道。
真正让我惊讶的是,机器人的年轻用户群是媒体素养:他们批判性地审视机器人的操作模式。玩家们对今天的人工智能有一个很好的想法,什么是可能的,什么是不可能的。他们不容易上当。
这让我对我们的未来充满希望,不管它是否包含机器人艺人。当观众仍然持批评态度时,他们可以理解机器人是没有实际情感能力的机器,即使观众选择暂停怀疑。对于观众来说,与机器人的互动可以被视为一种准社会互动——观众可能会觉得他们与机器人的关系很亲密——即使这不是真正的互惠。这本身并不一定是有害的,只要我们诚实地面对这种关系到底是什么。我们应该明白,机器人正在进行一场表演,以激发我们的情感——就像人类表演者所做的那样。
[## Yle Beta | Yle Twitchbot -社交机器人设计冲刺
伊尔 Twitchbot 演示和社会机器人设计介绍。
areena.yle.fi](https://areena.yle.fi/1-50168989)
达菲,b . r .&扎维斯卡,K. (2012 年 9 月)。暂停对社交机器人的怀疑。2012 年 IEEE RO-MAN:第 21 届 IEEE 机器人与人类互动交流国际研讨会(第 484–489 页)。IEEE。
m . Mori,k . f . MacDorman,&n . kage ki(2012 年)。森昌弘的原创散文。IEEE 频谱,98–100。
ROC 曲线:揭开面纱
ROC 曲线完全指南

这篇文章的目的是解释什么是 ROC 曲线,它在评估分类算法性能中的重要性,以及如何使用它来比较不同的模型。
这个帖子可以被认为是'的延续:揭开了' 【的困惑矩阵,所以如果你不熟悉困惑矩阵和其他分类度量,我推荐你去读一读。
我们开始吧。
概率阈值
当面临二元分类问题时(例如使用某个患者的健康记录来识别他是否患有某种疾病),我们使用的机器学习算法通常会返回一个概率(在这种情况下是患者患有疾病的概率),然后将其转换为预测(患者是否患有这种疾病)。

Pipeline of the previously explained scenario
为此,必须选择某个阈值,以便将该概率转换成实际预测。这是一个非常重要的步骤,因为它决定了我们的系统将输出的预测的最终标签,所以小心选择这个阈值是一项至关重要的任务。
我们如何做到这一点?好吧,第一步是考虑我们面临的任务,以及对于这样的任务是否有我们应该避免的特定错误。在上面的例子中,我们可能更倾向于预测一个特定的病人实际上并没有患病,而不是说一个病人在实际患病时是健康的。
总的来说,该阈值通过以下规则合并到先前描述的管道中:

Rule for using the probability to produce a label
开箱即用,大多数算法使用 0.5 的概率阈值:如果从模型中获得的概率大于 0.5,则预测为 1 -(在我们的情况下有疾病),否则为 0(没有疾病)。
当我们改变这个概率阈值时,对于某一组数据,相同的算法产生不同的 1 和 0 集合,也就是不同的预测集合,每个集合都有其相关的混淆矩阵、精确度、回忆等…

Figure of a confusion Matrix for a specific set of predictions
在上图中,显示了混淆矩阵的图像。让我们记住可以从中提取的指标,并加入一些新的指标:
- 模型的精度使用预测标签的真实行计算。它告诉我们,当我们的模型做出正面预测时,它有多好。在之前的医疗保健例子中,它会告诉我们,在我们的算法预测生病的所有人中,有多少患者实际上患有疾病。

Formula for the precision of the model
当我们想要避免我们的算法的真实预测中的错误时,即在我们预测为生病的患者中,这个度量是重要的。
- 我们型号的召回是使用实际或真实标签的 True 列计算的。它告诉我们,在我们的真实数据点中,算法或模型正确地捕捉了多少。在我们的案例中,它将反映出有多少实际患病的人被确定为患病。

Formula for the recall of the model
当我们想要尽可能地识别我们的数据的最真实的实例时,这个度量是重要的,例如,实际上生病的病人。这个指标有时被称为敏感度,它代表被正确分类的真实数据点的百分比。
- 我们的模型的特异性是使用实际或真实标签的假列来计算的。它告诉我们,在错误的数据点中,算法正确地捕捉了多少。在我们的案例中,是有多少真正健康的病人被认为是健康的。

Formula for the specificity of our model
当我们想要尽可能地识别数据中最错误的实例时,这个度量标准是很重要的;即没有生病的病人。这个度量也被称为 真负率 或 TNR。
ROC 曲线
在定义了评估我们的模型可能涉及的大部分指标之后,我们实际上如何选择概率阈值来为我们想要的情况提供最佳性能呢?
这就是 ROC 或接收器工作特性曲线发挥作用的地方。这是两个指标(灵敏度或召回率和特异性)在我们改变这个概率阈值时如何变化的图形表示。直观地说,这是在一个单一、简洁的信息源中,当这个阈值从 0 到 1 变化时,我们将获得的所有混淆矩阵的总结。

Figure of a standard ROC curve of a model
首先看一下这个图,我们看到纵轴上是召回率(量化我们在真实标签上做得有多好),横轴上是假阳性率(FPR),这只是特异性的补充指标:它代表我们在模型的真实阴性上做得有多好(FPR 越小,我们在数据中识别真实阴性实例就越好)。
为了绘制 ROC 曲线,我们必须首先计算各种阈值的召回率和 FPR,然后将它们彼此相对绘制。
如下图所示,从点(0,0)到(1,1)的虚线代表随机模型的 ROC 曲线。这是什么意思?它是一个模型的曲线,预测 0 半时间和 1 半时间,与其输入无关。

Figure of the ROC curve of a model
对于随机模型,ROC 曲线大多数时候都是与 ROC 曲线一起表示的,这样我们可以很快看到我们的实际模型做得有多好。这个想法很简单:我们离随机模型的曲线越远越好。正因为如此,我们希望从点 a 到点 b 的距离尽可能的大。换句话说,我们希望曲线尽可能靠近左上角。
下图显示了 ROC 曲线的一些特殊点:

Some important points of the ROC Curve.
- 在点 A 我们有一个概率阈值 1,这不会产生真阳性和假阳性。这意味着,根据我们的算法返回的概率,每个样本都被分类为假。你可以想象,这不是一个很好的阈值,因为基本上通过选择它,我们构建了一个只会做出错误预测的模型。从点 A 位于虚线上这一事实也可以观察到这种不良行为,虚线代表纯粹随机的分类器。
- 在点 B 上,阈值已经下降到我们开始捕获一些真阳性的点,因为具有高阳性概率的样本实际上被正确分类。此外,在这一点上没有假阳性。如果这一点有一个体面的回忆,这是完全关键的,以避免假阳性,我们可以选择它描绘的阈值作为我们的概率阈值。
- 在点 C 上,我们已经将阈值设置为 0,因此以与点 A 镜像的方式,一切都被标记为真。根据标签的实际值,我们会得到真阳性或假阳性,但从来没有对假或阴性行的预测。通过将阈值放在这里,我们的模型只创建真实的预测。
- 最后,点 D 是性能最优的点。在里面我们只有真正的积极和真正的消极。每个预测都是正确的。我们得到实际到达该点的 ROC 曲线是非常不现实的(所表示的 ROC 甚至不接近该点),但是正如我们以前说过的,我们应该尽可能接近左上角。
大多数情况下,我们最终要做的是找到曲线中 B 和 C 之间的一个点,该点满足 0 成功和 1 成功之间的折衷,并选择与该点相关的阈值。
根据我们的 ROC 曲线的形状,我们还可以看到我们的模型在分类 0 或分类 1 方面做得更好。这可以从下图中观察到:

Comparison of two different ROC curves.
左边的 ROC 曲线在分类 1 或我们数据的真实实例方面做得很好,因为它几乎总是呈现完美的回忆(这意味着它接近我们图表的上限)。然而,当它到达蓝色标记的点时,它在回忆中显著下降,同时过渡到完美的特异性。
右边的 ROC 曲线在对我们的数据的 0 或错误实例进行分类方面做得非常好,因为它几乎总是呈现出完美的特异性(这意味着它接近我们图表的左边界限)。
另一件要提到的事情是,如果 ROC 曲线太好(就像上图中说明不同场景的例子一样),这可能意味着模型过度拟合了训练数据。
很酷吧?最后,下图显示了取自不同来源的其他一些 ROC 曲线。

Group of 4 different ROC curves taken from different sources
您可能已经注意到,其中一些图表也给出了 ROC 曲线下的面积值。这是为什么?我们来看看曲线下面积。
ROC 曲线下的面积:AUC
正如我们之前提到的,我们的 ROC 曲线越靠近图表的左上角,我们的模型就越好。当我们针对特定任务尝试不同的机器模型时,我们可以使用准确性、召回率或精确度等指标来比较不同的模型,但是,仅使用其中一个指标并不能完全准确地描述我们的模型的表现,因为仅基于其中一个指标进行比较会遗漏所有其他指标提供的信息。
这就是 AUC 发挥作用的地方。该度量从 0.5(随机分类器)到 1(完美分类器)的值,并且它在单个度量中量化了我们的 ROC 曲线有多酷和好看;这反过来解释了我们的模型对真假数据点的分类有多好。较大的 AUC 通常意味着我们的模型比具有较低 AUC 的模型更好,因为我们的 ROC 曲线可能具有更酷的形状,更靠近我们图表的顶部和左侧边界,并且更接近期望的左上角。

Comparison of two ROC curves
在上图中,我们可以看到,ROC 由蓝线表示的模型比 ROC 由金线表示的模型更好,因为它下面有更多的区域(蓝线和我们图表的左、按钮和右界限之间的区域),并且在所有情况下都表现得更好。
容易吧?我们的 ROC 曲线下的面积越大,我们的模型就越好。
就是这样!我们已经了解了什么是 ROC 曲线,AUC 意味着什么以及如何使用它们。让我们总结一下我们所学到的!
结论和关键经验 :
- ROC 是为单个模型构建的,它可以是一种使用其形状或面积(AUC)来比较不同模型的方法。
- ROC 曲线的形状可以告诉你一个特定的模型在对我们的数据进行真假分类时是否做得更好。
- 使用 ROC 曲线,我们可以选择一个与我们对特定任务的兴趣相匹配的概率阈值,以避免某些错误超过其他错误。
- ROC 不仅仅是一种比较算法的方法,它还让我们根据与我们最相关的度量来选择分类问题的最佳阈值。
就这些,我希望你喜欢这个帖子。欢迎在 LinkedIn 或上与我联系,在 Twitter 上关注我,在 @jaimezorno 。还有,你可以看看我在数据科学和机器学习上的帖子这里 。好好读!
更多类似的帖子请关注我的媒体 ,敬请关注!
人工智能在 B2B 营销中的作用
使用机器学习和行为建模来生成线索

B2B 营销很容易。你所需要做的就是在他们自己的教育过程中,在准确的时间找到完美的前景。一旦你做到了这一点,只要把正确的信息交到他们手中,让他们知道你是如何找到完美的解决方案来彻底解决他们的痛点的。坐下来,看着你的企业像服用类固醇的杂草一样成长。没什么。
但是,如果 B2B 营销如此简单,为什么有些组织似乎在这方面取得成功,而其他人却在苦苦挣扎?事实证明,在准确的时间找到完美的潜在客户类似于在一片黑色雨伞的海洋中找到一把红色雨伞,但要困难得多。值得追求的前景往往只能通过微妙的线索来识别,行为模式只能通过仔细分析正确的数据来区分。
一些公司对此的反应是砸钱解决问题——举手投降,到处寻找保护伞。其他人很擅长识别红色雨伞。
我在一家名为 Projector PSA 的小型软件公司工作,该公司开发专业服务自动化软件,旨在帮助咨询公司运营业务。我们与比我们大几个数量级的对手竞争。因为我们不能盲目地花钱解决问题,我们为找到更聪明、更有效的做事方法而自豪。这些方法中的许多都植根于有效利用我们可以获得的大量数据,例如我们如何使用语义分析来执行竞争分析,使用预测分析来改善收入预测,以及使用神经网络来识别有效的项目经理。
今天,我想谈谈我们如何开始在 B2B 营销工作中使用人工智能。具体来说,我们如何使用机器学习算法和行为建模来推动我们的销售线索生成引擎。
营销漏斗
在深入机器学习方面之前,我需要简要描述一下我们的整体营销模型。像许多企业一样,我们认为我们的营销过程是一个漏斗,对应于访问者在教育旅程中的进展。他们可能只是在寻找经营专业服务公司的最佳实践的基本信息。我们在这一阶段的工作是将这种普遍的兴趣转化为意识,即一类称为专业服务自动化(PSA)软件的产品是存在的,并且它可能是有用的。或者,他们可能已经知道缩写 PSA,并正在积极比较不同的产品。在这里,我们的职责是展示我们的产品与市场上其他产品的不同之处。这个漏斗(为清晰起见进行了简化)看起来有点像这样:

我们网站上的不同内容是为每个教育阶段的目标访问者编写的。例如,我们可能有一篇针对处于认知阶段的人的关于测量利用率的最佳实践的博客文章。或者,我们可能有一本电子书,为希望获得 PSA 市场更深入教育的游客提供 PSA 软件的初级读本。最后,我们有一个交互式性能记分卡,允许读者将我们的产品与其他产品的性能进行比较——这是差异化阶段的访问者发现有用的内容。
在经历了认知、教育、兴趣和差异化阶段的所有人中,只有一小部分人通过注册免费试用或联系我们的销售团队成为可识别的销售线索。在成为 SQL 或销售主管的过渡阶段,我们收集访问者的信息,他们的联系信息和他们的公司名称。
那么,那些从未表明自己身份、从未成为 SQL 的访问者呢?他们永远消失了吗?
研究和主动外联
事实证明,对于这些匿名访客,我们称之为访客非转化者,因为他们从未转化为线索,我们有一个关键的信息。任何网站的每个访问者都有一个 IP 地址,这是访问者访问我们网站的唯一互联网地址。
许多 IP 地址指向互联网服务提供商(ISP),如威瑞森或康卡斯特,这对我们来说是一个死胡同。然而,如果有人在 Acme Consulting 工作,并在工作中访问我们的网站,使用一种称为反向 DNS 查找的技术,我们通常可以将该 IP 地址转换为 Acme Consulting 公司。
在此基础上,我们可以让我们的研究团队在 Acme 找到符合我们典型买家特征的人(比如他们的首席运营官或专业服务副总裁),并单独联系他们。我们不一定需要接触到真正访问过我们网站的人,但是只要知道 Acme 对我们这样的产品感兴趣,就是我们接触的一个很好的触发器。
这种研究和主动外展过程,如果做得好,实际上应该是相当劳动密集型的。
我们的团队需要确保我们接触到正确的人,并为每个人找到正确的有针对性的个性化接触点。接触点不仅仅是模板化的垃圾邮件,也可能是一个电话、一篇博客帖子上的评论、一个有趣观点的转发或一位相关同事的介绍。需要了解市场、收件人的工作环境以及潜在客户可能面临的棘手问题的接触点。最重要的是,接触点实际上为接收者提供了价值。
问题是我们可能每个月都有成千上万的访问者访问我们的网站。对于研究阶段来说太多了,对于劳动密集型的个性化推广来说就更少了。
行为分析
在我看来,这就是事情变得有趣的地方……数据科学发挥作用的地方。因为我们不希望每个月对成千上万个 IP 地址中的每一个进行哪怕是最基本的研究,所以我们需要弄清楚如何进行优先排序。我们可以使用自动化手段过滤掉已知的 ISP、已经转换的 SQL、当前客户和其他访问者,以缩小非转换访问者的范围,但这仍然给我们留下了大量需要进一步优先考虑的访问者。进入行为分析。
我们可以从网络日志中了解到很多关于访问者在我们网站上行为的信息。如上所述,我们将网站上的内容分为不同的类别,如我们的博客、我们的产品页面、关于我们公司的页面、新闻发布、工作描述等。
我们发现某些页面(如我们的定价页面)本身就是购买意向的良好指标。然而,更有趣的往往是行为的组合。
一个人看较少数量的页面,但是看各种各样的内容可能表示更高的兴趣。如果一个访问者看了很多页,但只看了一种类型,比如说,我们的工作描述,那么这个人更可能是一个招聘候选人,而不是一个潜在客户。那些只看我们的博客,但不看我们的产品页面的人可能更有兴趣学习经营专业服务公司的最佳实践,而不是找到一种产品来帮助他们。一个只看我们的产品页面和截图的访问者可能会试图对我们的应用程序进行逆向工程,而对实际使用它完全不感兴趣。
我们的网络日志还能告诉我们访问者第一次是如何到达我们的网站的——他们是在谷歌上搜索了什么,还是从合作伙伴的网站上点击进入的。它们可以显示访问者在每个页面上花了多长时间,他们是否注册了优质内容(如我们的电子书),以及他们是否多次回来获取更多信息。通过我们在网站上收集的数据跟踪每个访问者,我们可以对那个人的行为进行大量的分析,并推断出他们的一些兴趣。
在过去,传统的营销自动化工具提供了一些功能,通过一种称为线索评分的机制,将所有这些行为转化为可操作的信息。用户将配置该工具,以理解阅读一篇博客文章可能值一分,查看一个产品页面可能值两分,在定价页面上花费超过 30 秒值五分。这有点像用强力链锯来解决一个需要手术刀般精确的问题。它需要根据对每个行动的相对价值的一些相当任意的假设来手动建立领先评分模型,很少能追溯应用到历史数据,并且通常与现实世界的结果相关性很差。
机器学习
最后,我们谈到了人工智能和机器学习。我们希望避免手动编制的销售线索评分机制的任意性。为了做到这一点,我们决定教一个机器学习分类模型来确定所有行为输入的正确权重,以尝试预测转换倾向。
对于每个访问者,无论是成功的 SQL 转换还是未转换的访问者,我们都将所有的行为数据转化为一组标志、比率、数字和其他指标。这在不同的情况下会有所不同,但对我们来说,这是由一些因素组成的,比如浏览的总页数,每种类型的页面所占的比例(博客、产品页面、工作描述等)。)、不同类型页面上的平均持续时间等。最重要的是,我们捕获了我们的关键目标属性,一个指示访问者是否转换为 SQL 的标志:

随着所有这些数据的处理,我们将其转化为每个访问者的向量,并将我们所有的访问者数据输入到几个机器学习分类算法中。在比较了它们的输出之后,我们最终选定了一个特定的神经网络模型。(在这里,我不会详细介绍我们用来比较和选择不同算法的过程。)
这个约有 40,000 名访问者的数据集既用作训练数据,也用作测试数据。随着我们收集更多的数据,我们可以决定是使用这个初始训练模型测试新访客,还是使用额外的数据继续训练算法。

不管怎样,我们最终追求的是模型的混淆矩阵。混淆矩阵显示,在所有实际上没有转换的访问者中,该算法正确预测了其中的 99.6%。在转化的访问者中,它的预测正确率为 80.9%。然而,除了承认算法获得了不错的命中率之外,这些正确的预测,真正的负面和真正的正面情况,实际上对我们来说并不那么有趣。
我们真正感兴趣的是错误的预测,特别是算法认为应该转换但没有转换的 0.4%。这些误报实际上是没有转化的访问者(没有转化为潜在客户的访问者),他们的“行为”更像 SQL(转化为潜在客户的访问者)。这些都是值得仔细研究的访问者,如果我们仅仅相信二进制 0/1 预测,这 0.4%就变成了一百多个值得追逐的潜在客户。
更有趣的是,我们不必仅仅相信二进制 0/1 预测。我们可以查看所有未转化的访问者(0.4%以及 99.6%),并查看分类模型提供的 p(1)概率。也就是说,访问者应该按照算法的预测进行转换的概率在 0 和 1 之间。
这给了我们更好的控制我们追逐的非转换访问者。如果我们的研究和推广团队完全瘫痪,我们可能只会追逐 0.8 或更大概率的潜在客户(0.4%的一小部分)。另一方面,如果他们有大量的容量,我们可能会以 0.4 或更高的概率追逐潜在客户(从而稍微进入 99.6%象限)。
关键是,这种方法不只是给我们一个应该/不应该转换的二元概念,它根据预测转换的概率为我们排列整个列表的优先级。
结论
我很想说,这一过程使我们的销售线索生成率一夜之间翻了两番。我想说的是,我们整个营销团队去博拉博拉岛度假了一个月,因为他们明年的工作已经完成了。但是,我不能。不是因为我们没有得到积极的结果(我们得到了),而是因为我们才刚刚开始这个过程…现在还为时过早。我们已经开始处理潜在客户识别部分,并且正在为研究和主动拓展工作准备好所有的流程、基础设施和培训。
我能说的是,在我们最初非常小的概念验证中,我们联系了四家公司,我们确定了其中一家,并将其转换为 SQL。这个样本量太小,无法可靠地预测长期的实际转化率。但是,这足以让我们将最初的概念验证扩展为更大的计划。
这种概念的证明,即使它没有导致任何积极的转化,也正是我们作为一家公司试图获得这一点竞争优势所喜欢探索的思维类型。
换个角度看问题。努力更有效地做事。为了更好地识别红色雨伞。
数据科学的浪漫一面:通过一年的短信分析一段关系
这应该是一个私人项目,我想我会上传到一个私人的 Google Colab 笔记本上,并与任何相关的人分享(这是另一个人,这里称为“OJ”)。但是,一个灯泡——为什么不把它清理干净并与他人分享呢?
基本上,为了庆祝我们约会一周年,我决定从沟通的角度来探索我们的关系,看看我们的短信行为:我们对彼此说了什么,我们什么时候说的,我们如何回应对方,等等。我会把通话记录放在里面,但是我实际上从来没有跟踪过(真惭愧!)所以我不得不放弃,特别是因为我们通常一周最多打两个电话,这让它变得没那么有趣了。
所以,我将向那些对我做了什么和为什么做感兴趣的人讲述我的思考过程,最后,我将分享一些在这个过程中派上用场的链接和工具。我一直在努力提高我的 Python 技能,所以你也可以在那里找到一些有用的 Python 相关的片段。
(请注意:这个故事在桌面上阅读更好,因为信息图是交互式的)
方法学
我们使用的主要沟通渠道是 WhatsApp。我们偶尔会做 SMS-text,但这可以忽略不计,偶尔的 Messenger 链接或 YouTube 消息非常罕见,所以我选择坚持使用 WhatsApp 来简化这个过程。
- 数据来源:大约一年前的消息历史从 WhatsApp 导出(显然,导出时你不会得到所有的消息,最多只有大约 4 万条消息)。
- 数据争论#1: 最初的数据处理是在 Excel 中完成的,只是为了清理有些混乱的导出(显然,当您键入 WA 消息时使用 ENTER 会创建一个没有时间戳的无意义的新数据行)。
- 数据争论#2: 第二次争论是在 Spyder 中使用 pandas 在 Python 中完成的(我是一只实验鼠,使用 MATLAB 已经有很长时间了,所以 Spyder 是我的毒药)。
- 探索性分析:大部分是用 pandas 和 plotly 完成的,还有一些 WordCloud 和 nltk 的 VADER(后面会有更多)。Plotly 是目前为止我最喜欢的 python 可视化库,因为一旦你意识到它是可能的,它的交互性是必须的。这是我第一次在一篇中型文章中加入情节,所以希望它能在不同的平台上大放异彩。
故事

Photo cred: Annie Spratt [Unsplash]
我们在 2018 年 4 月相遇,在 Tinder 上右键点击和有史以来最自发的设置之后——同一天点击和约会!这对我来说是第一次,下着雨在蒙特利尔高原街区的酒吧间漫步后,我们找到了一张还算不错的桌子,在 pisco sour 酒吧互相认识。
一年过去了,我试图想出一种有创意的方式来纪念这一时刻。当我在做其他一些数据密集型和量化自我的项目时,我想——‘哦,也许我可以搞出这个来?’所以,我们在这里,分析了一年的短信。
总体消息历史记录
总的来说,在大约 11 个月的时间内(希望这能及时准备好!),我发送了 17,408 条消息(平均每天 60 条消息)而 OJ 发送了 22,589 条消息(平均 80 条消息)我想我们知道谁在这里喋喋不休!
A year worth of messages: change the slider to zoom in on specific time frames, and try guessing what do peaks mean!
时间线显示了一些峰值(主要是一个超级峰值)和一两个几乎没有发生的死区。高峰期通常与我们其中一个人的旅行相对应(7 月的夏威夷、11 月的多伦多、12 月的纽约和 3 月的多伦多),而低谷通常是当我们两人一起旅行(6 月的以色列、2 月的哥伦比亚)并且不需要太多信息交流时(除了偶尔的“给我带一卷卫生纸”或“我应该买哪种奥利奥?”).所以这里没有大的冲击。
所以,总的来说,OJ 发送了更多的信息,但有趣的是考虑这是否归结为实际上更多的单词,或者仅仅是将可能是长的信息分解成短的。下表显示了一个稍微更详细的分类:事实上,当发送更多的消息时,OJ 的消息往往更短,而我的消息稍微长一点(尽管没有统计学意义)。它确实给了我们发信息行为的一个总体感觉——一个人更喜欢连续的多条短消息,而另一个人更喜欢一条更长的消息。
互动:何时和如何?
我们现在可能会问更多关于交互本身的问题:我们什么时候使用消息交谈?这种互动是怎样的——谁在发起,什么时候发起,对方通常需要多长时间做出回应?
让我们看看!
习惯中反映的文化
请看下图,展示了每天消息统计的细目分类(方框图解释这里,如果你需要的话!),看起来在大多数工作日(周一至周四)这种行为通常是相似的,周三略有下降(也许值得用我们一起度过的日子的数据来交叉一下?我实际上收集了这些数据,可能会在以后的帖子中研究一下!).
Breakdown of distinct messages by weekdays. Each day we can observe 50% of the messages sent within the limits of the box, while the whiskers represent the rest of the data (and any single dot represents an outlier).
周五至周六发生的事情很有趣,一旦你了解了这些人,就很有道理:我们中的一个人(OJ)是一个观察犹太人(意思是,在安息日,即周五天黑后至周六天黑后,通常没有电子设备在使用——在这里阅读更多信息)因此,我们在周五至周六的交流要少得多,这些情况下的异常值比大多数其他日子更接近核心。周日恢复正常,因为没有任何限制了!
离群值通常与旅行期间相关,在此期间,我们(奇怪地)保持着更高的沟通率。
我们是白天的生物
正如我们在下图中看到的,我们大部分的对话发生在预期的白天时间——在加拿大,高峰在工作日快结束时的下午 3-4 点左右(下午 5 点左右)。当观察我们之间的差距时,下午 3 点似乎也是差距最大的一点——也许这与我工作效率的高峰时间有关(这是另一篇文章的讨论内容!)以及当时我对沟通的不重视。
Average messages per hour, and the difference between senders: very little late-night messaging (we both are tea-lovers and old souls, it is known) and peak/plateau around late afternoon
我的家庭作业:展现更多的主动性!
现在让我们来看看主动性:谁需要在这方面有所改进,并在信息方面表现出更多的主动性?嗯,我想这一段的标题可能已经给出了一个。但是,为了检验这一点,我们将查看每天的第一次互动,查看早上 7 点以后发生的任何事情(让我们考虑这样一个事实,我们很少在外面度过漫长的夜晚,因此我们排除了这些),并查看是谁发起了对话!
Distribution of our first messages of the entire period: clearly (and obviously) we usually start conversations in the morning. We do have a bunch of late ‘first messages’ most likely due to OJ’s observing Shabbat, which limits communications on Saturdays during the day.
不难看出:我有一些需要改进的地方——看起来我落后了,需要加快步伐。下一个有趣的问题是——这是如何随时间变化的?我开始时很好,后来逐渐慢下来了吗?还是仅仅因为我不是一个喜欢早起的人?
Counting and allocating first messages of the day, per month. Each day was marked with conversation initiator, and this was accumulated throughout the month, for each month.
嗯,好像是定期的!我们都有起起落落,但至少看起来我大部分都在进步,而且慢慢地平衡了。现在我们可以问一个不同的,也许有点吓人的问题:这些最初的信息实际上是什么样子的?

你可能不知道,但在我们的动态中,我是消极的——南希和 OJ 是积极的——帕特里夏,这很容易从每天的第一条信息中捕捉到:我更倾向于使用“啊”和“可怕”这样的术语,而 OJ 的词汇比任何早上反应迟钝的人所能预料的要积极得多。
我现在看起来不太好,而 OJ 在关系维护方面得分很高!我的早晨很消极,主动性也很低,但我想知道,在反应能力方面,我是不是也落后了?
互联时代
在进入这一部分之前要记住的是,我们都是千禧一代(是的,尽管我出生在 80 年代——见我在这里添加的图表),因此,我们可以高度连接,并把我们的手机作为我们身体的另一个器官。我真的很讨厌这样,并积极尝试断开连接,不把手机放在身边,但这也是另一篇文章的素材!

Generational breakdown. Are you also wondering whether Jesus, Moses and Mohammad were all part of the silent generation that apparently spans anything before 1945? [Source]
Delay distribution of both senders — vast majority of replies happen within 2 minutes from the moment they were received!
看着我们的回复时间分布,似乎我们实际上非常相似,并且非常响应(叹息)。考虑到这个分布中的每个 bin 都有大约 2 分钟的延迟,我确实有点落后,但这似乎无关紧要。值得研究的是,我们是否在一天中的特定时间反应更快——这可能比我们反应时间的总体分布更有价值!让我们看看下面(请原谅我这里缺少支线剧情,但是 plotly 确信在使用热图时不可能生成!):
More details below!
The Y-axis of these heatmaps indicates the time delay between getting a message and replying. The X-axis shows the time of day in which the message was received. The different colors in the heatmap indicate how many messages were sent throughout the year, in the specific time of day (x-axis)and within a specific delay (y-axis). For example, we can see that for messages OJ received at 10am, 156 were answered to within 0–2 minutes. Kapish?
首先,就像我们之前看到的,大部分交流发生在白天,大约下午三点左右。不出所料,我们都不是回复深夜信息最快的人,而且在回复白天信息的延迟方面,我们似乎没有太大区别:在大多数情况下,我们都相当快!这在几个月后会很有意思,希望我不会像以前那样有联系——这可能是一个有用的衡量标准。
我到底在说什么?
内容就像我们到目前为止探索的统计数据一样有趣。但这也是一个更私人的问题,所以我将保持这一部分最少:)
消极的南希还是积极的帕特丽夏?
如果你一直在仔细阅读,你可能已经注意到,传统上在这种关系中,我被认为是我们当中比较消极的。但是这真的反映在我说的和 OJ 说的上吗?
Sentiment analysis of our messages was created using nltk’s built-in VADER, which enables sentiment analysis on natural sentences (mostly social media content). I have locally edited the existing VADER lexicon to match our vocabulary more accurately and include terms in French we use very often to reflect sentiment better. More details at the end.
看起来这是一个明确的否定!事实上,当比较百分比的时候,我似乎比 OJ 更不消极!这是令人震惊的,但差异很小。另一个可能更好地反映情况的观点不是我在信息传递中的消极,而是——缺乏积极。OJ 显然更积极,有整整 28.9%的消息是以积极的语气说的,而我站在整整 5.7%的低点。但这是意料之中的。
看看这一天发生了什么(请原谅我把这个作为照片插入,这不可能作为一个像样的支线剧情插入!),似乎我们没有展示出任何明显奇怪的东西,也许除了在清晨我那端的负面内容稍微多一点(叹气)。

Comparing negative and positive messages at different times of day
有人起绰号吗?
最后,通过观察可视化所有内容(而不仅仅是第一条消息的内容)的词云,第一个结论是:我们真的不能说太多。

Both word clouds, for all of the conversations! Most of the stop words have been removed using nltk’s built in stop words, however due to different encoding, some snuck back in (e.g. ‘that’,’it’) and I have not yet removed these. In a future version and when I will have some extra time, I might get around to that 😃
没有任何单词特别突出;我们可以从中挑出一些习惯,比如英国人经常使用“先生”或“先生”,或者我们都过度使用“哈哈”、“哈哈”和“呵呵”。毕竟千禧一代。在这里,在任何一边,我们甚至检测不到任何昵称,这是我们逐步引入和取消昵称的一个强有力的指标。
不,理解内容的一个更有用的实践是在特定的上下文中分析:例如,我们的对话在旅行中是如何变化的?在消极的上下文中,我们在说什么?我们在抱怨什么?诸如此类。
底线
对我来说,这是一次有趣的旅程,回想起来,我本可以从很多其他方面来看:谁更经常使用“爱”这个词?我们能发现在我们开始约会后多久我们开始用“爱”来称呼对方吗?我们平均短信对话多长时间?还有很多很多可以问的问题。
但是看看我们所拥有的,我们能从这种做法中学到什么?
- OJ 是个健谈的人。
- GT 需要发起更多的对话。
- GT 并没有你想象的那么消极!但可能没有 OJ 积极。
- 在等待时间方面,我们是尊重的,不会让对方在等待回应的过程中晾太久。
- 安息日是放下电话的好时机。
- 数据可以成为一个有趣而有创意的周年传统!
祝我们一周年快乐,OJ 😃

Photo Credit: Matthew Henry [Burst]
为数据爱好者提供一些技术信息
正如我前面提到的,我用 Python 编写了这个项目的代码。它像熊猫一样重,而且情节几乎完全是由 plotly 完成的。和往常一样,在这个过程中我最好的伙伴是我使用的不同库的 stackoverflow 和文档页面。
既然你们有些人询问,我已经在 GitHub 上发布了代码。随意叉,克隆,玩,问任何关于它的问题。
如果你没有带标签的训练集,VADER 是一个很好的 nltk 工具,可以用来分析 Python 中的文本数据情感。它对大量的词汇使用术语评分(你可以很容易地添加进来——见下文),在查看了我导出的样本数据后——它实际上非常准确!
单词云是用 Python 的 WordCloud 库生成的,而且……相当不错。我没有经常使用这些工具,但我正在寻找一个更好的解决方案和定制工具,所以如果你有什么建议,请随时留言!
这里有一些我觉得有用的链接,你可能也会喜欢!
- plotly——Python(和其他语言)的交互式绘图库,有详细的文档页面。
- VADER — 这一页很好地介绍了幕后工作以及如何实际使用该工具。如果您想编辑词典并使用
update方法添加您自己的术语:
**from** vaderSentiment.vaderSentiment **import** SentimentIntensityAnalyzer
analyser = SentimentIntensityAnalyzer()
new_words = {
'greaaaat': 2.0,
'shiiit': -2.0
}
analyser.lexicon.update(new_words)
- 导入
from wordcloud import WordCloud后 WordCloud 就可以轻松使用了。一旦完成,你就可以构建 WC 对象,自定义颜色,删除停用词等等。我通过 DataCamp 教程了解到这一点,你可以在这里找到。
希望这是有见地的,如果你有任何问题,请提出来!
拉塞尔·维斯特布鲁克效应
连续三个赛季,他在俄克拉荷马城场均三双。虽然常规赛的数字惊人,但这并没有转化为季后赛的成功。与雷霆队的老伙伴詹姆斯·哈登重聚,威斯布鲁克在休斯顿会有什么样的影响?
奥斯卡·罗伯特森是第一个整个赛季场均三双的球员。那是在 1961-1962 赛季。在那之后,直到 2016-17 赛季,拉塞尔·维斯特布鲁克才做到了一名球员在整个赛季平均三双。不可思议的是,他连续两个赛季做到了这一点。
连续三个赛季三双,仍然有点难以理解事情会走向何方。总的来说,萨姆·普雷斯蒂(俄克拉荷马雷霆队的总经理)连续两次在选秀中成功获得了 3 个 MVP,这很令人着迷。凯文·杜兰特,拉塞尔·维斯特布鲁克,詹姆斯·哈登。虽然他们在 2012 年确实打进了 NBA 总决赛(输给了勒布朗·詹姆斯率领的迈阿密热火队),但从那以后,他们或多或少走了下坡路。接下来的那个夏天,哈登被交易到休斯顿,在那里,他在火箭队如日中天,并继续如日中天。在 2016 年西部决赛中以 3 比 1 领先后,凯文·杜兰特离开小镇,前往金州勇士队。然后是拉斯的三个三双赛季,几个赛季与保罗·乔治合作,然后…这一切都在去年夏天结束了。即使对一个相对随便的 NBA 球迷来说,讲述一个已知的故事也不重要,但值得注意的是,这就是拉斯和他的雷霆兄弟们的结局。
鲁斯交出的 2016-17 MVP 赛季成绩斐然。他是雷霆队中唯一一个真正的超级巨星,而凯文·杜兰特在休赛期刚刚离开了球队。作为参考,他的基本数据是:PPG 31.6 分,APG 10.4 分,每场 10.7 分。我知道 47 胜 35 负的战绩证明了空洞的统计数据,但当你想到他在那个赛季的使用率领先联盟的事实时,这仍然是值得注意的。

对基本数据的目测告诉我们,场均得分的下降是真实的,尤其是从场均三双的第一年到场均三双的第二年。虽然拉斯每场比赛的助攻和篮板数量都差不多,但不可否认的是得分的下降。当你意识到第二年他每场比赛实际上多打了将近两分钟时,这种情况从第一年到第二年看起来更糟。值得注意的是,在第二年,罗斯在保罗·乔治有了一个真正的超级巨星队友。
我认为我可以通过降低投篮命中率来消除整个保罗·乔治队友效应。拉斯总是被贴上运动后卫的标签,喜欢投不太好的球。然而,数字并不完全指向这一点。

在第二年,投篮命中率总体上变得更好,这是他作为队友得到控卫的第一年。三个百分点从来都不好,但问题是你真的不能因此责怪他。看看这三年的投篮次数:

拍摄尝试每一季都会减少——制作也是如此。然而,更能说明问题的是,从第一年到第三年,他平均每场比赛少出手 4 次,但在这段时间里,他只少出手 1.6 次。你不能把所有的责任都推到罗斯身上。三分球也讲述了同样的故事:

拉斯从第一年的场均 7.2 个三分球到 4.1 个,然后是 5.6 个。类似于每场比赛的投篮命中率,他在第一年投了 2.5 个三分球,第三年是 1.6 个,只少了 0.9 个。拉塞尔·维斯特布鲁克并不是一个有史以来最伟大的三分射手。不过这些数据告诉我们的是,他已经听到了,并积极努力减少他不擅长的投篮。
让我们回到 MVP 赛季。联盟中没有一个球员在那个赛季拥有联盟最高的使用率的同时拥有更高的 PER。可供参考的是:PER-30.6,Usage %-41.7,VORP-12.4,这些都是职业生涯的新高。
在我看来,关于拉塞尔·维斯特布鲁克效应的事情是,尽管保罗·乔治增加了一个真正的超级巨星,拉斯场均三双的能力并没有减弱。看一下从第 1 年到第 3 年的高级指标:

PER、使用率%和 VORP 都在逐年下降。很明显,这更多的是因为罗斯从 PG 那里得到了一些帮助。VORP 队的崩溃告诉我们同样的故事。



每年 Russ 的个人 VORP 都会下降,在他们合作的最后一年几乎与 PG 持平。
所以我的主要收获是“假新闻媒体”让罗斯成为了一个比他实际情况差得多的投篮手。在场均三双的第一年,大量出手绝对是有意义的,因为真的没有其他人可以帮助他得分。此外,很明显,在某种程度上,拉斯推迟了,他的 VORP 和使用率在过去两个赛季下降就是证明。视力测试可以证实这一点,因为保罗·乔治在赛季的第二个三分之一阶段疯狂地打 MVP。
最重要的数字?
(按照三倍平均年份的顺序)
第一年:47 胜
第二年:48 胜
第三年:49 胜
这就是为什么保罗·乔治现在在快船,而拉塞尔·维斯特布鲁克现在在火箭。
休斯顿我们有一个..?
首先——不,休斯顿没有问题。他们的战绩是 12 胜 6 负,虽然一开始对他们的缓慢开局有些过度反应,但我认为他们的合作最终会很好。詹姆斯·哈登场均 37.7 分,一如既往。从统计的角度来看,拉斯在成为球队的第一选择方面后退了一步。他似乎确实在遵从詹姆斯·哈登的意见。这个赛季他场均没有三双。但是,火箭队还是赢了。拉斯仍然是平均 22.5 PPG,但他的 VORP 是有史以来最低的 0.3
如果你问我,休斯顿的“拉塞尔·维斯特布鲁克效应”将完全取决于他在间距和投篮上的投入。很明显,詹姆斯·哈登是这个队的头号选择。只要拉斯记住这一点,我希望休斯顿能在西部季后赛中胜出。
*这是我将在本赛季晚些时候再次讨论的话题。没有足够的数据来说明休斯顿到底发生了什么
来源:
图片来源:https://clutch points . com/火箭-谣言-休斯顿-计划-错开-詹姆斯-哈登-和-拉塞尔-威斯布鲁克/
所有数据:basketball-reference.com
时间管理的科学
如何借助计算机科学优化你的时间
每个人都知道拖延的感觉。尽管名声不好,拖延实际上是一种优化的算法。当你总是先做最快的任务时,你实际上遵循了所谓的 最短处理时间 算法。这种方法是最佳的,因为它尽可能快地完成大多数任务。然而问题是拖延忽略了个体任务的重要性或优先级。

Photo credit: Aron Visuals, Unsplash
不幸的是,我们今天使用的一些技术特别鼓励拖延。以 app 徽章为例。悬浮在你手机或笔记本电脑屏幕上的小数字仅仅显示剩余任务(或信息)的数量,而不是它们的重要性。
因此,治疗拖延症的一个有希望的方法是先把注意力集中在重要的任务上,然后再处理不太重要的任务。只要高优先级任务不依赖于低优先级任务,这是可行的。如果这种依赖性确实存在,并且没有得到适当的解释,那么事情可能会变得糟糕:一个臭名昭著的例子是火星探路者,它没有从火星表面收集数据和样本,而是通过执行一系列系统重置来拖延,因为低优先级任务阻塞了高优先级任务所需的重要系统资源。
环境切换:多任务的代价
时间管理的另一个复杂因素是随机性:一旦你开始一项重要任务,其他任务可能会随机出现,你必须评估这些任务是否重要和紧急,足以中断你当前的工作。
此外,重要的是要记住,切换任务总是有成本的,这在计算机科学中是众所周知的 上下文切换 。
当处理器切换任务时,它需要将任务的当前状态复制到内存中,从内存中检索另一个任务的最新状态,找到它先前离开该进程的位置,并从那里继续。在这段时间里,处理器并没有真正做任何工作——它在做元工作。

Photo credit: Alexandre Debiève, Unsplash
正如 Brian Christian 和 Tom Griffiths 在Algorithms to living By,中指出的,我们人类显然也经历了环境转换成本。开始研究一个问题,一篇文章的一部分,一本书的一章,或者一段代码,都需要将任务的最新状态“载入”你的记忆中(“我在哪里?”)。一旦你不得不因为其他事情而中断工作,你就失去了一些注意力,从而经历了上下文切换成本。
颠簸:多任务处理出错
在极端情况下,同时处理太多不同任务的处理器可能会以 颠簸 的状态结束。这意味着处理器不断地切换任务,没有完成任何真正的工作。当你的操作系统突然死机时,系统颠簸是一个可能的原因。
对于处理器,有两种设计选择可以避免系统颠簸的风险:一种设计选择是限制处理器在任何给定任务上允许花费的最小时间。例如,在 Linux 操作系统中,默认的最小时间片是 100 毫秒(你可以在 Linux 源代码中查找)。另一个设计选择是,当处理器已经以最大能力运行时,它可以简单地拒绝接受新任务。
这件事给我们的生活带来的启示是:不要忽视语境转换成本。尽可能长时间地做重要任务的“时间片”。
在最坏的情况下,如果你不停地切换,你将无法完成任何真正的工作,就像一台电脑一样。

Photo credit: Juan Pablo Rodriguez, Unsplash
进入中断合并
最终,实时处理任务是在响应性和吞吐量之间的权衡:如果您总是立即响应,您的吞吐量将受到影响。另一方面,如果你专注于一项任务,而忽略了所有的干扰,你的反应能力将会受到影响。正如克里斯蒂安和格里菲斯所说,
“这个故事告诉我们,在不把你的反应能力降低到可接受的最低限度的情况下,你应该尽可能长时间地专注于一项任务。决定你需要有多积极——然后,如果你想把事情做好,就不要再积极了。”(布莱恩·克里斯蒂安和汤姆·格里菲斯,在《赖以生存的算法》一书中)
在响应性和吞吐量之间权衡的一个强大工具是计算机科学中所谓的 中断合并 。这个想法是这样的:当你在做一项任务时,你忽略所有的干扰,并积累(合并)它们。然后,过了一段预定的时间,你立刻处理掉所有的干扰。
以下是一些成功的中断合并示例:
- 不要在收到邮件时一个一个地支付每月的账单,而是在固定的一天一起支付。
- 不要一收到邮件就马上阅读,而是每隔几个小时(甚至一天)检查一次,然后处理所有出现的邮件。将时间段调整到您希望的响应程度。
- 不要让你的手机在收到任何信息或社交媒体事件时立即提醒你,而是静音或关闭通知,每隔几个小时左右检查一次手机。
极化你的时间
谷歌的网站可靠性工程师在他们的书网站可靠性工程:谷歌如何运行生产系统中用了整整一章来讨论如何处理工作中的中断。他们鼓励你分配时间,这意味着当你每天开始工作时,你应该知道你是在做项目工作还是被打断。让一些(轮换的)团队成员处理中断使其他人能够专注于项目工作。这也是中断合并,但不是在个人层面,而是在整个团队的层面。
与 Christian 和 Griffiths 相似,作者警告了上下文切换的成本,并建议:
为上下文切换分配一个开销。在进行一个项目时,20 分钟的中断需要两次上下文切换;实际上,这种中断会导致损失几个小时真正有成效的工作。”(戴夫·奥康纳,《网站可靠性工程:谷歌如何运行生产系统》)

Photo credit: Austin Neill, Unsplash
结论:尽量减少干扰,找到心流
从计算机科学中得到的一个重要教训是,要小心意识到上下文切换的代价:尽可能长时间地专注于一项任务。你可以使用的一个强有力的工具是中断合并:不要马上对所有的中断做出反应。
心理学家米哈里·契克森米哈在他的书《心流:最佳体验的心理学》中认为,一旦你沉浸在一项任务中,并且这项任务的挑战与你的技能水平相匹配,那么你就会进入一种他称之为 心流 体验(也被称为“进入状态”)。当处于“心流”状态时,你会失去时间感、自我感和周围环境,你会觉得自己完全融入了工作的持续过程。
心流是我们每天都要争取的东西。流是没有上下文切换的。
为什么的科学:简介
理解因果关系是如何工作的,以及如何处理它
“相关性并不意味着因果关系”。你可能以前听过这句话,现在这两者之间的区别应该很明显了,对吗?不完全是。尽管我们知道它们不是一回事,但因果关系并不那么容易定义。

If you didn’t get the joke, you should probably read this article.
此外,它也很难衡量和识别。在本文中,我们将尝试为因果关系提供一个定义,也许最重要的是,我们如何识别和测量它。
相关性和因果性的区别是什么?
当两件事通常一起发生时,我们说它们是相关的。例如,圣诞节时,北半球通常天气寒冷(南半球天气温暖)。这些事情是相互关联的,但是这是否意味着寒冷的天气导致了圣诞节(或者圣诞节导致了寒冷的天气)?嗯,这没什么意义,对吧?这是因为因果关系意味着,如果没有另一件事,一件事就不太可能发生(或者根本不会发生)。例如,下雨时,人们用雨伞。雨和雨伞是相互关联的,但也有因果关系:雨让人们拿到雨伞。如果没有下雨,人们可能不会用雨伞。
因果关系被定义为“原因和结果之间的关系”,而原因被定义为一个“引起一个动作、现象或条件的人或事”。然而,多年来,哲学家们一直在努力与这些定义达成一致,一旦统计学家开始研究相关性,他们就必须非常清楚地表明,这是一种不同的现象,他们无法解释因果关系。
我们如何确定因果关系?
从统计学上看,找到相关性或多或少是容易的:所有需要的信息都应该在数据中。然而,因果关系更棘手:它需要领域知识。我们知道寒冷的天气不会导致圣诞节的唯一原因是因为我们知道季节是如何工作的,我们知道圣诞节每年都在同一天发生,因此我们知道为什么它们是相关的,我们知道这不是因为一个导致另一个。
因此,确定因果关系超越了统计学:它需要理解支配我们正在研究的主题的潜在模型和结构。
确定因果关系的黄金标准是随机对照试验:例如,在医学中,当我们想测试一种药物是否真的如预期的那样起作用时,我们将我们的样本分成两个随机组,然后只给其中一组人服用药物。然后我们比较这个组和另一个组(对照组)的变化。无论这些变化是什么,我们都可以有把握地假设它们是由药物引起的(考虑到整个试验是精心设计的)。然而,这种方法并不总是可行的,特别是在像经济学这样的社会科学中,我们处理的是整个国家和经济。为了识别这些情况下的因果关系,我们可以利用因果图。

The simplest causal diagram there can be
左边的图像是因果图的最简单版本:它代表了 A 导致 b 的情况。使用这种复杂关系的图形表示是科学界的一项重大突破,因为它可以轻松理解复杂的相互作用。一旦理解了这种表示,我们可以看一个更现实的例子:

假设我们想知道多走路是否能延长寿命。然后,我们选取一组人,测量他们每天走多少路,然后分析他们的死亡率。这项研究实际上是在 1998 年进行的,并发表在《新英格兰医学杂志》上。他们得出的结论是,走路多的人死亡率较低。然而,这是一个我们无法推断因果关系的典型案例,我们可以通过查看上面的图表来理解为什么:将步行与死亡率联系起来的箭头代表了步行可以让你活得更长的假设,但当我们给这幅图添加一个新元素“年龄”时,我们可以看到年龄也有可能是我们所说的混杂因素:一个增加死亡率的变量,原因很明显,但也使人们走得更少。为了解释这种影响,最好的方法是按年龄控制我们的分析:只比较相同年龄范围内的人的数据。
一旦我们开始添加更多的变量,因果图会很快变得非常复杂,但这里的关键是要确保我们考虑了变量之间所有可能的相互作用,记住不要在两个变量之间放置箭头实际上是一个很强的假设,即这两个变量是独立的,所以要小心。一旦你有了一个合理的因果图,并且你已经控制了混杂因素,你将能够推断出因果关系,取决于你做出这个图的假设。
如何衡量因果关系?
只有当你有了一个有意义的因果图,并且你已经检查了它的假设,才能测量因果关系。在衡量两个变量之间的因果关系时,你会意识到你还需要知道那个关系的形状是什么。例如,如果关系(年龄->步行)是线性的,那么一个人每变老一年,她就少走一个固定的量。你在测量的同时发现了这个形状,然后你可以进行一些测试来确保你的结果是正确的。一种方法是运行回归。这里是我的一篇文章的链接,解释了线性回归的基础。
结论
正如我们已经看到的,仅仅知道相关性并不意味着因果关系是不够的:我们需要能够识别和测量它。由于科学方法的最新进展,现在我们能够正确地做到这一点,这为许多不同的领域打开了大门。
如果你想了解更多,一个很好的起点是 Judea Pearl 的《为什么》,这本书介绍了这个主题,没有涉及技术细节,但仍然以一种扎实的方式。你的因果王国之旅不必在此结束!
从数据分析师成长为数据科学家的秘方
从数据分析横向迁移到数据科学的顶级技巧

Road to Data Science (Photo by Aleksandr Barsukov on Unsplash)
毫无疑问,数据科学的热浪袭击了大多数行业,使数据科学家成为 21 世纪最性感的工作,正如《哈佛商业评论》所提到的。尽管对有经验的数据科学家的需求和胃口越来越大,但这份工作在大多数时候都被描述得含糊不清。此外,数据科学和数据分析或工程之间的界限仍然被许多招聘经理松散地定义。这种缺乏真正行业标准的情况让许多希望转行从事数据科学工作的专业人士感到困惑。与许多分析师和软件开发人员交谈后,我意识到关于人工智能和机器学习(ML)的可用信息是多么令人难以置信。我也从经验中知道,在没有任何指导的情况下,知道从哪里开始是多么困难。目前,我是 Zoopla 的一名数据科学家,我想分享一些我从个人从分析到数据科学的职业旅程中学到的经验。

Cute GIF from https://imgur.com/gallery/oJSx1YR
在坚实的数学基础上站稳脚跟
大多数 ML 算法建立在多变量微积分和线性与非线性代数之上。高技能的数据科学家能够在数学层面上改变计算机程序,从而推动模型性能的真正改善。掌握数学技能很重要,尤其是统计学和线性代数。拥有学习和理解机器学习技术的能力是成为一名数据科学家的必要条件。不管你是从心理学还是数学学位、博士学位还是在线课程中学到的,都无关紧要。
我个人拥有剑桥大学的工程学士和硕士学位。通常,STEM 学士学位已经提供了学习机器学习和数据科学技术所需的数学基础。许多有抱负的数据科学家被博士学位是从事数据科学职业的先决条件的神话所打击。目前,有许多数据科学家拥有博士学位,但这不是一个规则。例如,我的前同事 Jorge Brasil拥有应用数学硕士学位,在包括微软在内的顶级公司拥有超过 7 年的数据科学经验。
技巧 1:关注你的能力而不是你的背景。
作为一名数据科学家,你经常将困难的、开放式的、定义不清的问题分解成小步骤。这是一项你在研究生阶段接受的为期 3-6 年的技能培训。行业也可以提供这种技能,这就是为什么我个人选择在本科毕业后加入一家电子商务初创公司,成为数字分析和定价团队的第二名成员。
在教你的机器之前先教你自己
数据分析师报告、总结和解释历史和当前信息,使其对业务有用。这与数据科学家截然不同,后者的职责是以一种允许对未来做出预测或规范性决定的方式总结数据。数据科学家的核心任务是训练、测试和优化 ML 算法,因此,他们的技能主要集中在 ML 建模上。
medium 和其他平台上的许多博客帖子非常适合新手,可以指导你解决你可能想要解决的具体问题。其他有用的阅读材料如下:
- bishop——模式识别和机器学习(许多人称之为机器学习圣经)
- Hal Daumé III —机器学习课程
- 迈克尔·尼尔森 —神经网络和深度学习
理论和沉重的方程式有时会让人不知所措,不应该把某人拒之门外。对我有效的一种方法是在编码的同时阅读。例如,尝试从头构建一个单层感知器(最简单的一种神经网络),以完全理解你在书中读到的内容。

Learning combo: books, courses and code.
技巧 2:运用你所学的科学方法。
也有许多在线课程和硕士,在理论和实践上有不同的权重,涵盖了机器学习 ML 的基础。我最喜欢的选择是:
- Coursera ML 课程来自吴恩达,该领域的领导者,涵盖了一些基础知识。尝试 Python 中的作业可能比 Octave/Matlab 中的作业更好,因为如果你有更强的 Python 技能,你将在就业市场中处于更好的位置。
- Fast.ai 课程(面向程序员的机器学习入门、面向程序员的实用深度学习、面向程序员的前沿深度学习)具有启发性的教学理念和更加实用的侧重点,由 ML 名人杰瑞米·霍华德和瑞秋·托马斯博士打造。
- 斯坦福大学分享了一系列人工智能课程的材料,举几个我个人喜欢的例子: cs224n 用于视觉识别的卷积神经网络和 cs231n 具有深度学习的自然语言处理。
这里的目标既不是记忆公式和推导,也不是阅读这些书和讲座的每一页。你的目标应该是捕捉大多数模型和算法以不同方式处理的基本概念,例如神经网络中的漏层、消失梯度、信号/噪声关系。获得将问题与这些基本原理联系起来的能力将使你成为一名优秀的应用数据科学家,这是许多雇主都希望拥有的。
做科学研究
提示 3:为你的业务环境和问题选择正确的方法。
数据科学家的真正技能是知道需要什么技术和机器学习方法来回答手头的业务问题。该领域在过去十年中蓬勃发展,作为一名数据科学专业人员,需要不断渴求知识才能脱颖而出。我强烈建议阅读不同技术公司和该领域关键人物的学术论文和 ML/AI 博客。当你被要求为抽象的问题陈述提供解决方案,而这些问题陈述并没有提供直接的解决方案时,这可能会很有帮助。通过研究外面有什么找到正确的解决方案,80%的工作已经完成。安德烈·卡帕西在斯坦福课堂上说得很好 cs231n ,《不要做英雄》。在我的团队中,我们不会低估其他人在寻找目前最有效的架构方面所付出的努力和时间。我们没有为一个常见问题开发自己的架构,而是导入库,下载预先训练好的模型,并根据我们的数据对它们进行微调。商业世界期望你快速交付(和失败),因此,如果可能的话,你不应该重新发明轮子,而是站在巨人的肩膀上。

“If I have seen further it is by standing on the shoulders of Giants”, Isaac Newton (1675) (image from https://me.me/i/3487477)
提高你的编程技能
数据分析师使用数据来帮助企业做出明智的决策。他们精通 SQL、Excel 和可视化工具,如 Tableau 或 Power BI。另一方面,数据科学家需要建立强大的模型来推断和解决大规模的业务问题。因此,他们需要发展自己的编程技能。我不是从 10 岁开始就穿着连帽衫编码的,但对我来说,开始学习如何编码永远不会太晚。在大学里,我在 Matlab 中学习机器学习,并为不同的工作项目编写 JavaScript 代码,但实践 pythonic 式的方法很重要。
Python 正在成为世界上最流行的编码语言,并且拥有无数经过良好测试的数据科学库,这些库还在不断更新。不出所料,大多数数据科学团队,包括我的团队,都在寻找 Python 用户。所以如果你不知道 Python,注册一个在线课程,学习基础知识让你入门。你不应该忽视风格指南,如 PEP8 和显示耐心,因为实践会带来预期的结果。此外,学习如何使用 Jupyter 对于更快的工作流程和数据/模型探索将是关键。
技巧 4:练习练习再练习,获得更强更快的编程技能。

Because programming gives you magical powers
参加黑客马拉松、参加 kaggle 竞赛、从事个人编程项目都是提高编程技能的不同方式。识别或参与从您的分析结果中得出的数据科学机会,可以成为您在当前职位上积累经验的一种方式。预测和异常检测的算法可以是你可以要求参与的其他项目,甚至可以作为你作为分析师发展的一部分。我记得我在行业中的第一个数据科学项目是在一个电子商务网站上自动完成搜索查询的算法。这个项目是由我还是初级分析师时报道的一些关于搜索和购物篮的有趣分析见解发起的。
获得软件工程技能
当你想让你的模型看到生产之光的时候,软件工程技能就变得必要了。出于方法和法律的原因,培养一种旨在通过自动化实现项目和结果的可复制性的编码态度是至关重要的。在一个拥有成熟数据科学文化的公司中,有人可能创建原型,有人可能编写产品代码,还有人可能部署它。然而在现实中,不管公司的规模有多大,你都不太可能得到所有需要的支持,仅仅知道统计数据不足以交付数据科学项目。
提示 5:尽早将项目中的步骤自动化。
因此,最初的数据科学清单可能如下所示:
- 可重现的数据管道(例如 spark 和 python 中的数据管道):您是否曾经不得不重现您以前做过的分析?创建一个逻辑数据流(如原始(不可变数据)- >中间(进行中的工作)- >已处理(最终特征))并使用 Makefiles 将为你和你的同事节省大量时间。我和我的团队是 cookiecutter 的超级粉丝,它提供了一个像这样的逻辑项目结构。
- 训练和评分的端到端自动化:一个模型在大多数时候是一个活的有机体,需要新的预测,数据可能会发生变化。这转化为再培训、评分和提炼。然后有必要将你的模型参数、秘密和随机种子放入配置文件中,将一个 ds 项目分解成不同的元素,并应用模块化,例如创建一个可以在训练和评分过程中使用的共享特征库。
- 单元测试覆盖率:我打赌你想拥有无忧无虑的睡眠和不受打扰的假期。然后,为了确保健壮性,为你的项目编写测试是很重要的。
- 构建一个提供预测的 API:要推销你的想法和模型,你需要有一个概念证明,在很多情况下,这相当于一个 REST API。如果你除了 Python 之外懒得用别的语言,可以用 Swagger UI 自带的 Flask 和 Flasgger 。Swagger 将有助于记录和可视化 RESTful web 服务。
- 针对 ECS 部署或生产环境的数据科学解决方案的容器化 : Docker 允许您隔离项目及其依赖关系,在环境之间移动模型,并每次以完全相同的方式运行代码,实现 100%的可重复性。这将有助于您与开发人员和工程师的合作,因为他们可以将您的容器用作黑盒,而无需了解数据科学。

Some tick-off items on a data scientist’s programming list
将科学翻译成领域语言
作为一名数据人员和主题专家,您可以通过在数据中寻找代理来克服诸如丢失业务或 KPI 定义之类的障碍,或者使其成为您从 ML 中学习的潜在因素。数据科学通常会给业务带来中断,因此,您需要向高层领导推销您的想法,以便获得适当的支持和资源。有人可能会说,让业务中的所有利益相关者都能理解算法是一种艺术。学习如何翻译我所构建的东西,以便向他人展示它的重要性,是我必须不断学习和再学习的事情。正如毕马威数据科学和工程现任主管丽贝卡·波普在硅谷女性会议上强调的那样,“永远记住你(而不是你的代码)是有影响力的。人们不买算法,他们信任你和你的能力。”。因此,确保你花时间和精力将数学转化为你所在垂直行业特有的视觉叙事。
提示 6:用垂直行业的术语交流你的工作。

A data scientist explaining deep learning . (image from https://memegenerator.net/img/instances/63241330.jpg)
成长的时间到了
身处一个新成型的职业,刺激大于辛苦。Zoopla 让我有机会在一个才华横溢的数据科学团队中工作,与我可以学习的人一起工作有助于我更快地实现我的职业目标。找到一个让你成长的团队,拥有像海绵一样的头脑,会加速你的成功之旅。我很幸运,我的直线经理 Jan Teichmann 有经验来指导我成为一名高技能的数据科学家。理想情况下,你的经理了解你的日常工作以及你想要达到的目标。否则,从你的团队或公司之外寻找你可能需要的额外指导,例如从你大学的校友或教授那里,或者从你网络中友好的数据科学家那里。会面和会议也能鼓舞人心,帮助你完成这项任务。
提示 7:记住没有任何教科书或课程比辅导更重要。

Customised meme (Read it with Don Corleone’s voice)
总而言之,在数据科学领域开始职业生涯时,你应该重点掌握的技能是统计学,多变量微积分和线性代数,机器学习,编程技能,软件工程和可视化技能。

Data Science Venn Diagram by Steven Geringer Raleigh, NC.
实现目标的最佳技巧:
- 关注你的能力,而不是你的背景
- 运用你所学的科学方法。
- 针对您的业务环境和问题选择正确的方法。
- 练习,练习,练习更强更快的编程技能。
- 尽早将项目中的步骤自动化。
- 用你所在垂直行业的术语来表达你的工作。
- 请记住,没有任何教科书或课程比辅导更重要。
你还在等什么?珍惜机会,努力成为你梦想中的人。;)
欢迎分享数据科学爱好,并在 LinkedIn 上与我联系。特别感谢 Jan Teichmann 的反馈和支持!
了解不可知事物的秘密:预测分析

有两个分析分支(即我的教育工作者朋友的统计学)被广泛用于描述我们可以总结大量数据的方法。第一种方式简单描述数据。我们称之为描述性分析。描述性分析有一个奇妙的用途。它帮助我们将数据总结成可读的块,这样我们就可以了解在一大堆杂乱的数据中发生了什么。有了描述性统计,我们可以开始做决定,因为我们可以分析我们所知道的。
但是,当我们想知道一些我们还没有看到的东西(或者因为收集数据不可能或者成本太高而不能直接询问)时,会发生什么呢?)像……这样的问题
- 明年我的产品销量会比今年高吗?
- 我的客户明天会购买什么样的产品?
- 应对品牌危机的最佳方式是什么?
- 明年我应该在广告上花多少钱?
第二种形式的分析更有趣,在我看来也更有用。这叫做预测分析。以下是我对预测分析的看法:
预测分析是利用我们现有的数据建立一个模型,让我们预测尚不存在的数据。——考特尼·佩里戈
根据定义,我们从已知的东西(我们收集的数据)中推断未知的东西(我们的预测)。)使用预测分析的原因是获取某些信息的成本太高。要么是这个问题无法问,要么是我们需要太长时间才能获得这些信息。
通过预测分析,我可以做出更好的决策,因为我有一个模型可以帮助我了解一些我以前不知道的事情。
明确地说,预测分析不能降低所有风险。不可能知道会发生什么。预测分析的目标是了解可能发生的事情以及分析中的所有警告。
让我们来谈谈两种类型的预测分析。
1.)外推—时间序列预测
这个版本的预测分析相对简单。大多数决策者都熟悉它以及如何使用它。在时间序列预测中,我想知道根据过去的趋势,未来可能会发生什么。
这条趋势线是典型的时间序列模型,总结了数据的过去轨迹。神奇的事情发生了,当你把模型总结出来,用它来推断不存在数据的未来时间。
在外推的情况下,我们没有数据的原因是它还不存在!据我所知,我们无法衡量未来的事件(至少现在还不能)。)知道未来是科幻和幻想的领域——看你布兰·史塔克(权力的游戏。)

2.)非时间预测分析
如果你是我博客的关注者,那么你已经知道一个非时间预测分析的例子——我使用了一个新闻偏好模型来预测我当天想要阅读的数据科学文章。
在这里阅读更多: MachinaNova —新闻记录引擎
在 MachinaNova 的例子中,我是在个性化我的日常新闻体验。在这个应用程序中,我收集了关于我对数据科学文章的偏好的数据。基于这种过去的偏好,我建立了一个自然语言模型,根据新文章的内容(单词、主题等)预测会吸引我的新文章。)听起来很酷吧?你可以在上面链接的我的博客中读到更多关于这是如何实现的。
非时间预测分析的想法是模型是不相关的。我们可以用许多不同的方法来建立一个模型。主要的想法是确保你有办法理解它的准确性。在 MachinaNova 的案例中,我们通过分割我们的训练数据集并使用其中的一些数据来预测模型尚未看到的数据,从而了解了模型的准确性。因为我们了解了实际的文章偏好,所以我们可以比较模型的输出和实际结果,以了解模型有多好。
这非常重要。任何人都可以根据他们认为自己对世界的了解对任何事情进行建模。成功的预测模型是那些在模型未被训练的情况下仍能保持准确的模型。一个脱离了训练数据集的模型是完全无用的,或者更糟糕的是,它会给出不准确的预测。
在非时间预测分析的情况下,我们不知道一些事情的原因是数据真的很难或不可能问。你能想象如果亚马逊在你每次访问他们的网站时都要问你喜欢什么产品吗?非时序预测分析助您一臂之力!
结论性想法:
在这篇文章中,我们探索了预测分析——使用我们必须的数据来了解未来可能发生的事情。我们也知道它与描述性分析有什么不同,描述性分析是使用数据来总结过去发生的事情。
拥有预测模型的主要优势在于,我们可以将模型外推至不存在数据的区域,并做出预测。这非常有用,因为了解过去、现在和未来的一切是不可能的。至少在现实世界中是这样。
成功的人工智能创业公司的秘密。AI 到底是谁在赚钱?第二部分
从硅谷到伦敦,再到上海,人工智能初创公司层出不穷。但是随着淘金热的到来,少数被选中的人会找到金子,而其他许多人会失望而归。要取得成功,人工智能初创公司需要跨越从技术到企业的商业鸿沟。在拥抱负责任的人工智能实践的同时,学会不要走得太快,不要弄坏东西。
欢迎来到全球人工智能创业淘金热
A I 处于全力淘金模式。每天我们都会听到人工智能公司筹集大量资本的头条新闻,以便为他们提供勘探人工智能金矿的资源。资金正流向这些新领域。在美国,人工智能的风险投资资金同比增长 72%, 2018 年达到 93 亿美元。

Which AI startups will strike gold?
总部位于纽约的人工智能和机器学习公司 Dataminr ,实时了解新闻和信息,例如,在 2018 年筹集了3.92 亿美元。硅谷人工智能驱动的计算机安全和管理公司 CrowdStrike 、 Team Tanium 、 Cylance,Inc. 去年各自融资超过 1 亿美元。并且 Pony.ai 筹集了 1.02 亿美元来开发其最新的自动驾驶系统。
但是西部蛮荒的边疆也在东部开放了。即中国。专注于创新的计算机视觉和深度学习的 SenseTime 在 2018 年筹集了两笔 6 亿美元的资金。它现在声称是世界上最有价值的人工智能初创公司。自称为人工智能和人形机器人公司的 UBTECH 在 2018 年筹集了 8.2 亿美元。面部识别领域的领军企业 Face ++ T5 已经融资逾 6 亿美元,目前正寻求融资 5 亿美元。iFlytek ,一家声称拥有中国语音识别市场 70%份额的公司,正在寻求融资 5 . 65 亿美元。这些确实是很大的数字,我们可以期待更多的数字出现。
在欧洲,有一些人工智能的明星,如法国人工智能工具公司 Dataiku,帮助企业将人工智能从实验转移到生产。他们在 2018 年筹集了超过 1 亿美元,但为这一增长提供资金的主要是美国风险投资公司,如纽约的 FirstMark 。
仅在伦敦,最近的伦敦人工智能市长报告就确定了超过 650 家本地人工智能公司,是柏林和巴黎总和的两倍。这些公司中有许多是年轻的初创公司,特别集中在有需求的保险、金融和法律部门。资金已经涌入这些生机勃勃的年轻公司,但在这个阶段,资金往往是数百万或数千万,而美国和中国的资金是数亿。
小心傻瓜的黄金
但就像任何淘金热一样,有许多勘探者在夸大其词。走进任何公司推介活动或 AI meetup——现代前沿沙龙——你可以发现创业公司的创始人大声疾呼,他们的风险是如何由最新的深度学习进展推动的。但是如果你在白天的寒光下挖掘地下,似乎有很多傻瓜的金子。正如伦敦 MMC Ventures 在最近的一份人工智能报告中指出的,在欧洲的 2830 家所谓的人工智能初创公司中,超过 40%没有真正使用人工智能。
甚至有声称人工智能技术巨头,如微软和谷歌,并不总是过于倾向于依赖人类来驱动他们的“人工智能解决方案”。澳大利亚公司阿彭从事验证搜索结果的全球业务,拥有超过 1,000,000 名灵活员工的全球团队。这是一支名副其实的人工检查搜索结果的大军。我们不会假设这些鼓吹一切自动化的全球人工智能领导者。随着兰斯伽:
“科技公司受益于这样一种看法,即它们已经建立了复杂的自动化和人工智能,而不是一个依赖人工劳动的系统。”
我们认为人工智能初创公司要么(1)如果没有深度神经网络等人工智能现代技术就不会存在——这是它们存在的核心要么(2)提供人工智能基础设施和工具,如人工智能专家硬件、人工智能应用的云服务或加速人工智能解决方案实施的工具。
人工智能价值链——人工智能初创公司在哪里?
人工智能的比赛场地广阔而漫长,由人工智能的创造者(即创造人工智能技术的人)和接受者(即利用人工智能技术并获取价值的人)组成。在这个系列的第一部分中,我介绍了一个七层价值链,为谁将在人工智能中赚钱。

The AI value chain — who will make money with AI? The companies noted are representative of larger players in each category but in no way is this list intended to be comprehensive or predictive. © Best Practice AI Ltd
有(1)人工智能芯片和硬件制造商正在寻求为所有人工智能应用提供动力,这些应用将被编织到全球大大小小的组织结构中;(2)将托管 AI 应用的云 平台和基础设施提供商;(3)AI算法和认知服务构建 区块制造者,他们提供视觉识别、语音和深度机器学习预测模型,为 AI 应用提供动力;(4) 企业 解决方案软件用于客户、人力资源、资产管理和规划应用的提供商;(5) 行业 垂直 解决方案寻求使用人工智能为医疗保健和金融等行业的公司提供支持的提供商;(6) 寻求增加收入、提高效率和深化洞察力的人工智能的企业用户;最后(7) 民族国家希望将人工智能嵌入其国家战略,成为人工智能国家。
这次淘金热的镐和铲都是科技巨头
虽然人工智能初创公司正在寻求提供新的芯片、云服务和算法,但人工智能价值链的这一领域由谷歌、微软和亚马逊等技术巨头主导。他们成了这次淘金热的镐和铲。无论人工智能公司在挖什么金子,巨头们都希望确保他们用自己的人工智能硬件、云和算法解决方案为该组织提供动力。
设计、制造和分销硬件芯片需要大量资金,因此只有少数初创公司有发展空间。总部位于英国的graph core已经筹集了超过 1.1 亿美元来构建为机器学习而优化的芯片。但随着谷歌、脸书和微软等公司推出自己的人工智能优化芯片,它们正在一个竞争激烈的空间中竞争。例如谷歌云已经引入了它的云张量处理单元来驱动他们的云服务。IBM Research 和英特尔等芯片巨头并没有止步不前,他们希望提供自己的人工智能优化芯片。中国人工智能芯片制造商寒武纪正在为数亿部来自中国华为的手机提供动力。
类似地,科技巨头们也在看他们的云服务中哪一个可以运行将随处可见的数百万人工智能应用程序。会是 AWS 创业公司、谷歌云、微软 Azure 甚至中国的阿里巴巴吗?这场战斗非常激烈,因为预计到 2020 年,整个云市场的价值将达到 4000 亿美元。云市场之战将越来越多地围绕人工智能云展开。
然后,科技巨头们正在努力确保他们提供最好的底层人工智能算法和认知服务来支持将被构建的数百万人工智能应用。提供基于云的人工智能产品的公司将更容易获得这些构建模块。计算机程序员今天可以通过应用程序接口(API)编写几行代码来插入真正强大的人工智能服务。谷歌,亚马逊,微软, IBM 都在云中提供机器学习和认知** 服务。这种新类别的人工智能即服务(AIaaS)将为大量的对话代理和聊天机器人、语音、自然语言处理(NLP)和语义、视觉和增强的核心算法程序提供动力。算法领域竞争激烈,但有些初创公司似乎正在寻找空间,通过专注于非常深入的领域和技术特定的解决方案来开拓自己的空间。提供情感识别软件服务的初创公司 Affectiva 已经筹集了超过 5000 万美元。Clarifai 是一家为企业提供高级图像识别系统以检测近似重复和视觉搜索的初创公司,在过去三年里已经筹集了近 4000 万美元。视觉相关算法和服务的市场预计在 2016 年至 2025 年间的累计收入为 80 亿美元。**
跨企业和行业的人工智能
****企业软件一直被 Salesforce 、IBM、Oracle、SAP 等巨头把持。他们为金融和制造等部门提供人力资源软件(HRS)、客户关系管理( CRM )软件和企业资源规划( ERP )应用程序。但许多初创公司正急于提供下一代企业服务,填补现有企业目前未涉足的空白。一些初创公司甚至试图颠覆现有企业,认为现有的企业解决方案对于未来的企业来说过于昂贵、笨重和复杂。今天,有超过 200 家人工智能公司正在招聘,其中许多是人工智能初创公司。网络安全领导者 DarkTrace 和 RPA 领导者 UiPath 拥有数亿美元的战争资金。但现任者希望确保他们的生态系统处于前沿,并投资于初创公司,以增强他们的产品。Salesforce 投资了客户管理解决方案 DigitalGenius,并投资了提供企业翻译服务的 Unbabel。Salesforce 最近以 8 亿美元收购了Datorama,这是一家成立于 2012 年的人工智能营销公司。 SAP 最近收购了 Recast。AI 为对话代理技术加速其自然语言处理能力。
还有工具创业公司已经筹集了大量资金。 Petuum,Inc. 工具提供商总部位于美国匹兹堡,自 2016 年成立以来已融资超过 1 亿美元。它们有助于加速和优化机器学习模型的部署。
然后人工智能创业公司正在为特定行业创建解决方案。BenevolentAI 已经筹集了超过 2 亿美元来帮助其 moonshot 通过先进的数据分析加速药物的研发。纵观医疗保健、金融、农业、汽车、法律、工业,初创公司正在筹集大量资金来解决行业问题。
那么,什么是成功的人工智能创业公司?
那么是什么让这些 AI 创业公司成功呢?是什么让这些公司获得了发展势头并筹集了如此大量的资金?很明显,许多人工智能初创公司正在为企业提供有价值的点解决方案,并取得了成功,因为他们可以获得(1)大型和专有的数据训练集,(2)领域知识,这使他们对某个行业内的机会有深刻的见解,以及(3)围绕应用人工智能的人才库。
- 获取数据— 大多数人工智能初创公司都在建立某种形式的机器学习模型,可以根据一些输入数据对结果进行分类或预测。在很大程度上,这些模型需要数据作为它们的“燃料”,而且数据越多越好。对于监督学习来说,通过向机器展示不同对象的例子,如狗和猫的图片,来教会机器进行分类或预测,标记数据至关重要。这就是为什么你会看到公司合作收集数据。谷歌的 deep mind——21 世纪的贝尔实验室——与 10 家英国国民健康服务医院签订了一份为期五年的协议,处理 160 万患者的医疗数据。Tractable 是一家分析和预测车祸维修成本的人工智能公司,它已经获得了 1 . 3 亿多张受损汽车的图片。这些图像已经被注释以识别哪个车辆部件被特别损坏。这些被标记的数据是深度神经网络学习的“燃料”。整个研发学院都在努力减少做出准确决策所需的数据量,但在大多数情况下,初创公司获得的数据越多、质量越高越好。尽管更多的数据并不总是带来线性回报。领先的思想家和投资者李开复认为,中国在人工智能领域表现如此出色的一个关键原因是,他们的数据集比其他任何地方都大得多。他指出,中国的手机用户数量是美国的三倍。而移动互联网支付是它的五十倍。
- 获得人工智能人才— 获得最优秀的人工智能研究人员和工程师是一项挑战,尤其是在一个英国谷歌 DeepMind 工程师的平均年薪超过 28 万英镑或 36.3 万美元的时代。许多人工智能初创公司都是从大学中分离出来的,创始人一直在人工智能的不同领域进行研究。英国 Poly.ai 最近筹集了 1200 万美元用于在联络中心部署对话式人工智能代理,里面挤满了剑桥大学的人工智能博士。一个人才会吸引其他人才。
- 获取领域专业知识— 通常情况下,能够创造突破性创新的洞察力来自于拥有一个多学科团队,这个团队能够发现并识别没有人能够单独发现的机会。例如,与保险流程专家合作的机器学习专家通常可以看到如何利用这种新的使能技术更好地解决问题。
AI 主要是企业使能技术(就像 80 年代的 SQL 数据库)
成功的人工智能创业公司已经真正理解了人工智能技术的本质以及它是如何被购买和消费的。人工智能是一种使能技术——一套工具、技术和方法,可以用来解决无数的用例。20 世纪 80 年代,SQL 数据库的引入允许以表格格式存储和查询结构化数据。这使得数以百万计的应用程序给企业资源规划和客户关系管理带来了数十亿美元的产业。类似地,人工智能将支持大量的用例。例如,视觉算法正被用于几乎每个行业,从发现制造缺陷到识别商店扒手,再到帮助自动驾驶汽车在街上导航。自然语言处理可以在任何地方使用,从审查社交媒体中的客户情绪到审查合同完整性的法律文件,从筛选简历和履历到识别金融交易的潜在机会。语音转文本技术正被用于医学转录算法。
由于人工智能是一个使能器,许多人工智能初创公司将帮助企业和组织解决问题。这意味着人工智能初创公司通常会专注于 B2B 和企业。在最佳人工智能实践,我们确定了超过 600 个人工智能常见商业用例,以及超过 1000 个人工智能如何在企业中使用的案例研究。人工智能几乎有无限多的方式可以组合和设计来解决业务需求。

Best Practice AI identified over 600 use cases of AI technologies applied across production, front-office, R&D and back-office functions. The darker the shade the more use cases we identified. © Best Practice AI
我们超过 3000 家全球人工智能初创公司的目录表明,大多数公司都在试图进入企业。

Gartner predicts enterprise AI derived value will grow from US$1.2T in 2018 to nearly $4T in 2022.
如此多的活动集中在企业上也就不足为奇了。分析公司 Gartner 最近预测,到 2022 年,企业将从所有人工智能用例中获得惊人的3.9 万亿,是的,万亿的价值。难怪大多数人工智能初创公司都专注于为企业提供解决方案,无论是跨所有行业的横向解决方案,如人工智能驱动的人力资源,还是为特定行业量身定制的人工智能解决方案。
跨越 AI 商业鸿沟到企业
那些做得很好的创业公司一般都了解人工智能技术的本质和企业中的机会。但不仅如此,开始形成规模的人工智能初创公司都跨越了从技术世界到企业的商业鸿沟。他们已经学会了:
1。不要动作太快,弄坏东西;拥抱负责任的 AI
这种由硅谷推广的文化在 B2C 世界中运行得很好,在这个世界中,应用程序中一个错误的后果相对有限。全球的软件开发人员已经接受了精益创业和敏捷方法。但这意味着实时应用程序经常会有错误和中断。这在企业中并不太适用。
在金融服务、农业或制药等高度监管的企业中尤其如此。技术正在推动越来越多的监管。欧洲在 2018 年引入了 GDPR 法规,该法规为个人提供了公司使用其个人数据的权利。滥用消费者个人数据将被处以高额罚款,最高可达公司收入的 2%。在金融行业,当你处理真实的金融数据和金融交易时,“哎呀,我想这个应用程序不起作用了”这样的回答是行不通的。一家严重依赖人工智能的新英国挑战者银行发现自己因涉嫌合规失误而陷入监管机构的困境。在一个自动决策的后果可以改变生活的世界里,例如自动车辆碰撞或关键的医疗保健诊断,你最好确保你对你的自动决策的可靠性和准确性有信心。
企业越来越多地实施董事会治理和监督,以管理因使用人工智能而给公司带来的声誉风险。例如,如果用于训练人工智能算法的数据集存在样本偏差,那么如果它们被视为具有歧视性,那么一家公司的品牌就会受损。我们都看到了最近的头条显示算法在识别白人男性的性别方面比其他种族要好得多。或者最近来自亚马逊的案例,他们放弃了他们的招聘推荐系统,因为机器学习只是反映了历史上招聘主要是男性、白人和年轻人的事实。
越来越多的初创公司将需要为企业提供某种程度的保证,以防范其人工智能产品的风险。你的 AI 启动技术是否为具有法律效力的全自动决策提供了可解释性?例如,如果你的技术可以用于自动化招聘决策,那么你就需要解释这些算法在 GDPR 下是如何工作的。你需要证明该算法不会基于受保护的类别(如性别、年龄、社会人口统计数据或健康挑战)对人们产生偏见(请随意看看我们关于可解释人工智能主题的介绍性读物)。英国的信息专员办公室最近发布了一份讨论文件,确定了企业可能需要管理的八个人工智能特定风险领域,包括(a)特别关注偏见和歧视的分析的公平性和透明度,(b)人工智能模型的准确性,(c)自动决策的水平,无论是全自动还是人工参与,(d)安全和网络风险,以及(e)准确性与隐私和可解释性之间的权衡。
初创公司和企业将需要真正精通这个话题,这个话题越来越多地被称为负责任的人工智能实践。作为一家初创公司,不要走得太快,打破太多东西。这会给你带来很多麻烦。并确保你接受并展示了负责任的人工智能实践(这个话题我将在后面详述)。
2。解决真正高价值的用例,而不是最好拥有的用例
在过去的几年里,我们已经看到了消费者移动应用的浪潮,它解决了任何可以想象的消费者需求。通过在谷歌和脸书上投放广告,应用程序可以在几周内构建、发布并获得消费者流量。但是这种方法在企业中行不通。这是一种零和游戏,首席信息官(CIO)和其他执行领导没有兴趣接受另一种技术解决方案。我们都知道,在尝试使用人力资源、财务、销售或营销部门的最新应用程序时会遇到工作挫折。我们努力记住我们的密码。新的应用程序都不一样。然后,我们经常记不起将该文件存储在了什么位置,是项目文件夹还是个人云文件夹。技术领导者在试图将更多技术集成到他们现有的、经常磨损的遗留数据库和技术平台中时遇到了挫折。
为了引起首席信息官和部门负责人的注意,比如首席营销官(CMO),你的解决方案最好是解决一个真正重要的问题。它应该解决的问题类型应该是,经理睡觉时会担心这个问题,而他们的奖金计划显然与此相关。有产者好不在企业工作。我最近与一家人工智能初创公司的 CTO 聊天,他花了两年时间构建一个人工智能产品套件来推动企业智能,但销售却没有出现。为什么?价值还不够高。
一个真正高价值使用的例子来自 HireVue 。他们与联合利华合作,节省了超过 50,000 个小时的候选人面试时间,每年节省超过 100 万英镑,并通过基于视频的面试的机器分析提高了候选人的多样性。那是一大笔钱。英国初创公司 Reinfer 最近完成了一项与一家大型国际银行的试点项目,该公司使用先进的 NLP 算法来筛选数十亿封电子邮件和信息,以确定人们在交流什么。它通过使用机器学习分析邮箱,确定了交易后运营中的主要问题,有可能节省数百万美元的运营成本。这些是真正高价值的用例。
3。掌握 B2B 企业销售并学会计算耐心
创业公司需要确保他们掌握企业销售。这些技能对人工智能供应商来说非常珍贵,因为掌握咨询** 销售需要时间和实践经验。我职业生涯早期参加的最有价值的培训课程是旋转销售方法——S(状态)、P(问题)、I(完成)、N(速度)。销售需要时间来确定利益相关者,与这些利益相关者会面,评估当前业务情况,提问以确定关键问题,评估这些问题在多个部门的影响,就影响和需求达成共识。即使这样,也不能保证你对这种需求的解决方案会得到预算的优先考虑。**
一个典型的公司经理有一个从现在到未来的待办事项清单。对于一家初创公司来说,解决高价值用例需求至关重要,所以不要仅仅将你的公司建立在“产品直觉”的基础上
当销售周期可以持续 12-18 个月时,耐心是非常珍贵的。很多 AI 创业公司资金告罄,或者把宝贵的资源分配给没有资格的销售机会。如果你认为机会最终不会有任何结果,那么确保你能迅速发现它们。 Re:infer 发现销售周期真的真的很长,但他们坚持不懈地确定一个真正高价值的使用案例,找到一个内部冠军,并完成一个成功的销售试点。他们还发现,企业准备在整个组织中推出人工智能确实会减缓销售过程。
4。为现实世界翻译人工智能
初创公司需要能够用商业受众容易理解的语言解释他们独特的算法、技术、产品或解决方案的价值,这一点至关重要。他们需要会说两种语言。随着许多人工智能初创公司由年轻、邪恶、聪明和高度技术化的头脑创建,与“西装革履者”之间往往存在沟通差距。在解释这项尖端技术的细节时,我们看到高管们的目光一直呆滞。如果很少提供这种技术如何通过影响收入、效率和客户服务来推动业务发展的背景,高管会很快失去耐心。初创公司要会说技术和商业语言,这一点至关重要。他们需要在技术语言和商业语言之间进行翻译。
5。降低试验壁垒(试点)
重要的是,初创公司要让试点项目变得非常简单。人工智能解决方案通常需要大量数据和大量时间来训练机器学习模型。人工智能通常需要大量的工程集成到后端技术中才能很好地工作。可能需要几个月的时间来获取、清理和整理数据,然后再用几个月的时间来训练模型。在非常繁忙的企业中,几乎没有兴趣做大量繁重的工作来设置试点。公司希望快速验证概念。DigitalGenius 在这方面做得很好。他们的客户服务技术工作在现有的企业平台之上,如 Salesforce ,他们已经将训练技术回答客户查询所需的时间减到最少。他们还使集成到现有的工作流程中变得非常简单,提供了人在回路上的决策。荷兰航空公司KLM 声称,通过使用 DigitalGenius 实现机器学习聊天机器人,可以回应超过 50%的客户在社交媒体上的查询。
****6。技术型创始人需要雇佣业务人员。
初创公司需要确保他们有技能跨越从技术人员到企业的商业鸿沟。《哈佛商业评论》最近报道说,最有可能成功的创业公司拥有技术型创始人,他们很快就雇佣了商务人员。“为什么技术技能似乎对创始人更重要,有一种理论认为,普通的技术型创始人比普通的商业培训型创始人拥有更好的商业技能。”但将创始人的 DNA 与商业人士融合在一起,往往需要炼金术。我已经记不清有多少次看到初创公司努力适应这种文化。最常见的是技术创始人会雇佣销售“农民”而不是销售“猎人”农民不知道如何出去寻找创业所需的业务。他们已经习惯了庞大的营销部门给他们带来源源不断的销售线索。
寻找耐心和聪明的资本
例如,与移动应用程序的快速原型开发相比,构建企业人工智能技术和产品通常需要更长的产品** 开发 生命周期 - 周期。产品上市可能需要一年多的时间。确保投资者了解时间表和投资概况至关重要。确保初创公司不会陷入种子期和首轮融资之间的资金缺口是至关重要的。在与一位最近的英国投资者交谈时,他们表示:**
他们鼓励他们资助的公司投入更多资金,以确保他们拥有产品开发和销售的跑道。
以及在筹集资金时成为双语玩家的需要。如今,许多投资者没有接受过科学方面的培训,对评估深度技术有一定程度的不适。除非一家初创公司能够用他们的商业市场机会、用例、价值主张、上市和经济语言说服投资者,否则他们将很难筹集到资金。
我经常看到这种语言问题在资金筹集后发生。许多创业公司都是大学研究人员的副产品。创业研究团队将夜以继日地工作,以获得一个原型。对其他学者来说,这种原型简直令人震惊。但当投资者或商业专业人士看到演示时,空气很快就被吸走了。他们不明白。然后他们尝试演示,它很快就坏了。没有对研究和技术的合理理解,开发里程碑的意义可能不会被理解。总而言之,人工智能初创公司的早期进展很难被衡量和认可。这通常意味着,如果没有对主题的必要了解,进一步的融资可能很难获得。
圣杯。企业号飞轮
AI 一般是规模的游戏。数据越多、质量越高,人工智能算法就越好,从而带来更深刻的见解、更高的生产力、更好的产品和服务以及更好的客户服务。这可以带来更多的企业客户,从而收集更多的数据,进而获得更深入的见解,等等。这会带来更多的客户和更多的融资。飞轮效应和防御能力创造的可能性确实存在。成功的人工智能初创公司已经认识到这一点,并能够推动加速器,在竞争中越来越领先。****
人工智能确实是大型人工智能初创公司将变得更大的一个例子。规模很重要。
那么这一切意味着什么呢?
这场人工智能淘金热的大多数赢家可能会青睐那些有规模的企业。科技巨头,如谷歌、微软或阿里巴巴都在飞速前进。他们可以雇佣最优秀的研究和工程人才,可以访问从他们的数十亿月度用户中构建的最大数据集,创造出最好的产品,并拥有令人难以置信的雄厚财力。拥有最多数据和机会利用人工智能的国家表明,领导力将来自中国和美国。
创业公司要想在这个竞争激烈的市场中蓬勃发展,就需要得到拥有一整套知识产权专利和已发表论文的领先研究人员的支持,拥有深厚的领域专业知识,并能够获得理想的独特和高质量的数据集。但最重要的是,人工智能初创公司需要跨越商业鸿沟,从技术世界进入企业。成功的创业公司知道他们需要:
- 不要动作太快,弄坏东西;拥抱负责任的人工智能
- 解决真正高价值的用例
- 掌握企业销售,学会计算耐心
- 为现实世界翻译人工智能
- 降低审判门槛
- 快速雇佣商务人士
他们还需要确保能够筹集到聪明而耐心的资本。

许多初创公司不会找到黄金,但那些能够扩大规模的公司会发现自己是全球性企业,或者很快被重量级公司收购。
即使一家初创公司没有找到商业化的道路,如果他们与一个强大的研究导向型团队一起致力于实现人工智能算法,那么他们也可能成为收购者(因其人才而被收购的公司)。去年,当我们的客户bloomsburay 被脸书收购时,我们看到了这一点。
撰写 作者 西蒙·格林曼
我热爱技术以及如何将技术应用于商业领域。我共同创立了自己的咨询公司最佳实践人工智能,帮助高管通过人工智能创造竞争优势。请联系讨论此事。请发表您的评论,或者您可以直接给我发电子邮件或在 LinkedIn 或 twitter 上找到我,或者在 Simon Greenman 上关注我。
成功人工智能战略的秘密
人工智能项目管理
虽然人们对创建商业战略已经有了很多了解,但创建人工智能战略却是一个新领域。你如何创造你的人工智能战略?
一个人工智能拥有跨越行业和部门的巨大前景。世界上最重要的人工智能传播者吴恩达,在他的人工智能转型剧本中,将创造人工智能战略列为关键要素。随着人工智能开始改变每个行业,你如何创建一个明智的战略来利用它的力量?人工智能战略到底是由什么构成的?为创业公司和公司创建人工智能战略有什么不同?

Photo by JESHOOTS.COM on Unsplash
为人工智能战略建模不同于创建传统的商业战略。这篇文章旨在通过创建一个有针对性的人工智能策略的过程来指导从业者。这些见解是基于我的个人经历和对来自大众、谷歌、人工智能基金等公司的全球人工智能领导者的专家采访。在文章结束时,你将知道人工智能战略如何与商业战略相关,人工智能战略的核心组成部分,以及如何区分好的和坏的人工智能战略。
我们开始计划吧。🤔
商业战略和人工智能战略
人工智能战略的存在是为了支持商业战略。商业战略为你的公司定义了前进的道路。哪些计划将提供最高的商业价值?哪些特征将公司与竞争对手区分开来?业务战略通过可衡量的目标来表达,例如,以关键绩效指标(KPI)或目标和关键结果( OKRs )的形式。这些方法跟踪实现业务目标的过程。

AI Strategy supports the business in achieving its KPIs.
德中人工智能协会副主席 Raphael Kohler 表示,很好地理解人工智能战略的目标至关重要。他强调,讨论不能以技术为中心,而必须由商业价值驱动。
就商业战略而言,人工智能战略没有放之四海而皆准的标准。— 张秀坤·海茨
业务部门联合起来实现这些 KPI。人工智能战略的工作是提供一条影响这些业务 KPI 的道路。
人工智能的机遇与挑战
平衡人工智能的能力和局限性是理解人工智能如何支持你的商业战略的关键。
如果没有你的努力,你不能指望让巫师们在你的生意上洒上机器学习的魔法来得到任何有用的东西。卡西·科济尔科夫
一般来说,AI 可以做好三件事:自动化流程,创造新产品,或者改进现有产品。自动化流程的一个例子是机器人流程自动化,它将员工从繁琐、重复的任务中解放出来。人工智能还可以帮助公司产生全新的产品,例如智能家庭扬声器由人工智能驱动。最后,人工智能还可以改进现有的产品。如今的信贷决策大多由人工智能支持。这个模型处理的信息比人类更多,因此降低了消费者的总体信贷成本。

然而,人工智能正在努力完成复杂的任务。这些任务可能包括上下文理解或其他任何需要一个人做不止1 秒的事情。人工智能非常擅长执行狭窄定义的任务,在不确定的环境中表现不佳。
在规划你的人工智能工作之前,理解人工智能的范围和边界是最重要的。
既然你已经理解了人工智能战略与商业战略的关系,以及存在哪些机遇和挑战,那么你如何着手创造一个呢?
人工智能战略的核心组成部分
正如每个公司都被电所感动一样,每个公司都将被人工智能的力量所感动。虽然没有一个人工智能策略看起来是一样的,但所有的人工智能策略都需要回答类似的问题。任何人工智能战略的核心组成部分都涉及其数据、基础设施、算法的神圣三位一体,周围是技能和组织的支柱。让我们深入了解每个组件。

数据
没有数据,就不可能有 AI。数据涉及所有与改善您的业务相关的信息。它可以是任何东西,从自动驾驶汽车的传感器数据到商业决策的金融数据。创建数据策略是任何人工智能策略的重要组成部分。吴恩达建议触及以下几点:
- 你可以战略性地获取哪些数据?
- 您收集所有数据还是选定的数据?
人工智能基金的人工智能投资者 Jason Risch 强调了获取战略数据的正确时机的重要性。淹没在数据中不再是一种选择。Jason 见证了“ **select *** ”数据策略在创业公司和企业中都失败了。在建立可行的产品之前专注于创建模型的创业公司浪费了宝贵的资源。类似地,那些因为数据过多而收购初创公司的公司往往没有发现其中的价值。这是医疗保健行业常见的谬误,公司希望算法能在随机数据中找到模式。关键是收集正确的数据。
在过去十年中,数据一直是公司提升的主要来源。数据驱动的决策是成功的关键,因此您需要定义一个强大的数据策略。— 塔利·辛格
创建数据策略后,接下来是考虑基础架构的时候了。
基础设施
人工智能战略的第二个核心组成部分是基础设施。基础设施涉及使数据可访问,并提供处理数据所需的计算能力。AI 模型渴望计算能力,你的 AI 团队需要开发和部署模型的基础设施。理想情况下,这种基础设施会根据您公司的需求进行调整。
统一的数据仓库集中了对整个公司可用数据的访问。在传统公司中,你会发现数据储存在筒仓中,无法被其他团队访问。这通常有结构、组织和法律方面的原因。然而,跨业务团队特定数据建立联系是你的人工智能工作的中心。数据科学家擅长在数据中寻找模式,所以你的目标是让他们获得尽可能多的数据。

重要的问题是,你是依赖云服务,还是为人工智能建立自己的基础设施。像 AWS 、微软或谷歌这样的云供应商提供开箱即用的人工智能解决方案。使用云时,您只需为您消费的内容付费。大量的资源也可以帮助您快速设置。您还不断投入时间和资源来维护您的服务器。购买自己的硬件时,前期成本更高。一开始,云解决方案比较便宜,但是从长远来看,投资你自己的基础设施是值得的。利弊取决于你所在的行业,所以在做决定之前弄清楚自己的需求很重要。deepkapha.ai 的首席执行官兼联合创始人 Tarry Singh 并不建议那些将开发算法作为竞争优势的公司只关注云计算。
一旦你知道如何利用人工智能的硬件,接下来考虑人工智能的算法部分。
算法
算法位于人工智能三位一体的顶端,因为它们使用数据和基础设施来生产有价值的产品。你的人工智能策略的算法部分很棘手。回答这些问题会让你更进一步。
- 专有算法是商业价值的关键驱动力吗?
- 你是开源你的模型还是倾向于保持它们的私有性?
谷歌首席决策科学家 Cassie Kozyrkov 认为机器学习存在两个世界。凯西喜欢区分机器学习研究和应用机器学习。进行研究需要一种不同于应用现有算法的方法。
人工智能社区在发布可重用的公共数据集和模型方面已经变得好得多。这为你的公司提供了巨大的优势,因为你可以接触到各种各样的人工智能模型动物园。在你的人工智能战略中,你应该回答的主要问题是,算法是否是人工智能功能的主要商业驱动力。如果是的话,你应该建立一个专利项目,激励员工申请专利。如果没有,你应该考虑开源你的模型,利用大众知识来改进你的算法。
接下来,让我们看看在您的公司中利用人工智能所需的技能。
技能
一旦人工智能的神圣三位一体到位,你需要人来完成它的使命。人是让你的数据、基础设施和算法发挥作用以产生商业价值的核心。你如何让你组织中的人使用人工智能?在你的人工智能策略中回答以下问题:
- 你是建立内部团队还是外包任务?
- 你如何持续地对管理层和员工进行人工智能教育?
吴恩达建议建立一个内部人工智能团队。人工智能依赖于领域知识,这在某些行业可能很难外包。外部顾问可能不像你自己的员工那样了解你的数据、基础设施和问题。因此,可行的方法是捆绑热情的员工,对他们进行人工智能教育。

Photo by Tim Mossholder on Unsplash
1&1 Ionos 的数据科学家张秀坤·海茨表示,人工智能作为一种新技术不同于其他技术创新。人们往往不仅不知道人工智能的实际能力,而且他们经常对它有误解。这可以从“对人类的无所不能的威胁”到直接开箱即用的多用途系统的概念。
一旦内部团队到位,他们需要充当推动者的角色。人工智能的承诺太大了,无法将它们封装在一个团队中。人工智能战略应该实现一个程序,不断教育所有人寻找人工智能用例。通常,这些计划应该针对能够投资人工智能项目的高影响力个人。 todoku.ai 的联合创始人雷切尔·贝里曼确信,人工智能对经理的理解至关重要,因为这将作为人工智能的机会渗透到他们所在行业的员工。
让我们研究一下你的人工智能战略的最后一个组成部分——组织。
组织
人工智能战略的最后一个也是最重要的部分是让你的组织为人工智能做好准备。具体评估你的组织设计和开发过程。然后,将它们与最佳实践结合起来。
- 你如何让你的人工智能团队提供跨团队和跨领域的商业价值?
- 您的流程为 ML 工作流程做好准备了吗?
人工智能的好处是万能的。最重要的是要明白人工智能不能在筒仓中工作。人工智能不是在以客户为中心的垂直业务部门工作,而是可以被视为公司的横向推动者。人工智能能够影响内部流程,创造新产品,或改进现有产品。为了做到这一点,吴恩达建议建立一个独立的部门,成为整个公司人工智能的中心支持点。然后,该单位与现有部门合作,寻找高影响力的人工智能项目,并支持它们的实施。

在整个公司实现人工智能需要理解机器学习工作流程。机器学习遵循一个高度迭代的过程,其结果远非确定。你可以使用像人工智能项目画布这样的工具来评估成功的可能性,但你很难保证具体的结果。人工智能的探索性质使得它很难遵循公司范围的目标衡量。
在没有彻底评估数据的情况下,你不能承诺一个工作模型。因此,如果不首先投资 ETL 和初始数据分析,很难估计 AI 项目的具体业务影响。— 雷切尔·贝里曼
考虑你的过程:它们准备好支持人工智能了吗?如果你在一个安全至关重要的行业工作,很可能不存在验证统计学习模型的过程。你的公司遵循瀑布工程流程吗?重新考虑你当前的开发过程,检查它是否符合机器学习的工作流程。
现在你已经理解了人工智能策略的核心组件,让我们看看更多的技巧来避免常见的陷阱。
好的、坏的和丑陋的人工智能策略
你的团队需要谁来创造一个人工智能战略?什么构成了一个好的或坏的人工智能策略?企业和初创公司的人工智能战略有什么不同?这最后一个摘要旨在回答前面的问题。

Photo by Franki Chamaki on Unsplash
人工智能战略团队
创造一个人工智能战略是一个团队的努力。你需要对人工智能战略的核心组成部分有不同的观点。创业公司和公司的团队组合是不同的。初创公司以较小的团队为中心,围绕来自数据工程师的技术反馈和来自产品所有者或业务开发人员的业务反馈,创建人工智能战略。公司团队涉及更多的功能。为世界上最大的汽车制造商创建了内部人工智能战略的 Andreas Meier 知道,在有专门角色的公司中,你需要大量的领域知识来找到可行的人工智能战略。在一家公司中,你需要一大群不同角色的人,而在初创公司中,你可以用几个多面手创建一个出色的人工智能战略。
好的和坏的人工智能策略的标志
在所有公司中,好的和坏的人工智能策略都有共同的特点。好的人工智能战略是影响驱动的,在公司得到很好的支持,在时间、工资和期望方面有充足的资金。糟糕的人工智能战略是炒作驱动的,专注于技术而不是影响,并雇佣 2-3 名数据科学家争夺项目。试着远离后者。
企业和初创公司的人工智能战略
创建人工智能战略对公司和初创公司来说是不同的。Raphael Kohler 解释说,企业必须考虑遗留系统,并且也面临现有组织的变革管理的挑战,而初创公司可以专注于进入人工智能的良性循环。安德烈亚斯·梅尔知道,为人工智能铺设一条产生影响的道路可能会令人不知所措。他指出,在大公司中,利用人工智能实现流程自动化的潜力很大。对 Andreas 来说,简单地开始并交付价值是很重要的。

[Source](http://Montreal Ethics)
另一方面,创业公司应该专注于提供一种在没有人工智能的情况下也能正常工作的产品,但随着越来越多的客户使用该产品,该产品会稳步改善。然后对客户互动进行分析,以改进产品,从而吸引更多的用户。一旦进入人工智能的良性循环,人工智能初创公司就走上了成功之路。
数据是喂给人工智能引擎的油,不能低估思考如何从客户那里获得初始集以及正确的信息以迭代地改进产品的重要性。— 杰森·里施
关键要点
人工智能战略的核心组成部分相互交织,相互依存。核心组件在不同的行业中可能有不同的重要性,但它们总是相关的。
- 人工智能战略应该始终服务于更高的公司战略
- 人工智能战略的核心组成部分是数据、基础设施、算法、技能和组织
- 人工智能战略团队应该由产品经理、数据科学家和业务开发人员组成
- 一个好的人工智能战略应该关注中期目标和整体方法,而不是大肆宣传雇佣一些数据科学家
- 战略数据获取的正确时机可以成就或毁灭你的人工智能财富
在本文中,您学习了如何创建人工智能策略。在创建你的人工智能策略时,考虑人工智能的核心组件。我们期待一个拥抱人工智能实施的十年的世界。









浙公网安备 33010602011771号