Matryoshka Representation Learning (MRL)-俄罗斯套娃向量表征学习

前言

在2024年1月底OpenAI发布新的向量模型,并提到新的向量模型支持将向量维度缩短。向量模型支持缩短维度而又不会威胁到向量的表示能力的原因在于使用了Matryoshka Representation Learning。

在这里插入图片描述

Matryoshka Representation Learning (MRL)是2022年发表的论文,由于OpenAI的使用得到了很多关注,论文共同一作甚至写了一篇博客来解释MRL的原理。开源文本向量nomic-embed-text-v1.5 也应用了MRL支持使用时调整向量维度。

MRL原理

MRL名字里的Matryoshka是指俄罗斯套娃,俄罗斯套娃是一系列可以一个套一个的娃娃,所以MRL希望训练好的向量在去掉向量后面的一些维度后仍有表征含义。

MRL learns representations of varying capacities within the same high-dimensional vector through explicit optimization of O(log(d)) lower-dimensional vectors in a nested fashion, hence the name Matryoshka.

俄罗斯套娃图片

MRL的架构图如下

在这里插入图片描述

假设要训练一个 d d d维向量,定义一个嵌套维度集合 M \mathcal{M} M,希望对于 m ∈ M m \in \mathcal{M} mM,MRL可以使得 m m m向量 z 1 : m ∈ R m z_{1:m} \in \mathbb{R}^m z1:mRm能够作为可独立表示一个输入x的向量。

M \mathcal{M} M的大小需小于 l o g ( d ) log(d) log(d),即 ∣ M ∣ ≤ ⌊ l o g ( d ) ⌋ |\mathcal{M}| \le \lfloor log(d) \rfloor Mlog(d)⌋,一般 M \mathcal{M} M取值为最大向量大小不断打对折直到可包含最低信息含量的大小,比如论文中训练MRL选取的嵌套维度集 M \mathcal{M} M M = { 8 , 16 , 32 , ⋯ , 1024 , 2048 } \mathcal{M}=\{8, 16, 32, \cdots,1024,2048\} M={8,16,32,,1024,2048}

训练的损失被定义为嵌套维度集合 M \mathcal{M} M中各个向量对应的损失之和(参考上面MRL架构图的右半部分)。论文以多标签分类为例定义了如下损失函数示例, x i ∈ X x_i \in \mathcal{X} xiX是输入, y i ∈ [ L ] y_i \in [L] yi[L]是其对应的标签,N是训练集大小, ( c m ≥ 0 ) m ∈ M (c_m \ge 0)_{m\in \mathcal{M}} (cm0)mM表示每个向量维度的相对重要度(论文作者取的是1), W ( m ) ∈ R L × m W^{(m)} \in \mathbb{R}^{L \times m} W(m)RL×m是每一个m维向量对应的线性层参数; F ( x i ; θ F ) F\left(x_i ; \theta_F\right) F(xi;θF)是参数为 θ F \theta_F θF的深度学习网络,它会得到一个m为的嵌入向量 z 1 : m ∈ R m z_{1:m} \in \mathcal{R}^m z1:mRm L \mathcal{L} L是多标签交叉熵损失函数。
min ⁡ { W ( m ) } m ∈ M , θ F 1 N ∑ i ∈ [ N ] ∑ m ∈ M c m ⋅ L ( W ( m ) ⋅ F ( x i ; θ F ) 1 : m ; y i ) \min _{\left\{\mathbf{W}^{(m)}\right\}_{m \in \mathcal{M}}, \theta_F} \frac{1}{N} \sum_{i \in[N]} \sum_{m \in \mathcal{M}} c_m \cdot \mathcal{L}\left(\mathbf{W}^{(m)} \cdot F\left(x_i ; \theta_F\right)_{1: m} ; y_i\right) {W(m)}mM,θFminN1i[N]mMcmL(W(m)F(xi;θF)1:m;yi)
上式数学公式看起来很复杂,简单理解MRL就是在训练时使模型同时输出多个指定维度的向量,累加应用这些向量后的损失之和作为目标损失函数,通过大量实验表明这样做达到了预期效果。但是作者们并不知道为什么有效,只是假设MRL学习了嵌套子空间的从粗到细的层次结构,并有效地将信息打包在所有向量空间。

特别的是,MRL训练好的向量除了在训练时的指定维度表现很好外,在其他维度上效果也很好(如下图),有插值效果。所以OpenAI的新向量模型才说用户可以指定比最大维度小的任意维度(相当于把向量序列末尾部分去掉)。

在这里插入图片描述

注:论文作者写的博客中写的是MRL的损失是各个子向量损失的平均,对此邮件咨询了作者,作者说求和或求平均对于结果没有影响,关键是在训练时要学习多个向量维度。

Whether you just sum or average doesn’t really matter - the key is that the model needs explicitly supervision at log(d) scales to learn representations (dolls) at each scale. Averaging keeps the loss scale the same as a vanilla (“fixed feature” from our paper), and not averaging will just have a larger scale than the vanilla model. Practically this will not affect training convergence

参考资料:

  1. Matryoshka Representation Learning

  2. 论文作者写的blog

  3. 知乎文章、HN讨论

  4. Nomic 开源的contrastors 实现了对比学习版的MRL

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 服务集群、哨兵、缓存及持久化的实现原理和应用场景

Redis 是一种高性能的键值存储系统,已经成为了许多企业和互联网公司的核心技术之一。本文将介绍 Redis 的服务集群、哨兵以及缓存实现原理和应用场景,以帮助读者更好地理解和使用 Redis。 引言: 随着互联网应用规模不断扩大,Redi…

RocketMQ - RocketMQ的架构原理和使用方法

1. MQ如何集群化部署来支撑高并发访问 假设RocketMQ部署在一台机器上,即使这台机器的配置很高,但是一般来说一台机器也就支撑10万的并发访问。 这个时候,假设有大量的系统都要往RocketMQ里高并发的额写入消息,可能达到每秒有几十…

canvas水波纹效果,jquery鼠标水波纹插件

canvas水波纹效果&#xff0c;jquery鼠标水波纹插件 效果展示 jQuery水波纹效果&#xff0c;canvas水波纹插件 HTML代码片段 <div class"scroll04wrap"><h3>发展历程</h3><div class"scroll04"><p>不要回头&#xff0c;一…

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10&#xff08;双系统安装的详细图文步骤教程&#xff09; 一、准备工作准备项1&#xff1a;U盘作为系统安装盘准备项2&#xff1a;您需要安装的系统镜像 二、启动转换助理步骤1&#xff1a;找到启动转换助理步骤2&#xff1a;启动转换助理步骤3&…

java接受命令行输入

在Java中&#xff0c;你可以使用​​Scanner​​类来接受命令行输入。以下是一个简单的例子&#xff0c;演示如何从命令行接受输入&#xff1a; import java.util.Scanner;public class CommandLineInputExample {public static void main(String[] args) {// 创建一个Scanner…

linux服务器vi文件中文乱码

服务器vi编辑中文乱码 cat 文本是中文 可以编辑 vi /etc/environment 文件修改为utf8中文字符集 LANGzh_CN.UTF-8 LANGUAGEen_US:en LC_CTYPE"zh_CN.UTF-8" LC_NUMERIC"zh_CN.UTF-8" LC_TIME"zh_CN.UTF-8" LC_COLLATE"zh_CN.UTF-8"…

48.仿简道云公式函数实战-文本函数-EXACT

1. EXACT函数 比较两个字符串是否完全相同&#xff08;区分大小写&#xff09;。完全相同则返回 true&#xff0c;否则返回 false。 2. 函数用法 EXACT(text1,text2) 3. 函数示例 比较两个字符串是否完全相同&#xff08;区分大小写&#xff09;。完全相同则返回 true&…

有效涨点,增强型 YOLOV8 与多尺度注意力特征融合,附代码,详细步骤

目录 摘要 结构图 原理 代码实现 添加ymal文件 实验结果 可接论文指导----------> v jiabei-545 完整代码&#xff08;失效 -----------&#x1f446; &#xff09; 执行程序流程 摘要 在本实验中&#xff0c;我们通过将双层路由注意&#xff08;BRA&#xff09;…

python中的 continue break 以及pass

在python中 continue 以及 break 的作用都用于跳出循环,不同的是continue是跳出当前循环,而break是跳出循环 具体图解如下 continue 执行流程图&#xff1a; break 执行流程图&#xff1a; 他们两个在while循环和for循环中分别为 在for循环中执行过程为 当循环体执行到cont…

linux---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理&#xff0c;反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法&#xff08;默认方法&#xff09; 2.2 weight权重模式&#xff08;加权轮询&#xff09; 2.3 ip_hash 3、web缓存 三、基础特性 四…

Jitsi Meet 大型视频会议调优方案

jitsi meet 大型视频会议调优方案 在举办一些大型会议的时候,比如100个人会议,为了节约宽带和节省资源,我们并不会选择传输全部的音视频资源。 举个例子,比如100个人线下会议,如果大家都说话的情况下,大家要么听不清,要么听得是声音最大的那几个人。 视频会议也可以借…

赵丽颖林更新《与凤行》传乌龙!惊艳特效惹争议

古装偶像剧《与凤行》是收视女王赵丽颖和实力小生林更新继《楚乔传》的再度合作&#xff0c;“星月”CP时隔多年的二搭还没开播&#xff0c;就已经把观众的期待值高高拉起。 《与凤行》预告惊艳四座&#xff0c;特效究竟出自谁手&#xff1f; 观众早已苦“五毛特效”久矣&…

项目:shell实现多级菜单脚本编写

目录 1. 提示 2. 演示效果 2.1. 一级菜单 2.2. 二级菜单 2.3. 执行操作 3. 参考代码 1. 提示 本脚本主要实现多级菜单效果&#xff0c;并没有安装LAMP、LNMP环境&#xff0c;如果要用在实际生成环境中部署LNMP、LAMP环境&#xff0c;只需要简单修改一下就可以了。 2. 演…

Pycharm环境中,python为变量赋值的时候,如何自动添加空格?

在python中&#xff0c;为变量赋值的时候&#xff0c;如果没有加入空格&#xff0c;代码底部会有灰色波浪线&#xff0c;说明不符合Python规范。 可以在菜单栏选择code&#xff0c;reformat code。重新格式化代码&#xff0c;所有代码会自动格式化。 快捷方式为&#xff1a;ct…

java数据结构与算法刷题-----LeetCode98. 验证二叉搜索树

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 法一&#xff1a;利用BST性质进行递归2. 法二&#xff1a;利用…

CUDA 编程指南 —— 编程接口之CUDA Runtime

目录 CUDA Runtime 运行时在 cudart 库中实现&#xff0c;该库通过 cudart.lib 或 libcudart.a 静态链接到应用程序&#xff0c;或者通过 cudart.dll 或 libcudart.so 动态链接到应用程序。需要 cudart.dll 和/或 cudart.so 进行动态链接的应用程序通常将它们作为应用程序安装…

音视频开发之旅(70)- 人脸修复画质增强之CodeFormer

目录 1. 效果展示和使用简介 2. CodeFormer原理浅析和代码实现分析 3. SDWebui中使用 4. 关键细节&#xff1a;保真度和质量之间的平衡 5. 参考资料 一、效果展示和使用简介 1.1 老旧照片修复 1.2 对AI生成照片修复 1.3 人脸修复 1.4 人脸色彩增强 1.5 去除人脸打码 1.6…

k8s基础以及kubeadm安装部署

目录 一、什么是k8s&#xff1f; 二、k8s的特性 三、核心组件以及工作流程 核心组件&#xff1a; 工作流程&#xff1a; 四、k8s网络 五、kubeadm部署 一、什么是k8s&#xff1f; K8S 的全称为 Kubernetes&#xff0c;用于自动部署、扩展和管理“容器化&#xff08;con…

【牛客】2024牛客寒假算法基础集训营6ABCDEGHIJ

文章目录 A 宇宙的终结题目大意主要思路代码 B 爱恨的纠葛题目大意主要思路代码 C 心绪的解剖题目大意主要思路代码 D 友谊的套路题目大意主要思路代码 E 未来的预言题目大意主要思路代码 G 人生的起落题目大意主要思路代码 I 时空的交织题目大意主要思路代码 J 绝妙的平衡题目…

Linux7.9环境源码编译安装ffmpeg6.x

1.官网ffmpeg下载源码 https://ffmpeg.org/download.html#build-windows 2.未安装x264库则先安装配置 可以先查询x264库: whereis libx264 安装编译工具和依赖库&#xff1a; sudo yum install gcc make cmake mercurial git yasm pkgconfig autoconf automake libtool sudo…