Essential Math for AI(机翻)-第二章(1/3)

255 阅读25分钟

第2章 数据,数据,数据

也许如果我知道这些数据从哪里来,为什么存在,我就会知道它们都走向何方,为什么会这样。

数据是驱动大多数AI系统的燃料。在本章中,我们将了解如何处理数据以及设计从数据中提取有用且可操作信息的方法,这是感知AI的核心。 感知AI基于从数据中进行统计学习,其中AI代理或机器从环境中感知数据,然后检测这些数据中的模式,从而使其得出结论和/或做出决策。

感知AI与其他三种AI不同:

理解AI

其中AI系统理解它将图像分类为椅子是用于坐的功能,它将图像分类为癌症意味着该人生病并需要进一步的医学关注,或者它阅读的关于线性代数的教科书可以用于从数据中提取有用的信息。

控制AI

这涉及控制AI代理的物理部分,以便在空间中导航、开门、倒咖啡等。机器人在这方面取得了重大进展。我们需要用包括感知AI和理解AI的“大脑”来增强机器人,并将它们连接到控制AI。理想情况下,像人类一样,控制AI通过将信息传递给感知和理解系统,从而从与环境的物理互动中学习,这些系统又将控制命令传递给代理的控制系统。

意识AI

在这里,AI代理具有类似于人类体验的内在体验。由于我们还不知道如何数学定义意识,因此在本书中根本不涉及这个概念。

理想情况下,真正的人类智能结合了这四个方面:感知、理解、控制和意识。本章以及接下来的几章的主要关注点是感知AI回想一下,AI和数据已经相互交织到如今常见的、尽管是错误的,将数据科学和AI视为同义词的程度。

AI数据

在许多流行的机器学习模型中,包括高度成功的神经网络,这些网络在2012年的AlexNet中将人工智能带回了公众的视线,其中的核心是一个非常简单的数学问题:将给定的数据点适配到恰当的函数中(将输入映射到输出),从中提取出重要的信号并忽略噪声,然后确保此函数在新数据上表现良好。

然而,复杂性和挑战来自于不同的来源:

假设和特征

我们不知道生成数据的真实函数或它实际依赖的所有特征。我们只是观察数据,然后尝试估计生成它的假设函数。我们的函数试图学习哪些数据特征对我们的预测、分类、决策或一般目的很重要。它还学习这些特征如何相互作用以产生观察到的结果。AI在这方面的巨大潜力之一是它能够捕捉到人类不容易注意到的数据特征之间的微妙相互作用,因为我们很擅长观察强特征,但可能会忽略更微妙的特征。例如,我们人类可以看出一个人的月收入影响其偿还贷款的能力,但我们可能不会注意到他们的日常通勤或早晨习惯也会有非常重要的影响。某些特征交互比其他交互简单得多,如线性交互。其他交互则更加复杂,是非线性的。从数学的角度来看,无论我们的特征交互是简单的(线性)还是复杂的(非线性),我们的目标都是相同的:找到适合您的数据并能够在新数据上做出良好预测的假设函数。这里还有一个额外的复杂问题:有许多假函数可以拟合相同的数据集,我们如何知道选择哪一个?

性能

即使计算出适合我们的数据的假设函数,我们如何知道它在新的和未经见过的数据上表现良好?我们如何知道选择哪个性能度量,以及在部署到真实世界后如何监控这种性能?现实世界中的数据和场景并没有全部用基准标记,因此我们不能轻易地衡量我们的AI系统是否表现良好并做出正确或合适的预测和决策。我们不知道衡量AI系统结果的标准。如果现实世界中的数据和场景都带有基准,那么我们所有人都会失业,因为我们会知道在每种情况下该怎么做,地球上就会和平,我们将幸福地生活(事实上不是这样,我希望它能这么简单)。

数量

AI领域中几乎所有的东西都是高维的!数据实例的数量,观察到的特征以及要计算的未知权重可能在百万级别,所需的计算步骤可能在十亿级别。在这样的数据量上进行有效的存储、传输、探索、预处理、结构化和计算是中心目标。此外,探索所涉及的高维数学函数的景观是一项非常复杂的任务。

结构

现代世界创造的大部分数据都是非结构化的。它没有组织成易于查询的表格,其中包含标记字段,如姓名、电话号码、性别、年龄、邮政编码、房价、收入水平等。非结构化数据无处不在:社交媒体帖子、用户活动、文字文档、PDF文件、图像、音频和视频文件、协作软件数据、交通或地震或天气数据、GPS、军事行动、电子邮件、即时消息、移动聊天数据等等。其中一些例子,如电子邮件数据,可以被认为是半结构化的,因为电子邮件附带的标题包括电子邮件的元数据:发件人、收件人、日期、时间、主题、内容类型、垃圾邮件状态等。此外,大量重要的数据不以数字格式提供,并分散在多个不相互通信的数据库中。这里的例子包括历史军事数据、博物馆档案和医院记录。目前,我们的世界和城市数字化的势头很大,以利用更多的AI应用程序。总体而言,从结构化和标记数据中获取见解比从非结构化数据中获取见解容易。挖掘非结构化数据需要创新的技术,这些技术目前是数据科学、机器学习和人工智能领域的推动力量。

真实数据与模拟数据

当我们处理数据时,了解真实数据和模拟数据之间的区别非常重要。这两种类型的数据对于人类的发现和进步都非常有价值。

真实数据

这些数据是通过对现实世界的观察收集的,使用测量设备、传感器、调查、结构化表格(如医学问卷)、望远镜、成像设备、网站、股票市场、受控实验等手段。由于测量方法和仪器的不准确性和失效,这些数据通常是不完美且有噪声的。从数学上讲,我们并不知道生成实际数据的确切函数或概率分布,但我们可以使用模型、理论和模拟对其进行假设。然后,我们可以测试我们的模型,并最终使用它们进行预测。

模拟数据

这是使用已知函数生成的数据,或者从已知概率分布中随机抽样的数据。在这里,我们有已知的数学函数或模型,然后将数值插入模型以生成数据点。例子有很多:模拟各种自然现象的偏微分方程的数值解,这些现象涉及各种不同的尺度,例如湍流流动、蛋白质折叠、热扩散、化学反应、行星运动、断裂材料、交通等等,甚至还包括增强迪士尼电影动画,如模拟《海洋奇缘》中的自然水流动,或者《冰雪奇缘》中艾尔莎的头发运动。

在本章中,我们通过两个关于人类身高和体重数据的例子来展示真实数据和模拟数据之间的差异。在第一个例子中,我们访问一个在线公共数据库,然后下载和探索两个包含真实个体身高和体重测量的真实数据集。在第二个例子中,我们基于一个我们假设的函数模拟我们自己的身高和体重数据集:我们假设一个人的体重与他们的身高呈线性关系。这意味着当我们将体重数据与身高数据进行绘图时,我们期望看到一条直线或平坦的视觉模式。

数学模型:线性与非线性

线性依赖模型描绘了世界上的平坦性,如一维直线、二维平面(称为平面)和高维超平面。线性函数的图形,表示线性依赖关系,始终是平坦的,不会弯曲。每当你看到一个平坦的物体,如桌子、棒子、天花板或一系列数据点紧密围绕一条直线或平面时,你就知道它们的代表函数是线性的。任何不平坦的东西都是非线性的,所以图形弯曲的函数是非线性的聚集在弯曲曲线或曲面周围的数据点是由非线性函数生成的。

表示函数输出与特征或变量之间的线性依赖关系的线性函数公式非常容易写出。在公式中,特征本身不带有幂或根,也没有嵌套在函数中,如分数的分母、正弦、余弦、指数、对数或其他微积分函数。它们只能被标量(实数或复数,而非向量或矩阵)相乘,并相互相加或相减。例如,一个与三个特征 x1、x2 和 x3 线性相关的函数可以写成:

其中参数ω0、ω1、ω2 和 ω3 是标量数。 权重ω1、ω2 和 ω3 线性组合特征, 在添加偏置项ω0 后得到 f(x1, x2, x3) 的结果。 换句话说, 结果是由特征 x1、x2 和 x3 之间的线性相互作用以及偏置产生的。

表示函数输出与特征之间的非线性依赖关系的非线性函数公式也非容易识别。 一个或多个特征以 1 以外的幂出现在函数公式中, 或者与其他特征相乘或相除, 或嵌套在其他微积分函数中, 如正弦、余弦、指数、对数等。 以下是三个关于三个特征x1、x2 和 x3 的非线性函数的示例:

如您所见,我们可以提出各种非线性函数,与我们能做什么以及我们可以使用非线性相互作用对多少世界进行建模的可能性是无限的。实际上,神经网络之所以成功,是因为它们能够捕捉到数据特征之间相关的非线性相互作用。

在整本书中,我们将使用先前的符号和术语,因此您将非常熟悉线性组合、权重、特征以及特征之间的线性和非线性相互作用等术语。

一个真实数据的例子

您可以在以下两个示例中找到用于研究数据并生成图形的Python代码,这些代码位于本书的GitHub页面上。(github.com/halanelson/…)

结构化数据

我们在这里将使用的关于身高、体重和性别的两个数据集是结构化数据集的例子。它们以行和列的形式组织。列包含特征,例如体重、身高、性别、健康指数等。行包含每个数据实例的特征分数,即在这种情况下,每个人的特征分数。另一方面,一堆音频文件、Facebook帖子、图像或视频等数据集都是非结构化数据集的例子。

我从Kaggle网站下载了两个数据科学家的数据集。这两个数据集都包含了一定数量的个体的身高、体重和性别信息。我的目标是了解一个人的体重如何取决于他们的身高。从数学上讲,我想写一个将体重表示为一个特征(即身高)的函数的公式:

这样,如果有人给我一个新人的身高,我就能预测他们的体重。当然,除了身高之外,一个人的体重还取决于其他特征,比如性别、饮食习惯、锻炼习惯、遗传倾向等。然而,对于我下载的数据集,我们只有身高、体重和性别数据。除非我们想要寻找更详细的数据集,或者出去收集新数据,否则我们只能用现有的数据。此外,本例的目标仅仅是说明真实数据和模拟数据之间的区别。当我们有更复杂的目标时,我们可以处理具有更多特征的更复杂的数据集。

对于第一个数据集(oreil.ly/aaSEl) ,我将体重列与身高列绘制在图2-1中,得到的结果似乎完全没有规律!

图2-1. 当将第一个数据集的体重与身高进行绘制时,我们无法发现规律。散点图顶部和右侧的图表分别显示了身高和体重数据的直方图和经验分布。

对于第二个数据集(oreil.ly/8bE36),我做了同… 那么,这是怎么回事?为什么我的第一个真实数据集没有反映出人的身高和体重之间的任何依赖关系,而第二个数据集却反映出线性依赖关系呢?我们需要深入了解数据。

这是处理真实数据的诸多挑战之一。我们不知道是什么函数生成了数据,也不知道为什么数据呈现出这样的样子。我们调查、获取洞察、检测模式(如果有的话),然后提出一个假设函数。接着我们测试我们的假设,如果根据我们精心设计的性能度量表现良好,我们就将其部署到现实世界中。我们使用已部署的模型进行预测,直到新数据告诉我们我们的假设不再有效。在这种情况下,我们会研究更新的数据并提出新的假设。只要我们的模型还在使用,这个过程和反馈循环就会继续进行。

图2-2. 当将第二个数据集的体重与身高进行绘制时,我们观察到一个线性模式。注意,体重数据的经验分布绘制在图的右侧,身高数据的经验分布绘制在图的顶部。两者似乎都有两个峰值(双峰),这暗示了混合分布的存在。实际上,身高和体重数据集都可以用两个正态分布的混合(称为高斯混合)进行建模,代表混合男性和女性数据的底层分布。因此,如果我们单独绘制女性或男性亚群体的数据,如图2-6所示,我们会发现身高和体重数据呈正态分布(钟形)。

在继续讨论模拟数据之前,让我们解释为什么第一个数据集似乎对个体的身高和体重之间的关系没有任何见解。在进一步检查后,我们注意到该数据集中4和5分的个体过多,这些分数分别表示肥胖和极度肥胖。因此,我决定按指数得分拆分数据,并绘制所有具有相似指数得分的个体的体重与身高的关系。这一次,在图2-3中,身高和体重之间的线性依赖关系显而易见,谜团得以解开。通过根据个体的指数得分进行条件处理,这可能会让人觉得我们在作弊,追求线性关系。但在数据探索的名义下,一切都是公平的。

图2-3. 当在第一个数据集中绘制具有相似指数得分的个体的体重与身高关系时,我们观察到线性模式。此图显示了指数得分为3的个体的体重与身高关系。

现在我们可以放心地假设,体重与身高呈线性关系:

当然,我们还需要寻找合适的ω0和ω1参数值。第3章将教我们如何做到这一点。实际上,机器学习(包括深度学习)的大部分活动都是从数据中学习这些ω值。在我们这个非常简单的例子中,我们只需要学习两个ω值,因为我们只有一个特征,即身高,并且在观察到真实数据中的线性模式后,我们假设线性依赖关系。在接下来的几章中,我们将遇到一些需要学习数百万个ω值的深度学习网络,然而我们将看到,问题的数学结构实际上与我们将在第3章学到的结构完全相同。

模拟数据的一个例子

在这个例子中,我模拟了自己的身高体重数据集。模拟我们自己的数据可以避免从网络、现实世界甚至建立实验室以解决受控测量遇到的麻烦。当所需数据不可用或者获取成本非常高时,这是非常有价值的。它还可以通过仅改变函数中的数字来测试不同的情景,而不是创建新材料或建立实验室并进行新的实验。模拟数据非常方便,因为我们只需要一个数学函数,如果我们想要涉及随机性和/或噪声,还需要一个概率分布,以及一台计算机。 

让我们再次假设身高和体重之间存在线性依赖关系,所以我们将使用的函数是:

为了能够模拟数值(height, weight)对,数据点,我们必须为参数ω0和ω1假定数值。在没有从真实数据中了解到这些ω值的正确选择的情况下,我们只能根据问题的背景进行有根据的猜测,并尝试不同的值。注意,在本例中的身高体重案例中,我们碰巧拥有可以用来学习ω值的合适取值的真实数据,第3章的目标之一就是学习如何做到这一点。然而,在许多其他情况下,我们没有真实数据,所以唯一的办法就是尝试这些ω值的各种数值。

在以下模拟中,我们设置 ω0 = -314.5 和 ω1 = 7.07,因此函数变为:

现在我们可以生成尽可能多的数值(身高、体重)对。例如,将height=60代入体重函数公式,我们得到weight = -314.5 + 7.07 × 60 = 109.7。因此,我们的线性模型预测身高为60英寸的人体重为109.7磅,我们可以在身高-体重图上绘制的数据点坐标为(60,109.7)。在图2-4中,我们生成了5000个这样的数据点:我们为身高选择54至79英寸之间的5000个值,并将它们代入体重函数。我们注意到,图2-4中的图形是一条完美的直线,模拟数据中没有噪声或变化,因为我们没有将它们纳入我们的线性模型。

这是模拟数据的一个特点:它会按照生成它的函数所做的那样执行。如果我们理解了用于构建模拟的函数(称为模型),并且我们的计算不会积累太多的数值误差或失控的非常大的数值,那么我们就能理解模型生成的数据,并可以以我们认为合适的方式使用这些数据。这里没有太多的惊喜空间。在我们的例子中,我们提出的函数是线性的,所以它的方程是一条直线,如图2-4所示,生成的数据完美地落在这条直线上。

图2-4. 模拟数据:我们使用线性函数 weight = -314.5 + 7.07 × height 生成了5000个(身高,体重)点。

如果我们想模拟更真实的身高和体重数据呢?那么我们可以从人类人口身高更真实的分布中抽取身高值:钟形的正态分布!同样,我们知道我们抽样所依据的概率分布,这与真实数据的情况不同。在我们抽取身高值之后,我们将其代入体重的线性模型,然后加入一些噪声,因为我们希望模拟数据更加真实。由于噪声具有随机性质,我们还必须选择它将从哪个概率分布中抽取。我们再次选择钟形的正态分布,但我们本可以选择均匀分布来模拟均匀随机波动。我们更真实的身高体重模型变为:

我们得到了图2-5中所展示的结果。

图2-5. 模拟数据:我们使用线性函数 weight = -314.5 + 7.07 × height 生成了5000个(身高,体重)点。身高点呈正态分布,我们还加入了正态分布的噪声。请注意,图右侧和顶部的体重和身高数据的分布分别呈正态分布。这并不奇怪,因为我们在模拟中就是这样设计它们的。

现在将包含我们模拟的身高-体重数据的图2-5与包含我们使用的第二个数据集中5000名女性的真实身高-体重数据的图2-6进行比较。考虑到生成这些数据只需要五分钟的编码时间,而不是收集真实数据,这个比较还不算太糟糕!如果我们花更多时间调整我们的ω值,以及我们添加的正态分布噪声的参数(均值和标准差),我们会得到一个更好看的模拟数据集。然而,我们将在此结束这个模拟,因为很快我们的整个关注点将集中在学习我们假设模型的适当参数值上。

图2-6。真实数据:第二个数据集(oreil.ly/rZNBS)中5000…

数学模型:仿真与人工智能

我们总是可以调整我们的数学模型,使它们更接近现实。我们是设计者,所以我们决定这些模型中包含的内容。通常情况下,模型越是模仿自然,就会包含越多的数学对象。因此,在建立数学模型时,通常需要在接近现实、模型的简单性和可计算性之间进行权衡。不同的设计者会提出不同的数学模型,有些模型比其他模型更能捕捉到某些现象。随着对捕捉自然行为的探索不断深入,这些模型将不断改进和发展。值得庆幸的是,我们的计算能力在过去的几十年里得到了显著提高,使我们能够创建和测试更复杂、更真实的数学模型。

自然既细致入微又浩瀚无垠。自然中的相互作用范围从亚原子的量子领域一直到星际尺度。我们作为人类,一直在努力理解自然,捕捉其错综复杂的组成部分以及它们之间多的相互联系和相互影响。我们这样做的原因各种各样,包括对生命和宇宙起源的纯粹好奇、创造新技术、增强通信系统、设计药物和发现疾病治愈方法、建造武器和防御系统,以及前往远的星球,甚至在未来可能居住在那里。数学模型为我们提供了一种极好且几乎神奇的方法,用数字、函数、方程以及在面对不确定性时通过概率引入量化的随机性来描述自然的所有细节。计算模拟这些数学模型使我们能够研究和可视化建模系统或现象的各种简单和复杂行为。反过来,计算机模拟的洞察力有助于模型的改进和设计,同时还提供了更深入的数学见解。这种极积极的反馈循环使得数学建模和模拟成为一种不可或缺的工具,随着我们计算能力的增强,这种工具的作用得到了极大的提高。

这是宇宙的一个奥秘,即其各种现象可以用数学这种抽象语言准确地建模。而人类思维的奇迹在于能够发现和理解数学,以及构建功能强大的技术设备,这些设备适用于各种应用。同样令人印象深刻的是,这些设备在其核心上仅仅是在计算或传输数学,更具体地说,是一堆零和一。

人类能够将对简单数字的理解推广到各种规模的自然现象的数学建模和应用,这是对所学知识进行概括的一个壮观例子,也是人类智能的标志。在AI领域,通用AI(类人和超级AI)和窄AI(特定任务导向)的共同目标是泛化:AI代理将所学能力泛化到新的和未知的情境。在第三章中,我们将了解窄AI和任务导向AI的这一原则:AI代理从数据中学习,然后为新的和未见过的数据生成良好的预测。AI与数学模型和模拟交互有三种方式:

数学模型和模拟为AI系统提供训练数据。

自动驾驶汽车被一些人认为是AI的一个基准测试。在汽车的AI系统学会这些是需要避免的不利事件之前,让智能汽车原型驶下悬崖、撞上行人或撞入新的工作区将是非常不便的。在这里,使用模拟数据进行训练尤为有价值,因为模拟可以在将汽车投放到道路上之前,为汽车创造各种危险的虚拟情境进行训练。同样,模拟数据对于火星探测器、药物发现、材料设计、天气预报、航空、军事训练等领域的AI系统培训也非常有帮助。

AI增强了现有的数学模型和模拟。

AI在很多传统上对数学模型和模拟具有挑战性和限制的领域具有很大的潜力,例如学习模型中涉及的参数的适当值、适当的概率分布、离散化方程时的网格形状和大小(细网格捕捉各种空间和时间尺度的细节和微妙行为),以及将计算方法扩展到更长的时间或具有复杂形状的更大领域。诸如导航、航空、金融、材料科学、流体动力学、运筹学、分子和核科学、大气和海洋科学、天体物理学、物理和网络安全等领域都严重依赖数学建模和模拟。将AI能力整合到这些领域已经开始取得非常积极的成果。在本书后面的章节中,我们将看到AI增强模拟的例子。

AI本身就是一个数学模型和模拟。

AI的一个重大愿景是计算地复制人类智能。成功的机器学习系统,包括所有架构和变体的神经网络,都是旨在模拟人类智能相关任务的数学模型,例如视觉、模式识别和泛化、自然语言交流和逻辑推理。理解、情感体验、同情心和协作也与智能相关,并为人类的成功和统治做出了巨大贡献,因此,如果我们想实现通用AI,同时深入了解智能的本质和人脑的工作原理,我们也必须找到复制它们的方法。这些领域的努力已经在进行中。我们要牢记的是,在所有这些领域,机器所做的都是计算。机器计算文档的含义以进行自然语言处理,组合和计算数字图像像素以进行计算机视觉,将音频信号转换为数字向量并计算新音频以进行人机交互等。因此,很容易看出软件AI是一个大型数学模型和模拟。随着我们在本书的深入,这一点将变得更加明显。