社区计算机视觉课程文档
引言
并获得增强的文档体验
开始使用
导论
关于泛化
现在我们已经像学生为考试熬夜一样训练了我们的模型,真正的考验开始了!我们希望模型在训练期间获得的知识能够超越它所学习的特定图片(例如猫图片),使其能够识别爱丽丝和泰德的毛茸茸朋友等未见过的猫。可以把它想象成模型学习了猫的本质,而不仅仅是它在训练期间看到的那些特定的毛茸茸的脸。这种将知识应用于新情况的能力称为**泛化**,它区分了一个好的猫模型和一个仅仅记住猫图片的模型。你能想象一个没有泛化的平行宇宙吗?是的,这实际上很简单,你只需要用世界上所有猫的图片(假设它们只存在于地球上)来训练你的模型,包括爱丽丝和泰德的,然后找到一种方法来阻止当前的猫繁殖。所以,是的,这没什么大不了的。
实际上,当我们说模型应该泛化到所有它没有见过的猫图片时,我们是不正确的。它应该泛化到所有与其训练时图像数据来自相同分布的猫图片。简单来说,如果你用猫的自拍照训练你的模型,然后给它看一张卡通猫的图片,它可能无法识别。这两张图片来自完全不同的分布或领域。让你的猫自拍照模型能够识别卡通猫被称为**域适应**(我们稍后会简要提及)。这就像把你模型学到的所有关于真实猫的知识,教它识别它们的动画表亲。
所以,我们已经从泛化(识别未见过的爱丽丝和泰德的猫图片)发展到域适应(识别动画猫图片)。但我们比这更贪心。你不仅希望你的模型能够识别你的猫图片,或者爱丽丝和泰德的猫图片,甚至不仅仅是卡通猫!如果你的模型是根据猫图片训练的,你还希望它能识别羊驼和猎鹰的图片。
嗯,现在我们进入了零样本学习(也称为 ZSL)的领域。
什么是零样本学习?
让我们先用一个定义来热身。零样本学习是一种设置,在这种设置中,模型在测试时会遇到**只**属于它在训练期间未曾接触过的类别的图像。换句话说,训练集和测试集是**不相交的**。温馨提示:在经典的零样本学习设置中,测试集只包含模型以前从未见过的类别的图片,没有一张来自它训练时的图片。这可能看起来有点不切实际,就像要求学生只用他们从未学习过的材料来通过考试一样。幸运的是,零样本学习有一个更实用的版本,它没有这个严格的规则,被称为广义零样本学习,或 GZSL。这种更灵活的方法允许测试集包含已见过的和未见过的类别。这是一种更现实的场景,反映了现实世界中事物的工作方式。
零样本学习的历史
深度学习开始变得可行后不久,就出现了我们是否能让模型在没有明确训练过的任务上表现良好的问题。2008年,ZSL 的种子在人工智能促进协会(AAAI)会议上发表的两篇独立论文中播下。第一篇题为**无数据分类**的论文,探讨了自然语言处理(NLP)背景下的零样本学习概念。第二篇题为**零数据学习**的论文,重点将 ZSL 应用于计算机视觉任务。零样本学习这个术语本身最早出现在2009年的 NeurIPS 会议上,在一篇由……杰弗里·辛顿共同撰写的论文中!
下面我们来对 ZSL 最重要的时刻进行一个概述。
2008 | 零样本学习的最初火花(问题) |
2009 | 零样本学习这一术语被创造出来 |
2013 | 广义零样本学习的概念被引入 |
2017 | 编码器-解码器范式首次应用于零样本学习 |
2020 | OpenAI 的 GPT-3 在零样本自然语言处理方面取得了令人印象深刻的性能 |
2021 | OpenAI 的 CLIP 将零样本计算机视觉提升到了一个全新的水平 |
CLIP 的影响深远,开启了零样本计算机视觉研究的新纪元。其多功能性和性能开辟了令人兴奋的新可能性。可以说,零样本计算机视觉的历史可以分为两个时代:**CLIP 前**和**CLIP 后**时代。
零样本学习在计算机视觉中如何运作?
既然我们了解了什么是零样本学习,那么了解它如何应用于计算机视觉岂不是很棒吗?这部分内容将在接下来的章节中更详细地阐述,但我们先在这里描绘一个大致的画面来打破僵局。
在自然语言处理(NLP)中,零样本学习(尽管并非一直如此)相当简单。许多语言模型在海量文本数据集上进行训练,学习预测给定序列中的下一个词。这种捕捉语言中潜在模式和语义关系的能力,使得这些模型能够在未经明确训练的任务上表现出惊人的良好性能。一个很好的例子是 GPT-2 在提示后附加“TL;DR”时能够总结一段文字。零样本计算机视觉则是另一回事。
让我们从一个简单的问题开始,*我们人类是怎么做到的?我们如何识别以前从未见过的物体?
是的,你完全正确!我们需要关于那个物体的一些**其他信息**。我们即使以前从未见过老虎,但只要知道狮子长什么样,就能轻易识别老虎。老虎就是带条纹没有鬃毛的狮子。斑马就是黑白条纹版的马。死侍就是红黑版的蜘蛛侠。
因为这些其他信息,零样本计算机视觉本质上是多模态的。如果说泛化就像通过阅读书籍和与人交谈来学习一门语言,那么零样本计算机视觉就像通过阅读字典和听别人描述其声音来学习一门语言。
还有哪些信息?
为了使零样本计算机视觉发挥作用,我们需要在训练期间向模型提供除视觉特征之外的信息。这种其他信息被称为**语义或辅助信息**。它在视觉特征和未见类别之间提供了一个语义桥梁。通过整合这种多模态信息(文本和图像),零样本计算机视觉模型即使从未在视觉上见过某个物体,也能学会识别它。换句话说,语义信息将**已见和未见**类别嵌入到高维向量中,并且它以多种不同形式存在。
- **属性向量**:将属性视为对象不同特征的表格表示。
- **文本描述**:描述图像中包含的对象的文本,类似于图像标题。
- **类别标签向量**:这些是类别标签本身的嵌入。
利用这些语义信息,你训练一个模型来学习图像特征和语义特征之间的映射函数。在推理时,模型通过使用(例如)k-近邻搜索语义空间中最接近的标签来预测类别标签。我们可以说,我们正在借助语义信息,从已见类别中转移知识。
不同的零样本计算机视觉方法在使用**语义信息**和推断时利用的**嵌入空间**方面有所不同。
这与迁移学习有何不同?
好问题!零样本学习(ZSL)属于更广泛的迁移学习范畴,具体来说,它属于**异构迁移学习**的范畴。这意味着 ZSL 依赖于将从**源领域**(已见类别)获得的知识迁移到**不同的目标领域**(未见类别)。
由于源域和目标域之间的差异,ZSL在迁移学习中面临着特定的挑战。这些挑战包括克服域漂移(数据分布差异显著)和处理目标域中缺乏标注数据的问题。但我们稍后将详细讨论这些挑战,所以现在不用担心。现在,让我们简单谈谈零样本计算机视觉的不同方法。
零样本计算机视觉的方法
零样本计算机视觉方法的领域广阔而多样,有许多提出的方法和多种分类框架。但我发现一个吸引人的框架是,这些方法可以大致分为**基于嵌入的方法**和**基于生成的方法**。这个框架提供了一个有用的视角,可以理解和比较不同的零样本计算机视觉方法。
- **基于嵌入的方法**:模型学习一个共同的嵌入空间,将图像及其语义特征/表示投影到其中。然后,通过在该空间中进行相似性度量来预测新的未见类别。例如,CLIP。
- **基于生成的方法**:这些方法利用生成模型,根据已见类别的样本和两个类别的语义表示,为未见类别创建合成图像或视觉特征。这使得即使没有真实数据,也可以对这些未见类别进行模型训练。这样,我们就稍微作弊,将零样本问题转化为了有监督学习问题。例如,CVAE[^6]。
嵌入式方法和生成式方法之间的选择,就像你在机器学习中必须做出的所有其他选择一样,*取决于*手头任务的具体情况和可用资源。嵌入式方法通常因其效率和可扩展性而受到青睐,而生成式方法则提供更大的灵活性和处理复杂数据的潜力。
但无论如何,在本单元中,我们将**只**讨论基于嵌入的方法,包括**基于注意力的嵌入方法**。零样本学习是一个很大的主题,全面覆盖可能需要一个独立的课程。感兴趣的读者可以查看提供的附加阅读材料,并从中获得乐趣。
克隆人的进攻:ZSL 与 X 有何不同?
我们已经走了很长一段路!现在我们对零样本学习、它的历史、它在计算机视觉中的应用以及它的通用工作原理有了一个不错的了解。为了完善本导论,我们将零样本学习与其他可能最初看起来相似的不同方法进行比较。
- **域适应(DA)**:现在应该很熟悉了。我们可以将零样本学习看作是域适应的一种极端情况(贪婪、贪婪),它处理的是在完全没有数据的情况下学习识别未见类别的问题。域适应侧重于弥合两个相关域(数据集)之间具有不同分布的差距,并且它需要带标签的数据。
- **开放集识别 (OSR)**:可以将其视为布尔零样本学习。与 ZSL 类似,在 OSR 问题中,模型处理已见和未见类别。但与 ZSL 不同的是,在测试时,模型只需要分类实例是否属于已见类别。就是这样,没有花哨的标签。尽管如此,这仍然是一个重大挑战。
- **分布外(OOD)检测**:将此问题视为开放集识别的连续变体。在这里,我们不希望检测任何未包含在训练过程中的实例,而只是检测与训练数据分布显著偏离的实例。通过有效识别和处理意外数据,OOD 检测可以为更值得信赖和更健壮的人工智能系统铺平道路,这些系统可以适应不可预测的环境。
- **开放词汇学习 (OVL)**:这是零样本学习的目标。就像是零样本学习的增强版。总的来说,OVL 可以被认为是 ZSL 的扩展,它涵盖了从有限数据中学习未见类别的能力,同时还扩展到处理已见类别以及可能无限的新类别和任务。