当前位置:   article > 正文

Bishop新著 - 深度学习:基础与概念 - 第一章 - 深度学习革命_deep learning bishop

deep learning bishop

《Deep Learning: Foundations and Concepts》系机器学习领域大神Christopher Bishop的最新力作,于2023年11月由Springer出版社出版。Bishop是微软剑桥研究实验室主任、微软技术院士(Microsoft Technical Fellow), 爱丁堡大学计算机教授, 英国皇家工程院院士, 同时也是经典巨著《Pattern Recogition and Machine Learning》(简称PRML,被许多机器学习研究者奉为AI圣经) 的作者。
.
前序章节回顾:

在这里插入图片描述

深度学习革命

机器学习目前是技术领域中最重要、发展最快的领域之一。机器学习的应用已经无处不在,从数据中学习的解决方案正在逐步取代传统的手工设计的算法。这不仅改进了现有技术的性能,也为前所未有的、无法通过手动设计新算法实现的大量新能力打开了大门。

机器学习的一个特定分支,称为深度学习,已经证明自己是一个异常强大而通用的从数据中学习的框架。深度学习基于称为神经网络的计算模型,这些模型最初是受人脑的学习和信息处理机制的启发。人工智能领域,或AI,寻求在机器中重现大脑的强大能力,今天机器学习和AI这两个术语通常可以互换使用。当前使用的许多AI系统代表了机器学习的应用,这些应用被设计以解决非常具体和有针对性的问题,虽然它们非常有用,但与人脑的巨大能力相比,仍然差得很远。这导致了“通用人工智能(artificial general intelligence, AGI)”这个术语的引入,它描述的是构建具有更大的灵活性机器的抱负。在几十年的稳步发展之后,机器学习现在进入了快速发展的阶段。最近,称为大语言模型(large language models,LLM)的大规模深度学习系统开始展示出了令人称奇的能力,这些能力已经被描述为通用人工智能的指征。

深度学习的影响

我们从四个例子开始讨论机器学习,这些例子来自不同的领域,用以说明这项技术的巨大适用性,并引入一些基本概念和术语。值得注意的是,这些例子以及许多其他例子都使用了同样的深度学习基本框架的不同变体来解决问题。这与传统方法形成了鲜明对比,后者使用了广泛不同且专门的技术来解决不同的应用。需要强调的是,我们选择的示例只代表了深度神经网络适用性范围的一小部分,几乎每个计算起作用的领域都适合深度学习的变革性影响。

医学诊断

首先考虑将机器学习应用于皮肤癌诊断的问题。黑色素瘤是最危险的一种皮肤癌,但是如果及早发现,是可以治愈的。图1.1显示了皮损的示例图像, 第一行为恶性黑色素瘤,最后一行为良性痣。区分这两类图像显然非常具有挑战性,几乎不可能用手写算法成功分类这样的图像且有任何合理的准确度。
在这里插入图片描述

这个问题已经成功地使用深度学习解决(Esteva等,2017)。解决方案是使用称为训练集的大量病损图像集创建的,其中每个图像都被标记为恶性或良性,这些标签是从可以提供病损真实类别的活检测试获得的。训练集用于确定大约2500万个可调参数的值,这些参数称为权重,存在于深层神经网络中。从数据确定参数值的过程称为学习(Learning)或训练(Training)。目标是训练后的网络能够仅从图像本身预测新损伤的正确标签,而不需要进行时间消耗大的活检步骤。这是一个有监督学习(supervised learning)问题的示例,因为对于每个训练示例,网络都会被告知正确的标签。这也是一个分类(classification)问题的示例,因为每个输入必须被赋予一组离散的类标签(在本例中是良性或恶性)。输出由一个或多个连续变量组成的应用称为回归(regression)问题。回归问题的一个例子是预测化学制造过程中的产量,其中输入包括温度、压强和反应物的浓度。

这个应用的一个有趣的方面是,可用的标记训练图像的数量,大约12.9万,被认为相对较小,因此深层神经网络首先在128万张日常物体(如狗、建筑和蘑菇)的图像上进行了训练,然后在皮损图像数据集上进行了微调(fine-tuned)。这是迁移学习(transfer learning)的一个例子,其中网络从大量日常物体数据集中学习常规自然图像的属性,然后专门适应皮损分类的特定问题。通过使用深度学习,皮肤病变图像的分类达到了超过专业皮肤科医生的准确度的水平(Brinker等,2019)。

蛋白质结构

蛋白质有时被称为生物体的构建模组(building blocks)。它们是由称为氨基酸的单元组成的一条或多条长链组成的生物分子,氨基酸有22种不同类型,蛋白质由氨基酸序列决定。一旦蛋白质在活细胞内合成,它就会折叠成一个复杂的三维结构,其行为和交互作用在很大程度上由其形状决定。给定氨基酸序列计算三维结构,这在生物学领域是一个基础性的半个世纪的未解之谜,直到深度学习出现之前进展相对较少。

三维结构可以使用X射线晶体学、低温电子显微镜或核磁共振谱等技术来实验测量。但是,对某些蛋白质来说,这可能非常耗时,例如,由于难以获得纯净的样本(sample),或者由于结构依赖于上下文(context)。相比之下,蛋白质的氨基酸序列可以以更低的成本和更高的通量(throughput)实验测定。因此,如果能够直接从氨基酸序列预测蛋白质的三维结构,以更好地理解生物过程或用于实际应用,如药物发现,将具有相当大的意义。深度学习模型可以训练输入氨基酸序列并生成三维结构作为输出,其中训练数据由一组蛋白质组成,这些蛋白质已经知道氨基酸序列和三维结构。蛋白质结构预测因此是有监督学习的另一个示例。一旦系统经过训练,它可以将新的氨基酸序列作为输入,并预测相关的三维结构(Jumper等,2021)。图1.2比较了蛋白质的预测三维结构和通过X射线晶体学获得的真实结构。
在这里插入图片描述

图像合成

在我们迄今讨论的两个应用中,神经网络学习将输入(皮肤图像或氨基酸序列)转换为输出(病变分类或蛋白质三维结构)。我们现在考虑一个示例,其中训练数据只由一组样本图像组成,训练网络的目标是创建同类的新图像。这是一个无监督学习(unsupervised learning)的示例,因为图像没有标签,与病变分类和蛋白质结构的示例相反。图1.3显示了在录影棚中拍摄的一组人脸图像上训练的深度神经网络生成的合成图像示例。这样的合成图像质量异常高,很难将它们与真人的照片区分开来。
在这里插入图片描述

这是一个生成模型(*generative model *)的示例,因为它可以生成与用于训练模型的样本不同的新输出示例,但却具备相同的统计属性。这种方法的一个变体允许根据称为提示(prompt)的文本字符串输入生成图像,以便图像内容反映文本输入的语义。生成式AI(generative AI)这个词用来描述生成图像、视频、音频、文本、候选药物分子或其他模态输出的深度学习模型。

大语言模型 (LLM)

最近几年机器学习中最重要的进展之一是开发了强大的自然语言和其他序列数据(如源代码)处理模型。大语言模型(LLM)使用深度学习构建内在表征,捕捉语言的语义特性。自回归语言模型(autoregressive language models)是一种重要的大语言模型,可以生成语言输出,因此它们是一种生成型AI。这种模型以单词序列为输入,输出代表序列中下一个词的单词作为输出。加入新词的增广序列(augumented sequence)可以再次馈送到模型中以生成后续词,这个过程可以重复地生成长序列的词。这种模型还可以输出一个特殊的“停止”词来作为文本生成终止的信号,从而允许它们输出有限长度的文本,然后停止。用户可以将自己的一系列词附加到序列之前,然后将完整的序列反馈到模型中以触发进一步的词生成。通过这种方式,人类可以与神经网络进行对话。

**通过从文本中提取成对的训练数据: 随机选择的单词序列作为输入,已知的下一个词作为目标输出,可以在大量文本数据上训练这种模型。这是一种自监督学习(self-supervised learning)的例子,其中学习了从输入到输出的函数, 带标签的输出不需要单独的人工标记,而是从输入训练数据中自动获得的。**由于大量文本可以从多个来源获得,这种方法允许扩展到非常大规模的训练集和对应的大型神经网络。

大语言模型可以展现令人惊讶的能力,这些能力已被描述为新兴的通用人工智能(AGI)的最初表征(Bubeck et al., 2023),我们将在书中详细讨论这种模型。在下一页,我们将展示一个基于GPT-4模型(OpenAI, 2023)进行语言生成的示例, 示例对应的输入提示为: “Write a proof of the fact that there are infinitely many primes; do it in the style of a Shakespeare play through a dialogue between two parties arguing over the proof.”。
在这里插入图片描述

教程示例

对于机器学习领域的新手来说,许多基本概念和大部分术语都可以在一个简单的例子中介绍,其涉及使用多项式拟合一个小的合成数据集。这是一种有监督学习问题,我们希望在给定输入变量值的情况下进行目标变量的预测。

合成数据

我们用 x x x表示输入变量, t t t表示目标变量,并且假设两个变量都取实数轴上的连续值。假设我们有一个训练集,包含 x x x N N N个观测(observation),表示为 x 1 , . . . , x N x_1, ..., x_N x1,...,xN,以及相应的 t t t值的观测 t 1 , . . . , t N t_1, ..., t_N t1,...,tN。我们的目标是对某些新值 x ^ \hat{x} x^预测目标变量 t ^ \hat{t} t^的值。基于以前未见过的输入进行准确预测的能力是机器学习的一个关键目标,称为泛化(generalization)

我们可以通过从正弦函数中进行抽样来说明这一点。图1.4显示了一个由 N = 10 N=10 N=10个数据点组成的训练集的绘制,其中输入值 x n x_n xn(对 n = 1 , . . . , N n=1,...,N n=1,...,N)被均匀分布在 [ 0 , 1 ] [0,1] [0,1]范围内选择。对应的目标数据值是首先计算每个 x x x的函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)的值获得的,然后将小的随机噪声(由高斯分布控制)添加到每个这样的点中以获得相应的目标值 t n t_n tn。通过这种方式生成数据,我们捕获了许多真实世界数据集的一个重要特性:即它们具有我们希望学习的潜在规律性,但单个观测结果被随机噪声扰乱。这种噪声可能源于本质上随机(stachastic or random)过程,例如放射性衰变,但更常见的是由于存在本身未被观察到的变异源

在这个教程示例中,我们知道生成数据的真实过程,即正弦函数。在机器学习的实际应用中,我们的目标是根据有限的训练集发现数据中的潜在趋势。然而,知道生成数据的过程使我们能够说明机器学习中的重要概念。
在这里插入图片描述

线性模型

我们的目标是利用这个训练集来预测某些新值 x ^ \hat{x} x^的目标变量值 t ^ \hat{t} t^。正如我们稍后将看到的,这涉及隐式地试图发现潜在的函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)。由于我们必须从有限的数据集推广到整个函数,所以这本质上是一个困难的问题。此外,观察到的数据被噪声损坏,因此对于给定的 x ^ \hat{x} x^, t ^ \hat{t} t^的适当值存在不确定性。概率论(Probability theory)为以精确和定量的方式表达这种不确定性提供了一个框架,而决策论(decision theory)则允许我们利用这种概率表示根据适当标准来做出最佳预测。从数据中学习概率是机器学习的核心,这本书将对此进行深入探讨。

我们将相当非正式地考虑一种简单的方法,该方法基于曲线拟合。特别是,我们将使用多项式函数的形式来拟合数据:

y ( x , w ) = w 0 + w 1 x + w 2 x 2 + . . . + w M x M = ∑ j = 0 M w j x j (1.1) y(x,\mathbf{w})=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum\limits_{j=0}^M w_j x^j \tag{1.1} y(x,w)=w0+w1x+w2x2+...+wMxM=j=0Mwjxj(1.1)

其中 M M M是多项式的阶, x j x^j xj表示 x x x j j j次幂。多项式系数 w 0 , . . . , w M w_0,...,w_M w0,...,wM统称为向量 w \mathbf{w} w。请注意,尽管多项式函数 y ( x , w ) y(x,\mathbf{w}) y(x,w) x x x的非线性函数,但它是系数 w \mathbf{w} w的线性函数。这种多项式这样的函数称为线性模型,它们具有重要的特性和显著的局限性。

误差函数

系数值将通过将多项式拟合到训练数据来确定。这可以通过最小化误差函数来完成,该误差函数测量任何给定 w \mathbf{w} w值的函数 y ( x , w ) y(x,\mathbf{w}) y(x,w)与训练数据集之间的不匹配程度。一个简单的选择是目标值 t n t_n tn和对应数据点 x n x_n xn处的预测值 y ( x n , w ) y(x_n,\mathbf{w}) y(xn,w)之间差值的平方和,给定为

E ( w ) = 1 2 ∑ n = 1 N { y ( x n , w ) − t n } 2 (1.2) E(\mathbf{w})=\frac{1}{2}\sum_{n=1}^N\{y(x_n,\mathbf{w})-t_n\}^2 \tag{1.2} E(w)=21n=1N{y(xn,w)tn}2(1.2)

这里的 1 2 \frac{1}{2} 21因子是为了后面方便。我们后面会从概率论中导出这个误差函数。这里我们只注意到它是一个非负数量,当且仅当函数 y ( x , w ) y(x,\mathbf{w}) y(x,w)恰好穿过每个训练数据点时为零。图1.5说明了平方和误差函数的几何解释。
在这里插入图片描述
我们可以通过选择使得 E ( w ) E(\mathbf{w}) E(w)尽可能小的 w \mathbf{w} w值来解决曲线拟合问题。 由于误差函数是系数 w \mathbf{w} w 的二次函数,因此其关于系数的导数在 w \mathbf{w} w 的元素中将是线性的,因此误差函数的最小化具有唯一解,可通过闭式解求得,记为 w ⋆ \mathbf{w}^{\star} w。 结果多项式由函数 y ( x , w ⋆ ) y(x, \mathbf{w}^{\star}) y(x,w)给出。

模型复杂度

仍然存在选择多项式阶数 M M M的问题,我们将看到这将成为一个重要的概念,称为模型比较(Model comparison)模型选择(Model selection)。在图1.6中,我们展示了阶数分别为 M = 0 , 1 , 3 M=0,1,3 M=0,1,3和9的多项式拟合到图1.4中的数据集的四个示例。
在这里插入图片描述

请注意,常量( M = 0 M=0 M=0)和一阶( M = 1 M=1 M=1)多项式与数据的拟合不佳,因此是函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)的糟糕表示。三阶( M = 3 M=3 M=3)多项式似乎给出了sin(2πx)的最佳拟合。当我们使用非常高阶的多项式( M = 9 M=9 M=9)时,我们获得了训练数据的绝佳拟合。事实上,9阶多项式恰好经过每个训练数据点且使得 E ( w ⋆ ) = 0 E(\mathbf{w}^{\star}) = 0 E(w)=0。然而,拟合的曲线剧烈振荡,对函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)的表示非常差。 后一种行为称为过拟合(over-fitting)

我们的目标是通过对新数据进行准确预测来实现良好的泛化。我们可以通过考虑一个单独的数据集,称为测试集(test set),来获得对泛化性能与 M M M依赖性的定量洞察。测试集由使用与生成训练集中数据点相同的过程生成的100个数据点组成。对于每个 M M M值,我们可以评估训练数据上由(1.2)给出的残差值 E ( w ⋆ ) E(\mathbf{w}^{\star}) E(w),我们也可以针对测试数据集评估 E ( w ⋆ ) E(\mathbf{w}^{\star}) E(w)。相对于直接评估误差函数 E ( w ) E(\mathbf{w}) E(w),有时使用如下定义的均方根误差(root-mean-square,RMS)更方便:

E R M S = 1 N ∑ n = 1 N { y ( x n , w ) − t n } 2 (1.3) E_{RMS}=\sqrt{\frac{1}{N}\sum_{n=1}^{N}\{y(x_n,\mathbf{w})-t_n\}^2} \tag{1.3} ERMS=N1n=1N{y(xn,w)tn}2 (1.3)

其中除以 N N N允许我们在平等的基础上比较不同大小的数据集,而平方根确保 E R M S E_{RMS} ERMS与目标变量 t t t测量在相同的量度尺度(和相同的单位)上。训练数据集和测试数据集对于 M M M不同值的RMS误差如图1.7所示。测试集误差是我们在预测新数据的 t t t值方面表现的一个测度。从图1.7中注意,小的 M M M值给出了相对较大的测试集误差,这可以归因于相应的多项式相当缺乏灵活性,无法捕捉函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)中的振荡。 M M M值在范围3 ≤ M M M ≤ 8给出较小的测试集误差,这些也给出了生成函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)的合理表示,如图1.6中的 M = 3 M=3 M=3所示。

在这里插入图片描述
对于 M = 9 M=9 M=9,训练集误差变为零,正如我们所料,因为这个多项式包含10个自由度,对应于10个系数 w 0 w_0 w0,…, w 9 w_9 w9,因此可以确切地调整到训练集中的10个数据点。然而,测试集误差变得非常大,如我们在图1.6中所看到的,相应的函数 y ( x , w ⋆ ) y(x,\mathbf{w}^{\star}) y(x,w)表现出了明显的震荡。

这似乎有悖论,因为给定阶的多项式包含所有低阶多项式作为其特例。因此, M = 9 M=9 M=9的多项式能够产生至少与 M = 3 M=3 M=3多项式一样好的结果。 此外,我们可能会认为,新数据的最佳预测器将是生成数据的函数 sin ⁡ ( 2 π x ) \sin(2\pi x) sin(2πx)(我们将看到这确实是正确的)。我们知道sin(2πx)函数的幂级数展开包含所有阶次的项,因此我们可能期望随着M的增加,结果应单调改善。

我们可以通过检查各种阶数多项式的系数 w ⋆ \mathbf{w}^{\star} w的值得出一些洞见4,如表1.1所示。我们看到,随着 M M M的增加,系数的大小通常会变大。特别是对于 M = 9 M=9 M=9的多项式,系数已经精细拟合到数据。它们有很大的正负值,以便相应的多项式函数与每个数据点完全匹配,但是在数据点之间(特别是在范围的末端附近)函数表现出在图1.6中观察到的大震荡。直观地说,更灵活的多项式所发生的事情是 M M M较大的值越来越适应目标值上的随机噪声
在这里插入图片描述

通过检查学习得到的模型随数据集大小变化的行为,可以进一步深入了解这种现象,如图1.8所示。我们看到,对于给定的模型复杂度,过拟合问题随着数据集大小的增加而变得不那么严重。

在这里插入图片描述

另一种说法是,有了更大的数据集,我们就可以为数据拟合更复杂(换句话说更灵活)的模型。 经典统计学中有时提倡的一种粗略启发式(heuristic)是:数据点的数量应不少于模型中可学习参数数量的某个倍数(例如 5 或 10)。 然而,当我们在本书后面讨论深度学习时,我们会发现使用参数明显多于训练数据点数量的模型可以获得出色的结果。

正则化

必须根据可用训练集的大小限制模型中参数的数量,这一点是相当令人不满的。根据解决问题的复杂性来选择模型的复杂度似乎更为合理。一种常用的控制过拟合现象的技术,作为限制参数数量的替代方法,是正则化(regularization),它涉及向误差函数(1.2)添加惩罚项以防止系数具有较大的幅度。最简单的这样的惩罚项可以是所有系数的平方和, 这将得到如下的修改后的误差函数形式:

E ~ ( w ) = 1 2 ∑ n = 1 N { y ( x n , w ) − t n } 2 + λ 2 ∣ ∣ w ∣ ∣ 2 (1.4) \tilde{E}(w)=\frac{1}{2}\sum_{n=1}^{N}\{y(x_n,\mathbf{w})-t_n\}^2+\frac{\lambda}{2}||\mathbf{w}||^2 \tag{1.4} E~(w)=21n=1N{y(xn,w)tn}2+2λ∣∣w2(1.4)

其中 ∣ ∣ w ∣ ∣ 2 ≡ w T w = w 0 2 + w 1 2 + . . . + w M 2 ||\mathbf{w}||^2≡\mathbf{w}^T\mathbf{w}=w_0^2+w_1^2+...+w_M^2 ∣∣w2wTw=w02+w12+...+wM2,且系数 λ \lambda λ控制正则化项与平方和误差项的相对重要性。请注意,由于其引入会导致结果依赖于目标变量(起点)的选择,因此常常省略系数 w 0 w_0 w0 (Hastie, Tibshirani, and Friedman, 2009)。同样,误差函数在(1.4)中可以精确地以封闭形式最小化。统计学文献中称这种技术为shrinkage方法, 因为它们减小了系数的值。在神经网络的背景下,这种方法称为权值衰减(weight decay),因为神经网络中的参数称为权值(weights),这种正则化器鼓励它们衰减到零。

图1.9展示了 M = 9 M=9 M=9多项式与之前相同的数据集进行拟合的结果, 只不过现在使用给定的正则化误差函数(1.4)。我们看到,对于 ln ⁡ λ = − 18 \lnλ=-18 lnλ=18的值,过拟合已经被抑制,现在我们获得了底层函数 s i n ( 2 π x ) sin(2πx) sin(2πx)的更接近表示。然而,如果我们使用太大的 λ λ λ值,我们再次获得糟糕的拟合,如图1.9中 ln ⁡ λ = 0 \lnλ=0 lnλ=0所示。配套的多项式系数在表1.2中给出,显示正则化产生了期望的缩减系数幅度。
在这里插入图片描述
在这里插入图片描述
正则化项对泛化误差的影响可以通过针对训练集和测试集的RMS误差(1.3)的值绘制 ln ⁡ λ \lnλ lnλ的图来看出,如图1.10所示。我们看到 λ λ λ现在控制着模型的有效复杂性,从而确定过拟合的程度。
在这里插入图片描述

模型选择

数量 λ λ λ是一个超参数(hyperparameter)的例子,其值在最小化误差函数以确定模型参数 w \mathbf{w} w期间是固定的。我们不能通过联合针 w \mathbf{w} w λ λ λ最小化误差函数来简单地确定 λ λ λ的值,因为这将导致 λ → 0 λ→0 λ0和具有较小的或零训练误差的过拟合模型。类似地,多项式的阶数 M M M也是模型的一个超参数,针对 M M M优化训练集误差将导致 M M M的值很大并伴生过拟合。因此,我们需要找到确定超参数合适值的方法。上面的结果建议了一种简单的实现方法,即获取可用的数据并将其分区为训练集,用于确定系数 w \mathbf{w} w,以及单独的验证集(validation set),也称为留出集(hold-out set)开发集(development set)。然后,我们选择在验证集上具有最低误差的模型。如果使用有限大小的数据集多次迭代模型设计,则可能会对验证数据进行一定程度的过拟合,因此可能需要保留另一个测试集(test set),在其上可以最终评估所选模型的性能。

对于某些应用程序,用于训练和测试的数据供应将是有限的。为了建立一个好的模型,我们应该尽可能多地使用可用的数据进行训练。但是,如果验证集太小,则它会提供一个相对含噪声的预测性能估计。解决这一困境的一个解决方案是使用交叉验证(cross-validation),如图1.11所示。这允许使用 ( S − 1 ) / S (S-1)/S (S1)/S的可用数据进行训练,同时利用所有数据来评估性能。当数据特别稀缺时,可能需要考虑 S = N S=N S=N的情况,其中 N N N是总的数据点数目,这就是所谓的留一法(leave-one-out technique)

在这里插入图片描述
交叉验证的主要缺点是必须执行的训练轮次增加了 S S S 倍,这对于训练本身计算成本昂贵的模型来说可能是有问题的。 对交叉验证这样使用单独数据来评估性能的技术来说,另一个问题是,单个模型可能有多个复杂超参数(例如,可能有多个正则化超参数)。 在最坏的情况下,探索此类超参数设置的组合可能需要进行多次训练,而这些训练的轮次将是超参数数量的指数级。 现代机器学习的最新技术涉及非常大的模型,并在相当大的数据集上进行训练。 因此,超参数设定的探索范围通常是很有限的,并且严重依赖较小模型和启发式方法获得的经验。

将多项式拟合到由正弦函数生成的合成数据集的简单示例已经说明了机器学习的许多关键思想,我们将在以后的章节中进一步使用这个示例。 然而,机器学习的实际应用在几个重要方面有所不同。 用于训练的数据集的大小可以大很多个数量级,并且通常会有更多的输入变量,例如用于图像分析的输入变量可能有数百万,以及多个输出变量。 将输出与输入联系起来的可学习函数由一类称为神经网络的模型控制,这些模型可能具有数千亿的巨量参数,并且误差函数将是这些参数的一个高度非线性函数。 误差函数不再能够通过封闭式解来最小化,而是必须通过基于误差函数相对于参数的导数的评估的迭代优化技术来最小化,所有这些都可能需要专门的计算硬件并产生大量的计算成本。

机器学习简史

机器学习有着悠久而丰富的历史,包括对多种替代方法的追求。 在这里,我们重点关注基于神经网络的机器学习方法的演变,因为它们代表了深度学习的基础,并已被证明是现实世界应用中最有效的机器学习方法。

神经网络模型最初受到人类和其他哺乳动物大脑信息处理研究的启发。 大脑中的基本处理单元是称为神经元的电活性细胞,如图 1.12 所示。 当神经元“放电”时,它会沿着轴突发送电脉冲,到达称为突触的连接处,突触与其他神经元形成连接。 称为神经递质的化学信号在突触处释放,这些信号可以刺激或抑制后续神经元的放电。

在这里插入图片描述

人脑总共包含约 900 亿个神经元,每个神经元平均有数千个突触,与其他神经元一起形成一个总共约 100 万亿(1014)个突触的复杂网络。 如果某个特定的神经元从其他神经元的放电中接收到足够的刺激,那么它也可以被诱导放电。 然而,一些突触具有负面或抑制作用,即输入神经元的激发使得输出神经元不太可能激发。 一个神经元引起另一个神经元放电的程度取决于突触的强度,而这些强度的变化代表了大脑存储信息和从经验中学习的关键机制。

神经元的这些特性已经被捕获在非常简单的数学模型中,称为人工神经网络(artificial neural networks),然后形成计算学习方法的基础(McCulloch 和 Pitts,1943)。 许多模型通过形成其他神经元输出的线性组合然后使用非线性函数进行转换来描述单个神经元的属性。 这可以用数学形式表达:
a = ∑ i = 1 M w i x i (1.5) a = \sum_{i=1}^M w_ix_i \tag{1.5} a=i=1Mwixi(1.5)
y = f ( a ) (1.6) y = f(a) \tag{1.6} y=f(a)(1.6)

其中 x 1 , ⋯   , x M x_1 , \cdots , x_M x1,,xM 表示与向该神经元发送连接的其他神经元的活动相对应的 M M M 个输入, w 1 , ⋯   , w M w_1, \cdots ,w_M w1,,wM 是连续变量,称为权重(weights),代表相关突触的强度。 量 a a a称为预激活(pre-activation),非线性函数 f ( ⋅ ) f(\cdot) f()称为激活函数(activation function),输出 y y y称为激活(activation)。 我们可以看到,多项式 (1.1) 可以被视为该表示形式的一个特定实例,其中输入 x i x_i xi由单个变量 $x 的幂给出,而函数 的幂给出,而函数 的幂给出,而函数f(\cdot)$只是恒等式 f ( a ) = a f (a) = a f(a)=a。 (1.5) 和 (1.6) 给出的简单数学公式构成了从 20 世纪 60 年代至今神经网络模型的基础,并且可以用图表形式表示,如图 1.13 所示。
在这里插入图片描述

单层网络

根据以处理“层”数衡量的网络复杂程度,人工神经网络的历史大致可分为三个不同的阶段。 (1.5) 和 (1.6) 描述的简单神经模型可以被视为具有与图 1.13 中的单层连接相对应的单层处理。 神经计算历史上最重要的此类模型之一是感知器(Rosenblatt,1962),其中激活函数 f ( ⋅ ) f(\cdot) f()是以下形式的阶跃函数
f ( a ) = { 0 , if  a ≤ 0 , 1 , if  a > 0 , (1.7) f(a) =

{0,if a01,if a>0
\tag{1.7} f(a)={0,1,if a0if a>0(1.7)

这可以被视为神经放电的简化模型,其中当且仅当总加权输入超过阈值 0 0 0 时,神经元才会放电。*感知机(perceptron)*由 Rosenblatt (1962) 首创,他开发了一种特定的训练算法,该算法具有一个有趣的特性是,如果存在一组权重值,感知机可以对其训练数据实现完美分类,那么算法就可以保证在有限数量的步骤中找到解决方案(Bishop,2006)。 除了学习算法之外,感知机还有专用的模拟硬件实现,如图 1.14 所示。 典型的感知机配置具有多层处理,但只有其中一层可以从数据中学习,因此感知机被认为是“单层”神经网络。

在这里插入图片描述

起初,感知机以类似大脑的方式从数据中学习的能力被认为是非凡的。 然而,很明显该模型也存在重大局限性。 Minsky 和 Papert (1969) 分析了感知机的性质,并给出了单层网络能力有限的正式证明。 不幸的是,他们还推测类似的限制将扩展到具有多层可学习参数的网络。 尽管后一个猜想被证明是完全错误的,但其影响是抑制了人们对神经网络模型的热情,这导致了 20 世纪 70 年代和 1980 年代初期人们对神经网络缺乏兴趣和资金。 此外,由于缺乏有效的算法来训练多层网络,研究人员无法探索多层网络的性质,因为感知机算法等技术特定于单层模型。 请注意,尽管感知机早已从实际机器学习中消失,但该名称仍然存在,因为现代神经网络有时也称为多层感知机(multilayer perceptron 或 MLP。

反向传播

训练具有不止一层可学习参数的神经网络问题的解决方案来自于微分学(differential calculus)的应用和基于梯度的优化方法的应用。 一个重要的变化是将阶跃函数(1.7)用具有非零梯度的连续可微激活函数加以替换。 另一个关键修改是引入可微误差函数,该函数定义给定的参数值选择预测训练集中目标变量的效果。 当我们使用平方和误差函数 (1.2) 来拟合多项式时,我们看到了此类误差函数的示例。

通过这些更改,我们现在有了一个误差函数,其相对网络中每个参数的导数都可以计算。 我们现在可以考虑具有不止一层参数的网络。 图 1.15 显示了一个具有两个处理层的简单网络。 中间层的节点称为隐藏单元(hidden units),因为它们的值不会出现在训练集中,训练集中仅提供输入和输出的值。 图 1.15 中的每个隐藏单元和每个输出单元都计算由 (1.5) 和 (1.6) 给出的形式的函数。 对于给定的一组输入值,可以通过重复应用(1.5)和(1.6)来评估所有隐藏单元和输出单元的状态,其中信息沿箭头方向通过网络向前流动。 因此,此类模型有时也称为前馈神经网络(feed-forward neural networks)
在这里插入图片描述

为了训练这样的网络,首先使用随机数生成器初始化参数,然后使用基于梯度的优化技术迭代更新。 这涉及求取误差函数的导数,这可以在称为 误差反向传播(error backpropagation) 的过程中有效地完成。 在反向传播中,信息通过网络从输出向后流向输入(Rumelhart、Hinton 和 Williams,1986)。 存在许多不同的优化算法,它们利用要优化的函数的梯度,但机器学习中最流行的一种也是最简单的,被称为随机梯度下降(stochastic gradient descent, SGD)

训练具有多层权重的神经网络的能力是一项突破,从 20 世纪 80 年代中期开始,人们对该领域的兴趣重新兴起。 这也是该领域超越对神经生物学灵感的关注并发展出更严格和有原则的基础的时期(Bishop,1995b)。 特别是,人们认识到概率论和统计学领域的思想在神经网络和机器学习中发挥着核心作用。 一个关键的洞见是:**从数据中学习涉及对背景的假设,有时称为先验知识(prior knowledge)归纳偏差( inductive biases)。 这些可能会被显式地纳入,例如通过设计神经网络的结构,使得皮肤病变的分类不依赖于图像中病变的位置,或者它们可能采取从模型的数学形式或训练方式导出的隐式假设形式。

反向传播和基于梯度的优化戏剧性的提升了神经网络解决实际问题的能力。 然而,人们还观察到,在多层网络中,只有最后两层的权重才能学习有用的值。 除了少数例外,尤其是用于图像分析的卷积神经网络模型(LeCun 等人,1998),具有两层以上的网络的成功应用非常少。 这再次限制了此类网络可以有效解决的问题的复杂性。 为了在许多应用中取得合理的性能,有必要使用手工预处理将输入变量转换到一些新的空间,以期机器学习问题能够更容易解决。 该预处理阶段有时也称为特征提取。 尽管这种方法有时是有效的,但如果可以从数据中学习特征而不是手工制作,显然会更好。

到了新千年之初,可用的神经网络方法再次达到了其能力的极限。 研究人员开始探索神经网络的一系列替代方案,例如核方法、支持向量机、高斯过程等等。 尽管核心研究人员继续追求一种真正有效的方法来训练多层网络,但神经网络再次失宠。

深度网络

神经网络发展的第三个阶段(也是当前阶段)开始于 21 世纪第二个十年。 一系列的发展使得具有多层权重的神经网络能够得到有效的训练,从而消除了以前对这些技术能力的限制。 具有多层权重的网络称为深度神经网络(deep neural networks),而专注于此类网络的机器学习子领域称为深度学习(deep learning)(LeCun、Bengio 和 Hinton,2015)。

深度学习起源的一个重要主题是神经网络规模的显著增加(以参数数量来衡量)。 尽管具有几百或几千个参数的网络在 20 世纪 80 年代很常见,但这一数字稳步上升到数百万,然后是数十亿,而当前最先进的模型可以有 1 万亿( 1 0 12 10^{12} 1012)参数。 具有许多参数的网络需要相应大的数据集,以便训练信号可以为这些参数产生良好的值。 海量模型和海量数据集的结合反过来又需要在训练模型时进行大规模计算。 被称为图形处理单元或 GPU 的专用处理器原本是为视频游戏等应用的图形数据快速渲染而开发的,事实证明非常适合神经网络的训练,因为网络同层单元所计算函数可以并行计算,这很好地贴合了 GPU 的大规模并行性(Krizhevsky、Sutskever 和 Hinton,2012)。 如今,最大模型的训练是在由专业高速互连连接的数千个 GPU 组成的大型阵列上进行的。

图 1.16 说明了训练最先进的神经网络所需的计算周期数量(the number of compute cycles)多年来如何增长,图中显示了两个不同的增长阶段。 纵轴具有指数刻度,单位为 petaflop/s-day,其中 petaflop 代表 1 0 15 10^{15} 1015(千万亿)次浮点运算,petaflop/s 表示每秒 1 petaflop。 1 petaflop/s-day 表示 24 小时内以 petaflop/s 的速率进行计算,大约为 1 0 20 10^{20} 1020 次浮点运算,因此,图表的顶线代表了令人印象深刻的 1 0 24 10^{24} 1024 次浮点运算。 图中的一条直线代表指数增长,我们看到从感知机时代到2012年左右,翻倍的时间在2年左右,这与摩尔定律导致的计算能力的普遍增长是一致的。 从标志着深度学习时代的 2012 年开始,我们再次看到指数级增长,但翻倍时间现在为 3.4 个月,相当于计算能力每年增长 10 倍!
在这里插入图片描述

人们经常发现,由于架构创新或更复杂形式的归纳偏差的结合而带来的性能改进很快就被简单地通过扩大训练数据量以及模型大小和用于训练的计算能力的相应扩展所取代(Sutton,2019)。 大型模型不仅可以在特定任务上具有卓越的性能,而且还能够使用相同的经过训练的神经网络解决更广泛的不同问题。 大语言模型是一个值得注意的例子,因为单个网络不仅具有非凡的能力,而且甚至能够超越旨在解决特定问题的专门网络。

我们已经看到深度在让神经网络实现高性能方面发挥着重要作用。 理解深度神经网络中隐藏层的作用的一种方法是表示学习(representation learning)(Bengio、Courville 和 Vincent,2012),其中网络通过学习将输入数据转换为具有语义意义的新表示,从而使得最后一层或多层要解决的问题变得容易得多。 这种内部表示可以重新调整用途(repurposed)以便通过迁移学习解决相关问题,正如我们在皮肤病变分类中看到的那样。 有趣的是,用于处理图像的神经网络可以学到与在哺乳动物视觉皮层中观察到的非常相似的内部表征。 可以*适应(adapted)或微调(fine-tuned)*以适应一系列下游任务的大型神经网络称为基础模型(foundation models),基础模型可以利用大量异构数据集来创建具有广泛适用性的模型(Bommasani 等人,2021)。

除了规模化之外,还有其他一些进展也有助于深度学习的成功。 例如,在简单的神经网络中,训练信号在通过深度网络的连续层反向传播时会变得更弱。 解决这个问题的一种技术是引入残差连接(residual connections)(He et al., 2015a),它有助于训练数百层的网络。 另一个关键的发展是引入了*自动微分(automatic differentiation)*方法,其中执行反向传播以计算误差函数梯度的代码是从用于指定前向传播的代码自动生成的。 这使得研究人员能够快速试验神经网络的不同架构,并非常容易地以多种方式组合不同的架构元素,因为只需要显式编码相对简单的前向传播函数。 此外,机器学习的许多研究都是通过开源进行的,这使得研究人员得以在其他人的工作基础上进行研究,从而进一步加快该领域的进展速度。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/430712?site
推荐阅读
相关标签
  

闽ICP备14008679号