论文《An Effective Consistency Constraint for Sequential Recommendation》

news2024/11/17 21:30:00

C2Rec: An Effective Consistency Constraint for SequentialRecommendation

这篇文章提出了序列推荐建模中一种有效的一致性约束防范,不用修改模型结构,仅仅添加2个额外的损失函数,就能达到非常好的效果。不像基于对比学习的方法,需要较好的负采样方法、数据增强方法、较重的超参数调优方法,论文提出的方法简单有效。新的损失函数不挑模型,可以在广泛使用的sota模型上面增加,具有通用性。

基础模型

首先序列推荐模型的任务表示为:
P ( v ∣ s u ∣ + 1 ( u ) = v ∣ s u ) P( v_{\vert s_u \vert + 1}^{(u)} = v | s_u) P(vsu+1(u)=vsu
即预测用户是时刻 ∣ s u ∣ + 1 \vert s_u \vert + 1 su+1时和候选素材 v v v交互的概率, ∣ s u ∣ \vert s_u \vert su表示用户时刻 t t t及之前交互的序列的长度。

s u = f ( s u ) \mathbf s_u = f(s_u) su=f(su)表示编码后的用户向量

基线模型的损失函数计算如下, v t + 1 + v_{t+1}^+ vt+1+表示时刻 t + 1 t+1 t+1时刻正向行为素材, v t + 1 − v_{t+1}^- vt+1表示 t + 1 t+1 t+1时刻负采样的素材, w w w表示模型参数

P ( s u , t ; w ) = e x p ( s u , t T v t + 1 + ) e x p ( s u , t T v t + 1 + ) + ∑ v − ∈ V − e x p ( s u , t T v t + 1 − ) P(\mathbf s_{u,t};w ) = \frac {exp(\mathbf s_{u,t}^T v_{t+1}^+ ) } { exp(\mathbf s_{u,t}^T v_{t+1}^+ ) + \sum_{v^- \in V^-} exp(\mathbf s_{u,t}^T v_{t+1}^- ) } P(su,t;w)=exp(su,tTvt+1+)+vVexp(su,tTvt+1)exp(su,tTvt+1+)

L b a s i c = − log ⁡ P ( s u , t ; w ) L_{basic} = - \log P(\mathbf s_{u,t;w}) Lbasic=logP(su,t;w)

一致性约束

根据用户交互序列 s u s_u su用2个不同的Dropout参数产生2个用户向量 s u , t d 1 \mathbf s_{u,t}^{d_1} su,td1 s u , t d 2 \mathbf s_{u,t}^{d_2} su,td2,基于新产生的两个向量来计算约束性loss,主要目的是希望不同Dropout产生的用户向量在向量空间中尽可能的相近。这里衡量相近的方法论文提到用的是KL距离,KL原本是衡量两个分布的差异性,用在这里衡量新产生的用户向量的差异。
Regularized Dropout Loss(RD)
基于新的用户向量 s u , t d 1 \mathbf s_{u,t}^{d_1} su,td1 s u , t d 2 \mathbf s_{u,t}^{d_2} su,td2产生的概率分布 P ( s u , t d 1 ; w ) P(\mathbf s_{u,t}^{d_1};w) P(su,td1;w) P ( s u , t d 2 ; w ) P(\mathbf s_{u,t}^{d_2};w) P(su,td2;w),loss计算如下:
L R D = 1 2 ( D K L ( P ( s u , t d 1 ; w ) ∣ ∣ P ( s u , t d 2 ; w ) ) + D K L ( P ( s u , t d 2 ; w ) ∣ ∣ P ( s u , t d 1 ; w ) ) ) L_{RD} = \frac {1} {2} (D_{KL}( P(\mathbf s_{u,t}^{d_1};w) || P(\mathbf s_{u,t}^{d_2};w) ) + D_{KL}(P(\mathbf s_{u,t}^{d_2};w) || P(\mathbf s_{u,t}^{d_1};w))) LRD=21(DKL(P(su,td1;w)∣∣P(su,td2;w))+DKL(P(su,td2;w)∣∣P(su,td1;w)))

示意图如下:
在这里插入图片描述

Distributed Regularization Loss(DR)
上面是衡量同一个用户的2个不同用户向量的分布差异,这里进一步衡量不同用户的向量之间的差异,在mind-batch内,设有 n n n个用户 ( u 1 , u 2 , . . . , u n ) (u_1, u_2, ..., u_n) (u1,u2,...,un),每个用户都有2个用户向量表示 ( s u 1 d 1 , s u 2 d 1 , . . . , s u n d 1 ) (\mathbf s_{u_1}^{d_1}, \mathbf s_{u_2}^{d_1}, ..., \mathbf s_{u_n}^{d_1}) (su1d1,su2d1,...,sund1) ( s u 1 d 2 , s u 2 d 2 , . . . , s u n d 2 ) (\mathbf s_{u_1}^{d_2}, \mathbf s_{u_2}^{d_2}, ..., \mathbf s_{u_n}^{d_2}) (su1d2,su2d2,...,sund2).对于每个用户,例如 u 1 u_1 u1,计算 s u 1 d 1 \mathbf s_{u_1}^{d_1} su1d1和所有其他用户表示 s u j d 1 \mathbf s_{u_j}^{d_1} sujd1的相似性,定义为 s i m ( s u 1 d 1 , s u j d 1 ) sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_j}^{d_1}) sim(su1d1,sujd1),那么会得到一个相似性的分布
P ( s u 1 d j ; w ) = s o f t m a x ( s i m ( s u 1 d 1 , s u 2 d 1 ) , . . . , s i m ( s u 1 d 1 , s u n d 1 ) )         j = 1 , 2 P(s_{u_1}^{d_j};w) = softmax(sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_2}^{d_1}), ..., sim(\mathbf s_{u_1}^{d_1} , \mathbf s_{u_n}^{d_1})) \ \ \ \ \ \ \ j = 1,2 P(su1dj;w)=softmax(sim(su1d1,su2d1),...,sim(su1d1,sund1))       j=1,2
那么也希望同一个用户的两个向量和其他用户对应的向量的相似性分布在向量空间的距离越近越好,也是用KL距离衡量这个距离。
L D R = 1 2 ( D K L ( P ( s u d 1 ; w ) ∣ ∣ P ( s u d 2 ; w ) ) + D K L ( P ( s u d 2 ; w ) ∣ ∣ P ( s u d 1 ; w ) ) ) L_{DR} = \frac {1} {2} ( D_{KL}( P(\mathbf s_u^{d_1};w) || P(\mathbf s_u^{d_2};w) ) + D_{KL}( P(\mathbf s_u^{d_2};w) || P(\mathbf s_u^{d_1};w) ) ) LDR=21(DKL(P(sud1;w)∣∣P(sud2;w))+DKL(P(sud2;w)∣∣P(sud1;w)))

Final loss
L b a s i c ( s u , t ; w ) = − 1 2 ( log ⁡ ( P ( s u , t d 1 ; w ) ) + log ⁡ ( P ( s u , t d 2 ; w ) ) ) L_{basic}(\mathbf s_{u,t};w) = - \frac {1} {2} (\log (P(\mathbf s_{u,t}^{d_1};w)) + \log (P(\mathbf s_{u,t}^{d_2};w)) ) Lbasic(su,t;w)=21(log(P(su,td1;w))+log(P(su,td2;w)))

L f i n a l = L b a s i c + α L R D + β L D R L_{final} = L_{basic} + \alpha L_{RD} + \beta L_{DR} Lfinal=Lbasic+αLRD+βLDR

这2个一致性约束从本质上讲其实是一种数据增强方式,和对比学习不同,对比学习一般是数据级增强,这个可以成为模型级增强,通过不同的Dropout参数生成不同的用户向量。那么也可以通过其他方式,比如说两个完全不同的encoder编码出2个不同的用户向量,然后也用一致性约束。还可以按不同的mask比例抽取用户序列生成不同的用户向量。不过可能要复杂些,Dropout是一种比较简单的方式。

实验部分

效果比较,论文提出的CTRec效果最好
在这里插入图片描述

消融实验

RD Objective 可以看到,不同的 α \alpha α下,增加RD loss效果都比基线好很多,论文说可能是因为RD Objective直接影响到了用户向量输出的概率分布。对于超参数 α \alpha α,数值越大,收益越大,到达2.0后再增大,收益反而变小,数值过大会影响大目标函数的主loss。
在这里插入图片描述

DR Objective可以看到在大部分 β \beta β值下,DR loss也是有增益的,说明对用户和其他用户的向量一起约束还是有效果的。同时对于超参数 b e t a beta beta,大于0.3后开始随值的增大收益增大,数值到2.0后开始下降,也是过大的权重导致模型会在DR目标上面加强学习,反而会降低主目标的优化空间。
在这里插入图片描述

同时下图使用cosine和L2距离来衡量,相较于基线没有取得更好的收益,更加说明的使用论文提出的KL距离衡量是有益的。
在这里插入图片描述

Dropout Rates. Dropout的比例也做了分析,在0.6-0.7一般达到最佳,再增大就剧烈下降,数值过大信息损失过大,反而学不到啥。
在这里插入图片描述
论文比较了不同的数据一致性约束方法,包括对比学习的方式,验证CTRec的方式有效性。
在这里插入图片描述

更多个的一致性约束

论文还提到一个一致性约束,随机抽取用户序列中2个行为,让两个行为的Embedding距离在空间中尽可能相近,cosine距离约束,加到CTRec中,效果更好。
在这里插入图片描述

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

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

相关文章

C++初阶--string

目录 string对象的创建: 遍历修改 const修饰的迭代器(只读): 反向迭代器: reserve与resize: find,rfind,substr: insert: erase: getchar、getline: string对…

Java基础学习笔记(十一)—— 包装类与泛型

包装类与泛型1 包装类1.1 基本类型包装类1.2 Integer类1.3 自动装箱 / 拆箱2 泛型2.1 泛型概述2.2 泛型的用法2.3 类型通配符1 包装类 1.1 基本类型包装类 基本类型包装类的作用 将基本数据类型封装成对象 的好处在于可以在对象中定义更多的功能方法操作该数据 public stat…

✿✿✿JavaScript --- Ajax异步请求与JSONP 跨域请求

目 录 一、原生的Ajax请求 1.异步和同步 2.Ajax介绍 3.实现方式 (1)原生的JS实现方式(了解) (2)原生AJax发送Post请求,并携带请求参数 二、JQuery封装后的Ajax 1.JQeury实现方式 2. $.get():发送get请求 3.$.post()&…

存储随笔2022年度最受欢迎文章榜单TOP15

回首2022感谢各位粉丝朋友的一路支持与陪伴存储随笔为您献上2022年度最受欢迎文章榜单TOP152023,一起向未来!TOP1:固态硬盘SSD入门级白皮书主要从固态硬盘的原理/接口形态/寿命/使用场景/等不同角度,来对比不同的人群需要什么样的…

[linux]vim编辑器

📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要讲解vim的使用和一些vim的常用操作,以及如何解决…

Flow 转 LiveData 后数据丢了,肿么回事?

翻译自: https://arkadiuszchmura.com/posts/be-careful-when-converting-flow-to-livedata/ 前言 最近我在负责一段代码库,需要在使用 Flow 的 Data 层和仍然依赖 LiveData 暴露 State 数据的 UI 层之间实现桥接。好在 androidx.lifecycle 框架已经提供…

C语言-指针进阶-函数指针数组应用-计算器(9.2)

目录 1. 函数指针 2. 函数指针数组 2.1函数指针数组的定义 2.2函数指针数组应用 3. 指向函数指针数组的指针 思维导图&#xff1a; 1. 函数指针 直接上代码&#xff1a; #include <stdio.h>void test() {printf("hehe\n"); }int main() {printf("%…

【Java】数组的复制、反转、查找、排序

数组的复制、反转、查找、排序 复制 其中最关键的一点是搞清楚为什么数组复制和基本数据类型复制不同&#xff0c;是什么导致了这样的不同&#xff1f; 先来看例子 package com.atguigu.java;public class ArrayTest3 {public static void main(String[] args) {//新建arr数…

【Java数据结构与算法】Day2-高级排序(希尔、归并、快速、计数)

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;【Java数据结构与算法】 &#…

实验七:555定时器及其应用

答疑解惑用555定时器组成的单稳态电路中&#xff0c;若触发脉冲宽度大于单稳态持续时间&#xff0c;电路能否正常工作&#xff1f;如果不能&#xff0c;则电路应做如何修改&#xff1f;答:若触发脉冲宽度大于单稳态持续时间后&#xff0c;输出脉冲宽度将等于触发脉冲的低电平持…

【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格

【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格 &#x1f345;因发布平台差异导致阅读体验不同&#xff0c;将本文原编写地址贴出&#x1f339;&#xff1a;《【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格》 文章目录【精】EditorConfig 小老鼠…

实时数仓方案

2、实时数仓方案 2.1、为何需要实时数仓架构 随着数据量的增大&#xff0c;传统数据的方案在时效性上和数据维护上变得越来越困难。实时数仓架构应运而生。 具体方案落地上实时数仓有很多方案可以选择&#xff0c;不同的业务和应用场景到底应该选择哪种技术方案&#xff1f;…

React18新特性

React 团队在 2022 年 3 月 29 日正式发布了 React 的第 18 个版本。 在这篇文章里简单介绍 React 18 的新特性&#xff0c;React Concurrent Mode&#xff08;并发模式&#xff09;的实现&#xff0c;以及简要的升级指南。 New Features Automatic Batching 早在 React 18 之…

011-Ensp-实验-配置ACL

实验要求 1.通过ACL 使PC1无法访问PC3 实验结构 实验步骤 基础环境配置: PC间互通 1. PC1 2 3 配置IP网关 2. LSW2 创建三个vlan &#xff0c;g0/0/2 g0/0/3 g/0/04 类型配置为Access 分别加入三个vlan g0/0/1 配置为trunk 并允许所有vlan通过 3. LSW1 g0/0/1 配置trunk …

vector底层实现及深层次拷贝问题

目录 大框架 接口实现 深层次拷贝问题&#xff08;两次深拷贝&#xff09; 大框架 为了与库里实现的更接近一些&#xff0c;先来看一下STL中是如何实现vector的&#xff08;这里不是PJ版&#xff0c;PJ版稍微晦涩一点不容易理解&#xff0c;这里采用Linux下g的版本&#xf…

VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation

Paper name VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation Paper Reading Note URL: https://arxiv.org/pdf/2005.04259.pdf TL;DR waymo 出品的 CVPR2020 论文 &#xff0c;关注在自动驾驶场景&#xff08;复杂多智能体系统&#xff0…

【算法自由之路】快慢指针在链表中的妙用(下篇)

【算法自由之路】快慢指针在链表中的妙用&#xff08;下篇&#xff09; 继上篇之后&#xff0c;链表这块还有两个相对较难的问题我们继续举例。 问题 1 给定具有 random 指针的 next 方向无环单链表&#xff0c;复制该链表 单听这个问题可能有点懵&#xff0c;这个链表结构我…

PCB封装创建(CHIP类)

PCB封装要有以下内容 PCB焊盘管脚序号丝印阻焊1脚标识目录 CHIP类&#xff08;电阻 电容 电感 三极管&#xff09; 0805C 0805R 0805L SOT-23 1.CHIP类&#xff08;电阻 电容 电感 三极管&#xff09; 1.新建一个PCB元件库 打开PCB Library 以下以0805为例。 创建080…

“CAcModuleResourceOverride”: 未声明的标识符

本文迁移自本人网易博客&#xff0c;写于2011年10月8日首先是运行时提示&#xff1a;试图执行系统不支持的操作。添加CAcModuleResourceOverride resourceOverride; 后&#xff0c;编译出现如下错误&#xff1a;error C2065: “CAcModuleResourceOverride”: 未声明的标识符 添…

scikit-learn 普通最小二乘法

scikit-learn 普通最小二乘法什么是普通最小二乘法&#xff1f;参考文献什么是普通最小二乘法&#xff1f; 线性回归模型的数学表达式如下&#xff1a; y^(w,x)w0w1x1…wpx1\hat{y}(w, x)w_{0}w_{1} x_{1}\ldotsw_{p} x_{1}y^​(w,x)w0​w1​x1​…wp​x1​ 其中 w0,w1,...,w…