蒙特卡洛模拟能驱散‘困难的第三张专辑’吗?
数字音乐
使用 Python 进行排列测试和蒙特卡罗模拟的介绍
The Killers, sensibly sticking to their first two albums at Glastonbury 2019 (Photo: NME)
《困难的第三张专辑》在音乐界就像民间传说一样好。
一个乐队的首张专辑实际上从一开始就一直在建设中。对一些乐队来说,这可能代表了多年的歌曲创作和提炼。这听起来很新鲜,而且没有期望的重量。
一个乐队的第二张专辑(所谓的第二张专辑)是带着第一张专辑的成功所带来的能量和信心制作的。即使一个乐队的声音从他们的首次亮相到现在没有太大的变化,人们也不太可能在一次发行后就厌倦它,如果它一开始就很好的话。
因此,如果乐队能够淘汰体面的首次亮相和大二学生,是什么让第三张专辑如此艰难?首先,第三张专辑可能会在第一张的四到五年后推出——流行的音乐趋势将会改变。乐队通常需要超越他们可能已经形成的舒适区,这可以发现那些不太符合标准的歌曲作者。
此外,一个厌倦了几年巡回演出的乐队可能缺乏空间来写一张唱片的高质量材料,长时间的巡回演出会让一个乐队彻底厌倦彼此。长期滥用药物在摇滚乐中仍然很常见,而且并不像甲壳虫乐队让你相信的那样有助于创作好音乐。
艰难的第三篇博文
理论站得住脚,但是‘困难的第三张专辑’是在数据中诞生的吗?为了找到答案,我们将使用我们在本系列的前几篇文章中看到的数据集,它由从 Metacritic 收集的数据组成。
Pitchfork 真的是互联网最苛刻的乐评人吗?
towardsdatascience.com](/the-devils-music-622d29028c0b)
我们将为每张专辑考虑的重要数据点是它的“ Metascore ”。这是一张专辑不同评论家评论的加权平均值。
虽然用于创建 Metascore 的确切方法并不公开,但 Metacritic 建议“根据[出版物的]质量和整体地位”给予额外的权重。然后将这些分数标准化(类似于大学里的“曲线评分”),以防止分数聚集在一起。无论如何,Metascore 是衡量任何一张专辑“真实”质量的最佳标准。
乍一看
我们从“专辑”数据帧开始,它包含每个发行版本的信息,如艺术家、专辑的 Metascore 和专辑的流派。数据集中有 17,727 个相册。
An extract of the Albums dataframe. Note — the ‘SuperGenres’ column is a high level view of the genres given on the album’s Metacritic page. For example, terms like ‘Indie’ or ‘Metal’ would be given as ‘Rock’ here. Note, an album can be assigned to more than one genre — the dictionaries in the ‘SuperGenres’ column describe the different weightings of each genre for that album.
出于这种分析的目的,我们关注那些只制作了至少部分“摇滚”专辑的艺术家,因为“困难的第三张专辑”通常与这种类型有关。我们也将只考虑发行了至少三张专辑的艺术家。这将范围缩小到 1324 位艺术家的 5791 张专辑。
我们可以通过几种方式来看待这些数据。首先,让我们简单地把不同专辑的 Metascores,根据专辑是一个乐队的首张专辑、第二张专辑还是第三张专辑来分组。
通过绘制这三组专辑的均值和核密度估计值 (KDEs ),我们看到元得分的分布非常相似。首张专辑的平均元得分较高,第二张专辑的元得分略高于第三张专辑。
Vertical dashed lines represent means for each group of albums
我们可以查看数据的另一种方式是考虑一个乐队从一张专辑到下一张专辑的相对 Metascore 差异。我们可以绘制出乐队专辑相对于他们首次亮相的得分,从而显示他们的得分如何随着时间的推移而发展。
Green lines represent artists that improved from albums 1 to 2, and then again from 2 to 3. Amber lines represent artists whose third albums were better than their debuts, but whose second albums were worse.
同样,我们看到专辑三的平均 Metascore(相对于首张专辑)下降了。这就支持了‘困难的第三张专辑’的存在。然而,每张专辑的差异是显著的,就平均得分“轨迹”而言,没有明确的模式。许多乐队完全避免了“困难的第三张专辑”综合症(上图中用绿色和琥珀色突出显示的那些)。
因此,我们有一些证据表明,“第三张专辑”获得的元批评分数比首次亮相或大二学生低。但我们显然在数据中有很多噪音,并且均值之间的差异远非令人信服。光凭肉眼观察数据不足以得出结论——我们需要更加严谨的统计数据。
蒙特卡罗模拟——简介
蒙特卡洛模拟是一种非参数统计测试,它可以告诉我们两个样本是否来自同一人群(在给定的确定性范围内——通常为 95%)。换句话说,它们可以告诉我们两个样本的平均值之间的差异是否具有统计学意义。
从这个意义上说,它们具有与 T 检验相似的功能。然而,蒙特卡罗模拟的优点是,我们可以忽略一些假设,这些假设必须满足 T 检验才是可靠的(例如,正态分布样本)。在我看来,蒙特卡洛模拟也更直观。
A photo of Monte Carlo to keep you going through the statsy bit that’s coming up…
让我们考虑一个非常基本的例子。
假设我们有两个样本,大小分别为 4 和 3。
我们可以看到样本 A 的均值比样本 B 的均值大 1.67。因此,我们可能会得出这样的结论:样本 A 来自不同的总体,而样本 B 的均值更大。
但是,为了便于论证,我们假设 A 和 B 是从同一个人群中抽取的(把这个当作零假设)。现在,如果我们观察相同的 7 个数据点,但排列不同(仍然抽取大小为 4 和 3 的样本),我们观察到大于 1.67 的平均差异的可能性有多大?
如果我们发现绘制这些大小的样本通常会产生大于 1.67 的平均差异,那么这种差异显然不是非常特殊的——我们可以得出结论,两个原始样本没有显著差异。
反过来,如果我们大多看到均值差异小于 1.67,那么我们可以得出相反的结论。这样的平均差异是不可能的,因此两个原始样本是明显不同的。
因此,我们研究了从现有的 7 个数据点中抽取大小为 4 和 3 的样本的所有不同方法。
There are 35 possible permutations, as given by the N choose K formula
我们看到有 3/35 的实例(或 8.5%)的平均差异大于 1.67。这个百分比可以像标准 T 检验中的 p 值一样使用。
换句话说,如果我们想以 95%的把握说人口 A 的平均值大于人口 B 的平均值(即,我们想使用 0.05 的α值),那么我们需要这个值小于 5%。
既然 8.5% > 5%,就不能拒绝两个样本来自同一总体的零假设。样本 A 与样本 B 在统计上没有差异,尽管具有较大的平均值。
上面有 7 个数据点的例子可以很好地解释排列测试的理论。然而,如果我们想在现实世界中部署同样的逻辑,就有一个障碍。
当我们增加样本量时,两个组合样本的可能排列数爆炸。例如,如果我们有两个大小为 140 的样本,那么这 280 个数据点的可能排列比已知宇宙中的原子还要多。
Just having two samples, each of size 10, results in nearly 200,000 possible permutations
鉴于我们对“困难的第三张专辑”的分析中有几张千张专辑,不可能查看每种可能排列的均值差异——地球上没有足够强大的计算机。
这就是蒙特卡罗模拟方法所处理的问题。蒙特卡洛模拟不是计算出所有可能的排列(可能有几十亿几十亿),而是从可能的排列中随机抽取样本,然后计算它们的平均差。
让我们用尺寸为 20 和 15 的较大样本创建一个新示例。
假设我们将上面的两个样本结合起来,取一系列 20 和 15 大小的样本(每次取它们平均值的差)。有 3,247,943,160 种可能的方法来做到这一点,但是我们不需要查看每一种方法。记住——蒙特卡罗方法只会从这些排列中抽取一个样本。
我们需要回答的下一个问题是——在我们对自己的答案有信心之前,我们需要进行多少次排列?
正如我们所看到的,一旦我们的模拟观察到超过 10,000 个排列,低于 0.92 的平均差异份额(原始样本对的平均差异)开始稳定。当我们进行蒙特卡洛模拟来观察 100,000 种排列时,我们可以非常确定我们的 p 值将足够接近真实值。
在这种情况下,p 值稳定在 0.095 左右。同样,这大于我们的标准α值 0.05,因此我们不能拒绝零假设——样本 A 和样本 B 没有显著差异,尽管它们的均值不同。
用蒙特卡洛模拟法分析“困难的第三张专辑”
让我们将这一理论应用于相册数据集。首先,让我们引入一些必需的库。Pandas 将允许我们与相册数据框架进行交互,Numpy 将允许我们快速进行基本的操作和算术——当你运行成千上万的模拟时这很有用!
**import** pandas **as** pd
**import** numpy **as** np
我们现在需要编写几个额外的函数。首先,我们需要一个可以从一个 Numpy 数组中减去另一个数组的函数。换句话说,如果我们有两个数组:
- [2, 3, 5, 7, 7, 7, 8]
- [3, 7, 7]
然后我们需要一些返回[2,5,7,8]的函数
我们在蒙特卡洛模拟的部分需要这一点,其中,已经从组合样本中抽取了数据点的初始随机选择,我们需要未被选择的其他数据点的列表。我在谷歌上搜索了一个内置的 Numpy 函数来做这件事,但是没有用。如果它确实存在,那么请随时给我发消息
第二个函数是运行蒙特卡罗模拟本身的函数。我们内置了几个额外的参数,包括它应该运行的默认模拟次数,以及我们测试样本 A 的平均值是大于还是小于样本 b 的平均值。
让我们使用上面的函数来运行一些假设检验。
首先,让我们比较一下第三张专辑和第一、第二张专辑的原始 Metascores。记住——在这些测试中,我们只使用摇滚歌手,只考虑发行了三张或更多专辑的歌手。
p-value derived from 50,000 Monte Carlo simulations
所以看起来第三张专辑的 metascore 明显低于初次登场和大二学生的 metascore 总和。
然而,这有可能是由首张专辑中相对较高的分数驱动的吗?让我们只比较第三张专辑和第二张专辑——我们知道第三张专辑的平均 Metascore 比第二张专辑稍低,但是差距似乎很小。
p-value derived from 50,000 Monte Carlo simulations
事实上,假设检验表明差距并不显著——超过 40%的相同数据的随机排列产生了更大的平均差异。我们未能证明第三张专辑通常比第二张专辑差。
从出道到出第二张专辑的差距呢?这里的平均差异看起来更大,但它有统计学意义吗?
p-value derived from 50,000 Monte Carlo simulations
这里我们可以看到我们的 p 值确实非常小——不到 0 . 1%的随机排列比真实的排列有更大的平均差异。我们可以断然拒绝零假设,似乎在出道专辑和大二之间存在统计上的显著差异。
因此,第三张专辑远不是“困难”的一张,似乎乐队在制作第二张专辑时面临着更大的挑战。
这是我的“ 【数字音乐】 ”专栏的最新博客,用数据讲述现代音乐产业的故事。我很乐意听到对上述分析的任何评论,或者对数据集本身的任何想法。欢迎在下方随意留言,或者通过LinkedIn联系我。
传播病毒:图嵌入的一个应用
模拟不同的播种技术以最大化网络中的信息扩散
影响者被高估了吗?
这是足够直观的,你需要有影响力的人来传播你的产品或服务的意识。然而,在我的一个研究生班里,我遇到了一个观念,即影响者可能被高估了。基本思想是影响者倾向于集中在大型子网络中。如果你依靠他们来推广你的产品,你可能会错过许多较小的卫星网络。这是一个警钟,许多我们认为理所当然的直觉可能无法纠正,如果仓促实施,从长远来看可能会付出高昂的代价。
周末,我决定在不同的数据集上测试几种播种策略。事实证明,影响者是否被高估没有简单的答案。增长动力在很大程度上取决于图簇的结构、节点嵌入以及影响者如何与其他人联系。
两个数据集——脸书政客和 Deezer 音乐流媒体——特别能说明问题。在运行 GEMSEC 图形嵌入算法之后,如上所示,通过前 3 个主成分来可视化这两个数据集。您能猜出以下哪种播种技术对每个数据集最有效吗?
- 简单的随机播种:这是一种天真的播种方式,但是它有它的支持者。主要优点是简单、便宜、公平。
- 根据集群大小分层抽样的随机播种:依靠分层抽样,我们可以确保不会错过播种小集群。
- 影响者播种:只需选择拥有最多联系的影响者。
- 基于集群的影响者播种:类似于选项 2,但是我们在每个集群中挑选顶级影响者。
本帖将集中于高层讨论,将实现细节留到最后。
数据集
真实世界的社交网络数据集被用来训练 GEMSEC 模型。这些数据集可以在仓库中找到。在这里,我主要关注两个数据集:
- 脸书政客页面网络:这些图形代表了经过验证的脸书页面之间的相互相似的网络。
- Deezer 用户-用户友谊网络:音乐流媒体网站 Deezer 的友谊网络(这里我们只关注匈牙利)。
图形嵌入
数据集中唯一可用的信息是节点之间的边。我们知道谁和谁有联系,但是我们不知道他们为什么有联系,或者他们有多相似。如果我们要对信息传播建模,我们需要某种相似性度量来估计一个人将信息传播给另一个人的可能性。在音乐服务中,相似性可以是音乐品味。在社交网络中,相似性可以代表亲密度(共享的对话、照片等)。)
为了绕过这一限制,我训练 GEMSEC 图嵌入模型直接学习节点嵌入,同时对它们进行聚类(因此得名 G 图 EM 与 SE lf C 聚类)。让我放弃数学上的细节,这些细节在最初的论文中有。重要的一点是我们现在有了图结构和节点嵌入。
模拟
扩散过程被模拟成随机行走。感染的概率与两个节点之间的余弦相似性相关。我做了一个简化的假设,即具有负余弦相似性的节点不会相互感染。
开始时,只有种子节点被感染。种子节点被放置在队列中。每当一个节点出队时,它都试图感染它的所有邻居。新感染的节点(包括旧节点本身)以广度优先搜索的方式被附加到队列中。
观察
结果总结在下面的两个图中。
- 在脸书政客数据集上,基于聚类的影响者播种优于直接影响者播种,但在 Deezer 音乐数据集上,它们显示出很小的差异。
- 基于聚类的随机播种在两个数据集上都优于简单的随机播种。这是意料之中的,因为我们本质上是按照集群大小进行分层抽样。
Diffusion curve, Facebook politician dataset
Diffusion curve, Deezer music dataset (Hungary)
是什么导致了影响者播种的差异?主要原因是影响者在所有集群中的影响力并不相同。如果我们只选择顶级影响者,20 个集群中只有 12 个具有合格的影响者。通过分层抽样,我们迫使影响力较小的群体被播种。
First 400 steps animation: random 1% seeding (left); cluster-based top 1% influencer seeding (right)
First 200 steps animation: random 1% seeding (left); cluster-based top 1% influencer seeding (right)
第二个原因归因于图形结构。政客数据集具有非常两极分化、明显不同且分离良好的聚类。Deezer 音乐流数据集更加模糊。这是可以理解的,人们可以享受不同的音乐流派,但政治家们坚持特定的(往往是相反的)政治立场。最高影响者的邻居节点的密度图清楚地展示了两极分化的模式:政治家的朋友都是相似的;音乐爱好者跨越群体建立友谊。
Kernel density estimation, top influencer’s cosine similarity with connected nodes (Facebook politician)
Kernel density estimation, top influencer’s cosine similarity with connected nodes (Deezer music)
总结
图形是最难处理也是最有利可图的问题之一。这篇博客的目的不是提出任何普遍真理,而是阐明一些观点,从这些观点你可以检查你自己的图形数据集。一些值得您注意的细节是:
- 当图表的知识容易获得,或者容易通过机器学习导出时,与随机播种相比,影响者播种是更优选的。
- 相似性度量应该是感染概率的良好代理。c 罗拥有 1.61 亿 Instagram 粉丝,但这并不意味着他可以影响所有人(其中大部分人与他截然不同)。
- 集群是否定义良好?个别节点是否高度极化?如果是这样,那么特定集群中的影响者可能非常有影响力。
- 在所有集群或细分市场中,影响力是否相等?如果不是,你可能需要分层抽样来捕捉小卫星网络。
- 不要依赖直觉,进行模拟,尽可能多地整合当前可用的信息。虽然模拟经常被证明是非常不准确的,但它有助于提出有价值的问题。
实验细节
首先,将 GEMSEC 存储库克隆到您的工作站。数据库中也提供了数据集。
其次,用所需的包创建环境。你可以简单地运行我的 gemsec_env.yml 文件。
conda env create -f gemsec_env.yml
要复制我的结果,运行实验. sh 文件中的命令。
建议您使用多核 CPU 虚拟机。该算法支持多线程。
图、汇总统计和动画代码可在这里获得。
延伸阅读
下面的博客涵盖了与 AB 测试相关的主题,以及对本文中提到的关键概念的更深入的回顾。
来源
【1】b . Rozemberczki,R. Davies,R. Sarkar 和 C. Sutton。GEMSEC:带自聚类的图嵌入。2018.
对数概率是什么,为什么
数据科学的三个主要类别是统计学、机器学习和软件工程。要成为一名优秀的数据科学家,你需要将这三者结合起来。在这篇帖子里,我要说的是一个***Log Odds——***一个来自统计范畴的箭头。当我第一次开始从事数据科学工作时,我对对数概率非常困惑。我会问一些问题,比如什么是对数概率,我们为什么需要它们,等等。
当试图理解任何概念时,我喜欢使用Divide and Understand strategy,即把它分成更小的部分,分别理解它们的含义,然后结合这些知识,从整体上把握概念。所以在这里,让我们首先了解什么是赔率,然后努力理解对数赔率。
Figure-0: Divide and Understand Log Odds (image by Author)
出于解释的目的,让我们考虑一个场景,我和一个人工智能(AI)系统下了 10 盘棋,其中 4 次我都赢了(如果我在现实中真的能做到这一点,我会对我的象棋技巧印象深刻)。
赔率和概率
按照我们的设想,我有 4 次能够击败系统,所以我赢得游戏的几率是 4 比 6,即在总共 10 场游戏中,我赢了 4 场,输了 6 场。
Figure-1: Odds of winning are 4 to 6 (image by Author)
这也可以写成一个分数
Figure-2: Odds as a fraction (image by Author)
赔率不应与概率混淆
赔率 是某件事情发生与某件事情没有发生的比率。在我们上面的场景中,赔率是 4 比 6。然而, 概率 是某件事情发生与所有可能发生的事情的比率。因此,在我们的象棋例子中,概率是 4 比 10(因为总共进行了 10 场游戏)。
Figure-3: Odds v/s Probability (image by Author)
根据我们的例子,
赢的几率:4/6 = 0.6666
赢的概率:4/10 = 0.40
输的概率:6/10 = 0.60
也等于 1 -赢的概率:1 - 0.40 = 0.60
给定概率,我们也可以计算如下赔率
Figure-4: Calculating Odds, given Probability (image by Author)
更新(2020 年 2 月 10 日):增加了更多的上下文并更新了图 5 和图 6,以更好地表示数字线上的赔率。感谢读者Buhringj对他们的查询。
现在,假设我们将游戏总数从 10 场增加到 100 场,而我仍然只能在这 100 场游戏中赢 4 场,那么
获胜几率:4/96 = 0.0417
如果我们进一步将游戏次数增加到 500 次,而我仍然玩得很糟糕,并且我的获胜次数保持不变,那么赔率现在变成了
获胜几率:4/496 = 0.0081
我打得越差,我的胜算就越接近于零。由于在这种情况下我输了,这些赔率也可以被认为是**“赢的赔率”**。赢的几率保持在 0 和 1 的范围内。
另一方面,如果我开始在更多的游戏中击败人工智能,那么我获胜的几率就会增加。假设我们玩 100 局游戏,人工智能输了 6 局,而我赢了剩下的,那么
获胜几率:94/6 = 15.6667
同样的,在 500 场比赛中,假设 AI 仍然输了 6 场
获胜几率:494/6 = 82.3333
在这种情况下,我赢了,这些赔率也可以被认为是**“赢的赔率”**,随着我在这场比赛中击败 AI 的表现越来越好,这些赔率会快速增加。如果我永远保持这样的进步,很快人工智能的损失与我的胜利相比将变得几乎可以忽略不计,我获胜的几率将接近无穷大。赢的几率范围在 1 到无穷大之间。
Figure-5: Odds on a Number Line (image by Author)
对数赔率
既然我们已经了解了赔率和概率,那么让我们试着了解对数赔率,以及为什么我们真的需要它们。Log Odds 无非是 log of odds,即 log(odds)。 在我们上面的场景中,对我不利的胜算范围在 0 到 1 之间,而对我有利的胜算范围在 1 到无穷大之间,这是一个非常巨大的范围。这使得对的赔率在那些赞成的人看来要小得多。
那么我们能做些什么来让它变得公平呢?你猜对了,取日志。取概率的对数使它看起来对称。
胜算= 4/6 = 0.6666
log(胜算)= log(0.6666) = -0.176
胜算= 6/4 = 1.5
log(胜算)= log(1.5) = 0.176
Figure-6: log(odds) on a Number Line (image by Author)
看,它现在看起来很对称,是一个公平的比较尺度。所以基本上使用对数函数帮助我们在两种情况下,即赢(有利)和输(不利)时,使离原点(0)的距离相同。你现在可以看到这有多重要。但是等等…
你还知道吗,了解这一切也有助于我们了解一个非常重要的函数的基础知识,**Logit 函数,**它是最常用的机器学习算法之一的基础,逻辑回归。让它深入人心吧!!
Figure-7: Logit Function (image by Author)
结论
所以希望这篇文章能帮助你更好地理解赔率、概率、对数赔率(与 log(Odds)相同)和 Logit 函数。在结束之前,我想在这里指出的一点是 log(odds)的用处。
Figure-8: log(odds) helps getting a Normal distribution (image by Author)
你可以从右边的图中看到 log(odds)如何帮助我们在左边的图中得到一个很好的正态分布。这使得 log(odds)对于解决某些问题非常有用,基本上是那些与发现赢/输、真/假、假/非假类型场景中的概率相关的问题。
参考
当算法失控时
人工智能“黑匣子”如何让我们看不到流氓算法,以及我们能做些什么。
Photo by Noah Silliman on Unsplash
在 11 月的第一周,苹果和高盛受到了不必要的关注,因为 Ruby on Rails 的著名创造者 @DHH (阿乐 24 小时耐力赛冠军车手)指控他们性别歧视。
例证:他和妻子一起申请了苹果信用卡,并获得了相当于妻子 20 倍的信用额度。这一点,当他们共同报税,她有一个更好的信用评分。
这条推文在网上疯传,但当苹果的另一位“史蒂夫” @stevewoz 支持这一说法时,事情变得更加激烈。
但我们不是在讨论苹果和高盛在此事件后的麻烦,以及随后下令进行的法律调查。在整个推特风暴中还有一个相关的问题。
这值得思考,不是吗?毕竟,我们谈论的是世界上最大的公司之一,他们不能解释他们自己的算法?据我所知,他们不得不通过将她提升到 VIP 级别来解决这个问题。
当算法失控时
我们知道,大多数人工智能决策几乎都是一个“黑箱”。这是由于基于树或基于神经网络的模型分数不容易被翻译来为人类提供直观的理解。由此导致的问题在金融服务等受监管行业变得尤为严重。如果一家电子商务公司的推荐算法出了问题,最糟糕的情况可能是收入受到影响。对于一家金融服务公司来说,情况并非如此。
如果我们甚至不知道一个决定是如何做出的,你怎么能在一个决定中发现偏见(种族、性别、年龄甚至文化)?
苹果的故事并不是唯一的例子。过去有太多的例子表明,无意中的偏见已经潜入了系统。
以下是算法失控的一些原因:
解决问题:
如果计算客户信用度的人工智能系统只是为了优化利润,它可能很快就会陷入掠夺性行为——例如寻找信用评分低的人来出售次级贷款。这听起来是不是很牵强?正在进行的针对联合健康集团和 Optum 的法律调查如何?在 Optum 中,非裔美国人更倾向于去看医生,只是因为算法被优化以降低医疗成本(而不是选择一个需要更多医疗关注的人)?
缺乏社会意识:
输入系统的数据包含了体现社会系统的偏见和成见。机器既不理解这些偏差,也不能考虑消除它们,它只是试图针对系统中的偏差优化模型。
作为一个例子,考虑下面的关于谷歌 BERT 的研究或者这个关于 Word2Vec pairing 的研究男人对于电脑程序员就像女人对于家庭主妇一样?”。在这两种情况下,模型本身不会导致偏差,但基础数据会。
不良数据的代理:
虽然不使用明显令人反感的数据是显而易见的,但是高度相关的数据通常可以充当代理。以 NYPD 开发的犯罪模式识别系统为例。他们小心翼翼地从数据中删除了特定的位置,因为这些位置被认为与种族高度相关,因此是其代表。
可解释的人工智能
我们谈论算法问责制的事实——以及以这个名字命名的法案,现在可能会得到推动——足以证明人们对人工智能在自动化决策中的使用非常关注。
这种算法责任的关键要求之一是人类能够理解人工智能决策过程。从 2017 年开始,在可解释的人工智能方面投入了大量的努力来解决这个问题。DARPA 是努力创造能让人工智能决策被人类理解的系统的先驱。它已经获得了广泛的工业和学术兴趣。一些负责可解释人工智能的开源框架,如 LIME 和 SHAP 正受到良好的关注。
它需要的是采纳和监管支持。
为什么随机梯度下降有效?
Crazy paths often lead to the right destination!
优化代价函数是机器学习中最重要的概念之一。梯度下降是最常见的优化算法,也是我们如何训练 ML 模型的基础。但对于大型数据集来说,这可能会非常慢。这就是为什么我们使用这种算法的一种变体,称为随机梯度下降,以使我们的模型学习得更快。但是是什么让它更快呢?这是有代价的吗?
嗯……在深入 SGD 之前,这里有一个香草渐变下降的快速提醒……
我们首先随机初始化模型的权重。使用这些权重,我们计算训练集中所有数据点的成本**。然后计算代价相对于权重的梯度,最后更新权重。这个过程一直持续到我们达到最小值。**
更新步骤是这样的…
J is the cost over all the training data points
现在,如果我们的训练集中的数据点数量变大,会发生什么?说m = 1000 万。 在这种情况下,我们必须将所有 m 示例的成本相加,以执行一个更新步骤!
新币来救我们了……
我们不是计算所有数据点的成本,而是计算单个数据点和相应梯度的成本。然后我们更新权重。
更新步骤如下…
J_i is the cost of ith training example
我们可以很容易地看到,在这种情况下,更新步骤执行得非常快,这就是为什么我们可以在很短的时间内达到最小值。
但是 SGD 为什么会起作用?
关键的概念是,我们不需要检查所有的训练示例来了解斜率下降的方向。通过一次只分析一个例子并跟随它的斜率,我们可以到达一个非常接近实际最小值的点。这里有一个直觉…
假设你做了一个 app,想通过 100 个客户的反馈来改进它。你可以用两种方法来做这件事。在第一种方式中,你可以将应用程序交给第一个客户,然后将他的反馈交给第二个客户,然后是第三个,以此类推。从他们那里收集反馈后,你可以改进你的应用程序。但是第二种方式,你可以在得到第一个客户的反馈后,马上对 app 进行改进。然后你把它给第二个,在给第三个之前你又提高了一次。请注意,通过这种方式,您可以以更快的速度改进您的应用程序,并且可以更早地达到最佳状态。
希望你能分辨出第一个过程是普通梯度下降,第二个是 SGD。
但是 SGD 也有一些缺点…
SGD 比原始梯度下降法快得多,但是 SGD 的收敛路径比原始梯度下降法更嘈杂。这是因为在每一步中,它不是计算实际的梯度,而是一个近似值。所以我们看到成本有很大的波动。但是,这仍然是一个更好的选择。
Convergence paths are shown on a contour plot
我们可以在上面的等高线图中看到 SGD 的噪声。需要注意的是,vanilla GD 更新次数较少,但是每次更新实际上都是在一个完整的时期之后进行的。SGD 需要很多更新步骤,但它将需要较少的历元数,也就是说,在这种情况下,我们迭代所有示例的次数将较少,因此这是一个更快的过程。
从图中可以看出,梯度下降还有第三种变化,称为小批量梯度下降。这是一个利用 SGD 的灵活性和 GD 的准确性的过程。在这种情况下,我们一次获取固定数量(称为批量)的训练样本,并计算成本和相应的梯度。然后,我们更新重量,并为下一批继续相同的过程。如果批量= 1 ,那么它变成 SGD,如果批量= m ,那么它变成正常 GD。
J_b is the cost of bth batch
从头开始实施
这里有一个 python 实现的小批量渐变下降。您可以轻松地使 batch_size = 1 来实现 SGD。在这段代码中,我使用 SGD 优化了一个简单的二元分类问题的逻辑回归的成本函数。
在这里找到完整的代码。
还好奇?看一个我最近做的视频…
我希望你喜欢阅读。下次见…学习愉快!
人类活动识别:小数据学习的有效实现
[1]This image was procured from the Mind’s Eye Project. It depicts Human Activity Recognition in real time.
深度学习应用中的大数据集魔咒能否被打破?有必要收集数百万个样本来训练一个特定任务的神经网络吗?我们卷起袖子,开始寻找这个古老问题的答案。我们创建了一个定制的深度学习管道,用于克服自主系统中人类活动识别的挑战。在项目接近尾声时,我们能够产生足够的结果,支持我们的架构有效地从极小的数据集中学习。我们使用不到 260 个例子来训练我们的模型!
在这篇博客中,我将避免细枝末节,也就是说,我将专注于我们所做的有效的事情,而不是提及我们所有失败的尝试。我也不会讨论引文中已经存在的不必要的细节。如果您想了解更多,或者对我们方法的实施有任何疑问,请随时通过sudarshan.kamath97@gmail.com 与我联系。
传统上,从视频中提取特征一直具有挑战性,因为视频数据包含许多语义时空关系,这些关系难以被丰富地编码以馈入 LSTM 模块。原始视频帧数据只有在我们拥有大量数据集时才有效。
我们想建议一个替代方案,以时间活动图(标签)的形式。标签向 LSTM 呈现了一系列丰富编码的时空关系。为了帮助你理解标签是如何形成的,我将用下面的例子进一步说明:
[2]Hand-shake activity from the UT-Interaction Dataset
包围盒形成在延伸的物体上,即上述视频帧中的左臂、右臂、左腿、右腿和头部。这些边界框之间的交互由标签编码,如下所示:
[3]TAG depicting Handshake Activity from the UT-Interaction dataset
标签中的节点对应于描述扩展对象的边界框,同一帧中两个节点之间的空间关系使用空间边来描述,空间边的标签使用扩展核心 9 集成表示来计算。它们描述了两个相互作用的边界框之间的拓扑、方向和距离关系。如果一帧中的节点出现在两个视频帧中,则该节点通过时间边连接到另一帧中的节点。
在从原始视频数据中创建了一个标签之后,我们接着将它输入到我们定制的 结构化递归神经网络 架构中。下图解释了 sRNN 的各个部分:
[4]Custom sRNN architecture for taking in a TAG as input
上述体系结构基于分解由单个神经网络承担的任务的复杂性的直观想法。LSTMs B1 ,…, B5 从对应于人物 1 的节点,即 B1 获取输入,例如,对人物 1 头部的所有关系进行编码。整个关系再次由扩展核心 9 架构提供。骨骼追踪数据可通过 SBUKI 数据集获得,或者可以使用开源库 Openpose 有效提取。编码后,单个 LSTMs Bis 和 Cis 分别将数据反馈给 LSTMs D1 和 D2 。因此,各个 rnn 只学习由它们各自的节点编码的信息,而不是学习编码在视频帧中的所有信息。这有助于分解手头任务的复杂性。此外,我们有一个特征丰富的向量,该向量将被馈送到 LSTM *A、*中,该向量以整体方式包含所有时空信息,可以被馈送到其他深度学习管道。
在通过 2 个密集层传递特征向量之后,我们使用两种分类方法来标记我们的数据。一个是随机森林分类器,另一个是连体网络。
以前,当我们使用传统的 softmax 分类器时,我们面临过拟合的问题。98 %的训练准确率之后是低至 50 %的测试准确率。随机森林已经被方便地用于克服机器学习流水线中的过拟合问题,因此我们在我们的 sRNN 架构的最后一层的输出上训练了一个随机森林分类器。
暹罗网络也在我们的建筑上展现了它的魅力。我们都知道人脸识别软件面临着一次性学习的挑战,这个问题和我们正在做的事情很相似,我们需要从非常少量的数据中学习。
以下是我们的最终精度:
[5]Activity-wise as well as overall accuracies for the SBUKI dataset using Random Forest and Siamese Network Classifiers
活动方面的准确性不是架构效率的准确度量,因为我们必须确保训练集包含适当数量的用于所考虑的特定活动的示例。然而,看看总体精度,然后将它们与下面给出的最先进的方法进行比较:
[6]State-of-the-art accuracies for SBUKI and ME dataset
我们的精度几乎相当于最先进的水平。需要记住的是,上述精度使用的是机器学习管道,这要求我们明确提供学习方法工作的特征向量。我们的方法使用深度学习管道()来学习特征。我们的方法是高度可扩展的,并且可以扩展到需要使用小数据快速学习的较大系统。
我们相信未来在于更快、更有效的学习方法,而不是更大的数据集,因此这是迈向未来的又一步。
我们的大部分训练是使用 80-20 的训练-测试分割完成的,训练进行了 100 个时期。我们管道的代码可以在 这个库 中找到。
这个项目是我和我* ( Sudarshan Kamath )以及我的项目伙伴Diptanshu Agarwal在Shyamanta Hazarika教授的指导下完成的。所有的引用、深入的解释以及项目细节都可以在我们的学士论文中找到,这些论文可以在我们的 Github 资源库中找到。*
干杯!
走向以人为本的教育
教育促进人类赋权
Photo by Ana Viegas on Unsplash — The Alps
今天的教育
教育是社会、个人和集体发展的核心,应该促进儿童赋权。然而,在许多情况下,无论是因为经济问题还是过时的方法,它都没有做好。
根据 USI 的数据,大约有 2.6 亿儿童失学,辛迪·刘对美国学生进行的一项研究得出结论,五分之一的学生会因为学校的压力而考虑自杀。
教育目前没有优化,学生之间的水平差距很大,个体差异没有得到充分考虑。
21 世纪的教育
Sschool 定义什么技能是社会所看重的。今天主要宣扬个人主义、竞争和零和博弈。然而,生活在 21 世纪,在一个增长的社会中,资源正在增长,现在非常有价值的技能是合作和交流。
此外,知识现在是每个经济体的核心。你拥有的知识越多,你拥有的专利、出版物或创新就越多,你就越强大。这就是谷歌和脸书成为今天的巨头的原因。因此,重新设计学习方法是关键,以便学校促进合作,自我发现,创造性和双赢的心态。通过游戏化、趣味化和定制化的信息来吸引注意力可能是最有前途的方法。
“我宁愿娱乐并希望人们学到一些东西,而不是教育人们并希望他们被娱乐”华特·迪士尼
本文的第一部分介绍了影响学习过程的个体差异。然后,将引入一个旨在优化每个个体学习潜力的数字工具,利用人工智能和大数据来设计一个更加定制化的平台。
Towards a creativity and cooperation based education system
我们如何学习?
技能不固定;它们的发展是一个动态的过程。它们部分源于遗传基础,但也受到一生中的关系、环境和经历的影响。
学习风格
T21 收益风格已经引起了广泛研究的关注。事实证明,它会显著影响学生对学习材料的态度和参与度。
研究表明,学生们会形成自己偏爱的学习风格,主要有五种类型:视觉、听觉、物理、语言和逻辑。
利用学习风格的一种方式是通过技术增强项目 (TEIs),如视频片段、音频文件、互动和模拟组件。通过定制学习的评估标准,TEIs 还支持积极的互动、参与,并可以深入评估学生的知识增长。
认知能力
C 认知技能是你的大脑为了处理和使用信息所需要的所有功能。我们通常有几个首选的能力,使我们能够更有效地学习。随着对认知技能的更好理解,我们可以为每个人的大脑量身定制学习材料。
研究确定了 10 种主要能力[1]:注意力、工作记忆、灵活记忆(适应性和改变方法的能力)、言语推理、抽象推理、空间感知、言语记忆、视觉记忆、视觉运动速度和处理速度。
对于理科科目,不同的题型会要求空间表征、微积分、逻辑思维等不同的认知能力。
个性
非认知个性因素就像学习过程的调节者一样。社交能力、自信、坚持、雄心、动机和对工作习惯的控制可以调节一个人的总体学习方法。
人格和教育领域使用的通用框架是大五因素。这是一个很好的基础,可以根据人们的性格特征对他们进行分类。[2]
当学生被平等对待时,他们因性格特征而产生的个体差异通常被认为是教学中的障碍,而不是被利用和进一步发展。
The big five factors in personality
教育的新方法
现在,我正在介绍一个新的 TEI,它是我在加州大学伯克利分校的课堂上开发的。它从学习的角度利用个体差异,就像之前介绍的那样,为教师和学生提供更好的工具。在目前的状态下,这是一个最小可行的产品,旨在展示这种工具在大规模定制教育中的优势。它被设计成可扩展和易于操作。
体系结构
TEI 是一款通过问题和建议与学生互动的移动应用程序。然后用它来构建一个用户数据库,用机器学习模型对其进行分析,以定制问题测试和在线查找相关学习资料。然后,收集关于一名学生的所有信息,并显示在仪表板上,可供当前或未来的教师访问。
Architecture of the solution
个性化聚类
Student’s learning style profile
我们为每个学生定义一个档案,这样我们就可以知道学生通过哪种方式学习效率更高。这种剖析是利用学习风格、个性以及学科知识来完成的。
根据认知能力对问题进行分组
为了测试学生的数学问题并定制体验,我们根据三种能力对数据集进行了聚类:空间表达、微积分和问题解决,以一种半监督的方式。我们首先手工标记 300 个问题,然后使用支持向量机模型和 L2 正则化来聚类剩余的问题。
按内容聚类
使用自然语言处理技术对文本进行预处理,问题也根据其内容进行聚类。可视化的特征空间,我们得到一个最佳的聚类数的想法,这是使用肘方法确认。潜在空间(此处为 500 维)由簇着色。它突出了数据背后的模式。
Dimensionality reduction visualization of the clustering by content
根据我们想要提取的信息的级别,聚类可以或多或少地精确。我们也可以通过聚类来可视化最常用的单词,如下图中的气泡图所示。
Bubble plot of five clusters
结果
交互式仪表板
T 学生和教师将通过
交互式仪表板进行互动,该仪表板跟踪学生的进度,显示建议,并能够可视化具体指标。
Dashboard of the webapp (developped with Flask)
推荐
答根据我们想要测试的内容和学生的学习偏好收集问题后,我们开发了一个推荐引擎:
学习内容推荐:算法 webscrapes 几个教育网站,找到最相关的文章和在线课程。第一个版本只基于 wikifier API,这是一个使用 ngrams 选择相关维基百科文章的编程接口。在此基础上,学习内容研究机构 webscrapping edX、academia.com 和其他在线教育平台提供了一个更强大的搜索工具。
Using customized profiles to make relevant recommendations
评估指标
F 对于每一个机器学习应用,我们都在疑惑,我们如何评价成功?我如何知道移动应用程序的使用是否对学生产生了我们想要的效果?正如引言中所述,我们希望我们的新学习方法能够促进以下价值观:创造力、合作精神,并使学生能够更有效地学习。因此,我们的目标是定义一个可以评估这些技能的标准。
创造力:它通常与工作中的激情和你所做的事情带来的快乐相关。当对一个主题感到兴奋时,你会有更多的想法,并愿意在它上面花更多的时间。因此,我们可以用好奇心来衡量创造力,这可以通过花在应用程序上的时间来衡量。[3]
合作:可以通过与平台上其他同学的互动,以及互动量与整体表现的相关性来评估。
学习表现:我们也想衡量学生的整体进步。这可以通过主体和认知能力来实现。然而,为了简单起见,我们计算了一个总得分,它评估了当前各地区的平均得分与一个月前的平均得分之间的差异。
然后,我们可以对每个指标进行加权,得到一个唯一的分数。建议的权重如下。
The proposed weights
然后,它被用来跟踪学生和改善个性化。
Evaluation dashboard
应用程序
第一个应用是为那些不容易进入教育机构的学生,如发展中国家,主要是亚洲和非洲的学生。通常,由于健康、文化差异或性别方面的不平等,这些孩子被排除在教育系统的边缘,因此,他们的个人发展受到很大影响。正因为如此,全球仍有超过 7200 万儿童失学。为了解决这种情况,我们的工具可以用作第一次教育的基础,以后可以由未来的教师利用,他们可以在应用程序上访问学生数据。
Share of the population older than 15 with completed tertiary education, 2010. [Source: ourworldindata.org]
从更广泛的角度来看,该应用程序可以被每一个教学机构用来支持传统方法。它提供了一种方法,可以轻松地从儿童身上学习,更有效地适应和跟踪每个人一生中的进展。
教育的未来
优化我们如何使用大脑的神经行为学
在通往最佳教育系统的道路上,神经行为学将是理解我们大脑行为方式的关键。这一新的研究领域包括收集生理数据,以收集重要信息,如注意力水平。
神经工程学的目标是利用大脑的认知功能。它分析大脑如何与外界互动,持续监控大脑功能。当面对复杂的认知任务时,两个重要的跟踪能力是工作记忆和注意力。使用图像技术,我们还可以可视化与专业技能发展相关的大脑活动的演变(大脑使用更少的策略和认知自动化),这可用于评估不同的学习方法。[5]
这用于提供对人们精神状态和意图的直接洞察。它有助于应对挑战,如优化工作负载水平,以便评估如何确保持续保持高性能水平。[6]
“我们应该让我们的学校适应我们的大脑”
更强大的 NLP 模型的出现
很多学习材料都包括书面文件或口头文件。两者都可以使用 NLP 技术进行分析,如本文所示。随着最近高性能 NLP 模型的发展,可以开发更准确和有效的学习工具。
二月底,OpenAI 发布了一个新的基于 transformer 的模型,GTP-2。这个经过数十亿参数训练的模型学习了非常复杂的单词嵌入。与 BERT 一起,这些最先进的模型现在可以利用迁移学习,为定制教育带来更多见解。[7]
Photo from Pexels
参考
[1]贝琪·希尔。认知技能和差异
[2]亨利·舒文堡·布尔·德·拉德。学习与教育中的人格:一个综述
[3],吴毓子,廷.运用创造性学习策略研究创造力、创造力风格、创造力氛围——以工程教育为例
[4] Humanium,《受教育权:世界各地的情况》。【https://www.humanium.org/en/right-to-education/
[5]塞琳·麦克欧文。神经工效学:人类因素和工效学的认知神经科学方法
[6]阿德里安·柯廷,哈桑·阿亚兹。神经行为学的时代:用 fNIRS 对脑功能进行无处不在的连续测量
[7] AlecRadford,JeffreyWu,RewonChild,DavidLuan,DarioAmodei,IlyaSutskever。语言模型是无人监督的多任务学习者
人类兼容人工智能
为什么阿西莫夫定律不充分?我们能否制造出不是面向目标,而是可证明有益的人工智能系统?
Photo by rawpixel.com from Pexels
阿西莫夫定律:深奥却无力
对于科幻迷来说(还有其他一些人),艾萨克·阿西莫夫不需要介绍。
A collage of covers by Michael Whelan from the Foundation series.Image: Bantam Books (Digital Trends)
他的机器人三定律(1942 年 3 月首次出现在短篇小说around中)是任何关于机器人、人类人工智能和文明未来的知识话语中最常被引用的格言。
因为,我们都在网上的某个地方见过这张图片,对吗?
我们希望这些机器,站在我们这边,作为我们的朋友、哲学家和向导,而不是站在另一边的敌人
这是三大定律,只是为了重述一下,
- 第一定律——机器人不得伤害人类,也不得坐视人类受到伤害。
- 第二定律——“机器人必须服从人类给它的命令,除非这些命令与第一定律相冲突。”
- 第三定律:机器人必须保护自己的存在,只要这种保护不与第一或第二定律相冲突。”
一套(主要)情节生成设备(英语)
阿西莫夫既不是机器人专家,也不是计算机科学家/人工智能研究者。他的职业是生物化学家,在他的一生中,他对写作的重视远远高于常规的大学研究和教学。文学界当然因为他的这一选择而更加丰富。
他编织的惊人故事的情节对他来说极其重要。他还使用了新颖的情节生成装置,前面提到的机器人法则就是其中主要的。它们并不意味着被编码到某种机器人设备中,或者甚至是模拟人工智能代理的计算机程序中。
Source: Why Asimov’s Three Laws Of Robotics Can’t Protect Us
正如机器人专家兼作家丹尼尔·克拉尔言简意赅地指出的那样——“阿西莫夫的规则很整洁,但也很扯淡。例如,它们是英文的。你到底是怎么给那个编程的?”
阿西莫夫定律并没有被设计成编码到人工智能程序或超级智能机器人的处理器中。
你可以争辩说,自然哲学(早期称之为物理科学)的许多定律是用通俗易懂的语言表述的,后来用数学术语编纂成了法典。
如果你确信同样的事情也可以发生在这些法律上,试着给出关键短语的精确定义(和数学界限),比如不作为、伤害、服从、冲突、保护、存在。
努力?正如我提到的,它们在英语中是*。*
阿西莫夫的故事证明它们不起作用
阿西莫夫的大部分故事都围绕着一个主题——机器人可能会遵循这些表面上符合逻辑、伦理上合理的代码,但仍然会误入歧途,给人类和社会带来意想不到的灾难性后果。
《创世纪》中关于规避的故事本身就表明了前两条定律是多么容易发生冲突,而第三条定律需要被发明出来才能有一个圆满的结局。
Source: http://raydillon.blogspot.com/2012/09/my-art-from-ridley-scotts-prophets-of.html
真正符合逻辑的科学法则不应该这么容易就发生冲突。它们是按顺序建立的,通常会产生一个清晰、明确、可行的解决方案。还记得牛顿定律吗?或者,麦克斯韦方程组?
网上有大量文章讨论这些法律对于构建任何功能性超级智能代理(以硬件或软件为中心)的可悲不足。检查这里,或者这里,或者这个。
那么,有什么措施来解决这个问题吗?
人类兼容人工智能
你对人工智能感兴趣吗?我认为答案是肯定的,因为你选择了打开这个故事来阅读。
你见过这本教科书吗?
你很有可能知道(即使你没有勇气翻阅这本近千页的纲要——我自己也只有 30%左右),因为这是全球数百所大学人工智能课程的标准文本。
这本书有两位作者。
Peter Norvig 是学生和学习者社区中更熟悉的名字,他在一个伟大的在线课程中教授我们人工智能的基础知识,或者出版那些关于编程、统计和机器学习的惊人的 Jupyter 笔记本。
然而,在本文中,我们将关注本书的第一作者 Stuart Russell 博士,教授,世界知名的加州大学伯克利分校人工智能研究员。
他正在通过他的 人类兼容人工智能 中心,研究一种名为可证明有益的人工智能的东西。
要问的重要问题
主流人工智能研究人员并不经常问这些问题,但他们正在慢慢地但肯定地获得社区中许多人的关注。
我们应该担心超级智能人工智能给人类带来的长期风险吗?如果是这样,我们能做些什么呢?
你可能会问“ 什么长期风险 ”。
你可能会说,如果聪明、理性、道德和伦理的人类——科学家、工程师、社会活动家、政治家——一起仔细定义智能系统的“目标”,那么它就不会走错路。
因为目标函数很重要,对吧?
如果你已经阅读并理解了现代机器学习算法的核心原理,这个世界似乎就是在这些原理上运行的,你知道几乎所有的这些算法(无论如何是最有用的)都是通过最大化一个目标函数来工作的。
我们展示了最流行的机器学习/统计建模技术背后的核心优化框架。
towardsdatascience.com](/a-quick-overview-of-optimization-models-for-machine-learning-and-statistics-38e3a7d13138)
因此,如果你认为为了开发一个超智能但有道德和伦理的 AI 系统,我们所需要的只是一个好的目标函数,那你就错不了。
几乎所有现代、强大的人工智能系统和算法的核心都是目标函数。
当然,如果目标函数或目标是无害的,一个强大的人工智能不会对人类造成伤害。
还有什么比设定一个目标最大化回形针产量更无害(也更令人沮丧的平凡)的呢?
超级智能回形针最大化器
牛津大学哲学家尼克·博斯特罗姆在2003 年的一篇论文中首次描述了曲别针最大化器,它是一个被赋予了人工 G 通用 I 智能 ( AGI )的系统/代理,其目标是最大化其收集的曲别针数量。
听起来无害吗?让我们再深入一点。
如果它被构造成具有大致人类水平的一般智能,该系统可能会从地球上所有可能的来源收集回形针,赚钱购买回形针,甚至开始制造回形针。
这才是更有趣的地方。它从哪里获得制造回形针的原材料?它当然可以买到它们。当正常的供应链耗尽时会发生什么?它可以尝试非常规的供应链,从其他来源购买相同的原材料(如铝),通常用于其他行业,如飞机或汽车行业。
要做到这一点,它必须采用巧妙的方法来赚钱。而且它越聪明,就越有可能完成那些子目标**。**
因此,主目标会产生子目标,这些子目标没有被明确地编程,并且是人类设计者没有计划到的。
因此,它也将经历一个“智能爆炸”,将努力提高自己的智能,以满足子目标,这反过来又有助于满足最大限度地提高回形针产量的宏伟目标。
增加了它的智力后,它会制造出更多的回形针,并利用它增强的能力来进一步自我提高。
一个纯粹以目标为导向的 AGI,即使给了一个非常安全和简单的目标,也极有可能产生子目标,这些子目标是不可预见的,因此也是无法计划的。
Source: http://www.danieldewey.net/tedxvienna.html
它停在哪里?
根据博斯特罗姆的说法,在某个时候,它可能会“首先将整个地球,然后将越来越多的空间变成纸夹制造设施”。
可证明有益的人工智能
因此,设计一个纯粹面向目标的人工智能系统,终究不是一个好主意。意想不到的事情可能会突然出现。
因为,当我们教一台机器思考并不断改进自己时,我们不能指望它会在何时以何种方式超越我们。
这就是所谓的“AGI的控制问题”。目前对它的定义和理解都很模糊。这比你想象的要难。非常非常难。
因为这类似于一群大猩猩试图思考如何控制人类的情况。
在超级聪明的 AGI 面前,我们很可能会像那些大猩猩一样。
Source: https://www.gorilladoctors.org/
“如果机器会思考,它可能会比我们思考得更聪明,那么我们应该在哪里?艾伦·图灵,1951 年。
在他非常令人愉快的 TED 演讲中,拉塞尔教授给出了几个目标导向型机器人的例子(包括一个智能助理,其目标是让你的配偶一直开心),并解释了这种系统的潜在危险和局限性。
然后,他谈到了可以解决这个问题的一种方法— 可证明是有益的 AI 。
这种设计方法的目标是通过将人工智能的注意力从实现任意目标的能力转移到实现可证明有益行为的能力和动机,来确保不会出现像回形针最大化器那样的可能性。****
而有益是什么意思?
当然,这取决于人类和整个社会集体行为的性质和特征。因此,这项任务必然要利用比人工智能研究人员、机器学习工程师和计算机科学家的核心群体更大的思想家群体的专业知识和经验——社会科学家、政治家、经济学家、心理学家。
这是设计安全有益的人工智能的新思路,它被命名为与人类兼容的人工智能。
新的三部法律
除了形式概念,Russell 还引入了三个简单的想法作为新设计方法的核心。如果你愿意,你可以称之为机器人新定律 T21,
Source: https://futureoflife.org/wp-content/uploads/2017/01/Stuart-Russell-conference.pdf?x90991
从本质上来说,智能代理在开始的时候并不是很聪明或者不确定它的目标。它开始时有很多不确定性,就像一个人类婴儿,然后,慢慢地,它找到了一个稳固的立足点,不仅执行随机搜索并盲目遵循 Q-learning 策略(所有强化学习课程都会教你),而且还信任它的父母——我们人类——并观察他们**。**
Image by Mabel Amber (Pixabay)
还记得“摇篮里的猫”吗?
我的孩子前几天刚出生
他像往常一样来到这个世界
但是我要赶飞机,要付账单
我不在的时候他学会了走路
他会说话【在我知道之前】随着他的成长
他会说“爸爸,我会像你一样”
“你知道我会像你一样”
总结和相关想法
这篇文章可能已经超出了它的有用性,但是不提及一些相关的想法是不公平的。如果你对这个领域感兴趣的话,我们鼓励你去谷歌一下,了解更多。
- 逆向强化学习(在合作博弈中)
- 关闭开关问题(用于机器人)
- AI 安全举措(参考 Max Tegmark 的书 Life 3.0 )
认真思考 AGI 及其潜在影响不应仅限于学术研究界。每个人都可以参与进来,提出他们的想法和对这样一个未来系统应该学会吸收的价值系统的投入。
当 AGI 到来时,我们可能仍然会变成那些大猩猩(与 AGI 相比),但仍然有一个健康的关系。
Image by Stefan Keller from Pixabay
一些进一步的阅读
- https://www . technology review . com/s/527336/do-we-need-asimovs-laws/
- https://www.cs.huji.ac.il/~feit/papers/Asimov06.pdf
- https://wiki.lesswrong.com/wiki/Paperclip_maximizer
- http://www.danieldewey.net/tedxvienna.html
- https://alfredruth.com/en/ai-and-the-control-problem/
- https://futureo flife . org/WP-content/uploads/2017/01/Stuart-Russell-conference . pdf?x90991
- https://people . eecs . Berkeley . edu/~ Russell/papers/Russell-BBVA book 17-pbai . pdf*
如果你有任何问题或想法要分享,请联系作者tirthajyoti【AT】Gmail . com。另外,你可以查看作者的 GitHub 资源库中其他有趣的 Python、R 和机器学习资源中的代码片段。如果你像我一样对机器学习/数据科学充满热情,请随时在 LinkedIn 上添加我或在 Twitter 上关注我。
*** [## Tirthajyoti Sarkar - Sr .首席工程师-半导体、人工智能、机器学习- ON…
通过写作使数据科学/ML 概念易于理解:https://medium.com/@tirthajyoti 开源和有趣…
www.linkedin.com](https://www.linkedin.com/in/tirthajyoti-sarkar-2127aa7/)***
人类发展与国家生态足迹:一个视觉导向
使用 Plot.ly 和 Bubbly
程序员和数据科学家可以将一些开源数据可视化工具整合到他们的工作中,这些工具真的很吸引人。如果你不太赞同我的热情,可以看看布丁的“记者工程师”的一些互动的、有时有趣的、有时与文化相关的项目。在我看来,他们正在引领数据可视化的艺术*。也就是说,数据科学家没有能力仅凭他们的可视化和时间敏感的问题来震撼心灵,他们自己拥有可访问的资源来快速建立信息丰富、易于理解的数据通信。*
撇开形象化不谈(就目前而言),以下是我最近抛出的一些问题:我们对人类进步有共同的标准全球定义吗?在评估一个国家的发展时,应该如何权衡教育和健康与经济财富?一个国家培育人民的努力是否需要更大的生态足迹和有限自然资源的更多支出?哪些国家在引领前进,哪些没有?我将在下面探讨这些想法,同时深入一些有用的 Python 库,用于抓取 web 和可视化相关信息。
为了支持人类发展指数和类似的指标
在关于国家“增长”的讨论中,国内生产总值(GDP)似乎是最容易获得和被大量引用的指标。虽然很容易衡量和比较,但更高的 GDP 肯定不能保证一个地方的普通公民比其他地方的更好。美国每年花费数十亿美元开采石油,GDP 也随之增长。中国是世界上最大的二氧化碳排放国之一,在国民生活和工作环境高度污染的情况下,中国的 GDP 也取得了令人难以置信的增长。GDP 指标是一维的,在衡量实际进展方面显然有其局限性。作为回应,联合国经常引用一个叫做人类发展指数 (HDI)的新指标,该指标不仅考虑了人均 GDP,还考虑了预期寿命、识字率、入学率等指标。还有的不平等调整人类发展指数 (IHDI),与此类似,但惩罚了健康、教育和收入分配不均的国家。请记住,这不是一个完美的指标,因为它不容易解释(在 0 & 1 之间),排名将取决于其他人的增长,但它比 GDP 更全面,可以作为进步的指南,这是我选择关注人类发展指数的主要原因,以便快速了解数据搜集、搜索、清理、合并和可视化。进入数据探索过程!
抓取维基百科
我使用 Python 库 BeautifulSoup , Requests ,& Pandas 从维基百科抓取一个简单的数据表。在导入库之后,我解析了 Wikipedia 表,提取了国家和 HDI 的文本,并将每个文本放入一个列表对象中,如下所示:
- ***文章可读性跳过的步骤:*库安装和导入、数据清理、合并来自 WorldBank/Kaggle 的第三方数据集
- 在我的 GitHub 库上探索完整的笔记本和数据集的更多细节
*#parse with BeautifulSoup & Requests
web_page = "[https://en.wikipedia.org/wiki/List_of_countries_by_inequality-adjusted_HDI](https://en.wikipedia.org/wiki/List_of_countries_by_inequality-adjusted_HDI)"req=requests.get(web_page)
page = req.text
soup = BeautifulSoup(page, 'html.parser')
table = soup.find_all("table", "wikitable")#extract country & HDI text
ihdi = table[0]
table_rows = ihdi.find_all('tr') #tr found in browser developer tool
header = table_rows[1]
temp = ihdi.find_all('td') #td found in browser developer tool#list comprehensions to get lists of country & HDI strings
countries = [table_rows[i].a.get_text() for i in range(len(table_rows))[1:]]IHDI = [temp[i].get_text() for i in range(len(temp)) if "." in temp[i].get_text()]#zip data and create pandas dataframe
data = zip(rank,countries, IHDI)
cols = ['Rank', 'Country', 'IHDI']
ihdi_df = pd.DataFrame(list(data), columns = cols, index=rank)*
使用 Plot.ly 通过 Choropleth 地图可视化 IHDI
在创建了一个包含按国家名称排列的 IHDI 值的熊猫数据框架后,我能够构造一个变量(“数据”),该变量可以传递到 plot.ly 方法中,如下所示:
*data = [dict(
type='choropleth',
locations = ihdi_df['Country'],
autocolorscale = True,
z = ihdi_df['IHDI'],
locationmode = 'country names',
marker = dict(line = dict (
color = 'rgb (255,255,255)', width = 2)),
colorbar = dict(
title = "2017 Inequality-Adjusted HDI")
)]layout = dict(title = 'Countries by 2017 Inequality-Adjusted HDI')#using one of many plotly imports: import plotly.graph_objs as go
fig = go.Figure(data = data, layout = layout)py.offline.iplot(fig);*
Plotly 很棒,因为它易于使用、动态且具有交互性。虽然依赖第三方资源进行数据科学有时很好,但最终在价格、复杂性和文档可用性方面会很昂贵,因此我非常欣赏像 matplotlib 这样简单的库。在下方,您可以将鼠标悬停在国家/地区上方以查看各个 IHDI 值,向任意方向平移地图,放大/缩小地图,并将其重置为原始比例-所有操作均使用嵌入右上角的 plot.ly 按钮。
Created in Python with Plot.ly
洞察力:IHDI Choropleth 地图
我们现在可以很容易地看到,加拿大、澳大利亚、日本、冰岛和一些斯堪的纳维亚国家在这一特殊的不平等调整人类发展指标上的指数非常高。它们是在发展努力中实现经济实力、教育和健康之间良好平衡的领导者,这些好处可能会更均匀地分配给更大部分的公民。希望提高自身得分的政府应该效仿这些国家在前进中所采用的一些价值观和行动。美国在不平等调整后的排名上有所下降(从人类发展指数的第 13 位降至第 25 位)。中非共和国、南苏丹和尼日尔等非洲国家显然迫切需要提高教育入学率、人均收入、公共卫生服务以及其他经济机会和平均预期寿命的决定因素。没有地图,这些事情可能是显而易见的,但 choropleth 使我们能够清楚地看到陆地、海洋、边界和最近的邻居如何影响测量的值。它可以作为一种地理目录来指导进一步的认识和未来的研究。
人类发展&我们国家的生态足迹
经济增长必然会破坏我们的生物圈吗?发达国家的生态足迹与他们的生物能力相符吗?或者我们正在以赤字的方式消耗资源?哪些国家在不依赖有限自然资源的情况下增加了 IHDI?哪些国家正在消耗自然资源,却不一定能发展经济?随着时间的推移,这些因素在各个国家、各个大洲,在总的和人均指标和人口方面发生了怎样的变化?我怎么可能用一种容易理解的方式来想象这一切呢?
为了简单直观地探究这些问题,我下载、清理并合并了。在 Kaggle 上使用熊猫的 csv 数据来自世界银行和 T2 的全球足迹网络。我不会讲太多细节,我将总结一下我遇到的一些清洁障碍:*
- 我添加了列后缀,以便合并许多按年份标记的列(例如 2007 年人类发展指数,2007 年 le,2007 年 pop)
- 在不同的数据集中,国家有时会被不同地缩写或截短,所以我将它们对齐(例如。美国-美国-美利坚合众国、圣卢西亚-圣卢西亚等。)
- 在生态足迹数据中,我将“美洲”大陆分为北美和南美
- 在合并之前决定如何正确处理缺失或空的指标、年份和国家(因为一些指标、年份和国家缺失,所以数据不是当前世界的 100%综合视图)
在将合并的数据清理并加载到 Pandas dataframe 后,我使用一个名为 Bubbly 的 Python 库创建了一个气泡图,它依赖于 NumPy、Pandas 和 Plot.ly。令人难以置信的是,每个气泡图可以一次接受多达六个有意义变量的参数!
*# Biocapacity Per Capita vs. EF Per Capita Chart code
from bubbly.bubbly import bubbleplotfigure = bubbleplot(
#input dataframe, and 2 main variables
dataset=data1,
x_column='BiocapPerCap',
y_column='EFConsPerCap',
bubble_column='country', #what each bubble reps
time_column='year', #time interval
size_column='EFConsTotGHA', #bubble size argument
color_column='continent', #bubble color argument
#column titles, main title
x_title="Biocapacity Per Capita (global hectares)", y_title = "Ecological Footprint Per Capita (global hectares)",
title = 'Biocapacity (Per Capita) vs. Ecological Footprint (Per Capita) by Year, Country, & Population',
x_logscale=False, #log scale argument
scale_bubble=3, #how big should bubbles be?
height=650,
#scale of axes
x_range = (-2,18),
y_range = (-2,18)
)#render the plot inline
iplot(figure, config={'scrollzoom': True})#alternatively, use: plot(figure, config={'scrollzoom': True})
#to create an html page auto-saved your current directory*
在以下可视化中要寻找什么:
- ***每个泡泡:*国家
- ***气泡颜色:*大陆
- ***气泡大小:*以全球公顷(测量土地,100 公顷= 1 平方公里)为单位的国家总生态足迹
- ***水平 X 轴上的位置:*每个国家的人均生物能力,以全球公顷为单位
- ***垂直 Y 轴位置:*每个国家的人均生态足迹,以全球公顷为单位
- ***滑块/动画:*时间(年)
- 右下角附近的国家:!对地球来说是积极的。**
- 左上方附近国家:!他们在生态赤字下运作。****
******* 点击探索互动图表(生物容量 pc vs .生态足迹 pc) *******
预览:
洞察:人均生物能力与人均生态足迹
请记住,这种分析不是预测性的,而是描述性的,我们可以得出结论,一些国家正在以比其他国家更可持续和更健康的方式发展和增长,但我们不能对变量之间的潜在关系或因果关系做出评论。此外,请记住,这张图表有助于我们分析一个严格的生态比率,尽管这很有趣,但它忽略了许多有意义的因素,这些因素可能有助于评估过去的表现并激励新的行动,并且在 2014 年被截断。
玻利维亚在这里看起来真的很好(目前)!这个南美国家的生态容量是其足迹的 5 倍(比例为 16:3),这是一个令人震惊的净积极生态。然而,玻利维亚的故事并非完美无缺。自从世纪之交以来,这个国家的森林砍伐率一直在上升,这主要与森林转化为大规模农业和牧场有关,特别是在查科地区。它是南美洲的对手,巴西的人均足迹相似,但人均生态承载力只有它的一半。这种影响,在人均规模上,似乎平衡了亚马逊与其庞大人口的利益。在美国,我们正在消耗生态系统提供的 2.3 倍的水,这是一个不容忽视的运营赤字。中国(3.8 倍)和印度(2.4 倍)位居第二(或者说没有第二),以同样可怕的人均比率,以及意料之中的最大的总足迹。图表中人均足迹与生物能力的比率最低的国家是卡塔尔,卡塔尔和其邻国被世界卫生组织称为世界上毒性最大的国家。每个点似乎都在讲述一个新的故事。每个故事似乎都揭示了需要持续的意识和行动。
另一个泡沫图:人类发展指数与人均生态足迹
为了在气泡图上查看一组不同的变量,我用 x_column、y_column 和 bubble_column (size)的新参数操纵了“figure”对象(显示在上面的 Python 代码中)。
要查找的更改:
- ****新的水平 X 轴位置:每个国家的人类发展指数(HDI)
- 国右下方: 还好 !这些国家在经济、教育和健康方面都在发展,同时(相对)限制了它们对环境的破坏。
- 国左上方: 还不好 !这些国家正在耗尽地球的资源,却不一定同步造福人类。
******* 在此探索互动图表(HDI 与环保电脑) *******
预览:
洞察:人类发展指数与人均生态足迹
国家人类发展努力必然会破坏生态吗?挖掘石油当然会带来经济利益,例如,我们每次开车都会从中受益。与此同时,有一些方法可以有效地将这种好处转移到能够改善人类发展指数等指标的项目上。当然,说起来容易做起来难,但是考虑到有时是间接的,通常是直接的权衡,哪些国家做得好呢?
一般来说,欧洲似乎在树立生态意识的同时也为人类进步设定了标准。向西班牙、葡萄牙、意大利、罗马尼亚、匈牙利和塞浦路斯大声疾呼,它们成功地控制了人均碳足迹,同时处于或接近国家人类发展指数的较高水平。大部分欧洲国家位于或接近这一等级,但是一些没有被提及的欧洲国家似乎更愿意过度利用他们的生态资源。在这张泡泡图中,非洲是另一个大多数国家都聚集在一起的大陆。平均而言,大多数非洲国家都位于人类发展指数排名的后半部分,尽管它们似乎都不是生态破坏的罪魁祸首。北非国家摩洛哥、阿尔及利亚和突尼斯的这一比例最为理想,这可能是因为地处地中海,靠近许多制定标准的欧洲国家。
亚洲国家似乎没有明显地聚集在一起,尽管有一些趋势和重要的观察值得注意。从 2000 年到 2014 年,沙特阿拉伯、科威特、巴林、哈萨克斯坦、阿曼和一些近邻似乎在人类发展指数上取得了令人难以置信的进步,但它们对自然资源的依赖也出现了类似的大幅飙升。除了战争和腐败之外,许多开放的贸易政策改革、石油之外的多样化以及融入全球经济的努力对人类发展指数和该地区公民的总体生活水平产生了积极影响。
美国、加拿大、澳大利亚、丹麦和新加坡似乎是这些国家中高度发达的环境罪犯。如果没有对环境的真正破坏,我们可能无法达到美国目前的生活水平。我们可以同样感激我们所拥有的,同样致力于改善我们的制度和价值观。这些巨大的、令人生畏的进步肯定是从本地开始的。我们都可以教别人一些东西,种植一些东西,快速洗澡,吃完你的食物,骑自行车,投票。
我希望你喜欢这本书,
亚历克斯
查看我的 GitHub 库 获取项目数据、代码、详情。
请继续关注我的后续文章,我会继续深入研究数据科学。我鼓励大家喜欢、评论、分享或直接给我发消息,告诉我你们对这里提出的想法的想法,或者对我今后应该研究的有趣主题的建议。
www.linkedin.com/in/alexshropshire
使用 Dabl 的人在回路自动机器学习
使用这个 python 库自动执行重复的机器学习任务
T 任何机器学习项目最耗时的部分都是数据清理、预处理和分析的初始阶段。在训练一个模型之前,你首先需要经历一个漫长的过程。执行任务,例如处理缺失值、将分类变量转换为数字变量并分析数据,以便为特征工程和选择提供信息。
有许多工具试图自动化这个过程,包括众所周知的 auto-sklearn 库。然而,其中许多都是一个黑箱,很难准确理解工具是如何改变数据的,如果数据有一些独特性,也很难定制过程。
Andreas Mueller 创建的相对较新的 python 库 d abl 试图解决这个问题。Dabl 提供了一个工具来自动化初始模型开发阶段中涉及的许多重复性任务。虽然功能目前有点有限,但确实存在的功能是非常有前途的。看看 Github 回购开发正在进行中,最近的项目承诺发生在 2019 年 11 月 15 日。在本文的剩余部分,我将对该工具进行简单的评估。
自动化预处理
Dabl 可以 pip 安装,如下所示。该库还依赖于是否安装了最新版本的 scikit-learn,因此如果您没有安装,则需要升级或安装最新版本scikit-learn==0.21.3
。
pip install dablimport pandas as pd
import dabl
为了说明其中的一些特性,我将使用“给我一些信任”竞赛中的 Kaggle 数据集。数据集可以从这里下载。我使用的是cs-training.csv
文件,该文件包含关于一个人的信用历史和环境的特征,以及目标变量(SeriousDiqin2yrs `)。这表明他们在过去两年中是否经历过严重的财务压力。
loan_data = pd.read_csv('cs-training.csv')
通常,机器学习项目的第一部分是理解数据,并在训练模型之前执行必要的预处理。Dabl 寻求自动化这一过程。如果运行以下命令,dabl 将尝试识别缺失值、要素类型和错误数据。我们数据集的输出显示在代码下面。
loan_clean = dabl.clean(loan_data, verbose=1)
describe_data(loan_clean)
有关它已识别的要素类型的更多信息,您可以键入。
types = dabl.detect_types(loan_clean)
types
当模型适合数据时,Dabl 将使用上述方法对特征进行适当的预处理。特别有用的是,1)您可以直观地看到 dabl 正在推断什么,2)如果您认为推断的数据类型不正确,您可以对预处理进行调整。例如,在上文中,dabl 已将特征NumberOfDependents
识别为连续变量。然而,如果被视为分类,这实际上可能在模型中执行得更好,所以我们可以选择将其指定为categorical
,如下面的代码所示。
loan_clean = dabl.clean(loan_data, type_hints={"NumberOfDependents": "categorical"})
数据分析
模型开发中第二耗时的部分是数据分析。在训练模型之前,了解数据的基本分布、目标类的平衡程度以及哪些特征与目标变量密切相关非常重要。Dabl 也试图简化这一过程。简单地运行这一行代码就可以返回大量有用的可视化结果。由于 dabl 检测特征类型并自动清理数据,这使得数据分析速度极快。
dabl.plot(loan_clean, 'SeriousDlqin2yrs')
模型开发
Dabl 还寻求加速模型选择过程。通过运行非常少量的代码,dabl 训练一组 scikit-learn 模型并返回相应的分数。
fc = dabl.SimpleClassifier(random_state=0)
X = loan_clean.drop('SeriousDlqin2yrs', axis=1)
y = loan_clean.SeriousDlqin2yrs
fc.fit(X, y)
A selection of models and scores returned from dabl
这个图书馆很新,还在开发中。看一下文档,还会有一些有用的特性,包括模型解释器和增强模型构建的工具。目前,这个库提供了一种在模型开发之初自动完成大量工作的方法,特别是对于机器学习模型的快速原型开发非常有用。
感谢阅读!
人工智能的类人机器听觉(3/3)
Photo credit: Malte Wingen
结果和观点。
这是我关于 【类人】机器听觉 系列文章的最后一部分:用 AI 对人类听觉的部分进行建模来做音频信号处理。
本系列的最后一部分将提供:
- 对主要观点的总结。
- 经验测试的结果。
- 相关工作和未来展望。
如果你错过了之前的文章,这里有:
背景:AI 在音频处理上的承诺
批评:CNN 和 spectrograms 做音频处理有什么问题?
第一部分 : 具有 AI (1/3)听觉的类人机器
第二部分: 具有 AI (2/3)听觉的类人机器
总结。
在抽象层次上理解和处理信息不是一件容易的事情。人工神经网络已经在这一领域移山。特别是对于计算机视觉:深度 2D CNN 已经被证明可以捕捉视觉特征的层次,随着网络的每一层,复杂性都在增加。卷积神经网络的灵感来自于大脑皮层,而大脑皮层又受到了人类视觉系统的启发。
人们已经尝试在音频领域重新应用风格转换等技术,但结果很少令人信服。视觉方法似乎不适用于声音。
我认为声音完全是一种不同的动物。在进行特征提取和设计深度学习架构时,这是需要记住的事情。声音表现不同。就像计算机视觉受益于对视觉系统的建模一样,当在神经网络中处理声音时,我们可以受益于考虑人类的听觉。
Photo credit: Steve Harvey
声音表现。
为了开始探索建模方法,我们可以建立一个人类基线:
对大脑来说,声音是用光谱表示的。压力波由耳蜗处理,并被分成大约 20-20,000 Hz 范围内的大约 3500 个对数间隔的频带。
声音是以 2-5 毫秒的时间分辨率听到的。比这更短的声音(或声音的间隙)人类几乎察觉不到。
基于这些信息,我推荐使用一个 伽玛通滤波器组 来代替傅立叶变换。 Gammatone 滤波器组是听觉建模中的常用工具,通常,滤波器组允许分离频谱和时间分辨率。通过这种方式,您可以拥有多个光谱带和一个较短的分析窗口。
内存和缓冲器。
人类被认为具有短期储存感官印象的记忆,以便进行比较和整合。尽管实验结果略有不同,但它们表明人类有大约 0.25-4 秒的回声记忆(专门针对声音的感官记忆)。
任何人类能听懂的声音 都可以在这些限度内表现出来!
几秒钟的 2-5 ms 窗口,每个窗口有大约 3500 个对数间隔的频带。但这确实积累了大量数据。
Two dilated buffers covering ~1.25s of sound with 8 time steps.
为了减少一点维度,我提出了 扩展缓冲区 的想法,其中时间序列的时间分辨率随着旧时间步长的增加而降低。这样,可以覆盖更大的时间范围。
Photo credit: Alireza Attari
监听器处理器架构。
我们可以将内耳概念化为一个光谱特征提取器,将听觉皮层概念化为一个分析处理器,从听觉印象的记忆中导出*“认知属性】*。
在这两者之间,还有一系列经常被遗忘的步骤。它们被称为耳蜗核 。关于这些我们还有很多不知道的,但是它们对声音做了一种初步的神经编码:对定位和声音识别的基本特征进行编码。
这让我探索了一个 监听器-处理器模型 ,其中声音缓冲区由通用 LSTM 自动编码器(一个*)嵌入到一个低维空间,然后被传递到一个特定任务的神经网络(一个 【处理器】 )。这使得 autoencoder 成为一个可重用的预处理步骤,用于对声音进行一些特定任务的分析工作。*
A listener-processor architecture to do sound classification.
结果。
我认为这一系列文章提出了一些在神经网络中处理声音的新想法。利用这些原则,我建立了一个模型,使用 UrbanSound8K 数据集进行环境声音分类。
由于计算资源有限,我只能勉强接受:
- 100 个伽马酮过滤器。
- 10 ms 分析窗口。
- 8 级扩展缓冲器,覆盖约 1.25 秒的声音。
为了训练听者,我将数千个膨胀的缓冲区输入到一个自动编码器中,每边有两个 LSTM 层,将 800 维的连续输入编码到一个 250 维的“静态”潜在空间中。
An illustration of the LSTM autoencoder architecture.
经过大约 50 个时期的训练后,自动编码器能够捕捉大多数输入缓冲器的粗略结构。能够产生一种嵌入来捕捉声音中复杂的频率顺序运动是非常有趣的!
但是有用吗?
这是要问的问题。为了测试这一点,我训练了一个 5 层自归一化神经网络,使用来自 LSTM 编码器的嵌入来预测声音类别 (UrbanSound8K 定义了 10 个可能的类别)。
经过 50 代的训练后,该网络预测声音类别的准确率约为 70%。
2018 年, Z .张等人。艾尔。在 UrbanSound8K 数据集上实现了 77.4%的预测准确率。他们通过对γ谱图进行 1D 卷积实现了这一点。随着数据的增加,这种准确性可以被推得更高。我没有资源来探索数据增强,所以我将在系统的非增强版本上进行比较。
相比之下,我的方法准确率低了 7.4%。然而,我的技术在 10 ms 的时间范围内工作(通常附带一些内存),这意味着 70%的准确率涵盖了数据集中声音在任何给定时间的 10 ms 时刻。这将系统的延迟降低了 300 倍,非常适合实时处理。简而言之,这种方法不太准确,但在处理时引入的延迟明显更少。
A “happy accident” I encountered during initial experiments.
视角。
完成这个项目确实非常有趣。我希望已经为你提供了一些如何在神经网络中处理声音的想法。虽然我对我的初步结果很满意,但我相信,如果有更好的光谱分辨率和用于训练神经网络的计算资源,这些结果可以得到显著改善。
我希望有人会拿起这个,在新问题上用一种监听器-处理器的方法进行实验。特别是,我很好奇尝试一种变分自动编码器方法,看看当它们的潜在空间被调整时,重建的声音会发生什么——也许这可以揭示一些关于声音本身的基本统计特征的直觉。
相关工作。
如果您对使用自动编码器的声音表现感兴趣,这里有一些启发了我的项目,我推荐您去看看:
音字 2Vec
这些人使用 MFCC 和 Seq2Seq 自动编码器研究了一种类似的语音编码方法。他们发现语音结构可以用这种方式充分表达。
全球音乐翻译网
这是非常令人印象深刻的,也是我见过的最接近声音风格的转变。它是去年由脸书人工智能研究所发布的。通过使用共享的 WaveNet 编码器,他们将许多原始样本音乐序列压缩到一个潜在空间,然后使用单独的 WaveNet 解码器对每个所需的输出“风格”进行解码。
用神经网络模拟非线性音频效果
马克·马丁内斯和约书亚·赖斯成功地用神经网络模拟了非线性音频效果(如失真)。他们通过使用 1D 卷积来编码原始样本序列,变换这些编码(!)与深度神经网络,然后通过去卷积将这些编码重新合成回原始样本。
亲爱的读者,非常感谢你和我一起踏上这段旅程。我对这个系列文章得到的大量积极的、批评性的和信息丰富的回复感到荣幸。
忙得不可开交,这篇最后的文章姗姗来迟。现在它已经结束了,我期待着下一章,新的项目和想法来探索。
人体姿态估计:简化
看看人类姿势估计的世界
什么是人体姿态估计?
人体姿态估计是计算机视觉领域的一个重要问题。想象一下,能够跟踪一个人的每一个微小动作,并实时进行生物力学分析。这项技术将会产生巨大的影响。应用可能包括视频监控、辅助生活、高级驾驶辅助系统(ADAS)和运动分析。
从形式上讲,姿态估计是从图像或视频中预测一个人的身体部位或关节位置。
Image courtesy Microsoft COCO Dataset (Lin et al., 2014)
为什么是这个博客?
我从事人体姿态估计已经超过 8 个月了。这一领域的研究在广度和深度上都是巨大的。然而,姿势估计方面的大多数文献(研究论文和博客)都相当先进,使得新手很难积累。
姿势估计的未来研究范围是巨大的,创建一个学习斜坡可以让更多的人感兴趣。博客的目的是提供对姿态估计的初步理解,并可能引发对该领域的兴趣。任何之前完全没有计算机视觉经验的人都可以肤浅地关注这个博客。即使是对计算机视觉概念的基本理解,也足以完全理解博客。
问题定义
正如我前面说过的,人体姿态估计是一个在深度和宽度上都有大量研究的领域。问题陈述可以基于以下轴进行分类:
被跟踪的人数
根据被跟踪的人数,姿态估计可以分为单人和多人姿态估计。单人姿势估计(SPPE)是两者中较容易的一个,可以保证帧中只有一个人。另一方面,多人姿态估计(MPPE)需要处理额外的人与人之间的遮挡问题。最初的姿态估计方法主要集中在 SPPE,然而随着大规模多人数据集的出现,MPPE 问题最近受到越来越多的关注。
Single-person vs Multi-person Pose Estimation.
输入模态
模态是指不同类型的可用输入。根据获取的难易程度,前三种输入形式是:
- *红绿蓝(RGB)图像:*我们每天在身边看到的图像,也是姿态估计最常见的输入类型。就输入源的移动性而言,仅处理 RGB 输入的模型比其他模型具有巨大的优势。这是因为普通相机(捕捉 RGB 图像)很容易获得,使它们成为可以在大量设备上使用的模型。
- *深度(飞行时间)图像:*在深度图像中,像素的值与通过飞行时间测量的距相机的距离有关。像微软 Kinect 这样的低成本设备的引入和流行,使得获取深度数据变得更加容易。深度图像可以补充 RGB 图像,以创建更复杂和精确的计算机视觉模型,而仅深度模型广泛用于关注隐私的地方。
- *红外(IR)图像:*在红外图像中,像素的值由反射回相机的红外光的量决定。与 RGB 和深度图像相比,基于红外图像的计算机视觉实验很少。微软 Kinect 在录制时也提供红外图像。然而,目前没有包含红外图像的数据集。
RGB image vs Depth image
静态图像 vs 视频
视频只不过是图像的集合,其中每两个连续的帧共享其中存在的大量信息(这是大多数视频压缩技术的基础)。在执行姿态估计时,可以利用视频中的这些时间(基于时间的)依赖性。
对于视频,需要为输入视频序列产生一系列姿态。期望所估计的姿态应该在连续的视频帧之间理想地一致,并且该算法需要在计算上高效以处理大量的帧。对于视频来说,遮挡问题可能更容易解决,因为存在身体部位未被遮挡的过去或未来的帧。
如果时间特征不是流水线的一部分,则可以对视频中的每一帧应用静态姿态估计。然而,由于抖动和不一致性问题,结果通常不如期望的那样好。
Notice the jitter in Single-frame model and the smoothness in Temporal model. Image courtesy Pavllo et al. (2018)
2D vs 3D 姿态估计
根据输出维数的要求,姿态估计问题可以分为 2D 姿态估计和三维姿态估计。2D 姿态估计是预测图像中身体关节的位置(根据像素值)。另一方面,3D 姿态估计预测所有身体关节的三维空间排列作为其最终输出。
2D Pose Estimation vs 3D Pose Estimation
大多数三维姿态估计模型首先预测 2D 姿态,然后尝试将其提升到三维姿态。然而,也存在一些直接预测 3D 姿态的端到端 3D 姿态估计技术。
车身模型
每个姿态估计算法事先都同意一个身体模型。它允许该算法将人体姿态估计问题形式化为估计人体模型参数的问题。大多数算法使用简单的 N 关节刚性运动骨架模型(N 通常在 13 到 30 之间)作为最终输出。形式上,运动学模型可以表示为一个图,其中每个顶点 V 表示一个关节。边 E 可以编码关于身体模型结构的约束或先验信念。
这种模型足以满足大多数应用。然而,对于许多其他应用程序,如角色动画,可能需要更精细的模型。一些技术已经考虑了高度详细的网格模型,用点云表示整个身体。
在早期姿势估计流水线中使用的另一个相当原始的身体模型是基于形状的身体模型。在基于形状的模型中,人体部分使用类似矩形、圆柱、圆锥等几何形状来近似。
Kinematic Model vs Shape-based Model vs Mesh-based Model
摄像机数量
研究的主要部分涉及使用来自单个相机的输入来解决姿态估计问题。然而,有某些算法试图使用来自多个视点/摄像机的数据,将它们组合起来以生成更精确的姿势并更好地处理遮挡。目前对多摄像机姿态估计的研究还比较有限,主要是因为缺少好的数据集。
姿态估计流水线
预处理
- *背景去除:*可能需要从背景中分割出人,或者去除一些噪声。
- 一些算法,特别是在 MPPE,为图像中出现的每个人创建边界框。然后,每个边界框被单独评估人类姿态。
Bounding Box creation. Image courtesy Fang et al. (2017)
- *摄像机校准和图像配准:*如果使用多个摄像机的输入,则需要进行图像配准。在 3D 人体姿态估计的情况下,相机校准也有助于将报告的地面实况转换成标准世界坐标。
特征提取
机器学习中的特征提取指的是从原始数据(如我们案例中的图像或视频)中创建导出值,这些值可以用作学习算法的输入。特征可以是显式的,也可以是隐式的。显式特征包括传统的基于计算机视觉的特征,如梯度方向直方图(HoG)和尺度不变特征变换(SIFT)。在将输入馈送到下面的学习算法之前,显式地计算这些特征。
Left : Image along with corresponding color gradients, Right : Image with SIFT features
隐式特征是指基于深度学习的特征映射,如来自复杂深度卷积神经网络(CNN)的输出。这些特征地图从来不是明确创建的,而是端到端训练的完整管道的一部分。
VGG16 : A CNN based feature extraction and image classification architecture
推论
**置信图:**预测关节位置的常用方法是为每个关节生成置信图。置信度图是图像上的概率分布,表示每个像素处的联合位置的置信度。
Confidence map examples
- *自下而上方法:*自下而上方法包括首先检测图像中一个或多个人的部位或关节,然后将这些部位组合在一起,并将它们与特定的人相关联。
简单来说,该算法首先预测图像中出现的所有身体部位/关节。典型地,这之后是基于身体模型的图形公式,其连接属于同一个人的关节。整数线性规划(ILP)或二分匹配是创建此图的两种常见方法。
Cao et al. complete pipeline. An example of a bottom up approach. Image courtesy Cao et al. (2017)
- *自顶向下方法:*自顶向下方法在开始时包括分割步骤,首先将每个人分割成一个边界框,然后在每个边界框上单独执行姿态估计。
自顶向下的姿态估计可以分为基于生成人体模型的方法和基于深度学习的方法。基于生成人体模型的方法包括尝试在图像上拟合人体模型,允许最终预测像人类一样。基于深度学习的方法直接预测关节位置,因此最终的预测不能保证像人类一样。
Fang et al. complete pipeline. An example of a top down approach. Image courtesy Fang et al. (2017)
后处理
许多算法,包括自底向上和自顶向下的方法,在最终输出上没有关系约束。通俗地说,从输入图像预测关节位置的算法没有任何关于拒绝/校正不自然的人类姿势的过滤器。这有时会导致怪异的人体姿态估计。
Pose Estimation using Kinect containing weird and unnatural pose
为了解决这个问题,存在一组后处理算法,其拒绝不自然的人类姿态。来自任何姿势估计管道的输出姿势通过学习算法,该算法基于其可能性对每个姿势进行评分。在测试阶段,得分低于阈值的姿势会被忽略。
数据集
人体姿态估计中几种常用数据集简介。
- **MPII:**MPII 人体姿态数据集是一个多人 2D 姿态估计数据集,包括从 Youtube 视频收集的近 500 个不同的人体活动。MPII 是第一个包含如此多样姿态的数据集,也是第一个在 2014 年发起 2D 姿态估计挑战的数据集。
- **COCO:**COCO 关键点数据集是一个多人 2D 姿势估计数据集,图像从 Flickr 收集。COCO 是迄今为止最大的 2D 姿态估计数据集,并且正在考虑测试 2D 姿态估计算法的基准。
- HumanEva : HumanEva 是一个单人 3D 姿态估计数据集,包含使用多个 RGB 和灰度相机记录的视频序列。使用基于标记的运动捕捉(mocap)相机来捕捉地面真实 3D 姿态。HumanEva 是第一个大尺寸的 3D 姿态估计数据集。
- Human3.6M : Human3.6M 是单人 2D/3D 姿态估计数据集,包含使用 RGB 和飞行时间(深度)相机记录的视频序列,其中 11 个演员正在执行 15 种不同的可能活动。使用 10 个 mocap 相机获得 3D 姿态。Human3.6M 是迄今为止最大的真实 3D 姿态估计数据集。
- **超现实:**超现实是一个单人 2D/3D 姿态估计数据集,包含使用实验室记录的 mocap 数据创建的虚拟视频动画。超现实是最大的 3D 姿态估计数据集,但是还没有被接受作为比较 3D 姿态估计算法的基准。这主要是因为它是一个合成数据集。
结论
人体姿态估计是一个不断发展的学科,有机会在各个领域进行研究。最近,在人体姿态估计中有一个值得注意的趋势,即转向使用深度学习,特别是基于 CNN 的方法,因为它们在任务和数据集上的优异性能。深度学习成功的一个主要原因是大量训练数据的可用性,特别是随着 COCO 和 Human3.6M 数据集的出现。
如果您有兴趣进一步阅读和更详细地探索人体姿态估计,请查看这些资源。
现在我们知道了一点什么是姿态估计,不同类型的姿态估计之间的区别,以及…
www.fritz.ai](https://www.fritz.ai/pose-estimation/)
这个博客是努力创建机器学习领域简化介绍的一部分。点击此处查看完整系列
在你一头扎进去之前就知道了
medium.com](https://medium.com/@prakhargannu/machine-learning-simplified-1fe22fec0fac)
或者只是阅读系列的下一篇博客
对迷人的 CNN 层的不同变化的直观介绍
towardsdatascience.com](/types-of-convolution-kernels-simplified-f040cb307c37)
参考文献
[1]曹,哲,等,“基于局部亲和场的实时多人二维姿态估计”IEEE 计算机视觉和模式识别会议录。2017.
【2】微软公司。xbox 360 版 kinect,2009 年。
[3] Pavllo,Dario 等人,“视频中的三维人体姿态估计,采用时间卷积和半监督训练。”arXiv 预印本 arXiv:1811.11742 (2018)。
[4]方,郝舒,等,“Rmpe:区域多人姿态估计”IEEE 计算机视觉国际会议论文集。2017.
[5]林、梅尔、贝隆吉、海斯、佩罗娜、拉马南、杜尔和兹尼克。微软 coco:上下文中的公共对象。在欧洲计算机视觉会议上,第 740-755 页。斯普林格,2014。
人类选择,AI 不选择
人工智能不是人类
专家称,到 2060 年,人工智能将在各方面胜过人类。好吧。
首先,正如约吉·贝拉所说,“很难做出预测,尤其是对未来。”我的飞车在哪里?
第二,标题读起来像 clickbait,但令人惊讶的是,它似乎与的实际调查非常接近,该调查询问人工智能研究人员“高级机器智能”何时到来,定义为*“当没有辅助的机器可以比人类工人更好、更便宜地完成每项任务。”*这个定义中的“任务”是什么?“每个任务”有意义吗?我们能列举所有的任务吗?
第三也是最重要的,高级智能只是完成任务吗?这是人工智能和人类智能的真正区别:人类定义目标,AI 试图实现它们。锤子会取代木匠吗?他们每个人都有自己的目的。
理解人工智能和人类智能之间的这种差异至关重要,这不仅有助于解读流行媒体上所有疯狂的头条新闻,更重要的是,有助于对这项技术做出实际、明智的判断。
这篇文章的其余部分介绍了一些类型的人工智能,人类智能的类型,以及鉴于它们之间的差异,人工智能的似是而非的风险。简而言之:与人类不同,每一种人工智能技术都有一个数学上完美定义的目标,通常是一个标签化的数据集。
人工智能的类型
在监督学习中,您定义一个预测目标,并收集一个带有与该目标对应的标签的训练集。假设您想识别一张图片中是否有丹泽尔·华盛顿。那么你的训练集就是一组图片,每张图片都标有包含或不包含丹泽尔·华盛顿。标签必须在系统之外贴上,很可能是由人来贴。如果您的目标是进行面部识别,那么您的标注数据集就是带有标签的图片(图片中的人)。同样,你必须以某种方式收集标签,可能是与人。如果你的目标是将一张脸与另一张脸进行匹配,你需要一个匹配是否成功的标签。总是贴标签。
你读到的几乎所有机器学习都是监督学习。深度学习,神经网络,决策树,随机森林,逻辑回归,所有在标记数据集上的训练。
在无监督学习中,你再次定义一个目标。一种非常常见的无监督学习技术是聚类(例如,众所周知的 k 均值聚类)。同样,目标是非常明确的:找到最小化一些数学成本函数的集群。例如,在同一聚类内的点之间的距离小,而不在同一聚类内的点之间的距离大的情况下。所有这些目标都定义得非常明确,它们都有数学形式:
这个公式感觉和人类指定目标的方式很不一样。大多数人类根本看不懂这些符号。他们不是正式的。此外,人类中“目标导向”的思维模式是非常不寻常的,它有一个专门的术语。
在强化学习中,你定义了一个奖励函数来奖励(或惩罚)朝着目标前进的行为。这是人们最近在国际象棋和围棋等游戏中使用的技术,在这些游戏中,可能需要许多动作才能达到特定的目标(如将死),所以你需要一个奖励函数,在这个过程中给出提示。同样,不仅仅是一个定义明确的目标,甚至是一个定义明确的实现目标的奖励函数。
这些是目前热门的人工智能(“机器学习”)类型,因为最近在准确性方面取得了巨大的进步,但人们已经研究了许多其他类型的人工智能。
遗传算法是另一种受生物学启发的解决问题的方法。一种方法是从一群数学构造(本质上是函数)中,选择那些在问题上表现最好的。尽管人们对生物学的类比很情绪化,但是定义“最佳”的适应度函数仍然是由人类选择的具体的、完全指定的数学函数。
还有电脑生成艺术。比如深梦 ( 图库)就是深度学习神经网络生成图像的一种方式。这看起来更人性化,更少目标导向,但事实上人们仍然在指导。作者高度描述了这个目标:“无论你在那里看到什么,我都想要更多!”取决于网络的哪一层,放大的特征可能是低级的(如线、形状、边、颜色,见下面的 addaxes)或高级的(如对象)。
Original photo of addaxes by Zachi Evenor, processed photo from Google
专家系统是一种在正式表达的知识体上使用 if-then 规则做出决策的方法。它们在 20 世纪 80 年代有点流行。这些是一种“好的老式人工智能”(go fai),这是一个基于操纵符号的人工智能术语。
人类和人工智能的另一个共同区别是,人类需要长时间的学习,而 AI 通常会针对每个问题从头开始重新训练。然而,这种差异正在缩小。迁移学习是训练一个模型,然后在不同的环境中使用或调整该模型的过程。这是计算机视觉领域的行业实践,深度学习神经网络已经使用以前网络的特征进行了训练(示例)。
长期学习的一个有趣的研究项目是 NELL 的“永无止境的语言学习”。内尔爬上网络收集文本,试图提取信念(事实),如“ airtran 是一个运输系统”,以及信心。它从 2010 年开始爬行,截至 2017 年 7 月已经积累了超过 1.17 亿个候选信念,其中 380 万个是高置信度(至少是 1.0 的 0.9)。
在上面的每一个例子中,人类不仅指定一个目标,而且必须明确地指定它,通常甚至用数学来形式化。
人类智力的类型
人类的智力有哪些类型?甚至很难列出一个清单。心理学家对此已经研究了几十年。几千年来,哲学家们一直在与之角力。
智商是通过语言和视觉测试来衡量的,有时是抽象的。它基于这样一种观点,即所有的认知能力都有一个共同的智力(有时称为“ g 因子”)。这个想法并不是所有人都接受的,智商本身也是被热议的。例如,一些人认为,具有相同潜在能力但来自不同人口统计群体的人可能会被不同地测量,这被称为差异项目功能,或简称为测量偏差。
人们描述流动智能(解决新奇问题的能力)和结晶智能(运用知识和经验的能力)。
情商的概念出现在大众媒体上:一个人能够识别自己和他人的情绪,并利用情绪思维来指导行为的能力。目前还不清楚学术界对此的接受程度。
更广为接受的是五大性格特征:对经验的开放性、责任心、外向性、宜人性和神经质。这不是智力(或者是?),而是说明了与计算机智能的强烈差异。“性格”是预测一个人行为的一组稳定的特质或行为模式。人工智能的个性是什么?这个概念似乎不适用。
通过幽默、艺术或对意义的探索,我们离定义明确的问题越来越远,却离人性越来越近。
人工智能的风险
人工智能能否超越人类智能?
抓住大众媒体的一个风险是奇点。作家兼数学家 Verner Vinge 在 1993 年的一篇文章中给出了一个令人信服的描述:“在三十年内,我们将拥有创造超人智慧的技术手段。不久之后,人类的时代将被终结。”
这种风险至少有两种解读方式。常见的方式是某种神奇的临界质量会引起机器智能的相变。我一直不明白这个论点。“更多”不代表“不同”。这种观点类似于“当我们密切模仿人脑时,将会发生类似人类(或超人)的事情。”也许吧?
是的,大量计算能力和大量数据的可用性导致了 AI 结果的相变。语音识别、自动翻译、计算机视觉和其他问题领域已经完全转变。2012 年,当多伦多的研究人员将神经网络重新应用于计算机视觉时,一个著名数据集的错误率开始快速下降,直到几年内计算机击败了人类。但是计算机和以前一样做着同样明确的任务,只是做得更好。
ImageNet Large Scale Visual Recognition Challenge error rates. 0.1 is a 10% error rate. After neural networks were re-applied in 2012, error rates dropped fast. They beat Andrej Karpathy by 2015.
更引人注目的观察是:“奇点出现的几率可能很小,但后果如此严重,我们应该仔细思考。”
另一种解释奇点风险的方式是,整个系统将发生相变。这个系统包括计算机、技术、网络和设定目标的人类。这似乎更正确,也完全合理。互联网是一个阶段性的变化,手机也是。在这种解释下,人工智能存在大量看似合理的风险。
一个可能的风险是算法偏差。如果算法参与重要决策,我们希望它们是可信的。(在之前的一篇帖子中,我们讨论了如何衡量算法的公平性。)
Tay,一个微软聊天机器人,在 24 小时内被推特教种族主义和仇视女性。但 Tay 并没有真正理解什么,它只是“学习”和模仿。
亚马逊的面部识别软件 Rekognition 错误地将 28 名美国国会议员(大部分是有色人种)与已知罪犯进行了匹配。亚马逊的回应是,美国公民自由联盟(谁进行了测试)使用了一个不可靠的截止值,只有 80%的信心。(他们推荐 95%。)
麻省理工学院的研究人员 Joy Buolamwini 展示了几种计算机视觉系统中的性别识别错误率对于深色皮肤的人来说要高得多。
所有这些不可信的结果至少部分来自训练数据。在 Tay 的案例中,它被 Twitter 用户故意输入了充满仇恨的数据。在计算机视觉系统中,有色人种的数据可能更少。
另一个可能的风险是自动化。随着人工智能在解决汽车驾驶或农田除草等问题方面变得更具成本效益,过去从事这些任务的人可能会失业。这是人工智能加资本主义的风险:企业将各自努力提高成本效益。我们只能在社会层面上解决这个问题,这很困难。
最后一个风险是糟糕的目标,可能会因一心一意而加剧。回形针问题令人难忘地说明了这一点,首先是尼克·博斯特罗姆在 2003 年对的描述:*“超级智能的唯一目标完全是任意的,比如制造尽可能多的回形针,并且会全力抵制任何改变这一目标的尝试,这似乎也是完全可能的。不管是好是坏,人工智能不需要分享我们人类的动机倾向。”*甚至有一款网页游戏就是受这种想法启发。
了解你的目标
我们如何应对上述一些可能的风险?一个完整的答案是另一个完整的帖子(或者书,或者一生)。但是让我们提一件:理解你给你的 AI 的目标。因为所有的人工智能只是优化一个定义良好的数学函数,这就是你用来说你想解决什么问题的语言。
这是否意味着你应该开始阅读积分和梯度下降算法?我能感觉到你的眼睛闭上了。不一定!
目标是在你的业务需求(人类语言)和它如何被测量和优化(人工智能语言)之间的协商。你需要有人对双方说话。这通常是业务或产品所有者与数据科学家或定量研究人员的合作。
我举个例子。假设您想使用模型推荐内容。你选择优化模型来增加内容的参与度,这是通过点击量来衡量的。瞧,现在你明白互联网充满点击诱饵的一个原因了:目标是错误的。你关心的不仅仅是点击量。公司试图过滤掉不符合政策的内容,从而在不触及人工智能的情况下修改目标。这是一个合理的策略。另一个策略可能是,如果人工智能推荐的内容后来被发现违反政策,则向训练数据集添加严厉的惩罚。现在我们开始认真思考我们的目标如何影响人工智能。
这个例子也解释了为什么内容系统会如此神经质:你点击 YouTube 上的一个视频,或者 Pinterest 上的一个大头针,或者亚马逊上的一本书,系统会立即推荐一大堆几乎一模一样的东西。为什么?点击通常是在短期内衡量的,因此系统针对短期参与进行了优化。这是一个众所周知的推荐挑战,围绕数学定义一个好的目标。也许目标的一部分应该是推荐是否令人恼火,或者是否有长期参与。
另一个例子:如果你的模型是准确的,但你的数据集或测量没有考虑到你的企业中代表性不足的少数群体,你可能对他们表现不佳。你的目标可能真的是对各种不同的人都准确。
第三个例子:如果你的模型是准确的,但你不明白为什么,这可能是一些关键应用程序的风险,如医疗保健或金融。如果您必须了解原因,您可能需要使用人类可以理解的(“白盒”)模型,或者您现有模型的解释技术。可理解性可以是一个目标。
结论:我们需要理解人工智能
尽管你在大众媒体上读到过,但人工智能无法完全取代人类。人类和人工智能最大的区别在于只有人类选择目标。到目前为止,人工智能还没有。
如果可以拿走人工智能的一件事:了解它的目标。任何人工智能技术都有一个完美定义的目标,通常是一个带标签的数据集。如果定义(或数据集)有缺陷,那么结果也会有缺陷。
更好地理解你的人工智能的一个方法是解释你的模型。我们成立了提琴手实验室来帮助。欢迎致电 info@fiddler.ai 联系我们。
原载于 2019 年 5 月 8 日https://blog . fiddler . ai。
人类不信任基于人工智能的呼叫
同样糟糕的客服,现在有了人工智能
人类代表也可能很糟糕,但不要试图用人工智能欺骗人们
客服的 AI“管用”,但人家不喜欢。我最近为了一份关于对话式人工智能和消费者信任状态的报告,与【clutch.co】的员工就此进行了深入的交谈。
研究结果很有趣。例如:
“73%的人不信任谷歌 Duplex 等人工智能语音技术来打简单的电话,尽管随着使用的增加,信任可能会建立起来”
在 B2C 领域,我对此有更多的想法,我想在这里提出来。开始了。
在星巴克,你支付额外的费用,因为他们是“高端”的,并且做一些事情,比如记住你的名字并写在你的杯子上。但是在许多商店,给你饮料的人和为你点菜的人不是同一个人。因此,这导致了这样一种情况,服务器在人群中寻找“丹尼尔”,希望找到正确的那个。这真的比一个无名无姓的机器以半价卖给你同样的 goop 好吗?
更让我对最近的客户服务经历感到愤怒的是,最近我在蒂姆·霍顿的汽车通道上,当我在开车离开之前把信用卡放回钱包时,窗口的人说了声“再见”,这是一个毫不隐晦的信号,促使我继续前进。顺便说一下,正好有一辆车在我后面等着,所以我觉得没有必要在付完饮料钱后 1 秒钟就开走。他们想让我像抢劫一样离开。
因此,人性化的客户服务可能会非常令人恼火。为什么不用基于人工智能的点餐系统来代替这些人呢?技术是存在的。考虑一下 Google Duplex ,它通过像真人一样的行为,代表 Google Assistant 用户给商店打电话预约或订购披萨:
Google Duplex: A.I. Assistant Calls Local Businesses To Make Appointments
当 Duplex 问世时,许多评论者强烈反对谷歌通过伪装成人来欺骗人们。他们是对的。我喜欢那一年谷歌停止使用座右铭“不要作恶”他们开始推出双面打印。谷歌可能在欺骗比萨饼制造商和发廊,但我更担心的是那些真正的坏演员将这项技术用作现代自动呼叫机来吸引消费者。我认为莱奥·格雷布勒说得最好,这远远超过了欺骗消费者:即使是用不幸的人作为测试假人来训练这些系统也是非常粗略的。我曾经和 Leor 一起研究过语音交互代理,从早期的文本到语音和语音到文本的转换,整个领域都在以疯狂的速度发展,以至于普通人都没有意识到他们正处于语音交互代理的新时代。
Leor Grebler talking about his voice interaction technology way back in 2012. It’s now 2019!
与仅仅一两年前的系统语音质量相比,这项技术非常非常强大。看看以下来自 VoiceNet 的语音样本:https://deep mind . com/blog/wave net-generative-model-raw-audio/
事情变得越来越有趣,这对消费者来说不会没有痛苦。举例来说,一位密友在过去几周有如下经历:
一名销售人员代表她的银行打电话给她。这是一个真正的销售电话,而不是一个骗局。与她通话的代理人有着人类应有的语调和热情,嘲笑她的 T2 闲聊,并停下来获取更多信息,正如你所料,但当她被问及一个人们通常不会问的奇怪问题时,通话速度慢了很多,然后一名带有印度口音的代理人加入了通话,接管了通话。该人士马上明确表示:“你一直在和我说话,但我们使用人工智能软件来克服口音障碍”。我的朋友很奇怪,挂了电话。这完全违反了。更糟糕的是,人工代理可能是同时拨打 50 个电话的备用系统。也许更多。
在我家,我们有一位年长的亲戚,自 2012 年以来一直在不要打电话的名单上,她在早上 6 点、7 点,甚至晚上 11 点通过她的座机接到机器人电话。这些都是老派录制的 robocalls,但是真的很让人气愤。一点都不酷。基本都是机械化骚扰。像这样的系统只会变得更糟,因为坏人得到了人工智能语音代理的东西。我在亚马逊上看了一下,有一些阻止垃圾电话的硬件设备,但切断电话线和反垃圾手机应用程序是更好的策略。
这是我拼凑的一个小东西,用来证明这项技术是切实可行的。它只会持续一个月左右,但它证明了这一点。打电话:+1 213–224–2234,你会听到我制作的一个基本会话代理。我给代理打电话的录音嵌在这里:
Me calling an artificial intelligence system on the phone, to show the basic capability.
像这样的系统有很多问题。请注意,我演示的系统预先告诉您它只能做某些事情,因此用户(调用者)更清楚会发生什么和正在发生什么。
在我与 Darryl Praill 的谈话中,我们讨论了人工智能如何不会取代销售人员,因为消费者讨厌被欺骗,而且现在的工具经常没有被正确应用(在道德上?)来帮助消费者。
My talk with Darryl Praill of VanillaSoft.com fame, about artificial intelligence in sales.
我提到的新调查报告的主要观点是:“消费者对谷歌 Duplex 等对话式人工智能工具表现出不信任,但随着使用的增加,信任将会建立。”离合器是华盛顿特区的一家 B2B 评级和评论公司。为了获得数据,离合器与全球数字解决方案公司 Ciklum 合作,调查了 500 多人对对话式人工智能的信任程度。调查告诉我们这项技术将会被使用。很多。所以系好安全带接受消费者的投诉。
一个机器人打电话卖东西已经够烦人的了,但这种人工智能呼叫技术并不像一个非法来电者试图诈骗你。相反,这是一个恼人的信任危机业务工具,可以扩展,并且很容易证明成本合理。这是伪装的机器人电话,还打了类固醇。即使人类介入捕捉系统不知道该做什么的情况,使用技术来欺骗人们也不是一个好主意。信任将是一个问题。
我朋友的爸爸告诉了她一个巧妙的方法。简单地问打电话的人是不是人。许多这样的系统被设计成将你拉向人类作为回应。我从我在一次会议上遇到的一位银行业人士那里得知,咒骂系统可能会让系统挂断你的电话,而用愤怒/吼叫的语气说话可能会让你遇到真人。但我不是一个伟大的演员,所以我会坚持“再见”。
在这篇文章中,你看到了我对人类和人工智能代理的一些负面体验和极度沮丧。如果你喜欢这篇文章,那么看看我过去最常读的一些文章,比如“如何给一个人工智能项目定价”和“如何聘请人工智能顾问”嘿,看看我们的时事通讯!
下次见!
——丹尼尔
Lemay.ai
丹尼尔@lemay.ai
人类一直在努力了解罕见的癌症,让我们给人工智能一个机会。
癌症分型的挑战&人工智能如何帮助
被诊断患有一种罕见的癌症,如肝内胆管癌,会有一定程度的孤独感。大多数人甚至不知道癌症发生在哪里。这是一种胆管癌,一组从肝脏伸出的管状结构,在美国的发病率为 14 万分之一。
因为 ICC 由于其罕见性而没有得到很好的研究,医生不能真正参考以前的病例来预测新患者的结果。存活时间可以从几个月到几年不等,没有办法知道患者将属于哪个存活组——没有已知的遗传或细胞标记来预测这一点。拥有这样的生存标记是很重要的,不仅对于患者通过了解他们可能的结果来亲自适应他们未来的生活,而且对于他们的医生决定治疗也是如此。
对 ICC 进行“分型”,或者从整体上发现癌症中的亚组,可以帮助缓解这个问题,我将在下一节进一步解释。然而,这是一项艰巨的任务。研究人员可以花费长达几十年的时间进行体力劳动来对癌症进行分型,但仍然可能失败,因为没有足够的病例来做出有力的科学结论。随着最近人工智能(AI)的蓬勃发展,我们现在有能力自动化重复的过程,理解复杂的视觉数据,并从甚至很小的数据集中提取有价值的信息。人工智能提供了新的工具,最终可以更深入地了解罕见的癌症,并在未知的黑暗中给患者带来一些光明。
癌症的亚型是什么意思?
抗击癌症的最大困难之一源于这种疾病在人群中表现出的多样性。由于肿瘤之间的遗传变异,患有相同类型癌症的两个患者可能具有显著不同的生存结果和治疗方案。
为了促进治疗决策,临床医生根据细胞,有时是基因特征将每种癌症分成亚组——这被称为癌症的亚类型。在一个很好的分型癌症中,每个亚组中的所有患者应该具有相似的疾病严重程度和生存结果,当与来自同一癌症的不同亚组的患者比较时,这是不同的。
能够根据疾病的严重程度和肿瘤生物学的差异对患者进行比较和分组,对于确定适当的治疗和预测新患者的生存结果非常重要。这项任务主要由病理学家来完成,病理学家是一名临床医生,接受过在显微镜下观察组织以描述疾病特征的训练。
当患者被诊断患有癌症时,通常的程序是对癌块进行活组织检查以了解其细胞和结构组成。该组织将准备在显微镜载玻片上可视化,以更好地突出细胞形态。
例如,前列腺肿瘤的组织样本有五种主要模式,主要由癌细胞的“分化”程度,或者更简单地说,它们与正常细胞的相似程度来定义。分化良好的细胞生长缓慢,表明这是一种早期的、侵袭性较低的疾病。分化差的细胞表明更多的细胞死亡,或更具侵袭性的癌症,以及更差的生存结果。这五种分类模式用于创建 Gleason 评分,这是一种国际公认的前列腺癌疾病分期工具。
Survival probability of prostate cancer patients over 15 years. Those with a higher Gleason Score (G) have a lower probability of survival as time progresses. [1]
对于前列腺癌,亚型与细胞分化直接相关。同样的规则不一定适用于其他种类的癌症。例如,在某些皮肤癌中,典型特征之一是细胞伸长。
亚型是如何被发现的?
前列腺癌有一个最完善的分型方案。前列腺癌分型最初是由明尼阿波利斯弗吉尼亚州医疗中心的病理学主任Donald Gleason博士在 20 世纪 60 年代开始的 20 年中提出的。为了使前列腺癌患者的护理标准化,他亲自观察了数千个组织样本,并记录了复发模式,以与他们已知的生存结果进行比较。通过多次修改和多年的验证,我们有了今天所知的前列腺亚型。
通过根据病理将患者分组来对癌症进行分型是一项具有挑战性的工作,并且极其耗时。看一张显微镜载玻片就像在谷歌地图上看整个纽约市,纽约市的每条街道代表一组细胞。想象一下看着成千上万像格里森一样的人!此外,一个病理学家可能会看到与另一个病理学家不同的东西——人类偏见是另一个需要克服的因素。
罕见癌症面临另一个挑战。与前列腺癌医学不同,前列腺癌医学有一个定义明确的分级系统,不幸的是发生率很高,而罕见癌症则没有。通常情况下,一个研究机构没有足够大的样本数据集来对组织中所有发生的模式进行全面分析。
计算病理学能有什么帮助?
计算病理学和基于人工智能的模型为使用传统方法对癌症进行分型的挑战提供了答案。虽然人类可能需要数年时间来评估数千张幻灯片,但最先进的图形处理单元(GPU)可以在不到一周的时间内完成。此外,人工智能模型有可能从小型数据集提取更多信息,首次为开发罕见癌症的亚型开辟了可能性。
肝内胆管癌是一种罕见的原发性胆管肝癌。由于其罕见性,这种癌症没有确定的亚型,使得治疗决策变得困难。
我们在纪念斯隆-凯特琳癌症中心的计算病理学小组最近发表了一份预印本,检查了 246 张 ICC 的数字化切片,并建立了一个基于人工智能的模型,以在数据集内搜索潜在的亚型【2】。尽管案件数量看似不多,但它是国际商会在世界上最大的数据集。
我们的新算法类似于人类病理学家。使用类似于自动驾驶汽车如何识别道路上不同特征的方法,我们的算法首先查看所有数字化的幻灯片,并在所有患者的所有组织中找到视觉上相似的模式。接下来,我们使用统计分析将这些模式与每个患者的已知生存结果进行比较。例如,如果假设每个模式都是一个亚型的指标,该分析将评估有多少患者的组织包含每个模式时具有高复发风险。
在这种情况下,人工智能可以帮助那些超负荷工作且供不应求的病理学家,同时以积极的方式为医学研究做出贡献。在未来,直到癌症不再存在于这个地球上,面对 ICC 和其他罕见癌症的不幸诊断的人们将对未来有更好的理解。
点击此处阅读关于该研究的详细信息。
哈桑·穆罕默德是纪念斯隆-凯特琳癌症中心和威尔·康奈尔医学院的博士生。他是托马斯·富克斯实验室(Thomas Fuchs Lab)的成员,该研究小组致力于开发人工智能模型,以改善医学图像分析和癌症研究。这项工作得到了安珀·辛普森博士的 生存周期 资助。
参考文献
- 格里森评分对前列腺癌的预后价值。 BJU 国际89.6(2002):538–542。
- 迈向无监督的癌症分型:使用组织学视觉字典预测预后。 arXiv 预印本 arXiv:1903.05257 (2019)。
人类、机器和教育的未来
人工智能和新兴技术能让我们变得更聪明吗?
德克·克内梅尔和乔纳森·福利特
Figure 01: Education became formalized to accelerate our understanding of difficult, complicated, or abstract topics. [Illustration: “The School Teacher”, Albrecht Dürer, 1510 woodcut, National Gallery of Art, Open Access]
人类是如何学习的?我们的第一次学习是体验性的:对我们自己和我们周围的子宫之间的相互作用做出反应。体验式学习甚至延伸到子宫之外,延伸到我们的启蒙老师——我们的母亲和其他有意或无意给我们留下印象的人——唱首歌,让自己感动。事实上,我们在人类历史上所做的许多学习都是这种简单生活的刺激-反应模型,并且在这个过程中,继续学习。这种经验学习的固有模式对很多事情都适用,比如如何对待他人,如何划船,或者去哪里找淡水。然而,在帮助我们掌握语法、哲学和化学等更微妙的东西时,它就不那么有效了。它完全不足以教授我们高度复杂的知识领域,如理论物理。这就是为什么教育变得形式化的一个原因——加速,甚至仅仅是使我们对困难、复杂或抽象的主题的理解成为可能。
在西方,正规教育在大学达到了现代的顶峰,其起源可以追溯到 11 世纪的意大利博洛尼亚。高等教育植根于基督教教育和僧侣教育的延伸——其本身来自佛教传统和远东——从历史上看,高等教育是少数特权阶层的知识绿洲。融入巴黎、牛津和布拉格等城市,虽然大学是自己的地方和空间,但它生活在一个更大的城市和社区中,并成为其中的一部分。关注的焦点是艺术,这个术语的用法与我们今天所想的非常不同,它包括七种艺术的全部或子集:算术、几何、天文学、音乐理论、语法、逻辑和修辞学。
今天的大学经历看起来非常不同。学科数量激增,“艺术和科学”仅代表一所大学中的一个“学院”——几十年来,与商业和工程等更实用的应用知识相比,这个学院的重要性一直在下降。现在比以往任何时候都有更多的公民进入高等教育机构,知识已经大大民主化,尽管它对于仅仅维持简单的生活变得越来越重要。而且,在大多数情况下,随着我们的世界变得越来越世俗,大学,尤其是你的学校的宗教根源被隐藏或淡化了。大约一千年来,这些变化以不同的速度和方式发生。虽然差异是显著的,并且反映了知识和文明的进化方式,但考虑到所涉及的时间长度,我们甚至可以认为这些变化是适度的。
Figure 02: Historically, an oasis of knowledge for the privileged few, the university was integrated into cities such as Paris, Oxford, and Prague. [Illustration: “University”, Themistocles von Eckenbrecher, 1890 drawing, National Gallery of Art, Open Access]
当然,鉴于近几十年来技术的快速变化及其对经济和社会的影响,正规教育已经过时了。正规教育设计在一个模拟的世界里,强迫每个人都学习相同的课程,不同的科目以差不多相同的方式被教授,充其量只能说是笨拙地进行。出现了各种不同的哲学和教学法,它们引入了不同的学习方法,但这些方法并不是平均分布的。标准的教育方法可能是令人麻木的死记硬背——每个教授有数百名学生的大礼堂。不考虑这些障碍,我们渴望一种更好的方式。下一波重大的教育创新看起来将会是极端的。在未来的几十年里,我们可以期待人工智能和其他新兴技术的融合,以及对我们人类动物——我们如何学习、如何生活、如何参与互联人的社会——不断增加的知识,将彻底改变教育。
在一个新兴技术的世界里,教育将会发生怎样的变化?人工智能将如何协助、增强、管理、调节以及改变驱动人类学习的复杂互动?通过检查当前正规教育模式中的一些差距,我们可以看到这种技术能够并将发挥重要作用的一些地方。事实上,这些变化的痕迹已经在这里,就在我们面前。
人工智能与个性化课程之路
KGIMinerva Schools的创始人本·尼尔森(Ben Nelson)支持互联教育,这种教育利用技术的信息共享能力,采用系统思维方法,认为将体验的各个部分联系在一起非常重要。Minerva 学校的理念和结构是对未来教育的启发。“在未来的教育系统中,在线人工智能和虚拟现实平台将在知识传播中变得非常重要。教育应该教会我们变得更加灵活,并提供变革的工具,”尼尔森在ESADE 商学院组织的关于教育未来的小组讨论中说道。尼尔森表示,这种模式转变“将带来更个性化的学习体验,为每个学生带来更好的用户体验。”
为每个学生定制课程的第一步已经在实地进行了。出于这个目的,有许多公司正在为教育市场开发人工智能驱动的软件。虽然人工智能可以提供初步评估和学习任务,但人类合作也是一个重要因素。教师可以与这些工具协同工作,并可以修改甚至覆盖建议,以更好地适应学生。例如,总部位于纽约的电子学习公司 Knewton 使用人工智能自适应学习技术来识别学生现有知识的差距,并为包括数学、化学、统计和经济学在内的各种学科提供最合适的课程。超过 1400 万学生已经学习了 Knewton 的课程。来自 Cognii 的 EdTech 软件使用由人工智能驱动的虚拟学习助手驱动的对话来辅导学生并实时提供反馈。Cognii 虚拟助手是根据每个学生的需求定制的。来自匹兹堡的专注于数学的 Carnegie Learning 开发了一种智能教学设计,使用人工智能在正确的时间向学生提供正确的主题,实现了完全个性化的学习、测试和反馈周期。这些例子虽然还处于萌芽阶段,但表明了人工智能支持的个性化学习的推进,随着时间的推移,这将改变正规教育的面貌。
优化教育体验,从被动学习到主动学习
然而,就教育交付的变化而言,个性化只是冰山一角。为了深入了解正规教育在未来将如何进一步转变,我们采访了尼尔森,他谈到了 Minerva 学校的学习理念:“如果你想到学院或大学中的传统教育,你会想到它是由真正独立的单元组成的集合体,”尼尔森说。“你在学校里学了 30 门课程。有 30 位不同的教授教授这些课程。那些教授真的不怎么合作。事实上,他们不知道在他们特定的班级里,学生的构成是什么。也许某些学生会选择 XYZ 的课程。其他学生可能已经学过 ABC 课程了。……这种教育的本质在很大程度上是以单位为基础的。”
纳尔逊认为大学的方式——一种以讲座为基础、面向信息传播的方式——是一种迫切需要创新的方式。“学生进来后,教授会在大部分时间里代表学生发言。即使教授会回答问题,讲座也能有效地从一个教授传给一个学生。尼尔森说:“大多数学生在课堂上都是被动地坐着。“这两种模式有两个问题。从课程设计的角度来看,这个世界并不是在基于学科知识的离散部分中运转的。”
“在大多数情况下,世界并不被划分为与生物学相分离的物理学,也不被划分为与经济学相分离的政治学,等等。对离散信息的学习与世界的运作方式没有太大关系。顺便说一下,这也与人们的思维方式无关。”
尼尔森说:“当我们想到某个聪明的人,或者能够思考如何将实际知识恰当地应用于特定情况的人时,我们会想到某个人在一种情况下吸取了教训,并将其应用于另一种情况。”。“当你提供的教育是分散的包时,大脑很难理解这一点。第二,当你坐在一个被动接收信息的环境中时,大脑中的信息保留量微乎其微。一项又一项的研究表明,一个典型的基于测试和讲座的课程,在学期结束后的六个月内,学生已经忘记了他们在期末考试中所知道的 90%,这基本上意味着它是无效的。[在密涅瓦,]我们改变了这两个方面。”
Nelson 描述了 Minerva 的课程架构方法,该方法由他们的技术平台提供支持和交付。“首先,我们创建了一个课程和交付机制,确保您的教育不是以一门课程为基础,而是从课程的角度来看。我们这样做的方式是,我们将几十种不同的元素,学习目标,我们称之为思维习惯或基本概念。思维习惯是随着练习而自动形成的东西。基础概念是可以生成的东西,一旦你学会了,你就可以用许多不同的方式来构建。然后这些学习目标被引入到一门特定背景下的课程中。然后它们会出现在同一门课的不同情境中,然后它们会在新的情境中再次出现在整个课程中,直到你学会了可概括的学习目标。[这]意味着你已经从概念上学会了一些东西,以及在多种情况下实际应用它们的方法,这意味着当你遇到原始情况、原始情况时,你将能够知道在那些情况下该怎么做。”
尼尔森说:“我们已经部署了部分技术,但在不久的将来我们将继续开发和研究脚手架课程的概念——引入一个特定的学习目标,然后在四年内跟踪 30 名不同的教授如何应用和掌握该学习目标。”“这听起来不像是如此激进的改进,但它从根本上改变了教育的本质。”
“顺便说一下,这只能通过技术来实现,”尼尔森说。“如果没有技术,您就无法在课堂环境中跟踪单个学生的进步并修改他们的个性化智力发展。你需要有数据。你需要有一些数据,教授可以用这些数据做出反应并做一些事情。没有技术,这是不可能的。收集数据是不可能的。不可能传播出去。不可能以教授可以使用的形式实时呈现给他们。”
虽然互联技术是这种方法的促成因素,但同样重要的是实施更好的学习方法的知识和意愿。“我们确保我们 100%的班级都非常活跃,”Nelson 说。“完全主动是什么意思?这意味着我们的教授不允许每次讲话超过四分钟。他们的教案是以这样一种方式组织的,即教授的工作实际上是促进学生对他们所学知识的新颖应用……并且实际上利用课堂时间来促进学生的智力发展。我们这样做是因为我们能够这样做,因为我们已经建立了一个全新的学习环境。”主动学习课程结束两年后,学生能记住 70%的信息,相比之下,基于讲座和测试的课程只有 10%的记忆率。“密涅瓦课程非常吸引人,”尼尔森说。“它们非常密集。它们是综合的,从某种意义上说,你把不同的领域和领域结合在一起,它们是有效的。
Minerva 的教育环境和课程完全通过视频直播在线进行。“所有的学生都住在一起,但教授们却遍布世界各地。我们聘请教授作为我们的全职员工,但我们不会让地理限制他们,这是拥有一个能够让教授和学生密切互动的平台的另一个好处。这考虑到了两件事。它让我们的教授在教授他们的学科方面成为世界上最好的,也让学生能够改变他们的位置。这就是为什么在 Minerva,学生毕业时生活在七个不同的国家,因为他们不必带着教员一起走。你在世界的任何地方都可以接触到这里的教师。它让我们的学生有机会接受非常深入的正规教育,并有能力在现实世界的多种背景下应用这些知识。”
从主动学习到增强现实
虚拟和增强现实是新兴技术,具有令人兴奋的教育应用——这与纳尔逊和其他人支持的主动学习思想非常吻合。斯蒂芬·安德森(Stephen Anderson)是设计教育的领导者,也是 Capital One 的实践发展主管,他认为增强现实等新兴技术是创造持续学习和正反馈循环环境的下一步。
Figure 03: VIrtual reality has the potential to immerse us in new learning environments and help us cultivate our sense of curiosity. [Photo: by Scott Web on Unsplash ]
“我们有这种循序渐进的方法,我们让同龄的孩子在同一个年级学习,希望他们学习同样的内容。它是非常工业化或组织化的。我们将对所有学员一视同仁。让他们通过,他们将在这个年龄带着这些知识毕业,哦,顺便说一下,他们必须在今年涵盖这些材料。我明白为什么我们会采用这种模式,因为这种模式易于扩展,”Anderson 说。“但我们知道这没用,对吗?这不是教人的最好方法。教人的最好方法并不新鲜。它至少在 80 年代末、90 年代的玛利亚·蒙台梭利就已经存在了,在那里它更多的是关于学习者的。更多的是培养对世界的好奇心,以及学习和自学的兴趣。你可以在世界各地的蒙特梭利项目中看到这一点……他们的分支或各种各样的东西,比如华德福学校,在那里它几乎处于另一个极端——那里没有对全面和涵盖所有概念的关注。更重要的是亲自动手,积极参与,鼓励或基于项目,基于调查,所有这些事情。”
安德森给了我们一个积极的学习例子,展示了增强现实如何在各种各样的环境中帮助我们以动手的方式学习——甚至是在日常任务中,比如在家里做饭。“…随着相机和投影仪的价格下降,想象一下,如果我们家里的每个灯泡都可以投影到一个表面上,并且还可以看到互动。所以,现在几乎所有的表面都变成了互动的。所以,你可以[在厨房]在你的砧板前切东西,然后[从学习系统]得到反馈,比如这块肉应该薄一点或厚一点。……你会看到反馈循环、互动性和趣味性这些永恒的理念,”安德森说。
纳尔逊也看到了将会出现的现实和未来趋势,但还没有出现,因为他谈到了新兴技术和 Minerva:“我相信未来的一些真正机会将是增强现实将有效地取代对笔记本电脑类型界面的需求。我可以想象增强现实,你在一个地方有一个教室的学生和一个教授,或者你在世界上 30 个不同的地方有 30 个学生和一个教授通过数据叠加进行身临其境的真实生活体验。我认为当你有机会让教育消除界限和约束时,你会突然对教育的本质有非常不同的想法。这使得人类能够提出比大多数大学目前所做的更先进的解决方案。”
Creative Next 是一个播客,探索人工智能驱动的自动化对创意工作者,如作家、研究人员、艺术家、设计师、工程师和企业家的生活的影响。本文附 第一季第七集——人类如何学习 和 第一季第九集——高等教育创新 。
人类对机器。在零售中意味着什么?
上个月,我参加了一场关于“零售业技术的未来以及技术能否取代人类”的辩论随后,我整理了一些内部零售的想法(这里也发表了)。
在过去的十年里,技术的进步已经破坏了人类体验的大部分方面。随着技术日新月异的发展,全球零售业的创新和实验都在加速,这也就不足为奇了。根据 Gartner 的数据,2019 年,全球零售技术支出将增长 3.6%,达到 2036 亿美元,在技术支出方面超过大多数其他行业。
我们看到的新兴技术的发展通常是为了满足提高效率、提升客户服务或接触新的未被满足的受众的需求。
随着客户支持的即时、24 小时需求,语音和聊天助手已经迅速取代了大多数传统的在线帮助平台和传统服务。顾客不再需要在决定下一次购买前等待信息。丝芙兰、路易威登、H&M 和许多其他品牌都在使用智能界面来改善客户体验;到 2023 年,零售聊天机器人预计将带动 1120 亿美元的零售销售额。
物联网的使用率正在上升;实体零售商正在通过访问来自 RFID 标签、相机、传感器、跟踪器和设备的新型数据来丰富商店体验。当顾客在网上查看某一特定产品的价格以进行比较时,商店中捕获的移动数据可以通知零售商,表明他们对商店定价、销售或环境不满意。沃尔玛已经推出了 IRL(智能零售实验室)概念,它可以实时跟踪库存,这意味着顾客不会在没有他们想要的产品的情况下离开商店。
随着网上购物和退货成为常态,机器人已经成为“履行”一词的同义词。自 2013 年以来,亚马逊一直在使用机器人来帮助他们的履行中心,但不要认为这些机器人是用来完全取代员工的。在机器人的帮助下,他们纽约配送中心的 2700 多名仓库团队现在不再需要执行耗时的任务,例如从一个过道走到另一个过道,在不同部门寻找商品来完成一个订单。然而,除了亚马逊的机器人/人类标签团队,新英格兰的机器人公司 Symbotic LLC 也制造了自动仓库机器人,比员工更快、更有效地完成订单——劳动力成本降低了 80%,同时在小 25 %- 40%的空间内完成相同数量的订单。
所有正在进行技术进步的零售商都有一个共同点,那就是他们正在以闪电般的速度前进。上述品牌和直接面向消费者的宠儿,如 Glossier、Allbirds、Casper 和 Away,正在通过以运营和创新的方式投资技术来巩固竞争优势,使顾客购物更容易、更有趣。
随着零售技术的进步,问题来了,它总是符合购物者的最大利益吗?或者它在人际交往中造成了脱节,特别是在顾客和零售商之间?
最近的争议围绕着使用面部识别来确定客户的情绪、性别和年龄是否可能侵犯隐私的辩论。美国的沃尔玛和沃尔格林正在测试面部识别,试图个性化商品展示并改善客户服务。但是相关的问题出现了,比如面部照片存储在哪里,谁可以访问它们?难道实体员工不能比电脑更快更有效地理解和服务不开心的顾客吗?
未来两年,零售商将投资于日益增长的智能界面趋势。然而,最先进的技术限制了对话式聊天、语音和高级增强和虚拟现实的“人性化”水平。"
两个原因;
- 首先,推动智能聊天和语音界面的对话式人工智能并没有真正理解自然人类语言。与 Alexa、Siri 和 Google Assistant 的对话是基于命令和事务性的,导致对话支离破碎、互不关联,响应和解决时间缓慢。
- ****其次,今天的智能界面无法识别语调、肢体语言和俚语。在交谈中,同一个句子有成千上万种说法,声音上的屈折可以完全改变一个短语的意思。我们大多数人认为这是一种共同的语言,并随着时间的推移而发展。对我们来说,这种理解水平是自然的,但只是在人类之间。人类和机器之间还没有。
实现完全的人类语言理解和视觉识别并不容易。在一篇题为人工智能最先进方法的问题的文章中, Pat Inc 的联合创始人兼首席执行官贝丝·凯里写道,
“为了理解一段对话,人类不需要听到每一个可以想到的单词和短语组合(这是无限的)。我们只需要知道大约 3000 个基本日常对话所需的单词。”
Pat Inc 通过将当代语言学集成到人工智能中,解决了对话式人工智能的固有挑战,消除了用最新最大的数据不断训练算法的需要。
如果我们要从零售技术的现状中前进,弥合人类和机器之间的差距需要零售商:
1.了解客户行为何时自然与新创新相吻合。
零售商需要分析顾客在购物体验的哪个阶段需要人际互动,什么时候不需要。随着产品信息在网上变得更加容易获得,一些顾客对他们的购买变得更加了解,并且带着他们的信用卡到达购买阶段。这是专注于速度和效率的创新最有益的时候。当客户仍处于品牌认知阶段或产品比较阶段时,人的因素可以更有效地创造价值,并将个人联系保持在品牌客户服务模式的最前沿。
2.对新兴技术采用直观的以人为本的方法。
智能界面和其他应用类型为我们创造了一个以更自然、更直观的方式与设备互动的未来。如今的平台正在聚合越来越多的用户信息。在未来,他们还将开始收集环境和情境的相关数据。这不仅会减少对刷卡、语音或信息的依赖,还能让平台适应我们的情绪、精神状态和未言明的偏好。期待零售商了解比你想象的更多的顾客——我们的习惯、惯例、品味、经历——将个性化带到微观层面。
随着智能界面成为人类交互的一种有价值的替代方式,人类和机器之间的界限变得模糊了。为了成功整合,新型零售技术必须是直观的(不仅仅是高效的)、有价值的、微妙的,并且总是有助于改善客户体验。
推特: @emsharley
图片来源: https://unsplash.com/photos/0E_vhMVqL9g
机器人有没有实现意识?
人工智能、意识和强化学习交汇处的思考
Creative Commons Zero — CC0 https://www.maxpixel.net/Self-reflection-Thinking-Monkey-Reflection-Mirror-4788334
你的意识处于什么水平?凝视着昏迷的亲人的眼睛,我们许多人都为病人是否意识到收到的爱抚或低声祈祷而苦恼。我们将越来越多地找到这些问题的答案,这在很大程度上要归功于对强化学习、人工智能以及它们如何与意识相关的理解不断增长。
Tristan Bekinschtein 及其同事发表在《自然神经科学》上的一项开创性研究表明,一些植物人状态的患者仍然保留了一些基本的强化学习能力(Tristan A Bekinschtein,2009)。这些患者接受了输送到他们眼睛的气流,并配有一些预测刺激,如铃声——一种众所周知的基本强化学习能力测试。尽管无法用任何自我意识的方式表达或回应,这些患者仍然表现出预测空气喷射的能力。这些患者虽然与其他植物人几乎没有区别,但在某种程度上仍然是有意识的,这被证明是对哪些患者后来会恢复我们所认为的完全意识的高度预测。这有助于区分哪些病人应该继续维持生命,哪些应该被仁慈地允许离开人世。它也有助于区分意识的类别。
这些研究支持了一个多层次的意识理论,类似于诺贝尔奖获得者生物学家和神经学家杰拉尔德·埃德尔曼提出的理论。根据埃德尔曼的说法,意识存在于一个至少有两个部分的光谱上——主要意识和次要意识(埃德尔曼,2003)。初级意识是一种意识,包括感知、情感,以及至关重要的以促进预期决策的方式连接基本刺激的能力。这就是所谓的强化学习。在强化学习中,一些过去的经验被用来随着时间的推移改进决策以优化期望的结果。这种初级意识可以延伸到生命之树的根部。狗、鸟甚至许多两栖动物都表现出基本的强化学习能力。这意味着初级意识的核心是强化学习系统,这个系统允许我们区分积极和消极的刺激,从而从中学习,并根据这些过去的经验指导决策。这是否也需要人工智能,如机器人和具有强化学习能力的计算机,如 AlphaZero,应被视为具有初级意识,这是一个有待讨论的问题。随着机器人和人工智能扩大它们的强化学习工具箱,这可能是未来几十年一个激烈竞争的话题。
但这不是关于意识的最终结论。根据埃德尔曼的说法,与初级意识不同的是次级意识,也就是我们意识到的意识。这种元认知是我们通常与人类意识联系在一起的类型,因为它也预示着创造关于我们自己的高度详细的叙述的能力,我们是不同于我们周围环境的代理人。它还可能对应于一种不同类型的学习系统,一种涉及结构化逻辑和显式推理的系统。这种显式推理包括以抽象形式制作世界模型。为了像我们通常认为的那样有意识,我们创造了一个世界模型,把我们自己作为其中一个独特的组成部分,与提供我们意识的积极和消极刺激流分开。越来越多的证据表明,我们在“有意识的人类”中发现的这种类型的陈述性学习对应于某种基于模型的强化学习,与只表现出初级意识的动物的无模型强化学习形成对比(Samuel J. Gershman,2017)。在决策方面,这种基于模型的强化学习与经济学家丹尼尔·卡内曼在双过程理论中概述的“系统 2 思维”相似。系统 2 思维是深思熟虑的、努力的和基于逻辑的,与无模型强化学习的快速直觉决策特征相反。虽然我们对基于模型的强化学习算法在人脑中的确切数学形状知之甚少,更重要的是,它们如何与无模型的同类实时交互,这是目前认知科学中最热门的研究领域之一。因此,我们应该为即将到来的对人类意识的解释做好准备,这些解释深深植根于数学之中。
无生命的意识
定义第二意识的问题本身就是一个棘手的问题。近年来,我们已经能够获得这个古老之谜的一些线索。答案可能藏在神经科学家所谓的“心理理论”中。人类的大脑似乎不是单一的,而是由不同的“进化算法”驱动的许多相互竞争的需求和欲望的融合。在许多模块或算法中,有一个似乎负责创建一种思维理论——一种推测另一个人在想什么或感觉什么的能力。事实上,正如最近的一项研究表明的那样,为了更好地“感知”他人的感受,我们会无意识地模仿他人的面部表情。
通过反射性地采取与另一个人相同的表情,我们获得了关于他们精神状态的有用见解。这甚至可能是一些老夫妇变得彼此相似的原因——通过模仿对方的面部表情,他们脸上的皱纹逐渐汇聚成相似的图案。帮助和促进这一过程的是镜像神经元,当我们执行一个动作时,神经元的反应与我们看到别人执行一个动作时一样。这就好像当我们观察他人的行为时,大脑会尝试他们的行为。通过这样的机制,我们形成了关于另一个人的意图和动机的理论。为什么这样的心理理论可能很重要?对于像我们这样高度社会化的动物来说,知道另一个人在想什么对生存大有裨益。这个人是希望我们倒霉吗,或者,他们是友好的和潜在的盟友吗?
也许更有趣的是,我们似乎有一套关于我们自己的心理理论,这是我们大脑的一部分,试图理解并创造一个关于我们自己行为的故事。这是对第二意识的主要解释之一,也就是说,一种针对其拥有者的心理理论。这种自我参照的心理理论对我们所做的事情所产生的信念往往是完全虚假的,或者至少是不真诚的。我们已经很熟悉这个过程,只是名字不同,“否认”,或者虚构。有趣的是,否认似乎更像是常规而不是例外,因为我们或多或少地用错误的解释系统地解释我们的行为。一些神经科学家将意识比作律师,不断为我们的行为辩护,并为我们所做的事情编造可信但非常虚假的理由。
这种与律师的比较暗示了为什么我们可能首先需要这样一个令人讨厌的算法,也就是说,在一个高度社会化的环境中证明我们的行为是正当的。其他缺乏自我参照心理理论的动物似乎既不感到羞耻也不否认。虽然还没有一个明确的答案,为什么人类会进化出这样一种奇怪的进化算法,但我们有猜测的空间。其中一种推测源于所谓的“红皇后效应”从进化的角度来看,红皇后效应是当两种生物在生存斗争中发生一系列级联适应时产生的。一旦一种生物在激烈的战斗中占据上风,另一种生物就会进化出一种机制来对抗它,这一过程不断重复,因此两种生物都必须尽可能快地进化,以保持它们之间的平衡。因此,这里提到了《爱丽丝梦游仙境》中的红皇后,她向年轻的女主角解释说:“在这里,你需要竭尽全力才能保持在同一个地方。”
红皇后效应怎么可能产生第二意识?如果我们假设心理理论的发展是为了阅读他人的思想,更好地预测他们是否会帮助或阻碍我们,那么通过挫败这种适应并找到欺骗它的方法,我们将获得生存优势。如果一个有意识的心理理论可以为我正在做的事情构造一个托辞,即使它们明显是不真实的,这可以给我在一个高度社会化的环境中的生存优势。在警察和强盗的游戏中,如果你开发了一个真理探测器,那么我需要开发一个更好的谎言编造器,周而复始。
在我们目前的关头,假新闻可能会刺激人类内部类似的红皇后种族,将我们引向混合意识形态,将我们的生物湿件与机器智能融合。想想看,在计算机的帮助下,使用 Photoshop 等工具创造虚假故事的能力使得区分真实和虚构变得更加困难。编造虚假故事从未如此容易,因此越来越需要反制武器来揭开这些谎言。这种对策也可能采取算法的形式,尽管它存在于计算机中。例如,有一些人工智能算法被训练来区分真实图像和经过 Photoshop 修饰的图像。个人越来越有必要采用这种人工智能来区分假新闻和真实报道。以这种方式,我们可能会发现自己处于进化的压力之下,将这类人工智能融入到我们的生物湿件中,依靠它们来让我们比说谎者领先一步。很难说这种来回的措施会在哪里结束,但是将“混合”形式的意识添加到我们目前的生物学中并不是不可能的。埃隆马斯克(Elon Musk)支持的名为 Neuralink 的公司已经在创建神经鞋带方面取得了进展,这可能会在人类中实现这种形式的混合意识,将机器和生物融合为一个实体。
另一个可能导致混合意识形式的竞争压力来自市场。目前,进入顶级学术机构的竞争相当激烈,因此学生和求职者将利用像 Adderall 和 Ritalin 这样的药物来获得必要的成绩和考试分数,以获得这些令人垂涎的职位。如果一个申请人的意识受到神经花边或 CRISPR 基因改造的帮助,表现出获得最好的学校和工作的倾向,那么这种适应很可能会在整个人口中迅速传播。红皇后效应可能会导致奇怪和不可预见的后果,明智的做法是仔细考虑我们目前承受的竞争压力,以免它们将我们拖入我们后来发现明显是反乌托邦的角落。
最近的一些实验涉及可能被认为是“无生命的意识”,包括拥有心灵理论的合成药剂。心智理论是用来区分人工智能和人类智能的一种方法。为了理解这种差异,有一个叫做最后通牒游戏的简单实验。在最后通牒游戏中,一个玩家得到 100 美元(或其他价值单位),他必须决定如何与另一个玩家平分这笔钱。第二个玩家,可以拒绝这个提议,在这种情况下两个玩家都一无所获,也可以接受这个提议,在这种情况下,他们根据玩家一指定的分配得到钱。如果一号玩家是完全理性的,缺乏思维理论,它的出价将远低于人类,因为它会假设另一个玩家会接受任何大于零的出价,因为有所得总比没有所得好。逻辑大概是这样的。由于缺乏思维理论,一号玩家没有考虑到,如果只给一美元,另一个玩家可能会觉得受到了轻视,因此会断然拒绝这个提议。虽然一个纯粹理性的代理人接受美元会比拒绝美元更好,但人类会经常拒绝如此低的报价。这一直是经济学家和心理学家的眼中钉,因为效用理论的整个教条是基于这样一个前提,即人们最大化效用,并会像玩游戏的计算机那样接受如此低的报价。有趣的是,自闭症是一种经常被描述为“精神盲”的疾病,因为患者通常表现出明显的无法通过观察面部特征来阅读他人的思想,患者往往比“正常”人表现得更像纯粹的理性代理人。在这样的游戏中——自闭症患者会期望别人接受低球报价,自己接受也没问题。来自自闭症的证据支持了这样一种观点,即当人类在许多战略环境中运作时,他们正在使用一种思维理论,这影响了他们的决策。
人类拒绝低价提议的一个原因是,我们习惯于玩重复囚徒困境游戏,也就是说,这种游戏会重复多次,并拥有一个解决方案,当两个玩家合作时,他们的情况会比他们都自私时更好。如果作为最后通牒游戏中的玩家,我假设我们生活在一个重复囚徒困境的世界中,那么我就有动机惩罚你自私的出价,这样下次我们玩的时候你就不会再出低价了。一个人如何着手创造一种算法,利用思维理论来猜测他人的策略,从而获得与人类更相似的结果?
在这方面取得进展的团体之一是 OpenAI 基金会。OpenAI 团队与牛津大学的研究人员合作,创建了一种强化学习算法,当在最后通牒游戏中更新自己的策略时,它拥有关于另一个玩家的思维理论(Jakob N. Foerster,2018)。他们配方中的秘密成分是在强化学习等式中增加一项,捕捉第二个玩家策略的变化,也就是说,其他玩家的想法。虽然这背后的数学可能有点复杂,但原理很简单——如果我知道你也在学习,那么当我制定自己的策略时,我需要考虑你策略的变化。他们的方法似乎奏效了——在一个重复的囚徒困境游戏中,该算法学习了更像人类玩家的互惠策略,而不是纯粹自私的代理人的策略。这很可能标志着创造人工第二意识的重要一步。假设意识是一种转向自身的心理理论,那么建立一种转向外部的心理理论是合乎逻辑的第一步,就像 OpenAI 实验中那样。这显然是更复杂的心理理论的前兆。例如,可以说狗拥有简单的思维理论。
你可以观察狗扫描你的特征和手势,试图猜测你是否要重新装满它们的食物碗或带它们去散步。据我所知,还没有这样的尝试来修改强化学习,以包括一个关于自己行为的心理理论,这可能不会太远。虽然最初这种新生的机器意识形式很难被认为与我们自己的相似,但也许随着时间的推移,它们会发展出丰富多彩的心理细微差别,如个人叙事、羞耻、否认和投射,这些都是我们自己的意识思维的特征。值得注意的是,即使这种情况发生了,也并不意味着合成意识会对人类构成威胁。他们的目标状态可能仍然是预先确定的,他们的行动仅限于虚拟世界中的虚拟任务。
当我们检查人工智能和强化学习的含义时,组织和优先考虑它的影响是很重要的。虽然有意识机器人的崛起可能会在遥远的未来对人类构成生存威胁,但可能会有更近的挑战,例如,工作自动化程度的提高导致财富差距不断扩大。只有克服了这些近期的障碍,我们才有可能遭遇如此多科幻小说和电影中所预示的耸人听闻的恐怖。
混合智能
作为创造性伙伴的机器
人类是自然的创造者;我们享受制造东西的自由。然而,在自动化的背景下,机器挑战了人类在制造中的角色。它浪费了人类的独特技能,使人们与现实世界的材料脱节。为了解决这个问题,研究人员提出了混合工作流程,从研究人类如何工作开始,并在制造过程中结合人类和机器的专长。它可以让我们保持工艺,并为数字工艺输入更多的人性。
混合制造在制作过程中重视人类的肌肉记忆和触觉技能。如果我们把混合的想法延伸到无形的过程,比如创造力,会怎么样?机器除了能做助手之外,还能充当创意伙伴吗?我们能创造出“混合智能”吗?这种智能结合了机器和人类的智能,创造出它们各自无法完成的工作。
混合制造是人类和机器之间的合作,在将人类重新引入循环的同时,提高了制造效率或作品中的人性纹理。如果我们把混合的想法延伸到无形的过程,比如创造力,会怎么样?机器除了能做助手之外,还能充当创意伙伴吗?我们能创造出“混合智能”吗?这种智能结合了机器和人类的智能,创造出它们各自无法完成的工作。
混合智能可以优化工作效率,减少不确定性,就像人工智能在自动驾驶汽车中与人类司机合作一样。为了让人类和人工智能系统和谐地一起工作,研究人员把重点放在如何消除人类感知和机器判断之间的差异上。如果机器在路上感知物体的方式与人类不同,可能会导致可怕的交通事故。虽然某些任务需要较低的不确定性,但艺术等其他任务实际上需要风险。风险有时会推动创新过程。如今,强大的计算成为艺术家的创新工具,机器学习算法带来的不稳定结果使我们能够创造出超出我们想象的东西。
机器以非常不同的方式感知和解释世界。汤姆·怀特制造了一个感知引擎来展示机器如何看待世界。此外,他还邀请人们重新解读这幅图像,发现每个人看到的东西都不一样。他的项目带来了机会,我们可以使用机器学习算法来打开人类感知的缺口。
当科学家主导人工智能研究时,几位艺术家在艺术背景下展开了关于人工智能的对话,并对这一技术提出了独特的观点。他们想利用机器的能力,并利用它来拓展创造力的边界。安妮·里德勒通过人工智能生成了数吨人工郁金香,并手工对结果进行分类,这展示了机器学习背后的人类方面。在斯科特·伊顿的作品“数字与形式”中,他将流行的算法与传统的绘画和雕塑实践相结合。这项工作呈现了斯科特的手部技能和人工智能工具之间相互作用的结果。实现人类以前从未实现的任务的计算能力,例如在短时间内生成大量不同的图像。这种新型的人与人工智能的合作启发艺术家们在视觉呈现中设想其他可能性。
音乐中的艾
除了视觉艺术,艺术家们也在寻求打破音乐领域可预测模式的方法。奥拉富尔·阿尔纳斯和霍利·赫恩登都“培养”了他们自己的定制人工智能助手,并将它们“教授”到个人音乐助手中,这可以激励他们并与他们合作。一旦奥拉维尔弹奏了一个和弦,这个和弦就会进入软件,软件对它进行处理,然后将它作为有节奏的纹理发送给其他钢琴。Arnalds 不是控制每个音符,而是可以按一个键,获得大量意想不到的音符,形成定制的 AI 助手。
为了探索未知的领域,霍莉创造了“产卵”Spawn 是一个人工智能系统,可以创作令人惊讶和独创性的音乐,这可能与 Holly 的风格非常不同。在 Spawn 的帮助下,Holly 可以防止制作重复她以前作品的音乐。不仅 Spawn 从 Holly 身上学到了东西,Holly 也从 Spawn 身上学到了智慧。AI 助手背后的意义不是创造一个做音乐的算法;它创造了一种艺术家可以演奏的乐器,并拓宽了音乐的可能性。
艾在写作
随着自然语言进程的发展,艾也可以用在诗歌和电影剧本中。人工智能生成的文本是罗斯·古德温工作的核心部分。他用基于文本的数据训练机器,然后用摄像机捕捉图像作为输入。一旦设备接收到照片,它就可以将图像转换成文本。根据古德温的说法,人工智能生成的文本距离我们的正常对话很远,但它确实提供了有趣的结果。比如“一股水从街道的一边流下来。画家笑了,然后说,我喜欢那个,我不想看。”然而,在短片 Sunspring 中,那些可笑的剧本在演员的演绎下变得严肃起来。该剧体现了人性与机器算法的协作。
行为艺术中的艾
在sou Wen Chang 的绘画操作系列中,现场表演呈现了艺术家和机器人手臂之间的合作。在表演过程中,机器人感知艺术家的绘画手势,解释信息,并创建自己的绘画。看起来机器人手臂是模仿艺术家的风格,但它实际上是通过自己的绘画来回应艺术家。艺术家和机器人手臂之间的互动鼓励人类改变或适应他们的行为以适应系统。意外的机器反馈可能会触发艺术家跳出舒适区的思维,开启新的想法。另一方面,机器也可以根据人类正在做的事情来调整自己的行为,但这是一种不同于人类所做的学习。
有些人可能会害怕艺术制作机器,因为艺术制作是我们历史上最人性化的行为。一旦我们声称机器可以创造艺术,那人类还能剩下什么?在这种情况下,我们可以考虑一些观点。首先,认知和意识是有区别的。在我们给机器输入大量数据后,它们可能会有认知能力,它们可以理解和解释信息,但这就意味着它们有意识吗?这两者之间的光谱是我们仍在争论的。
第二,艺术的本质是表达感情或作陈述,艺术家可以解释作品和自己。在人机合作艺术的语境中,只有人才能解释生成的结果。而且,伙伴关系也是人类解释的一部分;真正的伙伴可以拒绝选择,可以对概念做出贡献,而不仅仅是结果。在现实中,机器可以提供鼓舞人心的想法,并带领艺术家获得令人惊讶的结果,然而,最终,艺术家仍然拥有最终的决定权,人类的解释完成了故事。
最后,“如今,算法非常强大,但它们的好坏取决于它们接受的训练,”安娜·里德勒说。在她看来,机器使她能够做她通常不能做的事情,她也使机器能够做它不知道如何做的事情。
随着人类历史的发展,我们总是想做出新的东西,这种冲动推动人类走向进步。自工业革命以来,我们不断制造先进的工具来塑造我们的工作方式,在许多情况下提高了效率,但有时也限制了思维。另一方面,人工智能赋予我们计算能力,理解我们收集的数据,并为我们提供新的视角。Jennifer Sukis 曾经说过:“艺术是我们探索我们是谁以及我们想成为谁的方式,因为人工智能改变了日常生活的画面。”借助人工智能带来的新视角,我们可以通过混合智能不断探索技术和人类的未知领域。
海得拉巴房价。
Photo by Shiv Prasad on Unsplash
每天我都从办公室的朋友和同事那里听到很多关于他们在海得拉巴很难找到出租公寓的故事,他们大多要么是公寓不对单身汉开放,要么是某个地区的租金太高,要么是公寓的面积对于给定的价格来说太小。我想了解上述问题的真实情况,所以我决定使用我的 python 技能从一个领先的房屋租赁网站获取并分析关于可供出租的房屋的数据。
我把当前的任务分成了 3 部分。
- 使用网络抓取收集数据。
- 数据预处理。
- 数据分析。
数据收集。
Photo by Luca Bravo on Unsplash
当没有实时数据可供分析时,网络搜集经常被用作收集数据的工具。首先,我们将收集海得拉巴领先的房地产网站之一的所有搜索结果。我们要收集数据的网站是 magicbrics.com.The 网站,它很棒,所有的数据都排列得很整齐,但是,你可以自由选择你喜欢的网站,你可以很容易地修改代码。
在我们真正开始收集数据之前,我们需要决定需要从网站上收集哪些功能。在当前示例中,我们将收集,
- 没有卧室。
- 没有浴室。
- 家具类型。
- 田纳西人更喜欢。
- 房子的面积(平方英尺)。
- 房子的位置。
- 价格还是租金。
首先,让我们导入所有的依赖项,
import re # Regular Expressions Library
import pandas as pd # Data Preprocessing Library
from bs4 import BeautifulSoup # Used to get Data from HTML files.
from urllib.request import urlopen,Request #Used to get a given url
一些网站会自动阻止任何类型的抓取,这就是为什么我们会定义一个头来传递 get 命令,这基本上会使我们对网站的查询看起来像是来自实际的浏览器。
headers = ({'User-Agent':
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})
首先,我们需要查询网站,并以 HTML 代码的形式(页面)获取数据。
request = Request(url, headers=headers)
response = urlopen(request)
html = response.read()
我们的 Html 的输出看起来像下面这样,这是一个原始的 Html 代码,需要传递给 Beautiful Soup 方法来获得结构化的 Html 代码。
**Html Output(**html) **:**b'\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!DOCTYPE html>\r\n<html>\r\n\t<head>\r\n\t\t<meta charset="UTF-8">\r\n\t\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> \r\n\t\t<meta name="viewport" content="width=device-width, initial-scale=1">\r\n\t\t<meta name="google-signin-client_id" content="614944930403-u1s9tmqebd273mutmdhmsngnhvivgd6a.apps.googleusercontent.com">\r\n\t\t\r\n\t\t<link rel="dns-prefetch preconnect" href="//cdn.staticmb.com" />\r\n\t\t<link rel="dns-prefetch preconnect" href="//img.staticmb.com" />\r\n\t\t<link rel="dns-prefet'*html_soup = BeautifulSoup(html , 'html.parser')***Beautiful Soup Output (**html_soup) **:**<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta content="614944930403-u1s9tmqebd273mutmdhmsngnhvivgd6a.apps.googleusercontent.com" name="google-signin-client_id"/>
<link href="//cdn.staticmb.com" rel="dns-prefetch preconnect"/>
<link href="//img.staticmb.com" rel="dns-prefetch preconnect"/>
<link href="//b.scorecardresearch.com" rel="dns-prefetch preconnect"/>
<link href="//www.googleadservices.com" rel="dns-prefetch preconnect"/>
<link href="//stats.g.doubleclick.net" rel="dns-prefetch preconnect"/>
<link href="//ase.clmbtech.com" rel="dns-prefetch preconnect"/>
<link href="//ingestor.magicbricks.com" rel="dns-prefetch preconnect"/>
<link href="//maps.googleapis.com" rel="dns-prefetch preconnect"/>
<link href="//www.googletagmanager.com" rel="dns-prefetch preconnect"/>
<title>Properties in Hyderabad</title>
获得代码后,我们需要浏览 Html 代码,找出在整个源代码中我们可以找到所需功能的确切位置。我们可以在我们的浏览器中检查这一点,我们还可以在 Html 文档中找到某个特定对象的位置,例如属性的价格。右键单击它并选择检查。
整个网页被分成多个块,每个块将被放置在带有类名的 div 容器中(当前示例是flex relative clear fix m-SRP-card _ _ container),每个这样的块将具有关于单个房屋的所有所需功能。我们可以扫描整个页面,将所有这样的块收集到一个列表中,并对它们进行迭代,以找到所有房屋的特征集。
page_container = html_soup.find_all('div', class_ = 'flex relative clearfix m-srp-card__container' )
在收集了作为容器列表的网页数据之后,我们可以看到属于每个字段的数据被存储在每个 page_containers 的 < span > 标签中。我们可以编写一个脚本来收集每个 page_container 的所有 span 标签,提取数据并在整个 page_containers 列表中循环,如下所示。
*span_containers = page_container[3].find_all('span')
span_containers[1].text*Output : **' \n \t \t\t\t \t \t\t\t16,000 \t \t\t'***span_containers[1].text.replace('\n','')*Output :**' \t \t\t\t \t \t\t\t16,000 \t \t\t'**
除了 locality 之外,所有字段的逻辑都是一样的,Locality 需要从字符串中提取,很难得到。数据会是这样的。我要在 和2000 sqft之间的字符串
*' 3 BHK Apartment for rent *in* ***SMR Vinay Harmony County, Appa junction*** *2000 sqft * '*
因此,我使用正则表达式来查找以’ 中的’ '开始,以 ‘数字(\d)’ 结束的模式,但是这种模式在数据中并不统一,有些样本还以空格结尾,或者结尾没有任何内容。因此,我使用了 3 种模式来获取位置数据。
*Locality_1 = Locality_0.text.replace('**\n**',' ')
Locality_2 = re.search(r'in(.+?)\d', Locality_1)
**if** Locality_2 **is** **None** :
Locality_2 = re.search(r'in(.+?),',Locality_1)
**if** Locality_2 **is** **None** :
Locality_2 = re.search(r'in(.+?) ',Locality_1)***Output:***YMCA Circle, Narayanguda
Amarnath Residency
Nanakram Guda
My Home Avatar, Narsingi, Outer Ring Road
Nizampet
Kachiguda, NH
Miyapur, NH
Dukes Galaxy, Banjara Hills, NH
Machabollaram, Medchal Road*
以类似的方式,每个 span_containers 将具有不同的特性,可以如上所示提取并保存在. csv 文件中以供进一步处理。最终输出。csv 文件如下所示。
House Prices Data.
上面的完整工作代码以及 data.csv 文件可以在我的 Github 资源库saitejamahadev/Hyderabad _ housing _ data 中找到。
数据预处理。
Photo by Mika Baumeister on Unsplash
数据预处理是任何数据科学项目中的重要步骤。最初,当我们提取数据时,我们确保数据是干净的,没有任何随机值,但如果我们仔细分析数据集的特征,我们会发现数据在抓取过程中提取了一些垃圾或缺失值。
unique Bedroom values
Unique Bathroom values
unique Furnishing type and Tennants preferred
通过调用 pandas unique()方法,我们可以看到嵌入到特性集中的不正确的或无用的值,如上所示。我只列出了几个特征,但是几乎所有数据集的特征都有一种或另一种需要解决的不规则性。
现在,一些特征(其中垃圾被附加到所需的特征)我们可以提取正确的样本特征值,但是对于其他特征(其中数据被错误地收集,即家具类型),它可以具有值“家具”或“半家具”或“未家具”,但是不具有如上所示的其他值。
数据的这个问题可以被认为是丢失值的问题,根据业务情况,在数据预处理中有许多经典的方法来处理它,但在当前的用例中,我想用特征的模式/平均值的替换来进行,假设在给定的区域,人们不太可能为单身汉租房,而家庭是首选,反之亦然。
如果我们观察样本,我们可以看到 ‘\t’ 通常是嵌入的,移除它并用单个空格替换产生的一个或多个空格将清除我们的大多数样本,这是所有样本共有的。我们可以使用下面几行代码来实现这个结果。
*data.Bathrooms[price] = re.sub(r'\t','', data.Bathrooms[price])
data.Bathrooms[price] = re.sub(r'\s+','',data.Bathrooms[price])*
sample code how different features are handled in preprocessing.
最后,清理后的数据可以保存在一个新文件中,如下所示。
House prices data after preprocessing.
注意:我们在House _ data _ preprocessing**方法中使用的数据预处理技术是特定于收集的数据类型和数据中存在的不规则性的。当处理不同的网页时,代码需要稍微修改。**
数据分析。
清理数据后,我们使用 python 数据可视化工具(如 Matplotlib)来尝试和可视化数据,并回答以下问题
- 出租公寓的常见装修风格是什么?
- 房东一般喜欢什么类型的 Tennants?
- 一般有多少间卧室可供出租?
- 与 Tennants 相比,家具类型的分布如何?
如下。下面的代码片段将回答上述问题。
Data Visualization.
- 出租公寓的常见装修风格是什么?
Furnishing Type
- 房东一般喜欢什么类型的 Tennants?
Tennants Preferred
- 一般有多少间卧室可供出租?
Bedrooms Distribution
- 与 Tennants 相比,家具类型的分布如何?
Furnishing Type vs Tenants Preferred
FurnishingType vs Tennants Preferred
****注:以上数据预处理和分析步骤的完整工作代码请访问saitejamahadev/Hyderabad _ House _ Prices _ Analysis。
hyper-Ledger Fabric 2.0 版本发布:新机遇正在形成
让世界了解区块链技术的最新进展。
Image credits Acodez
区块链技术具有变革性和进化性,但在某些时候,甚至它也未能留下所需的影响。许多专家普遍认为,区块链将颠覆许多行业,它将彻底改变当今许多商业运作的方式。
商业是更具挑战性的领域之一,以其原始的概念形式接受区块链技术。尤其是当一个人不得不依靠区块链技术来签订合同的时候。在分散式网络中,双方共同签署合同会使敏感信息公开。这些小错误足以让你的生意回到石器时代。在这一点上,需要一种未来的智能解决方案,它可以在混合环境中独立工作。
超级分类帐结构为企业提供了即使在许可网络中编写可访问性限制的机会。随着非许可区块链在分散分类帐技术上的引入而发展的概念使得超分类帐结构如此受欢迎。商业兄弟会可以轻松地签署合同并交换敏感信息,而不必担心信息公开。但即使有所有的优势,仍有灰色区域出现在 Hyper-Ledger Fabric 的早期版本中,随着更新版本的发布,这些缺点已被仔细迎合。在本博客中,我们将讨论 Hyper-Ledger Fabric 2.0 版的新增功能,以及它如何解决以前版本的缺点。
Hyper-Ledger Fabric 2.0 版有什么新功能?
发布新的结构链码生命周期
在 Fabric 2.0 Alpha 的新模型中,将引入一种新的分散治理,这将发布一种在对等网络上安装链码的新流程。有了这样的功能,现在多个组织将通过在链码上设置不同的参数来在同一页面上达成一致。链码背书政策就是即将推出的一项智能功能。在背书策略中,命令流将以下列方式发生;
这是一份政策样本
{“identities”: [{ “role”: { “name”: “member”, “mspId”: “Org1MSP” }},{ “role”: { “name”: “member”, “mspId”: “Org2MSP” }}],“policy”: {“1-of”: [{ “signed-by”: **0** }, { “signed-by”: **1** }]}}
样本策略 2
{“identities”: [{ “role”: { “name”: “member”, “mspId”: “Org1MSP” }},{ “role”: { “name”: “member”, “mspId”: “Org2MSP” }},{ “role”: { “name”: “admin”, “mspId”: “Org1MSP” }}],“policy”: {“2-of”: [{ “signed-by”: **2**},{ “1-of”: [{ “signed-by”: **0** }, { “signed-by”: **1** }]}]}}
在这两个样本策略中,身份定义了区块链网络的角色和 MSP。
类似地,策略由包含 nOf 格式策略的对象定义,其也是用于背书的特定“签名集策略”,其中“n”是背书的指定签名所需的最小签名数。
在示例策略 1 中,有来自 Org1MSP 和 Org2MSP 的两个身份。在这里,签名集策略说
“policy”: {“1-of”: [{ “signed-by”: **0** }, { “signed-by”: **1** }]}
定义认可策略时,它应该由 0(使用角色成员)签名,以标识身份数组(Identity Org1MSP)中的 1,或者由 1(使用角色成员)签名的数组,以标识身份数组(Identity Org2MSP)中的身份 2。在功能中,区块链的策略只有在 Org1MSP 或 Org2MSP 的成员对交易进行签名时才会成功。以同样的方式,样本策略 2 将规定任何违反该策略的交易。任何变更只有在(I)签字后才能在区块链被接受。订单管理(ii)。Org1MSP 或 Org2MSP 任何组织的成员。
这就是在分散的环境中,背书政策为您的阅读工作的方式。现在,回到 Fabric Chaincode 将从现在开始改变用例的方式;
1.帮助多个组织同意链码的任何特定参数
在之前的版本中,明确提到了 Fabric 的 1.x 版本,规定只有一个组织能够设置链码所需的参数,以确保网络正常运行。在这种设置中,只有一个组织有能力定义链码的参数。
但新的 Hyper-Ledger Fabric 版本 2.0 完全不同,为各方提供了更大的灵活性。这样,它将支持区块链的混合和本地模式。因此,集中式和分散式两种环境都可以得到支持。因此,无论链码需要一个单一成员还是多个成员来签署网络上的任何政策,在它变得能够移动合同和操作之前,通过引入这一新特征,一切都将成为可能。
2.链码的升级过程比以前的版本更安全
在过去版本的超级分类帐结构中,只有一个组织或也称为网络中的第一个组织有权升级链码上的交易。因此,网络中的任何新组织都别无选择,只能下载甚至是损坏的链码。这样,新成员总是要承受交易带来的风险。
但是最新版本的超级分类帐结构带来了新的修正,这将允许在链码上建立共识。只有在集团达成共识后,新的链码才会实施,以帮助区块链平台按照业务要求运行。
3.通过新的更新简化了认可政策
网络中的链不需要为了背书策略的改变而不时地重新打包或重新安装链码。有新的默认策略可供用户从大多数成员那里寻求共识。
4.更好地检查链码包装
读取可读 tar 文件中的链码非常简单。结果,网络中的节点可以容易地检查链码包,并在安装过程中与网络中的其他节点协调。
在 Hyper-Ledger Fabric 版本 2.0 中引入 fab token
在最新版本的 Hyper Ledger Fabric 2.0 中,用户有机会使用他们的资产作为令牌。确切地说,FabToken 将是这个新版本中用于启动事务的令牌。它使用未用完的交易输出或 UTXO 模型,以便使用由 Hyper-Ledger 结构网络提供的身份和会员基础设施来发行、转移和兑换代币。使用 FabToken,用户可以很容易地创建新的加密硬币。同时,从一个用户向另一个用户转移硬币将被完全简化。用户可以执行整个交易列表,并使用 FabToken 启动硬币的完全兑换。
FabToken 将以与 ERC 20 标准相同的方式简化加密货币的创建。也就是说,Hyper-Ledger Fabric 2.0 将见证与以太坊相同的令牌创建环境。这种类型的优势将首次在 Hyper-Ledger 网络上提供给开发者。在你冒险在你的 SDK 中使用 FabToken 之前,请记住某些特定的东西。
安装 Hyper-Ledger Fabric SDK 后,使用 docker 映像进行快速验证。您需要访问 FabToken 目录来制作您选择的加密货币。使用以下命令:CD $ HOME/fabric-samples/fab token。
当您计划使用 FabToken 制作任何加密货币时,将会出现对 Fabric 网络的需求。因为 FabTokens 要求光纤网络启动并运行。使用示例节点应用程序来测试 FabToken。使用命令 fabtoken.js 和一个名为“startFabric.sh”的 shell 脚本。它将位于您当前所在的目录中。一旦你给出这些代码,它将启动基本网络和 JavaScript 目录。您需要安装“npm 安装”使用命令。/startFabric.sh 立即启动 FabToken。
要使用 FabToken 创建硬币,在安装 SDK 后应该会出现以下屏幕,
— — fabtoken.js —开始设置客户端网络对象创建客户端对象来表示通道
创建了客户端对象来代表对等方
创建了客户端对象来表示订购者
成功设置客户端侧令牌参数:goldcoinToken 参数:1000
开始颁发令牌操作
用 args goldcoin 开始令牌发放,1000 结束发放令牌操作,返回{ status: 'SUCCESS ‘,info:’ ’ }—-fab token . js—end
当您发出此命令时,它将启动令牌创建,并帮助您根据预期创建令牌。
结论
创建超级分类帐结构的目的是为企业提供更好的功能。高级功能的引入将有助于 Hyper-Ledger 结构在不同业务中的使用,以便在不久的将来简化和增强其潜力。
超轻推和大数据
大数据和行为经济学可能会创造超级推动——这些将如何被使用,我们应该担心吗?
Photo by Franki Chamaki on Unsplash
行为推动可以被认为是地毯式轰炸。例如,如果我们想增加养老金缴款,我们可以将高缴款产品作为默认选项。对所有人来说。
像这样的推动已经相当有效,但是它们并不完美。如果你很难把钱存到一边,多存一点可能会很好,因为你很难,轻推可能就是解决办法。但是如果你是一个以上的储蓄者呢?这种轻推是否意味着你最终会对金钱失去兴趣?或者,节食怎么样。更小的盘子可以减少人们吃的食物量,如果你正在节食,这可能很好,但如果你已经对自己的体重感到不安或有饮食障碍,这就不太好了。
自从推动的想法流行起来,行为经济学家不得不采取地毯式轰炸的方法。他们必须是功利主义者,实施他们认为——平均来说——会改善结果的轻推。
但是如果有其他方法呢?如果我们可以用精确打击来代替地毯式轰炸呢?(这里的语言有点煽动性,但正如那些认为轰炸不好但接受轰炸存在的人更喜欢精确打击一样,那些不喜欢微推但接受微推存在的人也会想要更高的精确度——这是一个有目的的类比)通过结合微推和大数据,超微推可能正是。
进入超空间
轻推和大数据之间的关系是一件漫长而平静的事情。虽然大数据拥有前所未有的规模和技术专长来观察我们的世界,但行为洞察一直是利用这些洞察的工具。哈佛大学法律学者和 Nudge 的合著者 Cass Sunstein 想象这种关系变得越来越紧密,以至于大数据和算法可以为每个人选择最佳的 Nudge 和选项。
现在,我们已经成功了一半。新兴研究利用初始抽样和模拟建模,已经能够有效地将心理测试中的各种行为特征与不同的推动策略关联起来,以最佳方式推动每个人。例如,有些人非常在意其他人,更有可能受到社会规范的推动,而不是默认选项。
随着大数据的广度不断扩大,我们的轻推算法的输入数量将大幅增长,因此我们使用的轻推的精确度也将增长。然而,从技术上讲,有两个主要挑战:
- 我们可以个性化我们轻推的方式——现在我们需要个性化我们轻推的内容
- 我们如何将大数据信息转化为有意义的行为指标?
后一点将是未来几年行为研究的一个巨大领域。在个人金融等领域,面对面接触和文档填写可能很少,特定网页的浏览时间和交易历史等关联信息将成为与行为现象相关的重要数据点。
这种策略或许也能帮助我们设计个性化默认设置等推动措施,但这一挑战将更加依赖于具体环境,因此需要更多数据。例如,健康跟踪器显示的睡眠时间等无关紧要的数据可能会促使系统不仅以不同的方式微移,而且以不同的方式呈现整个 UI。
向前两步…
技术挑战不是这种超轻推将面临的唯一问题。首先,是数据问题。也就是说,收集如此多的数据,并以奇怪和可能令人不安的方式使用数据,将引发巨大的道德问题,并需要一个强大的监管框架。明显的算法对白人男性(主要是他们创造的)的偏见只是大数据摩擦我们社会结构的一个例子。
其次,我们应该考虑轻推自己。轻推的地毯式轰炸方式并没有引起行为经济学家的愤怒。相反,许多人表达了对透明度和胁迫性的担忧。就这些合理的担忧而言,地毯式轰炸的方法实际上是一种优势——每个人都受到同等的压力。点到为止改变这种计算。
我们可能会选择允许人们选择退出超推,就像我们让人们去个性化他们的社交媒体时间表一样。理论上,这解决了围绕数据安全和道德的大部分问题。但是,如果超推动是如此之好,选择退出成为一个非常昂贵的想法呢?如果没有超刺激,我们使用的服务变得明显更差会怎样?换句话说,如果我们别无选择呢?
这是一个经典的经济技术问题,我们已经看到它在社交媒体上上演。不管可信与否,脸书在被灌输大量信息时是一个更好的服务。个性化、有针对性的广告可能会令人不快,但如果你不得不看广告,为什么不看一个你可能会觉得有用的广告呢?
超轻推提供了许多优势,如果使用得当,将会简化我们生活中繁琐的部分,改善我们的决策。但是挑战依然存在,无论是技术上的、伦理上的还是社会上的,再多的推动也不会让它们消失。
—
斯图尔特·米尔斯是曼彻斯特城市大学行为经济学和元认知推动理论的博士研究员
超参数调整和模型选择,就像电影明星一样
Photo by Markus Spiske on Unsplash
像你一样编码、分析、选择和调整真的知道你在做什么。
“针对随机森林分类器优化的超参数调整”是那些在电影场景中听起来很轻松的短语之一,在电影场景中,黑客正在积极地输入以“获得对大型机的访问”,就像在关于数据科学的媒体文章中一样。然而,事实是,这样的短语是将数学和计算概念结合在一个领域的不幸结果,更糟糕的是,是一个名字。虽然本文中的概念将受益于对使用 scikit-learn 的基本 python 建模以及其中一些模型如何工作的扎实理解,但我将尝试自下而上地解释一切,以便所有级别的读者都可以享受和学习这些概念;你也可以听起来(和编码)像好莱坞黑客。
在本文中,我将尝试解决以下问题:
- 什么是超参数,它与参数有何不同?
- 什么时候应该使用超参数?
- 超参数实际上是做什么的?
- 如何调整超参数?
- 什么是网格搜索?
- 什么是流水线?
- 如何定义单个超参数?
跳到最后,查看所有这些主题的摘要。
什么是超参数?
超参数这个术语是由于机器学习在编程和大数据中日益流行而产生的。许多作为数据科学家或程序员开始其旅程的人都知道参数这个词被定义为一个值,该值被传递到一个函数中,使得该函数对这些值执行操作和/或被这些值通知。然而,在机器学习和建模中,参数不是由程序员输入的**,而是由机器学习模型**开发的。这是由于机器学习和传统编程的根本区别;在传统编程中,规则和数据由程序员输入以便输出结果,而在机器学习中,输入数据和结果以便输出规则(在这种情况下通常称为参数)。这个 Google I/O 2019 演讲在最初几分钟非常简洁地解决了这个翻转。
如果模型本身生成参数,那么将我们(程序员、数据科学家等)输入的内容也称为模型参数会非常混乱。这就是超参数这个术语的诞生。超参数被输入到生成其自身参数的任何机器学习模型中,以便影响所述生成的参数的值,希望使模型更加精确。在本文的稍后部分,我将展示具体的例子,以及定义什么是单个的超参数。
这些单独的超参数是如何定义的,它们有什么影响?
让我们快速浏览一下 scikit-learn 关于逻辑回归的文档,以便更好地理解这个问题的真正含义。
**LogisticRegression**(*penalty=’l2’*, *dual=False*, *tol=0.0001*, *C=1.0*, *fit_intercept=True*, *intercept_scaling=1*, *class_weight=None*, *random_state=None*, *solver=’warn’*, *max_iter=100*, *multi_class=’warn’*, *verbose=0*, *warm_start=False*, *n_jobs=None*, *l1_ratio=None*)
正如我们在这里看到的,LogisticRegression()
接受了 15 个不同的值,我们现在知道这些值被称为超参数。然而,这 15 个值中的每一个都定义了一个默认值,这意味着在没有指定任何超参数的情况下创建一个LogisticRegression()
对象是非常可能的,甚至是常见的。这是 scikit-learn 中所有模型的情况。因此,我将只花时间来定义和解释四种常见建模方法的一些更相关和通常修改的超参数。
逻辑回归:
- 惩罚:用于指定对非贡献变量系数的惩罚方式。
- Lasso (L1)执行要素选择,因为它将不太重要的要素的系数缩小到零。
- 里奇(L2)所有的变量都包括在模型中,尽管有些被缩小了。计算强度低于 lasso。
- 两个罚值都限制解算器的选择,如这里的所示。
- C :是正则项的逆(1/λ)。它告诉模型有多大的参数被惩罚,较小的值导致较大的惩罚;必须是正浮点数。
- 常用值:[0.001,0.1 …10…100]
- class_weight :允许你更强调一个类。例如,如果类别 1 和类别 2 之间的分布严重不平衡,则模型可以适当地处理这两种分布。
- 默认值是所有权重= 1。类别权重可以在字典中指定。
- “平衡”将创建与类别频率成反比的类别权重,给予较小类别的个别事件更多权重。
线性回归:
- 拟合截距:指定是否计算模型截距或设置为零。
- 如果为假,回归线的截距将为 0。
- 如果为真,模型将计算截距。
- **规格化:**指定是否使用 L2 范数规格化模型的数据。
SVM
- C :是正则项的逆(1/λ)。它告诉模型有多大的参数被惩罚,较小的值导致较大的惩罚;必须是正浮点数。
- 较高的 C 将导致模型的错误分类较少,但更有可能导致过度拟合。
- 良好的值范围:[0.001,0.01,10,100,1000…]
- class_weight :将 class i 的参数设置为 class_weight[i] *C。
- 这可以让你更加重视一门课。例如,如果类别 1 和类别 2 之间的分布严重不平衡,则模型可以适当地处理这两种分布。
- 默认值是所有权重= 1。类别权重可以在字典中指定。
- “平衡”将创建与类别频率成反比的类别权重,给予较小类别的个别事件更多权重。
k-最近邻
- n_neighbors :确定计算最近邻算法时使用的邻居数量。
- 良好的值范围:[2,4,8,16]
- p :计算闵可夫斯基度规时的功率度规,这是一个数学上相当复杂的话题。在评估模型时,简单地尝试这里的 1 和 2 通常就足够了。
- 使用值 1 计算曼哈顿距离
- 使用值 2 计算欧几里德距离(默认)
随机森林
- n_estimators :设置要在林中使用的决策树的数量。
- 默认值为 100
- 良好的值范围:[100,120,300,500,800,1200]
- max_depth :设置树的最大深度。
- 如果未设置,则没有上限。这棵树会一直生长,直到所有的叶子都变得纯净。
- 限制深度有利于修剪树,以防止对噪声数据的过度拟合。
- 良好的值范围:[5,8,15,25,30,无]
- min_samples_split :在内部节点进行分割(微分)之前所需的最小样本数
- 默认值为 2
- 良好的值范围:[1,2,5,10,15,100]
- min_samples_leaf :创建叶(决策)节点所需的最小样本数。
- 默认值为 1。这意味着,仅当每条路径至少有 1 个样本时,才允许在任何深度的分割点。
- 良好的值范围:[1,2,5,10]
- max_features :设置考虑最佳节点分割的特征数量
- 默认为“自动”,这意味着特征数量的平方根用于树中的每次分割。
- “无”表示所有特征都用于每次分割。
- 随机森林中的每个决策树通常使用随机的特征子集进行分割。
- 良好的值范围:[log2,sqrt,auto,None]
如何调整超参数,它们实际上有什么作用?
为了弄清楚这两个问题,让我们用经典的加州大学欧文分校虹膜数据集来解决一个例子。
首先,我们将加载数据集并导入我们将使用的一些包:
# import packages
import numpy as np
from sklearn import linear_model, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline# Loading dataset
iris = datasets.load_iris()
features = iris.data
target = iris.target
现在,让我们创建一个快速模型,不使用额外的超参数,并获得分数供以后评估。
logistic.fit(features, target)
print(logistic.score(features, target))
输出:
0.96
现在,让我们尝试一些超参数调整的方法,看看我们是否可以提高我们的模型的准确性。
什么是网格搜索?
网格搜索是一种方法,通过这种方法,我们为每个超参数创建可能的超参数值集,然后在“网格”中相互测试它们例如,如果我想用值[L1, L2]
和值 C 作为[1,2]
来测试一个逻辑回归,GridSearchCV()
方法会用C=1
测试L1
,然后用C=2
测试L1
,然后用两个值C
测试L2
,创建一个 2x2 的网格和总共四个组合。让我们看一个没有当前数据集的例子。verbose 参数指示函数运行时是否打印信息,cv 参数指的是交叉验证折叠。关于GridSearchCV()
的完整文档可以在这里找到。
# Create range of candidate penalty hyperparameter values
penalty = ['l1', 'l2']# Create range of candidate regularization hyperparameter values C
# Choose 10 values, between 0 and 4
C = np.logspace(0, 4, 10)# Create dictionary hyperparameter candidates
hyperparameters = dict(C=C, penalty=penalty)# Create grid search, and pass in all defined values
gridsearch = GridSearchCV(logistic, hyperparameters, cv=5, verbose=1)
# the verbose parameter above will give output updates as the calculations are complete. # select the best model and create a fit
best_model = gridsearch.fit(features, target)
既然我们的模型是基于更大的输入空间创建的,我们可以希望看到改进。让我们检查一下:
print('Best Penalty:', best_model.best_estimator_.get_params(['penalty'])
print('Best C:', best_model.best_estimator_.get_params()['C'])
print("The mean accuracy of the model is:",best_model.score(features, target))
输出:
Best Penalty: l1
Best C: 7.742636826811269
The mean accuracy of the model is: 0.98
使用相同的模型并增加超参数的小变化,精度提高了 0.02。尝试用不同的超参数集进行试验,并将它们添加到超参数字典中,然后再次运行GridSearchCV()
。请注意添加许多超参数如何快速增加计算时间。
什么是流水线?
如果我们想要用多个超参数测试多个算法,以便找到可能的最佳模型,该怎么办?流水线允许我们以一种代码高效的方式做到这一点。让我们看一个 Iris 数据集的例子,看看我们是否可以改进我们的逻辑回归模型。
# Create a pipeline
pipe = Pipeline([("classifier", RandomForestClassifier())])# Create dictionary with candidate learning algorithms and their hyperparameters
search_space = [
{"classifier": [LogisticRegression()],
"classifier__penalty": ['l2','l1'],
"classifier__C": np.logspace(0, 4, 10)
},
{"classifier": [LogisticRegression()],
"classifier__penalty": ['l2'],
"classifier__C": np.logspace(0, 4, 10),
"classifier__solver":['newton-cg','saga','sag','liblinear'] ##This solvers don't allow L1 penalty
},
{"classifier": [RandomForestClassifier()],
"classifier__n_estimators": [10, 100, 1000],
"classifier__max_depth":[5,8,15,25,30,None],
"classifier__min_samples_leaf":[1,2,5,10,15,100],
"classifier__max_leaf_nodes": [2, 5,10]}]# create a gridsearch of the pipeline, the fit the best model
gridsearch = GridSearchCV(pipe, search_space, cv=5, verbose=0,n_jobs=-1) # Fit grid search
best_model = gridsearch.fit(features, target)
注意这个函数运行需要多长时间。在另一篇文章中,我将讨论如何减少运行时间和挑选有效的超参数,以及如何将一个RandomizedSearchCV()
和一个GridSearchCV
结合起来。运行该方法后,让我们检查结果。
print(best_model.best_estimator_)
print("The mean accuracy of the model is:",best_model.score(features, target))
输出:
Pipeline(memory=None, steps=[('classifier', LogisticRegression(C=7.742636826811269, class_weight=None, dual=False, fit_intercept=True,intercept_scaling=1, l1_ratio=None, max_iter=100, multi_class='warn', n_jobs=None, penalty='l1', random_state=None, solver='warn', tol=0.0001, verbose=0, warm_start=False))], verbose=False) The mean accuracy of the model is: 0.98
根据我们的管道搜索,具有指定超参数的LogisticRegression()
比具有任何给定超参数的RandomForestClassifier()
执行得更好。有意思!
好了,我们已经使用了一个管道方法来实现这一切,但是它实际上做什么,为什么我们要传入一个RandomForestClassifier()
?
pipeline 方法允许我们传入预处理方法以及我们想要用来创建数据模型的算法。在这个简单的例子中,我们跳过了预处理步骤,但是我们仍然输入了一个模型。我们输入的算法只是用于实例化管道对象的算法,但是将被我们创建的search_space
变量的内容所替代,该变量稍后将被传递到我们的GridSearchCV()
中。这里可以找到一个简化的帖子,只关注管道。
我们的原始基线模型和用我们的超参数调整生成的模型之间的精度差异显示了超参数调整的效果。通过指导我们的机器学习模型的创建,我们可以提高它们的性能,并创建更好、更可靠的模型。
摘要
什么是超参数,它与参数有何不同?
在机器学习模型中使用超参数来更好地指导模型用来生成数据预测的参数的创建。超参数由程序员设置,而参数由模型生成。
什么时候应该使用超参数?
永远!模型通常有内置的默认超参数,可用于大多数目的。然而,在许多情况下,使用超参数调优会挤出模型的额外性能。了解不同超参数的限制和影响有助于限制过度拟合等负面影响,同时提高性能。
超参数实际上是做什么的?
简单地说,它们改变了模型寻找模型参数的方式。个别定义可以在上面的文章中找到。
如何调整超参数?
网格搜索、随机搜索和流水线是常用的方法。这篇文章没有提到随机搜索,但是你可以在这里阅读更多的。
什么是网格搜索?
网格搜索是对传递给GridSearchCV()
函数的所有超参数的元素测试。网格搜索在大搜索空间上的计算开销很大,它的测试也很详尽。
什么是流水线?
流水线允许搜索多个算法,每个算法都有许多超参数。这是一种非常高效的测试许多模型的方法,以便选择最好的一个。此外,它还可以处理再加工方法,允许进一步控制过程。
最后,下面是一些函数,它们可以通过传入参数来执行一些不同类型的超参数调整。包含本文中使用的所有代码的 Google Colab 笔记本也可以在这里找到。使用这些函数,您可以在一行代码中高效地执行超参数调整!
# # # Hyperparameter tuning and model selection
import numpy as np
from sklearn import linear_model
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.model_selection import RandomizedSearchCV
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressordef perform_gridsearch_log(features, labels,
log_params = {'penalty': ['l1', 'l2'], 'C': np.logspace(0, 4, 10)},
cv=5, verbose = 1):
import numpy as np
from sklearn import linear_model, datasets
from sklearn.model_selection import GridSearchCV
global best_model
logistic = linear_model.LogisticRegression()
penalty = log_params['penalty']
C = log_params['C']
hyperparameters = dict(C=C, penalty=penalty)gridsearch = GridSearchCV(logistic, hyperparameters, cv=cv, verbose=verbose) # Fit grid search
best_model = gridsearch.fit(features, target)
print(best_model.best_estimator_)
print("The mean accuracy of the model is:",best_model.score(features, labels))def rand_forest_rand_grid(features, labels, n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)],
max_features = ['auto', 'sqrt'],
max_depth = [int(x) for x in np.linspace(10, 110, num = 11)],
min_samples_split = [2, 5, 10],
min_samples_leaf = [1, 2, 4], bootstrap = [True, False]):
max_depth.append(None)
global best_model
random_grid = {'n_estimators': n_estimators,
'max_features': max_features,
'max_depth': max_depth,
'min_samples_split': min_samples_split,
'min_samples_leaf': min_samples_leaf,
'bootstrap': bootstrap}
rf = RandomForestRegressor()
rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose=1, random_state=42, n_jobs = -1)
best_model = rf_random.fit(features, labels)
print(best_model.best_estimator_)
print("The mean accuracy of the model is:",best_model.score(features, labels))def rand_forest_grid_search(features, labels, n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)],
max_features = ['auto', 'sqrt'],
max_depth = [int(x) for x in np.linspace(10, 110, num = 11)],
min_samples_split = [2, 5, 10],
min_samples_leaf = [1, 2, 4], bootstrap = [True, False]):
param_grid = {'n_estimators': n_estimators,
'max_features': max_features,
'max_depth': max_depth,
'min_samples_split': min_samples_split,
'min_samples_leaf': min_samples_leaf,
'bootstrap': bootstrap}
global best_model
rf = RandomForestRegressor()
grid_search = GridSearchCV(estimator = rf, param_grid = param_grid,
cv = 3, n_jobs = -1, verbose = 1)best_model = grid_search.fit(train_features, train_labels)
print(best_model.best_estimator_)
print("The mean accuracy of the model is:",best_model.score(features, labels))def execute_pipeline(features,labels, search_space=[
{"classifier": [LogisticRegression()],
"classifier__penalty": ['l2','l1'],
"classifier__C": np.logspace(0, 4, 10)
},
{"classifier": [LogisticRegression()],
"classifier__penalty": ['l2'],
"classifier__C": np.logspace(0, 4, 10),
"classifier__solver":['newton-cg','saga','sag','liblinear'] ##This solvers don't allow L1 penalty
},
{"classifier": [RandomForestClassifier()],
"classifier__n_estimators": [10, 100, 1000],
"classifier__max_depth":[5,8,15,25,30,None],
"classifier__min_samples_leaf":[1,2,5,10,15,100],
"classifier__max_leaf_nodes": [2, 5,10]}], cv=5, verbose=0, n_jobs=-1):global best_model
pipe = Pipeline([("classifier", RandomForestClassifier())])
gridsearch = GridSearchCV(pipe, search_space, cv=cv, verbose=verbose,n_jobs=n_jobs) # Fit grid search
best_model = gridsearch.fit(features, labels)
print(best_model.best_estimator_)
print("The mean accuracy of the model is:",best_model.score(features, labels))
感谢阅读!