前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TIGER:基于生成式检索的推荐系统

TIGER:基于生成式检索的推荐系统

作者头像
秋枫学习笔记
发布2023-11-13 16:45:32
8730
发布2023-11-13 16:45:32
举报
文章被收录于专栏:秋枫学习笔记

关注我们,一起学习

标题:Recommender Systems with Generative Retrieval 地址:https://arxiv.org/pdf/2305.05065.pdf 会议:NeurIPS 2023 学校:威斯康星大学,谷歌

1.导读

现代推荐系统主要是通过在同一空间中构建查询emb和item的emb,然后通过大规模检索,在给定查询emb的情况下进行近似近邻搜索以选择最佳item。本文提出了一种新的生成检索方法Transformer Index for GEnerative Recommenders (TIGER) ,其中检索模型对目标item的标识符进行自回归解码。为此,作者构建了具有语义意义的码字(codeword)元组,作为每个item的语义ID。给定用户会话中item的语义ID,训练基于Transformer的seq-to-seq模型来预测用户将与之交互的下一个item的语义标识。

2.方法

本文提出的TIGER主要分为两步:

  • 以内容特征生成语义ID:将item内容特征编码为emb向量,并将emb量化为语义码字的元组。由此产生的码字元组被称为item的语义ID
  • 在语义ID上训练通用的推荐系统:构建transformer模型在语义id上训练用于序列推荐的模型

2.1 语义ID生成

假设每个item都有相关的内容特征,这些特征捕捉有用的语义信息(例如标题或描述或图像)。采用预训练的内容编码器来生成语义emb

x\in \mathbb{R}^d

,比如采用BERT,转换item的文本特征,以获得语义emb。然后对语义emb进行量化,以生成每个item的语义ID,如图a所示。

将语义ID为长度为m的码字元组。元组中的每个码字都来自不同的码本。语义ID可以唯一表示的item的数量,因此码本大小的乘积等于item集合的大小。虽然生成语义ID的不同技术导致ID具有不同的语义属性,但它们得有以下属性:相似的item(具有相似内容特征或语义emb紧密的item)应该具有重叠的语义ID。例如,与语义ID为(10,23,32)的item相比,具有语义ID(10,21,35)的item应该更类似于具有语义ID的项目(10,21,40)。即相似的item的语义ID重叠度应该较高

2.1.1 RQ-VAE生成语义ID

残差量化变分自动编码器(RQ-VAE)是一种多级向量量化器,在残差上进行量化来生成码字元组(语义ID)。通过更新量化码本和DNN编码器-解码器参数来联合训练自动编码器。具体流程如上面图3所示。

  • RQ-VAE首先经由编码器
\mathcal{E}

对输入x进行编码学习潜在表征

z=\mathcal{E}(x)

。在第零级(d=0),初始残差被简单地定义为

r_0=z

  • 在每个层级d,有一个码本
\mathcal{C}_d=\{e_k\}_{k=1}^K

,其中K是码本大小。然后,通过将

r_0

映射到该级别的码本中最近的emb来量化

r_0

。在d=0处最接近的嵌入

e_{c_d}

的索引(

c_0=argmin_k\|r_0-e_k\|

),表示第0个码字。对于下一个级别d=1,残差定义为

r_1=r_0-e_{c_0}

。然后,类似于第零级,通过找到最接近

r_1

的第一级的码本中的emb来计算第一级的码字。

  • 该过程递归地重复m次,以获得表示语义ID的m个码字的元组。这种递归方法从粗粒度到细粒度来近似输入。注意,选择为m个级别中的每一个级别使用大小为K的单独码本,而不是使用单个m*K大小的码本。这样做是因为残差的范数往往随着层级的增加而降低,因此允许不同水平的不同粒度。

得到了语义ID

(c_0,...,c_{m-1})

后,就可以得到z的量化表征

\hat{z}=\sum_{d=0}^{m-1}{e_{c_d}}

。然后将

\hat{z}

传给解码器,解码器尝试使用

\hat{z}

重新创建输入x。RQ-VAE损失为

\mathcal{L}(\boldsymbol{x}):=\mathcal{L}_{\text {recon }}+\mathcal{L}_{\text {rqvae }}, \text { where } \mathcal{L}_{\text {recon }}:=\|\boldsymbol{x}-\widehat{\boldsymbol{x}}\|^{2},
\mathcal{L}_{\text {rqvae }}:=\sum_{d=0}^{m-1}\left\|\operatorname{sg}\left[\boldsymbol{r}_{i}\right]-\boldsymbol{e}_{c_{i}}\right\|^{2}+\beta\left\|\boldsymbol{r}_{i}-\operatorname{sg}\left[\boldsymbol{e}_{c_{i}}\right]\right\|^{2}
\hat{x}

是解码器的输出,sg表示停止梯度运算(stop gradient)。共同训练编码器、解码器和码本。

为了防止RQ-VAE发生码本崩溃(大多数输入仅映射到少数码本向量),使用k均值聚类来初始化码本,将k-means算法应用于第一个训练批次(first training batch),并使用质心作为初始化。当然除了使用RQ-VAE,也可以使用其他的向量化方法,如LSH等

2.1.2 处理碰撞

碰撞就是发生语义冲突了,多个item映射到同一个码字上了。为了消除冲突,本文在有序语义码字的末尾添加了一个额外的标记,以使它们具有唯一性。例如,如果两个项目共享语义ID(12,24,52),附加额外的令牌来区分它们,将这两个项目表示为(12,24,52,0)和(12,24,52,1)。为了检测冲突,需要维护一个将语义ID映射到相应item的查找表。

2.1.3 通过语义ID进行生成式检索

按时间顺序对每个用户交互过的item进行排序,构建item序列。给定序列

(item_1,...,item_n)

,推荐系统预测下一个

item_{n+1}

。令

(c_{i,0},...,c_{i,m-1})

表示

item_i

的长度为m的语义ID。然后将item序列转换为序列

(c_{1,0},...,c_{n,m-1})

。训练seq-to-seq模型来预测

item_{n+1}

的语义ID

(c_{n+1,0},...,c_{n+1,m-1})

3.结果

不同量化方法对比

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导读
  • 2.方法
    • 2.1 语义ID生成
      • 2.1.1 RQ-VAE生成语义ID
        • 2.1.2 处理碰撞
        • 2.1.3 通过语义ID进行生成式检索
    • 3.结果
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档