阅读量 ,评论量
怎么建
将item离散成若干层级的token,这些 token
共享一个紧凑词表,而且词表大小不随 item
池规模增长;基于这个性质可预期提升模型的可扩展性、内存效率和推荐效果。那么词表怎么建呢?比如一个
item 切成几个 token,相同行为在不同上下文里算不算同一个
token,等诸多问题尚无定论,在背景中罗列几种不同的建设方向:
1、参数无关编码:
- 方法:
- 聚类:直接对已有 item embedding 聚类
- 矩阵分解:直接对交互矩阵做 SVD / MF
- PQ:直接训练 codebook 或用已有量化器
- 缺点:
- length bias / capacity mismatch:热门 item
交互很多,协同信号强,确定性强,用短 ID 就够区分(即熵低);长尾 item
交互稀疏,需要更多内容细节,应该用更长
ID(即熵高);(或者从LLM的角度来理解,有的语义需要用多个词语才能表述清除,而有的只需要一两个词就能表述清楚,item应如是)
- 非参数 ID
构造不一定服务最终推荐目标:比如两个视频内容很像,但一个是高质讲解,一个是标题党;或者两个商品文本相似,但用户替代购买关系、互补购买关系完全不同。单纯聚类、PQ、MF
分配
ID,可能只捕获了浅层相似性,而没捕获更深的协同关系、场景关系、目标函数关系。
2、RQ-VAE:
- 方法:
- 残差量化变分自编码器,在编码器与解码器中间插入多级码本的残差量化过程,其损失函数是:\(\boxed{ \mathcal{L}(x) =
\left\|x-\hat{x}\right\|_2^2 + \sum_{d=0}^{m-1} \left( \left\|
\text{sg}[r_d] - e^{d}_{c_d} \right\|_2^2 + \beta \left\| r_d -
\text{sg}[e^{d}_{c_d}] \right\|_2^2 \right) }\)
,其中x是编码器的输入,\(\hat{x}\)是解码器的输出,\(r_d\)是上一级的残差结果(对一条确定的样本来说,\(r_d\)是编码器的输出减去一个固定的常量,所以这里不用担心梯度回不去的问题),\(e^{d}_{c_d}\)是当前级找到的最近的语义ID向量;该损失函数的三部分分别是用于更新变分自编码器、码本、编码器,后面的两项是用来解决量化过程梯度不可导的问题,最后一项称之为commitment
loss,用于实现在codebook
强更新时encoder弱约束,以此保证重建损失、straight-through 梯度、codebook
更新能更稳定地稳定配合。(只用\(\left\|
\text{sg}[r_d] - e^{d}_{c_d}
\right\|_2^2\),encoder输出不用码本做约束,会导致量化边界会变得不稳定,语义ID的表征含义难以收敛,码本出现
codebook lag的情况;而若用\(\left\| r_d -
[e^{d}_{c_d}]
\right\|_2^2\),会导致重建损失与codebook更新互相拉扯,且拉的力度完全绑定,同样不易收敛)
- 缺点:
3、上下文动作序列:
- 方法:
- 讨论:
- 信息保真上,RQ-VAE偏「序」,ActionPiece偏「集」(对 item
本质的不同假设);
- 泛化上,RQ-VAE靠 ID 里的语义,ActionPiece靠切分的多样性;
怎么用
均是一家之音,在此罗列各种用法:
- Beyond Item IDs: Scaling Short-Form-Video Recommendation via
Semantic-Native Long Sequence Modeling
- 非对称语义建模:超长历史序列用前两级码本映射(ID = c1 · |V| +
c2),预估序列与短期交互序列用全码本展开;
- 全局感知压缩Transformer(GACT):沿 channel 维堆叠成
super-token,表征融合(global-token + masked-mean-pooling);
- SIDInspector A Mapping-First Diagnostic Resource for Semantic-ID
Tokenizers
- Cold-Starts in Generative Recommendation: A Reproducibility
Study
- xx
- xx
- xx
- xx
- xx
- xx
- xx