一文读懂多模态 embeddings
传统上,AI研究被划分为不同的领域:自然语言处理(NLP)、计算机视觉(CV)、机器人学、人机交互(HCI)等。然而,无数实际任务需要整合这些不同的研究领域,例如自动驾驶汽车(CV + 机器人学)、AI代理(NLP + CV + HCI)、个性化学习(NLP + HCI)等。
尽管这些领域旨在解决不同的问题并处理不同的数据类型,但它们都共享一个基本过程。即生成现实世界现象的有用数值表示。
历史上,这是手工完成的。这意味着研究人员和从业者会利用他们(或其他人)的专业知识,将数据显式转换为更有用的形式。然而,今天,这些可以通过另一种方式获得。在本文中,我将讨论多模态embeddings,并通过两个实际用例分享它们的功能。
Embeddings
embeddings是通过模型训练隐式学习的数据的有用数值表示。例如,通过学习如何预测文本,BERT学习了文本的表示,这些表示对许多NLP任务很有帮助[1]。另一个例子是Vision Transformer(ViT),它在Image Net上进行图像分类训练,可以重新用于其他应用[2]。
这里的一个关键点是,这些学习到的embeddings空间将具有一些底层结构,使得相似的概念彼此接近。如下面的玩具示例所示。

文本和图像embeddings的表示
前面提到的模型的一个关键限制是它们仅限于单一数据模态,例如文本或图像。这阻止了跨模态应用,如图像字幕生成、内容审核、图像搜索等。但如果我们可以合并这两种表示呢?
多模态 Embeddings
尽管文本和图像在我们看来可能非常不同,但在神经网络中,它们通过相同的数学对象(即向量)表示。因此,原则上,文本、图像或任何其他数据模态都可以由单个模型处理。
这一事实是多模态embeddings的基础,它将多个数据模态表示在同一向量空间中,使得相似的概念位于相近的位置(独立于它们的原始表示)。

多模态embeddings空间的表示
例如,CLIP将文本和图像编码到共享的embeddings空间中[3]。CLIP的一个关键见解是,通过对齐文本和图像表示,模型能够在任意一组目标类上进行零样本图像分类,因为任何输入文本都可以被视为类标签(我们将在后面看到一个具体示例)。
然而,这个想法不仅限于文本和图像。几乎任何数据模态都可以以这种方式对齐,例如文本-音频、音频-图像、文本-脑电图、图像-表格和文本-视频。这解锁了视频字幕生成、高级OCR、音频转录、视频搜索和脑电图到文本等用例[4]。
对比学习
对齐不同embeddings空间的标准方法是对比学习(CL)。CL的一个关键直觉是相似地表示相同信息的不同视图[5]。
这包括学习表示,以最大化正对之间的相似性并最小化负对的相似性。在图像-文本模型的情况下,正对可能是带有适当标题的图像,而负对可能是带有不相关标题的图像(如下所示)。

对比训练中使用的正对和负对示例
CL的两个关键方面促成了其有效性:
-
由于正对和负对可以从数据的固有结构(例如,网络图像的元数据)中策划,CL训练数据不需要手动标记,这解锁了更大规模的训练和更强大的表示[3]。
-
它通过特殊的损失函数同时最大化正对和最小化负对的相似性,如CLIP所示[3]。

CLIP用于文本-图像表示对齐的对比损失[3]
示例代码:使用CLIP进行零样本分类和图像搜索
在了解了多模态embeddings的工作原理后,让我们看看它们可以做的两个具体示例。在这里,我将使用开源的CLIP模型执行两个任务:零样本图像分类和图像搜索。
这些示例的代码在GitHub仓库中免费提供:https://github.com/ShawhinT/YouTube-Blog/tree/main/multimodal-ai/2-mm-embeddings。
用例1:零样本图像分类
使用CLIP进行零样本图像分类的基本思想是将图像与一组可能的类标签一起传递给模型。然后,通过评估哪个文本输入与输入图像最相似来进行分类。
我们首先导入Hugging Face Transformers库,以便可以在本地下载CLIP模型。此外,PIL库用于在Python中加载图像。
from transformers import CLIPProcessor, CLIPModelfrom PIL import Image
接下来,我们可以导入一个版本的clip模型及其相关的数据处理器。注意:处理器处理输入文本的标记化和图像准备。

我们加载下面的猫的图像,并创建两个可能的类标签列表:“一张猫的照片”或“一张狗的照片”。


输入的猫照片
接下来,我们将预处理图像/文本输入并将它们传递给模型。

要进行类预测,我们必须提取图像logits并评估哪个类对应于最大值。

>> a photo of a cat | Probability = 0.9979
模型以99.79%的概率准确识别出这是一张猫的照片。然而,这是一个非常简单的例子。让我们看看当我们将类标签更改为:“丑猫”和“可爱猫”时会发生什么。
>> cute cat | Probability = 0.9703
模型轻松识别出图像确实是一只可爱的猫。让我们做一些更具挑战性的标签,例如:“猫表情包”或“非猫表情包”。
>> not cat meme | Probability = 0.5464
虽然模型对这个预测的信心较低,只有54.64%的概率,但它正确地暗示了图像不是表情包。
用例2:图像搜索
CLIP的另一个应用基本上是用例1的逆过程。与其识别哪个文本标签与输入图像匹配,我们可以评估哪个图像(在一组中)与文本输入(即查询)最匹配——换句话说,在图像上执行搜索。我们首先将一组图像存储在列表中。在这里,我有三张猫、狗和山羊的图像。



查询“一只可爱的狗”的最佳匹配
我们看到(再次)模型在这个简单示例中表现出色。但让我们尝试一些更棘手的例子。
query = "something cute but metal 🤘"
>> Match probability: 0.7715

查询“可爱但金属的东西🤘”的最佳匹配
query = "a good boy"
>> Match probability: 0.8248

查询“一个好男孩”的最佳匹配
query = "the best pet in the world"
>> Match probability: 0.5664

查询“世界上最好的宠物”的最佳匹配
尽管最后一个预测颇具争议,但所有其他匹配都非常准确。这可能是因为像这样的图像在互联网上无处不在,因此在CLIP的预训练中被多次看到。
联系删除。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐




所有评论(0)