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