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

77 阅读24分钟

我们的数据从哪里来?

当我第一次决定进入AI领域时,我想运用我的数学知识来帮助解决我热衷的现实问题。我在一个饱受战争蹂躏的国家长大,目睹了许多问题的爆发、破坏,然后最终消散或得到解决,要么是通过直接解决问题,要么是通过人际网络调整并达到全新(不稳定的)平衡。战争中常见的问题包括对不同供应链的突然和大规模破坏,对电网大部分的突然破坏,通过针对性炸毁某些桥梁而导致整个道路网络的突然瘫痪,恐怖组织网络、黑市、贩卖、通货膨胀和贫困的突然出现。在这些场景中,数学可以帮助解决的问题数目是无限的,包括战争策略和战术。我用我的数学博士学位和在大学的教职,开始接触公司、政府机构和军方,寻找具有真实数据的实际项目来开展工作。我提议免费帮助他们找到问题的解决方案。我不知道的是,获取真实数据是最大的障碍。在这方面有很多法规、隐私问题、机构审查委员会和其他障碍。即使通过了所有这些关卡,公司、机构和组织往往还是会紧紧抓住他们的数据,即使他们知道自己并没有充分利用这些数据,而几乎必须乞求才能获得真实数据。事实证明,我所经历的并非独特。同行中的许多其他人也遇到了同样的问题。

这个故事并不是要阻止您获取训练AI系统所需的真实数据。关键是不要因为在寻求所需数据的过程中遇到数据所有者的犹豫和抵制而感到惊讶和沮丧。继续寻求,总会有人愿意迈出那一步,给予信任。

有时您需要的数据可以在网上公开获取。在本章中,我使用了Kaggle网站(www.kaggle.com/) 上的数据集。还有其他很好的公共数据仓库,虽然我这里不会列出,但使用“最佳数据仓库”等关键词进行简单的搜索将会得到很好的结果。有些数据仓库专为计算机视觉设计,其他的则针对自然语言处理、音频生成和转录、科学研究等领域。

在网络上抓取数据是很常见的,但是您必须遵守所抓取网站的规定。您还需要学会如何抓取数据(有些人说数据科学家和统计学家之间的区别就是数据科学家懂得如何“黑客”技术!)。有些网站要求您在抓取之前获得书面许可。例如,如果您对社交媒体用户行为或协作网络感兴趣,可以抓取社交媒体和专业网络——Facebook、Instagram、YouTube、Flickr、LinkedIn等的用户账户统计信息,如朋友或联系人数量、点赞、评论和这些网站上的活动。最后,您将获得包含数十万条记录的非常大的数据集,然后可以在其上进行计算。

为了直观地理解数据如何融入AI以及各种系统中需要哪些类型的数据,同时避免被大量的信息和数据所压倒,有益的做法是养成探索成功AI系统所训练的数据集的习惯,如果它们是可用的话。您不必下载它们并进行处理。浏览数据集、元数据、它所附带的特征和标签(如果有)等,就足够让您熟悉数据。例如,DeepMind的WaveNet(2016)(oreil.ly/TI5N8) ,我们将在第7章中了解,是一个生成原始机器音频的神经网络,具有逼真的人声或令人愉悦的音乐。它完成了诸如将文本转换为自然 sounding 的人声音频的任务,甚至在网络被训练为这个人的声音时,可以模拟特定人的声音。当我们在第7章研究WaveNet时,我们将理解条件化的数学含义。现在,把它想象成人为地施加在问题上的限制,使其结果限制在某个结果集合内。那么,WaveNet是在什么数据上进行训练的呢?对于不依赖文本的多说话者音频生成,WaveNet使用了一个由109个不同发音者的44小时音频文件组成的数据集进行训练:CSTR Voice Cloning Toolkit(2012)(oreil.ly/lvLPX) 的英语多发音者语料库。对于将文本转换为语音,WaveNet在北美英语数据集(oreil.ly/rY4qS) 上进行训练,该数据集包含24小时的语音数据,以及在普通话数据集(oreil.ly/FGcrO) 上进行训练,该数据集包含34.8小时的语音数据。为了生成音乐,WaveNet在YouTube钢琴数据集上进行了训练,该数据集包含从YouTube视频中获取的60小时的独奏钢琴音乐,以及MagnaTagATune数据集(2009)(oreil.ly/7fnPa ) ,该数据集包括约200小时的音乐音频,每个29秒的片段都用188个标签进行标注,描述音乐的流派、配器、速度、音量、情绪以及其他各种标签。带标签的数据对AI系统非常有价值,因为它提供了一个基准,用于衡量您的假设函数的输出。我们将在接下来的几节中学习这一点。

那么著名的用于计算机视觉的图像分类AlexNet(2012)呢?它的卷积神经网络在什么数据上进行训练和测试?AlexNet是在ImageNet(oreil.ly/Yq1pJ) 上进行训练的,这是一个包含数百万张图像(从互联网上抓取)的数据集,并使用数千个类别进行标注(由众包的人类标注者)。

请注意,所有这些示例都是非结构化数据的示例。

如果某个系统所使用的训练数据并未公开提供,可以查阅该系统的已发表论文或文档,并阅读有关如何获取所需数据的信息。仅仅这一点就能教给您很多知识。 在进行数学计算之前,请牢记以下要点:

  1. AI系统需要数字化数据。
  2. 有时,您需要的数据并不容易获得。
  3. 当前存在着将整个世界数字化的趋势。

数据分布、概率和统计的术语表

当您进入一个新领域时,首先要学习的是该领域的词汇。这类似于学习一门新语言。您可以在课堂上学习并努力适应,或者您可以去一个说这种语言的国家,倾听那里经常使用的词汇。您不必知道法语中“bonjour”的意思。但是当您在法国时,您会注意到人们总是彼此这样打招呼,所以您也开始这样说。有时候您可能不会在正确的场合使用它,例如在需要说“bonsoir”而不是“bonjour”的时候。但是慢慢地,当您在法国逗留时间变长时,您会在正确的场合使用正确的词汇。

尽快学习词汇的另一个优势,无需掌握所有细节,是因为不同领域会用不同的术语来表示相同的概念,导致大量的词汇冲突。这最终成为了一个巨大的混淆来源,因此是语言障碍的体现。当您学习该领域的通用词汇时,您会意识到您可能已经了解这些概念,只是现在为它们起了新的名字。

在AI应用中,您需要了解的概率和统计词汇并不多。我们在使用每个术语时,我将进行定义,但请注意,概率论的目标是对随机或随机量和事件做出确定性的陈述,因为人类讨厌不确定性,喜欢可控制和可预测的世界。在阅读关于AI、机器学习或数据科学的内容时,请注意概率和统计领域的以下词汇。同样,您现在还不必了解这些定义;您只需要听到接下来的章节中讨论的术语,并熟悉它们相互之间的演变方式。

随机变量

一切都始于随机变量。数学家们不停地谈论函数。函数具有确定的或确定性的结果。当你计算一个函数时,你知道它将返回什么值。在3处计算函数x^2,你确定会得到3^2 = 9。另一方面,随机变量没有确定性的结果。它们的结果是不确定的、不可预测的或随机的。当你调用一个随机变量时,在实际看到结果之前,你不知道它会返回什么值。由于你不能再追求确定性,你可以追求的是量化获得某个结果的可能性。例如,当你掷一个骰子时,你可以自信地说,得到4的概率是1/6,假设你掷的骰子没有被篡改。在实际掷骰子之前,你永远不知道你会得到什么结果。如果你知道,那么赌场就会破产,金融行业将消除其整个预测分析和风险管理部门。与确定性函数一样,随机变量可以从离散集合(离散随机变量)或连续集合(连续随机变量)返回结果。随机变量与函数之间的关键区别在于结果的随机性与确定性。

概率分布

在定义随机变量之后,我们为连续随机变量定义概率密度函数,为离散随机变量定义概率质量函数。我们将这两者都称为分布,以免混淆。通常,从上下文中可以理解分布是表示离散还是连续随机变量。使用这个术语,我们有时会说一个随机变量(无论是连续的还是离散的)是从概率分布中抽样的,多个随机变量是从联合概率分布中抽样的。在实践中,我们很少知道所有涉及到我们数据的随机变量的完整联合概率分布。当我们确实知道,或者我们能够从数据中学习到它时,这是非常有力的。

边际概率

边际概率分布实际上位于联合概率分布的边缘(如果我们用包含所涉及变量的所有组合状态的概率的表来表示联合概率分布;例如,请参阅此维基百科页面上的第一个表格(oreil.ly/11WiO) 。在这种情况下,很幸运地可以获得多个随机变量的完整联合概率分布,而你只对其中一个或少数几个的概率分布感兴趣。你可以使用概率和规则很容易地找到这些边际概率分布,例如:

均匀分布和正态分布

均匀分布和正态分布是最常见的连续分布,所以我们从它们开始。正态分布与概率论中的基本中心极限定理密切相关。还有许多其他有用的分布可以表示我们数据中涉及的不同随机变量,但我们暂时不需要它们,所以我们推迟到需要使用它们的时候再介绍。

条件概率与贝叶斯定理

当我们开始处理多个随机变量(例如我们的性别、身高、体重和健康指数数据)时,这几乎总是会引入条件概率、贝叶斯定理以及条件概率的乘积或链式规则,同时还涉及到独立和条件独立随机变量的概念(知道其中一个的值不会改变另一个的概率)。

条件概率与联合分布

条件概率和联合分布都涉及多个随机变量,所以它们之间有一定的关联是合理的。当我们固定其中一个变量的值时,对联合概率分布图进行切片,我们将得到一个条件概率分布(稍后请参阅图2-7)。

贝叶斯规则与联合概率分布的对比

保持以下几点非常重要:如果我们碰巧能够获得我们关心的所有多个随机变量的完整联合概率分布,那么我们就不需要贝叶斯定理。换句话说,当我们无法获得所涉及的随机变量的完整联合概率分布时,贝叶斯定理可以帮助我们计算所需的条件概率。

先验分布,后验分布和似然函数

从逻辑和数学的角度来看,我们可以定义条件概率,然后顺利地进行计算。然而,实践者根据他们是基于已观测到的数据还是仍需要估计的权重(也称为参数)来为不同的条件概率命名。这里的词汇包括:先验分布(在观测到任何数据之前,我们模型权重的一般概率分布)、后验分布(给定观测数据时权重的概率分布)以及似然函数(给定特定权重分布下观测到数据点的概率的函数)。所有这些都可以通过贝叶斯定理以及联合分布相互联系起来。

我们说的是似然函数,而不是似然分布。

我们将似然称为函数而不是分布,因为概率分布必须加起来等于一(如果我们处理的是连续随机变量,则必须积分为一),但似然函数并不一定加起来等于一(在连续随机变量的情况下也不一定积分为一)。

分布混合

我们可以混合概率分布并生成分布混合。高斯混合相当著名。早先包含男性和女性身高测量数据的身高数据就是一个很好的高斯混合例子。**
**

随机变量的和与积

我们可以将来自简单分布的随机变量相加或相乘,以产生具有更复杂分布的新随机变量,代表更复杂的随机事件。通常在这里要研究的自然问题是:和随机变量或积随机变量的分布是什么?**
**

使用图表表示联合概率分布

最后,我们使用有向和无向图表示法(图表)来高效地分解联合概率分布。这使得我们的计算工作变得更加简便和易处理。**
**

期望、均值、方差和不确定性

四个量在概率、统计和数据科学中至关重要:期望均值,用来量化平均值;方差标准差,用来量化围绕平均值的分布,从而表示不确定性。我们的目标是控制方差,以减少不确定性。方差越大,使用平均值进行预测时可能犯的错误就越多。因此,在研究这个领域时,你会发现数学陈述、不等式和定理大多涉及对任何涉及随机性的量的期望和方差的控制。**
**

当我们有一个具有相应概率分布的随机变量时,我们计算期望(预期平均结果)、方差(预期平均值的平方距离)和标准差(预期平均值的距离)。对于已经抽样或观测到的数据,例如我们上面的身高和体重数据,我们计算样本均值(平均值)、方差(与均值的平均平方距离)和标准差(与均值的平均距离,因此这个度量的是围绕均值的分布)。所以,如果我们关心的数据尚未抽样或观测,我们用期望的语言来推测它,但如果我们已经有了观测或测量的样本,我们计算它的统计量。当然,我们对我们的推测与我们为观测数据计算出的统计量有多大的偏差感兴趣,以及在限制性(但理想化)情况下,我们实际上可以为整个人口测量数据时会发生什么。大数定律为我们解答了这个问题,并告诉我们,在这种限制情况下(当样本容量趋于无穷大时),我们的期望与样本均值相匹配。

协方差和相关性

当我们有两个或更多随机变量时,我们计算协方差、相关性和协方差矩阵。这时,线性代数领域的向量、矩阵和矩阵分解(如特征值和奇异值分解)语言与概率和统计领域结合在一起。每个随机变量的方差位于协方差矩阵的对角线上,每个可能的变量对的协方差位于对角线之外。协方差矩阵是对称的。当你使用标准线性代数技巧对其进行对角化时,你会解除所涉及的随机变量之间的相关性。

与此同时,我们暂停一下,确保我们了解独立性和零协方差之间的区别。协方差和相关性都是关于捕捉两个随机变量之间的线性关系。相关性作用于归一化的随机变量,这样即使随机变量或数据测量具有非常不同的尺度,我们仍然可以检测到线性关系。当你对一个量进行归一化时,它的尺度就不再重要了。无论它是以百万为单位进行测量,还是以0.001为单位进行测量,都无关紧要。协方差作用于未归一化的随机变量。生活并非都是线性的。独立性比零协方差更强。**
**

马尔可夫过程

马尔可夫过程对于人工智能的强化学习范式非常重要。它们的特点是系统的所有可能状态、代理可以执行的所有可能动作(向左移动、向右移动等)的集合、包含所有状态之间转换概率的矩阵、代理在采取某个动作后将转换到哪些状态的概率分布,以及我们想要最大化的奖励函数。人工智能中两个流行的例子包括棋盘游戏和智能恒温器,如Nest。我们将在第11章中详细讨论这些。**
**

归一化、缩放和/或标准化随机变量或数据集

这是许多词汇冲突的例子之一。在不同的语境中,归一化、缩放和标准化被同义使用。目标总是相同的。从数据或随机变量的所有可能结果中减去一个数(平移),然后除以一个常数(缩放)。如果你从数据样本的均值(或随机变量的期望)中减去,并除以它们的标准差,那么你将得到新的标准化或归一化的数据值(或新的标准化或归一化的随机变量),其均值等于零(或期望为零)和标准差等于一。如果你减去最小值并除以范围(最大值减去最小值),那么你将得到新的数据值或一个新的随机变量,其结果在零和一之间。有时我们谈论归一化数字向量。在这种情况下,我们的意思是我们将向量中的每个数除以向量本身的长度,这样我们就可以得到一个长度为一的新向量。所以无论我们说我们是在归一化、缩放还是标准化一组数字,目标都是试图控制这些数字的值,使它们围绕零居中,并/或限制它们的扩散小于或等于一,同时保留它们固有的变异性。**
**

常见示例

数学家喜欢用抛硬币、掷骰子、从罐子里抽球、从牌堆里抽牌、火车到达车站、顾客拨打热线、顾客点击广告或网站链接、疾病及其症状、刑事审判和证据以及某事发生的时间(如机器故障)等来表达概率概念。不要对这些例子随处可见感到惊讶,因为它们可以很好地推广到许多其他现实生活中的情况。**
**

除了概率论的这个框架,我们将借用很少的术语和功能从统计力学(例如,配分函数)和信息理论(例如,信号与噪声、熵和交叉熵函数)。当我们在后面的章节中遇到它们时,我们将对这些进行解释。

连续分布与离散分布(密度与质量)

当我们处理连续分布时,使用诸如在某个值附近或周围观察或抽样数据点这样的术语非常重要,而不是观察或抽样确切的值。实际上,在这种情况下观察到确切值的概率是零。

当我们处理连续数值时,一个值与下一个值之间没有离散的间隔。实数具有无限的精度。例如,如果我测量一个男性的身高,得到 6 英尺,我无法确定我的测量结果是恰好为 6 英尺、6.00000000785 英尺,还是 5.9999111134255 英尺。最好是将我的观察结果设置在 6 英尺附近的一个区间内,例如 5.95 < 身高 < 6.05,然后量化观察到身高在 5.95 到 6.05 英尺之间的概率。

对于离散随机变量,我们没有这样的担忧,因为我们可以轻松地将各种可能的值彼此分开。例如,当我们掷骰子时,可能的值是 1、2、3、4、5 或 6。所以我们可以自信地断言,掷出恰好为 5 的概率是 1/6。此外,离散随机变量可以具有非数字结果;例如,当我们翻硬币时,可能的值是正面或反面。而连续随机变量只能有数值结果。

正因为如此,当我们有一个连续随机变量时,我们定义它的概率密度函数,而不是像离散随机变量那样定义概率质量函数。密度指定在某个长度、面积或体积的空间内(取决于我们所处的维度)存在多少物质。要找到指定区域内物质的质量,我们将密度乘以考虑区域的长度、面积或体积。如果我们得到的是一个无限小区域的密度,那么我们必须在整个区域内积分以找到该区域内的质量,因为积分类似于对无限多个无限小区域的求和。

我们将在第11章详细阐述这些概念并对它们进行数学形式化。现在,我们强调以下几点:

如果我们只有一个连续随机变量,比如某个人群中男性的身高,那么我们使用一维概率密度函数来表示其概率分布:f(x1)。要找到身高在 5.95 < 身高 < 6.05 之间的概率,我们对概率密度函数 f(x1) 在区间 (5.95, 6.05) 上进行积分,并写作:

如果我们有两个连续随机变量,如某个人群中男性的身高和体重,或一个人的真实身高和测量身高(通常包括随机噪声),那么我们使用二维概率密度函数来表示它们的联合概率分布:f(x1, x2)。因此,为了找到身高在 5.95 < 身高 < 6.05 和体重在 160 < 体重 < 175 之间的联合概率,我们对联合概率密度函数 f(x1, x2) 进行双重积分,假设我们知道 f(x1, x2) 的公式,在区间 (5.95, 6.05) 和 (160,175) 上进行积分,我们写作:

如果我们有多于两个连续随机变量,那么我们使用高维概率密度函数来表示它们的联合分布。例如,如果我们有某一人群中男性的身高、体重和血压,那么我们使用一个三维联合概率分布函数:f(x1, x2, x3)。与之前解释的推理类似,要找到第一个随机变量在 a < x1 < b,第二个随机变量在 c < x2 < d,第三个随机变量在 e < x3 < f 的联合概率,我们对联合概率密度函数在区间 (a,b)、(c,d) 和 (e,f) 上进行三重积分,并写为:

即使在为连续随机变量定义概率密度函数之后,我们对于事物能否在数学上加起来的担忧也并没有完全消除。同样,罪魁祸首是实数的无限精度。如果我们允许所有集合都具有概率,我们就会遇到悖论,即我们可以构造不相交的集合(如分形形状的集合或通过转换有理数集合而形成的集合),这些集合的概率加起来超过了1!我们必须承认这些集合是病态的,必须由一个手头有足够时间的人仔细构建;然而,它们确实存在,并且产生了悖论。数学中的测度论介入并提供了一个数学框架,我们可以在其中使用概率密度函数,而不会遇到悖论。它定义了零测度集(它们在我们所处理的空间中占用的体积为零),然后为我们提供了大量的定理,使我们能够几乎在所有地方进行计算,也就是说,除了零测度集之外。这对于我们的应用来说已经足够了。

联合概率密度函数

拥有许多随机变量的联合概率分布是一种强大但罕见的事情。原因在于联合概率分布在其中编码了每个独立随机变量的概率分布(边际分布),以及我们在这些随机变量之间遇到的所有可能的共同出现(和条件概率)。这就像从高处俯瞰整个城镇,而不是待在城镇里仅观察两条或更多小巷之间的一个交叉点。

如果随机变量是独立的,那么联合分布就是它们各自的独立分布的乘积。然而,当随机变量不是独立的,例如一个人的身高和体重,或者一个人的观测身高(包括测量噪声)和一个人的真实身高(不包括噪声),获取联合分布就变得更加困难和存储昂贵。在依赖随机变量的情况下,联合分布是不可分的,所以我们不能只存储它的各个部分。我们需要存储两个或更多变量之间的每个共现值。随着依赖随机变量数量的增加,存储要求(以及计算或搜索空间)呈指数增加,这是臭名昭著的维数灾难的一种体现。

当我们切割一个联合概率密度函数,比如 f(x1, x2),也就是说当我们固定其中一个随机变量(或更高维度中的更多变量)为一个确切值时,我们会得到一个与后验概率分布(给定观测值的模型参数的概率分布)成比例的分布,这通常是我们感兴趣的。例如,在 x1 = a 处切割 f(x1, x2),我们得到 f(a, x2),恰好与概率分布 f(x2|x1 = a) 成比例(见图 2-7)。

图 2-7. 切割联合概率分布

再次强调,这是在我们知道联合概率分布的理想情况下,否则,我们使用贝叶斯定理来获得相同的后验概率分布(使用先验分布和似然函数)。

在某些AI应用中,AI系统通过将联合概率分布分解为条件概率的乘积来学习联合概率分布,这是利用概率的乘积法则。一旦学会了联合分布,它就会从中进行抽样以生成新的有趣数据。DeepMind的WaveNet在生成原始音频的过程中就是这样做的。

接下来的部分将介绍AI应用中最常用的概率分布。两个无处不在的连续分布是均匀分布和正态分布(也称为高斯分布),因此我们从这里开始。请参阅Jupyter笔记本(github.com/halanelson/…) 以重现图形和更多详细信息。