CIKM'21「品趣」序列推荐DT4SR:将序列建模为不确定性分布
点击关注我们,提升学习效率
title:Modeling Sequences as Distributions with Uncertainty for Sequential Recommendation
link:https://dl.acm.org/doi/pdf/10.1145/3459637.3482145
from:CIKM 2021
1. 导读
本文主要针对序列推荐,在序列推荐中,用户的偏好的动态变化的,并且序列中的商品转换模式是不断波动的并且具有一定的随机性在里面,因此在序列表征中存在一些不确定性。作者对基于Transformer的序列推荐方法进行改进,提出了基于分布的Transformer,DT4SR。
note:本文比较有意思的地方时,作者采用的是分布的方式,而不是直接使用商品的embedding。
Wasserstein距离:https://zhuanlan.zhihu.com/p/58506295
2. 方法
如图所示,DT4SR主要包含如下几个模块:mean and covariance embeddings, distribution-based self-attention, distribution-based Feed-Forward Network (FFN), and a covariance output layer。
2.1 Embedding层
将每个商品表示为椭圆高斯分布,该分布由一个均值向量和一个对角协方差矩阵控制,即每个商品有两个embedding,均值
和协方差
,
是商品的集合。为mean transformer和covariance transformer定义可学习位置embedding
和
,n是最大序列长度。对于超过n的序列就截取最近的n个,对于小于n个的就0填充,序列表示为
,将序列表示为均值和协方差表征后可得下式,
2.2 均值协方差自注意力
基于部分的自注意力来考虑数值的稳定性,自注意力中的Q,K,V分别为
,
,
,其中
为序列的均值或协方差表征。为了保证q,k,v数值稳定性,本文采用elu后再做点积,公式如下,其中σ为softmax。带入不同的E可得到mean transformer和covariance transformer。
2.3 均值协方差FFN
FFN层进行了相应的改动,公式如下,比较一目了然,就不赘述了。其他的Transformer结构保持不变,包括LN,残差连接等
2.4 输出层
然而,一个有效的分布需要协方差矩阵是正定的,而 FFN 层的输出不能保证这个属性。因此,在 ELU 激活后向输出协方差嵌入向量添加一个全为1的向量,其定义如下,其中
表示商品i在
和
的第L层的输出,
。
2.5 损失和优化
Transformers 输出均值和协方差分别推断序列中每个位置的下一个商品的均值和协方差嵌入。使用下一个商品作为序列中每个位置的真实标签。如,给定序列
,v_1需要预测的标签是v_2。
2.5.1 Wasserstein距离和损失
相比于KL散度,Wasserstein 距离能够测量两个分布没有重叠时的距离。作者使用2-Wasserstein距离来衡量不同分布之间的差异。给定两个商品i_1,i_2其分布分别为
,
。Wasserstein距离可以表示为下式,
2.5.2 损失函数
使用BPR loss来衡量下一个商品是够准确,其中
表示位置t预测的,
是真实值,
表示没有交互过的负样本。
3. 实验结果
相关文章
- 从Transformer到扩散模型,一文了解基于序列建模的强化学习方法
- YbtOJ 644「平衡树」模糊序列
- 时间序列数据建模流程范例
- NeurIPS 2022 | 一种非平稳时间序列的通用预测框架 NSTransformers
- SPSS时间序列ARIMA、指数平滑法、模型检验分析汽车销量数据
- Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
- R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代码数据
- 速度超快!字节跳动开源序列推理引擎LightSeq
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 a^nu(n) 的傅里叶变换 )
- Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
- 的实现Oracle序列的实现:一步一步探索(oracle当前序列)
- Oracle序列设置缓存值优化性能(oracle序列缓存)
- 更新Oracle序列:每天精进新动力(oracle序列每天)
- MySQL实现模拟序列的方法(mysql模拟序列)
- 使用Oracle中的序列伪列获取定制ID(oracle中的序列伪列)
- Oracle数据库中如何创建序列(oracle中的创建序列)