<>摘要

本文讲述了什么是one-shot问题,以及one-shot问题的解决方案。并从这种解决问题的思路中得到启发,得到了一种deep
learning的新的应用思路。

<>one-shot问题

在我们训练有监督学习模型时,为了让模型“见多识广”,我们会在构建训练集时,注重每个类别样本数的平衡。


但大家有没有想过另一种情况,加入我们做你公司员工的人脸识别系统,每个员工只会给你一张图片吧,每个样本一张图片,通常是没法训练机器学习模型来解决分类问题的。还有你公司的员工经常变动,有新人加入或老员工离职,我们都要重新训练一次模型。

所谓的one-shot问题,就是指这种情况,对每一个类别,只提供一个或少量训练样本,且样本又有变动性。

怎么样才能做到对小样本也能适应,样本的训练集变化也不需要重新训练模型呢?

<>如何解决


传统的分类问题,Y值的label标注,都是用类别标号进行标注(或者one-hot编码)。这样我们学习得到的模型,就是分类模型,能直接通过softmax给出类别标号。

要解决one-shot问题,就不能让模型学习直接分类了,因为每一个类别只有一个样本,是无法通过学习得到好模型的。

让模型学习(得到)一个similarity函数,就是解决one-shot问题的方案。这样的模型,输出的值不是类别,而是给定(输入)两幅图像的相似度。

这样就能解决刚刚提高的人脸识别中的两个问题:

* 每个员工只给你一张图片,但你用两两配对作为模型输入时,每张图片都能被模型学习多次
* 有新员工入职或老员工离职,也不需要重新训练模型,因为模型是做相似度输出,并不涉及具体的label
<>新思路

解决分类问题,不让模型直接学习分类(直接输出类别标注),而是让模型学习相似度函数,就解决了deep
learning量大难题:样本少;训练集样本变动(减少、增加某些新的label)导致模型必须重新训练。

<>参考

* andrew ng “CNN deep learning” chapter-04