菜单

神经网络

相关源文件

本页面提供了理解大型语言模型 (LLM) 所必需的神经网络基础知识的全面概述。虽然神经网络是机器学习中一个广泛的主题,但我们专门关注构成 LLM 开发基础的概念、架构和训练方法。有关基于这些基础知识的自然语言处理概念,请参阅 自然语言处理

1. 神经网络基础

神经网络是受人脑结构启发的计算模型。其核心是数学函数,通过一系列加权连接和非线性变换,将输入数据转换为期望的输出。

神经网络架构

神经网络由相互连接的人工神经元层组成

  1. 输入层:接收初始数据
  2. 隐藏层:执行中间计算
  3. 输出层:生成最终结果

神经元之间的每个连接都带有一个权重,该权重决定了其影响,每个神经元都有一个偏置项,用于调整其激活阈值。

来源: README.md120

神经元计算

每个神经元执行两个关键操作

  1. 加权求和:将每个输入与其相应的权重相乘,将它们相加,并加上一个偏置项
  2. 激活:将非线性函数应用于加权和

激活函数

激活函数引入非线性,使网络能够学习复杂模式

功能公式属性用途
Sigmoidσ(x) = 1/(1+e^-x)范围:[0, 1]分类,早期隐藏层
Tanhtanh(x) = (e^x - e^-x)/(e^x + e^-x)范围:[-1, 1]隐藏层,归一化输出
ReLUReLU(x) = max(0, x)范围:[0, ∞)隐藏层,更快的训练
Leaky ReLULReLU(x) = max(0.01x, x)范围:(-∞, ∞)防止“死亡 ReLU”问题

来源: README.md120

2. 训练神经网络

训练神经网络涉及迭代地调整权重和偏置以最小化预测误差。

前向传播和反向传播

  1. 前向传播:输入数据通过网络生成预测
  2. 损失计算:使用损失函数将预测与目标输出进行比较
  3. 反向传播:计算损失相对于权重的梯度
  4. 权重更新:沿减小损失的方向调整权重

来源: README.md121

损失函数

损失函数量化了预测输出和实际输出之间的差异

损失函数目的公式
均方误差 (MSE)回归任务MSE = (1/n) ∑(y_pred - y_true)²
交叉熵分类任务CE = -∑(y_true * log(y_pred))
二元交叉熵二元分类BCE = -(y_true * log(y_pred) + (1-y_true) * log(1-y_pred))

来源: README.md121

优化算法

优化算法决定如何更新权重

算法描述优点
梯度下降使用完整数据集更新权重稳定的收敛
随机梯度下降 (SGD)在每个样本后更新权重更快的迭代,有助于跳出局部最小值
小批量 SGD在小批量后更新权重速度和稳定性之间的平衡
Adam具有动量的自适应学习率更快的收敛,处理稀疏梯度
RMSprop自适应学习率适用于非平稳目标

来源: README.md121

3. 防止过拟合

过拟合发生在模型在训练数据上表现良好,但在未见数据上表现不佳时。

正则化技术

技术描述实现
L1 正则化将权重的绝对值添加到损失中L1 = λ ∑|w|
L2 正则化将权重的平方添加到损失中L2 = λ ∑w²
Dropout在训练期间随机禁用神经元保留概率 p(通常为 0.5-0.8)
早停当验证错误增加时停止训练监控验证指标
数据增强创建新的训练样本特定领域的转换

来源: README.md122

4. 从基本神经网络到 LLM

大型语言模型通过几项架构创新,从基本神经网络发展而来。

多层感知器 (MLP)

最简单的全连接层神经网络。MLP 是构建更复杂架构的基础。

与 Transformer 架构的联系

驱动现代 LLM 的 Transformer 在神经网络基础之上,引入了自注意力机制,以更有效地处理序列数据。

Transformer 中的前馈网络组件本质上是一个应用于序列中每个位置的小型 MLP,这表明基本神经网络概念对于高级架构仍然至关重要。

来源: README.md123 README.md169-173

5. 实现神经网络

虽然理论理解很重要,但实际实现对于掌握神经网络至关重要。

PyTorch 实现

PyTorch 因其灵活性和动态计算图,是实现神经网络的流行框架。

PyTorch 中的基本 MLP 实现遵循此结构

此实现定义了一个具有 ReLU 激活的两层 MLP。可以根据具体要求,使用其他层或不同的激活函数来扩展此架构。

来源: README.md123

进一步学习资源

对于那些希望加深对神经网络理解的人,建议参考以下资源

  • 视觉解释:“3Blue1Brown 的‘什么是神经网络?’”提供了神经网络概念的直观可视化
  • 实践课程:“Fast.ai 的‘实践深度学习’”提供了神经网络的实践经验
  • 实现教程:“Patrick Loeber 的 PyTorch 教程”演示了如何构建各种神经网络架构

来源: README.md126-131