什么是深度学习?

什么是深度学习?

深度学习是一种机器学习方法,采用多层神经网络(称为深度神经网络)模拟人脑的决策机制。深度学习为大多数人工智能 (AI) 应用提供动力,广泛应用于图像识别、语音识别和自然语言处理 (NLP)等领域。

与传统机器学习明确定义的数学逻辑不同,深度学习模型的神经网络由许多相互连接的“神经元”层组成,每个神经元都执行特定的数学运算操作。通过机器学习技术调整相邻层神经元之间的连接强度(即不断优化的模型权重与偏置),可以使网络逐步优化并产生更精确的输出结果。虽然神经网络和深度学习已变得彼此密不可分,但它们严格来说并不是同义词:“深度学习”是指至少具有 4 层的模型训练(尽管现代神经网络架构通常比这“更深”)。

正是这种分布式、高度灵活可调的结构特性,造就了深度学习令人惊叹的强大能力与广泛适用性。假设将训练数据视为二维平面上散布的数据点,模型训练的目标就是找到一条贯穿所有这些数据点的直线。传统机器学习本质上试图通过单一数学函数来生成一条直线(或曲线)实现该目标;而深度学习则能够将任意数量的可独立调整的短线段组合成所需的复杂形状。深度神经网络是通用逼近器:理论上已经证明,任何函数都存在对应的神经网络架构能够以任意精度逼近该函数。1

深度学习模型通常采用监督学习方式在标注数据上进行训练,以执行回归与分类任务。但由于大规模神经网络通常需要海量训练数据才能达到最优性能,获取足够规模的标注训练数据集所需成本和工作量往往令人望而却步。这促使研究者开发出利用未标注数据复制监督学习任务的技术方法。自监督学习这一术语由 Yann LeCun 在 2010 年代后期正式提出,旨在将此类方法与传统的无监督学习进行明确区分。自监督学习随后逐渐发展成为训练神经网络的重要范式,尤其适用于支持生成式 AI 的基础模型。

虽然数据科学家在机器学习发展早期就提出了神经网络(或类似概念),但直到 2000 年代末至 2010 年代初,神经网络才真正取得突破性进展。深度学习网络在机器学习各个子领域的广泛应用,部分得益于高性能图形处理器 (GPU) 的技术突破,使得海量计算步骤的并行处理成为可能。由于深度学习训练和推理都需要巨大的计算资源支撑,这些硬件技术的革新极大地提升了大规部署深度学习模型的效率与可行性。

深度学习的工作原理

广义而言,人工神经网络的设计灵感来源于人类大脑神经回路的工作机制,其运行依赖于神经细胞(神经元)网络间复杂的化学信号与电信号传递过程。在深度学习领域,类似“信号”实际上是由众多嵌套数学运算产生的加权输出结果,每个运算由人工“神经元”(节点)独立完成,这些神经元共同构成了完整的神经网络体系。

简而言之,深度学习模型可以理解为一系列复杂的嵌套方程,将输入映射到输出。通过专门的机器学习流程调整网络内部各个方程的相对影响权重,进而能够改变整个网络处理输入输出映射关系的方式。

虽然该框架功能强大,用途广泛,但却牺牲了可解释性。除了纯粹的数学解释之外,我们往往很难直观理解神经网络学习到的各个参数值是如何反映数据的真实世界特征的。因此,深度学习模型经常被称为“黑匣”,特别是与基于人工特征工程的传统机器学习模型相比时,这种特性更加明显。

相较于经典的机器学习技术,深度学习在训练过程中需要极其庞大的数据支持和计算资源投入。考虑到开发和部署复杂深度学习应用所需企业级硬件的高成本与高技术复杂度,云计算服务已经日益成为深度学习生态系统中不可或缺的重要组成部分。

深度神经网络结构

人工神经网络由互连的人工“神经元”(或节点)层组成,每个神经元都会执行特定的数学运算(称为“激活函数” )。目前存在多种不同的激活函数类型;一个神经网络通常会在其结构中使用多种激活函数,不过一般而言,网络中同一层内的所有神经元都会设置为使用相同的激活函数。在大多数神经网络中,输入层中的每个神经元都与下一层中的每个神经元相连,而下一层中的每个神经元又与再下一层的神经元相连,依此类推。

每个节点激活函数的输出结果都会成为下一层节点输入数据的重要组成部分。关键在于,每个节点执行的激活函数都是非线性的,这使得神经网络能够对复杂的模式和依赖关系进行建模。正是非线性激活函数的使用,将深度神经网络与(非常复杂的)线性回归模型区分开来。

虽然某些专用神经网络架构(例如,专家模型 或卷积神经网络的混合)会对这种基础结构带来变化、补充或例外,但所有神经网络均会采用此核心结构。具体的层数、每层内的节点数以及为各层节点选择的激活函数类型,都是在训练开始前需要手动确定的超参数。

具有三个隐藏层的标准前馈神经网络。

这些数以百万计的神经元间连接都会乘以独特的权重系数,这些权重会放大(或减弱)每个连接的影响程度。每个神经元的激活函数所接收的输入可以理解为前一层中每个神经元输出的加权和。通常还会为每个激活函数添加一个独特的偏置项,其功能类似于常规回归函数中的偏置项。

在训练过程中,神经网络通过调整每个权重和偏置项来“学习”,从而产生更准确的输出。这些就是模型的参数:例如,当您看到某个大型语言模型 (LLM) 拥有80亿“参数”时,这个数字实际上包含了模型中所有神经元间的加权连接和每个神经元特有的偏置项。

被称为隐藏层的中间层是大多数学习过程发生的区域。正是多个隐藏层的存在,将深度学习模型与“非深度”神经网络(如受限玻尔兹曼机 (RBN) 或标准多层感知器 (MLP))区分开来。多个隐藏层的设计使得深度学习模型能够学习数据的复杂层次化特征,其中较早的层识别较宏观的模式,而更深的层则识别更细微的模式。

为了进行推理,网络需要完成一次前向传播:输入层接收输入数据,通常是以向量嵌入形式,每个输入神经元处理输入向量的一个独立特征。例如,处理 10x10 像素灰度图像的模型的输入层通常有 100 个神经元,每个输入神经元对应一个单独的像素。因此,神经网络通常要求将输入向量固定为一定大小,不过通过池化或归一化等预处理技术可以为原始输入数据本身的大小提供一定的灵活性。

数据会经历逐层递进的转换处理,依次传递至后续每一层的节点单元,最终抵达整个网络的输出层。输出层中各个神经元的激活函数将协同运算,生成神经网络最终的预测输出结果。例如,深度分类模型的每个输出节点可能执行 softmax 函数,该函数基本上接收数值输入并将其转换为 0 到 1 之间的概率值,用以表示输入数据属于特定分类范畴的可能性。随后,模型将输出对应最高概率值的分类类别作为最终预测结果。

训练深度神经网络

虽然深度神经网络的理论潜力一直显而易见,但最初研究者并不知道如何高效地训练它们。通过训练优化模型参数的目标是减少网络最终输出的误差,但是对于神经网络中成千上万(甚至数百万或数十亿)个相互连接的权重,要单独隔离和计算每个权重对总体误差的贡献程度,这在实际操作中是极其困难的。

这个障碍随着两种核心算法的引入而得到解决:反向传播和梯度下降。

反向传播

反向传播,即“误差反向传播”的简称,是一种精确的计算方法,用于分析神经网络中任何单个权重或偏置的变化会如何影响模型预测的准确性。

回顾一下,人工神经网络本质上是一系列嵌套的数学函数:一层神经元的输出会作为下一层神经元的输入,如此逐层传递。在训练过程中,这些相互连接的方程会被嵌套到另一个函数中:一个损失函数 ,用于测量给定输入的期望输出(或“基本事实”)与神经网络每次前向传播的实际输出之间的平均差异(或”损失“)。

在确定模型的初始超参数后,训练过程通常从随机初始化模型参数开始。模型对训练数据集中的批量样本进行预测,损失函数则持续追踪每次预测的误差值。训练的目标是通过迭代优化参数,直至将平均损失降低至可接受的阈值以下。

反向传播算法需要在网络中进行一次端到端的反向传播,从损失函数的输出开始,一直回溯到输入层。利用微积分的链式法则,反向传播计算损失函数的“梯度”:即损失函数相对于每个方程中每个变量的偏导数向量,最终嵌套到损失函数的计算中。换句话说,它描述了增加或减少任何单个神经元激活函数的输出将如何影响整体损失,进而描述了这些输出所乘以的任何权重 (或添加到这些输出中的偏置项)的任何变化将如何增加或减少损失。

梯度下降

在反向传播过程中计算得到的梯度,随后会作为梯度下降算法的输入数据。

损失函数向下移动(下降)的梯度将减少损失(从而提高精度)。由于反向传播计算出的梯度包含损失函数对每个模型参数的偏导数,我们知道每个参数值应该向哪个方向“步进”来减少损失。

每一步都涉及模型参数的更新,反映了模型对其训练数据的“学习”。我们的目标是迭代更新权重,直至达到最小梯度。梯度下降算法的目标是找到能让我们最有效地沿着梯度下降的特定参数调整。

实施深度学习模型

目前有许多开源框架可用于开发深度学习模型,无论是从头开始训练模型,还是微调预训练模型都能支持。这些机器学习库提供了各种预配置的模块和工作流,用于构建、训练和评估神经网络,从而简化和优化开发过程。

在深度学习算法领域最受欢迎的开源框架中,PyTorch、TensorFlow 以及(特别针对 LLM)Hugging Face Transformers 库占据主导地位。建议在使用这些框架之前先学习 Python。

深度学习模型的类型

尽管传统(“基础”)深度神经网络具有内在的强大能力和潜力,但在处理某些特定任务时仍存在性能不足或实用性受限的问题。近几十年来,标准神经网络架构经历了多项创新,每一项创新都旨在提高特定任务和数据类型上的处理性能。

值得注意的是,某种类型的神经网络可能适用于多种类型的深度学习模型,反之亦然。例如,用于图像任务的自编码器模型可能采用基于卷积神经网络的架构;扩散模型则可以选用基于 CNN 或转换器的架构。

卷积神经网络 (CNN)

卷积神经网络 (CNN)主要(但不完全)应用于计算机视觉任务,例如对象检测、图像识别、图像分类和图像分割,这得益于其卓越的“局部”模式识别能力(例如图像中相邻像素间的关联关系)。

CNN 开发的核心思路在于,对于某些任务和数据模式(例如对具有数百或数千像素的高分辨率图像进行分类),仅使用标准全连接层构建足够规模的神经网络,将产生过多参数,导致训练后模型难以泛化到新数据。换句话说,这种网络计算效率低下,且容易过拟合训练数据,而不是学习真正有用的真实世界模式。

理论上,能够识别特定形状及其他有意义特征的神经网络,可以通过从原始图像中提取这些特征进行后续处理(同时丢弃无意义特征的图像区域信息)来节省计算资源。实现此目标的一种方法是使用过滤器: 即数值与有用特征形状对应的二维小型数组。例如,用于扫描图像像素中左上角特征的过滤器数值可能呈现如下模式:

[1010101010100000100000100000100000]

设该 5x5 滤波器与输入图像中 5x5 像素网格进行相乘运算。用数学术语来说,这称为卷积:即一个函数修改(或 卷积)第二个函数的数学运算。如果像素值与过滤器的像素值相似,乘积(点积)就会很大,从而捕获这些像素所代表的特征;反之点积较小,相应像素则被忽略。

图像局部像素值(左)与卷积过滤器(中)相乘,生成反映原始像素与过滤器信息匹配度的低维表示(右)。

CNN 增加了卷积层,其节点数量远远少于充当此类过滤器的标准全连接层。卷积层的过滤器无需为每个像素配备独立节点(及独立权重),而是沿着整个图像前进,每次处理一个相应大小的像素网格。这不仅有效提取有用信息,还显著减少了处理整幅图像所需的独立模型参数数量。

CNN 通常比标准神经网络具有“更深”的层级数量,但由于卷积层包含相对较少的神经元,在总参数量方面仍保持高效。当数据流经 CNN 时,每个卷积层会逐步提取更精细的特征,最终组装成“特征图”。最终的特征图将被传递至标准全连接层进行最终预测。在训练过程中,模型会自主学习卷积层的权重,使得其过滤器能够捕获有助于提升最终预测准确性的特征。

循环神经网络 (RNN)

循环神经网络 (RNN) 用于处理时序数据任务,例如时间序列预测、语音识别或自然语言处理 (NLP)。

传统前馈神经网络将单一输入映射为单一输出,而 RNN 通过循环操作将输入序列映射为输出,其中输入序列中每个步骤的输出会作为下一计算步骤的输入。实际上,这会创建过去输入的内部“记忆”,称为隐藏状态。该隐藏状态在每个时间步更新,使 RNN 能够持续维护对上下文和顺序的理解。

虽然单个"卷起"层的概念有助于理解其原理,但这种循环特性也可理解为数据在共享相同权重的多个层间传递的过程。

以“卷起”和“展开”形式显示的 RNN

这导致了传统 RNN 的一些根本性缺点,特别是在训练方面。回想一下,反向传播算法计算损失函数的梯度,它决定了每个模型参数的增减幅度。当这些参数更新在过多“相同”循环层中重复时,更新幅度会呈指数级变化:增大参数可能导致梯度爆炸,减小参数则可能导致梯度消失。 这两类问题都会引发训练不稳定、训练速度减缓甚至完全中止训练。因此,标准 RNN 仅限于处理相对较短的序列。

基本 RNN 架构的各种增强功能,例如长短期记忆 (LSTM) 网络或门控循环单元 (GRU) 可以缓解这些问题,并提高模型模拟长期依赖关系的能力。

自编码器

自编码器专用于压缩(或编码)输入数据,随后利用压缩表示重构(解码)原始输入数据。在训练过程中,它们以最小化重构损失为优化目标:即重构数据点与原始输入数据之间的差异度。尽管这类深度学习使用未标注的非结构化数据,但自编码器通常被视为自监督学习的典型范例。

本质上,这迫使模型学习能够使压缩表示仅保留输入数据特征中最关键、最有意义子集的权重值。用机器学习术语来说,自编码器是对潜在空间进行建模。

自编码器具有多种应用场景,包括数据压缩、维度减小、特征提取、噪声数据去噪以及欺诈检测等。

在大多数情况下,解码器网络仅用于辅助编码器训练,训练完成后即被弃用。在变分自编码器 (VAE) 这类生成模型中,在重构之前,解码器会在编码器学习的潜在表示中加入一些随机噪音,从而保留并用于生成新的数据点。

转换器模型

转换器模型最初由 Google DeepMind 在 2017 年发表的里程碑论文《Attention Is All You Need》 中提出,这是深度学习领域的重大突破,直接引领了当前生成式 AI 的新时代。

与 RNN 类似,转换器本质上是为处理序列数据而设计的。转换器模型的界定性特征是其独特的自注意力机制,该机制从中获得了检测输入序列各部分之间关系(或依赖关系)的强大能力。更重要的是,这种注意力机制使转换器能够有选择地聚焦(或“关注”)输入序列中在任何给定时刻最相关的部分。

注意力机制最初是在用于机器翻译的 RNN 背景下提出的。但与 RNN 不同,转换器不使用循环层;标准转换器架构仅使用注意力层和标准前馈层,并采用受关系数据库逻辑启发的创新结构。

转换器通常与大型语言模型相关联,进而应用于文本生成、聊天机器人和情感分析等 NLP 场景。但它们实际上是极具通用性的模型,能够处理任何序列数据类型,包括音频或时间序列数据。甚至像图像这样的数据类型,也能通过视觉转换器 (ViT) 经过巧妙处理后以序列形式进行处理。

尽管转换器模型在深度学习的几乎所有领域都取得了最先进的成果,但这并不意味着它们对所有应用场景都是最优选择。例如,虽然 ViT 在计算机视觉任务的基准测试中达到了顶尖性能,但 CNN 在运算速度和计算效率方面具有显著优势。对于对象检测或图像分割等任务,选择转换器还是 CNN 通常取决于具体深度学习应用是需要优先考虑最高准确度,还是必须保证实时响应能力。

Mamba 模型

Mamba 模型于 2023 年首次推出,是一种用于序列数据的新型深度学习架构。作为状态空间模型 (SSM) 变体发展而来的成果,Mamba与 RNN、CNN 及转换器模型在理论层面存在有趣关联。最重要的是,Mamba 与转换器同样具备根据信息在特定时刻的相关性进行选择性优先处理(或丢弃)的能力——尽管其实现机制具有独特性。

迄今为止,Mamba 可能是唯一在 LLM 领域能与转换器形成实质性竞争的架构,其算法对内存的消耗要小得多,因此性能相当,计算效率却高得多。

生成式对抗网络 (GAN)

与 VAE 一样,生成式对抗网络 (GAN) 也是用于生成与原始训练数据相似的新数据的神经网络架构。GAN 采用联合架构设计,将两个深度学习网络置于零和博弈的对抗性训练环境中。

生成器网络创建新的数据点,例如原始图像。任何能够产生所需输出的生成式架构,均可用于 GAN 生成器网络。其唯一界定特征在于与判别器的交互方式,核心要求是算法需可微分(从而能够通过反向传播和梯度下降进行优化)。

判别器同时接收来自训练数据集的“真实”图像和生成器输出的“伪造”图像,其任务是准确判断给定图像的真伪。与生成器类似,判别器可采用任何合适的架构形式。

训练过程首先对判别器进行优化,使其能正确识别伪造图像。此阶段生成器的权重保持冻结状态。

随后冻结判别器的权重,利用判别器提供的反馈信息对生成器进行训练,通过优化生成器参数使其产生更易迷惑判别器的图像。生成器的权重经过优化,以产生更有可能欺骗鉴别器的图像。

该过程循环迭代:判别器再次接收来自训练数据的“真实”图像和生成器产生的“伪造”图像(此时伪造图像可信度已提升),重新执行真伪判别并更新参数。

再次利用(可能更难欺骗的)判别器的反馈来进一步训练生成器。

这个过程不断迭代,直至判别器无法区分真实样本与生成样本。

GAN 能够学习生成极其逼真的样本,但其对抗性训练机制导致训练过程具有内在的不稳定性和调优难度。

扩散模型

扩散模型是生成式 AI 领域最受瞩目的神经网络架构之一。它们兼具实用性与高性能优势,提供 VAE 的训练稳定性和 GAN 的输出精确度。虽然最常用于图像生成任务,扩散模型同样能够生成文本、视频和音频数据。

与自编码器类似,扩散模型本质上通过先破坏图像再精确重建的方式完成训练,但其实现机制截然不同。在训练过程中,扩散模型逐步学习对数据点添加高斯噪声实现扩散,随后通过逆向过程重建原始输入。这样,这类模型可通过“去噪”随机噪声样本生成与原始训练数据相似的新样本。

潜在扩散模型本质上是 VAE 和扩散模型的混合体:它们首先将输入数据压缩(编码)到潜在空间,然后执行扩散过程,再将结果输入解码器,解码器会将其上采样到所需的图像大小。

扩散模型通常使用基于 CNN 的架构,特别是在医学成像中广泛使用的 U-net 架构,但也有一些模型利用转换器架构。

图形神经网络

图形神经网络 (GNN) 专为需要建模复杂实体间关系的任务而设计,其处理的关系复杂度远超常规数据类型。

以图像数据为例,其像素排列呈二维网格结构,任一像素最多与 8 个相邻像素直接关联。标准 CNN 非常适合对这种关系进行建模。但这种能力难以扩展至社交媒体网络等场景——其中单个用户可能直接关联数千个节点,间接关联数万节点。

图形神经网络的结构支持对数据进行更复杂、非规则化的表示,这种能力是其他神经网络架构固有的单向数据流无法实现的。

Mixture of Experts | 12 月 12 日,第 85 集

解码 AI:每周新闻摘要

加入我们世界级的专家小组——工程师、研究人员、产品负责人等将为您甄别 AI 领域的真知灼见,带来最新的 AI 资讯与深度解析。

观看 Mixture of Experts 所有剧集

复制链接