首页 > 解决方案 > 如何在运行时训练 ML .Net 模型

问题描述

有没有办法通过用户输入在运行时训练一个 ml .net 模型?我已经创建了一个文本分类模型,在本地对其进行了训练,部署了它,现在我的用户正在使用它。

需要的工作流程:

文本将被分类,类别显示给用户,他可以接受它或选择另一个预定义的类别,然后这个反馈应该再次训练模型。

谢谢!

标签: ml.net

解决方案


您所描述的似乎是在线学习

ML.NET 没有任何真正的“在线”模型(我的意思是,可以通过示例适应新数据并立即刷新的模型):所有 ML.NET 算法都是“批量”训练器,需要(通常大)训练数据语料库以生成模型。

如果您的情况允许,您可以将用户的响应汇总为“附加训练数据”,并使用此数据定期重新训练模型(除了较旧的数据,可能是下采样或以其他方式衰减)。

正如@Jon 所指出的,对上述机制的轻微修改是“在一批新数据上逐步训练现有模型”。这仍然是批处理方法,但可以减少再训练时间。

ML.NET 的多类训练器中,仅LbfgsMaximumEntropyMulticlassTrainer支持这种模式(参见文档)。

将这种方法发挥到极致,并在一个示例的每个“批次”上“重新训练”模型可能很诱人。除非你真的、真的知道自己在做什么,否则我建议不要这样做:这样的训练机制很可能会迅速过度拟合并造成灾难性的后果。


推荐阅读