多场景建模:阿里MARIA

Multi-scenario ranking framework with adaptmulti-scenario ranking framework with adaptive feature learning

背景

多模态搜索场景支持用户通过不同模态的Query来表达多样的搜索需求。

  1. 拍照搜索(Visual Search):实拍图作为query
  2. 相似商品搜索(Similar Search):商品作为query
  3. 发生在外部媒体的兴趣搜索(Interest Search)商品作为query

在这里插入图片描述

问题&动机

多场景建模的主要问题是建模场景之间的共性及差异性,现有解决方案都是专注网络上层优化,认为底层Embedding是共享、一致的,但在实际场景中无法很好提取场景之间的差异。
在这里插入图片描述

解决方案

聚焦底层特征表示,提出自适应特征学习的多场景排序框架 MARIA Multi-scenario ranking framework with adaptmulti-scenario ranking framework with adaptive feature learning

引入Feature Scaling(FS)根据场景来缩放特征,放大重要特征,缩小不重要特征(类似SeNet)
引入Feature Refinement(FR)每个特征域设置一组特征微调器(Refiner),然后基于场景感知的gate网络(Selector)来进行选择 (类似于MoE)
引入Feature Correlation Modeling(FCM)对每个特征域进行显示交叉(类似PNN)
在这里插入图片描述

方案详情

将序列特征、用户特征、物品特征、trigger特征、context特征Embedding拼接起来,作为底层的共享特征Embedding,常规操作
Q = [ h b ∣ ∣ u ∣ ∣ x i ∣ ∣ t ∣ ∣ c ] \mathbf Q = [\mathbf h_b || \mathbf u || \mathbf x_i || \mathbf t || \mathbf c] Q=[hb∣∣u∣∣xi∣∣t∣∣c]
这里用户特征 u \mathbf u u由用户ID Embedding及用户其他属性的Embedding拼接得到
用户属性集合 A u = { a u 1 , . . . , a u L } \mathcal{A_u} = \{a_u^1, ..., a_u^L\} Au={au1,...,auL}
u = [ e u ∣ ∣ a u 1 ∣ ∣ . . . ∣ ∣ a u L ] \mathbf u = [\mathbf e_u || \mathbf a_u^1 || ... || \mathbf a_u^L] u=[eu∣∣au1∣∣...∣∣auL]
这里物品特征 i \mathbf i i由物品ID Embedding及物品其他属性的Embedding拼接得到
用户属性集合 A i = { a i 1 , . . . , a i P } \mathcal{A_i} = \{a_i^1, ..., a_i^P\} Ai={ai1,...,aiP}
u = [ e i ∣ ∣ a i 1 ∣ ∣ . . . ∣ ∣ a i P ] \mathbf u = [\mathbf e_i || \mathbf a_i^1 || ... || \mathbf a_i^P] u=[ei∣∣ai1∣∣...∣∣aiP]
context特征集合 A c = { a c 1 , . . . , a c N c } \mathcal{A_c} = \{a_c^1, ..., a_c^{N_c}\} Ac={ac1,...,acNc}
trigger特征(因为是搜索场景,所有有个query,但是是多模态的,不同场景的query不一样,论文中可能是图片、文字等类型,这种query称为trigger)
trigger集合 A t = { a t 1 , . . . , a t O } \mathcal{A_t} = \{a_t^1, ..., a_t^O\} At={at1,...,atO}
t = [ a t 1 ∣ ∣ . . . ∣ ∣ a t P ] \mathbf t = [\mathbf a_t^1 || ... || \mathbf a_t^P] t=[at1∣∣...∣∣atP]
序列特征的Embedding矩阵 B u = { s e q 1 , s e q 2 , . . . , s e q m } \mathbf B_u = \{\mathbf seq_1,\mathbf seq_2, ..., \mathbf seq_m\} Bu={seq1,seq2,...,seqm}
经过target attention之后,得到
H u = { h 1 , h 2 , . . . , h m } \mathbf H_u = \{\mathbf h_1, \mathbf h_2, ... , \mathbf h_m\} Hu={h1,h2,...,hm}
h i = ∑ j = 1 m a j h j \mathbf h_i = \sum_{j=1}^m a_j \mathbf h_j hi=j=1majhj
attention分数 a i a_i ai计算如下
a i = e x p ( s i m ( t , h i ) ) ∑ j = 1 m e x p ( t , h j ) a_i = \frac {exp(sim(\mathbf t , \mathbf h_i))} { \sum_{j=1}^m exp(\mathbf t, \mathbf h_j)} ai=j=1mexp(t,hj)exp(sim(t,hi))

最终拼接起来得到底层的Embedding
Q = [ h ∣ ∣ u ∣ ∣ i ∣ ∣ t ∣ ∣ c ] \mathbf Q = [\mathbf h || \mathbf u || \mathbf i || \mathbf t || \mathbf c] Q=[h∣∣u∣∣i∣∣t∣∣c]

Feature Scaling

其实就是将用户id、物品id、场景id三者的Embedding以及底层Embedding作为输入,经过FCN后sigmoid得到特征的重要度,但是这个FCN的梯度不对底层Embedding做后向传播,避免梯度冲突
特征重要度
α = λ ∗ S i g m o i d ( F C N ( f r e e z e ( Q ) ∣ ∣ e u ∣ ∣ e i ∣ ∣ e s ) ) \mathbf \alpha = \lambda * Sigmoid( \mathrm{FCN}(\mathrm{freeze}(\mathbf Q) || \mathbf e_u || \mathbf e_i || \mathbf e_s) ) α=λSigmoid(FCN(freeze(Q)∣∣eu∣∣ei∣∣es))

重要度乘到底层Embedding上面
Q S = [ Q 1 α 1 , . . . , Q N Q α N Q ] \mathbf Q_S = [Q_1 \alpha_1, ..., Q_{N_Q} \alpha_{N_Q}] QS=[Q1α1,...,QNQαNQ]
= [ h ^ , u ^ , i ^ , t ^ , c ^ ] [ \mathbf {\hat h}, \mathbf {\hat u}, \mathbf {\hat i}, \mathbf {\hat t}, \mathbf {\hat c}] [h^,u^,i^,t^,c^]

Feature Refinement

特征微调模块,将场景特征和各个特征域特征拼接起来作为输入,经过FCN,输出各个特征微调器(Refiner)的权重,每个特征域有一组Refiner(就是个FCN),每个Refiner其实就是MMoE里面的expert,对特征域进行学习
以序列特征域为例,序列特征域Embedding为 h ^ \mathbf {\hat h} h^,场景ID的Embedding为 e s \mathbf e_s es

β = S o f t m a x ( S i g m o i d ( F C N [ h ^ ∣ ∣ e s ] ) \mathbf \beta = \mathrm{Softmax}(\mathrm{Sigmoid}(\mathrm{FCN}[\mathbf {\hat h} || \mathbf e_s]) β=Softmax(Sigmoid(FCN[h^∣∣es])
假设序列特征域有 k k k个Refiner,那么经过FR后序列特征为
h ~ = [ β 1 F C N 1 ( h ^ ) ∣ ∣ . . . ∣ ∣ β k F C N k ( h ^ ) ] \mathbf {\widetilde h} = [\mathbf {\beta_1} \mathrm {FCN_1} (\mathbf {\hat h}) || ... || \mathbf {\beta_k} \mathrm {FCN_k} ( \mathbf {\hat h})] h =[β1FCN1(h^)∣∣...∣∣βkFCNk(h^)]

其他特征同理
最后得到的Embedding拼接到一起
Q R = [ h ~ ∣ ∣ u ~ ∣ ∣ i ~ ∣ ∣ t ~ ∣ ∣ c ~ ] \mathbf {Q_R} = [ \ \ \mathbf {\widetilde h} \ \ || \ \ \mathbf {\widetilde u} \ \ || \ \ \mathbf {\widetilde i} \ \ || \ \ \mathbf {\widetilde t} \ \ || \ \ \mathbf {\widetilde c} \ \ ] QR=[  h   ∣∣  u   ∣∣  i   ∣∣  t   ∣∣  c   ]

Feature Correlation Modeling

这个就是处理各个特征域的交叉的,将 h ~ \mathbf {\widetilde h} h u ~ \mathbf {\widetilde u} u i ~ \mathbf {\widetilde i} i t ~ \mathbf {\widetilde t} t c ~ \mathbf {\widetilde c} c 映射成相同的维度
得到 h ‾ \mathbf {\overline h} h u ‾ \mathbf {\overline u} u i ‾ \mathbf {\overline i} i t ‾ \mathbf {\overline t} t c ‾ \mathbf {\overline c} c

然后两两点积交叉
Q C = [ h ‾ ⋅ u ‾ ∣ ∣ . . . ∣ ∣ t ‾ ⋅ c ‾ ] \mathbf {Q_C} = [ \ \mathbf {\overline h} \cdot \mathbf {\overline u} \ \ || ... || \ \ \mathbf {\overline t} \cdot \mathbf {\overline c} \ \ ] QC=[ hu  ∣∣...∣∣  tc  ]

经过Feature Refinement和Feature Correlation Modeling后的embedding拼接起来得到最终的输入embedding
Q f = [ Q R ∣ ∣ Q C ] \mathbf Q_f = [\mathbf Q_R || \mathbf Q_C] Qf=[QR∣∣QC]

然后后面的结构就和MMoE类似,每个场景按不同权重选择专家的输出,同时这里有个共享的场景,
最终用于预测的Embedding由各个场景塔的embedding和共享场景塔输出的embedding加权求和,共享场景塔的权重应该设置较小,防止场景不相关的冲突

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

实验

Visual Search (VS)
Similar Search (SS)
Interest Search (IS)
在这里插入图片描述

消融分析

各个组件都有作用
Feature Scaling (FS)
Feature Refinement (FR)
Feature Correlation Modeling module (FCM)
Network Layer (NL)
the shared tower (ST) in the prediction layer
Gumbel Softmax (GS)
在这里插入图片描述

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

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

相关文章

【Godot4自学手册】第六节实现人物的挥剑操作

同学们好!本节学习一下人物挥剑操作。 一、将鼠标左键单击设为输入映射 单击项目选择项目设置,在添加新动作填写sword,然后点击添加。在动作列表中,单击sword后面的加号,在弹出对话框中单击鼠标左键,最后单击确定&am…

Flink Checkpoint 超时问题和解决办法

第一种、计算量大,CPU密集性,导致TM内线程一直在processElement,而没有时间做CP【过滤掉部分数据;增大并行度】 代表性作业为算法指标-用户偏好的计算,需要对用户在商城的曝光、点击、订单、出价、上下滑等所有事件进…

Linux--基础开发工具篇(1)(yum)

1.Linux 软件包管理器 yum 1.1yum是什么?什么是软件包? yum是什么? yum是一个软件下载安装管理的一个客户端,就如小米应用商店,华为应用商城。 Linux中软件包可能有依赖关系--yum会帮助我们解决依赖关系的问题。 什么是…

使用OpenCV实现一个简单的实时人脸跟踪

简介: 这个项目将通过使用OpenCV库来进行实时人脸跟踪。实时人脸跟踪是一项在实际应用中非常有用的技术,如视频通话、智能监控等。我们将使用OpenCV中的VideoCapture()函数来读取视频流,并使用之前加载的Haar特征级联分类器来进行人脸跟踪。 …

GPTs 英语老师 现在不能发布为Averyone了 翻译 时态 结构 例句 一清二楚

https://chat.openai.com/g/g-l3S5WDgP7-english-teacher The crowd began to shout, but the drunk was unaware of the danger. 翻译为中文: 人群开始大声喊叫,但那个醉酒的人没有意识到危险。 分析时态和句子语法: 时态:这个句子使用的是过去时。语法…

muduo库的模拟实现——muduo库的介绍

文章目录 一、muduo库介绍二、背景知识1.epoll2.Reactor模式 三、功能模块划分1.工具部分2.Reactor部分3.TCPServer部分 一、muduo库介绍 muduo库是在Linux环境下使用C实现的一个多Reactor多线程的高性能网络服务器,作者陈硕,他还出了一本书《Linux多线…

基于差分进化算法(Differential Evolution Algorithm,DE)的移动边缘计算的任务卸载与资源调度研究(提供MATLAB代码)

一、优化模型介绍 移动边缘计算的任务卸载与资源调度是指在移动设备和边缘服务器之间,将部分计算任务从移动设备卸载到边缘服务器,并合理分配资源以提高系统性能和降低能耗。 在本文所研究的区块链网络中,优化的变量为:挖矿决策&…

热门应用滥用苹果 iPhone 推送通知,暗中窃取用户数据

移动研究人员 Tommy Mysk 近日揭露,部分热门应用利用 iPhone 推送通知功能秘密发送用户数据,这引发了用户隐私安全担忧。 许多 iOS 应用程序正在使用由推送通知触发的后台进程来收集设备的用户数据,从而有可能创建用于跟踪的指纹档案。 Mys…

Azure AI - 沉浸式阅读器,阅读障碍用户福音

目录 一、什么是沉浸式阅读器将内容划分开来提高可读性显示常用字词的图片突出显示语音的各个部分朗读内容实时翻译内容将单词拆分为音节 二、沉浸式阅读器如何工作?环境准备创建 Web 应用项目设置身份验证配置身份验证值安装标识客户端 NuGet 包更新控制器以获取令…

《ORANGE’S:一个操作系统的实现》读书笔记(三十八)尾声(三)

这篇文章是尾声的第三部分,也是《ORANGE’S:一个操作系统的实现》读书笔记的最后一篇文章,本篇文章记录如何将我们开发的OS安装到真实的计算机(建议在虚拟机中进行)。 将OS安装到真实的计算机 其实安装到真实的硬盘和…

JS slice() 方法总结

在JavaScript中,有一种数组方法叫做slice(),它基于给定的起始和结束位置,创建一个新的数组副本。该方法能够将数组的一部分切成另一个数组。 语法 array.slice(start, end) start: 可选参数,表示切片起始位置的索引。如果没有指…

《Linux C编程实战》笔记:信号的屏蔽

在《Linux C编程实战》笔记:信号的捕捉和处理-CSDN博客的sigaction的sa_mask成员,它的类型就是一个信号集,下面我们来介绍它 信号集 信号的总数目达64个,所以不能用一个整数表示它们的集合,int类型通常是4字节32位&a…

Linux | makefile简单教程 | Makefile的工作原理

前言 在学习完了Linux的基本操作之后,我们知道在linux中编写代码,编译代码都是要手动gcc命令,来执行这串代码的。 但是我们难道在以后运行代码的时候,难道都要自己敲gcc命令嘛?这是不是有点太烦了? 在vs中…

力扣646. 最长数对链

动态规划 思路: 思路与 力扣354. 俄罗斯套娃信封问题 类似将序列进行排序,然后假设 dp[i] 为第 i 个元素的最长数对链个数;则其状态转移方程: 第 i 个元素之前的某一个元素(假设是下标是 j),如…

KVM部署Alibaba Cloud Linux操作系统

下载镜像文件 下载链接:https://mirrors.aliyun.com/alinux/image/?spma2c4g.11186623.0.0.79ed5af6pehv54 下载文件:aliyun_3_x64_20G_nocloud_alibase_20230727.qcow2 部署KVM虚拟化环境 yum -y install qemu libvirt rr-testsuite systemctl star…

[SUCTF 2019]CheckIn1

黑名单过滤后缀’ph&#xff0c;并且白名单image类型要有对应文件头 对<?过滤&#xff0c;改用GIF89a<script languagephp>eval($_POST[cmd]);</script>&#xff0c;成功把getshell.gif上传上去了 尝试用.htaccess将上传的gif当作php解析&#xff0c;但是失败…

美工前端和数据对接一起做的可视化大屏开发项目工期一周足矣

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 可视化大屏已经成为企业和组织中不可或缺的一部分。它不仅可以帮助企业更好地展示业务数…

[docker] Docker的私有仓库部署——Harbor

一、Docker原生私有仓库—— Registry 1.1 Registry的简单了解 关于Docker的仓库分为私有库和公有仓库&#xff0c;共有仓库只要在官方注册用户&#xff0c;登录即可使用。但对于仓库的使用&#xff0c;企业还是会有自己的专属镜像&#xff0c;所以私有库的搭建也是很有必要的…

jQuery实现选择方法和保护信息方法

最近呢&#xff01;一直在学习jQuery语法&#xff0c;也没时间发布文章&#xff0c;现在学的差不多了&#xff0c;先跟大家分享下学习感受吧&#xff01;JavaScript学过后&#xff0c;再学习jQuery语法&#xff0c;应该是简单的&#xff0c;但我总是容易把它们搞混&#xff0c;…

开源模型部署及使用

开源模型部署及使用 1.Langchain-Chatchat1.环境2.运行3.效果 2.facefusion1.环境2.运行3.效果 3.Aquila1.环境2.运行 1.Langchain-Chatchat Langchain-Chatchat这里面可以调用许多模型&#xff0c;我本地下载了chatglm3模型文件&#xff0c;所以就用这个模型。 1.环境 根据…