DSSM双塔特征交互

传统的DSSM双塔无法在早期进行user和item侧的特征交互,这在一定程度上降低了模型性能。我们想要对双塔模型进行细粒度的特征交互,同时又不失双塔模型离线建向量索引的解耦性。下面介绍两篇这方面的工作。

美团-Dual Augmented Two-tower

meituan

  • 在user和item的特征侧分别引入可学习的特征向量
  • 当label=1的时候,user的 a u a_u au去学习item正样本的输出表征,从而实现隐式特征交互;item侧亦如此

损失函数如下:
loss ⁡ u = 1 T ∑ ( u , v , y ) ∈ T [ y a u + ( 1 − y ) p v − p v ] 2 loss ⁡ v = 1 T ∑ ( u , v , y ) ∈ T [ y a v + ( 1 − y ) p u − p u ] 2 y ∈ { 0 , 1 } \begin{aligned} \operatorname{loss}_u & =\frac{1}{T} \sum_{(u, v, y) \in \mathcal{T}}\left[y \mathbf{a}_u+(1-y) \mathbf{p}_v-\mathbf{p}_v\right]^2 \\ \operatorname{loss}_v & =\frac{1}{T} \sum_{(u, v, y) \in \mathcal{T}}\left[y \mathrm{a}_v+(1-y) \mathrm{p}_u-\mathbf{p}_u\right]^2 \\ y &\in \{0,1\} \end{aligned} lossulossvy=T1(u,v,y)T[yau+(1y)pvpv]2=T1(u,v,y)T[yav+(1y)pupu]2{0,1}

  • p u p_u pu p v p_v pv 梯度冻结,不进行更新
缺点

这种方式引入的交叉特征实际是非常"粗粒度"和"高阶"的,即携带的信息仅仅是对方tower最后输出的表征,对方tower在编码这段表征时,也仅仅只利用了fake的emb和tower本身的输入特征的交互。

百度-I3 Retriever

RankNet

  • 在doc侧设计一个轻量的query生成模块,利用doc侧特征作为输入,去fake一个query侧表征,去重构出query侧的输入特征。当然需要注意的是,也仅仅是在正样本上执行重构loss
  • doc侧与生成的query进行特征交互
  • 交互完的doc侧与query侧对比学习

重构损失函数如下:
L r = − ∑ w i ∈ q y w i log ⁡ ( W R K ( p ) q ) \mathcal{L}_r=-\sum_{w_i \in \mathbf{q}} \mathbf{y}_{w_i} \log \left(\mathbf{W}^{R_{\mathbb{K}}}(\mathbf{p})_q\right) Lr=wiqywilog(WRK(p)q)

对比损失函数如下:
L c = − log ⁡ exp ⁡ ( S ( q , p + ) ) exp ⁡ ( S ( q , p + ) ) + ∑ p − ∈ N − exp ⁡ ( S ( q , p − ) ) , \mathcal{L}_c=-\log \frac{\exp \left(S\left(\mathbf{q}, \mathbf{p}_{+}\right)\right)}{\exp \left(S\left(\mathbf{q}, \mathbf{p}_{+}\right)\right)+\sum_{\mathbf{p}-\in \mathcal{N}_{-}} \exp \left(S\left(\mathbf{q}, \mathbf{p}_{-}\right)\right)}, Lc=logexp(S(q,p+))+pNexp(S(q,p))exp(S(q,p+)),


参考

  • CIKM2023 | 突破双塔: 生成式交互的向量化召回

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

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

相关文章

1. CSS Grid 网格布局教程

CSS Grid 网格布局教程 一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器…

linux工具应用_VERDI

verdi 1. 基础知识1.1 verdi介绍1.2 fsdb文件2. fsdb dump2.1 1st step-设置环境变量LD_LIBRARY_PATH2.2 2nd step-xrun仿真命令2.3 3rd step-仿真过程中调用fsdb函数dump波形2.3.1 在testbench、top.sv中调用fsdb函数2.3.2 在tcl脚本中用xrun的dump指令(同样要调用fsdb函数)2.…

Scrapy crawl spider 停止工作

Scrapy是一个用于爬取网站数据的流行框架,有时爬虫可能会停止工作,这通常是由多种原因引起的。以下是一些常见问题及其解决方法: 1、问题背景 用户在使用 Scrapy 0.16.2 版本进行网络爬取时遇到问题,具体表现为爬虫在运行一段时间…

Android 开发中 C++ 和Java 日志调试

在 C 中添加堆栈日志 先在 Android.bp 中 添加 ‘libutilscallstack’ shared_libs:["liblog"," libutilscallstack"]在想要打印堆栈的代码中添加 #include <utils/CallStack.h> using android::CallStack;// 在函数中添加 int VisualizerLib_Crea…

生物素结合金纳米粒子(Bt@Au-NPs ) biotin-conjugated Au-NPs

一、定义与特点 定义&#xff1a;生物素结合金纳米粒子&#xff0c;简称BtAu-NPs或biotin-conjugated Au-NPs&#xff0c;是指通过特定的化学反应或物理方法将生物素修饰到金纳米粒子表面&#xff0c;形成稳定的纳米复合材料。 特点&#xff1a; 高稳定性&#xff1a;生物素的修…

重构功能带来的配套改造查找思路

最近在重构项目中的一个基础配置功能&#xff0c;这个功能因为后续的业务变化和最初的缺陷设计导致非常难维护和扩展&#xff0c;使用起来也比较费劲&#xff0c;所以决定花一段时间来对它进行重构&#xff0c;去除一些用不到的设计&#xff0c;简化了使用方式和配置方式&#…

RabbitMQ 迁移

文章目录 1. 导出配置2. 导入配置3. 导出和导入定义&#xff08;如果不需要消息&#xff09;导出定义导入定义 注意事项参考文档 要将 RabbitMQ 的配置&#xff08;包括vhost、exchange等&#xff09;从一个实例迁移到另一个实例&#xff0c;您可以遵循以下步骤&#xff1a; 1.…

【VUE基础】VUE3第七节—Vue Router路由基础

Vue Router 是 Vue 官方的客户端路由解决方案。 客户端路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时&#xff0c;URL 会随之更新&#xff0c;但页面不需要从服务器重新加载。 Vue Router 基于 Vue 的组件系统构建&…

LabVIEW在半导体自动化测试中的应用

半导体制造的复杂性和精密度要求极高&#xff0c;每一个生产步骤都需要严格的控制和监测。自动化测试设备在半导体制造中起到了关键作用&#xff0c;通过精密测量和数据分析&#xff0c;确保产品质量和生产效率。本文介绍如何使用LabVIEW结合研华硬件&#xff0c;开发一个用于半…

C语言编程3:运算符,运算符的基本用法

C语言3&#x1f525;&#xff1a;运算符&#xff0c;运算符的基本用法 一、运算符&#x1f33f; &#x1f387;1.1 定义 运算符是指进行运算的动作&#xff0c;比如加法运算符"“&#xff0c;减法运算符”-" 算子是指参与运算的值&#xff0c;这个值可能是常数&a…

自动化测试高级控件交互方法:TouchAction、触屏操作、点按,双击,滑动,手势解锁!

在自动化测试领域中&#xff0c;TouchAction 是一种非常强大的工具&#xff0c;它允许我们模拟用户在设备屏幕上的各种触摸事件。这种模拟不仅限于简单的点击操作&#xff0c;还包括滑动、长按、多点触控等复杂的手势。 点按与双击 点按和双击是触屏设备上最基本的操作之一。…

使用 Qt 和 ECharts 进行数据可视化

文章目录 示例图表预览折线图散点图柱状图使用 Qt 和 ECharts 进行数据可视化一、准备工作1. 安装 Qt2. 准备 ECharts二、在 Qt 中使用 ECharts1. 创建 Qt 项目2. 配置项目文件3. 在 UI 中添加 WebEngineView4. 加载 ECharts三、创建折线图、散点图和柱状图1. 折线图2. 散点图3…

Jupyter Notebook的安装教程

以下是一个详细的 Jupyter Notebook 安装教程&#xff0c;适用于大多数操作系统&#xff1a; Windows 系统 1. 安装 Python 访问 Python 官网&#xff0c;下载并安装适合你系统的 Python 版本。在安装过程中&#xff0c;确保勾选“Add Python 3.x to PATH”选项&#xff0c;…

sizeof跟strlen的用法及差异

sizeof是一个操作符&#xff0c;不是函数&#xff1b; 而strlen是一个库函数&#xff1b; sizeof是计算所占内存空间的&#xff0c;不管你内容是什么&#xff0c;只要知道占多少内存&#xff0c; 而strlen是跟内容有关的&#xff0c;它是计算字符串长度的&#xff08;字符数…

java —— tomcat 部署项目

一、通过 war 包部署 1、将项目导出为 war 包&#xff1b; 2、将 war 包放置在 tomcat 目录下的 webapps 文件夹下&#xff0c;该 war 包稍时便自动解析为项目文件夹&#xff1b; 3、启动 tomcat 的 /bin 目录下的 startup.bat 文件&#xff0c;此时即可从浏览器访问项目首页…

diff 算法原理及实现

Diff 算法是用于比较两个虚拟 DOM 树的差异&#xff0c;并以最小的操作代价将旧的 DOM 树更新为新的 DOM 树的一种算法。 Diff 算法的高效实现对于提高前端应用的性能和用户体验至关重要&#xff0c;尤其是在频繁更新组件状态导致 DOM 频繁更新的情况下。 1. 原理 1.1 树层级…

【Linux】文件内容查看命令——cat,tac,more,less,head,tail,od

如果我们要查看一个文件的内容时&#xff0c;该如何是好&#xff1f; 这里有相当多有趣的命令可以来分享一下&#xff1a;最常使用的显示文件内容的命令可以说是cat与more及less了。 此外&#xff0c;如果我们要查看一个很大的文件&#xff08;好几百MB时)&#xff0c;但是我们…

java中Comparator函数的用法实例?

在Java中&#xff0c;Comparator接口用于比较两个对象的顺序&#xff0c;常用于集合的排序。自Java 8开始&#xff0c;Comparator接口得到了增强&#xff0c;提供了许多默认方法&#xff0c;使得排序逻辑更加灵活和强大。下面将通过几个实例来展示Comparator的用法。 示例1&am…

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

目录 使用PyTorch设计卷积神经网络&#xff08;CNN&#xff09;来处理遥感图像Indian Pines数据集&#xff0c;以下是设计和实现这些网络的步骤&#xff1a; 1.数据准备&#xff1a; 1.1 首先&#xff0c;需要加载Indian Pines数据集。 1.2 将数据集转换为PyTorch张量&#x…

LLM推理引擎怎么选?TensorRT vs vLLM vs LMDeploy vs MLC-LLM

LLM擅长文本生成应用程序&#xff0c;如聊天和代码完成模型&#xff0c;能够高度理解和流畅。但是它们的大尺寸也给推理带来了挑战。有很多个框架和包可以优化LLM推理和服务&#xff0c;所以在本文中我将整理一些常用的推理引擎并进行比较。 TensorRT-LLM TensorRT-LLM是NV发布…