吴恩达老师的小短文翻译。
给定一百万有标记的图像,很多团队可以使用开源资源搭建一个优秀的分类器。但是如果你为一个工厂搭建一个检查智能机刮痕的视觉识别系统情况就不一样了。没有一个智能手机厂商会制造一百万有刮痕的手机,因此一百万有刮痕的手机图像不会有。在这个应用中,需要用100个或者10个图像来达到好的表现。
深度学习已经在拥有大量用户和大数据的消费者互联网公司中得到了巨大的应用,但是为了让它打入数据集规模较小的其他行业,需要更好的小数据技术。
在上面描述的制造业系统中,样本的绝对值很小。但当数据集规模较大,而特定重要类的出现频率较低时,也会出现小数据的问题。
例如你用100000张图像训练一个X光诊断系统。如果训练集里有极少数的人有疝气,那么算法可以获得高的训练集测试集正确率,但是仍然在疝气诊断中表现不好。
小数据问题很难解决因为大多数算法从总体上优化一个损失方程。因此算法对占比极少的类别给很低的权重,在对这些类别的预测上表现不好。给这些稀少类别1000倍的权重也不能解决问题,因为这样引入了过分的变化幅度。
我们在自动驾驶领域也看到这个问题。我们想可靠的检测到行人,即使行人看起来是不常见的样子,比如举着雨伞同时推着手推车。我们有海量的自动驾驶数据,但是在重要但稀少的案例上取得好的表现仍然是一个挑战。
我们怎么解决小数据问题呢?我们仍然在建立小数据算法的初级阶段,但是下面一些方法:
1. 迁移学习(transfer learning),我们从相关任务中学习然后把学到的知识迁移。这包括自我监督学习的变化,其中相关任务可以由廉价的未标记数据组成。
2. 一次学习(one-shot learning)或少量学习(few-short learning)。我们从多个训练集数据较少的相关任务中学习,希望最后可以在我们感兴趣的问题上也表现良好。可以在deep learning specialization中找到一个one-shot learning的例子。
3. 依赖人工经验,例如通过设计更负责的机器学习流(machine learning piplines)。一个AI系统有两个部分的主要知识来源:一是数据,另外一个是工程师团队的先验知识。如果我们数据量小,那可能需要投放更多的先验知识(prior knowledge,即经验)
4. 数据增强和数据合成
有基准才能推动进步,因此我积极推动不同领域的小数据效果的基准的制定。当训练集很小,机器学习的表现会更多样,因此这类基准需要允许研究者对大量的小数据集进行平均,以获得统计上有意义的进度度量。
我的团队在研究新的小数据技术,因此我希望未来可以和大家分享更多细节。