双塔多目标MVKE

news2024/9/21 13:56:32

MVKE:Mixture of Virtual-Kernel Experts for Multi-Objective User Profile Modeling

MVKE论文中是给用户打tag标记,构建用户画像。使用的也是经典的双塔模型,另外在双塔的基础上面叠加了ctr和cvr的多个目标。但是论文最大的创新点是在用户塔做了有意思的处理,通过类似MMoE的方式引入多个Experts,同时引入一组全局兴趣向量(类似于一级类目的用户兴趣,只不过隐式的,和实际的一级类目没有明确的一对一关系),通过attention机制学习用户每个特征field和全局兴趣向量的关系,然后经过expert网络变换后输出,多个expert输出的向量经过一个gate网络,gate网络也是通过attention机制计算兴趣向量和tag-embedding的相关性,根据这个相关性结果对多个expert的输出结果加权得到最终的user-embedding。

基础结构还是双塔
在这里插入图片描述
假设用户特征域分为 m m m个域,双塔模型可以表示为如下, E u i E_{u_i} Eui表示用户Embedding, E T E_T ET表示物料Embedding,论文中是tag。用户塔表示为函数 f u ( ⋅ ) f_u( \cdot ) fu(),物料塔表示为 g i ( ⋅ ) g_i( \cdot) gi(),对于用户和物料的pair对< u i , a i u_i,a_i ui,ai>,其中 θ u \theta_u θu θ a \theta_a θa分别表示用户塔和物料塔的网络参数。
E u i = f u i ( u i 1 , u i 2 , . . , u i m ; θ u ) E_{u_i} = f_{u_i}( u^1_i, u^2_i, .., u^m_i; \theta_u ) Eui=fui(ui1,ui2,..,uim;θu)

E T i = E a i = g i ( a i ; θ a ) E_{T_i} = E_{a_i} = g_i(a_i; \theta_a) ETi=Eai=gi(ai;θa)

使用bce-loss计算
p i = σ ( c o s ( E u i , E T I ) ) p_i = \sigma(cos(E_{u_i}, E_{T_I})) pi=σ(cos(Eui,ETI))
L = L B C E ( y , f u ( u ; θ u ) ⋅ g t ( a ; θ i ) ) = ∑ i ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) L = L_{BCE}(y,f_u(u;\theta_u) \cdot g_t(a;\theta_i)) = \sum_i(y_i \log(p_i) + (1-y_i)\log(1-p_i)) L=LBCE(y,fu(u;θu)gt(a;θi))=i(yilog(pi)+(1yi)log(1pi))

对于单目标任务,MVKE结构如下
在这里插入图片描述
逐个结构来看
Virtual-Kernal Experts(VKE)其实就是MMoE多目标结构中的Expert,这个Expert的输入有2类,一个是用户的各个特征域的Embedding,另外一个是全局兴趣向量(论文称为Virtual Kernel,取名高大上),通过attention机制将特征域的Embedding进行加权后concat后输入给网络 f u ( ⋅ ) f_u(\cdot) fu(),这里Key、Value都是特征域Embedding,Query是全局兴趣向量(即论文中称为Virtual-Kernal )
Q = σ ( W Q T W V K k + b Q ) Q = \sigma(W^T_QW^k_{VK} + \mathbf b_Q) Q=σ(WQTWVKk+bQ)
K = σ ( W K T E u f i + b K ) K = \sigma(W^T_K E_{uf_i}+ \mathbf b_K) K=σ(WKTEufi+bK)
Q = σ ( W V T E u f i + b V ) Q = \sigma(W^T_V E_{uf_i}+ \mathbf b_V) Q=σ(WVTEufi+bV)
attention结果计算如下:
C V K E k = s o f t m a x ( Q K T d k ) ∗ V C^k_{VKE} = softmax(\frac {QK^T} {\sqrt d_k}) * V CVKEk=softmax(d kQKT)V
根据各个特征域加权concat后,输入到网络 f u k ( ⋅ ) f^k_u(\cdot) fuk()中,得到VKE的输出
E u i k = f u k ( C V K E k ) E^k_{u_i} = f^k_u(C^k_{VKE}) Euik=fuk(CVKEk)

每个Expert输出一个Embedding,这些Embedding经过一个gate网络。这个gate网络称为Virtual-Kernal Gate(VKG),VKG也是由attention网络组成,输入的Key是兴趣向量(Virtual-Kernal ),Value是各个专家(VKE)的输出,Query是tag Embedding。attention权重计算由非线性映射 Q ( E T i ) Q(E_{T_i}) Q(ETi) K ( W V K k ) K(W^k_{VK}) K(WVKk)计算得到。最终的用户向量 E u i E_{u_i} Eui表示如下
E u i = ∑ i s o f t m a x ( Q K T d k ) ∗ V E_{u_i} = \sum_i softmax (\frac {QK^T} {\sqrt d_k}) * V Eui=isoftmax(d kQKT)V

从结构上面看,用户隐式兴趣向量Virtual-Kernal )起着重要作用,在专家网络VKE和门控网络VKG都有应用,论文中说这些兴趣向量就像用户和tag之间的桥梁,一桥架起双塔,就像下图。这个桥梁联通了用户和物料,在Expert中衡量用户的特征,在Gate网络中又被物料Embedding约束,可以说是一种间接的交叉,这在双塔模型中算是比较新颖的做法。
在这里插入图片描述
对于多任务模型,结构如下
在这里插入图片描述
最后loss相加
在这里插入图片描述

MVKE最开始乍看和MIND/ComiRec模型比较类似,MIND/ComiRec在通过Capsule/Self-Attention方式得到K个用户兴趣向量后,最后的用户兴趣向量是通过label-aware attention的方式得到,和MVKE最后用户向量一样。不过不同的是,生成用户K个兴趣向量的方式不一样,MVKE是MMoE的多个Expert方式,MIND/ComiRec是胶囊网络或者Self-Attention方式,不过没有本质区别。个人觉得区别较大的地方是MVKE通过引入了多个隐式兴趣向量作为用户和物料的桥梁,在模型较早期就实现了双塔的“交叉”,这一点比较独特。

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

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

相关文章

基于龙芯 CPU 的气井控制器的软件设计(三)

4.1 系统软件的总体设计 基于龙芯 CPU 的气井控制器的设计需要开发测试硬件模块的测试软件&#xff0c;主要对 RTC 模块、存储器模块、4G 通信、以太网通信、UART 串口以及 AI 模块进行了驱动程序和 应用程序设计。将各个模块设计为不同的任务&#xff0c;龙芯 RTU 软件设计流程…

Redis 监听过期的key(KeyExpirationEventMessageListener)

目录一、简介二、maven依赖三、编码实现3.1、application.properties3.2、Redis配置类3.3、监听器3.4、服务类3.5、工具类四、测试4.1、测试类4.2、单实例4.3、多实例结语一、简介 本文今天主要是讲Redis中对过期key的监听&#xff0c;可能很多小伙伴不会&#xff0c;或者使用会…

day15_常用类

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、代码块[了解] 三、API 四、Object 五、包装类 六、数学和随机 零、 复习昨日 抽象接口修饰符abstractinterface是不是类类接口属性正常属性没…

Leetcode(每日一题)——1139. 最大的以 1 为边界的正方形

摘要 1139. 最大的以 1 为边界的正方形 一、以1为边界的最大正方形 1.1 动态规划 第530题需要正方形所有网格中的数字都是1&#xff0c;只要搞懂动态规划的原理&#xff0c;代码就非常简洁。而这题只要正方形4条边的网格都是1即可&#xff0c;中间是什么数字不用管。 这题…

Hive的安装与配置

一、配置Hadoop环境先看看伪分布式下的集群环境有没有错误的情况&#xff1a;输入命令&#xff1a;start-all.sh jps查看伪分布式的所有进程是否完善二、解压并配置HiveHive压缩包→ https://pan.baidu.com/s/1eOF_ICZV8rV-CEh3nX-7Xw 提取码: m31e 复制这段内容后打开百度网盘…

逆向 xx音乐 aversionid

逆向 xx音乐 aversionid 版本 7.2.0 版本 7.22.0 第一步&#xff0c;charles 抓包 目标字段 aversionid 加固平台 com.stub.StubApp 360加固s.h.e.l.l.S 爱加密com.secneo.apkwrapper.ApplicationWrapper 梆梆加固com.tencent.StubShell.TxAppEntry 腾讯加固 第二步&…

【网络编程】Java快速上手InetAddress类

概念 Java具有较好的网络编程模型/库&#xff0c;其中非常重要的一个API便是InetAddress。在Java.net 网络编程中中有许多类都使用到了InetAddress 这个类代表一个互联网协议&#xff08;IP&#xff09;地址。 IP地址是一个32&#xff08;IPV4&#xff09;位或128&#xff08;…

求职季哪种 Python 程序员能拿高薪?

本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位&#xff0c;从拉勾网上爬取了相应的职位信息和任职要求&#xff0c;并通过数据分析可视化&#xff0c;直观地展示了这10个职位的平均薪资和学历、工作经…

02 Context的使用

对于 HTTP 服务而言&#xff0c;超时往往是造成服务不可用、甚至系统瘫痪的罪魁祸首。 context 标准库设计思路 为了防止雪崩&#xff0c;context 标准库的解决思路是&#xff1a;在整个树形逻辑链条中&#xff0c;用上下文控制器 Context&#xff0c;实现每个节点的信息传递…

Package ‘oniguruma‘, required by ‘virtual:world‘, not found

一、操作系统环境 OS版本信息&#xff1a;Rocky Linux 9.1 PHP版本&#xff1a;8.0.26 安装的依赖&#xff1a; dnf -y install libXpm-devel libXext-devel gmp gmp-devel libicu* icu* net-snmp-devel libpng-devel libjpeg-devel freetype-devel libxslt-devel sqlite…

真正意义上的数字零售,最为重要的一点就是要回归零售本身

互联网浪潮的退却并未真正将人们的思维带离互联网的牢笼&#xff0c;相反&#xff0c;越来越多的人依然在用互联网式的眼光看待后互联网时代的事物。尽管这样一种做法可以在一定程度上取得一定的效果&#xff0c;但是&#xff0c;如果仅仅只是用互联网思维来揣度这一切&#xf…

基于虚拟机机的代码保护技术

虚拟机保护技术是基于x86汇编系统的可执行代码转换为字节码指令系统的代码&#xff0c;以达到保护原有指令不被轻易逆向和篡改的目的。 字节码&#xff08;Byte-code&#xff09;是一种包含执行程序&#xff0c;由一序列 op 代码/数据对组成的 &#xff0c;是一种中间码。字节是…

《第一行代码》 第五章:详解广播机制

如果你了解网络通信原理应该会知道&#xff0c;在一个 IP 网络范围中最大的IP 地址是被保留作为广播地址来使用的。比如某个网络的 IP 范围是 192.168.0XXX&#xff0c;子网掩码是255.255.255.0那么这个网络的广播地址就是 192.168.0255广播数据包会被发送到同-网络上的所有端口…

Spring Security OAuth2四种授权模式总结(七)

写在前面&#xff1a;各位看到此博客的小伙伴&#xff0c;如有不对的地方请及时通过私信我或者评论此博客的方式指出&#xff0c;以免误人子弟。多谢&#xff01;如果我的博客对你有帮助&#xff0c;欢迎进行评论✏️✏️、点赞&#x1f44d;&#x1f44d;、收藏⭐️⭐️&#…

【MySQL】MySQL表的增删改查(CRUD)

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;MySQL数据库&#x1f447; ✨算法专栏&#xff1a;算法基础&#x1f447; ✨每日一语&#xff1a;生命久如暗室&#xff0c;不碍朝歌暮诗 目 录&#x1f513;一. CRUD&#x1f512;二. 新增&#xff08;Creat…

将array中元素四舍五入取整的np.rint()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将array中元素四舍五入取整 np.rint()方法 选择题 关于以下python代码说法错误的一项是? import numpy as np a np.array([-1.7, 1.5, -0.2, 0.3]) print("【显示】a\n",a) pr…

BI是报表?BI是可视化?BI到底是什么?

很多企业认为只要买一个前端商业智能BI分析工具就可以解决企业级的商业智能BI所有问题&#xff0c;这个看法实际上也不可行的。可能在最开始分析场景相对简单&#xff0c;对接数据的复杂度不是很高的情况下这类商业智能BI分析工具没有问题。但是在企业的商业智能BI项目建设有一…

数字化系统使用率低的原因剖析

当“数字化变革”成为热门话题&#xff0c;当“数字化转型”作为主题频频出现在一个个大型会议中&#xff0c;我们知道数字化时代的确到来了。但是&#xff0c;根据Gartner的报告我们看到一个矛盾的现象——85%的企业数字化建设与应用并不理想、但对数字化系统的需求多年来持续…

软件测试项目实战(附全套实战项目教程+视频+源码)

开通博客以来&#xff0c;我更新了很多实战项目&#xff0c;但一部分小伙伴在搭建环境时遇到了问题。 于是&#xff0c;我收集了一波高频问题&#xff0c;汇成本篇&#xff0c;供大家参考&#xff0c;避免重复踩坑。 如果你还遇到过其他坑和未解决的问题&#xff0c;可在评论区…

webpack安装步骤(一)

系列文章目录 安装步骤系列文章目录前言一、Webpack是什么&#xff1f;Webpack官网解释解释内容如下图二、Webpack的安装步骤第一步&#xff1a;检查本机是否已经安装过Webpack&#xff08;全局&#xff09;1.操作如下2.结果如下图第二步&#xff1a;安装webpack&#xff08;非…