显式利用用户画像的多兴趣建模

news2024/10/6 8:39:38

显式利用用户画像的多兴趣建模

目前在多兴趣建模中,用户侧的特征包括用户基础画像特征(年龄、性别、地域等)、用户在当前场景的静态兴趣画像特征(短期兴趣画像、长期兴趣画像)、交互的历史正向行为序列特征(正向物料id序列、正向物料类目序列、正向行为间隔序列等)。不论是基础画像、静态兴趣画像,都称为用户画像,经过Embedding层之后,与用户序列特征经过兴趣编码层提取后的兴趣Embedding拼接后进入最后的MLP。这里直接简单的拼接应该有更有效的方式来处理,有一篇paper使用attention的方式较好的结合了兴趣Embedding和用户画像Embedding。

论文地址:https://dl.acm.org/doi/pdf/10.1145/3477495.3532073

整体结构

在这里插入图片描述

多兴趣编码前

用户序列在输出多兴趣编码层之前,对序列每个正向行为的Embedding和用户画像计算attention分数,即计算每个正向行为和用户画像的相关性。然后attention分数乘到行为的Embedding上面,即对用户画像相关程度高的行为进行强化,对用户还行相关程度低的行为降权弱化,这个操作类似于对用户序列进行去噪。

其中计算attention分数的方式如下,这里也是用到了一个网络,论文中称为user-guided attention Network, e i \mathbf e_i ei是用户序列Embedding, e u \mathbf e_u eu是用户画像Embedding, [ e i , e u ] [\mathbf e_i, \mathbf e_u] [ei,eu]表示用户画像Embedding和行为Embedding拼接成一个Embedding, W i T \mathbf W^T_i WiT是学习的参数, a i a_i ai是attention分数。

a i = s i g m o i d ( W 2 T R e L U ( W 1 T [ e i , e u ] + b 1 ) + b 2 ) a_i = sigmoid(\mathbf W^T_2ReLU(\mathbf W^T_1[\mathbf e_i, \mathbf e_u] + \mathbf b_1) + b_2) ai=sigmoid(W2TReLU(W1T[ei,eu]+b1)+b2)

计算出的attention分数再乘回到序列Embedding上面,作为兴趣编码层的输入(如果是capsule编码,则计算方式如下)
z j = ∑ i = 1 T a i c i j W j e j z_j = \sum_{i=1}^T a_ic_{ij} \mathbf W_j \mathbf e_j zj=i=1TaicijWjej

多兴趣编码后

经过多兴趣编码之后,产生的多个兴趣向量,需要再度与用户画像进行兴趣精调,即用产生的兴趣向量和用户画像向量再次计算相关性,对相关性高的兴趣进行强化。论文中称这部分为IR Unit。

假设编码出了 K K K个兴趣向量, v k \mathbf v_k vk表示一个兴趣向量, e u \mathbf e_u eu表示用户画像Embedding, o k \mathbf o_k ok表示最终的兴趣向量。精调过程如下

o k = M L P ( [ o k , e u ] )      k = 1 , 2 , . . . , K \mathbf o_k = MLP([\mathbf o_k, \mathbf e_u]) \ \ \ \ k=1,2,...,K ok=MLP([ok,eu])    k=1,2,...,K

不得不说,利用用户画像的这个方式挺有效的。兴趣编码之前,对每个行为序列根据用户画像进行去噪提纯;兴趣编码之后,对每个兴趣向量根据用户画像进行精调。

其他策略

这个paper还提出了一个hard negetive策略
使用argmax从用户兴趣向量池 O u \mathbf O_u Ou中选择出和目标物料 e t \mathbf e_t et最匹配的兴趣向量 o k \mathbf o_k ok

o k = O u [ a r g m a x ( O u T e t ) ] \mathbf o_k = \mathbf O_u[argmax(\mathbf O_u^T \mathbf e_t)] ok=Ou[argmax(OuTet)]
那么基于这个用户兴趣 o k \mathbf o_k ok,最可能的交互物料 x t x_t xt可以由最大化 p ( x t ∣ u ) p(x_t|u) p(xtu)得到

p ( x t ∣ u ) = e x p ( o k T e t ) ∑ j ∈ I e x p ( o k T e j ) p(x_t|u) = \frac {exp(\mathbf o_k^T \mathbf e_t)} {\sum_{j \in I} exp(\mathbf o_k^T \mathbf e_j)} p(xtu)=jIexp(okTej)exp(okTet)
这里面兴趣向量 o k \mathbf o_k ok是和正向物料 x t x_t xt最相关的,计算负样本中的 x j x_j xj的相关性也是用这个兴趣向量来计算的,训练和推断时有个较大的gap,因为 o k o_k ok和目标物料 x t x_t xt明显相关,但是和其他物料 x t x_t xt明显无关。因此可以构造hard negetive,argmax操作不仅仅包括正向物料,也报告负向物料,即选出每个物料最相关的兴趣向量,不论这个物料是正向的还是负向的。

o k ( q ) = O u [ a r g m a x ( O u T e q ) ] \mathbf o_k^{(q)} = \mathbf O_u[argmax(\mathbf O_u^T \mathbf e_q)] ok(q)=Ou[argmax(OuTeq)]

p ( x t ∣ u ) = e x p ( ( o k ( t ) ) T e t ) ∑ j ∈ I e x p ( ( o k ( j ) ) T e j ) p(x_t|u) = \frac {exp(\mathbf (o_k^{(t)})^T \mathbf e_t)} {\sum_{j \in I} exp(\mathbf (o_k^{(j)})^T \mathbf e_j)} p(xtu)=jIexp((ok(j))Tej)exp((ok(t))Tet)

损失函数如下:
L = ∑ u ∈ U ∑ x t ∈ I u − log ⁡ ( p ( x t ∣ u ) ) L = \sum_{u \in U} \sum_{x_t \in I_u} -\log (p(x_t|u)) L=uUxtIulog(p(xtu))

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

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

相关文章

【Javassist】快速入门系列13 使用Javassist获取注解

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

MySQL性能优化三 一条SQL在MySQL中执行的过程

一 MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 1.1 service层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学…

Easy-Captcha验证码 生成以及校验(简单易懂)

目录说明pom引入详解参数类使用easy-captcha 中提供了下面几种类源码说明Captcha使用验证图解源码测试GitHub说明 Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目 pom引入 <dependency><groupId>com.github.whvc…

【C++】 bitset(位图)的使用

目录 一、bitset的基本介绍 1. 位图的概念 2. 位图的应用 二、biset的基本使用 1. bitset的成员函数 2. 基本使用介绍 1. 定义方式 2. 成员函数的使用 一、bitset的基本介绍 1. 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数…

win系统一台电脑安装两个不同版本的mysql教程

1.mysql下载zip包&#xff08;地址&#xff09;MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2.解压在你的电脑上&#xff08;不要再C盘和带中文的路径&#xff09; data和my.ini是没有的。 3.创建my.ini文件 创建记事本改变后缀名就可以 …

【5G RRC】小区搜索(Cell Search)和系统捕获(System Acquisition)流程

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

环境变量?拿来把你!

文章目录环境变量直接运行程序的第一种方法&#xff1a;把程序移动到系统目录底下echo $环境变量&#xff1a;查看环境变量PATH:指定命令的搜索路径export 定义一个新的环境变量export PATH旧路径&#xff1a;新路径getenv&#xff1a;获取环境变量—获取环境变量的第一种方式s…

车载诊断协议UDS——读写服务Service 22/2E

在UDS协议中,对于服务常用有两种格式: 1、Service (服务) + Subfunction( 子服务) 子服务可理解为对服务的功能补充,比如会话模式Service 10服务,子服务可以分为不同的会话模式(默认会话模式、扩展会话模式、编程会话模式等等),用来区分服务的执行权限。 2、Servi…

[OC学习笔记]启动流程(objc部分)

先回顾下这张图&#xff0c;回顾下整体流程。现在分析下在此流程中objc4源码&#xff08;818.2&#xff09;的处理逻辑。 _objc_init解析 我们在上图可以看出&#xff0c;dyld在main函数之前&#xff08;pre-main&#xff09;会间接调用到objc的_objc_init&#xff0c;其中使…

洛谷—— AT_abc157_a [ABC157A] Duplex Printing

文章目录[ABC157A] Duplex Printing题面翻译题目描述输入格式输出格式说明提示题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3提示制約Sample Explanation 1AC代码[ABC157A] Duplex Printing 题面翻译 题…

GC调优

GC调优一、新生代调优二、幸存区调优三、老年代调优四、GC调优案例案例一&#xff1a;Full GC和Minor GC频繁案例二&#xff1a;请求高峰期发生Full GC&#xff0c;单次暂停时间特别长&#xff08;CMS&#xff09;案例三&#xff1a;老年代充裕情况下&#xff0c;发生Full GC&a…

SQL中灵活的视图

文章目录视图的创建、嵌套及特性创建视图查询视图视图的嵌套常见的8个使用场景场景一&#xff1a;仅提供需要的数据场景二&#xff1a;对特定的用户仅开放特定的数据&#xff0c;达到保护敏感数据的目的&#xff0c;提升了数据安全性&#xff1b;仅筛选需要的数据场景四&#x…

迭代器模式 实现ES大量数据查询

目录 项目需求 要求 普通策略 升级策略&#xff1a;使用迭代器模式 迭代器模式组成 代码实现 查询实体 返回实体 实现类 代码测试 mock的ES返回结果json数据 第一次返回结果 第二次返回结果 第三次返回结果 postMan请求, 控制台打印结果 项目需求 数据从Mysq…

云计算服务安全指南

声明 本文是学习GB-T 31167-2014 信息安全技术 云计算服务安全指南. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 云计算服务安全退出服务 9.1退出要求 合同到期或其他原因都可能导致客户退出云计算服务&#xff0c;或将数据和业务系统迁…

植物大战僵尸:代码实现自动收集阳光

通过阳光增加的值为切入点&#xff0c;找到自动收集阳光的关键判断并实现自动收集阳光&#xff0c;首先我们猜测当阳光出现后&#xff0c;我们是否会去点击&#xff0c;这个过程必然是由一个判断和一个时钟周期事件来控制的&#xff0c;那么当我们点击下落的阳光以后&#xff0…

DC-UNet:重新思考UNet架构和双通道高效CNN医学图像

摘要 经典UNet的体系架构在某些方面存在着局限性。因此本文对其结构提出了改进。1)设计高效的CNN架构来取代编码器和解码器;2)在最先进的U-Net模型的基础上&#xff0c;应用残差模块来取代编码器和解码器之间的跳过连接来进行改进。 医学图像分割是通过一些自动和半自动的方法…

linux系统中块设备的基本实现方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用linux系统中的块设备的实现方法。 目录 第一&#xff1a;块设备基本简介 第二&#xff1a;块设备驱动框架 第三&#xff1a;实现程序代码实现 第一&#xff1a;块设备基本简介 块设备驱动与字符设备驱动之间的主…

双指针:环形链表II

题目&#xff1a;142. 环形链表 II 我们知道&#xff0c;判断一个链表是否为环是这样的&#xff1a; public boolean hasCycle(ListNode head) {ListNode slow head,quickly head;while(quickly ! null && quickly.next ! null){slow slow.next;quickly quickly.n…

【javaSE】中异常如何处理

目录 文章目录 一、异常的初识 1.1异常的概念 1.2异常的体系结构 1.3异常的分类 二、异常的处理和抛出 2.1防御式编程 2.2异常的抛出 2.3异常的捕获 2.4异常的处理流程 三、自定义异常类 3.1举例&#xff1a;实现一个用户登录功能 一、异常的初识 1.1异常的概念 在…

Perl语法

Perl从许多语言中借用了语法和概念&#xff1a;awk&#xff0c;sed&#xff0c;C&#xff0c;Bourne Shell&#xff0c;Smalltalk&#xff0c;Lisp甚至是英语。每个简单的语句必须以分号&#xff08;;&#xff09;结尾&#xff0c;和Java类似&#xff0c;与Python不同。 一、扩…