FUM论文阅读笔记

news/2024/9/20 20:40:51

FUM: Fine-grained and Fast User Modeling for News Recommendation

Abstract

现存的问题:

​ 现有方法通常先将用户点击的新闻独立编码为新闻嵌入,然后将其聚合为用户嵌入。然而,这些方法忽略了同一用户点击的不同新闻之间的词级交互,而这种交互包含丰富的细节线索来推断用户兴趣。

解决方案

​ 在本文中,我们提出了一个细粒度的快速用户建模框架(FUM),从细粒度的行为交互中建立用户兴趣模型,用于新闻推荐。FUM 的核心理念是将点击的新闻串联成一个长文档,并将用户建模转化为文档建模任务,其中包含新闻内和新闻间的词级交互。由于 普通的transformer无法高效处理长文档,我们采用了一种名为 Fastformer 的高效转换器来对细粒度行为交互进行建模。

Introduction

​ 事实上,同一用户点击的新闻之间的词级交互包含丰富的细节线索,可用于了解用户的兴趣。然而,现有的方法在建模用户兴趣时忽略了词级行为交互,这可能导致较差的用户建模。

​ 在本文中,我们提出了一种细粒度的快速用户建模框架(名为 FUM),从细粒度的行为交互中建立用户兴趣模型,用于新闻推荐。在 FUM 中,我们首先将用户点击新闻的文本串联为一个长用户文档,并将用户建模任务转换为文档建模任务。然后,我们在长用户文档中捕捉新闻内和新闻间的词级行为交互,从而以精细的方式了解用户兴趣。此外,由于二次复杂性,普通Transformer网络在长文档建模中通常效率较低,因此我们采用了一种名为 Fastformer 的高效变换器网络来捕捉 FUM 中的细粒度行为交互。

Method

​ FUM的模型结构图如下:

pkrzuDO.png

​ 我们的工作重点是从细粒度的单词级交互中准确和有效地建模用户的兴趣。

细粒度和快速的用户建模

​ FUM由细粒度用户模型和粗粒度用户模型组成。细粒度用户模型用于从词级行为交互中捕捉用户兴趣。其核心是将用户点击的新闻串联成一个长文档,并捕捉新闻内和新闻间的词级交互,从而建立用户兴趣模型。

​ 具体来说,我们首先通过一个特定类型的嵌入层将新闻文本 𝑇𝑖 的第 𝑖 个类型编码成一个文本嵌入序列\(\mathbf{T}_i\in\mathbb{R}^{l\times d}\) ,其中 𝑑 是嵌入维度。然后,我们将用户阅读历史记录的文本序列连接成一个长序列\(\mathbf{T}=[\mathbf{T}_1^1;...;\mathbf{T}_k^1;...;\mathbf{T}_1^m;...;\mathbf{T}_k^m],\)\(\mathbf{T}\in\mathbb{R}^{mkl\times d}\)。其中m是用户点击的新闻的总个数,k是文本信息的类型数,文本信息的类型包括新闻标题和新闻实体等,l是文本序列的长度。其中\(T^i_j\)是第𝑖个被点击的新闻ℎ的第𝑗个文本嵌入序列

​ 此外,不同类型的新闻文本通常具有不同的语义特征,同时文本的位置信息对于语义理解也很重要。因此,为了进一步丰富用户文档的嵌入序列,我们将每个标记的文本嵌入与其类型和位置嵌入串联起来,建立行为嵌入序列 \(\mathbf{H}\in\mathbb{R}^{L\times g}\),其中 𝑔 是串联标记嵌入的维度,𝐿 表示行为嵌入序列的总长度(即 𝑚𝑘𝑙)。

​ 然后说采用Fastformer。Fastformer 的核心思想是首先将全局上下文总结为嵌入 q,然后根据每个标记与全局上下文的相关性对其嵌入进行转换:

\(\begin{gathered} \mathbf{q}=Att(\mathbf{q}_1,...,\mathbf{q}_L),\quad\mathbf{q}_i=\mathbf{W}_q\mathbf{h}_i, \\ \mathbf{k}=Att(\mathbf{q}*\mathbf{k}_1,...,\mathbf{q}*\mathbf{k}_L),\quad\mathbf{k}_i=\mathbf{W}_k\mathbf{h}_i \\ \hat{\mathbf{h}}_{i}=\mathbf{W}_{o}(\mathbf{k}*\mathbf{v}_{i}),\quad\mathbf{v}_{i}=\mathbf{W}_{v}\mathbf{h}_{i} \end{gathered}\)

​ 然后又说Fastformer也可以被其他高效的transformer所取代。然后,我们可以连接不同注意力头的输出,并为第𝑖个标记构建一个统一的上下文表示g𝑖。接下来,我们采用一个注意力网络,通过聚合其标记的嵌入来学习每个被点击的新闻的嵌入:

\(\mathbf{f}_i=Att(\mathbf{g}_{(i-1)kl+1},\mathbf{g}_{(i-1)kl+2},...,\mathbf{g}_{ikl}),\)

​ 最后,我们将它们汇集起来,建立用户嵌入\(\mathbf{u}^f=Att(\mathbf{f}_1,...,\mathbf{f}_m)\) 。这样,我们就能从词级细粒度行为交互中高效建模并编码用户兴趣。

​ 此外,我们还采用了粗粒度用户模型,以便从新闻层面的行为互动中更好地总结用户兴趣。我们首先使用新闻编码器将用户点击的新闻转化为嵌入式内容。然后,我们应用转换器网络对用户点击新闻的新闻级行为交互进行建模,其中 c𝑖 是语境化嵌入的𝑖 。最后,我们从新闻层面的行为交互建立用户嵌入\(\mathbf{u}^c=Att(\mathbf{c}_1,...,\mathbf{c}_m)\)并与\(\mathbf{u}^f\)合并形成统一的用户嵌入\(\mathbf{u}=\mathbf{u}^f+\mathbf{u}^c.\)

新闻编码器

​ 接下来,我们简要介绍 FUM 中新闻编码器的架构。对于第 𝑖 个类型的新闻文本,我们使用文本编码器从 T𝑖 中学习特定类型的新闻嵌入 t𝑖 。文本编码器由转换器和注意力网络堆叠实现。然后,我们通过聚合特定类型的新闻嵌入来学习新闻嵌入 n。

新闻推荐

​ 这里还是采用内积的方式来计算分数,损失函数使用的是BPR Loss

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

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

相关文章

从专业领域到代码世界:一位全科医生到全栈开发者的HarmonyOS跨界之旅

2024年6月23日,在华为开发者大会(HDC 2024)HarmonyOS开发者一站式服务分论坛上,汇集了华为专家、各行各业的开发者们,共同探讨如何在HarmonyOS的赋能下为行业和社会创造更多价值。特别要提及其中一位开发者陈胜歌,他于6月22日受邀参加了在东莞三丫坡举办的HDC 2024开发者…

匿名内部类再开发时候的使用

public interface USB { public void open(); } public class Test { public static void main(String[] args) { method( new USB(){ @Override public void open() { System.out.println("打开u成功"); } });//这里通过匿名内部类创建了接口对象,传入下面的method方…

Modbus转Profibus网关在汽车行业的应用

Modbus转Profibus网关(XD-MDPB100)应用于汽车行业,主要体现在提升自动化水平、优化数据传输以及实现设备间的无缝连接等方面。Modbus协议转Profibus协议网关是实现Modbus设备和Profibus设备之间通信的桥梁,在本文中,我们将介绍Modbus转Profibus网关(XD-MDPB100)在汽车行…

匿名内部类(重点)

所谓匿名内部类.可以理解为没有显式声明出来的内部来 问题描述:我们如果想调用接口里的方法或者继承抽象类里的变量.就要创建一个实现类来实现接口重写方法等还要new对象调用, 如果只是简单想使用一次接口里的方法,如何变得不麻烦 a.创建实现类 b实现接口,重写方法 c创建实现类…

Mystrcmp与指针的特点

/******************************************************************************************************* @file name: :Mystrcmp* @brief :模拟strcmp* @author :wvjnuhhail@126.com* @date :2024/06/24* @version 1.0 :V1.0* @proper…

【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据

问题描述 Azure Logic App连接到SQL数据库后,执行存储过程并转换执行结果为JSON数据的步骤问题解答 在Logic App Design页面中,添加 Execute stored procedure组件,然后转换结果为JSON。 设计图如下: 关键步骤: 1) 添加 Sql Server 连接器中的 Execute stored procedur…

操作系统复习知识点

大题: 1、 磁盘调度算法:1先来先服务2最短寻道时间优先3电梯2、 银行家算法3、 页表地址转换4、 页面置换算法5、 处理机调度算法(先来先服务、短作业优先、高响应比优先)简答题 1、什么是操作系统?它有什么基本特征? 答:操作系统是指控制和管理计算机的软、硬件资源,合…

Kubernetes容器生命周期 —— 钩子函数详解(postStart、preStop)

1、概述容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数。钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码。kubernetes在主容器的启动之后和停止之前提供了两个钩子函数:…