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

news2025/1/16 14:56:04

前言

在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://www.coloradmin.cn/o/1470556.html

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

相关文章

matlab 凸轮轮廓设计

1、内容简介 略 46-可以交流、咨询、答疑 2、内容说明 略 4 取标段的分析 取标装置是贴标机的核心部件之一,是影响贴标质量和贴标精度的重要因素,取标段是通过取标板与标签的相切运动使得涂有胶水的取标板从标签盒中粘取标签纸[4],理论…

批量删除传参那些事

接口参数: public Object batchDeleteUsers(RequestBody List userIds) 工具提示传参: { “userIds”: [] } 错误!!!讨逆猴子 报错:JSON parse error: Cannot deserialize value of type java.util.ArrayL…

Open3D 法向量的统一对齐定向 (26)

Open3D 法向量的统一对齐定向 (26) 一、算法介绍二、算法实现一、算法介绍 定向后:(法线方向统一朝向一个方向) 定向前:(法线的朝向是随机的,可能向下或者向上) 这两个方向都是正确的。这就是经常遇到的法线方向问题。定向即为将方向统一,更加规整 二、算法实现…

使用Node.js和Vue.js构建全栈Web应用

随着互联网的迅速发展,Web应用程序的开发变得越来越复杂和多样化。为了满足用户不断变化的需求,全栈开发已成为一个备受关注的话题。在本篇博客中,我将介绍如何使用Node.js和Vue.js来构建全栈Web应用。 Node.js是一个基于Chrome V8引擎的Jav…

C/C++暴力/枚举/穷举题目持续更新(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码(蓝桥杯真题) 四、相乘(蓝桥杯真题) 五、卡片拼数字(蓝桥杯真题) 六、货物摆放(蓝桥杯真题) 七、最短路径(蓝…

【深入理解设计模式】代理设计模式

代理设计模式: 代理设计模式是一种结构型设计模式,它允许你提供一个替代物或占位符来控制对其他对象的访问。在代理模式中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式,因为该模式涉及类和对象的组合。 概述 …

【谈一谈】Redis是AP还是CP?

【谈一谈】Redis是AP还是CP? 再说这个话题之前,这里的是AP和CP不是"A片"和"C骗"啊 !~哈哈哈,就离谱,博文后面我会解释下的 我说下自己对Redis的感觉,我一直很好奇Redis,不仅仅是当缓存用那么简单,包括的它的底层设计 所以,思考再三,我决定先从Redis基础开…

最简单的基于 FFmpeg 的视音频分离器

最简单的基于 FFmpeg 的视音频分离器 最简单的基于 FFmpeg 的视音频分离器正文结果工程文件下载参考链接 最简单的基于 FFmpeg 的视音频分离器 参考雷霄骅博士的文章,链接:最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxe…

五种多目标优化算法(MOFA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤: 1. 定义问题:首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数,这些目标函数可能…

电商风控系统(flink+groovy+flume+kafka+redis+clickhouse+mysql)

一.项目概览 电商的防止薅羊毛的风控系统 需要使用 groovy 进行风控规则引擎的编写 然后其它技术进行各种数据的 存储及处理 薅羊毛大致流程 如果单纯使用 if else在业务代码中进行风控规则的编写 那么 维护起来会比较麻烦 并且跟业务系统强绑定不合适 所以一般独立成一个单…

2024年2月20日v1.0.5更新·优雅草便民工具youyacao-tools

2024年2月20日v1.0.5更新优雅草便民工具youyacao-tools apk下载 https://fenfacun.youyacao.com/tools105.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具,2024年1月17日正式发布v1.0.0版本,本工具为了方便大众免…

贪心算法---前端问题

1、贪心算法—只关注于当前阶段的局部最优解,希望通过一系列的局部最优解来推出全局最优----但是有的时候每个阶段的局部最优之和并不是全局最优 例如假设你需要找给客户 n 元钱的零钱,而你手上只有若干种面额的硬币,如 1 元、5 元、10 元、50 元和 100…

基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)

基于相位的运动放大:如何检测和放大难以察觉的运动 目录 一、说明二、结果的峰值三、金字塔背景3.1 可操纵金字塔3.2 亚倍频程复数可控金字塔 四、基本方针4.1 1D 问题陈述4.2 一维方法4.3 实际实施说明 五、放大倍率的限制5.1 空间支持的影响5.2 频带的影响 六、推…

SpringBoot3整合Swagger3,访问出现404错误问题(未解决)

秉承着能用就用新的的理念,在JDK、SpringBoot、SpringCloud版本的兼容性下,选择了Java17、SpringBoot3.0.2整合Swagger3。 代码编译一切正常,Swagger的Bean也能加载,到了最后访问前端页面swagger-ui的时候出现404。 根据网上资料…

【计算机网络】传输层——TCP和UDP详解

文章目录 一. TCP和UDP简介二. UDP 协议详解1. UDP报文格式2. UDP的使用场景 三. TCP 协议详解1. TCP报文格式2. TCP协议的重要机制确认应答(保证可靠传输的最核心机制)超时重传连接管理(三次握手、四次挥手)!&#xf…

React组件通讯

组件通讯 组件是一个独立的单元,默认情况下组件只能自己使用自己的数据。在组件化过程中,我们将一个完整的功能拆分成多个组件,便于更好的完成整个应用的功能。 Props 组件本来是封闭的,要接受外部数据应该可以通过Props来实现…

Jmeter学习系列之八:控制器Controllers 的入门介绍

一、Controllers 简介 Jmeter有两种类型的控制器:Samplers(取样器)和Logical Controllers(逻辑控制器);它们驱动着测试的进行取样器:让jmeter发送请求到服务器以及接收服务器的响应数据逻辑控制…

三种方法用c语言求最大公约数以及最小公倍数

学习目标: 掌握求最大公约数(最小公倍数)的三种基本方法 学习内容: 1.一大一小取其小,剖根问底取公约 意思是从一大一小两个数当中,我们取较小的那个数(min)进行剖析,试…

Socket、UDP、TCP协议和简单实现基于UDP的客户端服务端

目录 Socket TCP和UDP区别 UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 无连接和有连接 可靠传输和不可靠传输 面向数据报和面向字节流…

pclpy 最小二乘法拟合平面

pclpy 最小二乘法拟合平面 一、算法原理二、代码三、结果1.左边原点云、右边最小二乘法拟合平面后点云投影 四、相关数据 一、算法原理 平面方程的一般表达式为: A x B y C z D 0 ( C ≠ 0 ) Ax By Cz D 0 \quad (C\neq0) AxByCzD0(C0) 即: …