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