知微集:宏观看神经网络

发布于:2025-08-31 ⋅ 阅读:(29) ⋅ 点赞:(0)

欢迎来到"一起学点什么吧"的合集「NLP知微集」。在这里,我们不愿宏大叙事,只聚焦于自然语言处理领域中那些细微却关键的“齿轮”与“螺丝钉”。我相信,真正深刻的理解,源于对细节的洞察。本期,我将为您拆解的是:[神经网络]

神经网络的基本架构

一个标准的神经网络模型(也称为人工神经网络)由三个部分组成:输入层、输出层和隐藏层

  • 输入层:输入层接收需要处理的数据或特征。输入层中的每个神经元对应于数据的一个特征。根据具体应用,输入层可能对输入数据进行预处理,使其适合神经网络训练。
  • 输出层:输出层提供神经网络计算的最终结果。输出层中的神经元数量取决于具体任务。例如,在多类分类的情况下,输出层可能包含与类别数量相同的节点。
  • 隐藏层:隐藏层是输入层和输出层之间的中间层。它们通过神经元之间的加权连接对输入数据进行计算,并使用激活函数进行转换。本质上,隐藏层负责从数据中提取特征和模式。

神经网络结构示例

每一层由一定数量的单元或节点组成。神经元之间的连接由权重表示,这些权重决定了连接的强度。神经网络在训练过程中学习这些权重,以优化其在特定任务上的性能。
深入观察一个神经元

深度神经网络(DNNs)是指具有多个隐藏层的神经网络。神经网络的算法例子包括循环神经网络(RNN)、卷积神经网络(CNN)和 Transformer。

神经网络训练过程

从本质上讲,神经网络只是将训练数据和权重作为输入,并输出预测值和损失值的数学表达式。

要训练一个神经网络模型,第一步是收集和预处理输入数据(例如数据清洗、归一化等),以备训练之用。接下来,确定神经网络的架构。这包括选择层类型(例如卷积层、循环层或 Transformer 层)、决定每层的层数和神经元数量、初始化权重、选择激活函数、损失函数、正则化技术和优化算法。

在训练过程中,每个迭代都会采样一小批训练数据。每个批次都会经过一个训练循环。一个典型的训练循环如下所示:

  1. 采样(Sample):从训练数据集中采样一个小批量数据
    一个简单的神经网络

  2. 前向传播(Forward Propagation):通过隐藏层进行数据前向传播

    • 计算每个神经元的输入加权和
    • 对加权求和应用激活函数
    • 预测输出并计算损失(预测值与实际值之间的差异)
      神经网络中的前向传播
  3. 反向传播(Back Propagation)

    • 计算损失相对于所有模型参数的梯度
    • 使用优化算法更新网络权重
      神经网络中的反向传播

基于梯度迭代调整权重的过程旨在最小化损失函数并提高模型在训练数据上的性能。这个训练循环会持续进行,直到达到预定义的停止标准,这些标准可能是一个固定的训练轮数、基于验证性能的提前停止或其他收敛指标。

在训练过程中,模型会在一个单独的验证集上周期性地进行性能测试,以检查模型对新数据的泛化能力。根据验证性能调整学习率、批处理大小等超参数。训练完成后,训练好的模型会在测试数据集上进行测试,并报告其性能。

神经网络模型中的超参数

神经网络的超参数

超参数是神经网络在训练过程开始前设置的配置参数。这些参数在训练过程中不会被学习,而是影响模型如何从数据中学习和泛化。

超参数,与参数相对,参数是模型从数据中学习到的特征。

以下是神经网络模型的一些关键超参数

  • 权重初始化(Weight initialization):网络训练开始时的权重初始化。这会影响模型收敛的速度。例如:随机初始化、Xavier/Glorot 初始化和 He 初始化

  • 隐藏层数量(Number of hidden layers):隐藏层数量,也称为网络的深度,影响网络的学习能力和泛化能力

  • 每层神经元数量(Number of neurons per layer):每层的神经元数量会影响网络捕捉复杂模式的能力。较大的层可以捕捉更复杂的特征,但也可能导致过拟合

  • 激活函数(Activation function):激活函数为模型引入非线性,使其能够捕捉数据中的复杂关系。例如:ReLU(Rectified Linear Unit)、tanh、Leaky ReLU
    激活函数

  • 损失函数(Loss function):损失函数量化了预测值与实际值之间的差异。神经网络的训练目标是最小化损失函数。损失函数的选择取决于你所解决问题的类型。例如:均方误差(MSE)、Huber 损失用于回归任务,以及交叉熵(cross-entropy)用于分类

  • 优化算法(Optimization algorithm):优化算法决定了模型权重在训练过程中的更新方式。例如:随机梯度下降(SGD)、Adam、RMSProp

  • 学习率(Learning Rate):学习率决定了优化过程中权重更新的步长。较大的学习率可能导致收敛速度更快,但也可能存在错过最优参数的风险。较小的学习率可能导致收敛速度较慢,但调整更稳定。常用的学习率值有 0.1、0.01、0.001。

    通常以较大的学习率开始,并在训练过程中使用学习率衰减等技术逐渐降低。

    学习率衰减的原理是,在训练初期,当模型的参数远离最优值时,使用较大的学习率可以帮助模型更快地收敛。然而,随着训练的进行,当参数接近最优值时,较小的学习率可能更合适,以确保模型能够准确收敛,并且不会错过最优解。

  • 批量大小(Batch Size):批量大小是在梯度下降的单次迭代中使用的训练示例数量。批量大小的典型值有 16、32、64、128、256、512 和 1024

  • 轮次(Epochs): 指的是在训练过程中整个训练数据集通过网络的次数。例如:1、10、50、100

  • 迭代次数(Number of iterations):迭代指的是基于一批训练样本对模型参数的一次更新。在每次迭代中,使用一小批数据(训练数据的一个子集)来计算梯度并更新模型的权重和偏置参数。迭代次数的总数可以使用以下公式计算:
    迭代次数=总共的训练数据量BatchSize∗Epochs 迭代次数=\frac{总共的训练数据量}{Batch Size}*Epochs 迭代次数=BatchSize总共的训练数据量Epochs

  • 正则(Regularization):正则化技术用于防止过拟合或死神经元问题。一些常见的正则化方法包括 Dropout、L1(Lasso)/ L2(Ridge)、批量归一化(Batch normalization)和提前停止(Early Stopping)。

结语

“见微知著,积跬步以至千里”,至此,关于 [神经网络] 的微探索之旅就暂告一段落了。感谢您的耐心阅读。希望这片小小的“知微”碎片,能让你对NLP有更清晰的认识。

点赞关注不迷路,点击合集标签「#NLP知微集」,不错过每一次细微的洞察。

下期再见,继续我们的拆解之旅!

Reference

  • https://aiml.com/what-is-the-basic-architecture-of-an-artificial-neural-network-ann/

  • https://aiml.com/what-are-the-key-hyper-parameters-of-a-neural-network-model/


网站公告

今日签到

点亮在社区的每一天
去签到