蚊章汇 - Deepu Benson
type: channel
link: https://linuxcn.bwsl.wang/author/1781/
description: Deepu Benson
items: 人工智能教程（七）：Scikit-learn 和训练第一个模型
items: 人工智能教程（六）：Keras 和第一个数据集
items: 人工智能教程（五）：Anaconda 以及更多概率论
items: 人工智能教程（四）：概率论入门
items: 人工智能教程（三）：更多有用的 Python 库
items: 人工智能教程（二）：人工智能的历史以及再探矩阵
items: 人工智能教程（一）：基础知识

人工智能教程（七）：Scikit-learn 和训练第一个模型
type: item
date: 2024-01-31T23:34:18+08:00
description: 在本系列的 上一篇文章 中，我们用 TensorFlow 构建了第一个神经网络，然后还通过 Keras 接触了第一个数据集。在本系列的第七篇文章中，我们将继续探索神经网络，并使用数据集来训练模型。我们还将介绍另一个强大的机器学习 Python 库 scikit-learn。不过在进入正题之前，我要介绍两个轰动性的人工智能应用：ChatGPT 和 DALL-E 2。（LCTT 译注：此文原文发表于 2023 年初，恰值以 ChatGPT 为代表的 AI 热潮开始掀起。）OpenAI 是一个人工智能研究实验室，它在人工智能和机器学习领域做了很多研究。 埃隆·马斯克 Elon Musk 是该组织的联合创始人之一。2022 年 11 月，该实验室推出了一款名为 ChatGPT 的在线工具。它是一个可以像人类一样聊天的人工智能聊天机器人。它是使用监督学习和强化学习技术训练的 大型语言模型 large language model （LLM）。ChatGPT 使用了 OpenAI 的 GPT-3.5 语言模型，这是 GPT-3（ 生成式预训练变换器 Generative Pre-trained Transformer ）的改进版本，GPT-3 是一种使用深度学习来生成类似人类文本的语言模型。（LCTT 译注：OpenAI 已于 2023 年 3 月 14 日 发布了 GPT-4.0，它支持图文混合的输入输出，并大幅提升了推理能力和准确性。）我仍然记得第一次使用 ChatGPT 时的兴奋。它清楚地展现了人工智能的能力。ChatGPT 的回答质量很高，通常与人类给出的答案没有区别。你可以使用它来纠正语法错误、改写句子、总结段落、编写程序等。实际上，我就用 ChatGPT 改写了本文中的许多句子。此外，我还故意使用有语法错误的文本测试了 ChatGPT，它纠正后的句子非常准确。它重新措辞和总结段落的能力也很惊人。程序员甚至有可能使用 ChatGPT 在短时间内解决编程难题。在 编程探险挑战赛 2022 Advent of Code 2022 中，就有人这样宣称（LCTT 译注：比赛官方只是没有完全禁止使用人工智能作为辅助，但是并不很推崇这样的作法。消息来源）。事实上在 2022 年 12 月，也就是 ChatGPT 发布的一个月后，Stack Overflow 发布了一条新的规定，禁止提交 GPT 或 ChatGPT 生成答案。（LCTT 译注：消息来源：Temporary policy Generative AI (e.g., ChatGPT) is banned - Meta Stack Overflow）图 1 显示了 ChatGPT 编写的将两个矩阵相加的 Python 程序。我要求用 BASIC、FORTRAN、Pascal、Haskell、Lua、Pawn、C、c++、Java 等语言编写程序，ChatGPT 总能给出答案，甚至对于像 Brainfuck 和 Ook! 这样生僻的编程语言也是如此。我很确定 ChatGPT 没有从互联网上复制程序代码。更确切地说，我认为 ChatGPT 是基于对上述编程语言的语法知识生成了这些答案的，这些知识是从训练它的大量数据中获得的。许多专家和观察人士认为，随着 ChatGPT 的发展，人工智能已经成为主流。ChatGPT 的真正力量将在未来几个月或几年里被看到。OpenAI 的另一个令人惊叹的在线人工智能工具是 DALL-E 2，它以卡通机器人 WALL-E（LCTT 译注：电源《机器人总动员》中的主角）和著名画家/艺术家 萨尔瓦多·达利 Salvador Dalí 的名字命名。DALL-E 2 是一个可以根据英文描述来生成绘画的人工智能系统。该工具支持丰富的图像风格，如油画、卡通、漫画、现实主义、超现实主义、壁画等。它还可以模仿著名画家的风格，如达利、毕加索、梵高等。由 DALL-E 2 生成的图像质量非常高。我用下面的描述测试了这个工具：“一个快乐的人在海滩旁看日出的立体主义画作”。图 2 是 DALL-E 2 根据我的描述生成的图像之一。立体主义是毕加索推广的一种绘画风格。问问你的任何一个画家朋友，他/她都会说这确实是一幅立体主义风格的画。令人惊讶的是软件——它也许很复杂——能够模仿像毕加索、梵高、达利这样的大师。我强烈建议你体验一下它。这种体验将非常有趣，同时也体现了人工智能的威力。但请记住，像 ChatGPT 和 DALL-E 2 这样的工具也会带来很多问题，比如版权侵犯、学生的作业抄袭等。（LCTT 译注：本文的题图就是 DALL-E 3 生成的。）介绍 scikit-learnscikit-learn 是一个非常强大的机器学习 Python 库。它是一个采用 新 BSD 许可协议 …

人工智能教程（六）：Keras 和第一个数据集
type: item
date: 2024-01-24T17:35:18+08:00
description: 在本文中我们将继续学习概率论的知识。在本系列的 上一篇文章中，我们学习了使用 Anaconda，加强了概率论的知识。在本文中我们将继续学习概率论的知识，学习使用 seaborn 和 Pandas 进行数据可视化，并进一步介绍 TensorFlow 和 Keras 的使用。让我们从增长人工智能和机器学习的理论知识开始。众所周知人工智能、机器学习、数据科学、深度学习等是当今计算机科学的热门话题。然而，计算机科学还其他热门的话题，比如 区块链 blockchain 、 物联网 Internet of Things （IoT）、 量子计算 quantum computing 等。那么，人工智能领域的发展是否会对这些技术产生积极的影响呢？首先，让我们讨论一下区块链。根据维基百科的定义，“区块链是一种分布式账本，它由不断增长的记录（称为 区块 block ）组成，这些记录使用加密技术安全地连接在一起。”乍一看，人工智能和区块链似乎是两个高速发展的独立技术。但令人惊讶的是，事实并非如此。区块链相关的行话是 完整性 integrity ，人工智能相关的行话是数据。我们将大量数据交给人工智能程序去处理。虽然这些应用程序产生了惊人的结果，但我们如何信任它们呢？这就提出了对可解释的人工智能的需求。它可以提供一定的保证，以便最终用户可以信任人工智能程序提供的结果。许多专家认为，区块链技术可以用来提高人工智能软件做出的决策的可信度。另一方面， 智能合约 smart contract （区块链技术的一部分）可以从人工智能的验证中受益。从本质上讲，智能合约和人工智能通常都是做决策。因此，人工智能的进步将对区块链技术产生积极影响，反之亦然。下面让我们讨论一下人工智能和物联网之间的影响。早期的物联网设备通常没有强大的处理能力或备用电池。这使得需要大量处理能力的机器学习的软件无法部署在物联网设备上。当时，大多数物联网设备中只部署了基于规则的人工智能软件。基于规则的人工智能的优势在于它很简单，需要相对较少的处理能力。如今的物联网设备具备更强大的处理能力，可以运行更强大的机器学习软件。特斯拉开发的高级驾驶辅助系统 特斯拉自动驾驶仪 Tesla Autopilo 是物联网与人工智能融合的典范。人工智能和物联网对彼此的发展产生了积极影响。最后，让我们讨论人工智能和量子计算是如何相互影响的。尽管量子计算仍处于起步阶段，但 量子机器学习 quantum machine learning （QML）是其中非常重要的课题。量子机器学习基于两个概念：量子数据和量子-经典混合模型。量子数据是由量子计算机产生的数据。 量子神经网络 quantum neural network （QNN）用于模拟量子计算模型。TensorFlow Quantum 是一个用于量子-经典混合机器学习的强大工具。这类工具的存在表明，在不久的将来将会有越来越多的基于量子计算的人工智能解决方案。seaborn 入门seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够绘制美观且信息丰富的统计图形。通过 Anaconda Navigator 可以轻松安装 seaborn。我用 ESPNcricinfo 网站上 T20 国际板球赛的击球记录，创建了一个名为 T20.csv 的 CSV（ 逗号分隔值 comma-separated value ）文件，其中包含以下 15 列：球员姓名、职业生涯跨度、比赛场次、局数、未出局次数、总得分、最高得分、平均得分、面对球数、击球率、百分次数、五十分次数、零分次数、四分次数和六分次数。图 1 是使用 Pandas 库读取这个 CSV 文件的程序代码。我们已经在前面介绍过 Pandas 了。下面逐行解释程序代码的作用。第 1 行和第 2 行导入 Pandas 和 seaborn 包。第 3 行从 JupyterLab 的工作目录中读取文件 T20.csv。第 4 行打印元数据和第一行数据。图 1 显示了这行数据，它显示了 T20 国际板球赛中得分最高的 Virat Kohli 的击球记录。第 5 行将元数据和 T20.csv 中的前五行数据保存到 Best5.csv 中。在执行该行代码时会在 JupyterLab 的工作目录中创建这个文件。第 6 行根据列百分次数按升序对 CSV 文件进行排序，并将前 10 名世纪得分手的详细信息存储到 Highest100.csv 中。该文件也将存储在 JupyterLab 的工作目录中。最后，第7行代码提取了第 5 列（总得分）和第 7 列（平均得分）的数据信息，并生成散点图。图 2 显示了程序在执行时生成的散点图。在程序末尾添加如下代码行并再次运行。sns.kdeplot(data=df.iloc[:, […

人工智能教程（五）：Anaconda 以及更多概率论
type: item
date: 2024-01-03T00:18:02+08:00
description: 在本系列的第五篇文章中，我们将继续介绍概率和统计中的概念。在本系列的 前一篇文章 中，我们首先介绍了使用 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 会自动处理它的依赖项的更新。至此之后我们终于不用再担心安装软件包和库的问题了，可以继续我们…

人工智能教程（四）：概率论入门
type: item
date: 2023-12-18T21:45:00+08:00
description: 在本系列的 上一篇文章 中，我们进一步讨论了矩阵和线性代数，并学习了用 JupyterLab 来运行 Python 代码。在本系列的第四篇文章中，我们将开始学习 TensorFlow，这是一个非常强大的人工智能和机器学习库。我们也会简要介绍一些其它有用的库。稍后，我们将讨论概率、理论以及代码。和往常一样，我们先讨论一些能拓宽我们对人工智能的理解的话题。到目前为止，我们只是从技术方面讨论人工智能。随着越来越多的人工智能产品投入使用，现在是时候分析人工智能的社会影响了。想象一个找工作的场景，如果你的求职申请由人来处理，在申请被拒绝时，你可以从他们那里得到反馈，比如被拒的理由。如果你的求职申请由人工智能程序处理，当你的申请被拒绝时，你不能要求该人工智能软件系统提供反馈。在这种情况下，你甚至不能确定你的申请被拒绝是否确实是仅基于事实的决定。这明确地告诉我们，从长远来看，我们需要的不仅仅是魔法般的结果，还需要人工智能具有 责任 accountability 和 保证 guarantee 。（LCTT 译注：责任主要指确保系统的决策过程是透明的、可解释的，并且对系统的行为负责。保证是指对于系统性能指标和行为的一种承诺或者预期。）目前有很多试图回答这些问题的研究。人工智能的应用也会引发许多道德和伦理上的问题。我们不必等到强人工智能（也被称为 通用人工智能 artificial general intelligence —— AGI）出现才研究它的社会影响。我们可以通过思想实验来探究人工智能的影响。想象你在一个雨夜你驾车行驶在有发夹完的道路上，突然你眼前有人横穿马路，你的反应是什么？如果你突然刹车或转向，你自己的生命将处于极大的危险之中。但如果你不这样做，过马路的人恐怕凶多吉少。因为我们人类具有自我牺牲的特质，在决策的瞬间，即使是最自私的人也可能决定救行人。但我们如何教会人工智能系统模仿这种行为呢？毕竟从纯粹的逻辑来看，自我牺牲是一个非常糟糕的选择。同样的场景下，如果汽车是由人工智能软件在驾驶会发生什么呢？既然你是汽车的主人，那么人工智能软件理应把你的安全放在首位，它甚至全不顾其他乘客的安全。很容易看出，如果世界上所有的汽车都由这样的软件控制的话将导致彻底的混乱。现在，如果进一步假设乘坐自动驾驶汽车的乘客身患绝症。那么对于一个数学机器来说，为了行人牺牲乘客是合乎逻辑的。但对于我们这些有血有肉的人却不见得如此。你可以花点时间思考一下其它场景，注重逻辑的机器和热血的人类都会做出什么样的决策。有很多书籍和文章在讨论人工智能全面运作后的政治、社会和伦理方面的问题。但对于我们这些普通人和计算机工程师来说，读所有的书都是不必要的。然而，由于人工智能的社会意义如此重要，我们也不能轻易搁置这个问题。为了了解人工智能的社会政治方面，我建议你通过几部电影来理解人工智能（强人工智能）如何影响我们所有人。 斯坦利·库布里克 Stanley Kubrick 的杰作《 2001：太空漫游 2001: A Space Odyssey 》是最早描绘超级智能生物如何俯视我们人类的电影之一。这部电影中人工智能认为人类是世界最大的威胁，并决定毁灭人类。事实上，有相当多的电影都在探索这种情节。由伟大的艺术大师 史蒂文·斯皮尔伯格 Steven Spielberg 亲自执导的《 人工智能 Artificial Intelligence 》，探讨了人工智能机器如何与人类互动。另一部名为《 机械姬 Ex Machina 》的电影详细阐述了这一思路，讲述了具有人工智能的机器。在我看来这些都是了解人工智能的影响必看的电影。最后思考一下，试想如果马路上的汽车使用来自制造商的不同的自动驾驶规则和人工智能，这将导致彻底的混乱。TensorFlow 入门TensorFlow 是由 谷歌大脑 Google Brain 团队开发的一个自由开源的库，使用 Apache 2.0 许可证。TensorFlow 是开发人工智能和机器学习程序的重量级的库。除了 Python 之外，TensorFlow 还提供 C++、Java、JavaScript 等编程语言的接口。在我们进一步讨论之前，有必要解释一下 张量 tensor 是什么。如果你熟悉物理学，张量这个词对你来说可能并不陌生。但如果你不知道张量是什么也不用担心，现阶段把它看作多维数组就行了。当然，这是一种过度简化的理解。TensorFlow 可以在 NumPy 提供的多维数组之上运行。首先，我们要在 JupyterLab 中安装 TensorFlow。TensorFlow 有 GPU 版本和 CPU 版本两种安装类型可以选择。这主要取决于你的系统是否有合适的 GPU。GPU 是一种利用并行处理来加快图像处理速度的电路。它被广泛用在游戏和设计领域，在开发人工智…

人工智能教程（三）：更多有用的 Python 库
type: item
date: 2023-12-03T05:42:48+08:00
description: 在本系列的 上一篇文章 中，我们回顾了人工智能的历史，然后详细地讨论了矩阵。在本系列的第三篇文章中，我们将了解更多的矩阵操作，同时再介绍几个人工智能 Python 库。在进入主题之前，我们先讨论几个人工智能和机器学习中常用的重要术语。 人工神经网络 artificial neural network （通常简称为 神经网络 neural network ，NN）是机器学习和深度学习的核心。顾名思义，它是受人脑的生物神经网络启发而设计的计算模型。本文中我没有插入神经网络模型的图片，因为在互联网上很容易找到它们。我相信任何对人工智能感兴趣的人应该都见过它们，左边是输入层，中间是一个或多个隐藏层，右边是输出层。各层之间的边上的 权重 weight 会随着训练不断变化。它是机器学习和深度学习应用成功的关键。 监督学习 supervised learning 和 无监督学习 unsupervised learning 是两个重要的机器学习模型。从长远来看，任何立志于从事人工智能或机器学习领域工作的人都需要学习它们，并了解实现它们的各种技术。这里我认为有必要简单说明两种模型之间的区别了。假设有两个人分别叫 A 和 B，他们要把苹果和橘子分成两组。他们从未见过苹果或橘子。他们都通过 100 张苹果和橘子的图片来学习这两种水果的特征（这个过程称为模型的训练）。不过 A 还有照片中哪些是苹果哪些是橘子的额外信息（这个额外信息称为标签）。这里 A 就像是一个监督学习模型，B 就像是无监督学习模型。你认为在是识别苹果和橘子的任务上，谁的效果更好呢？大多数人可能会认为 A 的效果更好。但是根据机器学习的理论，情况并非总是如此。如果这 100 张照片中只有 5 张是苹果，其它都是橘子呢？那么 A 可能根本就不熟悉苹果的特征。或者如果部分标签是错误的呢？在这些情况下，B 的表现可能比 A 更好。在实际的机器学习应用中会发生这样的情况吗？是的！训练模型用的数据集可能是不充分的或者不完整的。这是两种模型都仍然在人工智能和机器学习领域蓬勃发展的众多原因之一。在后续文章中，我们将更正式地讨论它们。下面我们开始学习使用 JupyterLab，它是一个用于开发人工智能程序的强大工具。JupyterLab 入门在本系列的前几篇文章中，为了简单起见，我们一直使用 Linux 终端运行 Python 代码。现在要介绍另一个强大的人工智能工具——JupyterLab。在本系列的第一篇文章中，我们对比了几个候选项，最终决定使用 JupyterLab。它比 Jupyter Notebook 功能更强大，为我们预装了许多库和包，并且易于团队协作。还有一些其它原因，我们将在后续适时探讨它们。在本系列的第一篇文章中，我们已经学习了如何安装 JupyterLab。假设你已经按文中的步骤安装好了 JupyterLab，使用 jupyter lab 或 jupyter-lab 命令在会默认浏览器（如 Mozilla Firefox、谷歌 Chrome 等）中打开 JupyterLab。（LCTT 译注：没有安装 JupyterLab 也不要紧，你可以先 在线试用 JupyterLab）图 1 是在浏览器中打开的 JupyterLab 启动器的局部截图。JupyterLab 使用一个名为 IPython（交互式 Python）的 Python 控制台。注意，IPython 其实可以独立使用，在 Linux 终端运行 ipython 命令就可以启动它。现阶段我们使用 JupyterLab 中的 Jupyter Notebook 功能。点击图 1 中用绿框标记的按钮，打开 Jupyter Notebook。这时可能会要求你选择内核。如果你按照本系列第一篇的步骤安装 JupyterLab，那么唯一的可选项就是 Python 3（ipykernel）。请注意，你还可以在 JupyterLab 中安装其它编程语言的内核，比如 C++、R、MATLAB、Julia 等。事实上 Jupyter 的内核相当丰富，你可以访问 Jupyter 内核清单 了解更多信息。下面我们快速了解一下 Jupyter Notebook 的使用。图 2 显示的是一个在浏览器中打开的 Jupyter Notebook 窗口。从浏览器标签页的标题可以看出，Jupyter Notebook 打开的文件的扩展名是 .ipynb。在图 2 处可以看到有三个选项，它们表示 Jupyter Notebook 中可以使用的三种类型的单元。“Code”（绿色框） 表示代码单元，它是用来执行代码的。“Markdown” 单元可用于输入说明性的文本。如果你是一名计算机培训师，可以用代码单元和 Markdown 单元来创建交互式代码和解释性文本，然后…

人工智能教程（二）：人工智能的历史以及再探矩阵
type: item
date: 2023-11-20T23:04:00+08:00
description: 在本系列的 第一篇文章 中，我们讨论了人工智能、机器学习、深度学习、数据科学等领域的关联和区别。我们还就整个系列将使用的编程语言、工具等做出了一些艰难的选择。最后，我们还介绍了一点矩阵的知识。在本文中，我们将深入地讨论人工智能的核心——矩阵。不过在此之前，我们先来了解一下人工智能的历史。我们为什么需要了解人工智能的历史呢？历史上曾出现过多次人工智能热潮，但在很多情况下，对人工智能潜力的巨大期望都未能达成。了解人工智能的历史，有助于让我们看清这次人工智浪潮是会创造奇迹，抑或只是另一个即将破灭的泡沫。我们对人工智能的最寻起源于何时呢？是在发明数字计算机之后吗？还是更早呢？我相信对一个无所不知的存在的追求可以追溯到文明之初。比如古希腊神话中的 德尔菲 Delphi 就是这样一位能回答任何问题的先知。从远古时代起，对于超越人类智慧的创造性机器的探索同样吸引着我们 。历史上有过几次制造国际象棋机器的失败的尝试。其中就有臭名昭著的 机械特克 Mechanical Turk ，它并不是真正的机器人，而是由一位藏在内部的棋手操控的。 约翰·纳皮尔 John Napier 发明的对数、 布莱斯·帕斯卡 Blaise Pascal 的计算器、 查尔斯·巴贝奇 Charles Babbage 的差分机等，这些都是人工智能研究的前身。回顾人类历史，你会发现更多真实或虚构的时刻，人们想要获得超越人脑的智能。如果不考虑以上这些历史成就，对真正人工智能的探索起始于数字计算机的发明。那么，人工智能发展至今有哪些里程碑呢？前面已经提到，数字计算机的发明是人工智能研究历程中最重要的事件。与可扩展性依赖于功率需求的机电设备不同，数字设备受益于技术进步，比如从真空管到晶体管到集成电路再到如今的超大规模集成技术。人工智能发展的另一个里程碑是 阿兰·图灵 Alan Turing 首次对人工智能的理论分析。他提出的 图灵测试 Turing test 是最早的人工智能测试方法之一。现在图灵测试可能已经不太适用了，但它是定义人工智能的最初尝试之一。图灵测试可以简单描述如下：假设有一台能够与人类对话的机器，如果它能在对话中让人无法分辨它是人还是机器，那么就可以认为这台机器具有智能。如今的聊天机器人非常强大，使我们很容易看出图灵测试无法识别出真正的人工智能。但在 20 世纪 50 年代初，这确实为理解人工智能提供了一个理论框架。20 世纪 50 年代末， 约翰·麦卡锡 John McCarthy 发明了 Lisp 编程语言。它是最早的高级编程语言之一。在此之前，计算机编程用的是机器语言和汇编语言（众所周知地难用）。有了强大的机器和编程语言，计算机科学家中的乐观主义和梦想家顺理成章地开始用它们来创造人工智能。20 世纪 60 年代初，对人工智能机器的期望达到了顶峰。当然计算机科学领域取得了很大发展，但人工智能的奇迹发生了吗？很遗憾，并没有。20 世纪 60 年代见证了第一次人工智能热潮的兴起和破灭。然而计算机科学以无与伦比的速度继续发展着。到了 70 年代和 80 年代，算法在这一时期发挥了主要作用。在这段时间，许多新的高效算法被提出。20 世纪 60 年代末 高德纳·克努特 Donald Knuth （我强烈建议你了解一下他，在计算机科学界，他相当于数学界的高斯或欧拉）著名的《 计算机程序设计艺术 The Art of Computer Programming 》第一卷的出版标志着算法时代的开始。在这些年中，开发了许多通用算法和图算法。此外，基于人工神经网络的编程也在此时兴起。尽管早在 20 世纪 40 年代， 沃伦·S.·麦卡洛克 Warren S. McCulloch 和 沃尔特·皮茨 Walter Pitts 就率先提出了人工神经网络，但直到几十年后它才成为主流技术。今天，深度学习几乎完全是基于人工神经网络的。算法领域的这种发展导致了 20 世纪 80 年代人工智能研究的复苏。然而，这一次，通信和算力的限制阻碍了人工智能的发展，使其未能达到人们野心勃勃的预期。然后是 90 年代、千禧年，直到今天。又一次，我们对人工智能的积极影响充满了热情和希望。我你们可以看到，在数字时代，人工智能至少有两次前景光明的机会。但这两次人工智能都没有达到它的预期。现在的人工智能浪潮也与此类似吗？当然这个问题很难回答。但我个人认为，这一次人工智能将产生巨大的影响（LCTT 译注：本文发表于 2022 年 6 月，半年后，ChatGPT 才推出）。是什么让我做出这样的预测呢？第一，现在的高性能计算设备价格低廉且容易获得。在 20 世纪 60 年代或 80 年代，只有几台如此强大的计算设备，而现在我们有数百万甚至数十亿台这样的机器。第二，现在有大量数据可用来训练人工智能和机器学习程序。想象一下，90 …

人工智能教程（一）：基础知识
type: item
date: 2023-10-29T23:57:22+08:00
description: 如果你是关注计算机领域最新趋势的学生或从业者，你应该听说过人工智能、数据科学、机器学习、深度学习等术语。作为人工智能系列文章的第一篇，本文将解释这些术语，并搭建一个帮助初学者入门的简易教学平台。如今，计算机科学领域的学生和从业者绝对有必要了解 人工智能 artificial intelligence 、 数据科学 data science 、 机器学习 machine learning 、 深度学习 deep learning 方面的基本知识。但是应该从哪里开始呢？为了找到答案，我浏览了大量人工智能的教材和教程。它们有的从大量数学理论开始，有的用编程语言无关的方式（不要求你了解某一门特定的编程语言）讲解，有的假设你是线性代数、概率论和统计学专家。在很大程度上，它们都很有用。但它们都没有回答最重要的问题：真正的初学者应该从哪里开始学习人工智能？开始学习人工智能的方式多种多样，但是我对它们各有担忧。涉及太多的数学会让人分心，但如果数学介绍得太少就好像驾驶员不知道汽车引擎在哪里一样。对于未来的人工智能工程师和数据科学家来说，从进阶概念开始讲解是最有效率的方式，因为他们精通线性代数、概率论和统计学。如果从基础知识开始，然后在中间某个地方结束也可以，只要学员想要在这里结束学习。考虑到所有这些事实，我认为初学者的人工智能教程应该从基础知识开始，并以一个实际的人工智能项目结束。这个项目可能很小，但是在相同任务上它将会超越任何传统项目。本系列将从最基础的知识讲到中等水平内容。除了讨论人工智能，我还希望对相关的话题进行一些澄清，因为人们对人工智能、机器学习、数据科学等术语有很多困惑。人工智能程序是必要的，因为我们每天会产生海量的数据。根据互联网上查询到的结果，我们每天大约会产生 2.5x10 18 字节的数据。但是，这些数据中的大多数与我们完全无关，包括大量没有价值的 YouTube 视频，不经思考就发送的电子邮件，琐碎的新闻报道等等。然而，这片浩瀚的数据海洋中同样蕴含着无价的宝贵知识。传统软件无法完成处理这些数据的艰巨任务。人工智能是少数能够应对这种信息过载的技术之一。当谈到到人工智能时，我们还需要区分事实和假象。我记得几年前听一位人工智能专家的演讲。他讲述了一个人工智能图像识别系统，它能近乎绝对准确地分辨西伯利亚雪橇犬和西伯利亚雪狼的图像。在互联网上搜索一下，你会看到这两种动物有多么相似。如果这个系统确实那么准确，它将是人工智能的奇迹。可惜的是，事实并非如此。该图像识别系统只是对图像的背景进行了分类。西伯利亚雪橇犬是家养动物，它的图像背景中几乎总会有一些矩形或圆形的物体。而西伯利亚雪狼是野生动物，它所在的背景中有雪。这些例子导致近年来人们对人工智能提出了准确性担保要求。确实，最近几年人工智能展现了一些真正的力量。举个简单例子就是 YouTube、Amazon 等网站的推荐系统。很多时候我惊讶于它们的推荐结果，就好像它们会读心术一样。然而不论这些推荐的质量如何，“人工智能到底是好是坏？”都是一个很热门话题。我认为，一个像《终结者》中机器有意识地攻击人类的未来还遥遥无期。然而，前面那句话中的“有意识地”一词非常重要。目前的人工智能系统可能发生故障，并且意外地伤害到人类。但是，许多号称具有人工智能能力的系统实际上只是包含大量分支和循环的常规软件。因此目前可以安全地说，我们还没有在日常生活中看到人工智能的真正威力。不论是好的影响（如治愈癌症），还是坏的影响（合成的世界领导人视频导致的暴动和战争），我们都只能拭目以待了。就个人而言，我相信人工智能是一种福祉，并将大大提高未来几代人的生活质量。什么是人工智能？在我们进一步探讨之前，让我们试着理解人工智能（AI）、机器学习（ML）、深度学习（DL）、数据科学（DS）等之间的联系和区别。这些术语经常被误用为同义词。图 1 表示了人工智能、机器学习、深度学习和数据科学之间的关系。当然这不是唯一的划分方式，你可能会看到其它的划分图。但在我看来，图 1 是最贴切的，它能够最大程度地概括这些领域之间关系。在本系列的第一篇文章中，我不会对每个术语定义进行精确的定义。我认为在现阶段，精确地定义它们是适得其反的，是浪费时间。但在后续的文章中，我们将重新讨论这些术语并正式定义它们。目前我们可以暂时把人工智能看作是可以在某种程度上模仿人类智能的程序。那人类智能又是指什么呢?想象一下你的人工智能程序是一个一岁大的婴儿。这个宝宝会通过听周围人说话来学习母语。他/她将很快学会识别形状，颜色，物体等，没有任何困难。此外，他/她将能够对周围人的情绪做出反应。例如，任何一个三岁的婴儿都知道如何用甜言蜜语让父母给他/她巧克力和棒棒糖。同样，人工智能程序也将能够感知并适应环境，就像婴儿一样。然而，这种真正的人工智能只能在遥远的未来实现。图 …