在本系列的第五篇文章中，我们将继续介绍概率和统计中的概念。在本系列的 前一篇文章 中，我们首先介绍了使用 TensorFlow。它是一个非常强大的开发人工智能和机器学习应用程序的库。然后我们讨论了概率论的相关知识，为我们后面的讨论打下基础。在本系列的第五篇文章中，我们将继续介绍概率和统计中的概念。在本文中我将首先介绍 Anaconda，一个用于科学计算的 Python 发行版。它对于开发人工智能、机器学习和数据科学的程序特别有用。稍后我们将介绍一个名为 Theano 的 Python 库。但在此之前，让我们下讨论一下人工智能的未来。在回顾和修订之前的文章时，我发觉我偶尔对人工智能前景的怀疑语气和在一些话题上毫不留情的诚实态度可能在无意中使部分读者产生了消极情绪。这促使我开始从金融角度研究人工智能和机器学习。我想确定涉足人工智能市场的公司类型，是否有重量级的公司大力参与其中？还是只有一些初创公司在努力推动？这些公司未来会向人工智能市场投入多少资金？是几百万美元，几十亿美元还是几万亿美元？我通过于最近知名报纸上的的预测和数据来理解基于人工智能的经济发展背后的复杂动态性。2020 年《福布斯》上的一篇文章就预测 2020 年企业在人工智能上投入的投入将达到 500 亿美元的规模。这是一笔巨大的投资。《财富》杂志上发表的一篇文章称，风险投资者正将部分关注力从人工智能转移到 Web3 和 去中心化金融 decentralised finance （DeFi）等更新潮的领域上。但《华尔街日报》在 2022 年自信地预测，“大型科技公司正在花费数十亿美元进行人工智能研究。投资者应该密切关注。”印度《商业标准报》在 2022 年报道称，87% 的印度公司将在未来 3 年将人工智能支出提高 10%。总的来说，人工智能的未来看起来是非常安全和光明的。 令人惊讶的是，除了亚马逊、Meta（Facebook 的母公司）、Alphabet（谷歌的母公司）、微软、IBM 等顶级科技巨头在投资人工智能外，壳牌、强生、联合利华、沃尔玛等非 IT 科技类公司也在大举投资人工智能。很明显众多世界级大公司都认为人工智能将在不久的将来发挥重要作用。但是未来的变化和新趋势是什么呢？我通过新闻文章和采访找到一些答案。在人工智能未来趋势的背景下，经常提到的术语包括 负责任的人工智能 Responsible AI 、量子人工智能、人工智能物联网、人工智能和伦理、自动机器学习等。我相信这些都是需要深入探讨的话题，在上一篇文章中我们已经讨论过人工智能和伦理，在后续的文章中我们将详细讨论一些其它的话题。Anaconda 入门现在让我们讨论人工智能的必要技术。Anaconda 是用于科学计算的 Python 和 R 语言的发行版。它极大地简化了包管理过程。从本文开始，我们将在有需要时使用 Anaconda。第一步，让我们安装 Anaconda。访问 安装程序下载页面 下载最新版本的 Anaconda 发行版安装程序。在撰写本文时（2022 年 10 月），64 位处理器上最新的 Anaconda 安装程序是 Anaconda3-2022.05-Linux-x86_64.sh。如果你下载了不同版本的安装程序，将后面命令中的文件名换成你实际下载的安装文件名就行。下载完成后需要检查安装程序的完整性。在安装程序目录中打开一个终端，运行以下命令：shasum -a 256 Anaconda3-2022.05-Linux-x86_64.sh 终端上会输出哈希值和文件名。我的输出显示是：a7c0afe862f6ea19a596801fc138bde0463abcbce1b753e8d5c474b506a2db2d Anaconda3-2022.05-Linux-x86_64.sh 然后访问 Anaconda 安装程序哈希值页面，比对下载安装文件的哈希值。如果哈希值匹配，说明下载文件完整无误，否则请重新下载。然后在终端上执行以下命令开始安装：bash Anaconda3-2022.05-Linux-x86_64.sh 按回车键后，向下滚动查看并接受用户协议。最后，输入 yes 开始安装。出现用户交互提示时，一般直接使用 Anaconda 的默认选项就行。现在 Anaconda 就安装完成了。默认情况下，Anaconda 会安装 Conda。这是一个包管理器和环境管理系统。Anaconda 发行版会自动安装超过 250 个软件包，并可选择安装超过 7500 个额外的开源软件包。而且使用 Anaconda 安装的任何包或库都可以在 Jupyter Notebook 中使用。在安装新包的过程中， Anaconda 会自动处理它的依赖项的更新。至此之后我们终于不用再担心安装软件包和库的问题了，可以继续我们的人工智能和机器学习程序的开发。注意，Anaconda 只有一个命令行界面。好在我们的安装项中包括 Anaconda Navigator。这是一个用于 Anaconda 的图形用户界面。在终端上执行命令 anaconda-navigator 运行 Anaconda Navigator（图 1）。我们马上会通过例子看到它的强大功能。Theano 介绍Theano 是一个用于数学表达式计算的优化编译的 Python 库。在 Anaconda Navigator 中安装Theano 非常容易。打开 Anaconda Navigator 后点击 “ 环境 Environments ” 按钮（图 1 中用红框标记）。在打开的窗口中会显示当前安装的所有软件包的列表。在顶部的下拉列表中选择“ 尚未安装 Not installed ”选项。向下滚动并找到 Theano，然后勾选左侧的复选框。点击窗口右下角的绿色 “ 应用 Apply ” 按钮。Anaconda 会在弹出菜单中显示安装 Theano 的所有依赖项。图 2 是我安装 Theano 时的弹出菜单。可以看到，除了 Theano 之外，还安装了一个新的包，并修改了 8 个包。想象一下，如果要手动安装 Theano，这将是多么麻烦。有了 Anaconda，我们只需要点几个按钮就行了。只需要等待一会儿，Theano 就安装好了。现在我们可以在 Jupyter Notebook 中使用 Theano 了。我们已经熟悉了用于符号计算的 Python 库 SymPy，但 Theano 将符号计算提升到了一个新的水平。图 3 是一个使用 Theano 的例子。第 1 行代码导入 Theano。第 2 行导入 theano.tensor 并将其命名为 T。我们在介绍 TensorFlow 时已经介绍过 张量 tensor 了。在数学上，可以将张量看作多维数组。张量是 Theano 的关键数据结构之一，它可用于存储和操作标量（数字）、向量（一维数组）、矩阵（二维数组）、张量（多维数组）等。在第 3 行中，从 Theano 导入了 function() 的函数。第 4 行导入名为 pp() 的 Theano 函数，该函数用于格式化打印。第 5 行创建了一个名为 x 的 double 类型的标量符号变量。你可能会在理解符号变量这个概念上遇到一些困难。这里你可以把它看作是没有绑定具体值的 double 类型的对象。类似地，第 6 行创建了另一个名为 y 的标量符号变量。第 7 行告诉 Python 解释器，当符号变量 x 和 y 得到值时，将这些值相加并存储在 a 里面。为了进一步解释符号操作，仔细看第 8 行的输出是 (x+y)。这表明两个数字的实际相加还没有发生。第 9 到 11 行类似地分别定义了符号减法、乘法和除法。你可以自己使用函数 pp() 来查找 b、c 和 d 的值。第 12 行非常关键。它使用 Theano 的 function() 函数定义了一个名为 f() 的新函数。 函数 f() 的输入是 x 和 y，输出是 [a b c d]。最后在第 13 行中，给函数 f() 提供了实际值来调用该函数。该操作的输出也显示在图 3 中。我们很容易验证所显示的输出是正确的。下面让我们通过图 4 的代码来看看如何使用 Theano 创建和操作矩阵。需要注意的是，图中我省略了导入代码。如果你要直接运行图 4 的代码，需要自己添加上这几行导入代码（图 3 中的前三行）。第 1 行创建了两个符号矩阵 x 和 y。这里我使用了 复数构造函数 plural constructor imatrices，它可以同时构造多个矩阵。第 2 行到第 4 行分别对符号矩阵 x 和 y 执行符号加法、减法和乘法。这里你可以使用 print(pp(a))、print(pp(b)) 和 print(pp(c)) 来帮助理解符号操作的性质。第 5 行创建了一个函数 f()，它的输入是两个符号矩阵 x 和 y，输出是 [a b c]，它们分别表示符号加法、减法和乘法。最后，在第 6 行中，为函数 f() 提供实际的值来调用该函数。该操作的输出也显示在图 4 中。很容易验证所示的三个输出矩阵是否正确。注意，除了标量和矩阵，张量还提供了向量、行、列类型张量的构造函数。Theano 暂时就介绍到这里了，在讨论概率和统计的进阶话题时我们还会提到它。再来一点概率论现在我们继续讨论概率论和统计。我在上一篇文章中我建议你仔细阅读三篇维基百科文章，然后介绍了正态分布。在我们开始开发人工智能和机器学习程序之前，有必要回顾一些概率论和统计的基本概念。我们首先要介绍的是 算术平均值 arithmetic mean 和 标准差 standard deviation 。算术平均值可以看作是一组数的平均值。标准差可以被认为是一组数的分散程度。如果标准差较小，则表示集合中的元素都接近平均值。相反，如果标准差很大，则表示集合的中的元素分布在较大的范围内。如何使用 Python 计算算术平均值和标准差呢？Python 中有一个名为 statistics 的模块，可用于求平均值和标准差。但专家用户认为这个模块太慢，因此我们选择 NumPy。图 5 所示的代码打印两个列表 C1 和 C2 的平均值和标准差（我暂时隐藏了两个列表的实际内容）。你能从这些值中看出什么呢？目前它们对你来说只是一些数字而已。现在我告诉你，这些列表分别包含学校 A 和学校 B 的 6 名学生的数学考试成绩（满分 50 分，及格 20 分）。均值告诉我们，两所学校的学生平均成绩都较差，但学校 B 的成绩略好于学校 A。标准差值告诉我们什么呢？学校 B 的巨大的标准差值虽然隐藏在平均值之下，但却清楚地反映了学校 B 的的教学失败。为了进一步加深理解，我将给出两个列表的值，C1 =[20,22,20,22,22,20] ，C2 =[18,16,17,16,15,48]。这个例子清楚地告诉我们，我们需要更复杂的参数来处理问题的复杂性。概率和统计将提供更复杂的模型来描述复杂和混乱的数据。随机数生成是概率论的重要组成部分。但实际上我们只能生成伪随机数。伪随机数序列具有和真随机数序列近似的性质。在图 6 中我们介绍了几个生成伪随机数的函数。第 1 行导入 Python 的 random 包。第 2 行代码生成两个随机数，并将它们存储在名为 new_list 的列表中。其中函数 random.random() 生成随机数，代码 new_list = [random.random() for i in range(2)] 使用了 Python 的 列表推导 list comprehension 语法。第 3 行将此列表打印输出。注意，每次执行代码打印出的两个随机数会变化，并且连续两次打印出相同数字的概率理论上为 0。图 6 的第二个代码单元中使用了 random.choice() 函数。这个函数从给定的选项中等概率地选择数据。代码片 random.choice(["Heads", "Tails"]) 将等概率地在“Heads”和“Tails”之间选择。注意，该行代码也使用了列表推导，它会连续执行 3 次选择操作。从图 6 的输出可以看到，三次都选中了“Tails”。现在，我们用一个简单的例子来说明概率论中著名的 大数定理 xxx 。大数定理表明从大量试验中获得的结果的平均值应该接近期望值，并且随着试验次数的增加这个平均值会越来越接近期望值。我们都知道，投掷一个均匀的骰子得到数字 6 的概率是 1/6。我们用图 7 中的 Python 代码来模拟这个实验。第 1 行导入 Python 的 random 包。第 2 行设置重复试验的次数为 1000。第 3 行将计数器 ct 初始化为 0。第 4 行是一个循环，它将迭代 1000 次。第 5 行的 random.randint(1, 6) 随机生成 1 到 6 之间的整数（包括 1 和 6）。然后检查生成的数字是否等于 6；如果是，则转到第 7 行，将计数器 ct 增加 1。循环迭代 1000 次后，第 8 行打印数字 6 出现的次数与总试验次数之间的比例。图 7 显示该比例为 0.179，略高于期望值 1/6 = 0.1666…。这与期望值的差异还是比较大的。将第 2 行中 n 的值设置为 10000，再次运行代码并观察打印的输出。很可能你会得到一个更接近期望值的数字（它也可能是一个小于期望值的数字）。不断增加第 2 行中 n 的值，你将看到输出越来越接近期望值。虽然大数定理的描述朴实简单，但如果你了解到哪些数学家证明了大数定理或改进了原有的证明，你一定会大吃一惊的。他们包括卡尔达诺、雅各布·伯努利、丹尼尔·伯努利、泊松、切比雪夫、马尔科夫、博雷尔、坎特利、科尔莫戈罗夫、钦钦等。这些都是各自领域的数学巨匠。目前我们还没有涵盖概率的随机变量、概率分布等主题，它们对开发人工智能和机器学习程序是必不可少的。我们对概率和统计的讨论仍处于初级阶段，在下一篇文章中还会加强这些知识。与此同时，我们将重逢两个老朋友，Pandas 和 TensorFlow。另外我们还将介绍一个与 TensorFlow 关系密切的库 Keras。（题图：DA/ea8d9b6a-5282-41ad-a84f-3e3815e359fb）via: https://www.opensourceforu.com/2022/12/ai-anaconda-and-more-on-probability/作者：Deepu Benson 选题：lujun9972 译者：toknow-gh 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
硬核观察 #1052 libjpeg-turbo 3.0 发布，开发者表示无力继续
libjpeg-turbo 3.0 发布，开发者表示无力继续这个开源的 JPEG 图像编解码器每天有数十亿人通过浏览器、操作系统和图像查看器/编辑器使用，并且它是 ISO/ITU-T 的参考实现，经过了严格的审查。它的主要开发者 DRC 在 3.0 发布公告中说，这可能是功能开发的结束，很可能不会有 3.1 版本。DRC 表示，目前该项目只有每月约 8-10 小时的一般资金支持。而完成 3.0 测试版需要借用 2023 年所有预期的一般资金，而修复错误需要借用到 2024 年 9 月的所有资金，也就是说该项目未来 15 个月实际上将处于 “维护模式”。它的开发者 DRC 的大部分收入来自他的另外两个项目 VirtualGL 和 TurboVNC，而从 2010-2018 年，DRC 投入了相当于几十万美元的时间来开发 libjpeg-turbo 2.0，甚至导致负债时，不得不停止在该项目上投入。消息来源：Phoronix老王点评：很多开源开发者花费了自己的时间金钱来贡献给开源，但是他们也需要钱来生活。不知道那些嫌弃别人白嫖他们的开源代码的人，是不是也白嫖过其它的上游项目呢？Valve 拒绝发布带有人工智能生成内容的游戏一位独立开发者在论坛上发帖说，Valve “不再愿意发布有人工智能生成内容的游戏”。他们提交的游戏有 “一些相当明显的 AI 生成的素材”。Valve 在给开发者回复中称，“我们不能发布开发者没有所有必要权利的游戏。目前，我们拒绝分发你的游戏，因为我们不清楚用于创建素材的底层人工智能技术是否对训练数据有足够的权利。”考虑到大多数人工智能工具不能真正声称对其所有的训练数据有合法权利（即使它们有，也可能不是对该数据的道德使用），这一政策的陈述基本上相当于对游戏中人工智能生成的资产的全面禁止。Valve 表示，他们的政策更多的是 “法律上的要求”，而不是对人工智能的任何特定立场，其审查过程“是对现行版权法和政策的反映，而不是我们意见的附加层。”消息来源：Tech Crunch老王点评：这件事凸显了现有的版权法律无法适应人工智能的需要。究竟什么样的内容可以被人工智能刮取并生成内容，然后这些内容的版权归属于谁。如果要归属于原内容提供者，人工智能是否有可能、有意义地明确地指出来源？谷歌将用网络上公开的所有信息训练人工智能谷歌上周末更新了其隐私政策，明确表示该公司保留刮取你在网上发布的所有信息以建立其人工智能工具的权利。谷歌举例说，将“使用公开的信息来帮助训练谷歌的人工智能模型，并建立产品和功能，如谷歌翻译、Bard 和云人工智能功能”。以前，谷歌说这些数据将被用于 “语言模型”，而不是 “人工智能模型”，而旧政策只提到谷歌翻译，现在也包括 Bard 和云人工智能。消息来源：Gizmodo老王点评：和上一条对应，谷歌利用互联网“公开”的信息训练的人工智能，其输出的内容的版权如何界定？现在大家都黑不提白不提的就这样糊涂着，是想造成既成事实倒逼法律认可，还是需要更多的实践和探讨？
人工智能（AI）、机器学习（ML）和深度学习（DL）：有什么区别？
我们经常交替使用人工智能（AI）、机器学习（ML）和深度学习（DL）这些术语，尽管我们几乎每天都阅读或听到它们。本文解释了这些技术是如何演变的以及它们有何不同。 人工智能 Artificial Intelligence （AI）、 机器学习 Machine Learning （ML）和 深度学习 Deep Learning （DL）通常可以互换使用。但是，它们并不完全相同。人工智能是最广泛的概念，它赋予机器模仿人类行为的能力。机器学习是将人工智能应用到系统或机器中，帮助其自我学习和不断改进。最后，深度学习使用复杂的算法和深度神经网络来重复训练特定的模型或模式。让我们看看每个术语的演变和历程，以更好地理解人工智能、机器学习和深度学习实际指的是什么。人工智能自过去 70 多年以来，人工智能已经取得了长足的进步。无论我们是否知道，也不管喜欢与否，，它已经渗透到了我们生活的方方面面。在过去十年中，机器学习和深度学习的进步已经在各种规模的行业和组织中创造了人工智能热潮。云服务提供商通过开发免费的开源服务和提供新的场景进一步推动的这种势头。人工智能可能是自 1956 年以来最受关注的概念。到 2015 年，GPU 的广泛使用使并行处理更快、更强大、更便宜。而愈加廉价的存储可以大规模地存储大数据（从纯文本到图像、映射等）。这产生了对数据分析的需求，它被更普遍地称为 数据科学 data science ，导致机器学习发展为实现人工智能的方法。机器学习机器学习是使用算法来处理、学习和理解或预测可用数据的模式。最近，软件开发的低代码和无代码概念被用作机器学习中的自学习过程，它给出了完成特定任务的特定指令。通过使用数据和算法对机器进行“训练”，使其能够学习如何执行任务，更重要的是，将学习应用到不断发展的过程中。机器学习是在开发者社区专注于 AI 时发展起来的，然后发展了算法决策树学习、逻辑编程、聚类、并行处理和强化学习。这些都是朝着正确方向迈出的良好一步，但不足以解决世界感兴趣的场景。深度学习深度学习是神经网络和机器学习的进化，是人工智能社区的创意。它学习了人类思维在特定场景中的工作方式，然后在这项工作上比人类做得更好！例如，IBM 的 Watson 与自己下国际象棋，并在游戏中取得了很大进步，最终击败了世界冠军。谷歌的 AlphaGo 也学会了如何玩围棋游戏，一遍又一遍地玩它以提高自己，并成为冠军。人工智能、机器学习和深度学习正在不断发展。参与数据科学的每个人都希望推进这些概念以改善我们的日常生活。而开源社区、私营企业、科学家和政府机构都在为此共同努力。总而言之，虽然 AI 有助于创建智能机器，但机器学习有助于构建 AI 驱动的应用。深度学习是机器学习的一个子集。它通过利用复杂算法处理大量数据来训练特定模型。由于狭义 AI 极难开发，机器学习正在通过刚性计算解决这一领域的机遇。至少对于实现通用 AI，深度学习有助于将 AI 和机器学习结合在一起。via: https://www.opensourceforu.com/2022/08/ai-ml-and-dl-whats-the-difference/作者：Bala Kalavala 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在你开始从事人工智能之前，你需要先了解人类的智能。我曾经问过别人、也被别人问过关于学习人工智能（AI）最好的方式是什么？我应该去阅读什么书？我应该去看什么视频？后面我将讲到这些，但是，考虑到人工智能涉及很多领域，我把这个问题分开来讲可能更好理解。学习人工智能很重要的一点是区别开研究方面和应用方面。Google 的 Cassie Kozyrkov 在近日于伦敦举行的 O'Reilly 人工智能会议的一个演讲中 描述了这个区别，并且这是一个很好的演讲。人工智能研究在本质上是学术性的，在你能够获得人工智能的某些细节之前，需要大量的跨各类学科的数学知识。这部分的人工智能关注于算法和驱动人工智能发展的工具。比如，什么样的神经网络结构能够改善视觉识别的结果？我们如何使无监督学习成为更有用的方法？我们能否找到一个更好的方法，去理解深度学习流水线是如何得出答案的？另一方面，人工智能应用更多是关于使用现有工具去获取有用的结果。开源在这里发挥了一个重要的作用，那就是免费提供了易于使用的、各种语言的软件。公有云提供商也致力于提供大量的机器学习、模型、以及数据集，这使得人工智能的入门比其它的要简单的多。在这个问题上我想补充一点，那就是人工智能的从业者不应该将他们的工具视为神秘地输出答案的黑匣子。至少，他们应该去了解不同技术、模型、和数据采集方法的限制和潜在偏差。只是不需要去深入研究他们工具链中每个部分的理论基础。虽然在日常工作中人工智能可能并不那么重要，但理解人工智能的大量的背景知识还是很有用的。人工智能已经超越了神经网络上深度学习的狭窄范围，目前神经网络上的强化学习和监督学习已经取得重要成就。例如，人工智能经常被视为是增强（而不是替代）人类判断和决策的一种方法。但是在机器和人类之间交换信息还有其自身的缺陷。有了这些背景知识，下面是的一些研究领域和资源，你可能发现会很有用。研究人工智能在很多方面，用于人工智能研究的一个资源清单，可以反映出本科（甚至是研究生）的计算机科学项目都是专注于人工智能。最主要的区别是，你起草的教学大纲比起传统的大纲更关注于跨学科。你的计算机科学和数学背景知识决定了你的起点。如果你的计算机科学和数据背景知识很差或已经荒芜了，但你还希望能够深入了解人工智能的基本原理，那么从一些数学课程开始将会让你受益。MOOC 上像非盈利的 edX 平台和 Coursera 上都有许多可供你选择的课程（这两个平台都对认证收费，但 edX 上所有的课程，对旁听者是全免费的）。典型的基础课程包括：MIT 的微积分课程，从微分开始学习线性代数 （德克萨斯大学）概率与统计，比如 MIT 的 概率 —— 不确定性与数据科学从一个研究的角度去深入人工智能，你可能需要深入所有的这些数据领域，甚至更多。但是上面的内容应该让您在深入研究机器学习和AI之前大致了解可能是最重要的研究分支。除了 MOOC 之外，像 MIT OpenCourseWare 这样的资源也提供了大量的数学和计算机科学课程的大纲和各种支持材料。有了这些基础，你就可以学习更专业的人工智能课程了。吴恩达从他在斯坦福大学时教的 “AI MOOC” 就是整个在线课程领域中最早流行起来的课程之一。今天，他的 神经网络和深度学习 也是 Coursera 深度学习专业的一部分。在 edX 上也有相关的一些项目，比如，哥伦比亚大学提供的一个 人工智能 MicroMasters。除了课程之外，也可以在网上找到各种范例和其它学习材料。这些包括：神经网络和深度学习MIT 出版的 Ian Goodfellow、Yoshua Bengio、Aaron Courville 的《深度学习》应用人工智能人工智能应用更关注于使用可用的工具，而不是去构建新工具。对一些底层的数学，尤其是统计学的了解仍然是非常有用的 —— 甚至可以说是必需的 —— 但对这些知识的了解程度不像研究人工智能的要求那么高。在这里编程是核心技能。虽然可以使用不同的编程语言去做，但是一些库和工具集 —— 比如 Python 的 PyTorch，依赖于 Python，所以这是一个应该掌握的好技能。尤其是，如果你有某种程度上的编程背景，MIT 的 计算机科学入门和使用 Python 编程，它是基于 MIT 的 6.001 在校课程，是一个非常好的启蒙课程。如果你编程零基础，来自密歇根大学的 Charles Severance 的 人人学编程（Python 使用入门） 是个很好的开端，它不会像 MIT 的课程那样，把你一下子扔进代码的汪洋大海。R 编程语言 也是一个应该增加到你的技能库中的很有用的技能。虽然它在机器学习（ML）中使用的很少，但它在其它数据科学任务中很常见，并且经常与人工智能/机器学习和数据科学的应用实践结合在一起。例如，与组织和清理数据相关的许多任务同样适用于您最终使用的任何分析技术。像哈佛的 数据科学认证 这样的一个 MOOC 系列就是一整套课程的一个例子，这些课程介绍了如何去很好地处理数据。如果你从事人工智能方面的工作，那么你很可能会遇到的另一个开源软件库就是 TensorFlow。它最初是由 Google 人工智能团队中的 Google 大脑团队的研发工程师开发的。Google 提供了许多教程 让你通过高级 Keras API 去开始使用 TensorFlow。你既可以在 Google 云上也可以在本地运行 TensorFlow。通常，大的公有云提供商都提供在线数据集和易于使用的机器学习服务。但是，在你开始去 “玩” 数据集和应用之前，你需要考虑清楚，一旦开始选定一个提供商，你将被它们 “锁定” 的程度。你的探索学习项目所需的数据集可以从许多不同的源获得。除了公有云提供商之外，Kaggle 是另一个受欢迎的源，总体来看，它也是一个比较好的学习源。以数字形式提供的政府数据也越来越多了。美国联邦政府的 Data.gov 声称它提供超过 300,000 个数据集。各州和地方政府也发布从餐馆健康评级到狗的名字的所有数据。研究和应用人工智能兼而有之最后我想说明的一点是，人工智能不仅是与数学、编程、数据有关的一个宽泛主题。人工智能作为一个综合体涉及到了许多其它的领域，包括心理学、语言学、博弈论、运筹学和控制系统。确实，现在有一些人工智能研究者担心，由于处理能力和大数据的结合，使得该领域过于关注最近才变得强大和有趣的少数几个技术。在了解人类如何学习和推理方面，许多长期存在的问题仍未解决。不管怎样，对这些广泛存在的问题有一个了解，将更好地让你在更广泛的背景中评估人工智能。我比较喜欢的其中一个示例是杜克大学的 人类和自治实验室。这个实验室的工作涉及人机协同所面临的各种挑战，比如，如果自动化设备失效，自动驾驶仪如何设计才能让那些“洋红色的孩子“ 快速取得控制。有一个基础的大脑科学课程，比如 MIT 的 心理学导论，它提供了关于人类智能和机器智能之间关系的一些很有用的内容。另一个类似的课程是，MIT 电子工程与计算机科学系已故教授 Marvin Minsky 的 心灵的社会。关于学习人工智能，假如说有一个最重要的挑战，那它不是原材料和工具不易获得，因为它们有如此之多。我的目标并不是给你一个全面的指导，相反，而是指出了你可以去学习的不同路径，以及为你提供一些可能的起点。祝你学习愉快！via: https://opensource.com/article/18/12/how-get-started-ai作者：Gordon Haff 选题：lujun9972 译者：qhwdw 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
我们又能通过开源社区做些什么？在我们的世界里，算法无处不在，偏见也是一样。从社会媒体新闻的提供到流式媒体服务的推荐到线上购物，计算机算法，尤其是机器学习算法，已经渗透到我们日常生活的每一个角落。至于偏见，我们只需要参考 2016 年美国大选就可以知道，偏见是怎样在明处与暗处影响着我们的社会。很难想像，我们经常忽略的一点是这二者的交集：计算机算法中存在的偏见。与我们大多数人的认知相反，科技并不是客观的。 AI 算法和它们的决策程序是由它们的研发者塑造的，他们写入的代码，使用的“训练”数据还有他们对算法进行应力测试 的过程，都会影响这些算法今后的选择。这意味着研发者的价值观、偏见和人类缺陷都会反映在软件上。如果我只给实验室中的人脸识别算法提供白人的照片，当遇到不是白人照片时，它不会认为照片中的是人类 。这结论并不意味着 AI 是“愚蠢的”或是“天真的”，它显示的是训练数据的分布偏差：缺乏多种的脸部照片。这会引来非常严重的后果。这样的例子并不少。全美范围内的州法院系统 都使用“黑盒”对罪犯进行宣判。由于训练数据的问题，这些算法对黑人有偏见 ，他们对黑人罪犯会选择更长的服刑期，因此监狱中的种族差异会一直存在。而这些都发生在科技的客观性伪装下，这是“科学的”选择。美国联邦政府使用机器学习算法来计算福利性支出和各类政府补贴。但这些算法中的信息，例如它们的创造者和训练信息，都很难找到。这增加了政府工作人员进行不平等补助金分发操作的几率。算法偏见情况还不止这些。从 Facebook 的新闻算法到医疗系统再到警用携带相机，我们作为社会的一部分极有可能对这些算法输入各式各样的偏见、性别歧视、仇外思想、社会经济地位歧视、确认偏误等等。这些被输入了偏见的机器会大量生产分配，将种种社会偏见潜藏于科技客观性的面纱之下。这种状况绝对不能再继续下去了。在我们对人工智能进行不断开发研究的同时，需要降低它的开发速度，小心仔细地开发。算法偏见的危害已经足够大了。我们能怎样减少算法偏见？最好的方式是从算法训练的数据开始审查，根据 微软的研究人员 所说，这方法很有效。数据分布本身就带有一定的偏见性。编程者手中的美国公民数据分布并不均衡，本地居民的数据多于移民者，富人的数据多于穷人，这是极有可能出现的情况。这种数据的不平均会使 AI 对我们是社会组成得出错误的结论。例如机器学习算法仅仅通过统计分析，就得出“大多数美国人都是富有的白人”这个结论。即使男性和女性的样本在训练数据中等量分布，也可能出现偏见的结果。如果训练数据中所有男性的职业都是 CEO，而所有女性的职业都是秘书（即使现实中男性 CEO 的数量要多于女性），AI 也可能得出女性天生不适合做 CEO 的结论。同样的，大量研究表明，用于执法部门的 AI 在检测新闻中出现的罪犯照片时，结果会 惊人地偏向 黑人及拉丁美洲裔居民。在训练数据中存在的偏见还有很多其他形式，不幸的是比这里提到的要多得多。但是训练数据只是审查方式的一种，通过“应力测验”找出人类存在的偏见也同样重要。如果提供一张印度人的照片，我们自己的相机能够识别吗？在两名同样水平的应聘者中，我们的 AI 是否会倾向于推荐住在市区的应聘者呢？对于情报中本地白人恐怖分子和伊拉克籍恐怖分子，反恐算法会怎样选择呢？急诊室的相机可以调出儿童的病历吗？这些对于 AI 来说是十分复杂的数据，但我们可以通过多项测试对它们进行定义和传达。为什么开源很适合这项任务？开源方法和开源技术都有着极大的潜力改变算法偏见。现代人工智能已经被开源软件占领，TensorFlow、IBM Watson 还有 scikit-learn 这类的程序包都是开源软件。开源社区已经证明它能够开发出强健的，经得住严酷测试的机器学习工具。同样的，我相信，开源社区也能开发出消除偏见的测试程序，并将其应用于这些软件中。调试工具如哥伦比亚大学和理海大学推出的 DeepXplore，增强了 AI 应力测试的强度，同时提高了其操控性。还有 麻省理工学院的计算机科学和人工智能实验室完成的项目，它开发出敏捷快速的样机研究软件，这些应该会被开源社区采纳。开源技术也已经证明了其在审查和分类大组数据方面的能力。最明显的体现在开源工具在数据分析市场的占有率上（Weka、Rapid Miner 等等）。应当由开源社区来设计识别数据偏见的工具，已经在网上发布的大量训练数据组比如 Kaggle 也应当使用这种技术进行识别筛选。开源方法本身十分适合消除偏见程序的设计。内部谈话、私人软件开发及非民主的决策制定引起了很多问题。开源社区能够进行软件公开的谈话，进行大众化，维持好与大众的关系，这对于处理以上问题是十分重要的。如果线上社团，组织和院校能够接受这些开源特质，那么由开源社区进行消除算法偏见的机器设计也会顺利很多。我们怎样才能够参与其中？教育是一个很重要的环节。我们身边有很多还没意识到算法偏见的人，但算法偏见在立法、社会公正、政策及更多领域产生的影响与他们息息相关。让这些人知道算法偏见是怎样形成的和它们带来的重要影响是很重要的，因为想要改变目前的局面，从我们自身做起是唯一的方法。对于我们中间那些与人工智能一起工作的人来说，这种沟通尤其重要。不论是人工智能的研发者、警方或是科研人员，当他们为今后设计人工智能时，应当格外意识到现今这种偏见存在的危险性，很明显，想要消除人工智能中存在的偏见，就要从意识到偏见的存在开始。最后，我们需要围绕 AI 伦理化建立并加强开源社区。不论是需要建立应力实验训练模型、软件工具，或是从千兆字节的训练数据中筛选，现在已经到了我们利用开源方法来应对数字化时代最大的威胁的时间了。via: https://opensource.com/article/18/1/how-open-source-can-fight-algorithmic-bias作者：Justin Sherman 译者：Valoniakim 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
今年人工智能决策将变得更加透明？无论你的 IT 业务现在使用了多少人工智能，预计你将会在 2018 年使用更多。即便你从来没有涉猎过 AI 项目，这也可能是将谈论转变为行动的一年，德勤董事总经理 David Schatsky 说。他说：“与 AI 开展合作的公司数量正在上升。”看看他对未来一年的AI预测：1、预期更多的企业 AI 试点项目如今我们经常使用的许多现成的应用程序和平台都将 AI 结合在一起。 Schatsky 说：“除此之外，越来越多的公司正在试验机器学习或自然语言处理来解决特定的问题，或者帮助理解他们的数据，或者使内部流程自动化，或者改进他们自己的产品和服务。“除此之外，公司与人工智能的合作强度将会上升。”他说，“早期采纳它的公司已经有五个或略少的项目正在进行中，但是我们认为这个数字会上升到十个或有更多正在进行的计划。” 他说，这个预测的一个原因是人工智能技术正在变得越来越好，也越来越容易使用。2、人工智能将缓解数据科学人才紧缺的现状人才是数据科学中的一个大问题，大多数大公司都在努力聘用他们所需要的数据科学家。 Schatsky 说，AI 可以承担一些负担。他说：“数据科学的实践，逐渐成为由创业公司和大型成熟的技术供应商提供的自动化的工具。”他解释说，大量的数据科学工作是重复的、乏味的，自动化的时机已经成熟。 “数据科学家不会消亡，但他们将会获得更高的生产力，所以一家只能做一些数据科学项目而没有自动化的公司将能够使用自动化来做更多的事情，虽然它不能雇用更多的数据科学家”。3、合成数据模型将缓解瓶颈Schatsky 指出，在你训练机器学习模型之前，你必须得到数据来训练它。 这并不容易，他说：“这通常是一个商业瓶颈，而不是生产瓶颈。 在某些情况下，由于有关健康记录和财务信息的规定，你无法获取数据。”他说，合成数据模型可以采集一小部分数据，并用它来生成可能需要的较大集合。 “如果你以前需要 10000 个数据点来训练一个模型，但是只能得到 2000 个，那么现在就可以产生缺少的 8000 个数据点，然后继续训练你的模型。”4、人工智能决策将变得更加透明AI 的业务问题之一就是它经常作为一个黑匣子来操作。也就是说，一旦你训练了一个模型，它就会吐出你不能解释的答案。 Schatsky 说：“机器学习可以自动发现人类无法看到的数据模式，因为数据太多或太复杂。 “发现了这些模式后，它可以预测未见的新数据。”问题是，有时你确实需要知道 AI 发现或预测背后的原因。 “以医学图像为例子来说，模型说根据你给我的数据，这个图像中有 90％ 的可能性是肿瘤。 “Schatsky 说，“你说，‘你为什么这么认为？’ 模型说：‘我不知道，这是数据给的建议。’”Schatsky 说，如果你遵循这些数据，你将不得不对患者进行探查手术。 当你无法解释为什么时，这是一个艰难的请求。 “但在很多情况下，即使模型产生了非常准确的结果，如果不能解释为什么，也没有人愿意相信它。”还有一些情况是由于规定，你确实不能使用你无法解释的数据。 Schatsky 说：“如果一家银行拒绝贷款申请，就需要能够解释为什么。 这是一个法规，至少在美国是这样。传统上来说，人类分销商会打个电话做回访。一个机器学习模式可能会更准确，但如果不能解释它的答案，就不能使用。”大多数算法不是为了解释他们的推理而设计的。 他说：“所以研究人员正在找到聪明的方法来让 AI 泄漏秘密，并解释哪些变量使得这个病人更可能患有肿瘤。 一旦他们这样做，人们可以发现答案，看看为什么会有这样的结论。”他说，这意味着人工智能的发现和决定可以用在许多今天不可能的领域。 “这将使这些模型更加值得信赖，在商业世界中更具可用性。”via: https://enterprisersproject.com/article/2018/1/4-ai-trends-watch作者：Minda Zetlin 译者：Wuod3n 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
见多识广的人工智能比你认识更多的 XXX 明星
你有没有想过，之所以能够根据自己不同兴趣的组合搜索到需要的视频，是因为有那些每日浏览无数视频内容且对它们进行分类和标记的可怜人存在，然而这些看不见的英雄们却在人工智能面前变得英雄无用武之地。世界上最大的 XXX 电影分享网站 Pornhub 宣布，它将推出新的 AI 模型，利用计算机视觉技术自动检测和识别 XXX 明星的名字。根据 X-rated 网站的消息，目前该算法经过训练后已经通过简单的扫描和对镜头的理解，可以识别超过 1 万名 XXX 明星。Pornhub 说，通过向此 AI 模型输入数千个视频和 XXX 明星的正式照片，以让它学习如何返回准确的名字。为了减小错误，这个成人网站将向用户求证由 AI 提供的标签和分类是否合适。用户可以根据结果的准确度，提出支持或是反对。这将会让算法变得更加智能。“现在，用户可以根据自身喜好寻找指定的 XXX 明星，我们也能够返回给用户尽可能精确的搜索结果，” PornHub 副总裁 Corey Price 说。“毫无疑问，我们的模型也将在未来的发展中扮演关键角色，尤其是考虑到每天有超过 1 万个的视频添加到网站上。”“事实上，在过去的一个月里，我们测试了这个模型的测试版本，它（每天）可以扫描 5 万段视频，并且向视频添加或者移除标签。”除了识别表演者，该算法还能区分不同类别的内容：比如在 “Public” 类别下的是户外拍摄的视频，以及 “Blonde” 类别下的视频应该至少有名金发女郎。XXX 公司计划明年在 AI 模型的帮助下，对全部 500 万个视频编目，希望能让用户更容易找到与他们的期望最接近的视频片段。早先就有研究人员借助计算机视觉算法对 XXX 电影进行描述。之前就有一名开发者使用微软的人工智能技术来构建这个机器人，它可以整天观察和解读各种内容。Pornhub 似乎让这一想法更进一步，这些那些遍布全球的视频审看员的噩梦。虽然人工智能被发展到这个方面可能会让你感觉有些不可思议，但 XXX 业因其对搜索引擎优化技术的狂热追求而闻名。事实上，成人内容服务一直以来都有广泛市场，且受众不分年龄，这也是这些公司盈利的重要组成部分。但是，这些每日阅片无数、兢兢业业为其分类的人们可能很快就会成为自动化威胁的牺牲品。但从好的一面看，他们终于有机会坐下来让自动化为他们工作。via: https://thenextweb.com/artificial-intelligence/2017/10/11/pornhub-ai-watch-tag/作者：MIX 译者：东风唯笑 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
你可能在各种应用中听说过 机器学习 machine learning （ML），比如垃圾邮件过滤、光学字符识别（OCR）和计算机视觉。开启机器学习之旅是一个涉及多方面的漫长旅途。对于新手，有很多的书籍，有学术论文，有指导练习，有独立项目。在这些众多的选择里面，很容易迷失你最初想学习的目标。所以在今天的文章中，我会列出 7 个步骤（和 50 多个资源）帮助你开启这个令人兴奋的计算机科学领域的大门，并逐渐成为一个机器学习高手。请注意，这个资源列表并不详尽，只是为了让你入门。 除此之外，还有更多的资源。1、 学习必要的背景知识你可能还记得 DataCamp 网站上的学习数据科学这篇文章里面的信息图：数学和统计学是开始机器学习（ML）的关键。 基础可能看起来很容易，因为它只有三个主题。 但不要忘记这些实际上是三个广泛的话题。在这里需要记住两件非常重要的事情：首先，你一定会需要一些进一步的指导，以了解开始机器学习需要覆盖哪些知识点。其次，这些是你进一步学习的基础。 不要害怕花时间，有了这些知识你才能构建一切。第一点很简单：学习线性代数和统计学是个好主意。这两门知识是必须要理解的。但是在你学习的同时，也应该尝试学习诸如最优化和高等微积分等主题。当你越来越深入 ML 的时候，它们就能派上用场。如果是从零开始的，这里有一些入门指南可供参考：Khan 学院 对于初学者是非常好的资源，可以考虑学习他们的线性代数和微积分课程。在 麻省理工学院 OpenCourseWare 网站上学习线性代数 课程。Coursera course 网站上对描述统计学、概率论和推论统计学的介绍内容。统计学是学习 ML 的关键之一如果你更多喜欢阅读书籍，请参考以下内容： 线性代数及其应用 Linear Algebra and Its Applications 应用线性代数 Applied Linear Algebra 线性代数解决的 3000 个问题 3,000 Solved Problems in Linear Algebra 麻省理工学院在线教材然而，在大多数情况下，你已经对统计学和数学有了一个初步的了解。很有可能你已经浏览过上面列举的的那些资源。在这种情况下，诚实地回顾和评价你的知识是一个好主意，是否有一些领域是需要复习的，或者现在掌握的比较好的？如果你一切都准备好了，那么现在是时候使用 R 或者 Python 应用这些知识了。作为一个通用的指导方针，选择一门语言开始是个好主意。另外，你仍然可以将另一门语言加入到你的技能池里。为什么这些编程知识是必需的？嗯，你会看到上面列出的课程（或你在学校或大学学习的课程）将为你提供关于数学和统计学主题的更理论性的介绍（而不是应用性的）。 然而，ML 非常便于应用，你需要能够应用你所学到的所有主题。 所以最好再次复习一遍之前的材料，但是这次需要付诸应用。如果你想掌握 R 和 Python 的基础，可以看以下课程：DataCamp 上关于 Python 或者 R 的介绍性课程： Python 语言数据科学介绍 或者 R 语言编程介绍。Edx 上关于 Python 或者 R 的介绍性课程： Python 语言数据科学介绍 和 R 语言数据科学介绍。还有很多其他免费的课程。查看 Coursera 或者 Codeacademy 了解更多。当你打牢基础知识后，请查看 DataCamp 上的博客 Python 统计学：40+ 数据科学资源。 这篇文章提供了统计学方面的 40 多个资源，这些资源都是你开始数据科学（以及 ML）需要学习的。还要确保你查看了关于向量和数组的 这篇 SciPy 教程文章，以及使用 Python 进行科学计算的研讨会。要使用 Python 和微积分进行实践，你可以了解下 SymPy 软件包。2、 不要害怕在 ML 的“理论”上浪费时间很多人并不会花很多精力去浏览理论材料，因为理论是枯燥的、无聊的。但从长远来看，在理论知识上投入时间是至关重要的、非常值得的。 你将会更好地了解机器学习的新进展，也能和背景知识结合起来。 这将有助于你保持学习积极性。此外，理论并不会多无聊。 正如你在介绍中所看到的，你可以借助非常多的资料深入学习。书籍是吸收理论知识的最佳途径之一。 它们可以让你停下来想一会儿。 当然，看书是一件非常平静的事情，可能不符合你的学习风格。 不过，请尝试阅读下列书籍，看看它是否适合你： 机器学习教程 Machine Learning textbook ， Tom Mitchell 著，书可能比较旧，但是却很经典。这本书很好的解释介绍了机器学习中最重要的课题，步骤详尽，逐层深入。 机器学习: 使数据有意义的算法艺术和科学 Machine Learning: The Art and Science of Algorithms that Make Sense of Data （你可以在这里看到这本书的幻灯片版本）：这本书对初学者来说非常棒。 里面讨论了许多实践中的应用程序，其中有一些是在 Tom Mitchell 的书中缺少的。 机器学习之向往 Machine Learning Yearning ：这本书由 吴恩达 Andrew Ng 编写的，仍未完本，但对于那些正在学习 ML 的学生来说，这一定是很好的参考资料。 算法与数据结构 Algorithms and Data Structures 由 Jurg Nievergelt 和 Klaus Hinrichs 著。也可以参阅 Matthew North 的 面向大众的数据挖掘 Data Mining for the Masses 。 你会发现这本书引导你完成一些最困难的主题。 机器学习介绍 Introduction to Machine Learning 由 Alex Smola 和 S.V.N. Vishwanathan 著。花些时间看书并研究其中涵盖的资料视频和慕课对于喜欢边听边看来学习的人来说非常棒。 慕课和视频非常的多，多到可能你都很难找到适合你的。 下面列出了最知名的几个：这个著名的机器学习慕课，是 吴恩达 Andrew Ng 讲的，介绍了机器学习及其理论。 别担心，这个慕课讲的非常好，一步一步深入，所以对初学者来说非常适用。麻省理工学院 Open Courseware 的 6034 课程的节目清单，已经有点前沿了。 在你开始本系列之前，你需要做一些 ML 理论方面的准备工作，但是你不会后悔的。在这一点上，重要的是要将各种独立的技术融会贯通，形成整体的结构图。 首先了解关键的概念： 监督学习 supervised learning 和 无监督学习 unsupervised learning 的区别、分类和回归等。 手动（书面）练习可以派上用场，能帮你了解算法是如何工作的以及如何应用这些算法。 在大学课程里你经常会找到一些书面练习，可以看看波特兰州立大学的 ML 课程。3、 开始动手通过看书和看视频了解理论和算法都非常好，但是需要超越这一阶段，就要开始做一些练习。你要学着去实现这些算法，应用学到的理论。首先，有很多介绍 Python 和 R 方面的机器学习的基础知识。当然最好的方法就是使用交互式教程：Python 机器学习：Scikit-Learn 教程，在这篇教程里面，你可以学到使用 Scikit-Learn 构建模型的 KMeans 和支持向量机（SVM）相关的知名算法。给初学者的 R 语言机器学习教程 用 R 中的类和 caret 包介绍机器学习。Keras 教程：Python 深度学习[25 涵盖了如何一步一步的为分类和回归任务构建多层感知器（MLP）。还请查看以下静态的（非互动的）教程，这些需要你在 IDE 中操作：循序渐进：Python 机器学习： 一步一步地学习 Scikit-Learn。循序渐进：使用 Keras 开发你的第一个神经网络： 按这个教程一步一步地使用 Keras 开发你的第一个神经网络。你可以考虑看更多的教程，但是机器学习精要这篇教程是非常好的。除了教程之外，还有一些课程。参加课程可以帮助你系统性地应用学到的概念。 经验丰富的导师很有帮助。 以下是 Python 和机器学习的一些互动课程：用 scikit-learn 做监督学习： 学习如何构建预测模型，调整参数，并预测在未知数据上执行的效果。你将使用 Scikit-Learn 操作真实世界的数据集。用 Python 做无监督学习： 展示给你如何从未标记的数据集进行聚类、转换、可视化和提取关键信息。 在课程结束时，还会构建一个推荐系统。Python 深度学习： 你将获得如何使用 Keras 2.0 进行深度学习的实践知识，Keras 2.0 是前沿的 Python 深度学习库 Keras 的最新版本。在 Python 中应用机器学习： 将学习者引入到机器学习实践中，更多地关注技术和方法，而不是这些方法背后的统计学知识。理论学习之后，花点时间来应用你所学到的知识。对于那些正在学习 R 语言机器学习的人，还有这些互动课程：机器学习介绍 可以让你宏观了解机器学习学科最常见的技术和应用，还可以更多地了解不同机器学习模型的评估和训练。这门课程剩下的部分重点介绍三个最基本的机器学习任务： 分类、回归和聚类。R 语言无监督学习 ，用 R 语言从 ML 角度提供聚类和降维的基本介绍。 可以让你尽快获得数据的关键信息。实操机器学习涵盖了构建和应用预测功能的基本组成部分，其重点是实际应用。最后，还有很多书籍以偏向实践的方式介绍了 ML 主题。 如果你想借助书籍内容和 IDE 来学习，请查看这些书籍： Python 机器学习 Python Machine Learning Book ，Sebastian Raschka 著。 人工神经网络与深度学习导论：Python 应用实用指南 Introduction to Artificial Neural Networks and Deep Learning: A Practical Guide with Applications in Python ，Sebastian Raschka 著。 R 语言机器学习 Machine Learning with R ，Brett Lantz 著。4、 练习实践比使用 Python 进行练习和修改材料更重要。 这一步对我来说可能是最难的。 在做了一些练习后看看其他人是如何实现 ML 算法的。 然后，开始你自己的项目，阐述你对 ML 算法和理论的理解。最直接的方法之一就是将练习的规模做得更大些。 要做一个更大的练习，就需要你做更多的数据清理和功能工程。从 Kaggle 开始。 如果你需要额外的帮助来征服所谓的“数据恐惧”，请查看 Kaggle 的 Python 机器学习教程 和 Kaggle 的 R 语言机器学习教程。 这些将带给您快速的提升。此后，你也可以自己开始挑战。 查看这些网站，您可以在其中找到大量的 ML 数据集：UCI 机器学习仓库，用于机器学习的公开数据集 和 data.world。熟能生巧。5、 项目虽然做一些小的练习也不错，但是在最后，您需要做一个项目，可以在其中展示您对使用到的 ML 算法的理解。最好的练习是实现你自己的 ML 算法。 您可以在以下页面中阅读更多关于为什么您应该做这样的练习，以及您可以从中学到什么内容：为什么有许多先进的 API，比如 tensorflow，还需要自己手动实现机器学习的算法？为什么要从头开始实现机器学习算法？使用 Python 从头开始实现一个分类器，我能从中学到什么？接下来，您可以查看以下文章和仓库。 可以从中获得一些灵感，并且了解他们是如何实现 ML 算法的。如何实现机器学习算法从头开始学习机器学习从头开始学习机器学习算法开始时项目可能会很难，但是可以极大增加你的理解。6、 不要停止对 ML 的学习永远不能停止，即使你在这个领域工作了十年，总是有新的东西要学习，许多人都将会证实这一点。例如，ML 趋势，比如 深度学习 deep learning 现在就很受欢迎。你也可以专注于那些现在不怎么火，但是将来会火的话题上。如果你想了解更多，可以看看这个有趣的问题和答案。当你苦恼于掌握基础知识时，你最先想到的可能不是论文。 但是它们是你紧跟最新研究的一个途径。 论文并不适合刚刚开始学习的人，但是绝对适合高级人员。20 篇最新的机器学习和深度学习领域的顶级研究论文机器学习研究杂志优秀的深度学习论文机器学习的一些最好的研究论文和书籍其他技术也是需要考虑的。 但是当你刚开始学习时，不要担心这些。 例如，您可以专注于 Python 或 R 语言 （取决于你已经知道哪一个），并把它到你的技能池里。 你可以通过这篇文章来查找一些感兴趣的资源。如果您还想转向大数据，您可以考虑研究 Spark。 这里有一些有趣的资源：在 R 语言中使用 sparklyr 来了解 SparkSpark 数据科学与工程介绍 Apache SparkApache Spark 分布式机器学习用 Apache Spark 进行大数据分析初学者指南：用 Python 操作 Apache SparkPySpark RDD 速查表PySpark SQL 速查表其他编程语言，比如 Java、JavaScript、C 和 C++ 在 ML 中越来越重要。 从长远来看，您可以考虑将其中一种语言添加到学习列表中。 你可以使用这些博客文章来指导你选择：机器学习和数据科学最流行的编程语言机器学习和数据科学最流行的语言是...学无止境。7、 利用一切可以利用的资源机器学习是一个充满难度的话题，有时候可能会让你失去动力。 或者也许你觉得你需要点改变。 在这种情况下，请记住，有很多资源可以让你打消掉这种想法。 查看以下资源：播客是可以让你继续你的 ML 旅程，紧跟这个领域最新的发展的伟大资源：谈论机器数据怀疑论者线性化本周的机器学习及 AI机器学习 101当然，还有更多的播客。文档和软件包源代码是深入了解 ML 算法的实现的两种方法。 查看这些仓库：Scikit-Learn：知名的 Python ML 软件包Keras： Python 深度学习软件包caret： 非常受欢迎的用于分类和回归训练 R 软件包可视化是深入 ML 理论的最新也是最流行的方式之一。 它们对初学者来说非常棒，但对于更高级的学习者来说也是非常有趣的。 你肯定会被下面这些可视化资源所吸引，它们能让你更加了解 ML 的工作原理：机器学习的可视化介绍Distill 使 ML 研究清晰，动态和生动。如果你想玩下神经网络架构，可以看下 Tensorflow - 神经网络游乐场。更多的看这里：机器学习算法最佳的可视化方法是什么？学习中的一些变化更加能激励你。现在你可以开始了现在一切都取决于你自己了。学习机器学习是一个持续的过程，所以开始的越早就会越好。 运用你手边的一切工具开始吧。 祝你好运，并确保让我们知道你的进步。这篇文章是我基于 Quora 问题（小白该如何开始机器学习）给出的答案。作者简介：Karlijn Willems，数据科学记者via: https://medium.freecodecamp.org/how-machines-learn-a-practical-guide-203aae23cafb作者：Karlijn Willems 译者：Flowsnow 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在机器学习、计算机视觉以及高性能计算领域，充分利用显卡计算应用程序的能力已成为当前的热门。类似 OpenCL 的技术通过硬件无关的编程模型展现了这种能力，使得你可以编写抽象于不同体系架构的代码。它的目标是“一次编写，到处运行”，不管它是 Intel CPU、AMD 独立显卡还是 DSP 等等。不幸的是，对于日常程序员，OpenCL 的学习曲线陡峭；一个简单的 Hello World 程序可能就需要上百行晦涩难懂的代码。因此，为了减轻这种痛苦，Khronos 组织已经开发了一个称为 SYCL 的新标准，这是一个在 OpenCL 之上的 C++ 抽象层。通过 SYCL，你可以使用干净、现代的 C++ 开发出这些通用 GPU（GPGPU）应用程序，而无需拘泥于 OpenCL。下面是一个使用 SYCL 开发，通过并行 STL 实现的向量乘法事例：#include <vector> #include <iostream> #include <sycl/execution_policy> #include <experimental/algorithm> #include <sycl/helpers/sycl_buffers.hpp> using namespace std::experimental::parallel; using namespace sycl::helpers; int main() { constexpr size_t array_size = 1024*512; std::array<cl::sycl::cl_int, array_size> a; std::iota(begin(a),end(a),0); { cl::sycl::buffer<int> b(a.data(), cl::sycl::range<1>(a.size())); cl::sycl::queue q; sycl::sycl_execution_policy<class Mul> sycl_policy(q); transform(sycl_policy, begin(b), end(b), begin(b), [](int x) { return x*2; }); } } 为了作为对比，下面是一个通过 C++ API 使用 OpenCL 编写的大概对应版本（无需花过多时间阅读，只需注意到它看起来难看而且冗长）。#include <iostream> #include <array> #include <numeric> #include <CL/cl.hpp> int main(){ std::vector<cl::Platform> all_platforms; cl::Platform::get(&all_platforms); if(all_platforms.size()==0){ std::cout<<" No platforms found. Check OpenCL installation!\n"; exit(1); } cl::Platform default_platform=all_platforms[0]; std::vector<cl::Device> all_devices; default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices); if(all_devices.size()==0){ std::cout<<" No devices found. Check OpenCL installation!\n"; exit(1); } cl::Device default_device=all_devices[0]; cl::Context context({default_device}); cl::Program::Sources sources; std::string kernel_code= " void kernel mul2(global int* A){" " A[get_global_id(0)]=A[get_global_id(0)]*2;" " }"; sources.push_back({kernel_code.c_str(),kernel_code.length()}); cl::Program program(context,sources); if(program.build({default_device})!=CL_SUCCESS){ std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n"; exit(1); } constexpr size_t array_size = 1024*512; std::array<cl_int, array_size> a; std::iota(begin(a),end(a),0); cl::Buffer buffer_A(context,CL_MEM_READ_WRITE,sizeof(int)*a.size()); cl::CommandQueue queue(context,default_device); if (queue.enqueueWriteBuffer(buffer_A,CL_TRUE,0,sizeof(int)*a.size(),a.data()) != CL_SUCCESS) { std::cout << "Failed to write memory;n"; exit(1); } cl::Kernel kernel_add = cl::Kernel(program,"mul2"); kernel_add.setArg(0,buffer_A); if (queue.enqueueNDRangeKernel(kernel_add,cl::NullRange,cl::NDRange(a.size()),cl::NullRange) != CL_SUCCESS) { std::cout << "Failed to enqueue kernel\n"; exit(1); } if (queue.finish() != CL_SUCCESS) { std::cout << "Failed to finish kernel\n"; exit(1); } if (queue.enqueueReadBuffer(buffer_A,CL_TRUE,0,sizeof(int)*a.size(),a.data()) != CL_SUCCESS) { std::cout << "Failed to read result\n"; exit(1); } } 在这篇博文中我会介绍使用 SYCL 加速你 GPU 上的 C++ 代码。GPGPU 简介在我开始介绍如何使用 SYCL 之前，我首先给那些不熟悉这方面的人简要介绍一下为什么你可能想要在 GPU 上运行计算任务。如果已经使用过 OpenCL、CUDA 或类似的库，可以跳过这一节。GPU 和 CPU 的一个关键不同就是 GPU 有大量小的、简单的处理单元，而不是少量（对于普通消费者桌面硬件通常是 1-8 个）复杂而强大的核。上面是一个 4 核 CPU 的简单漫画示意图。每个核都有一组寄存器以及不同等级的缓存（有些是共享缓存、有些不是），然后是主内存。在 GPU 上，多个小处理单元被组成一个执行单元。每个小处理单元都附有少量内存，每个执行单元都有一些共享内存用于它的处理单元。除此之外，还有一些 GPU 范围的内存，然后是 CPU 使用的主内存。执行单元内部的单元是 lockstep ，每个单元都在不同的数据片上执行相同的指令。这可以使 GPU 同时处理大量的数据。如果是在 CPU 上，也许你可以使用多线程和向量指令在给定时间内完成大量的工作，但是 GPU 所能处理的远多于此。在 GPU 上一次性能够处理的数据规模使得它非常适合于类似图形（duh）、数学处理、神经网络等等。GPGPU 编程的很多方面使得它和日常的 CPU 编程完全不同。例如，从主内存传输数据到 GPU 是很慢的。真的很慢。会完全干掉你的性能使你慢下来。因此，GPU 编程的权衡是尽可能多地利用加速器的高吞吐量来掩盖数据来往的延迟。这里还有一些不那么明显的问题，例如分支的开销。由于执行单元内的处理单元按照 lockstep 工作，使它们执行不同路径（不同的控制流）的嵌套分支就是个真正的问题。这通常通过在所有单元上执行所有分支并标记出无用结果来解决。这是一个基于嵌套级别的指数级的复杂度，这当然是坏事情。当然，有一些优化方法可以拯救该问题，但需要注意：你从 CPU 领域带来的简单假设和知识在 GPU 领域可能导致大问题。在我们回到 SYCL 之前，需要介绍一些术语。 主机 （ host ） 是主 CPU 运行的机器， 设备 （ device ） 是会运行你 OpenCL 代码的地方。设备可能就是主机，但也可能是你机器上的一些加速器、模拟器等。 内核 （ kernel ） 是一个特殊函数，它是在你设备上运行代码的入口点。通常还会提供一些主机设置好的缓存给它用于输入和输出数据。回到 SYCL这里有两个可用的 SYCL 实现：triSYCL，由 Xilinx 开发的实验性开源版本（通常作为标准的试验台使用），以及 ComputeCpp，由 Codeplay（我在 Codeplay 工作，但这篇文章是在没有我雇主建议的情况下使用我自己时间编写的） 开发的工业级实现（当前处于开发测试版）。只有 ComputeCpp 支持在 GPU 上执行内核，因此在这篇文章中我们会使用它。第一步是在你的机器上配置以及运行 ComputeCpp。主要组件是一个实现了 SYCL API 的运行时库，以及一个基于 Clang 的编译器，它负责编译你的主机代码和设备代码。在本文写作时，已经在 Ubuntu 和 CentOS 上官方支持 Intel CPU 以及某些 AMD GPU。在其它 Linux 发行版上让它工作也非常简单（例如，我让它在我的 Arch 系统上运行）。对更多的硬件和操作系统的支持正在进行中，查看支持平台文档获取最新列表。这里列出了依赖和组件。你也可能想要下载 SDK，其中包括了示例、文档、构建系统集成文件，以及其它。在这篇文章中我会使用 SYCL 并行 STL，如果你想要自己在家学习的话也要下载它。一旦你设置好了一切，我们就可以开始通用 GPU 编程了！正如简介中提到的，我的第一个示例使用 SYCL 并行 STL 实现。我们现在来看看如何使用纯 SYCL 编写代码。#include <CL/sycl.hpp> #include <array> #include <numeric> #include <iostream> int main() { const size_t array_size = 1024*512; std::array<cl::sycl::cl_int, array_size> in,out; std::iota(begin(in),end(in),0); { cl::sycl::queue device_queue; cl::sycl::range<1> n_items{array_size}; cl::sycl::buffer<cl::sycl::cl_int, 1> in_buffer(in.data(), n_items); cl::sycl::buffer<cl::sycl::cl_int, 1> out_buffer(out.data(), n_items); device_queue.submit([&](cl::sycl::handler &cgh) { constexpr auto sycl_read = cl::sycl::access::mode::read; constexpr auto sycl_write = cl::sycl::access::mode::write; auto in_accessor = in_buffer.get_access<sycl_read>(cgh); auto out_accessor = out_buffer.get_access<sycl_write>(cgh); cgh.parallel_for<class VecScalMul>(n_items, [=](cl::sycl::id<1> wiID) { out_accessor[wiID] = in_accessor[wiID]*2; }); }); } } 我会把它划分为一个个片段。#include <CL/sycl.hpp> 我们做的第一件事就是包含 SYCL 头文件，它会在我们的命令中添加 SYCL 运行时库。const size_t array_size = 1024*512; std::array<cl::sycl::cl_int, array_size> in,out; std::iota(begin(in),end(in),0); 这里我们构造了一个很大的整型数组并用数字 0 到 array_size-1 初始化（这就是 std::iota 所做的）。注意我们使用 cl::sycl::cl_int 确保兼容性。{ //... } 接着我们打开一个新的作用域，其目的为二：device_queue 将在该作用域结束时解构，它将阻塞，直到内核完成。in_buffer 和 out_buffer 也将解构，这将强制数据传输回主机并允许我们从 in 和 out 中访问数据。 cl::sycl::queue device_queue;现在我们创建我们的命令队列。命令队列是所有工作（内核）在分发到设备之前需要入队的地方。有很多方法可以定制队列，例如说提供设备用于入队或者设置异步错误处理器，但对于这个例子默认构造器就可以了；它会查找兼容的 GPU，如果失败的话会回退到主机 CPU。cl::sycl::range<1> n_items{array_size}; 接下来我们创建一个范围，它描述了内核在上面执行的数据的形状。在我们简单的例子中，它是一个一维数组，因此我们使用 cl::sycl::range<1>。如果数据是二维的，我们就会使用 cl::sycl::range<2>，以此类推。除了 cl::sycl::range，还有 cl::sycl::ndrange，它允许你指定工作组大小以及越界范围，但在我们的例子中我们不需要使用它。cl::sycl::buffer<cl::sycl::cl_int, 1> in_buffer(in.data(), n_items); cl::sycl::buffer<cl::sycl::cl_int, 1> out_buffer(out.data(), n_items); 为了控制主机和设备之间的数据共享和传输，SYCL 提供了一个 buffer 类。我们创建了两个 SYCL 缓存用于管理我们的输入和输出数组。 device_queue.submit([&](cl::sycl::handler &cgh) {/*...*/}); 设置好了我们所有数据之后，我们就可以入队真正的工作。有多种方法可以做到，但设置并行执行的一个简单方法是在我们的队列中调用 .submit 函数。对于这个函数我们传递了一个运行时调度该任务时会被执行的“命令组伪函数”（伪函数是规范，不是我创造的）。命令组处理器设置任何内核需要的余下资源并分发它。constexpr auto sycl_read = cl::sycl::access::mode::read_write; constexpr auto sycl_write = cl::sycl::access::mode::write; auto in_accessor = in_buffer.get_access<sycl_read>(cgh); auto out_accessor = out_buffer.get_access<sycl_write>(cgh); 为了控制到我们缓存的访问并告诉该运行时环境我们会如何使用数据，我们需要创建访问器。很显然，我们创建了一个访问器用于从 in_buffer 读入，一个访问器用于写到 out_buffer。cgh.parallel_for<class VecScalMul>(n_items, [=](cl::sycl::id<1> wiID) { out_accessor[wiID] = in_accessor[wiID]*2; }); 现在我们已经完成了所有设置，我们可以真正的在我们的设备上做一些计算了。这里我们根据范围 n_items 在命令组处理器 cgh 之上分发一个内核。实际内核自身是一个使用 work-item 标识符作为输入、输出我们计算结果的 lamda 表达式。在这种情况下，我们从 in_accessor 使用 work-item 标识符作为索引读入，将其乘以 2，然后将结果保存到 out_accessor 相应的位置。<class VecScalMul> 是一个为了在标准 C++ 范围内工作的不幸的副产品，因此我们需要给内核一个唯一的类名以便编译器能完成它的工作。} 在此之后，我们现在可以访问 out 并期望看到正确的结果。这里有相当多的新概念在起作用，但使用这些技术你可以看到这些能力和所展现出来的东西。当然，如果你只是想在你的 GPU 上执行一些代码而不关心定制化，那么你就可以使用 SYCL 并行 STL 实现。SYCL 并行 STLSYCL 并行 STL 是一个 TS 的并行化实现，它分发你的算法函数对象作为 SYCL 内核。在这个页面前面我们已经看过这样的例子，让我们来快速过一遍。#include <vector> #include <iostream> #include <sycl/execution_policy> #include <experimental/algorithm> #include <sycl/helpers/sycl_buffers.hpp> using namespace std::experimental::parallel; using namespace sycl::helpers; int main() { constexpr size_t array_size = 1024*512; std::array<cl::sycl::cl_int, array_size> in,out; std::iota(begin(in),end(in),0); { cl::sycl::buffer<int> in_buffer(in.data(), cl::sycl::range<1>(in.size())); cl::sycl::buffer<int> out_buffer(out.data(), cl::sycl::range<1>(out.size())); cl::sycl::queue q; sycl::sycl_execution_policy<class Mul> sycl_policy(q); transform(sycl_policy, begin(in_buffer), end(in_buffer), begin(out_buffer), [](int x) { return x*2; }); } } constexpr size_t array_size = 1024*512; std::array<cl::sycl::cl_int, array_size> in, out; std::iota(begin(in),end(in),0); 到现在为止一切如此相似。我们再一次创建一组数组用于保存我们的输入输出数据。cl::sycl::buffer<int> in_buffer(in.data(), cl::sycl::range<1>(in.size())); cl::sycl::buffer<int> out_buffer(out.data(), cl::sycl::range<1>(out.size())); cl::sycl::queue q; 这里我们创建类似上个例子的缓存和队列。sycl::sycl_execution_policy<class Mul> sycl_policy(q); 这就是有趣的部分。我们从我们的队列中创建 sycl_execution_policy，给它一个名称让内核使用。这个执行策略然后可以像 std::execution::par 或 std::execution::seq 那样使用。transform(sycl_policy, begin(in_buffer), end(in_buffer), begin(out_buffer), [](int x) { return x*2; }); 现在我们的内核分发看起来像提供了一个执行策略的 std::transform 调用。我们传递的闭包会被编译并在设备上执行，而不需要我们做其它更加复杂的设置。当然，除了 transform 你可以做更多。开发的时候，SYCL 并行 STL 支持以下算法：sorttransformfor_eachfor_each_ncount_ifreduceinner_producttransform_reduce这就是这篇短文需要介绍的东西。如果你想和 SYCL 的开发保持同步，那就要看 sycl.tech。最近重要的开发就是移植 Eigen 和 Tensorflow 到 SYCL ，为 OpenCL 设备带来引入关注的人工智能编程。对我个人而言，我很高兴看到高级编程模型可以用于异构程序自动优化，以及它们是怎样支持类似 HPX 或 SkelCL 等更高级的技术。via: https://blog.tartanllama.xyz/c++/2017/05/19/sycl/作者：TartanLlama 译者：ictlyh 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
人工智能正快速入侵我们生活的五个方面
让我们来看看我们已经被人工智能包围的五个真实存在的方面。开源项目正在助推人工智能（AI）进步，而且随着技术的成熟，我们将听到更多关于 AI 如何影响我们生活的消息。你有没有考虑过 AI 是如何改变你周围的世界的？让我们来看看我们日益被我们所改变的世界，以及大胆预测一下 AI 对未来影响。1. AI 影响你的购买决定最近 VentureBeat 上的一篇文章，“AI 将如何帮助我们解读千禧一代”吸引了我的注意。我承认我对人工智能没有思考太多，也没有费力尝试解读千禧一代，所以我很好奇，希望了解更多。事实证明，文章标题有点误导人，“如何卖东西给千禧一代”或许会是一个更准确的标题。根据这篇文章，千禧一代是“一个令人垂涎的年龄阶段的人群，全世界的市场经理都在争抢他们”。通过分析网络行为 —— 无论是购物、社交媒体或其他活动 - 机器学习可以帮助预测行为模式，这将可以变成有针对性的广告。文章接着解释如何对物联网和社交媒体平台进行挖掘形成数据点。“使用机器学习挖掘社交媒体数据，可以让公司了解千禧一代如何谈论其产品，他们对一个产品类别的看法，他们对竞争对手的广告活动如何响应，还可获得很多数据，用于设计有针对性的广告，"这篇文章解释说。AI 和千禧一代成为营销的未来并不是什么很令人吃惊的事，但是 X 一代和婴儿潮一代，你们也逃不掉呢！（LCTT 译注：X 一代指出生于 20 世纪 60 年代中期至 70 年代末的美国人，婴儿潮是指二战结束后，1946 年初至 1964 年底出生的人）人工智能根据行为变化，将包括城市人在内的整个人群设为目标群体。例如， Raconteur 上的一篇文章 —— “AI 将怎样改变购买者的行为”中解释说，AI 在网上零售行业最大的力量是它能够迅速适应客户行为不断变化的形势。人工智能创业公司 Fluid AI 首席执行官 Abhinav Aggarwal 表示，他公司的软件被一个客户用来预测顾客行为，有一次系统注意到在暴风雪期间发生了一个变化。“那些通常会忽略在一天中发送的电子邮件或应用内通知的用户现在正在打开它们，因为他们在家里没有太多的事情可做。一个小时之内，AI 系统就适应了新的情况，并在工作时间开始发送更多的促销材料。”他解释说。AI 正在改变我们怎样花钱和为什么花钱，但是 AI 是怎样改变我们挣钱的方式的呢？2. 人工智能正在改变我们如何工作Fast 公司最近的一篇文章“2017 年人工智能将如何改变我们的生活”中说道，求职者将会从人工智能中受益。作者解释说，除更新薪酬趋势之外，人工智能将被用来给求职者发送相关职位空缺信息。当你应该升职的时候，你很可能会得到一个升职的机会。人工智能也可以被公司用来帮助新入职的员工。文章解释说：“许多新员工在刚入职的几天内会获得大量信息，其中大部分都留不下来。” 相反，机器人可能会随着时间的推移，当新员工需要相关信息时，再向他一点点“告知信息”。Inc. 有一篇文章“没有偏见的企业：人工智能将如何重塑招聘机制”，观察了人才管理解决方案提供商 SAP SuccessFactors 是怎样利用人工智能作为一个工作描述“偏见检查器”，以及检查员工赔偿金的偏见。《Deloitte 2017 人力资本趋势报告》显示，AI 正在激励组织进行重组。Fast 公司的文章“AI 是怎样改变公司组织的方式”审查了这篇报告，该报告是基于全球 10,000 多名人力资源和商业领袖的调查结果。这篇文章解释说："许多公司现在更注重文化和环境的适应性，而不是聘请最有资格的人来做某个具体任务，因为知道个人角色必须随 AI 的实施而发展。" 为了适应不断变化的技术，组织也从自上而下的结构转向多学科团队，文章说。3. AI 正在改变教育AI 将使所有教育生态系统的利益相关者受益。尽管教育预算正在缩减，但是教室的规模却正在增长。因此利用技术的进步有助于提高教育体系的生产率和效率，并在提高教育质量和负担能力方面发挥作用。根据 VentureBeat 上的一篇文章“2017 年人工智能将怎样改变教育”，今年我们将看到 AI 对学生们的书面答案进行评分，机器人回答学生的问题，虚拟个人助理辅导学生等等。文章解释说：“AI 将惠及教育生态系统的所有利益相关者。学生将能够通过即时的反馈和指导学习地更好，教师将获得丰富的学习分析和对个性化教学的见解，父母将以更低的成本看到他们的孩子的更好的职业前景，学校能够规模化优质的教育，政府能够向所有人提供可负担得起的教育。"4. 人工智能正在重塑医疗保健2017 年 2 月 CB Insights 的一篇文章挑选了 106 个医疗保健领域的人工智能初创公司，它们中的很多在过去几年中提高了第一次股权融资。这篇文章说：“在 24 家成像和诊断公司中，19 家公司自 2015 年 1 月起就首次公开募股。”这份名单上有那些从事于远程病人监测，药物发现和肿瘤学方面人工智能的公司。”3 月 16 日发表在 TechCrunch 上的一篇关于 AI 进步如何重塑医疗保健的文章解释说：“一旦对人类的 DNA 有了更好的理解，就有机会更进一步，并能根据他们特殊的生活习性为他们提供个性化的见解。这种趋势预示着‘个性化遗传学’的新纪元，人们能够通过获得关于自己身体的前所未有的信息来充分控制自己的健康。”本文接着解释说，AI 和机器学习降低了研发新药的成本和时间。部分得益于广泛的测试，新药进入市场需要 12 年以上的时间。这篇文章说：“机器学习算法可以让计算机根据先前处理的数据来‘学习’如何做出预测，或者选择（在某些情况下，甚至是产品）需要做什么实验。类似的算法还可用于预测特定化合物对人体的副作用，这样可以加快审批速度。”这篇文章指出，2015 年旧金山的一个创业公司 Atomwise 一天内完成了可以减少埃博拉感染的两种新药物的分析，而不是花费数年时间。AI 正在帮助发现、诊断和治疗新疾病。另外一个位于伦敦的初创公司 BenevolentAI 正在利用人工智能寻找科学文献中的模式。这篇文章说：“最近，这家公司找到了两种可能对 Alzheimer 起作用的化合物，引起了很多制药公司的关注。"除了有助于研发新药，AI 正在帮助发现、诊断和治疗新疾病。TechCrunch 上的文章解释说，过去是根据显示的症状诊断疾病，但是现在 AI 正在被用于检测血液中的疾病特征，并利用对数十亿例临床病例分析进行深度学习获得经验来制定治疗计划。这篇文章说：“IBM 的 Watson 正在与纽约的 Memorial Sloan Kettering 合作，消化理解数十年来关于癌症患者和治疗方面的数据，为了向治疗疑难的癌症病例的医生提供和建议治疗方案。”5. AI 正在改变我们的爱情生活有 195 个国家的超过 5000 万活跃用户通过一个在 2012 年推出的约会应用程序 Tinder 找到潜在的伴侣。在一个 Forbes 采访播客中，Tinder 的创始人兼董事长 Sean Rad spoke 与 Steven Bertoni 对人工智能是如何正在改变人们约会进行过讨论。在关于此次采访的文章中，Bertoni 引用了 Rad 说的话，他说：“可能有这样一个时刻，Tinder 可以很好的推测你会感兴趣的人，在组织约会中还可能会做很多跑腿的工作”，所以，这个 app 会向用户推荐一些附近的同伴，并更进一步，协调彼此的时间安排一次约会，而不只是向用户显示一些有可能的同伴。我们的后代真的可能会爱上人工智能。你爱上了 AI 吗？我们的后代真的可能会爱上人工智能。Raya Bidshahri 发表在 Singularity Hub 的一篇文章“AI 将如何重新定义爱情”说，几十年的后，我们可能会认为爱情不再受生物学的限制。Bidshahri 解释说：“我们的技术符合摩尔定律，正在以惊人的速度增长 —— 智能设备正在越来越多地融入我们的生活。”，他补充道：“到 2029 年，我们将会有和人类同等智慧的 AI，而到 21 世纪 40 年代，AI 将会比人类聪明无数倍。许多人预测，有一天我们会与强大的机器合并，我们自己可能会变成人工智能。”他认为在这样一个世界上那些是不可避免的，人们将会接受与完全的非生物相爱。这听起来有点怪异，但是相比较于未来机器人将统治世界，爱上 AI 会是一个更乐观的结果。Bidshahri 说：“对 AI 进行编程，让他们能够感受到爱，这将使我们创造出更富有同情心的 AI，这可能也是避免很多人忧虑的 AI 大灾难的关键。”这份 AI 正在入侵我们生活各领域的清单只是涉及到了我们身边的人工智能的表面。哪些 AI 创新是让你最兴奋的，或者是让你最烦恼的？大家可以在文章评论区写下你们的感受。Rikki Endsley - Rikki Endsley 是开源社区 Opensource.com 的管理员。在过去，她曾做过 Red Hat 开源和标准（OSAS）团队社区传播者；自由技术记者；USENIX 协会的社区管理员；linux 权威杂志 ADMIN 和 Ubuntu User 的合作出版者，还是杂志 Sys Admin 和 UnixReview.com 的主编。在 Twitter 上关注她：@rikkiends。（图片来源: opensource.com）via: https://opensource.com/article/17/3/5-big-ways-ai-rapidly-invading-our-lives作者：Rikki Endsley 译者：zhousiyu325 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出