多行为推荐-KBS 24|基于HyperGRU对比网络的短视频推荐多行为序列建模

news2024/12/26 18:10:32

 论文:https://www.sciencedirect.com/science/article/abs/pii/S0950705124004751?via%3Dihub

关键词:短视频推荐,多行为推荐,对比学习,RNN

1 动机

这是我第一次看短视频推荐里涉及到多行为的论文,动机还是多行为推荐的老动机了。忽视了不同行为类型之间的语义关联,尤其是用户通过多种行为展现出的满意度顺序。此外,未能捕捉用户历史多行为序列中的时间依赖性,特别是正负行为之间的关系,这个正负行为我是第一次了解,如下图所示:

如果显示的视频在观看几秒钟后没有引起用户的兴趣,用户可能会立即向下滑动到下一个推荐的微视频(“跳过”)负行为。如果用户被视频吸引,想再看一眼,他就会允许视频继续播放(“点击”)正行为。用户会反复观看视频,或者如果他非常喜欢视频就会点赞(“赞”) 正行为。语义相关性表现为“跳过”和“点击/点赞”行为的对立关系,以及“点赞”和“点击”行为的条件依赖关系。条件依赖涉及的“点击”是一种喜欢前的行为,类似于电商领域的“浏览”和“购买”行为。


2 贡献

提出了HyperGRU对比网络来建模微视频推荐中的多行为序列

  • 基于HyperGRU网络的模型设计:提出的HyperGRU网络通过提取用户行为序列中的正负兴趣,能够捕捉用户行为的时间依赖性,尤其是在多行为序列中区分正负兴趣。

  • 对比学习:在对比学习的指导下进行训练,强化了正负兴趣的区分性。通过建模“跳过”和“点击”子序列,进行对比任务,从而使得兴趣表示能够更好地区分其关联标签与对立标签。

  • 超节点(Hypernode):为了捕捉不同行为之间的语义依赖,提出了“超节点”概念,能够有效地建模多种行为类型之间的关联关系,如下图所示。

 (a)超节点的结构由三个内部节点组成,分别代表短视频推荐场景中的“跳过”、“点击”和“点赞”行为。(b)超节点的内部节点根据输入的行为类型有条件地激活,只有激活的节点参与计算。

类似的想法在多行为推荐比较经典的一篇论文:Graph Meta Network for Multi-Behavior Recommendation中有所体现,如下列公式所示,具体来说就是将用户的多行为嵌入编码成一个meta knowledge:该论文的地址:https://arxiv.org/abs/2110.03969


3 相关工作

现有的短视频推荐方法主要是利用视频的多模态内容和用户的多模态行为来提高模型性能。多行为推荐方法指出,短视频平台提供了用户多方面的响应,包括多种互动类型和观看时间。现有基于图的LSTM网络来模拟用户的隐式行为,并提出了一个增强的多层次兴趣模块来模拟用户的显式反馈。通过情感胶囊网络从用户的“点击”行为中提取积极情绪,从用户的“取消”行为中提取消极情绪,以细粒度的方式对用户偏好进行建模。有研究表明,将用户的“跳过”行为直观地视为负样本甚至可能损害推荐性能,因为负反馈与正反馈非常相似。

值得注意的是,最近的研究发布了两个短视频推荐数据集,其中收集了原始视频内容,以便更好地理解视频内容和用户的细粒度兴趣。这两个数据集可能为短视频推荐领域的新方向铺平道路,此前由于缺乏数据集,这一领域一直没有得到充分的探索。


 4 问题定义

在具有自动播放功能的短视频平台中,没有具体的“点击”信号,但视频观看时间是用户满意度的反映。根据官方网站给出的定义,基于浏览市场将点击预定义为:

点赞信号反映了用户对视频的强烈满意度,定义为用户观看时间至少为视频时长的两倍:

用户在短视频推荐中的多行为与电商、新闻、电影等其他社交媒体平台略有不同。微视频平台的被动交互模式,用户被动地接收到引人入胜的个性化内容推送,并在不知不觉中不断滑动推送观看视频。而其他平台上的用户则积极地参与信息,上下滚动页面,直到找到他们想要点击的内容。微视频平台的隐性正反馈更为被动和自动,说明点击的项目不一定是用户喜欢的。此外,由于用户在消费长视频流时有着强烈的多样化需求和偏好,隐性的负面反馈可能并不是真正的不喜欢。因此,不同类型的行为之间的时间依赖性很强,甚至在积极行为和消极行为之间也是如此。 


5 模型

用户的多种行为类型可以根据潜在情绪分为两种反馈:积极反馈和消极反馈。HyperGRU-CR框架,捕获用户历史交互序列中多个行为之间的语义和时间相关性,进而提取积极和消极偏好。HyperGRU网络从同一序列中同时提取用户的正、负兴趣,可能会导致用户的正、负兴趣不区分。由于对比学习成功地学习了判别用户表示,生成了两个兴趣的标签表示,并使用它们来监督兴趣表示与其对应的标签更相似。然后,根据不可区分的用户表示来预测未来被点击的项目。 

5.1 用户兴趣编码器

从用户的历史多行为序列中提取出积极和消极的兴趣

5.1.1 HyperGRU

HyperGRU对比网络,由两个关键模块组成:HyperGRU网络和对比学习。

HyperGRU网络

提出了超节点概念,将多个行为整合到单个节点中。每个超节点由三个节点组成,分别对应三种不同的行为类型。超级节点的内部节点根据输入的行为类型有条件地激活。如果输入行为类型为“跳过”,则激活内部“跳过”节点;否则,将激活内部的“click”。并基于超节点和GRU方案的HyperGRU网络。利用HyperGRU网络从多行为序列中提取用户的正、负兴趣。将整个交互序列视为一个集体输入,而不是单独处理每个动作,从而捕捉存在于所有类型行为之间的复杂的时间依赖关系。

其中:h_{t}^{-} 和h_{t}^{+} 表示每个GRU单元的隐状态。它们分别用于表示用户的负面兴趣(如“跳过”行为)和正面兴趣(如“点击”或“喜欢”行为),Indicator function是用来表示某一行为是否被激活的功能。i_{t}^{+}i_{t}^{-}是用来表示“点击”行为和“跳过”行为的指示函数,如果当前时间步的行为是“点击”或类似的正面行为i_{t}^{+}=1.在每个时间步,根据Indicator function的状态,相应的隐状态h_{t}^{-} 和h_{t}^{+} 会更新以吸收上下文信息;否则,直接从上一个时间步复制:

-p意思就是逻辑否定,正面or负面,保证每个时间步内只能有一个行为被激活。xt是item embedding,C通过吸收当前项目输入和先前激活节点的信息来更新隐藏状态h_{p}^{t}:

更新门,重置门,候选激活向量以及最终隐状态的公式,为了模拟“点赞”和“点击”行为之间的直接联系,使用了Highway Layer,通过更新函数h_{t}^{+}允许“点赞”和“点击”行为之间的关系被有效地建模:

 超节点用于捕捉不同行为之间的语义依赖关系,Highway Layer是传递信息的机制通过增加门控机制来改进信息流动,使得模型能够更有效地学习不同行为序列中的信息。

5.1.2 对比学习

用户的积极和消极偏好本质上是不同的,通过使用平均池分别对点击和跳过的子序列进行编码来生成伪标签。使用这些标签设计了一个对比学习。标签表示的计算:

在得到兴趣的表示和对应的伪标签后,使用MLP层将其转化为对比学习的空间:

在对比学习中,优化目标是将正对比负对拉得更近(即,正向兴趣与正确标签的配对应距离较近),而负对则应远离。目标是最大化正对的相似性,同时最小化负对的相似性。正对是指正向兴趣GRU其对应标签MLP,负对则是由 正向兴趣负向标签.基于InfoNCE设计对比学习:

用户的“点击”和“跳过”行为之间存在显著的语义重叠,几乎所有用户都会在同一微视频上进行两种行为。作者监督正兴趣和负兴趣接近它们相关的标签表示。并提到不同于现有的多行为推荐,后者利用独立正则化来强制每个用户的积极和消极兴趣不同。

我认为就是在对比学习正负样本对选取上,大部分都会使用购买行为和其他单一辅助行为(浏览),并默认这俩行为是独立的,因此它们的兴趣表示也是相互独立的,但其实也不独立,也有一些方法将辅助行为聚合,正样本是同一用户的目标行为和购买行为,负样本是不同用户之间的行为。

所以作者在短视频推荐场景中,点击和跳过其实更强调了多行为之间的语义重叠。它们并不是完全独立的,而是有可能相互转换(例如,先跳过后点击,或者先点击后跳过)。所以设计了4个对比学习任务,虽然对比学习计算不同嵌入向量之间的相似性,并使用 Softmax 或 exp 操作来量化两个样本对之间的相似性或差异性。那么举例正向兴趣:

通过正向兴趣与正向标签和负向标签的对比,增强模型对正向兴趣与标签关系理解。第二项通过正向标签与正向兴趣和负向兴趣的对比,进一步加强模型 正向标签与负向兴趣关系的建模。四个任务通过多种正负样本的排序顺序来帮助模型学习行为之间的相互依赖,虽然顺序本身不会影响相似度计算(例如正样本,谁在前谁在后没影响,都是嵌入计算),但通过顺序设计强化了模型的学习信号。

5.2 预测

最终的用户表示为给定用户学习到的正、负兴趣的加权和:

将最终用户表示和目标短视频嵌入拼接到一个两层MLP网络:

交叉熵:


 6 数据集

KuaiRec-ID。它由快手发行,在这个数据集中只有项目ID,没有其他详细的项目信息。

Kuaishou-Visual。数据集由ALPINE发布。用户留下的原始点赞行为非常稀疏的。每个交互的“click”和“skip”标签也提供了。其中,“跳过”行为表示用户在预览了微视频缩略图后没有点击该微视频。

QK-Video。该微视频数据集由从腾讯QQ KAN收集而来,包含了超过500万用户的用户行为日志,记录时间为2021年9月17日至12月7日。提取用户的多重反馈,既有正面反馈(即视频“点击”、“分享”、“点赞”、“关注”),也有负面反馈(跳过)。此外,平台还会记录每次互动的观看次数,代表视频被观看的次数。

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

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

相关文章

企业网双核心交换机实现冗余和负载均衡(MSTP+VRRP)

MSTP(多生成树协议) 通过创建多个VLAN实例,将原有的STP、RSTP升级,避免单一VLAN阻塞后导致带宽的浪费,通过将VLAN数据与实例绑定,有效提升网络速率。 VRRP(虚拟路由冗余协议) 用…

图解RabbitMQ七种工作模式生产者消费者模型的补充

文章目录 1.消费者模型2.生产者-消费者模型注意事项2.1资源释放顺序问题2.2消费者的声明问题2.3虚拟机和用户的权限问题 3.七种工作模式3.1简单模式3.2工作模式3.3发布/订阅模式3.4路由模式3.5通配符模式3.6RPC通信3.7发布确认 1.消费者模型 之前学习的这个消息队列的快速上手…

制造业管理系统中ERP与MES的区别

在当今工业4.0的背景下,数字化管理已成为现代工厂不可或缺的一部分。在这一进程中,企业资源计划(ERP)系统和制造执行系统(MES)扮演着关键角色。尽管如此,许多工厂的管理者对于ERP和MES的理解仍存…

面向初学者的 Ansys Mechanical 中的接触建模

接触概述 Ansys Mechanical 中的接触建模是仿真结构不同部分在各种条件下如何相互作用的关键方面。它涉及定义表面的接触方式,即它们是接触、滑动还是分离。Ansys Mechanical 提供了广泛的接触选项来准确建模这些交互,包括粘合、摩擦和无分离接触。每个…

【C++指南】C++内存管理 深度解析

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 一、C 内存管理概述 二、C内存区域划分 三、C 内存管理方式 🍃1.自动内存管理…

聚类算法全面解析:理论与实践结合

聚类(Clustering)是数据挖掘和机器学习中一类重要的无监督学习方法,旨在将数据划分为多个类别,使得类别内部的数据相似度高,而类别之间的数据差异较大。聚类广泛应用于图像分割、市场分析、生物信息学、文本挖掘等领域…

Python 批量剪辑视频片头片尾工具

Python 批量剪辑视频片头片尾工具 1.简介: 批量剪辑片头片尾的软件,让你的视频创作事半功倍,视频剪辑处理完成后,用户可以在指定文件夹中查看已经剪切完片头片尾的视频‌。这些工具不仅适用于个人用户进行日常的视频编辑工作&am…

大模型分类1—按应用类型

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl根据应用领域,大模型可分为自然语言处理、计算机视觉和多模态大模型。 1. 自然语言处理大模型(NLP) 1.1 应用领域与技术架构 自然语言处理大模型(NLP)的应用领域广泛,包括但不限于文本分类、…

保姆级教程用vite创建vue3项目并初始化添加PrimeVue UI踩坑实录

文章目录 一、什么是PrimeVue二、详细教程1.添加PrimeVue2.配置main.js3.添加自动引入4.配置vite.config.js5.创建测试页面 一、什么是PrimeVue PrimeVue 是一个用于 Vue.js 3.x 开发的一款高质量、广受欢迎的 Web UI 组件库。 官网地址:https://primevue.org/ 二、…

Go的Gin比java的Springboot更加的开箱即用?

前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…

php 系统函数 记录

PHP intval() 函数 PHP函数介绍—array_key_exists(): 检查数组中是否存在特定键名 如何使用PHP中的parse_url函数解析URL PHP is_array()函数详解,PHP判断是否为数组 PHP函数介绍:in_array()函数 strpos定义和用法 strpos() 函数查找字符串在另一字符串…

关于Chrome自动同步书签的解决办法

前言 并不一定适用所有用户, 目前我在网上搜集了一些资料,也做了一些尝试。 就我个人总结的经验来讲,分享大家以下几种办法: 1.书签同步插件 点击如下🔗: Chrome书签同步https://bm.famend.cn/ …

matrixzq:基于ℤq的纯python矩阵库

1. 引言 当希望使用纯 Python 代码对整数 q 模矩阵进行操作,以演示使用学习误差 (Learning-With-Errors,LWE) 的基于格的加密方案的一些原理时,找到了 Thom Ives 编写的优秀代码“纯 Python 中无需 Numpy 或 Scipy 的 BASIC 线性代数工具”&…

深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)

本文详细介绍模型训练完成后的压缩和优化技术:蒸馏、剪枝、量化。 文章目录 1. 知识蒸馏 (Knowledge Distillation)基本概念工作流程关键技术类型应用场景优势与挑战优势挑战 总结 2. 权重剪枝 (Model Pruning)基本原理二分类1. 非结构化剪枝(Unstructur…

【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分

目录 1. 硬件选型1.1 esp32硬件型号1.2 TMC2209 硬件型号 2 原理接线图2.1 esp32接线2.2 TMC2209接线2.2.1 单向通讯 不配置地址2.2.2 单向通讯 配置地址2.2.3 双向通讯 单UART 【本文采用】2.2.4 双向通讯 多UART 3. 成品效果 1. 硬件选型 1.1 esp32硬件型号 采用的是微雪ES…

【论文复刻】雾霾污染及ZF治理与经济高质量发展(2004-2020年)

一、数据来源: PM2.5数据根据美国哥伦比亚大学社会经济数据与应用中心提供的全球PM2.5的年均浓度数据整理计算而得,人均实际GDP是以2000年为基期进行平减处理获得的实际GDP,控制变量来自《中国城市统计年鉴》、国家统计局,内含原…

行列式计算方法

行列式(Determinant)是线性代数中一个重要的概念,用来描述方阵的一些性质,尤其是与矩阵的可逆性、特征值等有关。下面是几种常见的计算行列式的方法: 1. 2x2矩阵的行列式 对于一个2x2矩阵: 行列式计算公式…

Elastic Cloud Serverless:深入探讨大规模自动扩展和性能压力测试

作者:来自 Elastic David Brimley, Jason Bryan, Gareth Ellis 及 Stewart Miles 深入了解 Elasticsearch Cloud Serverless 如何动态扩展以处理海量数据和复杂查询。我们探索其在实际条件下的性能,深入了解其可靠性、效率和可扩展性。 简介 Elastic Cl…

基于SpringBoot的旅游管理系统设计与实现

标题: 《基于SpringBoot的旅游管理系统设计与实现》 摘要: 本研究的主要目标是设计与实现基于Spring Boot的现代化旅游管理系统,旨在有效解决传统系统存在的多项问题,如用户体验不佳、功能不完善以及安全性方面的隐患。随着互联网…

LeetCode 热题100(十五)【动态规划】(3)

15.7最长递增子序列(中等) 题目描述:leetcode链接 300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元…