经典多模态模型CLIP - 直观且详尽的解释

阅读原文

在本文中,您将了解“contrastive language-image pre-training”(CLIP),这是一种创建视觉和语言表示的策略,效果非常好,可用于制作高度特定且性能卓越的分类器,而无需任何训练数据。本文将介绍其理论,CLIP 与更传统的方法有何不同,然后逐步介绍其架构。

这对谁有用?任何对计算机视觉、自然语言处理 (NLP) 或多模态建模感兴趣的人。

经典图像分类器

在训练模型检测图像是猫还是狗时,一种常见的方法是向模型提供猫和狗的图像,然后根据误差逐步调整模型,直到学会区分两者。

这种传统的监督学习形式在许多用例中都是完全可以接受的,并且众所周知在各种任务中表现良好。然而,这种策略也会导致高度专业化的模型,这些模型仅在其训练的范围内表现良好。

将 CLIP 与传统的监督模型进行比较,每个模型都使用 ImageNet(一种流行的图像分类数据集)进行训练,并且表现良好,但当暴露于包含不同表示形式的相同类别的类似数据集时,传统监督模型的性能会大幅下降,而 CLIP 则不会。这意味着 CLIP 中的表示形式比其他方法更稳健、更通用。 因为CLIP为了解决过度专业化的问题,采用了完全不同的分类方法;通过对比学习来学习图像与其注释之间的关联。

CLIP 简介

如果我们不创建一个可以预测图像是否属于某个类别的模型,而是创建一个可以预测图像是否属于某个任意标题的模型,结果会怎样?这是一种微妙的思维转变,为全新的训练策略和模型应用打开了大门。

CLIP 的核心思想是使用从互联网上抓取的带字幕的图像来创建一个模型,该模型可以预测文本是否与图像匹配。

CLIP 通过学习如何对图像和文本进行Embedding来实现这一点,当将文本和图像Embedding相互比较时,匹配的图像具有较高的相似度,而不匹配的图像具有较低的相似度。**本质上,该模型学习将图像和文本映射到同一个Embedding空间中,使得匹配的图和文Embedding彼此靠近,而不匹配的图和文Embedding彼此相距较远。**这种学习预测事物是否属于同一类或不属于同一类的策略通常被称为“对比学习” (contrastive Learning)。

在 CLIP 中,对比学习是通过学习文本编码器和图像编码器来完成的,它们学习将输入映射到向量空间中的某个位置。然后,CLIP 在训练期间比对这些位置,并尝试最大化不匹配的图和文的Embedding距离,并最小化匹配的图和文的Embedding距离。

CLIP 采用的训练策略允许我们做各种各样的事情:

  • 我们可以通过询问模型哪些文本(如“一张猫的照片”和“一张狗的照片”)最有可能与图像相关联来构建图像分类器
  • 我们可以构建一个图像搜索系统,用于查找与输入文本最相关的图像。例如,我们可以查看各种图像,并找出哪张图像最有可能对应于文本“一张狗的照片”
  • 我们可以使用图像编码器来提取与文本相关的图像的抽象信息(Embedding)。编码器可以将图像的信息嵌入成一个embedding,由此图像的信息可通过Embedding供其他机器学习模型使用。
  • 同样我们可以抽取文本的Embedding可供其他机器学习模型使用。

CLIP 的组成部分

CLIP 是一种High-Level的框架,不局限于某个具体的网络结构,可以使用各种不同的子组件来实现相同的结果。

文本编码器

CLIP 中的文本编码器将输入文本转换为表示文本含义的Embedding向量(数字列表)。

CLIP 中的文本编码器是一个标准的 Transformer 编码器。就本文而言,Transformer 可以被认为是一个系统,它获取整个单词输入序列,然后重新表示和比较这些单词以创建整个输入的抽象、上下文的表示。

Transformer 中的自注意力机制是创建该上下文化表示的主要机制。

CLIP 对通用 Transformer 所做的一项修改是,它只会输出一个向量,而不是上图所示的一个矩阵,它直接提取输入序列中最后一个标记的向量来表示整个输入的文本序列。

图像编码器

同理,图像编码器将图像转换为表示图像含义的Embedding向量(数字列表)。

CLIP 论文中讨论了几种图像编码器方法。在本文中,考虑 ResNET-50,这是一种久经考验的卷积方法,已应用很多常规图像任务。我将在以后的文章中介绍 ResNET,但就本文而言,出于方便,我们可以简单的将 ResNET 视为经典的卷积神经网络。

卷积神经网络是一种图像建模策略,它使用一个称为卷积核的小值矩阵来扫描图像,并根据卷积核和输入图像为每个像素计算一个新值。

卷积网络背后的整个想法是,通过对图像进行卷积和下采样的组合,可以提取更多更微妙的特征表示。一旦图像被压缩为少量高质量的抽象特征,就可以使用密集网络(Dense Layer)将这些特征转换为最终输出。

从 CLIP 的角度来看,最终结果是一个向量,可以将其视为对输入图像的高度抽象。

多模态嵌入空间和 CLIP 训练

在前两节中,我们讨论了可以将文本和图像嵌入为向量的建模策略,将复杂事物概括为抽象向量的想法通常被称为“嵌入”。我们将图像和文本等事物“嵌入”到向量空间中,以此来概括它们本身的含义或信息。

我们可以将这些嵌入向量视为将输入表示为高维空间中的某个点。为了便于说明,我们可以想象创建编码器,将其输入嵌入到维度为 2 的向量中。然后可以将这些向量视为二维空间中的点,我们可以绘制它们的位置。

我们可以将这个二维空间视为多模态嵌入空间,并且我们可以训练 CLIP(通过训练图像和文本编码器)从而将这些点映射到图文彼此接近的位置。

在机器学习中,有很多种方法可以定义“接近”。可以说,最常见的方法是余弦相似度,CLIP 就是采用这种方法。余弦相似度背后的理念是,如果两个向量之间的角度较小,我们可以说它们是相似的。

如果两个向量之间的角度很小,则这两个向量之间的余弦相似度将接近 1。如果向量相隔 90 度,则余弦相似度将为零。如果向量指向相反的方向,则余弦相似度将为 -1。

我们可以使用以等式来计算两个向量之间的角度的余弦相似度:

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活动预告 |【Part2】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课:基础知识”活动,培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动,扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 课…

探索云原生安全解决方案的未来

我们是否充分意识到云端所面临的网络安全威胁? 在当今互联互通的世界中,维护安全的环境至关重要。云的出现扩大了潜在威胁的范围,因为它催生了机器身份(称为非人类身份 (NHI))及其秘密。随着组织越来越多地转向云原生…

项目组件框架介绍[etcd]

文章目录 前言etcd安装Ubuntu 上通过包管理器安装通过源码安装配置 客户端开发包开发包的安装接口介绍添加一个键值对获取一个键值对租约保活机制监听 封装服务注册与发现服务注册服务发现 前言 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配…

JWT 令牌:原理、应用与安全考量

深入理解 JWT 令牌:原理、应用与安全考量 文章目录 深入理解 JWT 令牌:原理、应用与安全考量一、引言二、JWT 令牌与传统方式的区别(一)传统身份验证方式的特点与局限(二)JWT 令牌的优势 三、JWT 令牌的字段…

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件,用户可以使用 SSH 来远程连接 linux 系统的计算机,或者传输文件。不过在 win10 以前,windows 并不原生支持 SSH,需要借助第三方工具来使用 SSH 功能。而实际上,微软在 2015 年就曾…

【环境搭建】Jeecg-Boot v3.5.0 Docker搭建

前言 最近需要复现JeecgBoot的SQL注入漏洞,必须要搭建JeecgBoot v3.5.0这个版本才行,DockerHub没人push这个版本的,相关博客也比较少,所以自己来搭建,记录一下过程。 前置环境 Ubuntu 20.04Docker version 27.3.1do…

论文结论:GPTs and Hallucination Why do large language models hallucinate

GPTs and Hallucination 当一个主题有普遍共识,并且有大量语言可用于训练模型时,大模型的输出可以反映出该共识观点在没有足够关于主题的语言示例【晦涩/数据有限】,或者主题有争议,或是对主题没有明确共识的情况下,就…

【人工智能基础06】人工神经网络(练习题):神经网络的计算、激活函数的选择与神经网络的退化

文章目录 1. 基于神经网络计算心理健康程度2. 添加激活函数的神经网络计算3. 使用神经网络预测小胖是否会变胖4. 激活函数选择的讨论5. 神经网络的设计6. 深度线性模型的表达能力线性模型7. 神经网络退化 主要讨论的内容 什么是人工神经网络,相关计算反向传播算法的…

STM32 串口收发文本数据包

单片机学习! 目录 前言 一、文本数据包格式 二、串口收发文本数据包代码 三、代码解析 3.1 标志位清除 3.2 数据包接收 四、代码问题改进 总结 前言 本文介绍了串口收发文本数据包程序设计的思路并详解代码作用。 一、文本数据包格式 文本数据包的格式的定义…

centos下安装ffmpeg

如果你在CentOS 7.9下执行 sudo yum install ffmpeg 时遇到问题,可能是因为默认的yum仓库中没有FFmpeg或者其版本太旧。你可以通过添加第三方仓库如Nginx、Remi或EPEL来安装更新版本的FFmpeg。以下是具体的步骤: 添加并启用必要的仓库 安装EPEL仓库&…

预言机调研

预言机 1. 概述 预言机主要承担两个工作,一是验证信息可靠性,二是传递信息。 如果没有预言机,区块链的信息来源将仅限于其内部数据,其广泛使用的潜力和可能性将会大大降低。 区块链预言机是区块链与外部世界之间的桥梁。它们使区…

【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行

目录 项目介绍 显存占用 11月21 新增纹理烘焙模块Dust3R 烘焙相关参数: AutoDL云端镜像 启动说明 标准模型下载 项目介绍 https://github.com/Tencent/Hunyuan3D-1 腾讯混元 3D 生成模型,支持文本和图像条件生成(对于文生3D,支持中/英双语生成)…

【前端】HTML标签汇总

目录 展示用户信息的标签 1.文本标签 span 2.标题标签 h1~h6 3.竖着布局的标签 div 4.段落标签 p 5.超链接标签 a 5.1跳转至网上的资源 5.2锚点 6.列表标签 6.1有序列表 ol 6.2无序列表 ul 7.图片标签 img 7.1相对路径 7.1.1兄弟关系 7.1.2叔侄关系 7.1.3表兄弟…

基于python的一个简单的压力测试(DDoS)脚本

DDoS测试脚本 声明:本文所涉及代码仅供学习使用,任何人利用此造成的一切后果与本人无关 源码 import requests import threading# 目标URL target_url "http://47.121.xxx.xxx/"# 发送请求的函数 def send_request():while True:try:respo…

深入探究 Scikit-learn 机器学习库

一、数据处理与准备 (一)数据加载 内置数据集:Sklearn 自带一些经典数据集,如鸢尾花数据集(load_iris)、波士顿房价数据集(load_boston)等。这些数据集方便初学者快速上手实践&…

今天你学C++了吗?——C++中的类与对象(日期类的实现)——实践与知识的碰撞❤

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

负载均衡和tomcat

一、负载均衡 1.相关概念 nginx的反向代理<-->负载均衡 负载均衡 将四层或者是七层的请求分配到多台后端的服务器上&#xff0c;从而分担整个业务的负载。提高系统的稳定性&#xff0c;也可以提供高可用&#xff08;备灾&#xff0c;其中的一台后端服务器如果发生故障…

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ )&#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \su…

Facebook如何避免因IP变动而封号?实用指南

随着Facebook在个人社交与商业推广中的广泛应用&#xff0c;越来越多的用户面临因“IP变动”而被封号的问题。尤其是跨境电商、广告运营者和多账号管理用户&#xff0c;这种情况可能严重影响正常使用和业务发展。那么&#xff0c;如何避免因IP变动导致的封号问题&#xff1f;本…

8.1 日志管理

本文深入解析 MySQL 中的关键日志类型&#xff0c;包括错误日志、二进制日志、查询日志和慢查询日志&#xff0c;帮助运维人员高效定位问题、分析性能并管理数据库。 1. 错误日志 1.1 概述 错误日志记录 MySQL 服务器运行过程中的重要信息&#xff0c;例如启动、关闭、错误及…