点选上方关注,All in AI 中国
我们经常听说,大资料是那些成功的机器学习专案的关键。
这是一个主要问题:许多组织没有你需要的资料。
如果没有最基本的原材料,我们如何原型化和验证机器学习思想?在资源稀缺的情况下,如何有效地利用资料获取和创造价值?
在我的工作场所,我们为客户制作了很多功能原型。正因为如此,我经常需要让小资料走得更远。在本文中,我将分享7个技巧来改进使用小型资料集进行原型设计时的结果。
1. 要意识到你的模型不能很好地推广
这应该是目前最重要的。你正在建立一个模型,它的知识是浩瀚的知识海洋中的一小部分,而这种情况应该是必然的。
如果你正在构建一个基于室内照片的计算机视觉原型,不要期望它在户外工作得很好。如果你有一个基于聊天室玩笑的语言模型,不要期望它适用于梦幻的小说。
确保你的经理或客户能理解这一点。这样,每个人都可以对模型应该交付的结果有一个现实的期望。它还为提出有用的新的KPI提供了机会,以便在原型范围内外对模型效能进行量化。
2.建立良好的资料基础设施
在许多情况下,客户端没有你需要的资料,公共资料也不是一个选项。如果原型的一部分需要收集和标记新资料,请确保你的基础设施尽可能少地产生摩擦。
你需要确保资料标记非常简单,以便非技术人员也可以使用。我们已经开始使用Prodigy,我认为这是一个很好的工具:既可访问又可扩充套件。根据专案的大小,你可能还想设定一个自动资料摄取器,它可以接收新资料并自动将其提供给标记系统。
如果将新资料快速而简单地汇入系统,你将获得更多的资料。
3.做一些资料扩充
通常可以通过增加现有的资料来扩充套件资料集。它是对资料进行微小的更改,而不应该显著地更改模型输出。例如,如果一只猫旋转了40度,它的影象仍然是一只猫的影象。
在大多数情况下,增强技术允许你生成更多的"semi-unique"资料点来训练模型。首先,可以尝试在资料中新增少量高斯噪声。
对于计算机视觉,有许多简单的方法来增强影象。我对Albumentations库有很多的经验,它做了许多有用的影象转换,同时保持你的标签完好无损。
许多人发现另一种有用的增强技术是Mixup。这种技术实际上是获取两个输入影象,将它们混合在一起并组合它们的标签。
在扩充套件其他输入资料型别时,需要考虑哪些转换会更改标签,哪些不会。
4.生成一些合成数据
如果你已经用尽了扩充套件真实资料的选项,你可以开始考虑建立一些假资料。生成合成资料也是覆盖真实资料集没有的一些边缘情况的好方法。
例如,许多机器人强化学习系统(如OpenAI的Dactyl)在部署到真实机器人之前,都是在模拟的3D环境中进行训练的。对于影象识别系统,你同样可以构建3D场景,为你提供数千个新的资料点。
有许多方法可以建立合成数据。在Kanda,我们正在开发一个基于 turntable-based 的解决方案,来建立用于物件检测的资料。如果你有很高的资料需求,你可以考虑使用Generative Adverserial Networks 来建立合成数据。要知道GAN是出了名的难训练,所以首先要确保它是可以建立的。
有时你可以将这些方法结合起来:苹果有一个非常聪明的方法,使用GAN来处理3D建模人脸的影象,使其看起来更像照片。
5. 小心幸运的分割
在训练机器学习模型时,通常会将资料集按照一定的比例随机分割成训练集和测试集。通常情况下这很好。但是,在处理小资料集时,由于训练示例的数量较少,存在很高的噪声风险。
在这种情况下,你可能会意外地得到一个幸运的分割:一个特定的资料集分割,你的模型将在其中执行并很好地推广到测试集。
而在这种情况下,k-fold交叉验证是更好的选择。本质上,你将资料集分割为k个"folds",并为每个k训练一个新的模型,其中一个folds用于测试集,其余的用于训练。这控制了你所看到的测试效能不仅仅是由于幸运(或不幸)的分割。
6. 使用迁移学习
如果你使用的是某种标准化的资料格式,比如文字、影象、视讯或声音,那么你可以利用其他人之前在这些领域所做的所有工作来进行迁移学习。这就像站在巨人的肩膀上。
当你进行迁移学习时,你采用别人建立的模型(通常,"其他人"是Google、Facebook或一所主要大学),并根据你的特殊需要对它们进行微调。
迁移学习之所以有效,是因为大多数与语言、影象或声音有关的任务都具有许多共同的特征。对于计算机视觉,它可以检测特定型别的形状、颜色或图案。
最近,研究出来一个高精度的目标检测原型。通过微调一个MobileNet单镜头检测器,我可以极大地加快开发速度,该检测器是在Google的Open Images v4资料集(约900万标记影象!)上训练的。经过一天的训练,我能够使用~1500张带标签的影象生成一个相当健壮的物件检测模型,测试图为0.85。
迁移学习是有效的,因为与语言、影象或声音有关的大多数任务都有许多共同特征。 对于计算机视觉,它可以是检测某些型别的形状、颜色或图案。
7. 尝试一组"weak learners"
有时候,你不得不面对这样一个事实:你没有足够的资料来做任何花哨的事情。幸运的是,有许多传统的机器学习算法可以使用,它们对资料集的大小不那么敏感。
当资料集较小且资料点维度较高时,支援向量机等算法是一个很好的选择。
不幸的是,这些算法并不总是像最先进的方法那样精确。这就是为什么他们可以被称为"weak learners",至少与高度引数化的神经网络相比。
提高效能的一种方法是将这些"weak learners"(这可以是一组支援向量机或决策树组合起来,以便他们"一起工作"来生成预测。这就是整合学习的全部内容。