我觉得使用小数据进行机器学习的技术没有得到足够的讨论。这是有道理的,因为许多 ML 应用程序只能通过收集大量数据才能实现。在小数据集上运行 Kaggle 竞赛基本上与运行“猜随机数”竞赛相同。为了评估某种“小数据”方法的性能,你需要相当多的小数据集,这会很麻烦,所以没有人真正去实现过它。

此外,公司只是喜欢吹嘘他们的数据有多大。但是只能处理小型数据集有很多正当理由:

  • 数据太昂贵而无法获取
  • 不存在比已收集更多的数据
  • 数据过时如此之快,以至于只能将少量数据用于培训目的

我认为基本上有两种方法/哲学来处理这个问题:

关于小数据机器学习的一些思考

规模就是你所需要的——AGI 即将到来。

虽然您尝试解决的特定问题可能没有足够的数据,但您可以利用的稍微相邻的问题中可能有很多数据。这就是元学习、少样本学习、迁移学习和多任务学习的全部内容。您可以使用无数种不同的技术。如果您想获得概览,可以观看由领先的元学习研究人员之一 Chelsea Finn 提供的免费斯坦福讲座。但也许你真的不需要?在我看来,Transformers 正逐渐成为一种非常通用的架构,只要提供足够的计算和数据,它就可以处理各种问题。

这种方法的一个例子是使用一个经过 TB 级文本训练的大型语言模型来解决您估计客户电子邮件的愤怒程度的特定问题。这是一个“小数据”问题,因为数据集大小有限,您真的不想再生成任何训练样本。

但是同样的方法也可以用于时间序列数据之类的东西。这里相邻的问题可能是由于数据漂移而不再是当前的旧时间序列。或者,您可以使用增强技术综合创建数据

本身就是一个大型语言模型

当然,也可能存在您甚至无法访问来自相邻问题的数据的情况。在这些可怕的情况下,你只有一种追索权。与其让模型决定应该如何进行预测,不如让你自己决定模型应该如何进行预测。这是统计学家几十年来一直使用的传统方法。我使用过的一个工具是Tensorflow Lattice。它可以通过确定单调性、凸性和成对信任等约束来注入您的领域知识。这非常方便,因为您可以使模型非常灵活,同时防止过度拟合。

这种工作方式非常有趣,因为您可以将自己独特的见解带到要承受的问题上。但也存在风险:您对问题的假设可能是错误的,或者问题的性质会随着时间的推移而缓慢变化,并且预测质量会下降。