1 Zero-shot learning
零样本学习。零样本学习是一种机器学习模式,其中预训练的深度学习模型被要求对一个类别的样本进行泛化。零样本学习的理念类似于人类自然地发现数据类别之间的相似性,并以此来训练机器进行识别。
零样本学习的主要目标是能够在没有任何训练样本的情况下预测结果;机器必须识别训练期间未见过的类别的物体。零样本学习基于在训练期间输入的实例中已有的知识进行知识转移。
零样本学习旨在学习中间语义层和属性,然后将其应用于预测未见过的新类别数据。
例如,我们见过马,但从未见过斑马。如果有人告诉你斑马看起来像马但有黑白条纹,当你看到斑马时,你可能会认出来。
1.1 任务定义
利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集类别和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使得模型有效。
Zero-shot learning 就是希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。
1.2 零样本学习如何工作?
零样本学习的工作原理如下:
- 理解特征:计算机不仅从例子中学习,还学习描述不同事物的重要特征。例如,如果它在学习动物,它可能会知道猫有毛、胡须和锋利的爪子。
- 泛化:一旦理解了这些特征,计算机可以用它们来识别之前未见过的新事物。例如,如果它知道有毛和胡须的动物通常是猫,它可以猜测新看到的有这些特征的动物很可能是猫。
- 使用线索:有时,计算机会获得额外的信息来帮助它理解新事物。这可能是描述或标签,告诉它不同类别的特征。
- 测试:最后,我们测试计算机,看它能多好地识别新事物。我们给它未训练过的事物的图片或描述,看它是否能根据已学特征正确识别它们。
总体而言,零样本学习就像教计算机理解事物的本质,使它能对遇到的新事物做出有根据的猜测。这在我们无法在训练期间展示给计算机每个可能的例子时非常有用,使其能够自我学习和适应新情况。
1.3 实例
假设我们的模型已经能够识别马、老虎和熊猫了,现在需要该模型也识别斑马,那么我们需要告诉模型,怎样的对象才是斑马,但是并不能直接让模型看见斑马。所以模型需要知道的信息是马的样本、老虎的样本、熊猫的样本和样本的标签,以及关于前三种动物和斑马的描述。
通俗点说就是:假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马(意料之中的结局。。。)。
上述例子中包含了一个人类的推理过程,就是利用过去的知识(马、老虎、熊猫和斑马的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认。Zero-shot learning就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力。
2 One-shot learning
单样本学习,一种机器学习算法,它需要非常少的数据来识别或访问物体之间的相似性。单样本学习在深度学习模型中更有帮助。单样本学习中,机器学习算法仅需一个实例或不需要为每个类别提供大量样本来进行训练,最好的例子是计算机视觉图像和面部识别。
单样本学习的重要性和应用
- 单样本学习的目标是识别和认识物体的特征,类似于人类记住并训练系统利用先前知识分类新物体。
- 单样本学习在识别计算机视觉图像和面部识别、护照身份检查方面表现良好,个体应能准确分类不同的外貌。
- 单样本学习的一种方法是使用Siamese网络。
- 单样本学习应用于语音克隆、物联网分析、数学中的曲线拟合、单样本药物发现及其他医疗应用。
Zero-shot learning 指的是我们之前没有这个类别的训练样本。但是我们可以学习到一个映射X->Y。如果这个映射足够好的话,我们就可以处理没有看到的类了。
One-shot learning 指的是我们在训练样本很少,甚至只有一个的情况下,依旧能做预测。这是如何做到呢?可以在一个大数据集上学到general knowledge(具体的说,也可以是X->Y的映射),然后再到小数据上有技巧的update。
2.1 One-Shot Learning的意义
① 减少训练数据
深度学习需要大量的数据。如MNIST为了10个类别的区分,需要60000张训练图像,平均一个类别需要6000张训练图像。
One-Shot试图将一个类别的训练图像减少,极端情况时只有一张图片。
② 在新类别的数据出现时,无需重新训练
传统的神经网络无法处理没有出现在训练集中的类别。
如以员工刷脸打卡为例,使用深度神经网络,每一个新员工入职,都是一个类别,需要重新训练深度神经网络。如果每天都有新员工入职,每天都要重新训练网络,成本非常高。
One-Shot Learning可以无需重新训练即可应用于新的类别的数据。
One-shot learning 属于Few-shot learning的一种特殊情况。
3 Few-shot learning
小样本学习。少样本学习指的是用非常少的数据来训练模型,与需要大量数据的做法相反。少样本学习是元学习的一个典范,其中模型在元训练阶段被训练在若干相关任务上,因此它可以在仅有极少样本的情况下很好地泛化到未见过的数据。
如果训练集中,不同类别的样本只有少量,则称为Few-shot learning.
就是给模型待预测类别的少量样本,然后让模型通过查看该类别的其他样本来预测该类别。比如:给小孩子看一张熊猫的照片,那么小孩子到动物园看见熊猫的照片之后,就可以识别出那是熊猫。
少样本学习的重要性
- 减少数据收集,因为少样本学习需要较少的数据来训练模型,从而减少数据收集成本和计算成本。
- 在监督或无监督机器学习工具没有足够数据进行预测时,少样本学习非常有用。
- 人类可以在看到几个例子后轻松分类不同的手写字符,而机器则需要大量数据进行训练。少样本学习测试计算机是否能像人类一样从几个例子中学习。
- 机器可以使用少样本学习学习罕见疾病。它们使用计算机视觉模型通过少量数据分类异常情况。
少样本学习的应用
- 计算机视觉:字符识别、图像分类及其他图像应用(如图像检索、手势识别)和视频应用。
- 自然语言处理:解析、翻译、短评的情感分类、用户意图分类、文本分类、情感分析。
- 机器人:视觉导航、连续控制、从少量示范中学习操作动作。
- 音频处理:跨语言语音转换、用户间语音转换。
- 其他:医疗应用、物联网应用、数学应用、材料科学应用。
4 少样本、单样本和零样本学习的区别
- 当只有少量数据可用,并且需要仅使用现有少量数据来训练模型时,少样本学习非常有用。少样本学习可用于图像分类和面部识别领域。
- 另一方面,单样本学习使用的数据比少样本学习更少,或只使用一个实例或例子,而不是庞大的数据库。单样本学习在识别任何身份证明中的人像时更有用。
- 当没有可用于机器学习的训练数据时,算法仍需识别或分类物体,这种情况下零样本学习产生最佳结果。
Few-shot Learning V.S Zero-shot Learning
- 小样本学习的目的是在有少量训练数据的情况下能获得准确分类测试样本的模型
- 零样本学习的目的是预测训练数据集中没有出现过的类
零样本学习和小样本学习有很多共同的应用,如:
- 图像分类 (image classification)
- 语义分割 (semantic segmentation)
- 图像生成 (image generation)
- 目标检测 (object detection)
- 自然语言处理 (natural language processing)
另外单样本学习 (one-shot learning) 经常会和零样本学习混在一起。单样本学习是小样本学习问题的一个特例,它的目的是从一个训练样本或图片中学习到有关物体类别的信息。单样本学习的一个例子是,智能手机中使用的人脸识别技术。
总结
现在我们对少样本、单样本和零样本学习有了一个大致的了解,尽管它们有一些缺点。
主要收获是:
- 我们可以在数据量较少的情况下使用这些算法,这样收集大量数据来训练模型所需的时间更少。
- 对于深度学习模型,少样本、单样本和零样本学习是最佳选择。
- 单样本学习消除了对数十亿张图像进行模型训练的数据需求。
- 这些学习广泛应用于分类、回归和图像识别。
- 所有这些技术都有助于克服数据稀缺挑战并降低成本。