如何重新训练模型?

机器学习模型的训练,通常是通过学习某一组输入特征与输出目标之间的映射来进行的。一般来说,对于映射的学习是通过优化某些成本函数,来使预测的误差最小化。在训练出最佳模型之后,将其正式发布上线,再根据未来生成的数据生成准确的预测。这些新数据示例可能是用户交互、应用处理或其他软件系统的请求生成的——这取决于模型需要解决的问题。在理想情况下,我们会希望自己的模型在生产环境中进行预测时,能够像使用训练过程中使用的数据一样,准确地预测未来情况。

当我们将模型部署到生产中时,往往会假设未来将使用到的数据会类似于过去模型评估期间所使用的数据。具体来说,我们可能会假设,特征和目标的分布将保持相当的恒定。但是这种假设通常不成立。趋势会随着时间的推移而变化,人们的兴趣会随着季节的变化而变化,股票市场会起伏不定。因此,我们的模型必须适应这些变化。

世界是持续变化的,因此模型部署应视为一个连续的过程,而不是完成第一次部署之后就扭头去开展下一个项目。如果机器学习团队的工程师发现数据分布与原始训练集的数据分布有明显出入,则需要重新训练模型。

测量实时数据上已部署模型的准确性是一个众所周知的难题。之所以出现这种困难,部分原因是我们需要访问生成的模型的预测和基本事实信号。出于以下这些原因,这可能无法实现:

  ·预测的数据在生成后没有存储——别让这种事发生在你身上。

  ·预测已存储,但是您无法访问基本事实标签。

  ·预测和标签均可用,但不能结合在一起。

即使预测和标签可以合并在一起,也可能需要一段时间才能使用标签。例如一个可以预测下一季度收入的财务预测模型。在这种情况下,只有在该季度过去之后才能观察到实际收入,所以直到那个时候你才能够量化模型的效果。在此类预测问题中, 回填预测(即训练模型,并根据过去的历史数据生成预测)可以帮助您了解模型性能下降的速度。

模型再训练到底是什么意思?

模型再训练似乎是一个超负荷的操作,它是否只涉及到寻找现有模型架构的新参数?对于更改超参数搜索空间怎么样?如何搜索不同的模型类型(RandomForest,SVM等)?我们可以包括新特征还是可以排除以前使用的特征?这些都是很好的问题,因此尽可能明确这些问题是非常重要的。要回答这些问题,重要的是直接考虑我们要解决的问题——也就是说,减少模型漂移对我们部署的模型的影响。

在将模型部署到生产数据之前,科学家需要经过严格的模型验证过程,其中包括:

  ·汇编数据集–收集来自不同来源(例如不同数据库)的数据集。

  ·特征工程–从原始数据中提取列,提高预测性能。

  ·模型选择–比较不同的学习算法。

  ·错误估计–在搜索空间上进行优化,找到最佳模型并估计其泛化误差。

此过程会产生一些最佳的模型,然后将其部署到生产中。由于模型漂移具体是指所选模型的预测性能由于特征/目标数据分布的变化而下降,因此模型再训练不应该带来不同的模型生成过程。确切地说,重新训练只是指在新的训练数据集上重新运行生成先前选择的模型的过程。功能、模型算法和超参数搜索空间都应保持相同。可以这样想,再训练不涉及任何代码更改,只涉及改变训练数据集。

首先,您需要确定一个发散的阈值,它将触发模型再训练。如果阈值太低,则您可能会过于频繁地进行再训练,从而带来高计算成本。如果阈值过高,则可能会因为不经常进行再训练,而导致生产中的模型偏劣质。这比看起来要复杂得多,因为你必须去确定,要收集多少新的训练数据,才能代表世界的新状态。在世界已经发生改变时,用一个训练集太小的模型来代替现有的模型也是没有意义的。

那么问题是:如何重新训练模型?

如何重新训练模型?

方法一:

  1. 生成新数据集
  2. 用新数据集随机生成训练与验证集
  3. 用历史数据随机生成训练与验证集
  4. 用新数据集训练验证,达到指定指标(如90%正确率)
  5. 用历史验证集验证是否达到指定指标,如果没有达到,用历史数据集训练达到指定指标
  6. 用新数据验证集验证是否达到指定指标,如果没有达到,重复4,5,如何达到,结束训练

不足:指标设定过高不合适,导致只训练新数据,最后模型对旧数据没有泛化能力

方法二:

    '''
    1. train new nscore
    2. train old oscore
    oscore,nscore
    if oscore>nscore:
        train new
    else:
        train old
    '''

不足:数据样本分布不均匀,导致训练结果不理想,比如历史数据过多,新数据过少,大部分时间都在训练历史数据,等历史数据训练完了,新数据验证结果不理想

解决方法:

一:对大量历史数据进行随机采样生成子数据集

二:

训练TTPLA开源数据与新数据时,TTPLA开源数据训练score>0.7后,需要降低学习率为1e-6,

学习率从1e-5降低到1e-6后训练AB数据集结果如下:

new: 0.8300  old: 0.74341                                                             

new: 0.84884 old: 0.7572

两个数据集都有改善

若学习率不变,任然为1e-5训练新数据后,新数据退化为0.79,再次训练新数据Score达到98,TTPLA数据退化为0.4

new: 0.81211 old: 0.7608391                                                                                              

new: 0.76502 old: 0.752094                                                                                            

new: 0.9898790        old: 0.4591638                                                                                            

new: 0.7891513 old: 0.697236657                                                                                            

new: 0.987        old: 0.44792                                                                                            

new: 0.8237 old: 0.761

学习率过大,A数据集训练完,B数据集变差   

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ComfyUI是一个用于训练模型的开源工具,它基于PyTorch和Transformers库。下面是使用ComfyUI训练模型的一般步骤: 1. 安装ComfyUI:首先,你需要安装ComfyUI库。你可以通过pip命令来安装:`pip install comfyui`。 2. 准备数据集:在使用ComfyUI训练模型之前,你需要准备一个合适的数据集。数据集应该包含输入文本和对应的标签。确保数据集的格式符合ComfyUI的要求。 3. 创建模型配置文件:在使用ComfyUI训练模型之前,你需要创建一个模型配置文件。这个配置文件包含了模型的参数设置,如模型类型、隐藏层大小、学习率等。你可以根据自己的需求进行配置。 4. 编写训练脚本:使用ComfyUI进行模型训练需要编写一个训练脚本。在脚本中,你需要指定数据集路径、模型配置文件路径以及其他训练相关的参数。你可以使用ComfyUI提供的API来加载数据集、构建模型、定义损失函数和优化器等。 5. 开始训练:运行训练脚本,开始训练模型。ComfyUI会自动加载数据集、构建模型,并在每个epoch结束时计算损失并更新模型参数。你可以根据需要设置训练的epoch数和批次大小。 6. 保存模型:训练完成后,你可以保存训练好的模型。ComfyUI提供了保存模型的API,你可以指定保存路径和模型名称。 以上是使用ComfyUI训练模型的一般步骤。具体的实现细节和参数设置可以参考ComfyUI的官方文档。祝你使用ComfyUI训练模型顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值