deep-learning - 在深度学习模型训练中修改学习率
问题描述
下面是配置从HuggingFace 转换器库中使用的TrainingArguments以微调 GPT2语言模型的代码。
training_args = TrainingArguments(
output_dir="./gpt2-language-model", #The output directory
num_train_epochs=100, # number of training epochs
per_device_train_batch_size=8, # batch size for training #32, 10
per_device_eval_batch_size=8, # batch size for evaluation #64, 10
save_steps=100, # after # steps model is saved
warmup_steps=500,# number of warmup steps for learning rate scheduler
prediction_loss_only=True,
metric_for_best_model = "eval_loss",
load_best_model_at_end = True,
evaluation_strategy="epoch",
learning_rate=0.00004, # learning rate
)
early_stop_callback = EarlyStoppingCallback(early_stopping_patience = 3)
trainer = Trainer(
model=gpt2_model,
args=training_args,
data_collator=data_collator,
train_dataset=train_dataset,
eval_dataset=test_dataset,
callbacks = [early_stop_callback],
)
epoch数为100,learning_rate为0.00004,early_stopping的耐心值为3。
该模型运行了5/100个 epoch,并注意到 loss_value 的差异可以忽略不计。最新的检查点保存为checkpoint-latest
.
现在我可以修改learning_rate
可能是0.01
从0.00004
最新保存的检查点恢复训练checkpoint-latest
吗?这样做会有效率吗?
还是要以新learning_rate
值进行训练,我应该从头开始训练?
解决方案
不,您不必重新开始训练。
改变学习率就像改变你的模型在你的损失函数决定的方向上迈出的大步。
您也可以将其视为迁移学习,其中模型有一些经验(无论多么少或不相关),并且weights
处于最有可能比随机初始化的状态更好的状态。
事实上,在训练中改变学习率被认为是深度学习中的一门艺术,如果你有充分的理由这样做,你应该改变它。
如果您或其他人想要“重现”您的模型的结果,您可能想写下您何时(为什么、什么等)这样做。
推荐阅读
- postgresql - 查找在我的电脑上运行的 libpq.dll 版本,用于针对 Postgres 数据库进行编译
- mule-studio - 在汇总值的同时合并两个 JSON 文件
- python - 从 python 获取值并将其添加到 ListView
- vue.js - 使用 raw-loader 从每个文件夹内的文件中获取数据
- c# - 将低延迟视频从 Raspberry Pi 流式传输到 UWP-APP 的最佳方式
- python - python请求下载通过页面上的下载按钮
- r - 无法在 R 下读取 .data 文件?
- powershell - 如何绑定将在 PowerShell 管道中存在的值?
- ios - 出现 VC 时显示取消按钮,按下同一个 VC 时不显示取消按钮
- java - TestNG XML 文件未按顺序运行测试 - Selenium Java