ml.net - 如何在运行时训练 ML .Net 模型
问题描述
有没有办法通过用户输入在运行时训练一个 ml .net 模型?我已经创建了一个文本分类模型,在本地对其进行了训练,部署了它,现在我的用户正在使用它。
需要的工作流程:
文本将被分类,类别显示给用户,他可以接受它或选择另一个预定义的类别,然后这个反馈应该再次训练模型。
谢谢!
解决方案
您所描述的似乎是在线学习。
ML.NET 没有任何真正的“在线”模型(我的意思是,可以通过示例适应新数据并立即刷新的模型):所有 ML.NET 算法都是“批量”训练器,需要(通常大)训练数据语料库以生成模型。
如果您的情况允许,您可以将用户的响应汇总为“附加训练数据”,并使用此数据定期重新训练模型(除了较旧的数据,可能是下采样或以其他方式衰减)。
正如@Jon 所指出的,对上述机制的轻微修改是“在一批新数据上逐步训练现有模型”。这仍然是批处理方法,但可以减少再训练时间。
ML.NET 的多类训练器中,仅LbfgsMaximumEntropyMulticlassTrainer
支持这种模式(参见文档)。
将这种方法发挥到极致,并在一个示例的每个“批次”上“重新训练”模型可能很诱人。除非你真的、真的知道自己在做什么,否则我建议不要这样做:这样的训练机制很可能会迅速过度拟合并造成灾难性的后果。
推荐阅读
- perl - 为什么 Perl 在循环期间运行不在循环中的代码?
- sql - 为什么我在 Redshift for select insert into 中收到此错误?
- java - 如何同步此代码以等待 AsyncTask
- python - Python = 在 DEF 中
- vba - 通过 Visual Basic 从 Access 表中获取列的名称
- xamarin - Xamarin.iOS:每次打开应用程序时,自定义视图会在彼此之上多次出现
- ios - 如何在 Expo 管理的工作流程中本地化 `app.json` 中的 IOS 使用描述?
- fish - `test` 命令的 `-t` 运算符不能正确识别非 tty 文件描述符
- sql - 如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?
- c# - 如何在 C# 中进行并发 API 调用?