Transformer 有两个模型的规模大小标准:base、big。具体去thumt的models文件夹下的Transformer 模型实现可以看到其参数大小。
我们可以从Transformer 模型的原论文(Attention Is All You Need)中看到,Transformer 有两个模型的规模大小标准:base、big。
Transformer模型的超参数
Transformer模型的超参数,对模型的性能和训练过程有重要影响。下面是每个参数的解释:
- pad: 用于填充句子长度不足时的占位符。
- bos: 开始符号(beginning-of-sentence)的标记。
- eos: 结束符号(end-of-sentence)的标记。
- unk: 未知单词的标记。
- hidden_size: Transformer模型中所有隐藏层的大小。
- filter_size: Feed-Forward层中间层的大小。
- num_heads: 多头自注意力机制中的头数。
- num_encoder_layers: 编码器的层数。
- num_decoder_layers: 解码器的层数。
- attention_dropout: 注意力机制中的dropout概率。
- residual_dropout: 残差连接中的dropout概率。
- relu_dropout: ReLU激活函数中的dropout概率。
- label_smoothing: 标签平滑的参数。
- normalization: 归一化的方式,可以是"before"(在残差连接之前)或"after"(在残差连接之后)。
- shared_embedding_and_softmax_weights: 是否共享编码器和解码器中的嵌入层和softmax层的权重。
- shared_source_target_embedding: 是否共享编码器和解码器中的源语言和目标语言的嵌入层权重。
- warmup_steps: 学习率线性增加的步数。
- train_steps: 训练步数。
- learning_rate: 学习率。
- learning_rate_schedule: 学习率调整策略,可以是"linear_warmup_rsqrt_decay"(线性增加+平方根衰减)或"constant"(不调整)。
- batch_size: 训练时的batch大小。
- fixed_batch_size: 是否使用固定的batch大小。
- adam_beta1: Adam优化器中的beta1参数。
- adam_beta2: Adam优化器中的beta2参数。
- adam_epsilon: Adam优化器中的epsilon参数。
- clip_grad_norm: 梯度裁剪的阈值。
base参数:
pad="<pad>",
bos="<eos>",
eos="<eos>",
unk="<unk>",
hidden_size=512,
filter_size=2048,
num_heads=8,
num_encoder_layers=6,
num_decoder_layers=6,
attention_dropout=0.0,
residual_dropout=0.1,
relu_dropout=0.0,
label_smoothing=0.1,
normalization="after",
shared_embedding_and_softmax_weights=False,
shared_source_target_embedding=False,
# Override default parameters
warmup_steps=4000,
train_steps=100000,
learning_rate=7e-4,
learning_rate_schedule="linear_warmup_rsqrt_decay",
batch_size=4096,
fixed_batch_size=False,
adam_beta1=0.9,
adam_beta2=0.98,
adam_epsilon=1e-9,
clip_grad_norm=0.0
$Transformer_{base}$模型中:
- 隐藏层的大小为(hidden_size):512。
- Feed-Forward层中间层的大小为(filter_size):2048。
- 多头自注意力机制中的头数为(num_heads):8。
- 编码器的层数(num_encoder_layers)和解码器的层数(num_decoder_layers)都为:6
big参数:
在上面base参数的基础上,修改其中一些参数作为$Transformer_{big}$模型的参数。
hidden_size = 1024
filter_size = 4096
num_heads = 16
residual_dropout = 0.3
learning_rate = 5e-4
train_steps = 300000
$Transformer_{big}$模型中:
- 隐藏层的大小为(hidden_size):1024。
- Feed-Forward层中间层的大小为(filter_size):4096。
- 多头自注意力机制中的头数为(num_heads):16。
- 编码器的层数(num_encoder_layers)和解码器的层数(num_decoder_layers)都为:6
需要注意的是,不同规模的Transformer模型具有不同的性能、计算资源和存储空间要求,需要根据应用场景和计算资源的可用性来选择合适的模型规模。同时,也可以通过微调预训练模型、调整超参数等方法来对Transformer模型进行调整和优化。
标签:Transformer,训练,模型,num,参数,dropout,size From: https://www.cnblogs.com/zhangxuegold/p/17524973.html