我为分类(0/1)NLP任务开发了ML模型,并将其部署在生产环境中。向用户显示模型的预测,并且用户可以选择给出反馈(如果预测是正确/错误的话)。
如何在模型中不断加入此反馈?从用户体验的角度来看,你不希望用户为特定输入纠正/教导系统超过两次/三次,系统会快速学习,即反馈应该“快速”合并。 (Google优先收件箱以无缝方式执行此操作)
如何建立我的系统可以改进的“反馈循环”?我在网上搜索了很多但找不到相关资料。任何指针都会有很大的帮助。
请不要说通过包含新数据点从头开始重新训练模型。肯定不是谷歌和Facebook如何建立他们的智能系统
进一步解释我的问题 - 想想谷歌的垃圾邮件检测器或他们的优先收件箱或他们最近的“智能回复”功能。众所周知,他们有能力学习/合并(快速)用户提要。
当它快速整合用户反馈时(即用户必须每个数据点教授系统正确的输出2-3次并且系统开始为该数据点提供正确的输出)并且它也是确保它保持旧的学习,并且不会开始在较旧的数据点上提供错误的输出(之前它提供正确的输出),同时结合新数据点的学习。
我没有找到任何关于如何构建此类系统的博客/文献/讨论 - 一个智能系统,在ML系统中的详细回路中解释
希望我的问题现在更清楚了。
更新:我发现的一些相关问题是:
Does the SVM in sklearn support incremental (online) learning?
https://datascience.stackexchange.com/questions/1073/libraries-for-online-machine-learning
http://mlwave.com/predicting-click-through-rates-with-online-machine-learning/
更新:我仍然没有具体的答案,但这样的配方确实存在。请阅读以下博客Machine Learning != Learning Machine中的“从反馈中学习”部分。在这个Jean谈到“向机器添加反馈摄取循环”。在here,here,此处4相同。
答案 0 :(得分:1)
构建一个可以根据反馈更新的简单轻型模型。在线机器学习为此提供了许多候选人
大多数优秀的在线分类器都是线性的。在这种情况下,我们可以通过一个小的浅层神经网络将它们组合在一起并实现非线性
答案 1 :(得分:1)
可能有几种方法可以做到这一点:
1)您可以将从用户那里获得的反馈合并到仅训练模型的最后一层,保持所有其他层的权重不变。直观地说,例如,在CNN的情况下,这意味着您使用模型提取特征,但稍微调整分类器以考虑特定用户的特性。
2)另一种方法可能是建立一个全局模型(在大型训练集上训练)和一个用户特定的简单逻辑回归。对于最终预测,您可以组合两个预测的结果。请参阅谷歌的this paper,了解他们如何为优先收件箱做这件事。