这样理解【Transformer中的超参数】,中学生都能看懂!

发布于 2025-6-11 06:47
浏览
0收藏

当我们想构建高性能的机器学习和 AI 系统时,仅仅训练单个模型和系统往往是不够的。通常在开发中需要构建多个模型,使用多种不同的算法,然后将不同的模型相互比较,看看哪个模型最好。此外,在比较过程中还需要 “调整” 每种不同算法的设置,以使它们以最佳方式(或接近最佳)执行。

所以大多数机器学习算法都有 “设置”,我们可以称之为超参数,使用超参数是机器学习的重要组成部分。

一、什么是超参数

在机器学习和人工智能中,超参数(Hyperparameters) 是指在训练模型之前需要设置的参数,它们的值无法通过训练数据直接学习获得,而是由开发者手动设定或通过某种搜索方法调整的,所以超参数在模型的构建和对其性能的影响起着至关重要的作用,选择合适的超参数可以显著提升模型的效果。

简单地理解,超参数就是机器学习算法的各种设置数值。这些超参数不仅改变算法的工作方式,并改变训练过程的结果。超参数是机器学习开发者手动设置的参数。尽管有多种方法可以为超参数选择最佳值,但需要了解的重要一点是,机器学习开发者或数据科学家需要尝试使用这些设置值,以找到让模型获得较高性能的最佳值。从这个意义上说,模型超参数就像一台设备上的设置。例如,吉他放大器通常具有多个旋钮和开关,例如音量、增益、低音、高音等旋钮。

而与之相对的是模型参数(Model Parameters),这些参数是通过训练数据学习得到的,在训练过程中由算法本身更新。例如线性回归中的权重和偏置项,深度神经网络中的权重矩阵等。

重要的是,我们在模型应用开发中需要区分超参数和学习参数。

二、Transformer框架中的超参数

这样理解【Transformer中的超参数】,中学生都能看懂!-AI.x社区

在 Transformer 框架中,有许多可以调整的超参数,这些超参数直接影响模型的性能、训练速度和资源消耗。以下是 Transformer 框架中常用的超参数分类和优化建议:

1. 模型结构相关的超参数

这些超参数决定了 Transformer 的架构复杂度和表达能力。

1.1 模型维度(Embedding Size 或 Hidden Size, (d_{model}))

作用: 决定每个输入 token 被映射的向量维度,同时也是多头注意力和前馈层的维度基础。

常见值:128、256、512、768、1024。

调整建议:

  • 小任务或资源有限时使用较小的值(如128或256)。
  • 大规模任务(如 GPT、BERT)常用768或更高(如1024、2048)。
  • 增大维度可以提高模型的容量,但也会显著增加计算成本和显存需求。

1.2 层数(Number of Layers, (L))

作用:Transformer 的深度,即编码器和解码器的层数(或仅编码器的层数,取决于具体任务)。

常见值:

  • BERT Base: 12 层。
  • BERT Large: 24 层。
  • GPT-3: 从 12 层到 96 层。

调整建议:

  • 对小数据集任务,选择6-12层。
  • 对大规模数据集任务,选择12层及以上。
  • 增加层数会提高模型表达能力,但可能导致训练时间增长且更容易过拟合。

1.3 注意力头数(Number of Attention Heads, (h))

作用:每层多头注意力机制中的头数。

常见值: 4、8、12、16。

调整建议:(h) 应满足 (d_{model}) 可被 (h) 整除(每个头的维度为 (d_{head} = d_{model} / h))。

  • 小模型任务:4或8头。
  • 大规模任务:12或16头。
  • 增加头数可以提高模型捕获不同子空间信息的能力,但也会增加计算开销。

1.4 前馈层维度(Feedforward Dimension, (d_{ffn}))

作用:前馈全连接层的隐藏层维度,通常是 (d_{model}) 的 3-4 倍。

常见值:2048、3072、4096。

调整建议:典型值是 (d_{ffn} = 4 \times d_{model})(如 BERT Base 中,(d_{model}=768),(d_{ffn}=3072))。

可以根据任务复杂度和资源调整,较小的任务可以用 (2 \times d_{model})。

1.5 最大序列长度(Max Sequence Length, (L_{max}))

作用:输入序列的最大长度,影响位置编码和内存占用。

常见值:128、256、512、1024。

调整建议:

  • 短文本任务:128或256。
  • 长文本任务:512或更高。
  • 增大序列长度会显著增加计算和内存需求(复杂度为 (O(L^2)))。

1.6 Dropout 比例

作用:防止过拟合,通过随机丢弃神经元来提升泛化能力。

常见值:0.1、0.2。

调整建议:

  • 对于大规模数据集,Dropout 比例可以较低(如 0.1)。
  • 小数据集可以增加 Dropout 比例(如 0.2-0.3)。

2. 优化相关的超参数

这些超参数影响模型的学习过程。

2.1 学习率(Learning Rate, (lr))

作用:控制参数更新的步长。

常见值:

  • Adam 优化器:(1e-4) 或 (5e-5)。
  • 学习率调度器(如 Warmup)后,峰值学习率通常在 (1e-4) 左右。

调整建议:

  • 使用 Warmup 学习率调度器(如在前 10,000 步逐渐增加学习率,然后逐渐衰减)。
  • 调整学习率范围:(1e-5) 到 (1e-3),根据任务复杂度和模型大小选择。

2.2 学习率调度器(Learning Rate Scheduler)

作用:动态调整学习率以提高收敛速度。

常见方法:

  • 线性衰减(Linear Decay):学习率线性递减。
  • 余弦退火(Cosine Annealing):学习率以余弦曲线递减。
  • Warmup + 衰减:先逐步增加学习率到峰值,再逐步衰减。

调整建议:

对 Transformer,Warmup 通常设置为 10% 的总训练步数(如 10,000 步)。

2.3 优化器

常见优化器:

  • Adam(常用)。
  • AdamW(带权重衰减,效果更佳)。

调整建议:

  • AdamW 是 Transformer 默认选择,推荐设置 (\beta_1 = 0.9),(\beta_2 = 0.98),(\epsilon = 1e-6)。
  • 权重衰减系数(Weight Decay):通常为 (1e-2) 或 (1e-3)。

2.4 批量大小(Batch Size)

作用:每次更新模型参数时使用的样本数量。

常见值:16、32、64、128。

调整建议:

  • 根据显存大小选择合适的批量大小。
  • 如果显存不足,可以使用梯度累积(Gradient Accumulation)模拟大批量训练。

3. 正则化相关的超参数

为了防止过拟合,Transformer 框架中可以使用以下正则化技术。

3.1 Dropout 比例

作用:随机丢弃部分神经元。

常见值:0.1。

调整建议:

  • 在注意力层、前馈层和嵌入层后都可以使用 Dropout。
  • 小数据集任务可以增加 Dropout 比例。

3.2 Label Smoothing

作用:在分类任务中,将目标标签的分布平滑化,防止模型过拟合。

常见值:0.1。

调整建议:在分类任务中广泛使用,推荐设置为 0.1。

4. 数据相关的超参数

Transformer 的性能也受数据处理和增强策略的影响。

4.1 数据增强

作用:增加训练数据的多样性。

常见策略:

  • 文本任务:随机删除、同义词替换、句子顺序打乱。
  • 图像任务(如 Vision Transformer, ViT):随机裁剪、翻转、旋转。
  • 时间序列任务:时间偏移、幅度缩放。

4.2 Tokenization 的词汇大小(Vocabulary Size, (V))

作用:影响嵌入层的大小和模型的词汇覆盖率。

常见值:

  • BERT:30,000。
  • GPT-2:50,000。

调整建议:

  • 小任务可以减少词汇大小以节省内存。
  • 多语言任务需要更大的词汇表。

5. 特定任务相关的超参数

  • 解码长度(Decoding Length):在生成任务(如翻译、文本生成)中,调整最大生成序列的长度。
  • Beam Search 大小:调整生成任务中的 Beam Search 宽度(常见值为3-10)。
  • 损失函数:根据任务选择合适的损失函数(如交叉熵、KL散度、回归误差等)。​

三、总结

在深度神经网络中,可以通过调整网络结构、优化算法、正则化方法和训练策略等多方面的超参数来提升性能。建议遵循以下策略:

1. 优先调整关键超参数(如学习率、网络深度、批量大小)。

2. 使用验证集评估超参数的效果。

3. 结合自动调参工具(如Grid Search、Random Search、Bayesian Optimization或Optuna)进行超参数优化。

本文转载自​​​​码农随心笔记​​​​,作者:码农随心笔记

收藏
回复
举报
回复
相关推荐