-1

我使用 BERT(来自 huggingface)情绪分析进行训练,这是一项 NLP 任务。

我的问题是指学习率。

EPOCHS = 5                                                                                                                                                                                
optimizer = AdamW(model.parameters(), lr=1e-3, correct_bias=True)                  
total_steps = len(train_data_loader) * EPOCHS
scheduler = get_linear_schedule_with_warmup(                                    
  optimizer,
  num_warmup_steps=0,                                                          
  num_training_steps=total_steps
)
loss_fn = nn.CrossEntropyLoss().to(device)

你能解释一下如何阅读 1e-3 吗?

这是步数的密度还是衰减的值。

如果是后者,是线性衰减吗?

如果我以 3e-5 的值进行训练,这是 NLP 任务的拥抱面的推荐值,我的模型很快就会过拟合:训练损失降至最低,验证损失增加。

学习率 3e-5:

3e-5

如果我以 1e-2 的值进行训练,我会在验证的损失值方面得到稳步提高。但是在第一个 epoch 之后验证准确度并没有提高。见图片。为什么即使损失下降,验证值也不会增加。这不是矛盾吗?我认为这两个值是对彼此的解释。

学习率 1e-2:

1e-2

你会推荐什么?

4

1 回答 1

0

在反向传播中对权重的每次更新都使用一个称为学习率的参数进行加权。如果较小,则您正在以较小的步长向最小值迈进。

有时建议您是否过度拟合以降低学习率(并增加 epoch 的数量),但也有其他方法可以对抗过度拟合。一个好的学习率应该能让你在足够的时间内达到一个好的最小值。这是你需要尝试的东西。

于 2020-06-26T11:57:10.153 回答