当前位置: 首页 > news >正文

用于推荐系统的自注意力句子嵌入

原文:towardsdatascience.com/self-attentive-sentence-embedding-for-the-recommendation-system-fc8af5817035

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/728c7a4437c9173ef98eb28fa2e14c73.png

图片由Giulia Bertelli在Unsplash提供


简介

变换层及其注意力机制是自然语言处理社区中最具影响力的想法之一。它们在许多大型语言模型中扮演着至关重要的角色,例如ChatGPT和LLaMA,它们最近风靡全球。

然而,还有一个来自自然语言处理社区但主要在推荐领域实现其影响力的有趣想法:自注意力句子嵌入。在这篇文章中,我将带我们了解自注意力句子嵌入[1]以及如何将其应用于推荐系统。

它是如何工作的

整体思路

论文的主要思想是找到一种更好的方法将句子编码成多个嵌入,这些嵌入可以捕捉句子的各个方面。具体来说,作者们不想将句子编码成一个单一的嵌入,而是想将其编码成一个二维矩阵,其中每一行嵌入捕捉句子的一个不同方面:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6f35d6964ba1a4013fef3195a8f2886c.png

自注意力模型概述(作者提供图片)

一旦我们有了句子嵌入,我们可以将它们用于各种下游任务,例如句子分析、作者画像和文本蕴涵。

模型架构

模型输入是一批句子;每个句子有 n 个标记。我们可以这样表示第i个句子:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0c5dd064739ee8e71db54b41835f611d.png

输入表示(作者提供图片)

d表示表示的隐藏维度;我们可以将句子 s 编码成一个nd列的矩阵H,如下所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5e827fa8a814508f857eb4a77e4cd3c8.png

输入嵌入公式(作者提供图片)

其中 F 表示将句子中的标记编码成嵌入的模型函数,在论文中,他们使用词嵌入(使用 Word2Vec 初始化)来编码标记,然后通过双向 LSTM 进行处理。由于有许多方法可以将标记编码成嵌入,我在这里使用F进行泛化。

接下来,他们使用嵌入 H 作为输入来学习注意力权重矩阵 A

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/770ec4f51247d7c2946c65c792998138.png

句子注意力公式(作者提供图片)

在这里,softmax()被应用于其输入的第二维度。我们可以将公式视为一个没有偏差的 2 层 MLP。

从上述公式中我们可以看出,注意力权重 A 矩阵将具有r by n的形状,其中r是句子可以拥有的方面数量,而n是句子的长度。作者认为,有许多方面构成了句子的语义。因此,他们需要r 个嵌入来关注句子的不同部分。换句话说,A 中的每个嵌入都是句子的注意力权重:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2559b82b29de9ff126070f85eb3ca17e.png

句子注意力权重(图片由作者提供)

就像 Transformer 一样,我们可以可视化矩阵 A,以更深入地理解每个方面对句子的注意力。

最后,我们通过将 H 与 A 相乘来生成句子嵌入,得到r by d矩阵 M:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/71e38a350961de735623c9640df82cbd.png

自注意力公式(图片由作者提供)

M 中的每一行是标记嵌入和方面对那个标记的权重之间的加权总和。直观上看,它看起来像这样:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/bf9863e17aa030c4ad8e882cf0ef28f4.png

自注意力句子嵌入(图片由作者提供)

正则化

在论文中,他们还介绍了一个新的正则化项:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7e62d3356b8ee653b006e169853abf25.png

正则化项(图片由作者提供)

其中 F 表示矩阵的 Frobenius 范数。

正则化项有两个作用:

  1. 为了增加多样性,因为方面嵌入可以重叠,意味着它们可以是相似的。

  2. 为了让每个兴趣尽可能关注尽可能少的标记。

由于正则化不是本文的重点,我们可以在论文中了解更多关于它是如何工作的信息。

推荐系统中的多兴趣

一旦我们了解了自注意力句子嵌入的工作原理,我们就可以关注如何在推荐系统中使用它。

在一个大规模推荐系统中,我们通常使用一个双塔模型架构,其中一个塔编码用户信息,另一个塔编码候选信息。我们将用户过去的行为,如点击、喜欢和分享的序列,以及用户配置文件,作为用户塔的输入。至于候选塔,我们使用候选特征,如项目 ID 和项目类别。

我们通过点积用户嵌入和候选嵌入来反映候选项目与用户的相关性。我们的标签是用户序列中的下一个交互项。因此,模型的目标是预测用户可能会与之交互的下一个项目:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a795a1dd9882c2fb5ffcf870210916ae.png

双塔模型(图片由作者提供)

从上面的图像中我们可以看出,用户塔的输出是一个捕获所有用户信息的嵌入。然而,单个用户嵌入不擅长捕获所有用户的多样化兴趣。因此,一个更好的解决方案是将用户兴趣编码到多个嵌入中。

许多研究都致力于如何捕捉用户的多样化兴趣。其中最突出的两种方法是自注意力嵌入(SA)[2]和动态路由(DR)[3]。尽管这两种方法在性能上相当,但自注意力方法更稳定且训练速度更快。

一旦我们理解了自注意力方法的工作原理,将其应用于推荐领域就变得非常简单。我们不再使用句子标记作为输入,而是用用户行为来替换,例如用户在 YouTube 上观看的视频 ID 列表或用户在电子商务平台上点击/订购的商品 ID 列表。至于输出,每个嵌入编码的是用户兴趣,而不是句子中的某个方面!

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/98cca4870b9e68b3f895dd59de62568d.png

NLP 与推荐之间的定义映射(作者提供图片)

在 ComiRec 论文[2]中,作者将自注意力方法与动态路由方法以及其他产生单个用户兴趣的流行模型进行了比较:

<…/Images/1f501b27beaebc00a0a285d5efbc97c4.png>

公共数据集上的模型性能 [2]

如表格所示,自注意力方法产生的结果与动态路由方法相当。然而,这两种多兴趣嵌入解决方案都显著优于它们的单兴趣嵌入对应物。

总结

使用多兴趣嵌入训练和部署模型有许多细微之处。在这篇文章中,我带大家了解自注意力方法的工作原理以及我们如何在推荐系统中使用它。关于这些模型的训练和部署的更多细节,没有比阅读论文更好的资源了。这篇文章是您了解推荐系统多兴趣框架旅程上的一个温和参考。

参考文献

[1] Lin, Zhouhan, 等人. “结构化自注意力句子嵌入.”arXiv 预印本 arXiv:1703.03130(2017).

[2] Cen, Yukuo, 等人. “推荐的可控多兴趣框架.”第 26 届 ACM SIGKDD 国际知识发现与数据挖掘会议论文集. 2020.

[3] Li, Chao, 等人. “Tmall 推荐的多兴趣网络与动态路由.”第 28 届 ACM 国际信息与知识管理会议论文集. 2019.

http://www.jsqmd.com/news/611472/

相关文章:

  • 汽车牌照数据集 YOLO 目标检测 | 可下载
  • TS工具类型实战指南:Partial、Required、Pick、Record的深度解析与应用场景
  • 大模型学习第5天--python基础(练习题)
  • OpenClaw+Phi-3-vision-128k-instruct低成本方案:自建多模态自动化助手
  • Wan2.2-T2V-A5B新手必看:ComfyUI界面详解与核心节点功能说明
  • GLM-4.7-Flash惊艳效果:中英混合代码注释、数学推导链式回答、多轮记忆连贯性
  • Graphormer保姆级教学:Gradio界面汉化+响应式布局适配技巧
  • 动手学深度学习|ResNet 的梯度计算超详细讲解:为什么残差连接能让反向传播更顺畅?
  • 算法调度问题中的代价模型与优化方法的技术5
  • GLM-4.1V-9B-Base真实案例:模糊图、低光照图、多物体图的理解表现
  • 2026年比较好的初学手鼓/专业手鼓/便携手鼓厂家精选 - 品牌宣传支持者
  • 后端框架选型:为什么选Kotlin + Spring Boot
  • YOLOv8训练实战:解析SyntaxError等常见参数报错与高效避坑指南
  • 告别手动排版!DeepSeek-OCR-2保姆级教程:复杂文档精准提取为结构化Markdown
  • 逻辑运算符(‘短路与‘和‘逻辑与‘,‘短路或‘与‘逻辑或‘)
  • FLUX.2-klein-base-9b-nvfp4部署避坑指南:Anaconda虚拟环境管理与依赖冲突解决
  • ShareX截图工具缺失ffmpeg.exe的快速修复指南:2023最新版
  • OpenClaw 核心概念关系与配置指南
  • 使用 Personal Access Token(PAT)通过 HTTPS 推送到 GitHub(Windows)
  • 2026年知名的非洲鼓10寸/非洲鼓初学者/非洲鼓便携/非洲鼓成人公司推荐 - 品牌宣传支持者
  • 隐私优先的AI助手:本地化部署OpenClaw+Gemma-3-12b-it方案
  • OpenClaw技能市场挖掘:千问3.5-9B加持的5个高效办公技能
  • 基于Qwen3.5-9B-AWQ-4bit:快速构建智能图片分析工具的全流程
  • 动手学深度学习|深度学习硬件基础:CPU 和 GPU 到底有什么区别?为什么训练模型更喜欢 GPU?
  • 2026年知名的巴西专线专业报关退税/中国到巴西运输/巴西海运空运海外仓仓储/巴西DG柜运输年度精选公司 - 品牌宣传支持者
  • 飞书多维表格数据自动化同步:从MySQL到云端的一站式解决方案
  • 山东蜂窝卤煮锅哪家口碑好
  • PyTorch 2.8镜像企业实操:制造业缺陷检测模型迁移学习全流程复现
  • 基于单片机的云台控制系统设计
  • LingBot-Depth实战体验:电商商品深度图生成,效果超出预期