多分辨率分析对曝光序列去噪
关注我们,一起学习~
title:Gating-adapted Wavelet Multiresolution Analysis for Exposure Sequence Modeling in CTR prediction link:https://arxiv.org/pdf/2204.14069.pdf from:SIGIR 2022
预备知识:
多分辨率分析https://blog.csdn.net/baidu_27643275/article/details/84826773
https://blog.csdn.net/m0_64770246/article/details/124538001
需要对基础概念有一些了解。
1. 导读
现有的引入曝光序列的ctr预估方法存在噪声问题以及计算负担大的问题,导致性能有限和推荐延迟。本文,作者将无参的多分辨率分析结合到深度网络,提出了门控自适应的小波多分辨率分析Gama方法来解决上述问题。Gama对长序列进行去噪,并以现行计算复杂度自适应地捕捉多维用户兴趣。
2. 懒人阅读
Gama将曝光序列视为采样的时变信号,并利用多分辨率分析通过多层的信号分解(具体见下面的图)将信号分解为不同频率的分量。其中噪声为孤立的高频尖峰,可以通过放弃高频分量来降低噪声,而经过多层的信号分解,可以从中提取多维的用户兴趣来进一步去噪和提升性能。
提取信号后,利用注意力机制,发掘目标商品和曝光序列之间的关系,并结合用户的交互历史行为序列表征进行最终的预测。
本文的特点在于将多分辨率分析引入到推荐系统的序列表征中去,不过这种多分辨率分析的方式对小波的要求比较高,即需要找的小波的非平稳特性和曝光信号比较接近,这可能需要多次试验尝试。
3. 方法
3.1 基础
本文专注于通过引入曝光历史来增强用户兴趣建模。与用户行为历史类似,用户曝光历史可以随时间以序列的形式完整记录。令曝光序列为
,其中
表示曝光给用户的第i个商品ID。通过MLP和embedding层可以得到曝光序列的embedding序列
,
,然后依据曝光序列建模为
,
得到曝光序列下的用户表征。
3.2 Gama建模曝光序列
3.2.1 曝光信号分解
噪声是曝光信号中的孤立曝光,通常是高频尖峰。为了减少噪声,首先将用户曝光信号分解为不同的频率子带。Gama的示意图如图 1 所示,将用户曝光序列
分解为具有不同频率的多个分量。假设信号
的分辨率为1,小波充当正交镜像滤波器公式如下,其中
和
是常数向量作为低通和高通过滤器,
表示H中的第p个元素。
如下图所示,经过多层的分解,每次分解分辨率变为原来的1/2,体现在embedding维度上则经过一次分解得到
,经过n层分解可以得到
,而第n次分解的公式和上式同理表示为
。
上述过程的总结:不断的从embedding序列
中分解信号,d为高频信息,包含细节和局部信息,同时也可能包含噪声;a为低频信息,为和前一个信号相近似,每层分解都在a上进行,不断分解和去噪。分解到最后得到最高频信息d作为噪声进行丢弃。
选择合适的小波基对于分离曝光序列中的内在特征很重要。正交镜面滤波器
和
都根据小波基而不同。每个小波基都有自己的非平稳特性,用户曝光序列信号与小波基之间的卷积和衡量了信号与小波基之间的相似性。同时,合适的分解级别可以提高性能。过多的分解层会降低信号的内部规律性,而过少则不能有效分离近似值和细节。如图 1 所示,本文分解为3级。
从去噪的角度来看,丢弃最高频率的细节
。由于用户可能几乎不会关注与用户所关心的任何方面无关的曝光,因此这些孤立的高频尖峰的曝光会干扰整个曝光序列信号。
这样就可以充分利用从用户曝光序列中分解出来的多分辨率分量,即
来捕获多维用户兴趣。具有不同频率的分量表征了原始用户曝光序列的多种内在模式。具有较高频率的部分对应于用户兴趣的暂时模式,例如品牌级别的偏好。稳定模式隐含在频率较低的部分中,例如风格级别的偏好。
3.2.2 兴趣门网络
多分辨率分量,即
,每个都沿时间轴聚合。聚合采用平均池化(G-Ave),也可以结合可学习的注意力模块(G-Att)。
令
表示从用户u的行为历史中提取的兴趣embedding。为了更好地提取与
互补的用户兴趣,本节设计了基于门控机制的兴趣门网络模块,如图 1 所示。受到 LSTM中的遗忘门的启发,兴趣门网络可以进一步通过对不同频率的多个分量进行重新加权,自适应用户行为序列,对曝光信号中最重要的用户兴趣信息进行去噪和提取,最终得到用户兴趣表征
,公式如下,
本节作者第G-Ave和G-Att做了实验,G-Att更好,所以这里也以G-Att为例来说明,Att的公式如下,其中
为目标商品的embedding
兴趣门网络模块
从曝光序列信息中提取用户潜在的多维聚合兴趣,并与
连接作为输入,公式如下,σ为sigmoid函数。
4. 结果
相关文章
- 几行 Python 代码就可以提取数百个时间序列特征
- 【建议收藏】时间序列预测paper、应用汇总
- SIGIR'21 因果推断+推荐系统:利用反事实理论增强用户行为序列数据
- Mila唐建团队开源大分子机器学习平台TorchProtein:分析蛋白质序列及结构数据,仅需一两行代码
- LeetCode376摆动序列 c++贪心
- SVR回归_时间序列分析优缺点
- Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
- R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列|附代码数据
- 运用「博弈论」分析「先手必胜态」序列具有何种性质,以及如何思考「博弈论」问题
- 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享|附代码数据
- SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析
- 数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法|附代码数据
- R语言Pearson相关性分析就业率和“性别平等”谷歌搜索热度google trend时间序列数据可视化
- R语言独立成分分析fastICA、谱聚类、支持向量回归SVR模型预测商店销量时间序列可视化
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 1 的傅里叶变换 )
- MySQL重置序列值:从头开始(mysql重置增长)
- Oracle导出序列的步骤分析(oracle导出序列)
- 下一个值Oracle 查询序列下一个值的方法(oracle查询序列)
- Oracle 使用序列给表记录编号(oracle为表创建序列)
- Oracle中快速生成序列的方法(oracle中生成序列)
- 在Oracle中查询序列的方法(oracle中如何查序列)
- Oracle SQL序列有效自动增长及控制ID(oracle sql序列)
- php数组函数序列之array_keys()-获取数组键名