首页 > 其他分享 >U-BERT论文阅读笔记

U-BERT论文阅读笔记

时间:2024-05-23 09:51:03浏览次数:11  
标签:BERT 编码器 mathbf 训练 论文 用户 笔记 评论

U-BERT: Pre-training User Representations for Improved Recommendation论文阅读笔记

Abstract

学习用户表征是推荐系统的一项关键任务,因为它可以编码用户对个性化服务的偏好。用户表征一般是从点击互动和评论意见等行为数据中学习的。然而,对于不太流行的领域,行为数据不足以学习精确的用户表征。为了解决这个问题,一个自然的思路是利用内容丰富的领域来补充用户表征。受最近 BERT 在 NLP 领域取得成功的启发,我们提出了一种基于预训练和微调的新方法 U-BERT。

与典型的BERT应用程序不同,U-BERT是为推荐而定制的,并在预训练和微调中使用了不同的框架。在预培训中,U-BERT专注于内容丰富的领域,并引入了一个用户编码器和一个评论编码器来建模用户的行为。提出了两种预训练策略来学习一般的用户表示;在微调中,U-BERT侧重于目标竞争不足的领域。

除了从训练前阶段继承的用户和审查编码器外,U-BERT还进一步引入了一个项目编码器来建模项目表示。此外,还提出了一种评审共匹配层,以捕获用户和项目之间更多的语义交互。最后,U-BERT结合了用户表示、项目表示和审查交互信息,以提高推荐性能。

Introduction

​ 文本内容有助于更好地了解用户偏好,进而提高推荐性能。然而,在为特定领域 A 构建推荐系统时,这些方法只能使用来自 A 领域的评论。如果是不太流行的领域,评论数量将不足以获得全面的用户代表,这将进一步影响推荐性能。

​ 在本文中,我们利用来自竞争领域的回顾评论来改进对竞争不足领域的建议。如图1所示,该用户选择同一组单词(用红色高亮显示)来表达对两个不同域的项目的积极看法。如果我们设法在汽车领域模拟他的评论习惯,并将其应用到玩具领域,我们就可以更好地预测他对玩具的评价,并推荐更合适的物品

pkM5Mpq.png

​ 鉴于图1中的观察结果,并受到最近里程碑式的工作BERT的启发,我们提出了一个基于预训练和微调的推荐框架U-BERT。在预训练阶段,U-BERT基于丰富的评论,从内容丰富的领域进行两个自我监督任务来学习一般的用户表示;在微调阶段,U-BERT使用监督目标进一步从竞争不足领域细化用户对评论的表示。

​ 此外,与 NLP 领域典型的 BERT 应用不同,为了完成推荐任务,我们需要在同一框架内对用户 ID、项目 ID 和评论意见进行建模。在预训练和微调阶段,用户 ID 的集合保持不变,而项目 ID 的集合由于领域不同而没有重叠。因此,U-BERT 在预训练和微调阶段分别引入了两种不同的架构。具体来说,在预训练阶段,U-BERT 引入了一个基于多层Transformer的评论编码器和一个用户编码器,以对评论文本建模并构建评论增强的用户表示。此外,为了训练这两个模块,还提出了两个新颖的预训练任务:屏蔽意见标记预测和意见评级预测;在微调阶段,U-BERT进一步使用项目编码器来表示项目,使用评审协同匹配层来捕获用户和项目评论之间的语义交互。最后,将所有获得的用户表示、项目表示和评审交互信息输入到目标域下游工作的预测层中。

本文的贡献为:

  • 我们提出了一种新的基于预训练和微调的U-BERT方法,它通过利用来自其他领域的信息来提高对一个领域的推荐性能。
  • 与典型的BERT应用程序不同,U-BERT是为推荐任务定制的。为了将用户ID、项目ID和评审评论合并到同一框架中,U-BERT在预训练和微调阶段引入了不同的架构,并提出了两种新的预训练策略。

Problem Formalization

​ 特定领域D内的用户U和物品I,用户u对物品i的评论设定为\(\mathcal{T}_f\),其中每个评论都包括用户ID u,物品ID i以及评论文本s,和一个总的评分r。U在其他不同领域生成的评审集记为\(\mathcal{T}_p\),其中每个评论记录与\(\mathcal{T}_f\)中的评论格式相同,除了它们有不同的项目集。

问题定义(项目推荐)

​ 给定两个审查集,\(\mathcal{T}_f\)和\(\mathcal{T}_p\),用户设置U和项目集I,目标是利用所有输入来训练模型M,该模型可用于估算域 D 中任何新用户-物品配对的评分,以决定是否向该用户推荐该物品。

Method

​ 领域D的整体推荐框架包含两个阶段。在预训练阶段,我们通过完成两项自我监督任务,对来自不同领域的评论进行 U-BERT 和用户表征的预训练。在微调阶段,预训练的 U-BERT 对用户特征进行编码,并帮助项目编码器从领域D的评论中获得项目表示。

U-BERT

​ U-BERT的预训练阶段的模型图如下所示:

pkMI1PA.png

​ 图2展示了U-BERT在训练前阶段的架构。它使用原始的BERT作为主干,并进行了一些修改,以适应推荐任务。UBERT可以对评论文本和用户进行联合建模。我们将介绍它的三个主要模块。

输入层

​ U-BERT 的输入由三部分组成:评论文本、用户 ID 和相应的域 ID。给定评论文本 s,我们首先按照 BERT 的设置,分别在其前端和末端位置添加两个特殊标记 [CLS] 和 [SEP]。然后,我们通过嵌入矩阵 \(\mathbf{E}_W\in\mathbb{R}^{|\mathcal{V}|\times d}\) 将 s 中的每个词 w 转换为其 d 维向量 e。其中V是词汇量,d是单词嵌入的维数。根据 BERT,我们为每个词添加相应的段嵌入和位置嵌入。最后,我们得到评论文本 s 的输入表示 \({\mathbf{S}}\in\mathbb{R}^{L_s\times d}\)。\(L_s\)表示文本的长度。对于用户 ID u,我们还通过另一个嵌入矩阵\({E_U}\in\mathbb{R}^{\mathcal{U}\times d}\) 将其转换为 d 维向量 u。此外,为了缓解预训练和微调阶段之间的领域不一致问题,我们引入了领域ID来对评论文本中的领域特定信息进行建模,以帮助学习更一般的用户表示。对于域ID o,我们通过域嵌入矩阵\(E_O\)将其转换为\(\mathbf{o}\in\mathbb{R}^d\)。

评论编码器

​ 评论编码器是多层的Transformer,\(S^l=\{e_t^l\}^{t=L_s}_{t=1}\)表示(l+1)Transformer层的输入表示。 \(S_0\)设置为评论 编码器的输入(即 S)。每个变换层有以下两个主要子层。请注意,L 个变换层的可训练参数因层而异。为方便起见,我们省略了每个参数的层下标 l。

多头注意力机制:

​ 这个子层旨在捕捉每个单词的上下文表示。给定三个输入矩阵\(\mathbf{Q}\in\mathbb{R}^{L_Q\times d},\mathbf{K}\in\mathbb{R}^{L_K\times d}\mathrm{~and~}\mathbf{V}\in\mathbb{R}^{L_V\times d}\),其中\(L_K=L_V\),注意功能的定义为:

\(\mathrm{Attn}(\mathbf{Q},\mathbf{K},\mathbf{V})=\textit{Softmax}(\mathbf{Q}\mathbf{K}^\top/\sqrt{d})\mathbf{V}\)

多头自注意层MH(·)将进一步将输入投射到多个语义子空间,并从多个视图中捕获交互信息。

\(\begin{aligned}&\mathrm{MH}(\mathbf{S}^l)=[head_1;...;head_h]\mathbf{W}^O\\&head_i=\text{Attn}(\mathbf{S}^l\mathbf{W}_i^Q,\mathbf{S}^l\mathbf{W}_i^K,\mathbf{S}^l\mathbf{W}_i^V)\end{aligned}\)

其中\(\mathbf{W}_i^Q,\mathbf{W}_i^K,\mathbf{W}_i^V\in\mathbb{R}^{d\times d/h}\mathrm{~and~}\mathbf{W}^O\in\mathbb{R}^{d\times d}\)是可学习的参数,h是头的数量

位置前馈

​ 对于输入的\(\mathbf{H}\in\mathbb{H}^{L_Q\times d}\),该子层的计算过程为\(\mathrm{FFN}(\mathbf{H})=GELU(\mathbf{HW}_1^F+\mathbf{b}_1^F)\mathbf{W}_2^F+\mathbf{b}_2^F\)

\(W_1^F\in\mathbb{R}^{d\times 4d},W_2^F\in\mathbb{R}^{4d\times d},B_1^F\in\mathbb{R}^{4d},B_2^F\in\mathbb{R}^{d}\)是可训练的参数

​ 然后,Transformer层利用围绕上述两个子层定义的残差连接和层归一化函数 LN 来提取上下文表示:

\(\begin{aligned} \mathbf{S}^{l+1}& =\operatorname{Trm}(\mathbf{S}^l)=\operatorname{LN}(\mathbf{H}^l+\operatorname{FFN}(\mathbf{H}^l)) \\ \mathbf{H}^{l}& =\mathrm{LN}(\mathbf{S}^l+\mathrm{MH}(\mathbf{S}^l)) \end{aligned}\)

通过 L 层堆叠Transformer提取的评论最终上下文表示法为 \(S_L\)。

用户编码器

​ 该模块旨在聚合评审的语义表示,以形成评审感知的用户表示,其中包含对项目的总体意见。它主要由三个子层组成。

  • 融合用户嵌入和领域嵌入
  • 利用注意力机制提取对用户重要的单词
  • 对前面获取的两个嵌入进行融合

预训练阶段

​ 这一阶段的目标是:

  • (1)教U-BERT如何整合评审信息和用户信息;

  • (2)学习一般的用户表示。我们提出了两个新的任务来更有效地利用对其他领域的审查来实现这两个目标。

掩码意见token预测

​ 基于传统BERT的MLM任务做了两个修改

  • 在预测掩蔽词时,除了句子上下文表示外,我们添加了额外的用户表示来学习用户固有的评论偏好
  • 我们不是随机屏蔽词语,而是选择意见词语进行屏蔽和重构,这些意见词语在同一用户撰写的不同领域评论中是共有的,并意味着个人评论偏好。

​ 在预训练时,我们将最大化输出概率,\(Pr(w_t)\)。

意见评级预测

​ 当用户评论一个项目时,有两种意见表达形式:

  • 粗粒度的、综合性的评分得分
  • 细粒度的,评论文本和各种意见标记。

​ 不同用户之间的评级数据会存在差异,因此,通过在一个用户的其他领域评论中链接两种形式的意见,我们可以捕获他的一般评论偏好,这有助于补充他在特定领域D中的用户表示。

​ 具体来说,我们使用评论感知的用户表示,它融合了一般的用户偏好信息和文本意见信息,来预测总体评级。在预训练时,我们将最小化预测分数和真实评分分数之间的平方误差。

最终预训练阶段的损失函数为:

​ \(\mathcal{L}(\Theta)=\sum_{k=1}^{|\mathcal{T}_p|}\frac{-\sum_{t\in s_k^M}\log(\Pr(w_t))}{|s_k^M|}+\beta(r_k'-r_k)^2\)

微调 U-BERT 以进行评级预测

​ 使用预训练的U-BERT来进行评级预测的展示图

pkMjgpD.png

输入层

​ 使用五个部分用于输入,分别是领域ID,用户ID,用户评论,物品评论,项目ID

评论编码器

​ 使用U-BERT的评论编码器逐个对用户/项目的多个评论进行编码。

用户-项目编码器

​ 首先结合所有用户评论的语义表示,形成一个完整的评论表示。然后,作为训练前阶段,我们将用户嵌入和域嵌入融合,得到一个特定领域的表示。接下来,我们在用户嵌入中参加完整的评论表示,以获得多评论感知的用户表示。

​ 项目编码器的流程与用户编码器类似

评论协同匹配层

​ 通过了解用户u的评论,我们可以了解他/她的相关方面和相应的评估。同时,通过理解其他用户写的评论,我们可以了解其各个方面的详细描述和这些用户的一般评论。

​ 我们可以通过测量用户u的评论语义相似性来估计他们对该项i的各个方面的可能评估。相似度信息可以进一步帮助从细粒度的视图中预测评级。

​ 首先使用注意力机制对齐评论。然后引入匹配层来捕获原始表示和对齐后的表示之间的语义相似性,最后,我们使用行级最大池化来融合所有位置的匹配信息,以得到用户评论和项目评论的综合表示\(t_u\)和\(t_i\)。

预测层

​ 我们使用评论感知的用户和项目表示,即\(\hat{\mathbf{u}}\mathrm{~and~}\hat{\mathbf{i}},\),以及细粒度的双向评审评论信息,即\(t_u\)和\(t_i\)来预测评分。

​ 训练的目标函数还是预测评分与真实评分之间的均方误差

\(\mathcal{L}(\Theta_f)=\frac1{|\mathcal{T}_f|}\sum_{k=1}^{|\mathcal{T}_f|}(r_k'-r_k)^2\)

标签:BERT,编码器,mathbf,训练,论文,用户,笔记,评论
From: https://www.cnblogs.com/anewpro-techshare/p/18207697

相关文章

  • .NetCore源码阅读笔记系列之Security (二) 自定义认证实践
    通过前面对AddCookie或者 AddOpenIdConnect等了解,其实里面都实现了一个AuthenticationHandler<TOptions>的认证处理,接下来我们来简单自定义一个试试首先我来实现下面这个方式,我添加了一个AddLIYOUMING()services.AddAuthentication(options=>{......
  • 《Linux内核完全注释》学习笔记:2.4 Linux内核进程控制
    程序是一个可执行的文件,而进程(process)是一个执行中的程序实例。利用分时技术,在Linux操作系统上同时可以运行多个进程。分时技术的基本原理:把CPU的运行时间划分成一个个规定长度的时间片(timeslice),让每个进程在一个时间片内运行。当进程的时间片用完时系统就利用调度程序......
  • 梦断代码阅读笔记02
    梦断代码阅读笔记02技术开发与创新在过去的技术开发中,我通常会选取最熟悉或最简单的解决方案,避免过多的风险和试验新的技术。这种保守的作风虽然保证了项目的短期进度,但却限制了技术创新和自身成长。结合《梦断代码》一书中的案例,可以看到这种方式存在诸多弊端。书中描述了Eagl......
  • Performance选项卡笔记以及分析vue页面卡顿
    各区域内容说明Performance选项卡可以用于分析页面性能。最上方红框区域内出现红色块的代表该时间段帧率不足60帧。往下是cpu占用率。卡顿原因主要耗时根据以下该图进行分析。问题分析由此可见本次分析主要导致卡顿的原因是因为js的执行所导致的。可以选择时间区域进一......
  • 反悔贪心学习笔记
    本文仅用于笔者关于反悔贪心的学习笔记,反悔贪心是笔者在一场$div4$中遇到的问题,故来学习一番【学习笔记】反悔贪心 1、什么是反悔贪心?贪心本身是没有反悔操作的,贪心求的就是当前的最优解。但当前的最优解有可能是局部最优解,而不是全局最优解,这时候就要进行反悔操......
  • 学习笔记:集合幂级数与 FWT
    集合幂级数集合到整数设\(n\)元集\(A=a_1,a_2,\cdots,a_n\),定义\(A\)的幂集\(2^{A}=\{S\midS\subseteqA\}\)到整数集\(\mathbb{Z}\)的映射\(\text{id}\)为:若\(S=\{a_{i_1},a_{i_2},\cdots,a_{i_k}\}\),则\(\text{id}(S)=\sum_{j=1}^{k}2^......
  • 经常出差用哪些办公软件记录工作?可多设备同步使用的便签笔记软件
    对于许多职场人士来说,出差已成为工作常态。在旅途中,如何高效处理工作,确保信息不遗漏,成为了一个不小的挑战。那么,对于经常需要移动办公的我们,哪款办公软件才是最佳选择呢?可多设备同步使用的便签笔记软件是哪款?答案就是——敬业签,一款强大而便捷的便签笔记软件。它的强大之处在于其......
  • 学习笔记:Miller-Rabin 与 Pollard-Rho
    Miller_Rabin首先考虑方程\(x^2\equiv1\pmodn\)。可以写成\((x+1)(x-1)=kn\)。当\(n\)为素数时,只可能\(n\midx+1\)或\(n\midx-1\),反之合数不满足。得到结论:在模素数意义下,一个数的平方等于\(1\)当且仅当这个数同余于\(1\)或\(-1\)。我们知道,......
  • Mars的学习笔记(更新中)
    前言这篇文章主要用来总结我之前所学的算法,以更好地复习。希望大家在看时能理解我所说的话(包括未来的我)算法大典KMPKMP是一个强大的字符串搜索算法,可以在线性的复杂度下将所需要的子串位置精确的找出。它的最大特点就是搜索是不会回溯。朴素思想给出两个字符串ababababbab......
  • 《梦断代码》阅读笔记3
        对这本书的阅读终于要结束了,“梦断代码”:代码阻断了梦的实现吗?一直以为,计算机是万能的,自己想的都可以通过代码实现。在接触代码以后的这段时间里,我的想法改变了。代码可以实现自己的想法,但是怎么实现却要看自己了,算法自己思考,计算机只负责运行,运行通过就说明算法通过......