模型训练时,验证集是什么?验证的过程是推理吗?-模型训练论坛-模型训练-社区 | AheadAI
幻灯片-社区 | AheadAI
图标卡片
这是一个图标卡片示例
原创作品
这是一个图标卡片示例
灵感来源NEW
这是一个图标卡片示例
系统工具 GO
这是一个图标卡片示例

模型训练时,验证集是什么?验证的过程是推理吗?

image-20241112151402920

image-20241112151412833

出现此错误的原因是 evaluation_strategy="epoch" 指定了每个 epoch 后进行验证,但 Trainer 未传入 eval_dataset,导致验证数据集缺失。要解决此问题,有以下两种方法:

解决方案 1:提供 eval_dataset

修改代码,将验证数据集传递给 Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets["train"],  # 训练集
    eval_dataset=tokenized_datasets["validation"]  # 验证集
)

确保 tokenized_datasets 包含 "validation" 分区,如果没有,需要在数据预处理中创建验证集。例如,使用 train_test_split 来划分数据集:

from datasets import load_dataset

# 加载数据集并划分为训练集和验证集
dataset = load_dataset("wikitext", "wikitext-2-raw-v1")
tokenized_datasets = dataset.map(tokenize_function, batched=True, remove_columns=["text"])
tokenized_datasets = tokenized_datasets["train"].train_test_split(test_size=0.1)

解决方案 2:关闭验证

如果不需要验证,可以将 evaluation_strategy 改为 "no"

training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="no",  # 不进行验证
    per_device_train_batch_size=32,
    logging_dir="./logs",
    logging_steps=10,
    save_strategy="epoch",
    max_steps=1000
)

此时只会进行训练,不再执行验证步骤。

验证集 vs. 推理

验证集的作用是帮助评估模型在训练过程中是否出现过拟合或欠拟合,并指导模型的超参数调整。

验证集的作用:

  1. 评估泛化能力:验证模型在未见数据上的性能,帮助发现过拟合或欠拟合。
  2. 超参数调优:指导学习率、批次大小等超参数选择。
  3. 模型选择:在多模型中选择验证集上表现最好的模型。
  4. 早停机制:当验证损失不再下降时,停止训练。

推理的作用:

  1. 真实场景应用:在部署阶段,模型对新输入数据进行预测。
  2. 评估最终性能:使用测试集或实际数据,衡量模型实际效果。

区别:

  • 验证集:用于训练过程中的性能评估和优化,不更新模型参数。
  • 推理:是模型最终应用于新数据时的过程,只进行前向传播,评估模型的实用性和准确性。

验证集是训练中的工具,而推理是模型应用的最终目标。这是深度学习中易混淆的概念。

 

请登录后发表评论

    没有回复内容