CIKM 2023|TASTE:通过文本匹配缓解序列化推荐中流行偏差问题

2023-10-31

序列化推荐系统旨在根据用户的浏览历史动态地为用户推荐下一个商品,这在Yelp、TikTok、Amazon等众多Web应用程序中发挥着至关重要的作用。

这些推荐系统通过使用不同的神经网络架构来学习用户-商品交互中商品之间的依赖关系,从而对用户行为进行建模。

这些模型通常使用商品ID来表示商品,通过随机初始化向量来表示不同的商品,并使用来自用户-商品交互的信号来优化这些商品的向量化表示。


图1:商品与用户交互频度分布

然而,现有的基于商品ID向量表示的推荐系统通常面临流行偏差问题。

如图1(a)所示,推荐数据集中的商品与用户交互频率服从长尾分布,即仅有少部分商品与用户频繁交互,这使得基于商品ID的推荐模型通常面临冷启动问题,很多商品的向量表示训练不够充分。如图1(b)所示,数据集中用户真实需要的商品中约74%与用户交互的次数低于20次,但基于商品ID的模型(T5-ID)在推荐结果中选择了返回给用户更加流行的商品。这导致了推荐系统存在典型的流行偏差问题即偏好于返回热门的商品作为推荐结果。

此外,如图2(a) 所示, 基于商品ID的推荐系统(T5-ID)学习到的商品向量表示空间展现了明显的各向异性,这使得流行商品与其他商品被划分到不同的区域。相反,如图2(b) 所示,基于文本匹配的商品推荐模型TASTE在空间中将流行商品和其他商品的向量混合,从而能够通过匹配用户和商品的文本表示来为推荐系统返回更多文本相关但长尾的商品,最终缓解序列化推荐模型中的流行偏差问题。


图2:基于商品标识符模型和文本匹配模型商品向量空间可视化

东北大学、卡内基梅隆大学和清华大学研究者针对以上问题,提出了基于文本匹配的序列化推荐方法(TASTE),它用文本表示商品和用户,通过匹配文本向量表征来建立它们之间的相关性,并缓解了基于商品ID的推荐模型的流行偏差问题。

在这里插入图片描述

论文发表于CIKM2023

论文链接:https://www.aminer.cn/pub/64ed716d3fda6d7f0658a94f

开源代码:https://github.com/OpenMatch/TASTE

TASTE通过设计一些提示模板来表示商品,并用商品ID和商品属性填充模板来描述用户和商品。商品信息提供文本匹配线索,以对用户和商品之间的依赖性和相关性进行建模。TASTE还提出了一种注意力稀疏化编码方法,以打破语言模型的最大长度边界限制,实现对用户-商品交互的长文本表示进行编码。它将用户-商品交互历史划分为不同的子序列,独立地对每个子序列的文本表示进行编码,并减少了注意力计算开销。

基于文本匹配的序列化推荐模型(TASTE)

在这里插入图片描述

图3:基于文本匹配的序列化推荐模型(TASTE)框架

我们提出了基于文本匹配的序列化推荐(TASTE)模型。如图3所示,我们首先描述了如何用文本表示用户交互历史和商品,然后使用文本匹配对序列化推荐进行建模。

最后,TASTE提出了一种注意力稀疏化方法来解锁模型编码用户-商品交互长文本序列的能力。

1.基于文本匹配的序列化推荐模型

给定用户-商品交互历史H={v1,v2,…,vt-1},序列化推荐任务旨在推荐商品Vt以满足用户在第t时刻的需求。TASTE使用预训练语言模型T5编码用户交互历史H和商品v,并通过匹配它们的文本向量表征来对用户和商品之间的相关性进行建模。

对于每个商品v,我们使用商品的ID和它的k个商品属性以公式1的模版形式将商品文本化。

在这里插入图片描述
公式1:商品文本化表示

k是第k个属性所对应的名称,v(id)和v(i)分别是商品v的商品标识符及第i个属性的文本描述。这里的v(id)被视作一种ID提示,用于帮助语言模型捕捉超出商品描述范围的用户和商品间的匹配信号。

我们同样使用模版对用户交互历史H进行文本化描述:“Here is the visit history list of user: X(H) recommend next item”。它可以提供序列化推荐任务的定义,帮助预训练语言模型更好地建模用户行为。X(H)是文本化的商品序列{v1,v2,…,vt-1}的拼接结果,我们反转了商品序列顺序以保留最近的交互商品。

在这里插入图片描述
公式2:用户交互历史文本化表示

我们使用T5分别对用户交互历史H和商品v进行编码,并使用从T5解码出的第一个分词输入的表征作为二者的向量表征hH和hv。

在这里插入图片描述
公式3:通过T5编码得到用户交互历史和商品的向量表征

我们基于编码向量表示hH和hv计算用户交互历史H和商品v的相关性。

在这里插入图片描述
公式4:排序概率计算公式。其中·表示向量内积

我们使用公式5优化语言模型参数,使用第t时刻用户交互的商品作为正样本,负样本来自inbatch和随机采样两种负采样方法,基于对比学习的方式训练模型。
在这里插入图片描述
公式5:采用对比学习方法训练模型

2.基于注意力稀疏化的用户-商品交互历史长文本编码

在现实世界中,购买或浏览历史通常涉及长期交互。较长的交互通常包含更多的用户行为信息,可以更好地对用户行为建模,并获得更准确的推荐结果。我们采用Fusion-in-Decoder架构以突破语言模型对于输入文本的长度限制,并进一步对长用户序列进行建模。我们首先将用户交互历史文本X(H)划分为n个子序列文本X(H)={X(H1),X(H2),…,X(Hn)},每个子序列反映了用户在特定时间内的喜好情况,并使用子序列中用户交互过的商品进行表示。我们使用T5编码器对每个用户交互历史子序列进行独立编码。

在这里插入图片描述
公式6:独立地对用户交互历史子序列进行编码

最后,我们可以通过将稀疏编码得到的用户商品交互序列表征馈送到解码器模块来获得用户商品交互历史的最终向量表示。
在这里插入图片描述
公式7:解码器中进行融合获得最终向量表示

解码器使用交叉注意力机制重新为不同的用户-商品交互子序列赋予权重,并通过从文本化的用户-商品交互历史中的所有商品的文本化描述中捕获文本匹配信号来对用户行为进行建模。

实验结果

在这里插入图片描述
表1:不同序列化推荐模型在Amazon和Yelp数据集上的表现

TASTE的推荐性能如表1所示。总体而言,TASTE在所有数据集上都显著优于基线模型,实现了18%的性能提升。与基于商品ID向量建模的推荐模型(如Bert4Rec)相比,TASTE得益于使用文本匹配信号对用户和商品之间的相关性进行建模,推荐性能获得了显著提升。TASTE还优于最先进的推荐模型DIF-SR。后者利用商品属性作为辅助信息以帮助模型更好地从用户-商品交互历史中学习用户行为,它将商品属性表示为向量,并更侧重于解耦和融合商品中的辅助信息。相比较于DIF-SR,TASTE没有设计复杂的架构来融合辅助信息,而是使用一个通用的提示学习模板来表示商品和用户交互行为,利用T5语言模型中经过文本预训练的注意力头来捕捉用户交互历史和商品的文本的语义信息。TASTE展示了将预训练语言模型直接应用于推荐系统的优势。

在这里插入图片描述
表2:消融实验

如表2所示,我们进一步探索了提示学习建模、不同的负采样策略和我们的长用户商品交互建模方法的有效性。我们在基于批内负样本采样的对比学习训练的模型TASTE(Inbatch)的基础上探究了流行采样,随机采样和难负例采样(ANCE)的实验结果。使用从流行商品中采样的额外负样本TASTE(Popular Negs)会略微降低TASTE(Inbatch)的推荐性能,原因可能在于高频率交互的商品通常表达了用户的通用兴趣,并且很容易与不同的用户交互。TASTE(ANCE)的性能优于TASTE(Inbatch),但低于TASTE(Rand Negs)。这一现象表明,模型选择的难负例商品被用户交互的潜力也很高,这些也不是真正的负样本。此外,得益于我们的注意力稀疏化方法,TASTE性能实现了进一步的提升,证明了它通过建模更长期的用户-商品交互历史来学习用户偏好会更加精准。

在这里插入图片描述

表3:不同商品建模方式下模型的推荐行为

如表3所示,比较了T5-ID、TASTE w/o ID和TASTE三种采用不同商品建模方法的模型的推荐行为。T5-ID随机初始化商品ID向量表征并直接预测商品ID。TASTE w/o ID和TASTE均采用双塔架构,前者只使用商品属性,后者使用商品标识符和属性对商品进行编码。

如我们的评估结果所示,T5-ID在所有数据集的推荐结果中平均返回49.5%的流行商品,表明它在推荐商品时面临着流行偏差问题。TASTE在其推荐结果中减少了平均18.75%的流行商品。它使用文本表示商品,并利用文本匹配来校准T5-ID的面向流行商品的推荐行为。TASTE获得了更高的Bleu和Recall分数,证明了它在推荐更合适且文本相关的商品方面的有效性。

此外,与TASTE w/o ID相比,TASTE在商品ID的帮助下获得了更高的Bleu和Dist分数。这表明商品ID可以作为一种提示,在商品属性之外提供额外的匹配信号,以更好地建模用户和商品之间的相关性。

在这里插入图片描述
图4:不同用户交互频率商品的推荐效果

如图4所示,实验比较了不同用户交互频率下的商品推荐效果。我们根据用户交互频率将商品分为两组,包括长尾商品和其他商品(比例为2:8)。TASTE在这些长尾商品上显示出比T5-ID更显著的推荐准确性,这说明了它在使用商品的标识符和属性学习商品向量表示商品可以有效地缓解推荐系统中的“冷启动”问题。同时表明,TASTE可以将预训练语言模型学习到的语言知识扩展到这些长尾商品的表示上,并通过文本匹配直接建模用户商品相关性。

总结

我们提出了一种基于文本匹配的序列化推荐(TASTE)模型,该模型用文本表示用户交互历史和商品,捕获文本匹配信号以对它们之间的相关性进行建模。

TASTE在广泛使用的序列化推荐数据集上达到了最先进的水平。它的性能优于以前的基于商品ID的方法,缓解了流行偏差问题并使用商品ID和属性更好地表示长尾商品。

值得注意的是,TASTE能够根据长期的用户-商品交互历史更好地建模用户行为,并返回更多与文本相关且多样化的商品来满足用户需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CIKM 2023|TASTE:通过文本匹配缓解序列化推荐中流行偏差问题 的相关文章

  • Linux文本处理grep详解

    在 Linux 中 xff0c 文本处理无非是对文本内容做查看 修改等操作 本章将介绍Linux中常用的文本处理命令 xff0c 以及被称为Linux三剑客的 grep sed 和 awk 命令 有读者可能会问 xff0c 处理文本内容 x
  • 【jackson】自定义字段注解完成序列化逻辑

    目录 背景 本文开发环境介绍 新建一个注解 新建一个JavaBean 新建一个JsonSerializer 新建一个AnnotationIntrospector 单元测试 总结 背景 Spring默认的JSON序列化工具使用的是jackso
  • 文本处理——基于 word2vec 和 CNN 的文本分类 :综述 & 实践(一)

    原文地址 https zhuanlan zhihu com p 29076736 导语 传统的向量空间模型 VSM 假设特征项之间相互独立 这与实际情况是不相符的 为了解决这个问题 可以采用文本的分布式表示方式 例如 word embedd
  • java入门---序列化之序列化对象 &反序列化对象

    Java 提供了一种对象序列化的机制 该机制中 一个对象可以被表示为一个字节序列 该字节序列包括该对象的数据 有关对象的类型的信息和存储在对象中数据的类型 将序列化对象写入文件之后 可以从文件中读取出来 并且对它进行反序列化 也就是说 对象
  • Java序列化对象的一个使用案例-使用Http发送对象

    Effective Java 中序列化一节关于java的序列化存在如下说法 对象序列化 object serialization API 它提供了一个框架 用来将对象编码成字节流 serializing 并从字节流编码中重新构建对象 des
  • 功能丰富的 Markdown 笔记工具:FSNotes Mac中文版图文安装教程

    FSNotes Mac版是Mac平台上一款纯文本笔记本管理器 FSNotes for mac中文版支持Markdown RTF等格式 轻松查看和编辑数据 还可以将数据存储在文件系统中 同时具备iCloud同步功能 使用非常便捷 FSNote
  • mac环境下Maven实现ProtoBuf编译

    mac环境下Maven实现protobuf编译 1 Maven项目创建 File gt new gt Project gt 输入项目名称 gt finish 2 在项目中创建proto目录 该目录用来保存 proto文件 此处将proto目
  • 【反序列化漏洞-01】序列化与反序列化概述

    为什么要序列化 百度百科上关于序列化的定义是 将对象的状态信息转换为可以存储或传输的形式 字符串 的过程 在序列化期间 对象将其当前状态写入到临时或持久性存储区 非关系型键值对形式的数据库Redis 与数组类似 以后 可以通过从存储区中读取
  • JAVA IO前言Comparable & Comparator & 序列化Serializable & 反序列化Deserializable

    Comparable可认为是内比较器 可比较的 是接口类 类参数为泛型对象T 通常对比的类本身需实现继承Comparable接口类的唯一方法compareTo T o 对比指标为类的一个或多个属性 对比类与Comparable接口类耦合性强
  • Java中的基础----序列化与反序列化的作用

    Java提供两种对象持久化的方式 分别序列化和外部序列化 1 序列化 Serialization 在分布式环境下 无论是何种数据 都会以二进制序列的形式在网络上传输 序列化是一种将对象以一连串的字节描述的过程 用于解决在对对象流进行读写操作
  • Android序列化:Serializable Parcelable

    Android序列化完全解析 一 Java Serializable http http www jianshu com p fcc59fb523b6 Android序列化完全解析 二 Parcelable http www jianshu
  • Android:Serializable和Parcelable的持久化保存

    转自 https www cnblogs com duoshou articles 8856111 html 前言 Serializable和Parcelable能够将对象序列化 使之能够在一些特殊场景中进行传输 再进行数据的恢复 Seri
  • C++ 结构体转json

    FdogSerialize FdogSerialize是一个用于C 序列化的开源库 采用非入侵方式 无需在原有结构体上进行修改 目前支持基础类型 基础类型数组 结构体 以及vector list map等数据类型的序列化 支持JSON和XM
  • java什么时候需要用序列化?

    文章目录 一 Java序列化概述 二 什么时候用序列化 三 项目创建很多对象怎么优化 场景 优化思路一 加条件判断 优化思路二 使用clone浅拷贝 一 Java序列化概述 简单说就是为了保存在内存中的各种对象的状态 也就是实例变量 不是方
  • 序列化pickle&json模块

    序列化pickle json模块 序列化 序列化是指把内存里的数据类型转变成字符串 以使其能存储到硬盘或通过网络传输到远程 因为硬盘或网络传输时只能接受bytes 用于序列化的两个模块 json 用于字符串 和 python数据类型间进行转
  • java的序列化注解Serial、序列化版本号serialVersionUID、eclipse中自动生成serialVersionUID

    说明 例如 jdk源码NTLMException类的定义 其中涉及到了序列化注解Serial和序列化版本号字段serialVersionUID 序列化注解java io Serial 序列化注解java io Serial是在javaSE
  • Apache Avro 文档概况

    文章主题来源于英文源文档 gt Apache Avro 1 11 0 文档 Apache Avro 1 11 0 Documentation 1 介绍 Apache Avro 是一个数据序列化 data serialization 框架 A
  • 序列化工具

    import java io ByteArrayInputStream import java io ByteArrayOutputStream import java io Closeable import java io ObjectI
  • JSONUtil.toJsonStr 时间变成了时间戳

    问题描述 我的接口是以Date来接收日期的 然后我在拿到这个对象参数后 通过hutool当中的JSONUtil toJsonStr将其序列化成json字符串 然后存储到数据库 然后存储到数据库当中发现这个字段是时间戳 DateTimeFor
  • C++开源序列化库:FStruct

    FStruct是一个用于C 对象 结构体 STL容器等 和json xml字符串之间进行转换的库 采用非入侵方式 无需在原有结构体上进行修改 目前支持基础类型 结构体 以及vector list deque set map等复杂数据类型的序

随机推荐

  • CountDownLatch 简单介绍

    CountDownLatch 是多线程控制的一种工具 它被称为 门阀 计数器或者 闭锁 这个工具经常用来用来协调多个线程之间的同步 或者说起到线程之间的通信 而不是用作互斥的作用 下面我们就来一起认识一下 CountDownLatch 认识
  • qt信号和槽避免多次连接

    qt同一个信号和槽多次连接 则槽函数会触发多次 默认 可能不是我们想要的结果 有3种方法可以解决这个问题 1 仅在初始化函数中进行连接 因为初始化函数在在整个程序中只运行一次 所以这里面连接信号和槽 就能避免重复连接问题了 2 连接函数写上
  • 投屏为什么显示无法连接服务器,乐播投屏为什么连不上? 乐播投屏无法连接如何解决?...

    随着乐播投屏吸引的新用户逐渐增多 有些朋友发现自己的手机与电视无法成功连接到一起 更别说进行投屏了 而下面小编就为大家介绍了乐播投屏无法连接电视的原因 希望对你有所帮助 乐播投屏无法连接的处理教程 面对无法连接电视的情况 我们需要先保证自己
  • shell编程100例

    1 编写hello world脚本 bin bash 编写hello world脚本 echo Hello World 2 通过位置变量创建 Linux 系统账户及密码 bin bash 通过位置变量创建 Linux 系统账户及密码 1 是
  • 一分钟学会对合并单元格填充数据(Excel)

    问题描述 大家有没有发现 我们在使用Excel时有很多情况下需要对某列几行的内容进行合并 但是其他列中需要填写的内容却又完全相同 本文用两种方法解决这一问题 重点是方法二哦 一分钟可搞定数百条数据 如下图 需要按照专业进行单元格合并 但是他
  • vue高德地图初体验地图初始化(一)

    vue高德地图初体验地图初始化 安装依赖 引用依赖 地图初始化 AMap Map参数说明 安装依赖 npm i amap amap jsapi loader save 引用依赖 import AMapLoader from amap ama
  • A level数学真题解析及运用

    在A level考试9709数学科目中pure mathematics 3考卷考察范围内有一章节名为complex number 即复数章节 这部分知识点虽然理解难度不大 但是在我国普通高中的数学学习中涉及的较少 考生在接受上有比较大的难度
  • java设计模式-单例模式

    Java中单例 Singleton 模式是一种广泛使用的设计模式 单例模式的主要作用是保证在Java程序中 某个类只有一个实例存在 一些管理器和控制器常被设计成单例模式 单例模式有很多好处 它能够避免实例对象的重复创建 不仅可以减少每次创建
  • C++ operator == 的一些思考

    最近写代码的时候 需要重载 以前也没有进行过太多的思考 都是顺手就写了 在这里就总结一下 下面的代码是 应该是重载 用的最多的写法了 class Demo public Demo int a a a Demo bool operator c
  • java poi读取pdf word excel文档,读取pdf文字图片

    文章目录 依赖 读取pdf文本和图片 简单读取word docx doc文字 读取word doc表格内容 读取word doc图片 读取excel 输出到excel office转pdf 依赖
  • springCloud Eureka 报错解决方案

    在根据大神的文章安装eureka过程遇到些报错 这里记录下比较好的解决方案 史上最简单的 SpringCloud 教程 终章 方志朋的博客 CSDN博客 springcloud 启动Eureka server 直接启动报错 EMERGENC
  • html5图片并列排版,小编,图片与文字并排怎么排版呢?

    图文排版 H5秀 手机图文 小伙伴 小米 我想左边放图片 右边是文字 但是图片插入之后 再编辑文字只能在下一行 我就直接调整段前距 但有时候预览它会错位 想问图片与文字并排如何排版出来呢 这是一个日经题 设置段前距或许是一个方法 但设定的数
  • Windows下PyTorch1.5的下载安装

    在安装PyTorch之前要先安装好CUDA cudNN 以及anaconda 还有就是编译器pycharm 然后你才能开始安装PyTorch 目录 1 创建虚拟环境 2 去PyTorch官网 3 发现警告 4 解决办法 5 pip list
  • 解析波士顿动力Handle机器人背后的技术(附PPT+视频)

    转 http www leiphone com news 201703 URrR8CG2tmtghNDl html 导语 Boston Dynamics 在机器人动力方面堪称翘楚 其由双足或多足机器人组成的机器人天团总是时不时能给我们带来惊
  • Python3 pip

    Python3 pip pip 是 Python 包管理工具 该工具提供了对 Python 包的查找 下载 安装 卸载的功能 软件包也可以在 https pypi org 中找到 目前最新的 Python 版本已经预装了 pip 注意 Py
  • Nginx添加SSL模块

    目录 一 SSL 概述 SSL证书 HTTPS SSL工作原理 二 创建SSL证书 安装openssl 生成证书 三 nginx配置 nginx打补丁添加模块 nginx conf配置 四 访问 一 SSL 概述 SSL Security
  • 向日葵权限mac

    问题 权限打开后自动关上 解决 mac上几乎所有远程软件都会出现这种权限设置问题 换了腾讯会议或其他也没用 方法一 试试先打开系统的安全性设置 将向日葵软件从隐私框里移出来 点击 号移除 再重新添加进去 方法二 将权限的勾选去掉 再添加 然
  • EFCore 数据模型 和 值转换

    操作中经常要涉及到模型和值转换的问题 这里记录一下 实际使用过程中遇到过的问题 而非功能的全部 模型 EFCore中支持字段 参考地址 https docs microsoft com zh cn ef core modeling back
  • SpringBoot框架详解,实战入门教程

    SpringBoot作为当下Java开发最常用的技术框架 相信你也一定听过很多次了 那么到底什么是SpringBoot SpringBoot又有什么用呢 跟着动力节点的视频快速入门springboot 视频观看资源 https www bi
  • CIKM 2023|TASTE:通过文本匹配缓解序列化推荐中流行偏差问题

    序列化推荐系统旨在根据用户的浏览历史动态地为用户推荐下一个商品 这在Yelp TikTok Amazon等众多Web应用程序中发挥着至关重要的作用 这些推荐系统通过使用不同的神经网络架构来学习用户 商品交互中商品之间的依赖关系 从而对用户行