【论文阅读】Adap-t: Adaptively Modulating Embedding Magnitude for Recommendation

【论文阅读】Adap-𝜏: Adaptively Modulating Embedding Magnitude for Recommendation

文章目录

  • 【论文阅读】Adap-𝜏: Adaptively Modulating Embedding Magnitude for Recommendation
    • 1. 来源
    • 2. 介绍
    • 3. 模型解读
      • 3.1 准备工作
        • 3.1.1 任务说明
        • 3.1.2 基于嵌入的模型
        • 3.1.3 损失函数
        • 3.1.4 嵌入归一化
      • 3.2 分析嵌入的规范化
        • 3.2.1 规范化的必要性

1. 来源

在这里插入图片描述

  • 2023 WWW CCFA
  • https://arxiv.org/pdf/2302.04775.pdf
  • https://github.com/junkangwu/Adap_tau

2. 介绍

近年来,基于嵌入式嵌入的方法在推荐系统中取得了巨大的成功。

  • 尽管它们的性能不错,但我们认为这些方法的一个潜在局限性——嵌入幅度没有被明确调制,这可能会加剧流行偏差和训练不稳定性,阻碍模型做出好的推荐。
  • 它激励我们利用推荐中的嵌入规范化。通过将用户/项目嵌入规范化到一个特定的值,我们在四个真实世界的数据集上观察到令人印象深刻的性能提高(平均9%)。
  • 虽然令人鼓舞,但我们在推荐中应用归一化时也揭示了一个严重的限制——性能对控制归一化嵌入规模的温度 𝜏 的选择高度敏感。
  • 为了充分培养归一化的优点,同时规避其局限性,本文研究了如何自适应地设置适当的 𝜏。为此,我们首先对𝜏进行了全面的分析,以充分了解其在推荐中的作用。然后,我们开发了一种自适应细粒度策略 Adap-𝜏,它满足四种理想的特性,包括自适应、个性化、效率和模型不可知。
  • 作者进行了广泛的实验来验证该提案的有效性。该代码可以在 https://github.com/junkangwu/Adap_tau 上找到。

3. 模型解读

3.1 准备工作

在本节中,我们将介绍一些推荐系统的背景。

3.1.1 任务说明

假设我们有一个带有用户集 U U U 和项目集 I I I 的推荐系统。让 𝑛 和 𝑚 表示RS中的用户数量和项目的数量。收集到的隐式反馈可以用矩阵 𝑌∈{0,1} n × m ^{n\times m} n×m来表示,其元素 y u i y_{ui} yui 表示用户 u u u 是否与一个项目 i i i 进行了交互(例如,点击)。为方便起见,我们将整个交互的数据收集为 D={(𝑢,𝑖)|𝑦𝑢𝑖= 1};将每个用户𝑢(项目𝑖)的交互项(用户)收集为P𝑢≡{𝑖|𝑦𝑢𝑖=1}(P𝑖≡{𝑢|𝑦𝑢𝑖= 1})。RS的任务是为每个用户推荐他可能感兴趣的项目。

3.1.2 基于嵌入的模型

基于嵌入的方法在RS中得到了广泛的应用。他们首先将用户/项目特征(如id)转换为向量化表示(即e𝑢、e𝑖),然后根据嵌入的相似度进行预测。被广泛使用的相似度函数包括内积和神经网络。为了方便起见,本工作只采用具有代表性的内积进行分析,即模型预测可以表示为:
在这里插入图片描述

3.1.3 损失函数

训练推荐模型有多种损失函数选择,包括点态损失(如BCE、MSE)、成对损失(如BPR)和Softmax损失。最近的工作发现,Softmax损失可以减轻人气偏差,实现良好的训练稳定性,并与排名度量很好地一致。它通常比其他更好的性能,因此吸引了对推荐的兴趣。此外,Softmax损耗可以被认为是常用的BPR损耗的扩展。因此,我们将Softmax视为代表损失来作分析,可以表述为:
在这里插入图片描述
在实践中,经常包含一个日志操作,并进行负采样或小批处理策略来加速。但它们不是我们的重点,这里我们只是参考原始损失进行理论分析。

3.1.4 嵌入归一化

本工作研究了在推荐中嵌入规范化的性质。在内积的基础上,我们在预测中利用嵌入规范化如下:
在这里插入图片描述
其中,用户/项目嵌入的大小已被重新调整。第一个因素:
在这里插入图片描述
可以理解为余弦相似度,其中的大小已经被隔离;第二个因子 1/𝜏 重新调整了归一化嵌入。我们注意到,我们没有直接引入一个控制尺度的参数,而是在对比学习中借用了类似的想法,并利用了传统的温度。这种排列可以使我们的发现更好地推广到其他领域。

3.2 分析嵌入的规范化

在本节中,我们首先验证了在RS中利用嵌入规范化的本质。(3.2.1),然后确定一个潜在的限制(3.2.2).最后,我们对温度进行了全面的分析,并揭示了它的两个重要作用 (3.2.3)。

3.2.1 规范化的必要性

  • 理论分析。

    • 我们从理论分析开始,表明如果没有标准化,流行项目的大小比不受欢迎的项目增长得快得多。事实上,我们有:
      • 引理1。通过选择不控制大小的内积,我们在每次迭代中都有项目嵌入大小 𝛿𝑖 的变化:
        在这里插入图片描述
        在训练程序的早期阶段,𝛿𝑖 遵守:
        在这里插入图片描述
        该引理的证明方法见原文附录B.1。我们可以从Lamma 1中得出一个观察结果:请注意,在训练过程的早期阶段,用户和项目都是均匀分布的。换句话说, p u i f ( u , i ) p_{ui}f(u,i) puif(u,i) 不能区分出显著的差异, ∑ k ∈ N u p u k ( τ ) \sum_{k\in N_u} p_{uk}(\tau) kNupuk(τ)相对较小,而流行项目的规模将获得 ∣ P i ∣ ( I [ y u i = 1 ] ) |P_i|(I[y_{ui}=1]) Pi(I[yui=1]) 的爆炸性上升。
  • 实证分析。

    • 从引理1中,我们知道这个大小与项目的受欢迎程度相关。在本小节中,我们通过丰富的实验来探讨其对推荐的负面影响。
    • 实验设计。为了展示自由变化幅度的影响,这里我们进行了四个实验:
      • (1) 我们首先在训练过程中可视化不同项目受欢迎程度的项目嵌入的幅度(图1 a)。在这里,我们根据项目的受欢迎程度将项目分为十组。较大的组ID表示该组包含更多流行的项目
      • (2) 我们还报告了不同项目组的表现(图1 b)。
      • (3) 具有训练时期的积极实例的预测分数为如图1 c. 所示。
      • (4) 我们可视化了有无归一化的MF的性能(图1 d)。所有实验均在MF主干和Yelp2018 数据集上进行。
      • 类似的结果也可以在其他模型(如LightGCN)和数据集上观察到。实验设置的详细信息可参考第5.1节。
    • 自由变化的幅度加剧了人气偏见。如果我们关注于训练的早期阶段(图1 (a)),流行物品的数量迅速上升,这与理论证明相一致。因此,流行的项目容易获得更高的分数,因为大小直接有助于模型预测。此外,不同的大小也损害了用户嵌入的训练。用户嵌入的梯度可以写成:𝜕𝜕𝐿e𝑢=I𝑢,𝑖𝜕𝑓𝜕𝐿(𝑢,𝑖)e𝑖,其中规模较大的流行项目会发挥过度的贡献,并可能压倒来自他人的信号。这个模型会陷入有偏差的结果。图1:(b)提供了证据。这个模型会陷入有偏差的结果。可以看出,有归一化的模型比没有归一化的模型产生了更公平的结果。
    • 自由变化的幅度损害了收敛性。如果我们将注意力转向图1 ©中的训练结束时,我们观察到,即使有许多epoch(例如,500),香草MF的预测分数和嵌入幅度仍然处于上升而不是收敛的状态,而性能持续下降(图1 (d))。但是当我们利用在MF中的规范化时,我们观察到令人印象深刻的改进——模型以更少的epoch(即20)快速收敛,并且在更多的epoch时表现稳定。
    • 规范化可以提高性能。为了进一步验证规范化的优点,在这里,我们直接测试了无论是否对用户或项目嵌入进行规范化时的推荐性能(表1)。可以看出,具有双边归一化的模型(即Y-Y)的性能明显优于具有单边归一化的模型(即Y-N或N-Y),而且它们都超过了未进行归一化的模型(N-N)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 文章很枯燥,不想看了,屮。想看去自己看原文吧。

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

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

相关文章

「已解决」已有Umi Antd 环境下安装 formily v2 依赖报错问题

背景 在一个项目中想引入 formily v2 试一下这个针对复杂表单的解决方案,结果发现安装后报错,目前已有的第三方库大致为 “ant-design/icons”: “^5.0.1”, “ant-design/pro-components”: “^2.4.4”, “umijs/max”: “^4.0.68”, “ahooks”: “^3…

textract OCR的安装使用

安装 pip install textract使用 在 Python 中,textract 是一个用于提取文本和信息的库。它提供了一个函数 textract.process(),用于处理不同类型的文档并提取文本内容。下面是 textract.process() 函数的各个参数的介绍: filename&#xf…

第3章 运输层

1​、在 ISO/OSI 参考模型中,对于运输层描述正确的有( ) A. 为传输数据选择数据链路层所提供的最合适的服务B. 为系统之间提供面向连接的数据传输服务C. 可以提供端到端的差错恢复和流量控制,实现可靠的数据传输D. 提供路由选择…

HarmonyOS学习路之开发篇—多媒体开发(相机开发 一)

HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。 基本概念 相机静态能力 用于描述相机的固有能力的一系列参数,比如朝向、支持…

20分钟做一套采购审批系统

1、设计输入模板 excel画表格界面 # 公式代表新建时以默认值代替 2、设置单元格为签名控件 双击单元格后,会默认显示当前用户的信息,用于签名 3、设置要合计的数据 生成的合计公式会默认放到下一行 4、设置单元格的ID与标题,在添加或者删除行或者列时&am…

GEE:为每个对象(斑块/超像素)添加属性

作者:CSDN @ _养乐多_ 本文将介绍为每个对象(斑块/超像素)添加属性的代码。并举例将最近距离作为属性添加到每个对象(斑块/超像素)特征中。 结果如下图所示, 文章目录 一、代码二、代码链接一、代码 这段代码的目的是对动态世界土地覆盖图像进行分析,并提取出其中的目…

第九章 ShuffleNetv1网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

React之state详解

目录 执行过程 异步 React18与自动批处理 setState 推荐用法 ()>{return },this.state. 生命周期 数据没改变时​不渲染 shouldComponentUpdate PureComponent自动(推荐) 你真的理解setState吗? - 掘金 组件的私有…

如何在Microsoft Excel中使用LEN函数

如果你曾经想尝试查找一行文本中的字符数,你可以使用Microsoft Excel来查找,这要归功于LEN函数。以下是如何使用它。 一、什么是 LEN 函数 LEN函数是一个简单的计算函数,用于计算给定文本字符串中的所有字符,包括数字、字母、特…

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透:Ngrok 配置服务端 客户端配置 客户端生成后门,等待目标上线 内网穿透:Frp 客户端服务端建立连接 MSF生成后门,等待上线 内网穿透:Nps 服…

三、Docker命令及基本使用

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、帮助启动类命令1.1 启动docker1.2 停止docker1.3 重启docker1.4 查看docker状态1.5 开机启动1.6 查看docker概要信息1.7 查看docker总体帮助文档1.8 查看docker命令…

autoDL上A100运行wiki出错:NVIDIA A100-PCIE-40GB(最后安装好torch+dgl了);学校服务器加2.X版本pytorch

1、A100运行wiki出错:NVIDIA A100-PCIE-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70. If you want to use the NVIDIA A100-PCIE…

题集-栈和队列的相互转化

这里,队列的性质是先入先出,但是栈的性质是后入先出。两个队列就可以通过相互捯实现数据的后入先出。 typedef int QDataType; //这是一个队列结点的结构 typedef struct QueueNode { struct QueueNode* next; QDataType data; }QNode; //这是…

常见面试题之MySQL篇

1.MySQL中,如何定位慢查询? 我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接…

ChatGPT在前,华为盘古Chat在后

国产盘古Chat对话方面堪比GPT-3.5 什么是ChatGPT?简单来说,就是一个能够和人类自然对话的人工智能系统。它可以理解你的语言,回答你的问题,甚至给你提供建议和服务。它不仅可以处理文字,还可以处理图片、视频、音频等…

Web3 是什么?为何应该关注?

当我开始我的职业生涯时,“Web2.0”还是一个热门的新事物。 当我开始我的职业生涯时,正值互联网快速发展的时期,人们谈论的是“Web2.0”,这一概念引发了许多关于用户参与、社交媒体和在线合作的讨论。然而,随着时间的推…

DataStructure01|ArrayList和顺序表

ArrayList与顺序表 1.线性表 ​ 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列… ​ 线性表在逻辑上是线性结构,也就说…

掌握Python的X篇_4_开发工具ipython与vscode的安装使用

本篇将会介绍两个工具的安装及使用来提高Python的编程效率。 ipython:比python更好用的交互式开发环境vscode:本身是文本编辑器,通过安装相关的插件vscode可以作为python集中开发环境使用 掌握Python的X篇_4_开发工具ipython与vscode的安装使…

ChatGPT/GPT-4 或将从根本上改变软件工程

文章目录 一、前言二、主要内容 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 编程也可能是最容易被 AI 技术取代的工作之一,软件的构建方式将产生根本性的转变。 今年以来,相信大家都听说过 ChatGPT、New Bing 和…

Java try-catch块

Java的try块用于封装可能会抛出异常的代码。它必须在方法内部使用。 如果在try块中的特定语句处发生异常,后续的代码块将不会执行。因此,建议不要在try块中放置不会抛出异常的代码。 Java的try块必须后跟catch块或finally块。 Java try-catch语法 try…
最新文章