TowardsDataScience 博客中文翻译 2016~2018(三百一十九)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

什么是贝叶斯法则?

原文:https://towardsdatascience.com/what-is-bayes-rule-bb6598d8a2fd?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

贝叶斯法则为我们提供了一种基于新的相关的证据来更新我们的信念的方法。例如,如果我们试图提供一个给定的人患癌症的概率,我们最初只会说无论人口中有多少百分比的人患癌症。然而,给定额外的证据,例如这个人是吸烟者,我们可以更新我们的概率,因为如果这个人是吸烟者,患癌症的概率更高。这允许我们利用先验知识来改进我们的概率估计。

规则

下面的等式是贝叶斯法则:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该规则有一个非常简单的推导,直接来自联合概率和条件概率之间的关系。首先注意 P(A,B) = P(A|B)P(B) = P(B,A) = P(B|A)P(A)。接下来,我们可以将涉及条件概率的两项设置为彼此相等,因此 P(A|B)P(B) = P(B|A)P(A),最后,将两边除以 P(B)得出贝叶斯法则。

在这个公式中, A 是我们想要概率的事件, B 是在某种程度上与 A 相关的新证据。

P(A|B) 称为后部;这就是我们试图估计的。在上面的例子中,这将是“假定一个人是吸烟者,患癌症的概率”。

P(B|A) 称为似然;这是根据我们最初的假设,观察到新证据的概率。在上面的例子中,这将是“假定某人患有癌症,成为吸烟者的概率”。

P(A) 被称为之前的;这是我们假设的概率,没有任何额外的先验信息。在上面的例子中,这将是“患癌症的概率”。

P(B) 称为边际可能性;这是观察到证据的总概率。在上面的例子中,这将是“成为吸烟者的概率”。在贝叶斯规则的许多应用中,这被忽略,因为它主要用作归一化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例子

使用癌症诊断的例子,我们可以表明贝叶斯规则允许我们获得更好的估计。现在,我们将把一些虚构的数字放入示例中,这样我们就可以评估贝叶斯规则带来的差异。假设得癌症的概率是0.05——意味着 5%的人得了癌症。现在,假设成为吸烟者的概率是 0.10——意味着 10%的人是吸烟者,20%的癌症患者是吸烟者,那么 P(吸烟者|癌症)= 0.20。最初,我们患癌症的概率只是我们的先验,所以 0.05。然而,使用新的证据,我们可以改为计算 P(癌症|吸烟),它等于(P(吸烟者|癌症)* P(癌症))/ P(吸烟者)=(0.20 * 0.05)/(0.10)=0.10

通过引入新的证据,我们因此获得了更好的概率估计。最初我们有 0.05 的概率,但是使用吸烟者的证据,我们能够得到更准确的概率,是我们先前的两倍。在给出的例子中(即使有我们编造的数字),这种影响应该是很符合逻辑的,因为我们知道吸烟会导致癌症。因此,这证明了贝叶斯规则如何允许我们使用相关信息来更新我们的信念。

贝叶斯统计有什么用?

原文:https://towardsdatascience.com/what-is-bayesian-statistics-used-for-37b91c2c257c?source=collection_archive---------3-----------------------

概率编程与机器学习

在过去的十年里,我们看到了机器学习应用的爆炸式增长,这些应用在搜索、电子商务、广告、社交媒体和其他垂直领域尤为成功。这些应用特别关注预测准确性,通常涉及大量数据——有时在万亿字节左右——事实上,这推动了网飞、亚马逊、脸书和谷歌等科技巨头的大量创新。

从根本上说,虽然这些模型通常是“黑箱”,观察者不容易理解,但在客户流失建模或构建目标广告模型等应用中,模型“如何”工作并不重要,重要的是它确实工作。“工业机器学习”的另一个局限是,它需要收集大量的数据。举例来说,你的服务需要数百万活跃用户来证明建立一个广告模型的合理性。

这些限制使得很难或不可能制作只使用少量数据并利用特定领域专业知识的模型。它们还会在危险或法律复杂的环境(如健康或保险)中对模型产生负面影响。在这种情况下,产生预测的模型必须充满信心,让人们能够评估风险。例如,在预测患者患病的可能性时,了解不确定性估计值是很重要的,或者了解投资组合在银行或保险方面的损失风险有多大也是很重要的。

如果我们超越这些限制,我们就为新产品和新分析敞开了大门,这就是本文的主题。解决方案是一种叫做贝叶斯推断的统计技术。这种技术从我们陈述关于被建模系统的先验信念开始,允许我们将专家意见和特定领域的知识编码到我们的系统中。这些信念与数据相结合来约束模型的细节。然后,当用于进行预测时,该模型不会给出一个答案,而是给出一个可能答案的分布,让我们能够评估风险。

贝叶斯推理长期以来一直是学术科学中的一种选择方法,原因如下:它天生包含了信心的概念,它在稀疏数据中表现良好,模型和结果高度可解释且易于理解。利用你对世界的了解以及相对较少或杂乱的数据集来预测世界未来的样子是很简单的。

直到最近,实现这些系统的实际工程挑战仍然令人望而却步,并且需要大量的专业知识。最近,出现了一种新的编程范式——概率编程。概率编程隐藏了贝叶斯推理的复杂性,使得这些高级技术可以被广大的程序员和数据分析师所使用。

概率和结果分布的基本概念是这种范式中模型的基本构件。

现代机器学习中最令人兴奋和最具影响力的创新之一是图像分析的深度学习,这使得以前不可能的性能成为可能。概率编程通常过于专业或涉及专业语言,虽然这不是一种新的能力,但可能会像深度学习一样有影响力。

概率编程允许你将你的领域知识与你观察到的数据结合起来。它之所以强大,有三个原因:首先,它允许你整合领域知识——大多数机器学习框架不会这样做;其次,它对小型或嘈杂的数据集工作良好;第三,它是可解释的。

有哪些应用?

简而言之,在任何有大量异构或噪声数据的应用领域,或者任何需要清楚了解不确定性的领域,都可以使用贝叶斯统计。根据与专家的讨论,一些已经看到早期采用的领域是、电子商务、保险、金融和医疗保健。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www . psychologyinaction . org/psychology-in-action-1/2012/10/22/Bayes-rule-and-bomb-threats

贝叶斯法则的力量源于这样一个事实,即它将我们可以计算的量(假设为真时我们观察到测量数据的可能性)与我们可以用来回答任意问题的量(给定数据时假设为真的后验概率)联系起来。

分层模型

贝叶斯秘方是分层模型。我们可以用它们来模拟具有独立性的复杂系统。在这样一个模型中,我们观察单个事件的行为,但是我们加入了这样一个信念,即这些事件可以在一个层次结构中组合在一起。

例如,这可以是房地产定价模型或商业保险中的风险定价模型。在这两种模式中,你都可以在社区中拥有公寓或商店,而社区又在行政区中。一个街区里的商店并不都一样,但一般来说都很相似。佩克汉姆的普通商店不同于德普福德的普通商店,也不同于普特尼的普通商店。

这是层次模型。通过这种方式建模,我们可以学到很多东西,我们不仅可以从德普福德,还可以从佩卡姆和普特尼那里了解德普福德。这在特定等级的数据稀疏的情况下非常有用,例如,在特定时间段的特定邻域中没有索赔。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图:说明了“收入预测”模型的层次结构。

想了解更多?

  • https://www.youtube.com/watch?v=0kRytJZcHVw 是我最近在伦敦 PyData 做的一个演讲
  • 你可能想在这里注册概率编程初级邮件列表【http://eepurl.com/dFZZGb
  • 我组织了一门叫做概率编程入门的课程,它提供了超过 3 个半小时的关于概率编程本质的视频直播。
  • 要了解更多数据科学的东西,你可以在 Twitter 上关注我@ springcoil

什么是数据科学,什么不是?

原文:https://towardsdatascience.com/what-is-data-science-and-what-is-it-not-c6a09d735f02?source=collection_archive---------6-----------------------

数据科学,也被称为数据驱动的科学,是一个关于科学方法、过程和系统的交叉学科领域,以结构化或非结构化的各种形式从数据中提取知识或见解,类似于数据挖掘。

现在,我们准备讨论什么是数据科学。它包含了一些编程技巧、一些统计准备、一些可视化技术,最后但同样重要的是,许多商业意识。我特别关心的商业意识是一种能力和意愿,有时是渴望,将任何商业问题转化为可以利用当前或即将到来的可用数据来回答的问题。事实上,这需要一种特殊的方式来连接充满数据的随机世界中的所有点,其中大多数数据可能不会立即对成为一名工作数据科学家有用。

根据我目前的理解,数据科学家是连接商业世界和数据世界的人。同样,数据科学是数据科学家用来实现这一目标的手艺。

什么是

  1. 这有点用词不当,是媒体用来描述一切的时髦词。然而,通过这次讨论达成一致是很好的。
  2. 这些问题是关于数据科学的。所以我不会谈论数据科学家。转到什么是数据科学家?感兴趣的话。
  3. 我在大多数答案中发现的最大错误是某种“数据科学就是当你处理大数据、大量数据时”。那不是真的,数据科学可以应用到一个有一千行的数据集,这个没有问题。
  4. 如果我们要称之为“科学”,我们需要考虑科学和科学方法的定义。据此,数据科学不仅仅是实用的或经验的方法,它需要科学的基础。
  5. 没有人谈到数据和信息的区别。
  6. 数据是一组原始的、无组织的东西,需要处理后才有意义。
  7. 信息是指数据在给定的环境中被处理、组织、结构化或呈现以使其变得有用
  8. 基于此,我们将有数据科学和信息科学。现在,人们有一种偏见,谈论数据科学,包括信息科学。
  9. 很明显,在过去的几年里,它被应用于许多领域:
  10. 统计/数学
  11. 商业分析
  12. 市场情报
  13. 战略咨询
  14. 许多其他人…
  15. 最疯狂的是,你会看到这些领域的专业人士更新他们的简历,比如“我从事数据科学工作…”
  16. 以简单的方式创造数据科学。两个并不完全相关的方面,但随着新的快节奏和技术世界的到来,将不得不融合在一起:
  17. **统计/数学:**公式化合适的模型,产生洞察。
  18. 计算机科学:在模型和数据之间架起一座桥梁,在可行的时间内得出结果。
  19. 从事数据科学工作时需要了解或掌握一些知识的主题/工具:
  20. 线性代数
  21. 非线性系统
  22. 解析几何
  23. 最佳化
  24. 结石
  25. 统计数字
  26. 编程语言(R、Python、SAS)
  27. 软件:IBM 的 Excel,SPSS
  28. 通用平台:IBM 的 Watson Anlytics,Azure 机器学习,Google Cloud 机器学习,
  29. 数据可视化:使用 plotly/ggplot 的 Power BI、Tableau、R/Python
  30. 机器学习(监督、非监督和强化学习)
  31. 大数据
  32. 大数据框架(Hadoop 和 Spark)
  33. 硬件(CPU、GPU、TPU、FPGA、ASIC)
  34. 一图抵一万字。绘制了康威的数据科学维恩图。实质性专业知识(或领域专业知识)是您正在应用数据科学的领域的具体知识。要了解更多关于数据科学缺乏实质性专业知识的信息:数据科学讲座中缺少什么——风险越来越大

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

什么不是

  1. 机器学习不是数据科学的一个分支。机器学习起源于人工智能。数据科学只是把 ML 作为一个工具。原因是它为特定的任务产生惊人的和自主的结果
  2. 这并不能拯救那些从来没有衡量过任何东西,现在想要从他们的数据中获得洞察力的公司。“垃圾进,垃圾出”的数据科学将和未来几年产生的数据一样好。
  3. 只是使用一些 Excel 图表呈现数据,而没有任何关于数据的见解。

什么是期望值?

原文:https://towardsdatascience.com/what-is-expected-value-4815bdbd84de?source=collection_archive---------3-----------------------

用简单的游戏例子直观地解释期望值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

期望值是大量实验中随机变量的平均值。随机变量将数值映射到实验中每个可能的结果。我们可以通过求和来计算离散随机变量的期望值,在离散随机变量中,潜在结果的数量是可数的,求和的每一项都是随机变量的可能值乘以结果的概率。因此,例如,如果我们的随机变量是通过滚动一个公平的三面骰子获得的数字,期望值将是(1 * 1/3) + (2 * 1/3) + (3 * 1/3) = 2。

如果我们假设实验是一个游戏,随机变量将游戏结果映射到获胜金额,因此它的期望值代表了游戏的预期平均获胜额。因为期望值跨越了实数,所以它通常被分成负值、中性值和正值。具有每种期望值的游戏在现实生活中经常出现,因此期望值提供了一个简单的决策启发。

为了举例说明每种类型的游戏,我将使用 3 个类似的涉及抛硬币的例子,明确地说,每个场景中的随机变量是抛一次硬币的预期赢款。假设在每种情况下,硬币都是公平的,那么正面和反面的概率都是 1/2。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

中性期望值博弈

You flip the fair coin. Every time you get heads, you lose $1, and every time you get tails, you gain $1.

这种情况下的期望值是(-1 * 1/2) + (1 * 1/2) = 0。因此,因为硬币是公平的,损失金额等于收益金额,所以随着时间的推移,你既不会获利也不会亏钱。在这样的游戏中,虽然没有理由玩,但也没有理由不玩。因此,这些类型的游戏非常适合简单的娱乐,例如石头剪子布,在这种游戏中,随机选择一步棋是最佳策略,预期收益为 0。

正期望值博弈

You flip the fair coin. Every time you get heads, you lose $1, and every time you get tails, you gain $2.

这种情况下的期望值是(-1 * 1/2) + (2 * 1/2) = 1/2。因为正面和反面的可能性相等,所以反面的收益大于正面的损失。在这样的游戏中,你会随着时间的推移而获得金钱,所以你应该玩这种类型的游戏。这种类型的场景出现在许多现实生活的决策中,例如投资股票市场(随着时间的推移,市场处于总体上升趋势),学习考试(几个小时的损失时间被更高的 GPA 所抵消),或准备面试(几周的损失时间被更好的工作所带来的好处所抵消)。

负期望值博弈

You flip the fair coin. Every time you get heads, you lose $1, and every time you get tails, you gain $1\. Additionally, there is a $0.01 fee for every flip regardless of the outcome.

这种情况下的期望值是(-1.01 * 1/2) + (.99 * 1/2) = -0.01。因此,尽管硬币本身是公平的,损失金额等于收益金额,恒定费用导致游戏是一个负价值的游戏。在这样的游戏中,随着时间的推移,你预计会输钱,所以你不应该玩这种类型的游戏。这在许多赌博平台中很常见,在这些平台中,赌场提供最初中立的游戏,但随后收取费用,从而破坏了游戏的中立性(因此有“赌场总是赢家”的说法)。

结论

从期望值的角度考虑决策是决定是否有经济原因参与一项活动的简单方法。当然,除了纯粹的经济回报,还有其他方法来衡量效用,因此预期收益并不是一个万无一失的决策工具。此外,请记住,期望值是在大量重复试验的基础上得出的,因此这可能会对某些可能性非常少的事件提供扭曲的观点。比如考虑中彩票。这很可能是一个积极的预期价值机会,但你在有限的生命中真正实现这一价值的机会是如此之低,以至于不值得购买彩票。

什么是特质阿尔法?

原文:https://towardsdatascience.com/what-is-idiosyncratic-alpha-cd3fb3a491c5?source=collection_archive---------3-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Eagle’s View 资产管理公司总裁尼尔·伯杰(Neal Berger)在一篇市场评论中提到了特殊交易策略。在本文中,我们试图阐明这些特质策略是什么。

下面是摘自尼尔·伯杰的市场评论,由马蒂亚斯·克纳布报道。)

总之,我们认为量化策略在我们的投资组合中仍有一席之地。传统的、更“普通”的量化策略,如基本面因素、动量和基于均值回归的统计套利,则不会。我们已经或正在退出那些策略和经理,我们认为他们运行的是更加平庸的量化策略,这些策略和经理没有认识到或跟上量化竞争的加剧以及由于上述原因可用 alpha 的减少。虽然我们在广泛减少 quant,但在 quant 内部,我们正在增加对经营 特质 和高度能力受限的 策略 的策略和经理的分配,这些策略或需要高度专业化的技能和知识来实现,或只是能力受限,无法吸引来自大型参与者的竞争。

提到的阿尔法值降低的原因主要是由于“行人策略”中的拥挤效应和可从中获利的傻钱的减少。有人认为,至少对一些基金来说,解决这一难题的方法是转向特殊的阿尔法。

让我们从这个定义开始:

*特异的:*奇特的或个别的。

根据上面的定义,流行的策略,包括趋势跟踪,横截面和绝对动量,统计套利,包括多头/空头市场中性,不提供特殊的阿尔法,因为它们是众所周知的和高容量的。例如,依靠高容量和广泛使用的策略,CTA 已经受到影响;alpha 已经降低,CTA 现在正试图在与股票市场和另类 beta 相关性较低的背景下推广这些策略;也就是说,Neal Berger 认为,过去的高绝对回报潜力现在已经一去不复返了。

因此,我们知道什么是特质策略。它们肯定不是一些流行书籍中几行代码就能完整描述的策略。由于潜在的领域很大,但很难进行全面的研究,下面是确定其中一些策略的努力。

特殊的阿尔法策略

事件和情绪驱动

事件驱动策略试图从公司事件中产生 alpha,包括合并、收购、意外收入、破产、CEO 更换、债务重组等等。

情绪驱动策略基于对新闻和社交媒体的分析,以确定情绪和趋势。

在我的书《被技术分析愚弄的 T4》的第八章中,我简要地谈论了这些策略和它们的危险。简而言之,数据挖掘偏差和虚假关联的产生是他们的主要问题。这些策略很难进行回溯测试,但这不一定是一个主要的缺点,因为任何不能回溯测试的策略也不容易被复制。然而,没有确凿的证据表明这些策略是有效的。

任何基金都不太可能完全依赖上述阿尔法来源。

全权委托技术分析

基于趋势线、图表模式和简单的价格和交易量指标的技术分析对大多数人来说基本上是一种随机交易方法。我们也承认,一小部分技术分析师能够持续盈利,但这不是因为技术分析的预测能力,而是因为他们对市场结构和运作的理解。实际上,技术分析不是作为预测工具,而是用来识别有吸引力的市场进入和退出。

很明显,这样的方法无法被 quants 测试。证据,如果有的话,是在实际的性能记录。即使在这种情况下,也必须仔细分析,以区分技能和运气。这是因为有大量随机交易者使用技术分析,他们中的一些人很有可能产生高额回报。因此,我们还必须查看这些回报在时间上的一致性,以及它们如何受到任何异常值的影响。

根据我自己对对冲基金有限的经验,没有多少经理会使用技术分析来分配给交易者,因为他们担心决策中可能存在的确认偏差和其他认知偏差。

机器学习模型

机器学习的基本问题是偏差-方差权衡。监督分类需要一组特征的可用性,也称为预测因子、因子或属性。简单模型具有高偏差和低方差,而更复杂的模型具有低偏差和高方差。简而言之,随着特征数量的增加,偏差会降低,但存在过度拟合噪声的风险。随着特征数量的减少,模型往往不适合新数据。没有简单的方法来找到最佳的平衡。更重要的是,特征工程是机器学习的一个关键方面,但它更像是一门艺术而不是科学。

有几个量化基金试图通过机器学习来产生阿尔法。numeri为数据科学家提供加密功能,用于开发模型。数据科学家上传他们的预测,这些预测由基金运营商进行评估,以确定他们的薪酬。上次我用 Numerai 的数据有 21 个特征。这组丰富的特征可能会导致高方差预测。操作者希望通过进行整体预测来减少方差,但是这可能仅保证较低的权益方差,而不能保证权益趋势,即基金权益无论如何都会下跌。这可能发生,因为大多数数据科学家使用或多或少相同的模型,他们也在各种论坛和博客上讨论这些模型。换句话说,通过采用低偏差/高方差预测的集合来最小化模型方差是有问题的。然而,与 Quantopian 的方法相比,这是一种更有趣的方法,在 quanto pian 中,大量证券(大约 1500 种)用于开发市场中性的长/短股票策略,机器学习采用已知因素。无法卖空大量证券的风险、训练集的过度拟合和测试集中的高方差增加了大规模快速提款的风险,由于预测集合方法,这种情况不太可能发生在数字案例中。

我解决这个问题的方法集中在特征工程上。 DLPAL LS 软件生成一小组特质特征,可用于开发算法和机器学习模型。这种方法可以实现更好的偏差-方差权衡。道琼斯 30 种股票的例子可以在这里找到。

许多基金已经决定探索机器学习,但在我看来,问题在于新定量分析师的倾向,他们认为解决方案取决于机器学习算法的复杂性,而不是特征的质量。因此,这些基金可能会遭受损失。

全权委托量化方法

这些方法本质上是将主观技术分析提升到基于证据的分析的下一个层次。在这种方法中,所有的模型都需要有一个清晰的逻辑,可以通过编码来回溯测试性能。这听起来好得不像是真的,实际上是真的。

基于一些感知异常的自主交易模型的根本问题是,即使它们看起来产生了 alpha,样本量也很小。最近,社交媒体和博客中所有试图预测下一个市场顶部的回溯测试指标都表明了这一点:样本规模远小于 20,在大多数情况下小于 10。这是因为高利润率异常现象很少出现。鉴于这个问题,定量分析师必须找到验证这些模型预测的方法。大多数在博客和社交媒体上展示这种回溯测试的人从来没有讨论过验证和虚假关联的可能性。主要原因是,对大多数分析师来说,回溯测试是一种证实他们偏见的手段。因此,他们提出的回溯测试只能证实他们的观点。

有很多方法可以验证自主量化方法,但是几乎不可能产生方法的回溯测试。因此,这些方法将缺乏基金经理的青睐,需要长时间的业绩记录来筛选交易者。

来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

这篇文章最初发表在价格行动实验室博客

如有任何问题或意见,欢迎在推特上联系: @mikeharrisNY

免责声明

关于作者: Michael Harris 是一名交易者和畅销书作家。他也是 17 年前第一个识别价格行为无参数模式的商业软件的开发者。在过去的七年里,他一直致力于开发 DLPAL ,这是一个软件程序,可以用来识别市场数据中的短期异常,以用于固定和机器学习模型。点击此处了解更多信息。

什么是智能?

原文:https://towardsdatascience.com/what-is-intelligence-a69cbd8bb1b4?source=collection_archive---------7-----------------------

大约 7 年前,当我还在上高中的时候,我是一名网站开发人员,并把学习心理学作为一种爱好,我偶然发现了一篇关于人工神经网络的文章。令人兴奋。就在我读完它之后,我开始寻找一种智力理论,这种理论可以解释我已经了解的人类智力,并以某种方式将其与人工智能联系起来。我研究过心理学、神经科学、控制论、认知科学、计算机科学、生物学、化学、物理学、神学、社会学和许多其他领域。上千篇文章论文,几百本书,几十门课过去了,我还是没有找到让我满意的答案。于是这篇文章诞生了。

让我们从维基百科对智力的定义开始,这实际上是我迄今为止看到的最好的定义之一:

感知或推断信息的能力,并将其作为知识保留,以应用于环境或背景中的适应性行为。

这与情报机构(CIA & Co .)通常使用的方式非常不同。他们的定义更接近于数据,特别敏感和有价值。然而,人工智能和生物智能的大多数定义是完全不同的,通常将智能描述为某种智能体的属性。此外,这个主体不可能完全孤立地存在,而是以某种方式体现在其环境中。

我将从人工制剂的概述开始,因为它们比生物制剂简单得多。之后,我将过渡到生物和他们有什么共同点。

人工智能

虽然很难确切说明第一个人工智能代理是什么,但巴贝奇的分析引擎可能是最佳候选。它没有任何特殊的“适应”能力,但是非常灵活。不幸的是,尽管理论上令人难以置信的美丽,没有一个原型已经完成。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Plan diagram of the Analytical Engine from 1840. Source: Wikipedia

有趣的是,在图灵出生前大约 50 年,图灵完成了。理论上,它可以将任何带数据的可计算函数作为输入,并在完全机械的情况下产生输出。大约比你的智能手机慢 1.000.000.000.000 倍。

这导致了算法复杂性理论的发展和一个普遍的认识,即建立一个通用计算机是一个相对容易的任务。此外,算法可以以多种方式实现。尽管一路上出现了技术挑战,但在过去的 70 年里,你可以以同样的价格购买的计算量大约每两年翻一倍。

换句话说,建立一个有能力计算任何政策的人工智能代理是很容易的。然而,它总是受到所提供的数据/输入以及处理它所需的时间的限制。这反过来提出了一个有趣的问题:如果每台计算机的能力都受到可用数据的限制,我们能称它们中的任何一台是智能的吗?我鼓励读者思考一下。

为了了解背景,让我们简单回顾一下人工智能研究的历史。从早期开始,它大致分为两个学派:象征主义学派和 T2 联结主义学派。符号方法更强调形式逻辑和手工制作的知识,而连接主义者更关注统计学习和人工神经网络(ann)的变体。他们的历史大致是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Relative popularity of Connectionist vs Symbolic approaches to AI. Source: Intuition Machine

“橙色”阵营之所以领先,首先是因为它与神经科学和人类大脑的关系,人类大脑仍然被认为是“强人工智能”或“AGI”的唯一成功实现。然而,最初的人工神经网络在处理现实世界的问题时过于局限。其中许多是线性的,能力非常有限,明斯基对此进行了深入的批评。与此同时,“蓝色”阵营发展了严谨的数学理论,能够创造出更多有用的东西。

随着手工知识的积累,扩展这些系统变得越来越困难。在输入或输出空间大于几千个选项的情况下,它们总是失败。此外,就像通常的法律可能相互冲突一样,专家系统中的规则也可能相互冲突。他们的规模需要越来越多的“法官”来解决这些问题。发展停滞。

与此同时,“橙色”阵营获得了足够的标记数据和计算资源,在合理的时间内“训练”他们的网络,让世界各地的研究人员开始实验。然而,在经历了最初的失败后,人工神经网络花了相当一段时间才重新获得公众的信任。开发人员花了一段时间才适应模糊逻辑和统计的概念,而不是布尔逻辑和清晰的对应概念。

但是在更详细地讨论人工神经网络之前,我想强调几个已经证明在许多领域有用的其他方法。此外,到这个时候,很明显,与混合方法相比,纯符号或连接方法的性能较差。我需要指出的是,我将只描述算法的大类,因为即使是所有人工智能方法的简要描述也需要至少几本书。

在我看来,最值得注意的是决策树、概率模型和进化算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Schematic decision tree. Source: prognoz.com

决策树是最简单和最有效的算法之一。简而言之,他们的“学习”是通过依次检查数据的每个属性,并找出哪一个对特定输出最有预测能力来进行的。像随机森林这样更高级的变体使用更复杂的学习技术,并在同一模型中组合多棵树,它们的输出是通过“投票”得出的。然而,基本原理和直觉是一样的。

概率模型代表统计方法,是人工神经网络的近亲。他们经常共享架构、学习/优化过程,甚至符号。但是概率模型大多受到概率逻辑(通常是贝叶斯)的约束,而 ann 可能没有这样的联系。

进化计算最初是受生物进化的启发。特别是关于随机突变和适应度的观点。考虑到修改通常是随机的,限制噪声的效果令人惊讶。这个课程是一种引导式搜索,在许多方面类似于退火过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Evolution of “walkers”. Source: alanzucconi.com

所有这些方法都有一个共同点:它们通常从非常差的政策开始,但逐渐改进以在某种性能评估函数上获得更好的分数。

如今,机器学习技术,特别是深度学习正在主导人工智能的研发。与大多数使用 1 或 2 个抽象中间层的 ML 方法(所谓的浅层模型)相比,DL 可能有数百甚至数千个堆叠的可训练层。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Deep network and learned features. Image from: edureka.co

在进行实际实验之前,人们普遍认为需要发现全新的优化程序来训练这样的深度网络。然而,事实证明,传统的反向传播(又名链式法则)和梯度下降可以很好地完成这项工作。数学家们在几个世纪前就知道这些算法了。更现代的算法,如 Adam 或 RMSProp,被发明来解决 GD 的一些问题,但在大多数现实情况下证明是不必要的。

简而言之,神经网络的训练工作如下:

  1. 取一堆可能的输入
  2. 计算各自的输出
  3. 计算性能
  4. 将误差传递给前一层以调整其参数(并对网络中的每一层重复)
  5. 对每一组可能的输入重复上述步骤,直到性能足够好

梯度下降不是唯一的最大似然训练算法,但是其中绝大多数算法的基本原理是相同的。只需通过策略取回错误,并调整参数以将其最小化。这种方法的一个主要问题是,人们普遍认为网络会陷入局部最小值,无法实现最佳设置。然而,最近的理论进展表明,在温和的假设下,许多神经网络可能确实达到全球最低水平。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Gradient Descent example. Source: distill.pub

DL 中另一个有趣的经验结果是训练可以高度并行化,这就是所谓的分布式学习。如果您在多台机器上同时训练相同的架构,同时不时地在它们之间交换梯度,您可以获得超过 1000 倍的加速,这个乘数直接取决于可用计算机的数量。

此外,经过训练的层可以重复用于类似的任务。这种现象被称为迁移学习,是人工神经网络广泛流行的重要原因。例如,为图像分类而训练的网络可以在以后用于其他计算机视觉任务。同样的原则也适用于自然语言处理和其他领域。不仅如此,同一个网络可以用来解决不同模态的问题。

所有这些经常会在强化学习领域聚集在一起。RL 背后的最初想法是从行为心理学借来的,在行为心理学中,研究人员研究了奖励如何影响学习和塑造动物的行为。

对于人工智能研究人员来说,RL 方法特别有趣,因为它们不需要完整的正确输出来进行训练。例如,不是精确地向机器人展示他应该如何移动,而是使用 RL 技术,你可以根据它走的多远或多快来奖励它,它会自己解决剩下的问题。然而,这种培训模式在实践中也是最具挑战性的,即使对于相对简单的任务,通常也需要付出很大的努力才能正确设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: blog.openai.com

我想强调的是,对于现实世界的问题,通常很难指定环境中的奖励,现在研究人员更关注内部奖励模型。

与 RL 并行的是逆向强化学习方法的发展,其中代理接收由专家产生的输入和输出,试图逼近可能驱动其行为的奖励函数。

除了上面提到的方法之外,一些对 AGI 的研究有明显不同的基础。这些框架有些来自严格的数学理论,有些受神经元回路的启发,有些基于心理学模型。然而,他们大多数人的共同点是关注他们受欢迎的同行失败的方面。我想强调的框架是 HTM、AIXI、ACT-R 和 SOAR。

让我们从分级时间记忆 (HTM)开始。最初,它是基于新大脑皮层回路启发的一些想法。但是,请记住,这些电路还没有得到足够的理解,HTM 可能只是一个粗略的近似。

然而,在 HTM 理论的核心有一个特别重要的概念——稀疏分布表示或 SDR。实际上,它只是一个通常包含几千个元素的位数组,它们的构造方式是将语义相关的输入映射到有许多重叠位的 SDR。从概念上讲,这类似于用神经网络导出的矢量化表示,但是稀疏性和过大的容量是主要的区别。这些想法特别相关,因为 DNN 收敛证明背后的关键假设之一是网络的过度参数化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Example of SDR overlapping in the presence of noise. Source: numenta.com

在我看来,HTM 理论的其他观点没那么有趣。抑制类似于批量归一化和一些其他正则化技术,boosting 是 ML 中一个相对较老的概念,层次结构似乎过于严格,而新皮层具有更复杂的连接模式,拓扑似乎是普通 NN 的架构的同义词,一般来说,这种理论对对象赋予了很大的权重,而对它们之间的关系则给予了很小的权重,甚至 SDR 也可以用普通的 ann 构建,使用大量神经元,同时惩罚激活。总的来说,HTM 仍然需要太多的调整才能达到与其他大联盟竞争对手相当的表现。无论如何,我相信 Numenta(HTM 背后的公司)对这些想法简单直观的解释值得称赞。

我的下一位“客人”——艾西,没有这么简单,但有更坚实的数学基础。然而,它有一个显著的缺点——它是不可计算的。事实上,许多最大似然算法不可能精确计算,我们必须处理近似。无论如何,这些近似法在实践中经常表现良好。艾西可以用一句话来形容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The model has an agent and an environment that interact using actions (outputs), observations (inputs), and rewards (might be described as a specific part of the input). The agent sends out an action a, and then the environment sends out both an observation o and a reward r,and term l(q) denotes the complexity of the environment. This process repeats at each time k…m. Source: lesswrong.com

它在很多方面都被证明是最优的,而且在我看来,它是对我们现在所拥有的 AGI 的最好的数学描述。此外,AIXI 是一个通用强化学习代理,在许多方面与 Schmidhuber 开发的哥德尔机器相似。然而,这两者都是 AGI 的描述模型,而不是创造它的配方。无论如何,它们是人工智能研究人员的巨大灵感来源。

相反,ACT-R,或者说思想理性的自适应控制,不仅仅是一个理论,还是一个用 LISP 编写的软件框架。它的发展已经持续了几十年,为其他语言带来了许多副产品,并对原始模型进行了修改。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: teachthought.com

ACT-R 主要关注不同类型的内存,而较少关注内存中数据的转换。它是作为人类思维的计算模型开发的,并在一定程度上取得了成功。它已被应用于预测 fMRI 成像结果以及一些关于记忆的心理学实验。然而,它在实际应用中总是失败,仍然只是研究人员的一个工具。SOAR 与 ACT-R 有着相似的根源和潜在的假设,但更侧重于实现 AGI,而不是人类认知的建模。

ACT-R 和 SOAR 是人工智能符号方法的经典代表,相对于连接主义方法,它们都逐渐失去了流行性。它们在认知科学的发展中发挥了重要作用,但是它们的应用比现代连接主义 ML 对应物需要更多的配置和先验知识。此外,神经成像和其他用于研究思维的工具正变得越来越详细和准确,而 ACT-R 和 SOAR 都落后了,从某种意义上说,它们过于僵化,无法保持相关性。

然而,在我看来,人工智能的未来必须是象征性的,至少在某种程度上,人工智能主体可以理解并遵循我们用人类友好的符号组成的法律。

野外的人工智能代理

上面我主要描述了定义现有人工智能代理策略的算法。但是,它们中的每一个都有某种身体:计算机、机器人或服务器,以及它们运行的环境,这通常是由它们所连接的互联网服务来定义的。

大多数个人电脑、智能手机和其他设备的硬件性能非常相似。他们的策略是由操作系统定义的,他们通过下载额外的软件来“学习”。虽然早期的计算机完全依靠与人类的互动来学习,但现在大多数计算机都通过互联网接收更新。

随着越来越多的数据转移到云中,服务器代理的作用越来越大。这些代理负责大多数计算密集型任务,有点类似于中枢神经系统。相反,面向消费者的小工具正在提高它们的输入/输出能力,变得有点类似于外周神经。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: researchgate.net

一个极端的例子通常被称为物联网,在物联网中,几十个高度专业化的微型设备各自只执行一项或几项功能,而基于云的中央“大脑”协调所有这些设备来控制房屋、工厂甚至整个区域。

相比之下,机器人通常专注于更加自主的代理。这些机器人通常必须实时处理复杂的真实世界输入/输出通道。无人驾驶汽车可能是最著名的例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The system-level overview of Voyage self-driving taxi. Source: news.voyage.auto

这只是一个简化的情况,而实际系统通常有超过 100 个传感器,这些传感器具有恒定的输入流,而它们的输出可以决定生死。设计这样的智能体是当今人工智能研究中最困难的领域之一。

不仅如此,面向消费者的机器人只是其中的一小部分,也是一个相对较新的趋势,而大多数是为工业和军事需求而设计的。考虑到这一点,与武装无人机或核电站控制人员的失误相比,自动驾驶出租车的不当行为看起来像是一场小事故。这种系统的策略编程不能依赖于黑盒学习算法,但通常涉及到他们工作的每个方面的严格数学规范。

总而言之,人工智能代理以各种形状和颜色出现,但趋势是外围设备越来越小,而数据中心越来越大。

量子世界

虽然这一部分可能看起来与智能的主题无关,但我相信物理学,尤其是量子物理学,由于一些原因值得特别关注。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: physics.stackexchange.com

首先,QM 是所有人工和生物制剂的共同点。半导体和生化试剂的工作原理都是基于量子效应。虽然谈论原子或亚原子水平的智能没有多大意义,但完全有可能用各种材料建造通用计算机。

第二,300 多年前开发的计算行星运动的数学工具成为反向传播和梯度下降的基础。不仅如此,概率论、统计力学和矩阵力学是质量管理的基础,也是现代人工智能的近亲。目前,深度学习就像炼金术,但我相信物理学可以帮助我们比现在更好地理解它。

三、量子计算的兴起。虽然量子计算机仍处于起步阶段,但当前的实验已经显示出某些优化问题的显著加速潜力。例如,Boltzmann Machine 是一种在大多数实际场景中难以处理的 ann,因此实践者提出了一种受限制的变体,这种变体成为了首批深度神经网络之一。然而,也许量子计算机将允许我们利用 BMs 以及许多其他概率模型的全部能力。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,QM 比上面描述的任何东西都更难理解。概率幅度、对经典概率逻辑的违反以及对亚原子水平上发生的一切的模糊描述只是冰山一角。具有讽刺意味的是,尽管许多人批评人工神经网络的可解释性差,但即使是人类也无法用直观的术语描述量子物理。

生物制剂

与只存在了大约 100 年的人工智能相比,生物智能已经存在了大约 30 亿年。地球上有数百万个物种,它们都有一个共同点: DNA

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: evogeneao.com

为什么 DNA 如此重要?一般是细胞的“中枢神经系统”。此外,人们普遍认为,在以 DNA 为基础的生命出现之前,就有以 RNA 为基础的生物,但它们在功能和结构上非常相似。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: Wikipedia

大多数 DNA,大约 98%的人类 DNA,不编码蛋白质,并且在很长一段时间内被认为是无用的。然而,它的相当大一部分在控制编码 DNA 的哪些部分应该根据环境而活跃方面起着至关重要的作用。此外,DNA 本身的部分可能会因甲基化而失活,这也是可逆的,可能在整个生命周期中发生多次。

所有这些都允许基因组以不同的方式对不同的输入组合做出反应,决定宿主细胞应该专门扮演何种角色以及应该有多活跃。此外,DNA 实际上并不需要宿主细胞的存在。细胞外 DNA 正在降解,但较小的片段可能存活多年。

顺便说一下,现代生物技术让我们可以随心所欲地合成和编辑 DNA,所以在这一点上,人工和生物制剂的区别基本上消失了。

细胞

基本功能细胞被称为原始细胞:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: xabier.barandiaran.net

它们代表了第一个生命体可能的样子。大约 30 至 40 亿年前地球上的环境模型表明,脂质气泡可能已经捕获了足够多的核苷酸,从而偶然创造了第一个基因组,而第一个基因组可能已经通过从周围环境中捕获营养物质开始复制。在基因和其他化学物质积累到临界量后,这些气泡在内部压力的作用下分裂。

另一个简单的例子是病毒。两者的主要区别在于,病毒不维持内部代谢,需要利用其他生物因子进行复制。它们的基因组通常很短,可能只编码 1 或 2 种蛋白质。然而,在被称为水平基因转移的过程中,病毒可以通过与宿主的 DNA 交换进行“交流”。许多单细胞生物都有这种能力,它在整体进化中起着重要作用。

相比之下,细菌可以对不同的化学物质、光线、压力、温度和其他东西有多个传感器。它们中的许多都有在分子尺度上类似普通内燃机的运动机制。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Bacteria E. Coli. Source: gfycat.com

此外,他们有相当先进的通讯技术,可以成群结队。他们的产出不再仅仅是废物。它们的基因组及其周围的各种蛋白质使它们能够消化广泛的营养物质,并执行相当复杂的行为。然而,总的来说,它们的结构与原始细胞和古细菌非常相似。

相反,真核细胞有相当多的细胞器。其中一些,像线粒体和叶绿体,有自己的 DNA 片段,在过去可能是独立的有机体。此外,线粒体在所谓的克雷布斯循环中起着至关重要的作用,这对新陈代谢至关重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: biochemanics.wordpress.com

典型的真核细胞内部有更复杂的化学机制,但缺乏自行移动的能力。不仅如此,动物细胞还缺乏叶绿体和细胞壁,这进一步损害了它们的自主性。一般来说,上面从左到右描绘的进化树上的生物的细胞逐渐失去了依靠自己生存的能力,同时获得了更复杂的“社会”政策和专门的功能。

细胞对环境变化做出反应的最快方式之一是通过动作电位。当一些传感器检测到化学物质、压力或其他刺激时,它们可以导致细胞膜中电势的快速变化,这反过来可能会引发一连串的化学反应,导致各种结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Venus Flytrap plant. Source: giphy.com

然而,动作电位信号仅限于起源细胞和与之有直接膜-膜连接的细胞。它可以通过信号分子与其他细胞交流,但这个过程要慢得多。为了避免这个瓶颈,大多数动物都有专门的细胞——神经元

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Schematic view of a neuron. Source: Wikipedia

它们有不同的形状,在其一生中可以生长新的突触或去除旧的突触。外围神经元通常只有几百个连接,而中间神经元可以有超过 10,000 个。所有这些机制使它们能够快速传递信号,并通过调整突触强度来转换信号。此外,脊椎动物的许多轴突都有髓鞘,允许电位移动得更快,同时激活更少的膜通道并节省能量。

然而,神经元来自高度互联的系统,为了理解它们在宏观尺度上做什么,你需要考虑整个连接体。迄今为止研究得最好的神经系统之一是线虫:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overview of the C. elegans nervous system. The majority of neurons are located in several ganglia near the nerve ring. Source: stb.royalsocietypublishing.org

它已经被研究了 50 多年,我们已经知道它所有 302 个神经元和 5000 多个突触的详细结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Partial circuit diagram of the C. elegans somatic nervous system and musculature. Sensory neurons are represented by triangles, interneurons are represented by hexagons, motor neurons by circles and muscles by diamonds. Arrows represent connections via chemical synapses, which may be excitatory or inhibitory. Dashed lines represent connections by electrical synapses. VNC, ventral nerve cord. Source: rstb.royalsocietypublishing.org

正如你可能看到的,即使是 302 个神经元也对理解每个神经元在做什么构成了真正的挑战。这变得更加复杂,因为它们正在“学习”,它们的功能可能会实时变化。现在试着想象一下人类大脑中的数十亿个细胞会发生什么。

鉴于所有这些复杂性,神经科学的大多数研究都集中在特定的区域、途径或细胞类型上。大多数进化的旧结构负责呼吸、心跳、睡眠/觉醒周期、饥饿和其他至关重要的功能。然而,大脑皮层受到的关注比其他任何东西都多。

在结构上,皮层是一个折叠的分层薄片,厚度约为 2-3 毫米,面积约为餐巾纸大小,包围着大脑的其他部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Cross section of the cortex. Source: etc.usf.edu

它涉及所有我们认为是高级认知功能的东西,如语言、意识、计划等。在人类中,大约 90%的皮层由新皮层代表,这是大脑中最近的进化发明之一。

另一个被充分研究的区域是海马:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: gregadunn.com

所有的脊椎动物都有一个类似的结构,叫做大脑皮层,但是只有哺乳动物有上面描述的更进化的结构。它在空间和情景记忆中起着至关重要的作用。简单来说,它的功能是一个认知时空地图。有了这张地图,大脑可以在其他部分储存复杂的记忆,这些部分专门负责视觉、听觉和其他类型的表达。

对大脑的最初研究集中在损伤和病变上。然而,大脑皮层缺失区域和认知功能缺失之间的相关性相对较弱。事实证明,记忆分布在整个大脑皮层,甚至在手术切除某个部分后,邻近的神经元可能会重新学习缺失的功能。此外,通常很难准确界定伤害的界限。这些研究提供了这样的地图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source: pinterest.fr

这些地图的主要问题是在实践和理论两方面都缺乏精确性。在实验环境中,你可以刺激大脑的小部分,观察反应。但是,除了主要的感觉和运动区域,它通常产生相当模糊的结果。另一方面,现在你可以使用功能性磁共振成像来跟踪受试者在执行一些任务时大脑的哪些部分是活跃的,但由于这些区域并不专门针对少数任务,所以结果通常是模糊的。此外,功能性核磁共振成像实际上是测量氧气供应水平,所以像这样在单个神经元水平上测量活动是不够的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Spike propagation in a hippocampal neuron. Source: nature.com

目前神经科学研究中最有前途的方向之一是光遗传学。它允许我们使用为神经元提供光传感器的基因,以更高的精度控制单个神经元的活动。然而,它需要基因操作,不能用于人类实验。

大脑活动的另一个有趣的特征是它以波的形式进行:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

High-level interpretation of EEG recordings (cps = cycles per second). Source: dickinson.edu

所有这些研究都有助于我们理解和治疗神经系统疾病,但它们远不能描述人类的行为,除了某些部位的活动与这个人正在做什么或在想什么的模糊描述之间的相关性。无论如何,这种自下而上的思维研究方法导致了许多重要的发现,如根据神经活动预测某人选择的可能性,以及大脑没有“中央”部分。

另一方面,从心理学角度进行的行为研究受遗传、文化和环境因素的影响很大。这项研究最广为人知的成果之一是智商以及测量智商的测试。也有许多理论试图解释智力,如多元智能理论三元智能理论和其他理论。然而,到目前为止,它们都没有被广泛接受。

心理学理论的主要问题是它们的描述性,这种描述性不能提供一种定量证明它们的方法。即使像走路或说“嗨”这样简单的行为背后的神经元级过程的数量也是极其巨大的,再加上考虑到每个细胞内 DNA 和其他生物机械的复杂性,神经科学研究的心理解释往往比实验本身更复杂。然而,一些人类认知模型在行为和神经活动之间建立了牢固的联系。

在我看来,最有趣的一个是综合信息理论 (IIT),它基于这些公理:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Axioms and postulates of IIT. Source: wikipedia.org

其他理论包括强化学习及其在大脑中的实施方式,大量的记忆、视觉、听觉、语言和其他模型。然而,在我看来,IIT 提出了其中最普遍的理论框架。

虽然上面提到的模型主要集中在个人的行为上,但“社会心理学”对大多数生物体来说是至关重要的。从你肠道中的细菌群落开始,一直到鱼、蚂蚁、蜜蜂、鸟类和人类社会都是从社会互动中产生的。我们已经对蚂蚁的化学语言和蜜蜂如何通过“跳舞”进行交流有了相当多的了解,但理解人类的情感却是一个巨大的挑战。随着语言、法律和宗教的发展,事情变得越来越复杂。

那么,什么是智能呢?

答案有很多,但我们还没有一个被广泛接受的生物和人工智能的统一理论。然而,我相信艾西和 IIT 的杂交可能会让我们更接近它。为了把它们结合起来,我们需要一个奖励/效用的物理概念,这个概念可能来源于医学和经济学,适用于每一种人工和生物制剂,这本身就是一个巨大的问题。

几乎所有当前的智能测量都是基于某些任务的表现,这在现实世界中造成了一个问题,在现实世界中,环境以及智能体可能偶然遇到的任务都在不断变化。另一方面,将意识定义为“任何可能的经验”以及相关的 IIT 框架与艾西背后的智力框架一起可能会提供认知表现的更广阔的图景。

从内部的观点来看,任何代理人的工作都可以被描述为量子系统的波函数,但是在几乎所有的情况下,它都是难以计算的。此外,对习得的中间表征的解释对生物和人工智能都是一个巨大的挑战。

最重要的是,我相信没有单一的算法或机制最终负责智能,但它是一个代理如何与其环境交互的属性。

下一步是什么?

虽然人工智能的进步和对人类智能的更深入理解有很多好处和大量的实际应用,但它们也揭示了我们需要应对的许多挑战,其中大多数都属于以下类别之一:

  • 隐私。以前——你的数据属于你,在某种程度上,属于政府,有严格的法律规范其流动。现在,数以百计的跟踪服务,社交网络和其他公司几乎没有披露这些数据是如何使用的。
  • 偏见。除了人工筛选的数据集,每个训练数据集都有其偏差,它们往往会在像推荐引擎这样的闭环系统中放大。
  • 对齐。大多数人工智能训练都是基于效用最大化或错误最小化,那些目标函数并不代表所有的人类价值和道德。
  • 位移。一段时间以来,技术已经在许多任务中取代了人类,但人类的进化比人工智能慢得多。就在几十年前,计算机还是专业人士的稀有工具,但现在不每天使用它们就很难保持相关性。
  • 网络攻击。以前,网络攻击通常需要做大量准备才能瞄准一个人,但现代人工智能可以比人类更快地收集信息、猜测密码、生成钓鱼内容并伪装成其他人,同时在这个过程中改进自己。
  • 心理工程。无数的心理学实验和历史教训表明,即使没有任何暴力倾向的人,如果被恰当地操纵,也会造成真正的伤害。脸书、谷歌和其他大公司可能有足够的关于我们的信息来瞄准、筛选和强迫我们做任何事情。

在控制全球经济主要部分的交易机器人的情况下,我们如何可靠地解决偏差和对齐问题?谁应该为人工智能代理在他们没有得到足够好的训练的场景中的错误负责?我们如何才能制造出容错的脑机接口,使其无法控制我们的思想?此外,这些问题中的大部分与人类和人工智能一样相关。

我们将在 5 年、10 年或 20 年后走向何方?我不知道,我也鼓励你对任何关于人工智能的预测持怀疑态度。历史表明,大多数预测,甚至来自领先的人工智能研究人员的预测,最终都被证明是错误的,有时是错误的幅度很大。然而,我相信人工智能和生物智能的共生是不可避免的,如果我们承认相关的问题并解决它们,这可能对我们非常有益。

资源

以及coursera.orgedx.org等众多开放教育平台。当我开始研究所有这些时,我并没有打算发表任何东西,所以我没有收集参考文献的列表,如果你的工作如上所述而不在列表中,我很抱歉(请随时通过 twitter @eDezhic 或电子邮件 edezhic@gmail.com 联系我)。

什么是知识蒸馏?

原文:https://towardsdatascience.com/what-is-knowledge-distillation-41bb77a3c6d8?source=collection_archive---------15-----------------------

知识提炼是一个迷人的概念,我们将简要介绍为什么我们需要它,它是如何工作的。

体重很重要

今天的模型可能相当大,以下是 ImageNet 数据集的一些顶级模型:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The models were instantiated via *keras.applications* module with top layers, the number of parameters are given by *summary()*.

似乎公平地说,简单的计算机视觉模型重量很容易~100Mo。仅仅用一百个 Mo 就能做出一个推论,对于最终产品来说并不是一个可行的解决方案。远程 API 可以做到这一点,但现在你的产品需要添加加密,你需要存储和上传数据,用户需要有一个可靠的互联网连接,以有一个像样的速度。我们可以训练一个更窄的网络,它们可能适合一个小内存。但它们很可能无法很好地提取复杂的特征。

我们不是在谈论合奏。集成是从训练数据中提取大量知识的好方法。但是在测试时,并行运行 100 个不同的模型代价太高。每个参数的知识比率相当低。

最后,一个模型可以在训练时得到很高的分数,但是我们可能想要:降低它的大小(对于嵌入式系统),提高推理速度或者简单地降低复杂性。杰弗里·辛顿谈到减少它的“记忆足迹”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

许多昆虫的幼虫形态最适合从环境中吸取能量和营养,而完全不同的成虫形态最适合完全不同的旅行和繁殖需求。在大规模机器学习中,我们通常在训练阶段和部署阶段使用非常相似的模型,尽管它们的需求非常不同(……)()在神经网络中提取知识 )

从一个较大的模型训练一个较小的模型被称为知识提炼。

蒸馏

作者继续说,我们用权重值来识别知识,这使得“很难看出我们如何改变模型的形式,但保持相同的知识”。并且提醒我们,我们可以把知识看作是从输入到输出的映射。

知识提炼的目标是将知识从一个表现突出的老师那里转移到一个更紧凑的学生那里。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为此,我们查看教师的 softmax 图层,将其放大,然后学生学习如何制作它们。我们需要放大,因为 softmax 层会将最不可能的类粉碎为零,并上升到最可能的类附近(就像一个热矢量)。我们还可以保持类之间的相对概率,其中摩托车和自行车在 softmax 层上比在书上有更多的相似性。我们可以通过提高温度 t 来实现。

为了传递知识,学生被训练由一个更大的老师产生的软化概率(T>>1)。当温度 T 小于 1 时,最期望的类对最终概率的影响最大。类似地,当温度升高时,概率会变得更软/更平——你可以让在这里直观地感受到温度对单个exp()的影响。

首先,老师的体温升高到某一点。然后学生被训练模仿老师的软概率。

利益

对软目标的训练有几个优点:可以从单个样本中提取更多的信息,可以在更少的样本上进行训练,不需要标记数据

多类分类器的 softmax 将为您提供相似图像的更高概率。玫瑰可能与郁金香而不是拉布拉多有相似的软概率。同样,两个不同的类出现在同一个图像中,我们可能会在输出中看到它。所以从每个训练样本中提取更多的信息

这是第一点的结果,模型可以用比老师更少的训练样本来训练。学习也更快,因为对学生有更多的约束。它需要针对多个(软)输出,而不是一个(硬)输出。

由于学生仅从软目标学习,通过类之间的相对相似性,它可以在未标记的数据集上训练,仅使用主设备具有运行中的“软标记器”。但实际上,数据集可以和老师一样。

失败

蒸馏损失一般有两种形式:匹配函数值、匹配导数或两者都有,对应一个不同阶的回归问题:

  • 匹配函数值:试图最小化老师和学生的预测之间的差异。对于分类任务,这是通过使用经典的交叉熵来完成的。
  • 匹配导数:尝试匹配导数的值。这是一种比以前更有效的方法,因为在这里我们可以完全接触到老师,并且我们能够测量其输入中的小变化的影响。

我们也可以尝试通过直接增加硬损失来增加预测的影响:

alpha ~= 0.1 
KD_loss = alpha * log_loss(y_true, softmax(logits)) + logloss(y_true, softmax(logits/temperature))

你可以在这里看到一个很酷的实现

资源

最初发表于data-soup.github.io/blog/

什么是机器学习?

原文:https://towardsdatascience.com/what-is-machine-learning-891f23e848da?source=collection_archive---------8-----------------------

这是一系列文章中的第一篇,旨在让没有受过技术培训的人更容易理解机器学习。希望有帮助。

过去几十年中计算机技术的进步意味着在人类努力的大多数领域中收集电子数据已经变得更加普遍。许多组织现在发现自己拥有跨越许多年的大量数据。这些数据可能涉及到人、金融交易、生物信息等等。

与此同时,数据科学家一直在开发被称为算法的迭代计算机程序,这些程序可以查看大量数据,对其进行分析,并识别人类无法识别的模式和关系。分析过去的现象可以提供非常有价值的信息,告诉我们在相同或密切相关的现象中未来会发生什么。从这个意义上说,这些算法可以从过去学习,并使用这种学习对未来进行有价值的预测。

虽然从数据中学习本身并不是一个新概念,但机器学习与其他学习方法的区别在于它能够处理大量数据,并且能够处理结构有限的数据。这使得机器学习可以成功地用于广泛的主题,这些主题以前被认为对其他学习方法来说太复杂了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习的例子

以下是你在日常生活中可能遇到的更成熟的机器学习应用的例子:

  • **信用评分:**金融机构长期收集客户的详细信息,例如收入、资产、工作、年龄、金融历史。可以对这些数据进行分析,以确定哪些特征与消极结果(如拖欠贷款)关联更大,或者哪些特征推动积极结果(如及时偿还贷款)。因此,可以构建预测关系,该预测关系可以基于客户违约的可能性对客户进行分类,并且金融机构可以使用该预测关系来做出更有效的贷款决策。
  • **购物篮分析:**当顾客在杂货店或网上结账时,购买的特定商品的信息将最终存储在一个大型数据库中。该数据库可以被分析以确定典型的购买行为或关联。例如,购买了牙刷的客户还会购买牙膏的可能性有多大?在许多情况下,可以收集个人客户数据,这有助于分析这种行为在特定人口统计或收入群体中的变化。分析这些数据可以为营销和广告策略以及决策提供信息。它还可以带来更加个性化的广告,客户可以收到他们更有可能感兴趣的产品的报价。
  • 基因科学:23andme.com在线 DNA 检测服务的成员提供个人信息和健康信息,并提供他们的唾液样本进行 DNA 分析。这些成员经常收到关于他们健康和个人特征的调查问卷。报告相似健康状况或特征的人的遗传密码可以在大量个体中进行分析,以寻找频繁出现的字符串或部分。如果这样的字符串或部门被发现,他们可以用来预测未来可能出现的特征或可能的医学问题。这种学习也可用于确定服役人员之间的生物关系,在某些情况下,使因收养或其他情况而失散的家庭成员团聚。
  • **估价:**可以对一段时间内的汽车销售数据进行分析,以确定汽车的哪些特征对价格影响最大,以及价格对这些特征的敏感度。基于此,在线估价工具现在可以根据车主输入的信息给出汽车的价格范围。
  • 其他常见应用包括医疗诊断、手写到文本转换、语音识别、人脸识别、图像压缩、机器人、自动驾驶汽车和许多其他用途。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习的类型

机器学习可以分为三大类:

  1. 监督学习算法利用输入和输出数据的训练集。该算法从训练集中学习输入和输出数据之间的关系,然后使用该关系来预测新数据的输出。最常见的监督学习目标之一是分类。分类学习的目的是利用学习到的信息来预测某一类的成员。信用评分示例代表分类学习,因为它预测拖欠贷款的人。
  2. 无监督学习旨在通过推断数据中的潜在模式和结构,在没有已知结果或结果的数据中进行观察。关联学习是最常见的无监督学习形式之一,其中算法搜索输入数据之间的关联。购物篮分析示例代表关联学习。
  3. 强化学习是一种“试错”学习形式,输入数据刺激算法产生响应,算法根据响应是否是期望的而受到“惩罚”或“奖励”。机器人技术和自主技术充分利用了这种学习形式,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习成功的必要条件是什么?

近年来,机器学习和“大数据”变得越来越广为人知,并引发了大量报道。因此,许多个人和组织正在考虑如何以及是否可能适用于他们的具体情况,以及是否有从中获得的价值。

然而,为成功的机器学习建立内部能力(或利用外部专业知识)可能成本高昂。在接受这一挑战之前,明智的做法是评估是否存在合适的条件,使组织有机会取得成功。这里的主要考虑与数据和人类洞察力有关。

有效的机器学习有三个重要的数据要求。通常,并非所有这些要求都能令人满意地得到满足,一个方面的缺点有时会被另一个或两个方面抵消。这些要求是:

  • **数量:**机器学习算法需要大量的例子,才能提供最可靠的结果。大多数监督学习的训练集将涉及数千或数万个示例。
  • **可变性:**机器学习旨在观察数据的异同。如果数据过于相似(或过于随机),它将无法有效地从中学习。例如,在分类学习中,训练数据中每个类别的样本数量对成功的几率至关重要。
  • **维度:**机器学习问题往往在多维空间中运行,每个维度都与某个输入变量相关联。数据中丢失的信息量越大,阻碍学习的空白空间就越大。因此,数据的完整程度是学习过程成功的一个重要因素。

机器学习也可以得到高质量人类洞察力的帮助。从一组给定的数据中可以研究的分析和情景的排列和组合通常是巨大的。这种情况可以通过与主题专家的交谈来简化。基于他们对情况的了解,他们通常可以突出数据中最有可能提供见解的方面。例如,招聘专家可以根据多年的参与和观察,帮助确定哪些数据点最有可能推动公司的选择决策。了解组织内部的底层流程也有助于数据科学家选择最能模拟该流程的算法,从而获得最大的成功机会。

下一章将讨论机器学习是如何工作的。在这里 读一下

最初我是一名纯粹的数学家,后来我成为了一名心理计量学家和数据科学家。我热衷于将所有这些学科的严谨性应用到复杂的人的问题上。我也是一个编码极客和日本 RPG 的超级粉丝。在 LinkedIn Twitter上找我。

什么是机器学习?

原文:https://towardsdatascience.com/what-is-machine-learning-8c6871016736?source=collection_archive---------2-----------------------

这个世界充满了数据。很多很多数据。从图片、音乐、文字、电子表格、视频等等。看起来短期内不会减缓。机器学习带来了从所有这些数据中获取意义的希望。

在这个系列中,我想带你在人工智能的世界中进行一次冒险,探索艺术、科学和机器学习工具。在这个过程中,我们将看到创造惊人的经历和产生有价值的见解是多么容易。我们将从高级概念开始,然后深入技术细节。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The data frontier stretches far into the distance

亚瑟·C·克拉克曾经说过:

“任何足够先进的技术都和魔法没什么区别。”

乍一看,ML 似乎很神奇,但是一旦你深入了解,你会发现它是一套从数据中获取意义的工具。

我们周围的数据

传统上,人类分析数据并使系统适应数据模式的变化。然而,随着数据量超过人类理解数据和手动编写规则的能力,我们将越来越多地转向能够从数据中学习的自动化系统,更重要的是,数据中的变化,以适应不断变化的数据格局。

机器学习已经无处不在

在我们今天使用的产品中,我们看到机器学习在我们周围,但对我们来说,机器学习并不总是显而易见的。虽然标记图片中的对象和人物显然是机器学习,但你可能没有意识到,像视频推荐系统这样的功能通常也是由机器学习驱动的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当然,也许最大的例子是谷歌搜索。每次你使用谷歌搜索,你都在使用一个以许多机器学习系统为核心的系统,从理解你的查询文本到根据你的个人兴趣调整结果。当你搜索“Java”时,机器学习决定先显示哪些结果,这取决于它认为你是咖啡专家还是开发者。也许你们两个都是!

今天,机器学习的直接应用已经相当广泛,包括图像识别欺诈检测推荐引擎,以及文本语音系统。这些强大的功能可以应用于广泛的领域,从糖尿病视网膜病变皮肤癌检测到零售,当然还有运输,形式为自动停车和自动驾驶车辆

预期的特征

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Don’t get left behind

不久前,当一家公司或产品在其产品中包含机器学习时,它被认为是新颖的。现在,每家公司都在寻求在他们的产品中使用机器学习。它正迅速成为一个预期的功能。正如我们期望公司有一个在我们的移动设备或应用程序上工作的网站一样,我们的技术将被个性化、有洞察力和自我纠正的那一天很快就会到来。

当我们使用 ML 使现有的人工任务比以前更好、更快或更容易时,我们也可以展望未来,那时 ML 可以帮助我们完成我们自己永远无法完成的任务。

谢天谢地,利用机器学习并不难。工具已经变得相当好;你需要的只是数据、开发者和冒险的意愿。

用数据回答问题

出于我们的目的,我们可以将机器学习的定义缩短为五个词:

《用数据回答问题》

当然,这是一种过于简单化的做法,但是它仍然可以达到一个有用的目的。

具体来说,我们可以将定义分为两部分:“使用数据”和“回答问题”。这两部分概括了机器学习的两个方面,两者同等重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“使用数据”通常被称为“训练”,而“回答问题”被称为“做出预测”,或“推断”。

将这两部分联系在一起的是模型。我们训练模型,使用我们的数据集做出越来越好、越来越有用的预测。然后,可以部署这种预测模型来提供对以前看不到的数据的预测。

数据是关键

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您可能已经注意到,这个过程的关键部分是数据。数据是开启机器学习的钥匙,就像机器学习是开启隐藏在数据中的洞察力的钥匙一样。

下一步是什么?

这只是对机器学习的高度概述,为什么它有用,以及它的一些应用。机器学习是一个广阔的领域,跨越了从数据中推断答案的整个技术家族。在未来,我们的目标是让您更好地了解对于给定的数据集和您想要回答的问题应该使用什么方法,以及提供如何完成它的工具。

这是云人工智能冒险系列文章的第一篇。下一次,我们将更详细地研究 ML 的具体过程,通过一步一步的公式来解决机器学习问题。

什么是机器学习和机器学习的类型—第 1 部分

原文:https://towardsdatascience.com/what-is-machine-learning-and-types-of-machine-learning-andrews-machine-learning-part-1-9cd9755bc647?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

几个月来,我一直在阅读什么是机器学习以及如何在实际应用中应用它。当我第一次读到谷歌的自动驾驶汽车 Waymo 时,故事就开始了。然后我读到了它是如何工作的。然后我听说机器学习这个术语在其中发挥了巨大的作用。几天后,我参加了印度 Pycon 会议,以获得更好的直觉。我刚刚在那里参加了一些关于机器学习的讲座。不幸的是,所有的都在我耳边消失了。然后我开始谷歌它。在大多数博客和 quora 上,我听说了吴恩达的 coursera 机器学习课程。突然我就一头扎进去了。
在这篇文章中,我将简要地提到 Coursera 的机器学习课程的第一周。

什么是机器学习?

提供了机器学习的两种定义。阿瑟·塞缪尔将其描述为:“在没有明确编程的情况下,赋予计算机学习能力的研究领域。”这是一个更老的,非正式的定义。
Tom Mitchell 提供了一个更现代的定义:“如果一个计算机程序在 T 类任务和性能测量 P 中的性能(由 P 测量)随着经验 E 而提高,那么就说它从经验 E 中学习。”

我举一个简单的例子来更好地理解。假设你有几组数字。然后,你只需将一组中的一个数字输入机器,就可以预测另一组数字。
(2,4),(3,6),(4,9)。计算机程序必须预测(5,?)
程序首先需要找到配对之间的逻辑,然后应用相同的逻辑来预测数字。去发现逻辑叫做“机器学习”。以便在找到逻辑之后,它可以应用相同的逻辑来预测每个数字。

机器学习的类型?

一般来说,有 3 种类型的机器学习。

1.监督学习

2.无监督学习

3.强化学习

监督学习

在监督学习中,我们得到一个数据集,并且已经知道我们的正确输出应该是什么样子,知道输入和输出之间有关系。
监督学习问题分为“回归”和“分类”问题。在回归问题中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到某个连续函数。在分类问题中,我们试图预测离散输出的结果。换句话说,我们试图将输入变量映射到离散的类别中。

例 1:

给定房地产市场上房屋大小的数据,试着预测它们的价格。价格作为规模的函数是一个连续产出,所以这是一个回归问题。我们可以把这个例子变成一个分类问题,我们的输出是关于房子“卖得比要价高还是低”在这里,我们根据价格将房屋分为两个独立的类别。

例二:

(a)回归——给定一个人的照片,我们要根据给定的照片预测其年龄
(b)分类——给定一个患有肿瘤的患者,我们要预测肿瘤是恶性的还是良性的。

无监督学习

无监督学习允许我们在很少或根本不知道结果应该是什么样的情况下解决问题。我们可以从数据中推导出结构,而不一定知道变量的影响。我们可以根据数据中变量之间的关系对数据进行聚类,从而得到这种结构。
无监督学习,没有基于预测结果的反馈。

例 1:

聚类:收集 1,000,000 个不同的基因,并找到一种方法来自动将这些基因分组为在某种程度上相似或通过不同变量(如寿命、位置、角色等)相关的组。
非聚类:“鸡尾酒会算法”,让你在混乱的环境中找到结构。(即在鸡尾酒会上从声音网格中识别出个人的声音和音乐)。

例 2:

我不擅长煮咖啡。所以有一天,我决定建立一个模型,根据糖、牛奶、咖啡粉的数量来预测我的咖啡质量。不幸的是,那并不顺利。但是,我希望我能在此基础上建立一个有效的模型。

强化学习

强化学习是机器学习的一个领域,受到行为主义心理学的启发,涉及软件代理应该如何在环境中采取行动,以最大化累积回报的概念。

例 1:

考虑教狗一个新把戏。你不能告诉它该做什么,但如果它做了正确/错误的事情,你可以奖励/惩罚它。它必须弄清楚它做了什么让它得到了奖励/惩罚。我们可以使用类似的方法来训练计算机完成许多任务,例如玩双陆棋或象棋,调度作业,以及控制机器人肢体。

例 2:

通过学习和适应游戏的新情况,教游戏机器人在游戏中表现得越来越好。

今天就到这里吧,伙计们。谢谢你的耐心。如果帖子中有错误,请告诉我,因为这是我的第一篇帖子。

测量对象检测模型-地图-什么是平均精度?

原文:https://towardsdatascience.com/what-is-map-understanding-the-statistic-of-choice-for-comparing-object-detection-models-1ea4f67a9dbd?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于使用机器学习解决的大多数常见问题,通常有多个模型可用。每个人都有自己的怪癖,并会根据各种因素表现不同。

每个模型都根据其在数据集上的表现来判断,通常称为“验证/测试”数据集。这种性能是用各种统计数据来衡量的——准确度、精确度、召回率等。选择的统计数据通常特定于您的特定应用程序和用例。对于每个应用程序来说,找到一个可以用来客观比较模型的指标是至关重要的。

在本文中,我们将讨论用于对象检测问题的最常见的度量标准— 平均精度也就是图。

大多数时候,这些指标很容易理解和计算。例如,在二进制分类中,精度和召回率是一种简单直观的统计。

另一方面,物体检测是一个相当不同的…有趣的问题。

即使你的物体检测器在一幅图像中检测到一只猫,如果你在它所在的图像中找不到的位置,也没有用。

由于您预测的是图像中物体的出现 位置,因此我们如何计算这一指标相当有趣。

首先,让我们定义对象检测问题,以便我们在同一页上。

目标检测问题

这就是我所说的“目标检测问题”,

给定一幅图像,找到其中的物体,定位它们的位置,并进行分类。

对象检测模型通常在一组固定的类上训练,因此该模型将仅定位和分类图像中的那些类。

此外,对象的位置通常是边界矩形的形式。

因此,对象检测涉及图像中对象的定位和该对象的分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image 1 — Few prominent Image Processing problems [Image taken from Stanford’s CS231n Course slides(lecture 8)]

如下所述,平均精度特别用于预测对象位置和类别的算法。因此,从图像 1,我们可以看到,它对于评估定位模型、对象检测模型和分割模型是有用的。

评估对象检测模型

为什么要地图?

对象检测问题中的每个图像可能具有不同类别的不同对象。如前所述,模型的分类和定位都需要评估。因此,在图像分类问题中使用的标准精度度量不能直接应用于此。这就是 mAP(平均精度)发挥作用的地方。我希望在这篇文章结束时,你能够理解它的含义和代表。

关于地面真相

对于任何算法,总是在与真实数据的比较中评估指标。我们只知道训练、验证和测试数据集的基本事实信息。

对于对象检测问题,地面真实包括图像、图像中对象的类以及该图像中每个对象 **** 的真实边界框*。***

一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Human visualisation of the ground truth

我们被给予实际的图像(jpg、png 等)和作为文本的其他注释(边界框坐标(x、y、宽度和高度)和类),红色框和文本标签仅被绘制在该图像上以供我们人类可视化。

对于这个特殊的例子,我们的模型在训练中得到的是这个

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The actual image

以及定义地面实况的 3 组数字(假设该图像是 1000x800px,所有这些坐标都是像素,也近似为)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,让我们把手弄脏,看看地图是如何计算的。

我将在另一篇文章中讨论各种对象检测算法、它们的方法和性能。现在,让我们假设我们有一个经过训练的模型,我们正在验证集上评估它的结果。

计算地图

让我们说,原始图像和地面真相注释是我们在上面看到的。训练和验证数据以相同的方式对所有图像进行注释。

该模型将返回大量预测,但在这些预测中,大多数预测都具有非常低的关联置信度得分,因此我们只考虑高于某个报告置信度得分的预测。

我们通过我们的模型运行原始图像,并且这是在置信度阈值化之后对象检测算法返回的,

带边框的图像-

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results from our model

现在,由于我们人类是物体检测专家,我们可以说这些检测是正确的。但是我们如何对此进行量化呢?

我们首先需要知道这些检测中每一个的正确性有多大。告诉我们一个给定的边界框的正确性的度量是联合上的— IoU交集。这是一个非常简单的视觉量。

就单词而言,有些人会说这个名字是不言自明的,但是我们需要一个更好的解释。我简单解释一下欠条,对于真正想要详细解释的人, 阿德里安·罗斯布鲁克 有一篇 真正的好文章 可以参考一下。

借据

***交集/并集是预测框和基础事实框的交集和并集之间的比率。*这种统计也被称为 Jaccard 指数,由 Paul Jaccard 在 20 世纪初首次发布。

为了获得交集和并集值,我们首先将预测框覆盖在基础真值框上。(见图片)

现在,对于每个类,与预测框和地面真实框重叠的区域是交集区域,并且跨越的总区域是联合*。*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

We’ll show this example only for the horse

上面的 horse 类的交集和并集如下所示,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

In this case the intersection is pretty large

交集包括重叠区域(青色区域),并集包括橙色和青色区域。

欠条的计算方法如下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

This Image is inspired by the pyimagesearch article, which was inspired by University of Pittsburg’s CS1699 HW assignment4

识别正确的检测并计算精度

对于计算精度和召回,就像所有机器学习问题一样,我们必须识别真阳性、假阳性、真阴性和假阴性。

为了得到真阳性和假阳性,我们使用 IoU。使用 IoU,我们现在必须确定检测(阳性)是正确的(真)还是错误的(假)。最常用的阈值是 0.5,即如果 IoU > 0.5,则认为是真阳性,否则认为是假阳性。COCO 评估指标建议测量各种 IoU 阈值,但为简单起见,我们将坚持 0.5,这是帕斯卡 VOC 指标。

为了计算召回率,我们需要否定的计数。由于图像中我们没有预测到物体的每一部分都被认为是负面的,所以测量“真正的”负面效果有点没用。所以我们只测量“假”否定。我们的模型遗漏的对象。

此外,另一个要考虑的因素是模型为每次检测报告的置信度*。通过改变我们的信心阈值,我们可以改变一个预测框是积极的还是消极的。基本上,高于阈值的所有预测(盒+类)被认为是正盒,低于阈值的所有预测是负盒。*

现在,对于每个图像,我们都有基础数据,它告诉我们该图像中给定类别的实际对象的数量。

现在,我们使用模型报告的每个阳性检测框的地面真实值来计算 IoU。使用这个值和我们的 IoU 阈值(比如 0.5),我们计算图像中每个类别的正确检测的数量( A ) 。这用于计算每个类的精度[TP/(TP+FP)]

精度= TP / (TP+FP)

由于我们已经计算了正确预测的数量( A ) (真阳性)和漏检(假阴性),因此我们现在可以使用此公式计算该类模型的召回( A / B ) )。

召回= TP / (TP+FN)

计算平均精度

平均精度是一个有不同定义的术语。这种度量通常用于信息检索和对象检测领域。这两个域有不同的计算 mAP 的方法。我们将讨论对象检测相关的地图。

当前流行的 mAP 的对象检测定义在 2007 年的 PASCAL 视觉对象类(VOC)挑战中首次正式化,该挑战包括各种图像处理任务。关于确切的文件,请参考

我们使用与上一节提到的相同的方法来计算精度和召回率。

但是,如前所述,我们至少有 2 个其他变量决定精确度和召回率的值,它们是 IOU置信度阈值。

IOU 是一个简单的几何指标,很容易标准化,例如 PASCAL VOC challange 基于固定的 50% IOU 来评估 mAP。(MSCOCO 挑战赛更进一步,在 5%到 95%的不同阈值范围内评估 mAP。另一方面,置信度因模型而异,对我的模型设计 50%的置信度可能相当于对其他人的模型设计 80%的置信度,这将改变精确回忆曲线的形状。因此,PASCAL VOC 组织者想出了一种方法来解释这种差异。

我们现在需要一个度量来以模型不可知的方式评估模型。

这篇论文建议我们计算一个叫做 AP ie 的度量。平均精度

*For a given task and class, the precision/recall curve is
computed from a method’s ranked output. Recall is defined
as the proportion of all positive examples ranked above a
given rank. Precision is the proportion of all examples above
that rank which are from the positive class. The AP summarises
the shape of the precision/recall curve, and is de-
fined as the mean precision at a set of eleven equally spaced
recall levels [0,0.1,...,1]:*

这意味着我们选择了 11 个不同的置信度阈值(决定了“等级”)。阈值应该是这样的,在那些置信度值下的回忆是 0、0.1、0.2、0.3、…、0.9 和 1.0。AP 现在被定义为在这些选定的 11 个召回值处的精度值的平均值。这导致该图是整个精确召回曲线的总体视图。

本文还对上述计算中所用的精度进行了详细的计算。

*The precision at each recall level r is interpolated by taking
the maximum precision measured for a method for which
the corresponding recall exceeds r.*

基本上,我们使用给定召回值的最大精度。

因此,该图是上面测量的所有类的所有平均精度值的平均值。

这实质上是如何为对象检测评估计算平均精度的。有时可能会有一些变化,例如 COCO 评估更加严格,使用各种借据和对象大小强制执行各种指标(更多细节请点击)。如果你们中的任何一个人想让我说得更详细,请在评论中告诉我。

因此,总结一下,平均精度,从字面上看,是数据集中所有类的平均精度(AP)的平均值。

比较地图值时需要记住的一些要点

  1. MAP 总是在固定的数据集上进行计算。
  2. 尽管解释模型输出的绝对量化并不容易,但 MAP 通过提供一个非常好的相对度量来帮助我们。当我们在流行的公共数据集上计算该度量时,该度量可以很容易地用于比较新旧对象检测方法。
  3. 根据类在训练数据中的分布情况,平均精度值可能会从某些类的非常高(具有良好的训练数据)到非常低(具有较少/较差数据的类)不等。所以你的地图可能是中等的,但是你的模型可能对某些职业真的很好,对某些职业真的很差。因此,在分析模型结果时,查看单个类的平均精度是明智的。这些值也可以作为添加更多训练样本的指标。

原载于 2018 年 1 月 27 日 tarangshah.com。2018 年 5 月 27 日更新**

什么是基于物理的动画?

原文:https://towardsdatascience.com/what-is-physically-based-animation-cd92a7f8d6a4?source=collection_archive---------12-----------------------

基于物理的动画(PBA) 指的是计算机图形学的一个领域,其目标是使用人工智能(AI) 生成物理上看似真实的动画。动画通常使用 2D 或 3D 模拟环境中的虚拟角色来播放。下面是一个使用 PBA 的最新最先进结果的好例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

An example of a 3D humanoid character running under heavy perturbations*. Physically-based animation enables the character to dynamically adjust its movements to the environment [1].*

PBA 与传统关键帧动画的一个主要区别是,PBA 可以根据环境的变化进行动态调整。另一方面,关键帧动画本质上是静态的和无响应的,必须小心处理,否则很容易产生不自然的运动,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

If not handled carefully, traditional keyframe animation easily produces unnatural movements (footage from Fallout 76).

在这篇文章中,我将简要概述 PBA 的基本概念以及解决这个问题的研究现状。

1.常见的方法有哪些?

近二十年来,许多研究人员一直致力于 PBA 的研究,迄今为止,已经提出了无数的方法来解决这个问题。我将这些方法分为两类:1)基于搜索的方法,和 2)强化学习。在这一节中,我将解释这些方法背后的核心思想。

1.1.基于搜索的方法

解决 PBA 的一类经典而强大的方法是使用基于搜索的方法来优化运动。这些方法背后的基本思想相当简单:1)生成多个动作序列,2)使用正向模拟和计算一些成本函数来评估它们,最后,3)选择最小化成本函数的动作序列。这个过程的简单说明如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

This picture demonstrates the basic mechanism in search-based methods using a simple example. Here the aim is to control an object from the left side to the green circle in the right. The optimal trajectory is shown in blue, and the gray lines indicate the randomly generated trajectories. After computing the cost function for all generated trajectories, the trajectory with minimum cost (shown in black) is considered as the solution [2].

迄今为止,已经提出了大量基于搜索的方法来求解 PBA。使用此类方法的最佳示例之一获得的最终动画如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The result of a search-based method, in which offline optimization is used to optimize a parameterized controller that generates the movements [3].

这项工作有趣的一点是,它没有直接优化运动。相反,它首先定义一个用于合成运动的参数化控制器,然后优化该控制器的参数。这使得角色能够稳健地处理环境中的随机扰动[3]。

1.2.强化学习

强化学习(RL)机器学习(ML) 的一个热门领域,研究从交互中学习的计算方法【4】。RL 的基本定义包括一个与某些环境交互的主体,其目标是随着时间的推移最大化累积的回报。在每个时间步中,代理观察当前状态并采取行动。之后,代理人观察到一个标量奖励以及新状态的观察结果。目标是优化代理,使其通过采取最佳行动获得最大可能的回报。这种相互作用的示意图如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The agent-environment interaction in reinforcement learning [4].

在过去的几年里,由于雅达利游戏[5]和围棋游戏[6,7,…]中的深度强化学习(DRL) 的显著成果,RL 受到了更多的关注。这些进展也激发了连续控制 RL 的几项突破。这些类别中的一种最先进的方法如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

An example of using reinforcement learning to imitate acrobatic movements by watching Youtube videos [8].

上述工作中使用的流水线包括三个阶段:1)姿态估计,2)运动重建,和 3)运动模拟。输入视频首先由姿势估计阶段处理,姿势估计阶段预测演员在每一帧中的姿势。接下来,运动重建阶段将姿态预测合并到参考运动中,并修复可能由姿态预测引入的伪像。最后,参考运动被传递到运动模仿阶段,在那里模拟角色被训练来使用 RL [8]模仿运动。

2.哪些游戏使用基于物理的动画?

由于其在计算资源方面的高要求,PBA 在视频游戏的动画流水线中没有被广泛使用。然而,有趣的是,几乎所有拥有密集动画系统的游戏都至少使用了一些 PBA 技术。在我看来,最好的例子包括 FIFAPES刺客信条

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FIFA is a good example of a big game title that uses PBA in its animation pipeline.

抛开大型游戏不谈,也有一些独立游戏已经完全使用 PBA 实现了他们的动画管道。在这些游戏中, QWOPToribash 是其中最成功的两个(如果你知道这里其他值得一提的好例子,请告诉我)。你可以在 Youtube 上找到很多这些游戏的游戏性视频。但是,我强烈建议您自己下载并测试它们,这样您就可以感受到 PBA 的强大和复杂。您可以从下面的 Toribash 中看到一个示例动作:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A few games have implemented their whole animation pipeline using physically-based animation (footage from Toribash).

3.有哪些开放性的问题?

到目前为止,我只告诉了你这个好消息。坏消息是,目前解决 PBA 的方法仍然不能以适中的计算成本合成鲁棒的运动。所以在这个领域有很多公开的问题。我试图在下面解决最重要的问题(从我的角度来看):

  1. 我们如何开发有效的方法来解决 PBA?
  2. 如何在实时应用和游戏中使用 PBA?
  3. 我们如何评价一部动画的质量(流畅度,自然度等)。)?
  4. 如何利用 PBA 设计出新颖的游戏机制或者人机交互界面?
  5. PBA 如何影响不断发展的增强、混合和虚拟现实技术?

4.结论

这篇文章是对 PBA 的简单介绍。与传统的关键帧动画技术相比,PBA 具有以更大的灵活性和多样性合成运动的潜力。当前解决 PBA 的方法使用基于搜索的方法和/或强化学习。尽管该领域最近取得了显著进展,但在计算能力和鲁棒性方面,仍有很大的空间来改进当前的方法。这就是为什么 PBA 还没有完全进入游戏开发管道的原因。

我希望这篇文章能帮助你对基于物理的动画问题有所了解。最后,我希望听到您的任何意见或问题。

参考文献

  1. 彭;阿贝耳,p。Levine,S. & van de Panne,m .,“DeepMimic:基于物理的角色技能的示例引导的深度强化学习。” ACM Trans。图表。,ACM,2018 ,37 ,143:1–143:14
  2. 哈姆莱宁,p。rajamki,J. & Liu,C. K .,“使用粒子信念传播的模拟人形机器人的在线控制”, 《美国计算机学会图形学报(TOG)》,美国计算机学会, 2015 ,34 ,81
  3. Geijtenbeekvan de Panne,M. & van der Stappen,A. F .,“两足动物基于肌肉的灵活运动”, 《美国计算机学会图形学汇刊》, 2013 ,32
  4. 萨顿,R. S. &巴尔托,A. G .,《强化学习:导论》, 麻省理工出版社, 2018
  5. Mnih,v;Kavukcuoglu 白银,d;鲁苏公司;Veness,j;贝勒马尔;格雷夫斯,a。里德米勒,m;菲吉兰,又名:奥斯特洛夫斯基、g .等人、《通过深度强化学习的人类级控制》、《自然》、《T33》、《T34》、《T35》、《T36》、《2015》、《T37》、《T38》、《518》、《T39》、《529》
  6. 白银,d;黄;马迪森,首席法官;Guez,A 西弗尔湖;范登德里斯切;Schrittwieser,j;安东诺格鲁岛;Panneershelvam,v。Lanctot,m .等人,“用深度神经网络和树搜索掌握围棋游戏”, 《自然》, 2016 ,529 ,484–489
  7. 白银,d;Schrittwieser,j;西蒙扬,k;安东诺格鲁岛;黄;Guez,A 休伯特,t。贝克湖;赖,男;波顿,a . .等人,《掌握没有人类知识的围棋游戏》, 自然, 2017 ,550 ,354
  8. 彭;金泽,a;j .马利克;Abbeel,P. & Levine,s .,《SFV:从视频中强化学习身体技能》, ACM Trans。图表。、ACM、、T4 2018、37

什么是“无服务器计算”?

原文:https://towardsdatascience.com/what-is-serverless-computing-a07f4a96759b?source=collection_archive---------5-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我第一次听到“无服务器计算”这个词时,我惊慌失措地想,这怎么可能。服务器是一种特殊的计算机,用于处理请求并通过网络传送数据。例如,“网络服务器”被用来访问互联网上的网页。当 web 浏览器向 web 服务器发送请求时,它会处理该请求并传送所请求的网页。有许多其他类型的服务器可用于不同种类的服务,

  • Web 服务器
  • 电子邮件服务器
  • FTP 服务器

实际上,“无服务器计算这个词是用词不当。即使它说无服务器计算,仍然需要一个服务器。不同之处在于,我们不需要自己维护物理服务器。服务器在云中维护,我们只需要向云提供所需的指令,以确保服务器按照我们想要的方式运行。通常,这些指令是使用函数发送到云的。

亚马逊在 2014 年推出的“AWS Lambda ”是第一个提供无服务器计算的公共云。最初,它只支持 Node.js。然而,目前它支持其他流行的编程语言,包括 Java 和 Python。

最近, Google Firebase 也在云功能下提供无服务器设施。开发人员可以将他们在函数中的后端代码上传到云,云会根据事件触发器和 HTTP 请求自动执行相应的逻辑。

如果你读到这里,你会认为这是另一种类型的云计算。实际上,无服务器计算是基于 FaaS,即功能即服务。由于云的参与,使用这种架构有很多优势。

  • 简化部署流程
  • 不需要复杂的基础架构和管理
  • 支持微服务架构
  • 动态资源分配
  • 成本效益(使用收费)
  • 可量测性

现在让我们使用 Google Firebase 获得一些关于无服务器计算的实践经验,它可以免费用于学习:)

我们将创建 2 个函数并上传到 firebase。第一个函数触发一个 HTTP 请求,将一个给定的输入保存到数据库中。另一个功能基于 firebase 事件触发器。它将在每次对数据库进行保存调用时自动执行,将输入转换为大写。你可以从这里阅读更多谷歌文档。

*注意:你需要安装 Node.js 才能遵循这个。如果不是从 这里 下载安装。

  1. 首先,使用以下命令安装 Firebase CLI。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2。认证&初始化

然后运行以下命令来验证和初始化项目。你需要有一个谷歌帐户进行认证。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行该命令时,浏览器将弹出,您将被重定向到登录页面。输入凭证,完成所有工作后,转到 firebase 中的控制台,创建一个新项目。启动项目时,本地项目将与此同步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里“功能”代表项目名称。当执行这个命令时,您将被要求选择一个默认项目,并且您将得到在 Firebase 中创建的项目。选择适当的项目,并通过安装所有必需的依赖项来继续初始化过程。

3。导入模块

设置完成后,导航到项目文件夹,您将看到已经创建了一个 index.js 文件。这个文件用于编写需要上传到 Firebase 的函数。

首先,我们需要导入云函数来创建函数和设置触发器。然后 Admin SDK 需要访问 Firebase 实时数据库来保存我们的输入。

4。添加我们的第一个函数

现在我们可以开始实现我们的功能了。首先,让我们编写函数,将给定的输入保存在数据库中。

如果你熟悉 Node.js,这里没有太大的区别。基本上,我们从请求中获取输入,并通过/message 路径中的管理模块将其保存在数据库中。我们保存的每个文本都将存储在实时数据库的消息下。当我们执行该功能时,您可以从 Firebase dashboard 中看到这一点。

5。添加第二个功能

同样,我们可以添加第二个函数。

由于这是一个事件触发函数,我们可以从事件中获取原始值。然后我们把它转换成大写,保存在“大写”下。当我们在 Firebase 仪表板中执行和查看结果时,这对您来说是有意义的。

6。部署功能

现在我们已经实现了我们的功能,是时候将它们部署到云中了。运行以下命令来部署我们的函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您将看到它将逐步部署我们所有的功能,并将给出一个 URL 来触发我们的 HTTP 触发功能。你可以用它来传递一个文本作为一个普通的 URL 参数(xyz.com/saveInput?输入=测试)。完成后,使用 web 浏览器中的 Firebase 仪表板检查实时数据库。您将能够看到一个创建为“消息”的部分,并且您传递的文本作为“原始”保存在那里。此外,它包含大写文本作为“大写”。现在回到代码片段,现在一切对你来说都有意义了。

希望你从这篇文章中得到一个基本的想法。这是一个非常基本的示例,可以为使用谷歌云功能提供一些指导。这个例子摘自官方文档,如果您有任何疑问,请遵循它。

干杯!

函数式编程有多棒:尾部递归消除

原文:https://towardsdatascience.com/what-is-tail-recursion-elimination-or-why-functional-programming-can-be-awesome-43091d76915e?source=collection_archive---------9-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Iguanas are experts at tail elimination. I am not sure about the recursion though. Source: Pixabay

尾部递归消除是函数式编程语言中一个非常有趣的特性,比如 Haskell 和 Scala。它使得递归函数调用几乎和循环一样快。

在我的关于 Python 中函数式编程特性的最新文章中,我说鉴于列表理解的存在,T2 映射有点多余,并且也没有很好地描绘 T4 表达式。我觉得我总体上没有做好函数式编程,因为我确实喜欢它作为一种构造程序的优雅方式。它与 Python 的风格和哲学不太合拍。作为越位评论,我提到了缺少尾部递归消除,这是 Python 实现中另一个有争议的设计决策。

老实说,当我写这个的时候,我并不完全确定什么是尾部递归消去法(TRE,从现在开始)。我知道这是一个与递归函数调用有关的优化,它出现在 Haskell 中,但并不多。

所以我决定用我能做到的最好的方式来弥补:学习并写一篇关于它的文章,这样这就不会发生在你身上了!

什么是递归调用?

当一个函数调用在被调用的函数范围内进行时,我们说它是递归的。所以基本上它是一个调用自身的函数。

许多问题(实际上任何你可以用循环解决的问题,和许多你不能解决的问题)都可以通过递归调用一个函数直到满足某个条件来解决。
例如,这里有一个以命令式和函数式两种风格编写的 Python 函数:

Note that the last two clauses in the second function could be merged with an ‘or’.

这两个函数在理论上做同样的事情:给定一个列表和一个元素,查看该元素是否存在,并将其作为 bool 返回。但是在较低的层次上,第二个实现进行了大量的函数调用,并且直到最后一个调用完成后才真正返回。为什么这是一个问题?

递归消除的动机

由于函数调用会占用计算机堆栈的空间,所以在遇到堆栈溢出之前,我们可以调用的函数数量有一个硬性限制:填满整个堆栈。不仅如此:由于每个函数调用都是从建立堆栈开始的(将东西推到内存和其他高成本的操作),第二段代码要慢很多。

正如我之前说过的,有些问题你无法用不使用递归的解决方案来解决,或者至少不那么优雅。因此,如果我们能以第二种方式编写函数,并使它们像第一种方式一样快,那将是非常好的——特别是如果这也允许我们避免堆栈溢出的话。

幸运的是,有人已经找到了解决方案——但首先,让我们澄清一些事情。

什么是尾部递归?

我们已经看到了为什么我们想要以一种有效的方式实现递归,但我一直在谈论消除尾部递归,而不是所有类型的递归。那么是什么让尾部递归变得特别呢?尾递归只是递归的一个特殊实例,函数的返回值被计算为对自身的调用,除此之外别无其他。

例如,下面是阶乘函数的两个版本。一个是尾递归,一个不是。

请注意,即使第一个函数的返回行包含对自身的调用,它也对其输出做了一些事情(在这个特殊的例子中是计算一个产品),所以返回值并不是递归调用的返回值。通常我们可以通过使用累加器参数使一个常规递归函数尾递归,就像我在第二次声明阶乘时所做的那样。

引入尾部递归消除

TRE 背后的整个思想是尽可能避免函数调用和堆栈帧,因为它们耗费时间,并且是递归和迭代程序之间的关键区别。你没看错:函数式语言很棒,部分原因是它们找到了调用更少函数的方法。

为了理解下一部分,重要的是回退一步,理解每次函数调用时到底发生了什么。

无论我们的代码是编译的(如 C 或 Golang)还是解释的(如 Python),它总是以机器语言指令的形式结束。这些通常用汇编或其他类似的语言编码,它们代表了最低层次的抽象,因此是对内存和硬件的最细粒度的控制。

下面是每次函数调用时发生的情况:

  • 所有寄存器——存储数据的变量的硬件等价物——都被推到堆栈上(写入内存,但不是以最慢的方式)。
  • 您的计算机开始从不同的内存地址读取指令(对应于被调用函数的第一行代码)。
  • 代码从该地址开始执行,做函数实际做的事情。通常以某种方式改变寄存器值。
  • 所有的寄存器值都从堆栈中弹出/取回,所以我们返回的函数有它的数据。
  • 运行 return 语句,并再次开始从前面的函数中读取指令。

就时间而言,第二步和第四步的运行成本更高,就像大多数处理内存的操作一样。每次 push 或 pop 通常需要十倍于“常规”(仅处理寄存器)指令的时间。然而,如果跳过这些步骤,一个函数可以在寄存器中写入值,潜在地覆盖调用者函数已经写入的值。想象一下,如果每次调用 *print,*时,所有变量都变成任意值,会发生什么。

然而,在函数调用自身的特殊情况下,我们可以使用一些技巧:

  • 我们可以存储函数开始的内存地址,而不是调用函数,只是在最后将“内存读取器”移回到它那里。
  • 我们可以自己写入寄存器,知道前一个函数期望从我们这里得到哪些值,而不必使用堆栈来恢复前一个状态。我们知道“前一个函数”期望的是什么,因为它就是这个函数。不仅如此:我们甚至不需要保存和恢复我们不会改变的寄存器。

这样我们可以避免来回推动和弹出我们的寄存器,这将花费很多时间。但这还不是全部——因为没有实际的函数调用发生(我们只使用了 jump 语句——移动我们的指令读取器—),我们没有填充我们的堆栈,也不会发生堆栈溢出。我们不需要首先在堆栈中保存以前的上下文,因为我们只是一次又一次地返回到同一个函数。我们需要保存的唯一上下文是第一次调用我们的函数时的上下文。

总而言之,TRE 是一种优化,它利用了函数调用的一种非常特殊的情况:函数调用自己,并返回它们的输出,而不做任何进一步的处理。它使用函数自身的知识,因此它可以将合适的值写入相关的寄存器,而不必恢复它在运行期间没有进行任何修改的值。然后,当它调用自己时,它就跳到自己的起点,而不必在堆栈中移动任何东西。

由于这个特性,像 Haskell 这样的语言可以运行递归算法的实现,这对于函数式编程来说是至关重要的(特别是对于纯函数式语言),就像它们的命令式对应物一样快。

这是 Haskell 中一个非常精简的线性搜索,看看它在两行代码中是多么优雅!(对于那些实际上擅长 Haskell 的人,请原谅我的糟糕做法或可怕的代码):

This code does the same thing as the second Python function defined above, only in Haskell

我希望你现在对 TRE 有了更好的理解,也许对函数式语言也有了更好的理解。如果你认为这个解释中的任何部分不够清楚,或者太详细,请在评论中告诉我,因为我还在学习写作。

如果你想要更多的编程教程、技巧和诀窍,请关注我!
并请考虑
表示对我写作的支持

机器学习最好的编程语言是什么?

原文:https://towardsdatascience.com/what-is-the-best-programming-language-for-machine-learning-a745c156d6b7?source=collection_archive---------0-----------------------

克里斯蒂娜·沃斯科格鲁

问答网站和数据科学论坛一遍又一遍地讨论着同样的问题:我是数据科学新手,我应该学习什么语言?机器学习最好的语言是什么?

有大量的文章试图回答这些问题,要么基于个人经验,要么基于工作机会数据。然而,机器学习中的活动比西方的工作机会所能描述的要多得多,同行的意见当然非常有价值,但往往相互冲突,因此可能会让新手感到困惑。相反,我们转向了来自 2000 多名数据科学家和机器学习开发者的硬数据,他们对我们关于他们使用哪些语言和他们正在从事哪些项目的最新调查做出了回应,以及关于他们的机器学习活动和培训的许多其他有趣的事情。然后,作为数据科学家,我们不得不运行一些模型,看看哪些是与语言选择相关的最重要的因素。我们比较了排名前五的语言,结果证明“哪种语言?”没有简单的答案问题。这取决于你试图建立什么,你的背景是什么,以及你最初为什么参与机器学习。

哪种机器学习语言总体上最受欢迎?

首先,我们来看看机器学习语言的整体流行程度。Python 领先,57%的数据科学家和机器学习开发人员使用它,33%的人优先开发它。考虑到深度学习 Python 框架在过去 2 年中的所有发展,包括 TensorFlow 和大量其他库的发布,这并不奇怪。Python 经常与 R 相提并论,但它们在受欢迎程度上没有可比性:R 在总使用量上排名第四(31%),在优先级上排名第五(5%)。事实上,在这五种语言中,r 是优先级使用比率最低的语言,只有 17%的开发者会优先使用它。这意味着在大多数情况下,R 是一种补充语言,而不是首选语言。Python 的这一比例为 58%,是五种语言中最高的,这清楚地表明 Python 的使用趋势与 r 的使用趋势完全相反。Python 不仅是使用最广泛的语言,也是大多数用户的首选。C/C++在使用率(44%)和优先级(19%)上都远远落后于 Python。Java 紧随 C/C++之后,而 JavaScript 在使用上排在第五位,尽管优先级性能比 R (7%)略好。我们向受访者询问了机器学习中使用的其他语言,包括 Julia、Scala、Ruby、Octave、MATLAB 和 SAS 等常见语言,但它们的优先级都低于 5%,使用率低于 26%。因此,我们将注意力集中在排名前五的语言上。

Python 在 Java 没有的应用中被优先考虑。

我们的数据显示,在为机器学习选择语言时,最具决定性的因素是你将从事的项目类型——你的应用领域。在我们的调查中,我们向开发人员询问了 17 个不同的应用领域,同时也为我们的受访者提供了机会,告诉我们他们仍在探索各种选项,而不是积极致力于任何领域。这里我们展示了每种语言顶部和底部的三个区域:开发人员对每种语言的优先级最高和最低的区域。

与从事其他领域工作的开发人员相比,从事情感分析的机器学习科学家更优先考虑 Python (44%)和 R (11%),JavaScript (2%)和 Java (15%)。相比之下,网络安全/网络攻击和欺诈检测领域的工作人员更重视 Java,而 Python 在这两个领域最不受重视。网络安全和欺诈检测算法大多是在大型组织中构建或使用的,尤其是在金融机构中,在这些机构中,Java 是大多数内部开发团队的最爱。在不太关注企业的领域,如自然语言处理(NLP)和情感分析,开发人员选择 Python,它提供了一种更简单、更快速的方法来构建高性能的算法,因为它附带了大量的专业库。

考虑到所需的控制水平、高性能和效率,游戏中的人工智能(AI)和机器人移动(27%)是 C/C++最受青睐的两个领域。在这里,带有高度复杂的人工智能库的低级编程语言,如 C/C++是一个自然的选择,而为统计分析和可视化设计的 R,被认为是最不相关的。游戏中的人工智能(3%)和机器人移动(1%)是 R 优先度最低的两个领域,其次是语音识别,情况类似。

除了情感分析,R 在生物工程和生物信息学(11%)中也有相对较高的优先级——与其他应用领域相比,这是一个 Java 和 JavaScript 都不被看好的领域。鉴于 R 在生物医学统计中的长期使用,无论是在学术界内部还是外部,它是使用最多的领域之一也就不足为奇了。最后,我们的数据显示,数据科学和机器学习的新开发者仍在探索各种选择,他们比其他人更优先考虑 JavaScript),而比其他人更优先考虑 Java(13%)。在许多情况下,这些开发人员通过在 web 应用程序中使用第三方机器学习 API 来试验机器学习。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

专业背景是选择机器学习语言的关键。

其次是应用领域,专业背景在选择机器学习语言时也很关键:与来自五种不同背景的其他语言相比,开发人员更优先考虑前五种语言。那些将数据科学作为第一职业或研究领域的人最优先考虑 python(38%)。这表明 Python 现在已经成为数据科学不可或缺的一部分——它已经发展成为数据科学家的母语。对于 R 来说就不一样了,它主要被数据分析师和统计学家优先考虑(14%),因为这种语言最初是为他们创造的,取代了 s。

前端 web 开发人员将 JavaScript 的使用扩展到机器学习,16%的人为此优先考虑它,同时避开繁琐的 C/C++ (8%)。与之完全相反的是嵌入式计算硬件/电子工程师,他们比其他人更喜欢 C/C++,而比其他人更回避 JavaScript、Java 和 R。考虑到他们在工程生涯中对掌握 C/C++的投资,满足于一种会损害他们对应用程序的控制水平的语言是没有意义的。嵌入式计算硬件工程师也最有可能从事接近硬件的机器学习项目,如物联网边缘分析项目,硬件可能会强制他们选择语言。我们的数据证实,他们在工业维护、图像分类和机器人运动项目等方面的参与程度明显高于平均水平。

对于 Java,前端桌面应用程序开发人员比其他人更重视它(21%),正如前面提到的,这也与它主要用于企业应用程序是一致的。企业开发者倾向于在所有项目中使用 Java,包括机器学习。在这种情况下,公司的指令也明显来自与语言优先化密切相关的第三个因素——进入机器学习的原因。进入机器学习的开发人员最优先考虑 Java(27%),因为他们的老板或公司要求他们这样做。对于那些进入这个领域仅仅是因为好奇想看看到底有什么大惊小怪的人来说,它是最不受欢迎的(14%)——Java 不是一种你通常只是为了好玩而学习的语言!好奇者比其他人更优先考虑 Python(38%),这是另一个迹象,表明 Python 被认为是人们需要实验以发现机器学习是什么的主要语言。

似乎一些教授数据科学课程的大学仍然需要跟上这一理念。与其他人相比,那些说他们进入机器学习是因为数据科学是/曾经是他们大学学位的一部分的开发人员最不可能优先考虑 Python (26%),最可能优先考虑 R (7%)。很明显,在学术界的统计界——它诞生的地方——仍然存在对 R 的偏爱,但随着数据科学和机器学习越来越倾向于计算,这种趋势正在消退。受过大学数据科学培训的人可能比其他人更喜欢它,但从绝对意义上来说,这仍然只是该群体中的一小部分人会首先选择 R。

那些希望通过机器学习来增强现有应用/项目的人(20%)更优先考虑 C/C++,而那些希望基于机器学习来构建新的极具竞争力的应用的人(14%)则较少考虑 C/c++。这种模式再次表明,C/C++主要用于工程项目和物联网或 AR/VR 应用程序,很可能已经用 C/C++编写,其中添加了 ML 支持的功能。当从头开始构建一个新的应用程序时——特别是一个使用 NLP 的聊天机器人——没有特别的理由使用 C/C++,而有很多理由选择提供高度专业化库的语言,如 Python。这些语言可以更快更容易地产生高性能的算法,这可能在新的以 ML 为中心的应用程序中提供竞争优势。

最后,进入机器学习以增加获得高利润项目机会的承包商比其他人更优先考虑 JavaScript)。这些可能是 JavaScript 开发人员正在构建 web 应用程序,他们正在向其中添加机器学习 API。一个例子是在基于网络的仪表板上可视化机器学习算法的结果。

没有所谓的“机器学习的最佳语言”。

我们的数据表明,在为机器学习和数据科学选择编程语言时,流行度不是一个很好的衡量标准。没有“机器学习的最佳语言”这种东西,这完全取决于你想要构建什么,你来自哪里,以及你为什么参与机器学习。在大多数情况下,开发人员将他们已经在使用的语言移植到机器学习中,特别是如果他们要在与他们以前的工作相邻的项目中使用它——例如 C/C++开发人员的工程项目或 JavaScript 开发人员的 web 可视化。

如果你第一次接触编程是通过机器学习,那么鉴于 Python 丰富的库和易用性,你在我们调查中的同行会指出 Python 是最好的选择。另一方面,如果你梦想在企业环境中工作,准备好使用 Java。无论如何,这都是机器学习的激动人心的时刻,无论你选择哪种语言,这段旅程都肯定会令人兴奋不已。享受旅程!

如果你是机器学习程序员或数据科学家, 加入我们的社区 ,在我们的 未来调查 中说出你的看法。

什么是 C4.5 算法,它是如何工作的?

原文:https://towardsdatascience.com/what-is-the-c4-5-algorithm-and-how-does-it-work-2b971a9e7db0?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

C4.5 算法在数据挖掘中用作决策树分类器,可用于基于特定数据样本(单变量或多变量预测器)生成决策。

所以,在我们直接进入 C4.5 之前,让我们讨论一下决策树以及它们如何被用作分类器。

决策树

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Example of a Decision Tree

决策树看起来有点像这个流程图。假设你想计划今天的活动,但是你被告知一些会影响你决定的情况。

在上图中,我们注意到影响决策的一个主要因素是父母拜访。所以,如果这是真的,那么很快就会做出决定,我们选择去电影院。如果他们不来访呢?

这带来了一系列其他情况。现在,如果天气晴天雨天,我们要么分别去打网球待在。但是,如果是刮风的天气,我会检查自己有多少钱。如果我有足够的钱可以花,也就是说,有钱,我会去购物,否则我会去电影院。

记住,树的根总是对一个价值函数有最小值的变量。在这个例子中,父母来访的概率各为 50%,如果你仔细想想,会更容易做出决定。但是如果天气被选为根呢?那么我们将有 33.33%的几率发生这种情况,这可能会增加我们做出错误决策的几率,因为有更多的测试用例需要考虑。

如果我们过一遍信息增益和熵的概念,会更容易理解。

信息增益

如果你随着时间的推移获得了有助于你准确预测某件事是否会发生的信息,那么关于你所预测的事件的信息就不是新信息了。但是,如果情况变糟,出现了意想不到的结果,这也是有用和必要的信息。

类似的还有信息增益的概念。

你对一个话题了解得越多,你就越不容易获得新的信息。更简洁地说:如果你知道一件事很有可能发生,那么当它发生时就不奇怪了,也就是说,它给你的信息很少是它确实发生了。

从上面的陈述中,我们可以得出,获得的信息量与事件发生的概率成反比。我们也可以说,随着熵的增加,信息增益减少。这是因为熵指的是事件发生的概率。

假设我们正在看掷硬币。期待公平硬币任何一面的概率是 50%。如果硬币是不公平的,获得正面或反面的概率是 T2 1.00,那么我们说熵是最小的,因为不需要任何尝试,我们就可以预测硬币的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下面的图表中,我们注意到,当每个事件的概率相等时,由于特定事件的最大不确定性而获得的信息量最大。这里,p=q=0.5p=q=0.5

E =系统事件的熵

p =人头作为结果的概率

q =作为结果的尾部概率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在决策树的情况下,重要的是节点被排列成使得熵随着向下分裂而减少。这基本上意味着,越是恰当地分割,做出明确的决定就越容易。

因此,我们针对每种分裂可能性检查每个节点。信息增益比是观测值与观测值总数的比值(m/N = p)和(n/N = q)其中 m+n=Nm+n=N,p+q=1p+q=1。在分裂之后,如果下一个节点的熵小于分裂之前的熵,并且如果该值与所有可能的分裂测试用例相比是最小的,则该节点被分裂成其最纯的成分。

在我们的例子中,我们发现父母访问与其他选项相比,在更大程度上降低了熵。因此,我们选择了这一方案。

修剪

我们最初例子中的决策树非常简单,但是当数据集很大并且需要考虑更多的变量时,情况就不一样了。这就是需要修剪的地方。修剪指的是在我们的决策树中删除那些我们认为对我们的决策过程没有显著贡献的分支。

让我们假设我们的示例数据有一个名为 Vehicle 的变量,当它的值为 Rich 时,它与条件 Money 相关或者是条件Money的衍生物。现在,如果车辆可用,我们就开车去购物,但是如果没有,我们就通过任何其他交通工具去购物。但最终我们还是去了 T21 购物。

这意味着车辆变量意义不大,可以在构建决策树时排除。

修剪的概念使我们能够避免回归或分类模型的过度拟合,以便对于小样本数据,在生成模型时不包括测量中的误差。

伪代码

  1. 检查以上底座情况。
  2. 对于每个属性 a,从 a 上的分裂中找到标准化的信息增益比。****
  3. 设 a_best 是具有最高归一化信息增益的属性。****
  4. 创建一个在 a_best 上拆分的决策节点。
  5. 在通过对 a_best 进行拆分而获得的子列表上重现,将这些节点添加为节点的子节点。****

c 4.5 相对于其他决策树系统的优势:

  1. 该算法固有地采用单遍修剪过程来减轻过拟合。
  2. 它可以处理离散连续数据
  3. C4.5 可以很好地处理数据不完整的问题

我们还应该记住,C4.5 并不是最好的算法,但它在某些情况下确实证明是有用的。

最优秀的数据科学家拥有的关键技能是什么?

原文:https://towardsdatascience.com/what-is-the-key-skill-that-the-best-data-scientists-have-655edea228ac?source=collection_archive---------4-----------------------

有一项技能可以让你脱颖而出。找出是哪一个,并查看在构建行为评分模型时如何应用它的示例。

了解如何应用不同的 Python 或 R 算法非常简单:我们都知道,只要修改一两行代码,就有可能从线性回归变成神经网络。或者 SVM,或者任何你喜欢的模特。

定义超参数也没有那么困难:只需创建一个交叉验证和网格搜索来查找将提升您的模型度量的值。部署一个模型可能更棘手,但是,通过一点坚持、大量的教程和无限的试错,你将能够上传一个每分钟可以处理数百万个请求的体面模型(或者你可以使用诸如马文之类的工具,它将为你做大量的工作)。但是,到底是什么让你与众不同呢?最优秀的数据科学家拥有的关键技能是什么?

**简单明了:**知道如何从数据中创建分析视图。

交易数据库——那些存储交易数据的数据库,如订单、支付、访问日志等——是为存储应用程序交易数据而定制的,对数据科学没有直接用处。构建这些数据库的开发人员没有考虑过,也不应该考虑如何使用它们进行分析。他们只是创建了数据模型,可以提高他们当时正在编写的任何应用程序的性能。

试图用交易基础创建机器学习模型根本行不通,除非你想要的是预测交易。数据科学家通常需要分析基础来工作。好吧,但是到底什么是分析基础呢?它与交易基础有何不同?

到底什么是分析数据库?

为特定的研究建立和组织分析数据库。为预测客户流失而创建的基础将不同于购物车产品推荐的基础。然而,两者的来源可能是相同的:事务数据库。客户流失预测必须对每个客户的行为数据进行分组,这样才有可能观察到一段时间内的客户行为。至于产品推荐,必须按会话对数据进行分组,以预测购物车上的相关商品。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Being able to create analytical databases is more important than being versed in multiple algorithms.

知道如何创建分析基础是数据科学家可以培养的最重要的技能之一。同时也是课程、MOOCs、教程里教的比较少的一种。为了将事务数据库转换为分析数据库,有必要真正了解您正在处理的业务。这一点,再加上批判性思维,是正确处理问题的基础。

创建目标和分析数据一致性并不那么明显:它需要一个漫长的调查过程,这往往会让你的经理失望。

数据科学家通常需要目标来训练他/她的模型。如果你看一下 Kaggle ,你会发现无数的比赛和数据集已经定义了目标,并且在训练和评估基地中可用。然而,事务数据库通常没有现成的目标可供使用。数据科学家必须定义客户何时放弃服务,这样他/她才能创建一个流失模型。将需要定义什么是不良付款行为,因此可以预测违约。创建目标和分析数据一致性并不那么明显:它需要一个漫长的调查过程,这往往会让你的经理们失望(直到现在,他们都相信他们拥有所有的数据,他们所需要的只是一个数据科学家)。

事实是,数据科学远不止是向模型提供数据和评估性能指标的即插即用过程。

数据勤奋

想象一下这样一种情况,您有一个数据库,其中几名销售分析师根据行为特征对销售线索进行分类。为了对客户进行分类,分析师必须判断谈判过程中领导的行为,然后为客户选择合适的资料并填写表格。这里我们有一些潜在的问题:

  1. 在同一个谈判中,一个分析师对一个线索的判断不一定与另一个分析师的判断相同。不同的分析师可以在不同的配置文件中对相同的销售线索进行分类。
  2. 分析师真的了解每个行为特征代表什么吗?是否有明确的标准将销售线索划分为“X 类”而不是“Y 类”?
  3. 在收集期间,流程是否有变化,比如插入新的行为类别/档案?如果是这样的话,你将不得不决定在定义你的目标时如何考虑它们。
  4. 数据是如何收集的?在每次与线索的新接触中,行为特征是否会被打乱,以便分析师真正选择最好的一个?
  5. 经理们要求准确地进行这种分类吗?如果这只是一个要求分析师回答的“无聊”的过程,那么很有可能一些分类只是“因为他们不得不”而被填充的。当行为特征总是以同样的顺序呈现给分析师时,这个问题变得更加明显:目标可能会偏向第一个选项。

在这个过程之后,你可能会得出结论,到目前为止收集的数据是完全无用的,因为没有标准和过程。而这肯定会让很多人失望(大概连你也会失望)。

创建用于信用违约预测(行为评分)的分析数据库

为了使创建分析数据库的过程更加清晰,让我们看一个正确定义问题和创建分析数据库以执行预测所需的一组过程的示例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Creating a model to predict customer credit default involves a series of business and technical decisions that have to be made by the data scientist.

假设您从事金融服务,并且面临以下问题:

我们需要创建一个模型来识别哪些客户在不久的将来不会支付他们的发票。

为此,您需要创建描述客户付款的变量。然后,有必要创建一个回归模型,能够挑选出好的和坏的付款人。最后,你需要计算客户好坏的概率。

1。定义目标是什么

你在你的数据库中找不到一个分类变量来表明某个客户是好的还是坏的付款人。首先有必要定义什么是好客户,什么是坏客户。对此,我们可以研究逾期付款。例如,您可能会发现,平均延迟时间为 20 天,但 75%的发票在到期日后 17 天内支付。

然后,您可以设计一个按逾期天数进行付款的累积分布。因此,您将能够验证 30 天后,87%的发票已经支付。但是,6 个月后,这个百分比将增加到只有 90%。然后,我们可以使用贝叶斯推断来预测客户在过期 30 天后支付发票的概率。

*# h1 = paid
# h0 = didn't pay
# e = observed event - reach 30 days past due
# With 30 days past due, 87% of invoices were already paid.**P(h1) = 90% # probability of paying, regardless the delay
P(h0) = 10% # probability of not paying, regardless the delay* P(e|h1) = 3 / 90 = 3,3% # *probability of reaching 30 days past due given that will pay* P(e|h0) = 10 / 10 = 100% # *probability of reaching 30 days past due given that will not pay*P(e) = P(e|h1) * P(h1) + P(e|h0) * P(h0)P(h1|e) = P(e|h1) * P(h1) / P(e)
P(h1|e) = 23,07% # *probability of paying the invoice given that is already 30 days past due*

我们可以得出的结论是,如果客户的付款已经晚了 30 天,他/她在未来结清债务的概率非常低(只有 23%)。要决定什么是好的或坏的付款行为,对业务的深入了解是必要的,因为你需要了解这种概率是否足够低,以将逾期不到 30 天的客户归类为好的付款人,而将逾期超过 30 天的客户归类为坏的付款人。

2。创建观察和绩效框架

我们感兴趣的是,利用客户在过去一段时间内的行为数据,预测客户在未来一段时间内的违约概率。选择这些框架的大小更多的是商业/谈判决策,而不是统计决策,记住它们必须足够大,以包含几个客户的行为观察。太短的窗口会增加观测值的方差,从而使模型失去精度。

定义:

根据客户在过去 12 个月的行为,我想预测他/她在未来 6 个月成为优秀付款人的可能性。

为了满足这一定义,您需要:

  1. 定义当前日期至少 6 个月之前的观察点。
  2. 定义一个观察框架,从观察点前 12 个月开始,到观察点结束。
  3. 定义一个在观察点之后 6 个月的绩效框架。
  4. 定义什么是好的付款人。我们之前做的事情!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Time framing the problem is a very important step in the process of creating an analytical database.

请注意,这个定义带来了一些影响:

  • 你需要至少 18 个月的数据
  • 你的预测是有时间限制的。每次你运行你的模型,它会计算未来 6 个月内的违约概率。
  • 在分析数据库中创建要素时,观察点和时间范围的大小将始终作为您的参考

3。创建目标特征

既然我们已经定义了什么是我们的目标,什么是观察和性能框架,我们最终可以在数据库上创建目标。为此,您将计算每个客户在绩效时间范围内的最大逾期天数,并根据以下规则创建 GOOD_PAYER 变量:

*if max(delay) >= 30 days then is bad = 0
If max(delay) < 30 days then is good = 1*

因此,如果在绩效时间框架内,客户的付款延迟超过 30 天,他/她将被归类为不良,即使发票是后来支付的。

我们输入 0 代表坏,1 代表好,因为我们想定义得分越高,违约的概率越低。

4。排除事项

现在,我们需要广泛的业务结构知识,所以我们可以从我们的基础上执行一些排除。示例:

  1. 排除在观察点没有信用限额的每个客户
  2. 排除所有在观察点发票过期超过 30 天的客户,因为我们已经知道他们是不良付款人
  3. 排除所有从未进行交易的客户

5。特征构造

对于这项研究,基础必须按客户分组。每个变量必须描述客户在观察时间段内的特定行为。以下是一些可以设计的变量示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Example of an analytical database created to feed a behaviour score model that predicts customer default.

: 个人信息特征— 表示客户居住的省/州

年龄 : 个人信息特征 —表示客户的年龄,在观察点计算

性别 : 个人信息特征 —表示客户的性别

MOB: 账面月数 —自客户签到至观察点的月数

**AVG _ 限额:**12 个月观察期内限额使用的平均百分比

**MAX _ LIMIT:**12 个月观察期内限额使用的最大百分比

**购买 _ 合计:**12 个月观察期内的总购买金额

DPD_OP: 观察点逾期天数

**MAX _ DPD:**12 个月观察期内的最大逾期天数。如果所有发票都是预付的,则可能为负。

**DPD AVG:**12 个月观察期内的平均逾期天数。如果所有发票都是预付的,则可能为负。

**BEFORE _ DUE _ QTY:**12 个月观察期内到期前支付的发票数量。

**GOOD _ PAYER:**Target—表示在 6 个月的业绩窗口内,客户没有超过 30 天未提交发票。

6。表演时间到了!

现在终于说到建模型了!您现在可以应用您在数据科学课程中学到的一切。您的分析基础已经设计好并准备好行动——在这种情况下,数据处理和应用模型。

最简单的解决方案是使用上面创建的变量应用逻辑回归,以便预测 GOOD_PAYER 目标。该模型将为每个客户返回一个介于 0 和 1 之间的值,表明他/她成为优秀付款人的可能性。

记住始终正确解读结果:

该分数将显示某个客户在未来 6 个月内不会延迟付款超过 30 天的概率。

你喜欢吗?

这篇文章对你有用吗?分享!我说了什么蠢话吗?纠正我!想补充点什么?留言评论!

组建数据科学团队的最有效方式是什么?

原文:https://towardsdatascience.com/what-is-the-most-effective-way-to-structure-a-data-science-team-498041b88dae?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从 2012 年到 2017 年,我有幸在 Coursera 从零开始建立数据和分析组织。在那段时间里,随着公司规模的扩大和业务的发展,我们尝试了各种不同的团队结构(参见这篇博文这篇 Quora 回答)。根据我的经验,组建数据科学团队没有一种“正确的方式”——最有效的方式在很大程度上取决于公司的环境和发展阶段。

虽然没有任何硬性规定,但要记住的核心问题通常是:

  1. 应该如何定义数据科学家的角色?
  2. 数据科学家应该向哪里汇报?
  3. 数据科学功能应该放在哪里?
  4. 组织应该做些什么来建立成功的数据科学?

让我们一个一个地检查一下。

应该如何定义数据科学家的角色?

借用 Michael Hochster 的分类法,通常有两种主要类型的数据科学家:

  • A 型(“分析”)数据科学家专注于通过统计分析来理解数据。
  • B 类(“构建”)数据科学家开发预测模型和算法,为数据产品提供动力。

一些公司在这两种不同风格的数据科学家之间建立了头衔区别(例如,决策科学家/统计学家/定量分析师与数据科学家/数据产品科学家/ML 工程师)。其他公司试图将 A 型数据科学家与产品/业务分析师的角色区分开来,后者通常被认为技术性较低。虽然专业头衔可以帮助设定期望值,但就我个人而言,我并不清楚阐明这些区别的努力是否值得。特别是,对于需要多面手的早期创业公司来说,在高度重叠的角色之间建立人为的界限往往会导致围绕领域和范围的模糊讨论,这往往是徒劳的。

建议:对于一家初创公司来说,不要把时间浪费在区分头衔上,而是要认识到,你雇佣的个体数据科学家可能有各种形状和大小(有些可能更擅长分析,有些可能更擅长构建)。最终,可能会有合理的理由来澄清角色和职责,但这通常可以等到公司更大的时候。

数据科学家应该向哪里汇报?

一般来说,数据科学团队倾向于采用分散或集中的报告结构。

  • 分散式(或“集成式”)数据科学组织让数据科学家向整个公司的不同职能部门或业务部门汇报。这种组织通常出现在较大的组织中,在这些组织中,数据科学计划在业务的多个部分中有机地出现。从责任的角度来看,分散的组织通常是有吸引力的,因为它们为业务单位提供了更大的灵活性来控制他们自己的资源需求。由于数据科学家是产品或业务团队的一流成员,因此分散化促进了强大的组织一致性。这确保了数据科学家将拥有与其业务合作伙伴有效合作所需的环境,并有机会发展有意义的个人关系,以获得对想法和计划的认可。然而,权力下放也带来了一些挑战。为了让一个分散的结构很好地工作,拥有数据科学家的团队需要有能力管理工程师和数据科学家的领导者。在分散的组织中,数据科学家的流动性受到更多限制,这通常会导致知识孤岛、同行指导机会减少或职业发展机会受限。权力下放还会加大实施统一质量招聘标准、投资共享分析基础设施或推动采用标准化分析实践的难度。
  • 集中化数据科学组织让数据科学家向公司内的单一数据科学主管汇报。对于创业公司来说,由于资源分配的灵活性,集中化的团队在人员数量上更有效率。在这些团队中,数据科学家有更多的机会参与广泛的项目并与其同行合作,因此提供了更好的职业发展和技术指导机会。从结构上来说,集中化还简化了雇佣和招聘,创建了机构来推动公司范围的分析计划,并减少了知识孤岛。另一方面,在远离业务合作伙伴优先事项的集中团队中工作的数据科学家可能缺乏有效工作所需的背景或支持。在某些情况下,这可能会导致一种不健康的动态,即数据科学被视为一种支持功能,回答产品经理的问题,而不是作为真正的思想伙伴运营,并从数据知情的角度积极推动对话。

大多数较小的公司倾向于依赖一种混合的集中/分散策略,这种策略结合了上述两种策略的元素。通常,数据科学家集中汇报,因为招募和留住人才通常是在早期阶段建立数据科学团队的主要瓶颈。然而,为了确保数据科学家获得成功,初创公司通常会安排数据科学家与业务部门密切合作,这种做法被称为嵌入

在小型数据科学团队中,嵌入可能会产生让数据科学家过度孤立的副作用。在 Coursera,我们通过组建由 2-4 名数据科学家组成的小型协作子团队(或“集群”)来解决这个问题,这些数据科学家将与不同的职能部门/业务部门合作,如这篇博文中所述。在 Airbnb,一个类似的方法被用于扩展数据科学。

建议:对于试图建立强大数据文化的初创公司来说,集中报告可能是最简单的开始方式。使用嵌入来确保数据科学家在对业务有价值的项目上工作,但要小心制造知识孤岛。

数据科学职能应该放在哪里?

在一些组织中,数据科学职能是工程组织的一部分(例如,LinkedIn)。在其他组织中,数据科学可能是产品组织的一部分(例如 Coursera),或者可能作为直接向首席执行官报告的独立职能部门存在(例如 StitchFix )。有时,A 型和 B 型数据科学家可能向不同的小组报告(例如在 Instacart )。

没有一个放置数据科学的最佳位置,即使在同一家公司内,数据科学报告结构也经常随着时间的推移而演变。最佳位置取决于以下因素:

  • 数据科学家有哪些沟通渠道来影响产品决策?
  • 开发机器学习系统需要多少参与生产工程的数据科学家?
  • 公司中的哪位高管能够最有效地倡导数据科学?
  • 数据科学在多大程度上是整个组织的核心竞争力?

建议:无论数据科学在哪里,都要优先培养强大的跨职能协作,因为数据科学家几乎总是需要与产品经理、设计师、营销人员、工程师以及整个公司的其他产品和业务领导密切合作。

数据科学家需要公司其他人做什么?

数据科学团队的成功很大程度上与团队本身的结构和运行方式有关。但这在很大程度上也与公司其他团队如何与数据科学家互动有关。总的来说,我发现三件事很重要:

  • *数据基础设施工程支持。*为了让数据科学家高效工作,关键工具(如数据管道、仪器和跟踪、A/B 测试框架和分析环境)至关重要。因此,公司在雇佣第一个数据科学家之前优先雇佣数据基础设施工程师通常是有意义的,并且数据基础设施工程和数据科学团队密切合作是至关重要的。
  • 了解构建数据产品复杂性的产品和工程经理。构建数据产品所涉及的考虑因素与常规产品非常不同——工作代码不足以确保数据产品为客户提供正确的体验。数据质量问题是潜在的,调试复杂的预测模型可能是一个真正的挑战。截止日期也不会以同样的方式工作;与大多数软件产品不同,对于按时交付项目来说,缩小范围是一种可以接受的策略,但对于数据产品来说,走捷径通常是行不通的。在对功能进行优先排序时,对机器学习的能力和局限性有良好的直觉是至关重要的。因此,拥有具备相关技术知识的产品和工程经理可以帮助事情进展得更加顺利。在许多情况下,数据科学家本身通常是最有资格承担这些类型角色的人。
  • *强烈的高管认同。*数据科学团队的影响力在很大程度上取决于高管团队(尤其是首席执行官)是否愿意让人们对培养强大的数据文化负责。对于 A 型数据科学家来说尤其如此,他们的工作通常强烈依赖于产品经理和业务领导是否愿意通过河马(薪酬最高的人的意见)倾听数据。此外,构建和维护释放数据作为竞争优势所需的基础设施需要大量的时间和资源,因此希望拥有强大数据文化的高管应该准备好进行适当的投资。

建议:当建立一个数据科学团队时,通过考虑团队运作的环境,确保团队的建立是为了成功。

最后,我要说的是,上述建议远非绝对,而主要只是反映了我自己在 Coursera 的经历,这是我在过去五年里反复试验的结果。一些对我的想法有帮助的在线资源是:

  • 建立一个分析驱动的组织:埃森哲的白皮书,对不同类型的分析组织进行了细致入微的描述。
  • 建立数据科学团队:DJ Patil(他创造了“数据科学家”一词)的电子书,概述了建立能够交付伟大数据产品的团队的关键要素。
  • 分析分析器:一本由 Harlan Harris、Sean Murphy 和 Mark Vaisman 编写的电子书,采用数据驱动的方法来理解数据科学家在野外发现的各种原型。

在这段时间里,我还有幸从其他公司的数据科学领导者那里获得了非常有益的慷慨建议,所以如果我能有所帮助,请不要犹豫。

注:这篇博文最初以 Quora 答案 的身份出现。

你真正出类拔萃的概率有多大?

原文:https://towardsdatascience.com/what-is-the-probability-that-you-are-truly-exceptional-1ec7d4bcdb1d?source=collection_archive---------8-----------------------

贝叶斯定理——熟能生巧

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

杰出的数据科学家比大海捞针还少:不到千分之一的这门学科的学生被证明是真正杰出的。也就是说,让我们假设你刚刚“通过”了一个新的技能测试,该测试承诺在 99%的情况下正确识别这样的顶尖人才……【I】

你真正出类拔萃的概率有多大?为什么贝叶斯定理在这里有用,它是如何应用于机器学习的,它的假设是什么,当依赖这种方法时我们应该采取什么预防措施?

贝叶斯定理归功于 19 世纪英国数学家托马斯·贝叶斯牧师的工作,他研究了如何从一个事件的结果中推断出其原因。他的工作,后来被皮埃尔·西蒙·拉普拉斯证实,是由一个简单的想法驱动的,即我们的预测的相关性可以通过更好地利用可观察的数据来提高。这里的关键要点是,预测建模应该基于经验,我们的初始信念必须不断更新,因为我们获得了手头问题的额外信息。数据科学的主要含义是,机器学习算法天生受理论和经验的约束。

贝叶斯定理是基于联合概率和条件概率之间的密切关系。在 netshell 中,贝叶斯规则假定后验概率等于似然性乘以先验除以归一化常数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后验变量或响应变量是我们试图预测的因变量。可能性,或条件概率,是在给定初始假设的情况下观察到新证据的机会。先验知识或现有知识是在没有任何额外信息的情况下我们的假设正确的概率。最后,边际可能性,或标准化常数,是观察证据的绝对概率。【ii】当我们使用朴素贝叶斯时,我们假设我们正在研究的数据符合正态分布,即每个变量都是条件独立的。

贝叶斯网络在数据科学中是如何使用的?每当要建模的数据量适中、不完整和/或不确定时,Bayes 推理在二进制或多类分类问题中都能得到很好的应用。贝叶斯分类器需要相对较少的计算资源,并且对于大数据集或高维数据点表现良好。在一个层面上,这些分类器在文本分析中特别受欢迎,它们经常用于解决自然语言处理、文本分类和垃圾邮件检测的挑战。更一般地,在给定一组新属性的情况下,可以部署贝叶斯算法来预测响应变量的概率。最后,贝叶斯定理可以用于校准专家意见和/或建议,因为它们结合了人类和机器学习。

使用贝叶斯定理时需要注意哪些事项?因为朴素贝叶斯假设因变量的条件独立性,所以它不能用于检测特征之间的交互。贝叶斯规则还假设响应变量反映了模型参数的可识别分布——连续变量为高斯分布,离散变量为伯努利分布或多项式分布。最后,贝叶斯逻辑只有在与先验知识相关联时才有意义——目标是解决特定的“学习问题”,而不是探索更高层次的“学习问题”。

“让你陷入麻烦的不是你所知道的,而是你所确定的事情并不是这样的”——乔希·比林斯

贝叶斯逻辑为数据科学家提供的不仅仅是一种算法,它还提供了一种思考数据科学问题的思维方式。在处理数字之前,我们应该明智地检查所有相关的证据(先验概率),用竞争的观点来测试我们对问题的观点(条件概率),并根据新的证据(加权概率)不断更新我们的预测。【iii】在介绍这篇预测杰出人才的帖子的案例中,我们需要仔细考虑杰出的数据科学家到底有多少(千分之一)。即使测试正确地识别了 99 %的顶尖人才,它也错误地证明了每个正确预测有 10 个案例。在这种情况下,即使你已经通过了这个假想的测试,今天你真正出类拔萃的机会也只有 9%。继续工作——熟能生巧!

商业分析实践是商业分析研究所的核心和灵魂。在我们位于巴约纳的暑期学校,以及我们在欧洲的大师班,商业分析研究所专注于数字经济、数据驱动的决策、机器学习和视觉通信,将让分析为您和您的组织服务。

Lee Schlenker 是 http://baieurope.com 商业分析研究所的教授和负责人。他的 LinkedIn 资料可以在www.linkedin.com/in/leeschlenker.查看,你可以在https://twitter.com/DSign4Analytics的 Twitter 上关注我们


【我】百分之一的假阴性

【ii】Soni,d .(2018),什么是贝叶斯法则?,走向数据科学

【iii】加莱夫,j .(2015)。贝叶斯思维的视觉指南

AI 软件工程师在数据科学团队中的角色是什么?

原文:https://towardsdatascience.com/what-is-the-role-of-an-ai-software-engineer-in-a-data-science-team-eec987203ceb?source=collection_archive---------4-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Marvin Meyer on Unsplash

我最近加入了埃森哲都柏林全球创新中心的 Enterprise Insight Studio 团队,担任人工智能(AI)软件工程师。鉴于这是团队中的一个新角色,以及在整个领域中,围绕人工智能软件工程做什么以及该角色如何适应数据科学团队,仍有许多问题。为了帮助回答其中的一些问题,我在这篇文章中强调了人工智能软件工程师带来的一些关键技能,以及他们如何融入数据科学团队。实际上,数据科学团队中有几个人在构建分析和数据产品。最终产品的好坏取决于负责收集、构建和分析底层数据的团队。不久前,数据科学团队主要由数据科学家、数据架构师和业务分析师组成。然而,要将数据科学工作转化为可扩展和稳定的产品,仍然有很大的差距需要填补,人工智能软件工程师也有确切的发挥作用的地方。

人工智能软件工程师在数据科学团队中的主要角色是将数据科学工作产品化,以便为内部利益相关者或外部客户服务。人工智能工程师必须与数据科学家、数据架构师和业务分析师合作,以确保业务目标和分析后端之间的一致性。此外,为了证明职位名称中的人工智能部分是正确的,人工智能软件工程师负责保持最新并了解具有转变业务、劳动力或消费者体验潜力的突破性人工智能技术,以及数据科学团队如何利用这些技术。这听起来很好,但实际上,它到底意味着什么呢?简单地说,这意味着人工智能工程师负责将软件工程文化引入数据科学过程。这是一项艰巨的任务,包括以下内容:

按照代码构建基础设施

数据科学团队基础设施的自动化。这一重要的软件工程概念是成功的数据科学项目的关键部分。人工智能软件工程师负责确保在模型开发和培训过程中创建的环境可以很容易地管理和复制到最终产品中。用于 Python 包管理的 Anaconda 和用于创建可轻松传输的自包含环境的 Docker 或 vagger 等工具应该成为数据科学团队流程的一部分,以帮助团队成员之间的协作和轻松部署的模型。人工智能软件工程师的责任是建立和管理管道,让数据科学家专注于模型开发。

持续集成和版本控制

这是软件工程师在数据科学团队中容易忽略的另一个重要事实。像 TFS 或 GIT 这样的工具应该成为数据科学项目日常流程的一部分。在模型开发期间,有如此多的迭代和不同的更新,如果没有适当的版本控制系统,就不可能跟踪所有已经完成的工作。候选版本、不同类型问题/用户故事的不同分支、团队中每个人都可以访问的同一位置等概念对于将数据科学工作转化为实际产品极其重要。这也允许引入代码审查等概念,这保证了更多的数据科学家将了解代码/模型是如何工作的,这将有助于提高所创建工作的质量。

测试

任何产品,无论是具有简单用户界面的模型还是完全集成的应用程序,都应该经过彻底的测试。显然,从软件工程师的角度来看,那些测试应该完全自动化。这意味着单元测试、分支测试、集成测试和安全测试应该嵌入到数据科学的核心流程中。当然,这不包括 A/B 测试,它们是不同的情况,在开发的不同阶段完成,但是它们同样重要,不应该被丢弃。

API 开发

开发 API 以帮助将数据产品和源集成到应用程序中。人工智能软件工程师负责构建和维护一个平台,以便轻松地将模型“转换”成可供其他应用程序使用的 API。这意味着遵循标准方法和公共语言的工具或定制 API 的开发。这也意味着数据科学团队可以快速地将模型转化为 API,供“外部世界”使用。这是将科学模型转化为产品的关键步骤,人工智能软件工程师应该发挥他/她的所有专业知识,以保证从模型中创建的 API 是可扩展的、灵活的和可靠的。

试点和 MVP 应用的开发

虽然并不总是需要,因为一些数据科学工作可以通过 Jupyter 或其他数据可视化工具简单地呈现,但在数据科学过程中,飞行员和 MVP 的开发仍然非常重要。MVP 是最终产品,它包含了我到目前为止提到的所有其他方面,从模型的创建和测试,通过 API 开发,一直到最终产品可以被最终用户演示和消费。这里的要点是应用程序——无论是 MVP 还是最终版本——是如此的坚实,以至于最终用户甚至不会意识到它下面有一个数据产品。

AI 软件工程师还应该考虑在数据科学团队中实施其他软件工程师概念,例如连续交付、应用程序监控和自动扩展,这些也应该是核心流程的一部分。然而,在深入到它的工程方面之前,上面提到的几点,我认为是整个过程中最重要的,应该已经被实现并完全融入到团队的文化中。只有这样,更先进的工程概念才会被提出来。

总之,我们可以认为人工智能软件工程师是负责让数据科学家和数据架构师的生活变得更容易的人。他们应该专注于他们工作的重要方面:分析数据和创建高精度的模型,或者致力于项目的整体架构。人工智能软件工程师将负责创建 API,测试和部署模型,创建任何可能需要的用户界面来显示更相关的模型视图-模型可视化,自动化我们的基础设施等-并弥合数据科学家和数据架构师之间的差距。简而言之,人工智能软件工程师负责将数据科学工作包装成最终产品。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overview of a Data Science Team

这只是对人工智能软件工程师在数据科学团队中的角色以及此人带来的贡献的基本概述。希望这将帮助你理解这个角色需要什么,以及为什么在数据科学工作背后有软件工程概念是重要的。鉴于这是数据科学范围内的一个新角色,仍然有许多问题需要回答,人工智能软件工程师必须足够灵活,以便在团队中实施他/她的想法,并在不一定与软件工程相关的领域采取行动。尽管如此,这是一个非常令人兴奋的职位,有很多学习和成长的机会。对于软件工程来说,这也是一个进入激动人心且不断发展的数据科学领域的绝佳机会。如果你有兴趣谈论更多关于人工智能软件工程师的事情,或者如果你有任何问题或建议,请随时联系我,我很乐意听到你的意见。与此同时,保持好奇,继续编码。

数据科学教育的对象、地点和时间是什么?

原文:https://towardsdatascience.com/what-is-the-who-where-and-when-of-an-education-in-data-science-1bb25049fe62?source=collection_archive---------5-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自从五年前《哈佛商业评论》宣称数据科学是“地球上最性感的工作”以来,成千上万的学生蜂拥而至,追求该领域的学位。今年早些时候,Alphabet 的埃里克·施密特(Eric Schmidt)更是火上浇油,他宣称:“对数据分析的基本理解对于下一代年轻人来说非常重要。这就是你要进入的世界。”【ii】埃隆·马斯克(Elon Musk)对缺乏数据专家的担忧促使他向 Neuralink 提供资金,这家公司的使命是将计算机与人脑进行物理连接,以提高数据处理速度。LinkedIn 本周报告了不少于 14 300 个数据科学家的空缺,仅在法国就有超过 774 个机会。在如此狂热的情况下,数据科学教育的对象、地点和时间是什么?

什么是数据科学?

什么是数据科学的基本问题在今天与本世纪初一样相关,当时威廉·s·克利夫兰(William S. Cleveland)建议这一新的学术学科扩展统计学领域,以纳入“数据计算的进展”。【iii】如今,组织正在从生物技术到金融等行业寻找数据科学家;信息技术和服务,以及公共服务营销。填补这些空缺的专家的稀缺很大程度上是因为数据科学被营销为分析、业务和技术技能的混搭,这些技能很少在任何一个档案中找到。在审查当前的职位空缺时,数据科学似乎是管理咨询、计算机系统分析、信息安全、运筹学和统计学的混乱组合。唯一的共同点是使用数据来了解现实生活中的业务挑战的普遍使命。

那么,数据科学教育的本质是什么?这种对商业问题解决的关注将数据科学从计算机科学和统计学中分离出来。消费者、管理者和利益相关者不仅做出决策,而且以不同的方式解释数据,这一事实强烈表明,数据科学不能简化为算法和机器学习。Ed Chen 指出了提供“数据科学”课程的学校数量与他个人的信念之间的矛盾,即数据科学的课程不能在学校里学到。【iv】数据科学教育需要理论和实践,理论是理解当今企业面临的问题的本质,实践是理解如何将数据转化为决定性的行动。

谁应该投资数据科学?

在一个日益受到虚假事实和假新闻考验的世界,我坚信每个学生都将从数据科学基础中受益。如果分析方面的普通教育应该成为任何高等教育学位的一部分,那么数据科学学位的价值就是另一个问题了。如果今天 88%的大数据专业人士拥有高级学位【v】,那么这些学位中很少是数据科学的。同样,如果薪资调查强调数据科学家的高薪级别,拥有该领域的学位不会成就或毁掉你的职业生涯。一旦炒作平息下来,雇主们寻找的是能帮助他们解决业务问题的技能组合。

那么谁应该申请专业学位呢?即使总会有无数的程序准备好并愿意接受你的钱,专攻分析也是有先决条件的。如果你不喜欢解决问题,不喜欢处理数据,不喜欢处理复杂性和模糊性,你永远不会成为一名数据科学家。如果你在以前的学习中没有花时间探索编程、统计和决策科学,不要欺骗自己认为你现在可以一次学会所有的东西。你不会因为一个正式的学位而成为一名数据科学家,而是在一年中的每一天养成一种心态。

你应该何时何地去上学?

如今,几乎有数千个高等教育项目承诺授予数据科学学位,其中包括 74 个英国项目和 24 个法国项目。不幸的是,其中许多只是计算机科学和统计学院现有课程的重新包装和营销。许多人吹捧“R”、机器学习和数据可视化方面的实践——这就像是在蛋糕上浇糖霜,而没有提供制作蛋糕本身的配料。寻找学位课程的学生应该像数据科学家一样考虑挑战:学校提供关于学生过去位置的什么数据,他们提供课程的什么细节,他们如何鉴定他们的教师,要求的工作和实践项目的性质是什么,以及他们如何证明你的投资回报?-

应该从什么时候开始学习数据科学?作为一种心态而不是文凭,分析是一步一步发展起来的。在学校打好基础,参加商业、数学、决策和计算机科学的相关本科和研究生课程。你不需要注册一个正式的学位项目来开始,互联网提供了大量的免费在线课程。博客帖子和专门的网站提供了探索数据科学基础的洞察力和机会。公共领域数据集和应用程序可以帮助您练习检测、探索和解决各种类型的业务问题。国家和国际数据科学竞赛,如即将举行的皇后大学创新挑战赛【VI】,提供了充分的机会来建立关系网并发展您的技能和声誉。在这个数字无处不在的时代,什么时候是现在!

*希望提高您的数据科学技能?*在巴约纳的暑期学校以及欧洲的大师班,我们让分析为您和您的组织服务。该研究所专注于管理者数据科学的五个应用:数字经济学、数据驱动的决策、机器学习、社区管理和视觉通信。改善管理决策会对你未来的工作和职业生涯产生影响。


Lee Schlenker 是 Pau 商学院的教授,也是 http://baieurope.com 商业分析研究所的负责人。他的 LinkedIn 个人资料可以在 www.linkedin.com/in/leeschlenker.查看你可以在 https://twitter.com/DSign4Analytics的 Twitter 上关注我们

【我】达文波特,t .和帕蒂尔,D.J .,(2012),数据科学家,21 世纪最性感的工作,HBR

谷歌亿万富翁 Eric Schmidt 说,这是雇主们在未来寻找的技能,美国消费者新闻与商业频道

【iii】出版社,G. (2012),数据科学家:性感的定义,福布斯

【四】莱文,d .(2015);获得数据科学学位前你应该知道的 5 件事

【v】Ahern,k .和 Keller,N. (2014),你是大数据专业人士?,营销新闻

【VI】……(2017),女王大学创新挑战赛

什么是迁移学习?

原文:https://towardsdatascience.com/what-is-transfer-learning-8b1a0fa42b4?source=collection_archive---------1-----------------------

迁移学习利用在解决一个问题时获得的知识,并将其应用于另一个不同但相关的问题。

例如,在学习识别汽车时获得的知识可以在一定程度上用于识别卡车。

预培训

当我们在大型数据集(例如:ImageNet) 上训练网络时,我们训练神经网络的所有参数,因此模型被学习。在你的 GPU 上可能要花几个小时。

微调

我们可以给出新的数据集来微调预训练的 CNN。考虑新数据集几乎类似于用于预训练的原始数据集。由于新数据集是相似的,因此可以使用相同的权重从新数据集提取要素。

  1. 如果新数据集非常小,最好只训练网络的最后几层,以避免过度拟合,同时保持所有其他层不变。所以去掉预训练网络的最后几层。添加新层。仅重新训练新层。
  2. 如果新数据集非常大,使用预训练模型的初始权重重新训练整个网络

如果新数据集与原始数据集差别很大,如何进行微调?

ConvNet 的早期特征包含更多的通用特征(如边缘检测器或彩色斑点检测器),但 ConvNet 的后期层逐渐变得更加具体到原始数据集中包含的类的细节。

较早的图层有助于提取新数据的特征。因此,如果你只得到少量的数据,修复早期的层并重新训练其余的层将会很好。

如果您有大量的数据,您可以使用从预训练网络初始化的权重来重新训练整个网络。

卷积神经网络有什么问题?

原文:https://towardsdatascience.com/what-is-wrong-with-convolutional-neural-networks-75c2ba8fbd6f?source=collection_archive---------4-----------------------

介绍

当然,卷积神经网络(CNN)是一种迷人而强大的工具,也许这是深度学习这些天如此受欢迎的原因之一,自从 Alex Krizhevsky,Ilya Sutskever 和 Geoffrey Hinton 在 2012 年发表了“用深度卷积网络进行图像网络分类”以来,CNN 一直是计算机视觉中在许多任务中实现超人性能的制胜法宝,但 CNN 是完美无瑕的吗?那是我们能做的最好的吗?我想从标题中你可以看出答案是否定的。

2014 年 12 月 4 日,Geoffrey Hinton 在麻省理工学院做了一个关于他的名为“胶囊网络”的项目的演讲,他讨论了 CNN 的问题,以及为什么合用是非常糟糕的,以及它工作得如此好的事实是一场灾难

如果你熟悉 CNN,你可以跳到怎么了?

卷积层

卷积层具有一组矩阵,这些矩阵在称为卷积的过程中与前一层输出相乘,以检测一些特征。这些特征可以是基本特征(例如边缘、颜色等级或图案)或复杂特征(例如形状、鼻子或嘴)。因此,这些矩阵称为过滤器或内核

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(source)

池层

有多种类型的池层(最大池、平均池……),目前最常见的是最大池,因为它给出了交易方差,虽然很差,但对某些任务来说已经足够好了,并且它降低了网络的维数,非常便宜(没有参数)
最大池层实际上非常简单,你预定义一个过滤器(一个窗口)并在输入中交换该窗口,取窗口中包含的最大值作为输出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

max pooling with filter size 2*2 (source)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(source)

怎么了?

1- 反向传播

反向传播算法是一种在对一批数据进行预处理后,寻找每个权重在误差中的贡献的方法,大多数好的优化算法(SGD,ADAM …)都使用反向传播算法来寻找梯度

反向传播在过去几年做得很好,但不是一种有效的学习方式,因为它需要庞大的数据集
我相信我们可以做得更好

2-平移不变性

当我们说平移不变性时,我们的意思是,方向或位置稍有变化的同一物体可能不会激发本应识别该物体的神经元

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(source)

如上图所示,如果我们假设有一个用来检测猫的神经元,它的值会随着猫的位置和旋转的变化而变化,数据增强部分解决了这个问题,但并没有完全解决它

3-池层

合并图层是一个很大的错误,因为它丢失了很多有价值的信息,而且它忽略了部分和整体之间的关系,如果我们谈论的是人脸检测器,那么我们必须结合一些特征(嘴、两只眼睛、椭圆形脸和鼻子)来说这是一张脸
CNN 会说如果这 5 个特征以很高的概率出现,这将是一张脸

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(source)

所以两个图像的输出可能是相似的,这并不好

结论

CNN 很棒,但它有两个非常危险的缺陷:平移不变性和池层,幸运的是,我们可以通过数据增强来减少危险,但有些事情正在发生(胶囊网络),我们必须准备好迎接变化

来源

[## 用于视觉识别的 CS231n 卷积神经网络

斯坦福 CS231n 课程材料和笔记:视觉识别的卷积神经网络。

cs231n.github.io](http://cs231n.github.io/) [## 理解辛顿的胶囊网络。第一部分:直觉。

理解 Hinton 的胶囊网络系列的一部分:

medium.com](https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-i-intuition-b4b559d1159b) [## 卷积神经网络

这是 CSE6250 大数据分析中医疗保健深度学习实验室系列的初步版本…

www.cc.gatech.edu](https://www.cc.gatech.edu/~san37/post/dlhc-cnn/)

在数据科学中“做”数学意味着什么

原文:https://towardsdatascience.com/what-it-means-to-do-math-in-data-science-843f454fddf6?source=collection_archive---------3-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当下一代热切的年轻人寻求做出他们的第一个主要职业选择时,许多人会认为数据科学是一个令人兴奋的可能性。随着软件正式蚕食世界,数据作为我们经济的新石油牢牢扎根,从事数据行业的机会从未像现在这样多。公司正准备在一个全新的范式下构建软件,在这个范式中,数据和分析驱动着他们最重要的产品功能。在寻求洞察力和预测的过程中,组织将目光瞄准了有希望的候选人,他们对一切数据的热情与对工作中预期的数字熟练程度的担忧相匹配。

如果你要一份成为成功的数据科学家所需的才能清单,你会看到通常的大多数与 STEM 相关的技能清单;不仅仅是数学和统计学。这应该不足为奇。历史上,所有类型的分析师都使用数学来帮助做出和确认他们的发现。假设良好的数字工作知识会给数据科学职位带来好处是很自然的。

但是,当我们说数学和统计学在数据科学中很重要时,这意味着什么呢?他们在大学里的样子重要吗?我们渴望的年轻人应该把时间花在微积分和概率的基础知识上,为数据驱动的职业生涯做准备吗?如果个人不是天生倾向于传统的数学思维,这是否会妨碍他们进入数据科学职业?用手做数学和训练依靠数学得出结果的机器有区别吗?

如果没有上下文,说我们在某个特定领域做某事没有多大意义。从核物理学家到会计师,每个人都做数学。在科学领域,数学让我们用具体的术语来表达思想,从而帮助我们模拟我们的世界。我们可以利用数学的机制带领我们走上新的道路,并保持我们的发现的一致性。数学可以帮助我们在巨大的复杂程度上争论,并帮助我们用数据讲述故事。与数据科学最相关的是将数学编码成机器的能力,这为解决其他棘手的问题打开了大门,并使我们的核心工具机器学习成为可能。

但是将事物的来源等同于它在现实世界中的应用是理解抽象的失败。那些实现学术发现的人不应该沉浸在他们工具的起源中。医疗从业者没有花时间去研究生物化学的细微差别或控制核磁共振成像机的物理原理。这并不是说良好的基本面工作知识不起作用。但是,如果他们主要关心的是他们的机器内部是如何工作的,医生们将会从使用工具解决病人问题这一更重要的任务中靠边站。

事实是,如果数据科学家把他们的时间花在解方程和讨论定理上,他们在软件世界里将一事无成。软件运行得很快,并从失败的尝试和迭代中获益;不仅仅是写在白板上的公式。重要的是要认识到,这不是为了把产品推出去而进行的廉价分析。快速开发和迭代是解决真正复杂问题的唯一途径。虽然数学有助于控制我们数据的高维度,但它只是原始信息和提供价值的产出之间更艰巨旅程的开始。

在白板上进行数学计算和理解如何实现数学机器是两码事。是的,统计学和数学在数据科学中很重要,但这仅仅是因为它们浮出水面的概念和它们使之成为可能的工具。成为一名伟大的数据科学家意味着知道机器的终点和人类的起点。在数据科学中,我们把数学的求解和执行留给了机器。人类有责任帮助引导我们的系统做出更好的预测,并实现其适应环境的目标。这不是解方程,而是让数学和机器产生人们觉得有用的东西;甚至可能是愉快的。

构建智能软件的学术化、简单化的方法是对复杂性的严重缺乏。在数学和传统软件中,使用简化的硬编码规则将输入转换为输出。但是,当我们寻求创建机器学习应用程序时,复杂程度远远超过简单的输入和输出。在数据科学中,唯一重要的产出(和结果)是那些从我们无法直接进入的数字游戏中产生的结果。任何能够接近“智能”行为的系统都有一层神秘的面纱,认为它可以用基本逻辑解码并拼凑起来是非常短视的。

在数据科学中,我们解释结果,并使用数学推理来考虑我们对模型所做的调整的有效性。这不同于在纸上操作方程和推导结果。在物理学中,求解薛定谔方程和理解为什么它适合于模拟物理系统中随时间的变化之间有很大的区别。你解方程的能力与你知道何时何地使用它的能力无关,而正是后者给数据科学专业带来了好处。

当机器在做数学运算时,我们追求的不是候选人的数学技巧,而是他们对概念的理解。重要的是掌握一种方法的适当性或不适当性;不是比机器能做的更慢更少的解方程的能力。抽象是学术发现的支柱,这也是数据科学家工作的地方。当我们在深层技术细节上运作时,我们能够使用数学驱动的工具来应对困难的挑战,并使用软件解决有趣的问题。如果我们在学术意义上使用数学,这些都是不可能的。

显而易见的反驳观点是,手动推导数学表达式有助于建立我们希望在对模型进行推理时使用的直觉。但这种听起来不错的叙述被赋予了过多的分量,而且只在远离现实的课堂上起作用。虽然人工推导公式确实有助于加深理解,但这种知识缺乏真实世界的背景。你最好构建一个你不理解的工具,而不是用教科书上的积木拼凑出一些在真空中也能玩得很好的东西。当这个世界像在软件开发中一样多次击败你时,你已经有了最伟大的老师。失败。

这并不是远离学习数学,这只是意味着数学需要被理解在那一刻。在失败之前用数学来解决问题,向我们展示了障碍的本质与现实世界中解决问题的方式是相反的。如果你要理解如何用数学给一台复杂的机器带来价值,你的产品必须产生错误的结果。我们的下一代数据科学家需要先学习如何构建,然后再解决。

这种关于擅长数学意味着什么的开明且更恰当的观点超越了职业准备。当我们将数据科学视为传统的 STEM 学科时,我们阻碍了大量原本可以为该领域带来好处的人才。我们寻求的是能够与机器一起工作的个人,利用对数学在适应性机器中所扮演角色的概念性理解,哄骗它们适应它们的环境。这些人来自各行各业,正是他们的多样性为我们带来了最强大的解决方案。

未来数据驱动型公司的主人是那些雇佣能够以更柔和的方式制造机器的人。重要的是,我们的下一代热切的候选人不能将数据科学视为数学上严格的领域,在这个领域中,解决问题的学术方法是驱动结果的因素。数学知识总是有用的,但只有当它被用于我们的机器已经能够做的事情时。这是未来对数学思维的定义,也是数据科学的定位。

我在日本学习机器人两周所学到的

原文:https://towardsdatascience.com/what-ive-learned-from-studying-robotics-in-japan-for-two-weeks-bd252961853f?source=collection_archive---------1-----------------------

或者,如何在一周内喝大量清酒并制作一个 AI 机器人。

我从小就一直渴望去日本。我一直很欣赏这种文化,从他们的传统到尖端科技。此外,现在我的主要兴趣之一是机器人技术。你可以想象当我被东北工程暑期项目录取去日本东北T4 仙台大学学习机器人技术时我的反应。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Sendai.

我和我的一些同事,以及来自世界各地的其他 50 名学生,有机会参加了来自许多不同机器人领域的各种教授的早课,从分子空间机器人机器人。下午,我们做不同的项目。我与太空 机器人****实验室合作,我团队的任务是开发和制造一个移动机器人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A picture of the campus.

东北大学的主工科校区真的很厉害。一个美丽的混合现代,精心设计和简约的建筑在一个绿色的环境中,充满了树木和植物。我真的很喜欢外部和内部建筑,这往往给人一种开放空间的感觉,玻璃墙和高天花板,大型公共空间,白色和闪亮的内部。前一段时间,我读了一些关于大学建筑和学生整体表现之间关系的研究,我不禁注意到这些领域中有多少给人一种和平和放松的自然感觉。

日本人非常好和有礼貌。他们的组织非常出色,我喜欢和他们一起生活。从自助餐厅到图书馆,整个校园都被精心管理。我们有机会以非常友好和非正式的方式与教授们聊天,这是我非常喜欢的事情。他们向我们解释了他们的系统如何更多地基于实践而不是纯理论。一位教授在我们吃午饭的时候告诉我们:“我们让学生尽快完成一个项目,并要求他们把它做好。”。这种方法可以产生非常好的结果,就像我们所经历的那样。面对一个现实世界的问题,并试图用实际的硬件和软件来解决它,会让你以许多不同的方式来思考它,突出问题,但会激励你找到有效的解决方案。引用费曼的话,“我不能创造的东西,我不理解”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Detail of the Space Robotics Lab.

我最喜欢的课是吉田教授上的关于太空、T2 和机器人的课。机器人太空探索的想法在某种程度上对我来说是浪漫的,因为探索的欲望在人类灵魂中燃烧。我有机会与空间机器人实验室的 6 名学生(3 名像我一样来自罗马 Sapienza 大学,2 名来自香港大学,1 名来自佐治亚大学)一起工作,建造一个移动机器人,它可以通过机器人看到的视频流进行远程控制,还可以自主避障和导航,以及其他由我们决定的功能。我们只有不到一周的时间来研究它,整个下午都呆在实验室里,但我相信我们做得很好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Our robot in all its beauty.

我们与乐高** Mindstorm 合作,这是乐高的一个套件,允许使用传感器、电机和微控制器来控制机器人。作为一台相机,我们使用了 Kinect ,并在一台树莓 Pi 3 和一台 MacBook 上进行处理。制造真正的机器人比我们想象的要困难。我们设计了一个简单的差动驱动机器人,但用乐高积木建造它,试图分配重量和平衡它,但也使它足够稳定,以承受 Kinect 摄像头、树莓 Pi 3 和一个电源库并不简单。**

Kinect 和 MacBook 之间的实际通信是使用处理、一种专门为交互式计算机图形设计的语言来完成的,从这种语言中我知道使用 Kinect 非常容易。有了 RGB 和深度流,实现远程控制就变得轻而易举了:操作员看到了机器人所看到的,并简单地命令它。我们进行了几次有障碍的演示,结果令人满意。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A demo of the robot in action. From left to right: prof. Kazuya Yoshida, Norman Di Palo (myself), Matteo Colajanni.

实现自主导航、避障和地标探测以及跟随要困难得多。我注意到 Kinect 深度相机(或者至少是我们的 Kinect)有一个很大的缺陷:它在一米的距离内完全失明(毕竟,它不是为这些应用设计的)。该范围内的所有障碍物都消失了,因此机器人认为该路径是自由的。为了解决这个问题,我们在机器人上增加了超声波传感器,可以在该范围内以较高的精度检测到障碍物的距离。基于这些传感器信息,我实现了一个避障算法,在有障碍物的情况下执行规避动作,但在此之前,机器人无论如何都会随机漫游。我添加了一个计算机** 视觉算法,该算法根据颜色识别并检测所需地标(红色圆锥体)的坐标(在图像中)。然后,机器人能够每走几步就转向地标,同时避开障碍物。**

这里有一个自主导航和地标跟随的短片。

然后,移动机器人行为的基本目标就实现了(并非没有麻烦)。但是,由于我的专业既专注于机器人技术,也专注于人工智能,我决定通过集成更先进的深度学习视觉模型和自然语言处理来扩展软件架构。

我使用了 Tensorflow 物体检测 模型,在著名的 COCO 数据集上进行训练。该模型为它能够识别的常见对象生成边界框。我将这一输出添加到之前的地标检测算法中,这样机器人就能够识别并跟随常见的物体,如笔记本电脑、椅子和人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Example of object detection.

然后,通过简单地使用文本** 消息电报一个著名的信息平台上发送,整体行为被控制。我开发了一个聊天机器人*,它可以使用 Python 库 telepotapi 接收文本消息。 ai API 我增加了语言理解,所以用户可以简单地给机器人发短信请走向桌子,机器人就会理解请求,寻找桌子并走向它,同时避开路上的障碍。***

尽管组成整体架构的软件部分不同,但结果是一个易于使用的机器人,它以智能的方式响应简单的命令,结合了机器人技术和人工智能技术。

这里有一个关于物体识别和语言理解能力的短片。

我做了一个 GitHub 库与我的同事分享代码。你可以在这里查看,现在它仍在进行中,可能在不久的将来我会添加一些东西,特别是一个更详细的自述文件。

在 CycleBar 的两个月里我学到了什么

原文:https://towardsdatascience.com/what-ive-learned-from-two-months-at-cyclebar-54e9681e9bbd?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The long road. Photography by Eugene Buchko.

2018 年 3 月初,我决定要混合一下我的锻炼日程。我收到了一份来自 CycleBar 的传单,广告上说他们的位置在我住的 Buckhead 附近,并介绍了他们为新骑手提供的一次免费训练。出于好奇,我登录了网站,看到他们提供了另一种选择:25 美元一周不限次数的乘坐。我最终选择了后者。在那一周内,我参加了十次 CycleBar 会议,然后我就上瘾了。在我的试用期结束后,我注册了每月无限套餐。

CycleBar 课程的吸引力很大一部分是精力充沛的讲师,他们在管理有趣的播放列表以适应某个主题方面做得很好。我去过一些健身班,那里的播放列表很少更新,这可能会很无聊。然而,对我来说更大的吸引力是能够在骑行过程中看到你的自行车状态,并在课程结束后立即通过电子邮件收到你的结果的漂亮总结。循环状态包括以下内容:

  1. 您的骑行持续时间(MM:SS 格式)
  2. 您在骑行期间的平均功率(瓦特)
  3. 您在骑行期间的最大功率(瓦特;瞬时度量)
  4. 您在骑行过程中的平均速度(英里/小时)
  5. 您在骑行期间的最高速度(以英里/小时为单位;瞬时度量)
  6. 您的平均每分钟转数(RPM)
  7. 您在骑行过程中的最高转速(另一个瞬时指标)
  8. 骑自行车行驶的距离(英里)
  9. 骑行过程中燃烧的卡路里
  10. 周期点**
  11. 你在班级中的排名,基于循环积分***

其中,CyclePoints 的广告会考虑您的年龄、性别、体重、身高以及您在骑行过程中输出的功率和转速,从而有效地将您与其他骑手进行排名。循环积分旨在使各种能力和个人特征标准化,以便循环积分可用于比较骑手之间的表现。例如,一名 25 岁的健康男性在骑行中平均推动 200 瓦,可能比一名 37 岁的三个孩子的母亲在骑行中平均推动 150 瓦得到的自行车积分少。

我试图获得更多关于周期点是如何数学计算的信息;然而,我没有从 CycleBar 那里得到足够的信息来进行正式的归纳。然而,要点是骑行过程中,周期积分取决于针对骑手体重、身高、性别和年龄标准化的平均指标(瓦特和 RPM)以及瞬时指标(瓦特和 RPM)。我不知道所有车友的归一化算法。然而,我跟踪了我所有骑行的循环积分和其他统计数据,并在下面列出。

在 Excel 中跟踪循环统计数据

如上所述,每次骑行后,您都会收到一封包含骑行积分的电子邮件。我把所有这些统计数据放在一个 Excel 电子表格中,如下所示。仅仅骑了几次之后,我意识到骑行的持续时间取决于播放列表的长度等等。因此,虽然一次骑行总共是 45 分钟(通常是 41 到 43 分钟的实际骑行时间,加上最后 2 到 4 分钟的拉伸时间),但 30 秒或更少的差异会对你最终的总表现产生影响,包括消耗的总卡路里、消耗的瓦特数或行驶的距离。因此,我创建了额外的列来跟踪每分钟消耗的卡路里,每分钟消耗的英里数,以及每分钟的平均瓦特数和每分钟达到的循环点数。

在我参加 CycleBar 的两个月里,我参加了 72 个 CycleBar 课程。然而,为了下面的分析,我从数据集中删除了两个班级,因为有一些小故障(一次,发送给我的结果是空白的,另一次,教师忘记结束班级跟踪)。因此,我在下面的分析中使用了 70 个数据点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A selection of CycleStats in Excel. The highlighted cell refers to an outlier in the system’s calculation of calories burned during the ride.

预测周期点

我很好奇,如果给定我锻炼的强度(平均消耗的总瓦特数、骑行的英里数、消耗的卡路里数等),我是否可以很容易地预测我在一个给定的课程中能够达到的骑行积分数。)

首先,对我来说很清楚的是,平均消耗的瓦特数和骑行结束时获得的总循环点数之间存在直接的正相关关系。然而,正如我提到的,我想以每分钟为基础跟踪关系。我在 Excel 中创建了一个简单的图表,显示平均瓦特/分钟与平均周期点数/分钟(周期点数/分钟是因变量),如下所示。红线是显示两个变量之间线性关系的最佳拟合回归线。66.39%的 r 平方表示相当合适。

为了得到在单个课程中达到的预测周期点,只需乘以该课程持续的时间:

CyclePoints =(课程持续时间,以分钟为单位)* [1.1492 *平均瓦特/分钟)+ 4.0116]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The relationship between average watts/minute and average CyclePoints/minute.

对于一个独立变量,预测周期点与实际周期点的转换如下所示。请注意,单个独立变量很大程度上显示了周期点的变化,但一些波峰和波谷没有在样品内拟合中捕捉到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Linear regression with a single independent variable. Note: transformation from CyclePoints/minute to CyclePoints per ride is made here.

在 R 中构建简单的多元回归模型

我把 cycle stats 电子表格放入了 R 软件包中,并建立了一个非常简单的多元线性回归模型。我选择了三个独立变量:平均瓦特/分钟(如上),骑行里程/分钟,消耗卡路里/分钟。因变量是循环点数/分钟。

由此产生的系数估计显示在下面的截图中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这一次,为了得到每个类的预测周期点,等式与之前相似,但是加入了两个额外的变量:

CyclePoints =(课程持续时间,以分钟为单位)* [-6.02359 + (0.32126 *平均瓦特/分钟)+ (27.19041 *英里骑行/分钟)+(0.09326 *消耗的卡路里/分钟)]

多元线性回归包含 66 个自由度(70 个数据点减去 3 个独立变量减去 1 个截距项)。r 平方从大约 66%提高到大约 86%。将因变量(循环点数/分钟)转换为每类循环点数,我们得到下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A multiple regression fit of actual vs. predicted CyclePoints. Note: transformation from CyclePoints/minute to CyclePoints per ride is made here.

如上所示,预测周期点的样本内拟合能够更好地捕捉所获得的周期点的波峰和波谷。

健身进度

在我参加 CycleBar 课程的两个月时间里,我注意到我的健康和耐力在逐渐提高。例如,如下图所示,在我开始去 CycleBar(红色粗体线表示两周移动平均值)后的两到三周,我平均每节课大约 180 瓦,在两个月的时间框架结束时,我能够将每节课的平均功率提高到大约 195 到 200 瓦。虽然平均瓦特数的增加看似微不足道,但在我看来,10%左右的提高是相当显著的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Progression of average watts per class. The red line indicates a two week moving average.

我还跟踪了平均每分钟循环点数的改进。图表如下所示。在这两个月里,我能够将我的平均周期点数/分钟从 8.5 提高到 9.5。我在 CycleBar 期间与一些骑手交谈过,我观察到如果你在骑行期间能超过 10 cycle points/分钟,你就做得非常好,很可能会将自己推向极限****。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Progression of average CyclePoints/minute.

最后,我跟踪了班级排名。在我开始上课的两个星期后,我在 CycleBar 排行榜上名列前五,在我两个月的经历结束时,我平均在排行榜上名列前三。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为班级的大小取决于班级的日期和时间,所以排名本身(1、2 或 3)可能不是相对表现的最佳指标。我想我会把这个排名转换成一个百分位数,基于某个特定级别的车手人数。一个班的最小人数是 5 人(这是一个午餐时间班),最大人数是 48 人(巴克黑德自行车室最多有 49 辆自行车)。例如,从这个角度来看,在数学上,在 48 名车手中获得第 9 名(18.75 百分位)比在 5 名车手中获得第 1 名(20 百分位)更好。我的百分位排名如下所示,这表明尽管我在开始上课两周后处于前 20 个百分位,但我能够在两个月结束时将其提高到前 12 个百分位。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其他健身趋势

除了能够在自行车课上逐渐表现得更好之外,我注意到在以下两个方面有了显著的改善:减肥和耐力。在 CycleBar 的两个月里,我减掉了大约 10 磅的体重,这是我在跑步和其他日常锻炼中没能做到的。

我还注意到,在其他锻炼项目中,我的耐力和速度都有所提高。在户外跑步时,我能够将我的常规英里/分钟配速减少 15 到 20 秒(从大约 7:30/分钟减少到 7:10 或 7:15/分钟)。

未来项目

我希望将周期点的分析扩展到我个人的统计数据之外。特别是,如果 CycleBar 的任何人正在阅读这篇文章,并可以向我提供如何根据一个人的体重、身高、年龄、性别和个人表现指标(瓦特/rpm)调整/计算 CyclePoints 的详细信息,我将非常感谢。

最后,非常感谢所有出色的导师(萨拉塔拉 M.安妮凯蒂塔拉 R.贾斯汀 M.贾斯汀 L.普尔维山特尔多林海莉

注意事项:

*无限制的意思是,你可以在一个月内参加任意多的 CycleBar 课程。一般来说,每天有三到六节课。
** CycleBar 已与 FitMetrix 合作,展示平均瓦特数、每分钟转数和循环点数等循环统计数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • *您基于 CyclePoints 的等级可能与您在骑行期间在板上看到的实况有所不同,因为有些骑行者希望争夺 CyclePoints,但选择不在板上。当然,你的排名不可能比你在自行车板上看到的更好;要么一样,要么更糟。
      • *有一些非凡的骑手能够在一个级别获得大约 550 到 575 个循环积分,平均每分钟 13 到 14 个循环积分。

我在虚拟现实雕刻中所学到的——Oculus Medium

原文:https://towardsdatascience.com/what-ive-learned-sculpting-in-virtual-reality-oculus-medium-15ba6b16d93a?source=collection_archive---------0-----------------------

更新编辑:带着对这篇不起眼的文章的兴趣,我终于有时间写一些关于 3D 建模和 VR 的后续文章。我将很快在我的网站上发布它们,你可以在这里找到[]。注册我的新 【快讯】 或通过[RSS]订阅,以便在这些更新上线后立即查看。我还将发表关于神经网络在艺术中的应用以及其他艺术/技术相关主题的文章。**

虚拟现实令人兴奋的事情之一是它开辟了互动的新途径,不仅在游戏中,而且在应用程序和工具中。自从 Oculus 宣布以来,我最大的愿望是一个 3D 建模应用程序,虽然还有很多东西需要解决,但 Oculus Medium 已经提供了一个非常引人注目的未来。我来说说我的过程和我学到的东西。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先让我说,我不是一个专业的建模师。我在 Blender 上过课,在 Zbrush 上过一些在线课程,但我是一名 UX 设计师。我在学校学过传统美术,所以我知道传统的雕刻技巧,但是由于 3D 艺术/设计的高度技术性(相对于更直接的 2D 的东西),有很多我不知道的。Oculus Medium 非常棒,因为它模拟了现实生活中的雕塑,但它也不像从 Zbrush 或 Mudbox 切换到 Oculus 那么简单。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Not me, just a google image search to give you an idea of what the set up looks like

Oculus Medium 是基于体素的。这实质上意味着它使用 3D 像素。图片+元素=像素,体积+元素=体素。像素是网格,体素是网格的网格,构成立方体。很像游戏 minecraft。体素就像光栅图形。传统的 3D 渲染和 3D 软件使用的是顶点,基本就像 3D 矢量一样。如果你熟悉 Adobe Illustrator/Flash 和 Adobe Photoshop 之间的区别,那么 Oculus Medium 更像是 3D Photoshop。

体素通常不用于渲染 3D 对象,因为它们占用大量内存。如果你想要一个更专业的解释,我强烈推荐 Craig Perko 的视频,他深入描述了原因:

但是为了满足我的需求,你真正需要知道的唯一一件事是体素占用大量内存。很多。我的 windows 桌面机有 16g 内存,在做这些项目的过程中,我设法让我的电脑崩溃了几次,并轻松地在我的 SSD 中存储了大约 50g 的分页文件。我将解释这一点的一些含义,因为它关系到一个人如何在虚拟现实中雕刻。

我的第一个项目是一个简单的骷髅战士。简单、坚硬的表面,没有太多细节,基本上都是一种材料,就像我在用 3D 打印机打印一样。

与传统的顶点建模相比,体素有很多优点。体素雕刻对我来说感觉更直观,我发现自己真的很享受在虚拟现实雕刻的时间。这个雕塑花了两天的时间,有点长,但大部分时间都花在了弄清楚界面和如何最好地处理这件作品上。

做完骷髅战士后,我决定四处寻找新的挑战。facebook 上的一个朋友建议我试着模仿碧昂斯在格莱美上穿的服装。恐怕我对她的大部分作品都不太熟悉,但我最近读了伦敦桂冠诗人、碧昂斯最新专辑的撰稿人沃桑·夏尔的一首非常优美的诗。她的诗《留下来的不可承受之重》很美。https://warsanshire . band camp . com/track/the-unability-weight of-staying-the-end-of-relationship 她的服装也非常酷,似乎提供了许多方面,这对于 Oculus Medium 中的造型来说尤其困难。

碧昂斯造型的困难之处在于它与人类的相似性(人类已经花了数百万年来完善我们的面部识别湿件,因此我们非常非常擅长它),细节层次的变化,以及她穿着的薄纱般的裙子。

体素建模的直观本质非常简单。你点击按钮,一个球出现在空中,跟在你手的移动后面。你把它设置为擦除,你可以有选择地把你不想要的东西刻掉。本质上就是这么简单。您甚至可以创建自定义画笔,称为“图章”,功能类似于 Photoshop。Photoshop 笔刷是从缩略图中提取的重复像素图案。邮票没有 Photoshop 笔刷复杂的额外功能(还没有!)但它们的工作原理是一样的。你拖动一个球,你会得到一个直径很大的管子。你拖动一个圆盘,你会得到一个平而细的笔画,你可以把它像一层粘土一样放在雕塑上。

体素雕刻的本质可以与谷歌的一个类似的程序形成对比,该程序被称为使用顶点的倾斜画笔。熟练的艺术家可以使用它来制作看起来像空中绘画一样的美丽艺术作品(查看下面我最喜欢的倾斜画笔艺术家伊丽莎白·爱德华的作品),但它的顶点性质也在某些方面限制了它。这意味着当你想要删除一个笔触时,你必须删除整个笔触,而不能只擦除它的一部分。每个笔划都有自己的顶点组,类似于 Illustrator 中每个矢量笔刷笔划都有自己的子层。你可以在 Illustrator 中选择性地擦除部分矢量,所以我想 Tilt Brush 或 Quill(另一个基于顶点的 3D 艺术程序)最终也会如此,但目前为止,你只能擦除整个笔画,或者完全擦除。即使修复了这一点,顶点也是在 3D 空间中应用了着色器/纹理的 2d 平面形状笔划,没有深度/质量,因此您只能真正制作一个粗略的绘画作品,这在其他应用程序(如游戏)中的使用有限(尽管显然一个聪明的人可能会将它用于他们想要的用途)。

体素有质量,因为它们是 3D 立方体,然后对它们应用平滑算法,给它们一个一致的表面,而不是《我的世界》的块状外观。如果你想将你的作品用于更传统的基于顶点的动画或游戏引擎应用程序,你必须使用导出功能将其转换为 OBJ。这带来了基于体素雕刻的第二个困难。顶点模型不像体素那样占用那么多内存,因为它们只描述组成模型网格表面的点。体素不仅包含表面,还包含每个内部 3D“像素”。如果你有一个巨大的平面空间,在顶点模型中,这个巨大的平面空间基本上可以由 4 个点组成,而同一个平面空间必须由数百个体素组成,就像一个 900px 乘 900px 的光栅图像将比一个 90px 乘 90px 的图像大,即使它们基本上是相同的东西。

在同一个网格中,顶点可以有不同的分辨率级别。大型无差别几何区域可以用较少的点来表示,然后在高细节区域可以有一堆顶点。因此,如果你想在一个大而简单的身体上安装一个非常详细的头部,那么你必须浪费大量额外的内存来保持这个简单的身体与高度详细的面部具有相同的分辨率。所以为了解决碧昂斯造型的问题,我把她的脸和身体分成两部分,并用她的珠宝来掩饰。这些元素中的每一个都在一个单独的层上,并且具有不同级别的分辨率,然后被拼凑在一起。她的脸比她的身体高 6 级分辨率。因此,尽管在 Oculus Medium 中,头部在空间中被表示为一个较小的对象,但它实际上包含了 6 倍多的体素。这有点像在 Photoshop 中让一个高分辨率的智能对象在一个低分辨率的图像中播放,也许这可以给你一个想法。

即使有了这样的分辨率划分,我仍然遇到了许多内存问题。体素通常不被使用是有原因的,即使 6 倍的分辨率有时在面部也会受到限制。更糟糕的是,我对我的比喻作品也很生疏。虽然这只是一个硬件问题,但最终会成为一个小问题,这就是为什么我相信 Oculus 选择体素渲染是正确的。

事实上,像这样在空间的每个点上均匀地定义体素,占用了如此多的内存,这是一个问题,但也是一个很大的好处。由于每个体素都被同等考虑,你可以很容易地挖空物体,或雕刻与主图形无关的物体,而不必创建单独的顶点组等。你可以从碧昂斯的造型和我给她做的发型中看出来。在她的发梢附近,你可以看到独立的头发。这是因为我创建了一个自定义的发刷和羽化头发的方式。类似于 2d 概念艺术家用来快速生成头发、草或树叶的技术,但应用于 3D 空间,我模拟了她头发的一小部分,然后快速重复它的形式来创建她的头发的整体形状和纹理。在最后独立的头发是无意的,但我喜欢这种绘画效果,并保留了下来。一旦你手头有了更多的内存和分辨率(以及像 Photoshop 笔刷一样更多的调整选项),我可以看到这个系统变得非常非常强大。在具有此功能的 3D 建模中,还有一个完整的维度有待探索。

我提到的另一个挑战是制作薄纱般的服装。最初我是用一枚叶子形状的邮票,在裙子的形状上创造一件破旧的裙子,但这被证明是有挑战性的。仅出口一项,这条裙子就卖了 1.5 英镑,价值超过 100 万英镑。太多了!(典型的视频游戏模型即使没有几百个,也有几千个)。这是一个完全混乱的工作。我试图用 Mesh Lab(我强烈推荐:http://www.meshlab.net/)清理它,但无济于事。我的电脑就是受不了。所以我最后在搅拌机里重塑了这条裙子,并把它设置成透明材质。

这让我想到了雕刻体素的关键方面。你必须把你正在做的东西当作一个固体。这就像扔出一块粗糙的陶器不透明的粘土,做精致的东西可能很困难,因为你不能依靠纹理/材料来给出短暂的外观,并且试图从字面上翻译这种花边外观是非常耗费内存的。

即使是做像脸部这样精致的五官,完全是立体的,也有点挑战。用顶点程序雕刻允许一定量的表面控制(因为本质上你只是在处理表面,没有像体素那样的“内部空间”)。如果你的手柄在 Oculus Medium 中颤抖,你可能会在你不想要的脸颊或嘴唇上留下一大块草皮。我相信有一些 UI 解决方案可以用来解决这个困难(aaaay,给我一行 Oculus!)但这仍然是一个需要考虑的挑战。

总之,我认为 Oculus Medium 是 VR 体素雕刻的一个非常有前途的开始,我向任何 Oculus 或 Vive 用户推荐它(我实际上拥有一台 Vive,只是用 ReVive 运行它没有问题)。我推荐它主要作为一种粗略绘制形状和构图的方法,然后在更传统的顶点程序中清理,如 Blender、Mudbox 等。(或者 Zbrush,虽然从技术上来说,它也是非顶点的,这是另一个完整的故事来解释)。我绝不是一个专业的建模师,我敢肯定,还有大量更高级的功能需要为游戏组件优化(可能是一个完全不同的 VR 盒子建模程序)而设计,但我很高兴继续学习并弄清楚我与该程序的工作流程。

Keras 车型缺什么

原文:https://towardsdatascience.com/what-keras-models-are-missing-89b47cc5a4fa?source=collection_archive---------11-----------------------

TL;Keras 模型缺少“模型信心”我们需要知道一个深度学习模型的“置信度”,才能信任和使用它。模型“信心”比高预测概率更微妙。

首先,背景故事。我认识一个团队,他们建立了一个很棒的分类模型来识别“重要”的文档,然后将它们传递给人类专家。他们使用了所有很酷的 NLP 技巧:自定义单词嵌入、语言模型、注意力机制……他们用贝叶斯优化找到了最佳的模型架构和超参数。该模型的精确度与人类相当,并有可能节省数百万美元。人们可能想知道还缺少什么?

事实证明,问题在于人类专家不可能审阅模型预测为重要的所有文档。我不会透露具体的用例,但人们可以想象一个为疾病诊断筛选患者病历的假设场景。无论哪种方式,我们都受到资源的限制,只想追求模型对什么“有信心”,以控制假阳性率。但是“模特自信”到底是什么意思呢?

让我们把问题简化为二元分类。模型预测只是 0 到 1 之间的概率。我们可能会认为,预测概率越接近 1,意味着“信心”越高。但实际上模型预测只是一个点估计,它代表了“最佳猜测”,但没有量化“模型置信度”“模型置信度”的最佳量化是一个置信区间,或贝叶斯可信区间

我们可以有两个 0.8 的点估计,但一个置信区间可以是(0.5,0.9),而另一个置信区间是(0.75,0.85)。第二个估计会比第一个更“有信心”。另一方面,我们可以有两个区间估计:(0.5,0.6)和(0.3,0.9)。尽管区间估计值较低,但区间估计值越窄,提供的信息就越多,因为模型更“可靠”

对我来说,(0.5,0.6)表示“模型知道它不知道”,(0.3,0.9)表示“模型不知道它是否知道。”

怎么会这样?同样的预测概率怎么会有不同的置信区间?让我们看一个玩具二维例子。下面是 500 点,两个维度都遵循标准正态分布。当一个人将真实数据居中并缩放至平均值 0 和标准差 1 时,这是理想的情况。然后使用二次决策边界对这些点进行着色/分类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Simulated data points to be classified.

由于这些点显然不能线性分离,神经网络将是一个强大的模型选择(如果我没有告诉你真正的模型是二次的)。这里我们建立一个简单的一层神经网络,有 100 个隐藏单元。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Shallow neural network with relatively large hidden layer.

在仅仅训练了几个时期之后,神经网络做得相当好,并且恢复了决策边界。在这一点上,有人可能会说“喀拉斯万岁”,然后就到此为止。当新数据出现时,我们会采用模型预测的高概率,可能高于某个阈值。这可能是机器/深度学习在实践中的大部分时间是如何完成的,没有数据工程和模型调整。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Neural network decision boundary.

然而,到目前为止,我们真的没有“模型信心”为了得到那个,我们可以引导数据 50 次,并获得决策边界的经验分布。下图显示了决策界限可能会有很大变化。特别是,模型在中心附近最“自信”,因为蓝色波段在那里最窄。当我们向两边移动时,模型变得不那么“自信”,正如蓝色曲线的高可变性所暗示的那样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Empirical distribution of decision boundaries.

考虑两个数据点的模型预测,一个靠近中心,一个向右。如果两个数据点离决策边界的距离相等,则它们的点估计值将相同,但置信区间可能会非常不同。实际上,我们有两个预测分布,它们具有大致相同的均值/中值,但形状截然不同,因此完全没有可比性的“众数置信度”在前面的上下文中,我们会将更多的资源分配给模型更“有信心”的数据点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Predictive distributions at two different data points

“模型可信度”本质上是数据不确定性的产物。凭直觉认为,在数据可预测的情况下,模型应该更“自信”,而在数据不确定的情况下,模型应该更“不自信”。

回到良好的旧回归模型,数据不确定性表现在杠杆方面。从数学上来说,数据不确定性出现在 X 分布的边界附近,这里附近的数据点很少。这种想法在深度学习中尤为重要,原因有二。

首先,深度学习模型倾向于更高维度,尽管有过多的数据,但维数灾难将会杀死我们。第二,当我们对图像和文本等数据使用深度学习时,很难想象边界上有什么,因为图像/文本的空间远比数字的欧几里德空间复杂。

这意味着,深度学习模型仍然可能不“自信”,即使它们在数百万个数据点上进行训练。此外,我们将更难评估深度学习模型的“可信度”。事实上,这是一个重要而令人兴奋的研究领域。最有希望的解决方案是贝叶斯深度学习。最后,我推荐牛津大学的 Yarin Gal 撰写的一篇深入的博客文章,以供进一步阅读。

你的公司有什么样的数据?

原文:https://towardsdatascience.com/what-kind-of-data-does-your-company-have-7341991a73a?source=collection_archive---------8-----------------------

你的企业有一些数据,你想知道从中能学到什么。是数字还是范畴?它是否具有高维度或基数?

维度是什么?

数据无处不在已经不是什么秘密了。但重要的是要认识到,并非所有的数据都是一样的。您可能以前听说过数据清理这个术语。如果你没有,这和定期清洗没什么区别。

当你决定是时候整理你的房子了,你把地板上的衣服收起来,把桌子上的东西放回该放的地方。你让混乱的环境恢复了秩序。

同样的事情也发生在数据上。当机器学习工程师开始查看数据集时,他们会问自己,“这个应该放在哪里?”,‘这应该是什么?’就像把衣服放回壁橱一样,他们开始移动东西,改变一列的值,并使另一列的值正常化。

但是等等。您如何知道如何处理每一份数据?

回到打扫房间的比喻。如果你有一张凌乱的餐桌,你怎么知道每样东西放在哪里?

香料放在食品柜里,因为它们需要保持干燥。牛奶要放回冰箱,因为它必须保持低温。而你还没打开的那堆信封,大概可以进书房了。

现在假设你有一个混乱的数据表。一列有数字,另一列有单词。你想用这些做什么?

一种简便的方法是将这些数据分解成数字和分类数据。

在我们进一步讨论之前,让我们认识一些朋友来帮助解开这两种类型的价值观。

小猪哈罗德喜欢数字。他每天数他的食物。

Klipklop 马观察所有经过场地的汽车,知道每一种类型。

鱼桑迪两样都喜欢。她知道人多力量大,喜欢海底各种不同的海洋生物。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Harold the pig loves numerical data, Klipklop favours categorical data and Sandy the fish loves both.

数据

像哈罗德一样,计算机喜欢数字。

对于任何数据集,目标通常是以某种方式转换它,以便所有的值都处于某种数值状态。通过这种方式,计算机可以通过执行大规模计算来找出数字中的模式。

在 Harold 的例子中,他的数据已经处于数字状态。他记得在过去的三年里他每天吃了多少粒食物。

他知道周六他会得到一点额外的报酬。所以他会留一些到周一供应量较少的时候。

你不一定需要电脑来弄清楚这种模式。但是如果你在处理更复杂的事情呢?

比如根据其他类似公司的价值和最近关于 X 公司的新闻头条预测 X 公司明天的股价?

好,那么你知道 X 公司和其他四家类似公司的股票价格。这些值都是数字。现在你可以用电脑很容易地模拟这些。

但是如果你想加入标题“X 公司打破新记录,创历史新高!”融入其中?

哈罗德很擅长数数。但是他对他一直在吃的不同种类的谷物一无所知。如果谷物的种类影响了他收到的谷物数量呢?就像新闻标题如何影响股票价格一样。

这种不以简单的数字形式出现的数据称为分类数据。

分类数据

分类数据是任何不能立即以数字形式获得的数据。这通常是你会听到维数和基数这两个术语的地方。

这就是克利普克洛普这匹马出现的地方。他每天看着汽车经过,知道每辆车的品牌和型号。

但是假设您想使用这些信息来预测汽车的价格。

你知道品牌和型号对价值有一定的贡献。但是到底是什么呢?

你如何让一台电脑明白一辆宝马和一辆丰田是不同的?

用数字。

这就是特征编码概念的由来。或者换句话说,把一个类别转换成一个数字,这样计算机就能知道每个数字之间的关系。

假设今天很安静,Klipklop 只看到了 3 辆车。

一辆宝马 X5,一辆丰田凯美瑞和一辆丰田卡罗拉。你怎么能把这些汽车变成机器能理解的数字,同时又保持它们固有的差异呢?

有许多技术,但是我们将看两个最流行的——一热编码和顺序编码。

顺序编码

这是汽车和它的制造商被分配一个数字在他们出现的顺序。

假设宝马先经过,接着是凯美瑞,然后是卡罗拉。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Table 1: Example of ordinal encoding different car makes.

但这有意义吗?

按照这个逻辑,一辆宝马+丰田应该等于一辆丰田(1 + 2 = 3)。不完全是。

序号编码可以用于某些情况,如时间间隔,但它可能不是这种情况下的最佳选择。

一次热编码

一键编码将适用于每辆汽车的每个值指定为 1,将不适用的每个值指定为 0。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Table 2: Example of one-hot encoding different car makes and types.

现在,我们的两辆丰田车彼此相似,因为它们都有丰田的 1,但它们的品牌不同。

One-hot-encoding 可以很好地将类别值编码成数字,但是有一个缺点。请注意,用于描述汽车的数值是如何从 2 增加到 5 的。

这就是术语“高维度”的用法。现在有更多的参数来描述每辆车是什么,而不是车的数量。

为了让计算机学习有意义的结果,您希望相反的比率很高。

换句话说,你更希望有 6000 个汽车的例子,并且只有 6 种方式来描述它们,而不是相反。

但是当然,事情并不总是这样。你可能会有 6000 辆汽车和 1000 种不同的描述方式,因为 Klipklop 见过 500 种不同的品牌和型号。

这就是高基数的问题——当你有许多不同的方式来描述一件事,但每种方式都没有很多例子。

对于一个理想的价格预测系统,你需要 1000 辆丰田花冠,1000 辆宝马 X5 和 1000 辆丰田凯美瑞。

好了,车说够了。

我们的股价问题呢?如何将新闻标题整合到模型中?

同样,您可以通过多种方式做到这一点。但是我们将从二进制表示开始。

二进制编码

你出生在 2000 年之前,对还是错?

假设你回答正确。你得了 1 分。2000 年以后出生的人都得 0 分。简而言之,这就是二进制编码。

对于我们的股票价格预测,让我们把新闻标题分成两类——好的和坏的。好标题得 1 分,坏标题得 0 分。

有了这些信息,我们就可以浏览网页,收集新出现的标题,并把它们输入到我们的模型中。最终,有了足够多的例子,它将开始根据标题的价值来感受股票价格的变化。

有了这个模型,你开始注意到一个趋势——每次坏消息出来,股价就会下跌。没有惊喜。

我们在这里使用了一个简单的例子,二进制编码并不能准确地捕捉一个好的或坏的标题的强度。中立呢,很好还是很差?这就是我们之前讨论的顺序编码的用武之地。

-2 代表非常差的标题,-1 代表差,0 代表中性,1 代表好,2 代表非常好。现在很不好+很好=中性是有道理的。

有更复杂的方法将单词引入机器学习模型,但我们将这些留给未来的文章。

需要注意的重要一点是,有许多不同的方法可以将看似非数字的信息转换成计算机可以理解的东西。

你能做什么?

机器学习工程师和数据科学家花了很多时间试图像鱼桑迪一样思考。

桑迪知道她和其他鱼群呆在一起会很安全,但她也知道在探索未知世界的过程中有很多东西要学。

仅仅依靠数字信息来获得洞察力是很容易的。但是有如此多的信息隐藏在不同的方式中。

通过使用数字和分类信息的组合,可以建立更现实和有用的世界模型。

利用价格信息模拟股市是一回事,但当你将新闻标题加入其中时,情况就完全不同了。

如果你希望开始利用机器学习和数据科学等技术来利用数据的力量,有几件事情可以让你充分利用它。

标准化您的数据

如果你在收集数据,它是以什么格式存储的?

格式本身不一定像统一性那么重要。收集它们,但要确保它们都以同样的方式存放。

这适用于数值和分类数据,尤其是分类数据。

越多越好

理想的数据集在基数和维度之间有一个很好的平衡。

换句话说,每个特定样本都有大量的例子。

在学习方面,机器还没有人类好。我们可以看到哈罗德

猪只看一次就能记住它的样子,而计算机需要成千上万张猪的照片才能记住它的样子。

机器学习的一般经验是,更多(高质量)的数据意味着更好的模型。

记录每条信息的相关内容

随着收集的数据越来越多,了解每条信息的相关内容非常重要。

在 Max Kelsen,在运行任何类型的机器学习模型之前,工程师都会花大量时间与熟悉数据集的主题专家联系。

为什么这很重要?

因为机器学习工程师可能能够建立一个 99%准确的模型,但如果它预测错误,那就没用了。或者更糟,99%的数据是错误的。

很好地记录你的数据有助于防止这类失误。

不管你得到的是数字数据、分类数据还是两者的组合,如果你想从中获得更多,Max Kelsen 可以帮你。

这篇文章最早出现在上。

应该上哪门领先的人工智能课程,之后该做什么?

原文:https://towardsdatascience.com/what-leading-artificial-intelligence-course-should-you-take-and-what-should-you-do-after-261a933bb3da?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A photo of me being slightly (very) proud of my recent graduation from Andrew Ng’s deeplearning.ai course.

于去年年底从 Udacity 的深度学习纳米学位(DLND) 毕业,吴恩达的 deeplearning.ai 专业 于 2 月为我收官。

我目前大约 70%通过了 Udacity 的人工智能纳米学位(AIND),作为我自创 AI 硕士学位的一部分。

这篇文章开始于我对 Quora 上一个问题的回答。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Original question on Quora.

我根据我对这两门课程以及 DLND 的体验回答了这个问题。

简短回答

双管齐下。

如果你想提高你在这个领域的技能,我强烈推荐这两个课程。

去年我编程知识为零,也没听过深度学习这个名词。

由于这些课程的结合,我现在每周都在构建世界级的深度学习模型。

我按以下顺序选修了这些课程。

  1. Udacity 深度学习纳米度
    2。 Udacity 人工智能纳米度 Term 1(传统 AI)
    3。Coursera deep learning . ai吴恩达的专业化
    4。【本期】Udacity 人工智能 Nanodegree Term 2(深度学习聚焦)

如果我能再有一次机会,我会用下面的顺序。

1.吴恩达的 coursera deep learning . ai specialization
2。Udacity 深度学习纳米学位
3。Udacity 人工智能纳米学位术语 1
4。Udacity 人工智能纳米学位术语 2

为什么?

吴恩达的 deeplearning.ai 采用了一种全新的方法来进行深度学习。这是我学习最好的方法。

Udacity 的课程质量非常高,但通常会直接进入高水平的项目。这是一个很好的学习方法,但是如果你没有基础知识,会非常困难。

如果你已经拥有一些深度学习和机器学习的基础知识,或者已经是一名优秀的 Python 程序员,那么 Udacity 的 AI Nanodegree 可能是你开始的理想地方。

为什么两者都做?

交叉知识。

在学习完这两门课程后,我发现它们相辅相成。

当安德鲁的航向下降时,AIND 会上升,反之亦然。

昨天一个真实的例子发生在我身上。我被 AIND NLP capstone 项目中的一个问题卡住了,特别是一个关于单词嵌入的问题。

我在论坛上发帖说我在理解单词嵌入方面有困难。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Thanks for the help Vadim!

在 Vadim 的建议下,我回顾了 deeplearning.ai 专业化中关于单词嵌入的讲座。在做这件事之前,我在网上搜索了几个小时,寻找一个我能理解的解释。

自我提醒: 不要忽略你已经复习过的材料!

最后,它们都是很棒的课程。如果你必须选择一个,我倾向于 deeplearning.ai specialisation。安德鲁的教学风格有些地方真的很合我意。

更长的答案

对于那些对我的课程体验感兴趣的更深入的回答,请继续阅读。

我将把它分成八类。

1.成本和时间——这些课程不是免费的,也不容易。
2。先决条件—开始之前您需要什么。
3。支持选项—遇到困难时该怎么办。
4。课程质量——材料有多好?
5。提交项目——你的工作会有什么变化?
6。课程结构——课程如何进行?
7。未来的选择——课程结束后做什么?
8。其他学习资源—还有哪些其他学习资源?

1。成本和时间

deeplearning.ai 专业化要求每月支付 64 澳元(约 50 美元)的订阅费,才能获得五门课程中的每一门。每门课程都被列为大约一个月。总共五个月意味着大约 250 美元。

如果你够快的话,你可以在一个月内完成。我设法在三分钟内完成它。我本可以在两个月内完成,但是,生活。

DLND 要求预付 750 澳元(约 580 美元)。您需要在开始后的四个月内完成所有与 DLND 相关的项目,否则您将不得不再次付款。如果你按时完成,它算出每月 145 美元。

Udacity 的人工智能 Nanodegree 是三者中最长也是最贵的。包括两个三个月的期限,1000 澳元(约 775 美元)。同样,如果你在六个月的时间框架内完成了要求的项目,它算出每月 258 美元。

根据我的经验,这两个 Udacity 课程每周至少要花 15-20 个小时(有时更多)来保持进度。

另一方面,我能够每天完成价值一周的课程(6-8 小时)的 deeplearning.ai specialisation。这主要是因为我认同吴的教学方法。

2.先决条件

每门课程都将 Python 的中级知识列为先决条件。

需要一些数学知识,但 Python 应该是你的主要重点。

如果你能阅读 GitHub 上的 Python 脚本,并理解至少 60%的内容,你应该可以尝试这些课程。

如果 Python 是你的弱项,我会在开始之前多练习一下。

当我开始学习 DLND 时,我已经学习了三周的 Python 知识。在此之前,我从未编程。

最初几个月我很挣扎,但随着我的信心增加,我最终按时完成了。我仍然认为自己是 Python 新手。

至于数学,高中阶段对微积分、线性代数和几何的理解足以完成课程。这是因为大多数数学工作都是在 TensorFlow 和 Keras 等库的幕后进行的。

除了高中,我一门数学课都没上过。如果我的数学没有达到某个特定概念的标准,我会利用可汗学院来提升我的数学技能。

如果你正在考虑进入人工智能或深度学习博士项目,你将 需要 数学技能。

然而,要用你从这些课程中学到的技能构建应用人工智能,并不需要对幕后的数学有深刻的理解。

如果我有时间再来一次,我会在开始之前三倍地提高我的 Python 技能。

3.支持选项

在每门课程中,我都遇到了许多障碍。我发现支持服务对我扫清道路非常有价值。

DLND 和 AIND 有自己的 Slack 频道和专门的论坛。

在这两个松弛频道中,还有几个频道专门用于不同的主题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Sometimes the Slack channels can be a little noisy.

两个频道都有成千上万的人,大多数话题至少有几百个用户。导师们也经常主持问我任何问题会议(AMA 的)并浏览频道来回答他们能回答的任何问题。

根据我的经验,Slack 频道非常嘈杂。除了发布自己的问题或者搜索其他有类似问题的人,我不怎么用它。

论坛是一种完全不同的体验。我很少发表问题,因为我遇到的许多问题,其他人已经遇到了。答案并不总是清晰的,但如果是,那就不是学习了。

如果我陷入困境,我会在试图解决自己的问题之前,利用论坛在脑海中勾勒出一幅画面。

deeplearning.ai 专业化的论坛也是类似的体验。主要的区别是用户不允许直接从作业中发布任何代码,但是伪代码是可以的。我发现这里的论坛足以回答我的问题。

当你注册 AIND 时,你会被指派一个导师。我的导师叫阿尤什。她是来自印度的软件工程师。

导师的角色是在必要时提供进一步的支持,同时也是一个可以交谈的人。很多时候当我和阿优士谈论我面临的一个问题时,它似乎已经自己解决了。

永远不要贬低大声说出你的问题的力量。永远不要害怕寻求帮助。

发布问题时的一个技巧是尽可能有效地交流。帮助他人通过彻底解释你所面临的问题来帮助你。这是我正在研究的东西。

4.课程内容

每门课程的内容都是世界级的。我经常在我的视频中说这些是我上过的最好的课程。

DLND 分为六个部分,其中五个部分附有重要项目。

1.简介
2。神经网络——创建你的第一个神经网络。
3。卷积神经网络-建立一个狗品种分类器。
4。递归神经网络——使用神经网络生成电视脚本。
5。生成性对抗网络——建立一个面部生成器。
6。深度强化学习——教四轴飞行器如何飞行。[新]

每个项目都专注于给你某种深度学习技术的实践经验。如果你以前没有做过太多的 Python 编程,它们会很难,但不是不可能完成。

注: 第 6 节是 DLND 的新增内容,我还没有尝试过。

吴恩达的 deeplearning.ai 分为五个部分。

1.神经网络和深度学习
2。改进深度神经网络:超参数调整、正则化和优化
3。构建机器学习项目
4。卷积神经网络
5。序列模型

课程 2 和课程 3 对我来说是突出的。我觉得这种材料在 DLND 中丢失了。

其他课程在结构上与 DLND 提供的课程类似。完成课程 4 和课程 5 后,我对 DLND 中涵盖的内容有了进一步的了解。

AIND 有两个术语。学期 1 侧重于传统的人工智能方法,学期 2 侧重于深度学习。

对于那些从未做过深度学习的人来说,第二学期开始时有一门衔接课程。因为我已经完成了 DLND,所以我可以跳过这一步。

期限 1

1.构建一个游戏代理——使用带有启发式评估的对抗性搜索来构建一个数独解决和隔离游戏代理。
2。实施规划搜索—使用规划图试探法构建航空货运物流系统。
3。设计一个手语识别系统——使用隐马尔可夫模型来识别美国手语中的手势。

如果您尚未完成 DLND,AIND 的条款 2 将包含以下内容之一,并提供购买更多内容的选项。注册时我已经完成了 DLND,所以我可以访问所有三个。*

第一学期的内容对我来说很难理解。由于我已经学习了深度学习和其他机器学习技术,由于我缺乏编程能力,第一学期涵盖的主题很难。

*这可能已经改变,请务必发送电子邮件给 Udacity 支持部门进行澄清。

第二学期

1.计算机视觉集中——利用深度学习和 OpenCV 构建面部关键点检测系统。
2。自然语言处理集中——建立一个机器翻译模型,将英语翻译成法语。【我目前在这里】
3。语音识别系统—构建语音检测系统。

在每一个浓度中,你将经历一系列的小项目和讲座,直到最后的项目。

我目前正在进行第二学期的第二次集中学习。最近,我一直在练习实现自然语言处理流水线的步骤(文本预处理、特征提取和建模)。这一切都是在为机器翻译项目做准备。

5.提交项目

为 DLND 和 AIND 提交项目非常相似。通过 Udacity 教室,您可以提交项目文件或带有代码的 GitHub 链接。

在 24 小时内,Udacity 的评审员会给你回复你的分数(通过或需要更多的工作)。然而,这不是普通的审查。评审者通常会在你的代码中留下一些带有反馈或建议的评论,以便了解更多。

我对评论家的评价再高也不为过。我总是期待听到他们的观点。

对于 deeplearning.ai specialisation,所有项目和迷你测验都会自动评分。这是节省时间的,因为你得到了直接的结果,虽然,你错过了学习更多和改进的建议。

6.课程结构

Udacity 结合了简短的讲座(大部分在 2-8 分钟之间),并贯穿了信息丰富的图表。浏览器中基于 Python 的编程测试通常会遵循一个重要的主题。

在每个主要里程碑结束时,可能会在项目结束前提供一个热身项目作为可选练习。

例如,在 AIND 的 NLP 集中期间,在尝试机器翻译顶点之前提供了情感分析项目。

deeplearning.ai 的专业化结构与吴恩达著名的机器学习 MOOC 在 Coursera 上非常相似。5 分钟以下的视频很少,平均在 10 分钟左右。我以 1.5 倍的速度看着他们。

安德鲁使用屏幕上的一系列幻灯片作为他教学的基础。在介绍一个主题时,他经常在幻灯片上写下例子,并讨论每个例子背后的思想。

在每个系列讲座结束时,学生需要完成一个非编程的多项选择测验。每个测验的通过门槛为 80%(允许多次尝试)。

测验涵盖了讲座中涉及的理论知识,少数问题需要一些数学计算。

通过测验后,就可以获得 Jupyter 笔记本形式的编程作业。每个编程作业都需要 80 分或以上才能通过。

如果你在专题或任何课堂材料上遇到问题,论坛是你的朋友。

7.未来选项

完成课程后,有时会不知所措,不知下一步该做什么。至少,这是我在经历了一个重要的里程碑后的感受。

显而易见的答案是运用你所学到的东西。

但是怎么做呢?

博客帖子。

只要你有空,就喜欢写作。写下你所学到的东西将有助于巩固你的记忆。

与他人分享你的写作将有助于他们学习。

公开写作也会让其他人评论你的作品,这是另一个宝贵的学习机会。

制作视频。

也许写作不是你的专长。但是你读这篇文章的设备上可能有摄像头。谈论你学到的东西和写下来一样好。这些视频不必是最好的质量。

在摄像机前讲话将有助于你的公共演讲技巧。

在任何情况下,与他人谈论你所知道的都是有帮助的。

分享你所学到的。

在 HackerRank 或者 Kaggle 上练习。

HackerRank 和 Kaggle 都提供了大量的资源来练习你一直在学习的技能(同时也帮助你学习新的技能)。

Kaggle 非常适合获得真实数据科学、机器学习和深度学习项目的实践经验。你甚至可以建立自己的声誉,成为一名 Kaggle 大师。许多 Kaggle 的顶级竞争对手在进入任何与数据科学相关的角色时都不会有任何问题。

HackerRank 更侧重于提高你的编码技能。它提供了通过不同的编码挑战工作的能力,同时建立了你所做的投资组合。把你的简介作为简历的补充,向未来的雇主展示你的能力。

造东西

有想法吗?运用你所学的技能来实现它。把它运送给其他人,他们可能也会从中发现价值。如果失败了,与他人分享你在这个过程中学到的东西。如果成功了,恭喜你!

所有这些都指向一件事。

当老师。

你花了几个小时学习一些有价值的东西,并遇到了许多障碍。别人如何避免你的错误?他们如何从中获得一些东西?

注: 我还在研究这些!

8。其他学习资源

人工智能在线学习空间正在爆炸式增长。信息那么多,很难知道要注意什么。

就我而言,在我完成 AIND 后,我将前往 fast.ai

从那以后,我一直在关注 Coursera 上的数据结构和算法专业,以弥补我编程能力的不足。

对于人工智能,我强烈建议以下资源。*

*如果你还有,我很乐意在这里补充。

定论

如果你追求的是硬技能,尽你所能完成所有的课程,并通过教别人或建造一些东西来实现你所学到的东西。

如果你想快速进入人工智能,并了解如何制作每个深度学习模型及其能力,请从 Coursera 上的deep learning . AI specialization 开始。

无论你决定做什么,记住,学东西从定义上来说是很难的。

当它变得困难时,想想你为什么开始。

**更新(2018 年 3 月 29 日)😗*在写这篇文章之后,Udacity 彻底检查了他们的人工智能课程。这里的许多具体细节(课程价格/材料)可能不完全适用,但学习的原则和下一步该做什么仍然有效。

与此同时,去看看艾的 Udacity 学校。

**观看:**YouTube

**日常文章:**www.mrdbourke.com

连接: LinkedIn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值