我有一个关于机器学习软件流程/架构设置的概念性问题。我有一个网络应用程序,试图整合一些类似于Facebook人脸识别的机器学习算法(但针对一般物体)。所以模型会更擅长分类上传到我服务中的特定图像(就像fb可以分类特定的人一样)。
大致轮廓如下:
事件: 用户上传图像;尝试对图像进行分类如果失败: 在图像中的物体上画一个边界框;返回图像交互: 用户标记框中的物体;将带标签的图像发送回服务器????: 以某种方式使用这对新的图像/标签来微调图像分类器
我需要帮助处理最后一步。通常在迁移学习或一般训练中,程序员拥有一个充满图像的大型数据库。在我的案例中,我有一个预训练的模型(谷歌的inception-v3),但我的微调数据库在用户开始上传内容之前是不存在的。
那么,我如何使用这种标记方法来构建一个专业化的数据库呢?我相信FB也遇到了这个问题并解决了它,但我找不到他们的解决方案。经过一些思考(和不确定的研究),我能想到的唯一策略是:
A) 积累标记的图像并进行大批量训练B) 以某种方式增量输入一些上传的标记图像,并在几天/几周内逐渐专业化图像分类器。
理想情况下,我想避免选项A,但我不知道选项B是否现实,或者是否有其他方法来完成这个任务。谢谢!
回答:
是的,这听起来像是在线学习的经典例子。
特别是对于深度卷积网络,给定一些新数据,人们可以仅对其运行几次随机梯度下降。例如,可能还需要根据需要调整学习率(这样可以根据样本的重要性调整,例如,根据对其的信心)。你也可以,如你所提到的,储存“小批量”来进行这种操作(这取决于你的设置)。
此外,如果你想让你的学习器在不同用户之间进行更多专业化,可以查找领域适应。