一个有用的思维模型

把神经网络想象成一组可调节的滤镜。

每个滤镜接收来自上一层的数字。它为每个数字赋予不同程度的影响力,加上一个偏移量,然后对结果进行变换。一层会把变换后的数字发送给下一层。经过多次这样的变换后,输出层会产生预测、分数或生成的数值。

通常的示意图看起来像一张网络,因为数值会在各个单元之间流动:

input values          hidden layer             output

x₁ ───────────────┐   h₁ ───────────────┐
                  ├──>                  ├──> score
x₂ ───────────────┘   h₂ ───────────────┘

        weighted sums      weighted sum
        + activation

一个单元通常被称为人工神经元。这个名称源于历史原因。在实际应用中,神经元是一个小型数值函数。它与生物神经元的相似之处很有限。

这幅简单的图展示了一个全连接前馈网络:信息从输入流向输出,并且每个单元都连接到下一层的每个单元。并非所有神经网络都采用这种确切的连接方式。有些网络会在图像上重复使用同一个小型滤镜,有些会在序列中传递状态,还有些会通过注意力机制让输入的不同部分相互作用。但它们仍然是神经网络,因为它们都通过相互连接的操作构建可训练的计算过程。

神经网络如何工作

对于一个典型的神经元,其计算方式为:

output = activation(w₁x₁ + w₂x₂ + ... + wₙxₙ + b)

x值是输入。每个w都是一个权重,用于控制某个输入对该神经元的影响程度。偏置b会平移结果。然后,激活函数会对该结果进行变换,再让它继续通过网络。

一种常见的激活函数是修正线性单元(ReLU):

ReLU(x) = max(0, x)

对于负输入,ReLU 返回零;对于正输入,它保持输入不变。其他激活函数会以不同方式变换数值。

激活函数并不是可有可无的装饰。假设每一层只执行乘法和加法,那么两层这样的运算总是可以改写成一次乘法加法运算。增加更多层并不能让网络表示非线性关系。层与层之间加入非线性激活函数,可以防止这种合并,并让网络利用简单部件构建出更多样的形状。

当网络接收输入时,它会执行一次前向传播

  1. 输入被表示为数字。
  2. 每一层根据上一层计算出新的数字。
  3. 输出层产生网络的结果。

训练过程中,会使用损失函数将结果与目标结果进行比较,以衡量误差。反向传播会高效地计算每个权重或偏置发生微小变化时,损失会如何变化。然后,优化器会调整这些值,并在许多样本上重复这一过程。

“学习”意味着改变这些可调节的数字。开发者选择总体架构和训练过程;训练算法则寻找参数值。

手动执行一次前向传播

考虑一个接收银行卡交易两个归一化信号的玩具网络:

  • x₁ = 0.8表示金额的异常程度
  • x₂ = 0.3表示设备的陌生程度

这些数值仅用于说明,并不是真实的欺诈检测模型。该网络有两个使用 ReLU 激活函数的隐藏单元。

第一个隐藏单元计算:

h₁ = ReLU(1.0 × 0.8 − 1.0 × 0.3 − 0.2)
   = ReLU(0.3)
   = 0.3

第二个隐藏单元计算:

h₂ = ReLU(−0.5 × 0.8 + 0.5 × 0.3 + 0.1)
   = ReLU(−0.15)
   = 0

输出单元组合隐藏层的数值:

score = 1.5 × h₁ + 0.5 × h₂ − 0.4
      = 1.5 × 0.3 + 0.5 × 0 − 0.4
      = 0.05

这就是一次完整的前向传播。真实的分类器可能会再应用一个函数,将原始分数转换为概率,或者将分数与决策阈值进行比较。

程序员不必编写由这些权重具体表示的规则。训练会根据数据调整这些权重。即使只改变一个权重,也可能改变哪些隐藏单元被激活,以及它们对结果的影响程度。

人们很容易把h₁称为“金额风险”,把h₂称为“设备风险”。但计算过程并不能证明这些名称是合理的。隐藏单元通常共同参与只有组合起来才有意义的模式,其含义可能无法被人清晰解释。

神经网络为何重要

神经网络可以学习有用的中间表示,而不只是依赖人们预先指定的特征。在图像系统中,早期计算可能会响应局部视觉模式,后续计算则将这些模式组合起来。在语言系统中,许多层会根据上下文变换文本表示。具体行为是在整个网络中学习得到的,而不是逐一分配给某个命名神经元。

其灵活的函数形状使神经网络适用于图像、语言、音频、预测、控制和生成等任务。但这并不意味着神经网络对每个问题都自动是最佳选择。当数据有限或关系较为直接时,更简单的模型可能成本更低、更容易检查,效果也更好。

数学结果表明,当某些神经网络拥有足够多的隐藏单元时,它们可以近似广泛的函数类别。这说明的是网络能够表示什么,并不保证针对某个特定数据集的某次训练能够找到良好的函数、避免记住训练样本,或在陌生输入上可靠运行。

常见误解

神经网络像大脑一样工作

相关术语受到生物学启发,但人工神经元几乎省略了生物神经元的全部结构和行为。相比“数字大脑细胞”,“加权数值运算”是更可靠的思维模型。

每个神经元都会决定是否放电

一些早期模型使用阈值,ReLU 也会将负值设为零。但现代单元通常产生数值激活,而不是简单的是或否的决定。

层数越多,网络就总是越好

增加深度会改变网络能够表示的内容,以及它表示某些模式的效率。但这也可能使模型更难训练或训练成本更高。性能取决于架构、数据、目标、优化和评估,而不只是层数。

隐藏层会自动使模型具有非线性

线性层的堆叠仍然是线性的。层与层之间的非线性激活函数才是防止整个堆叠合并为单个线性变换的关键。

网络会发现人类可以理解的规则

它会发现能够降低训练目标的参数值。这些参数值可以支持有用的行为,却未必对应某条人类能够读懂的简短规则。解释需要额外的证据。

神经网络和深度学习是同一个意思

深度学习通常指使用包含多个处理层的神经网络进行机器学习。“深度”没有统一的层数界限,而神经网络也包括浅层模型。

神经网络在 AI 中的位置

神经网络是机器学习中的一个类别。神经网络架构规定计算如何排列。训练会产生学习得到的模型权重,它们属于模型的参数。在新输入上运行训练好的网络就是推理。

许多被称为AI 模型的系统都使用神经网络,但这些术语并不能互换。“AI 模型”的范围更广。例如,Transformer 是一种神经网络架构,由注意力机制、前馈运算、归一化以及在各层之间传递信息的连接构成。

这些设计的核心思想仍然相同:将可微分计算组织成有用的结构,然后从数据中学习可调节的数值。

下一步阅读

阅读什么是模型权重?,以区分网络学习到的连接强度与网络架构。阅读什么是模型参数?,了解更广义的可调节数值集合,然后阅读模型参数与模型权重,直接比较这两个术语。要了解神经网络如何生成语言,请继续阅读什么是 LLM?