行为序列

一、用户行为序列建模

用户最近 n 次点击、点赞、收藏、转发等行为都是推荐系统中重要的特征,可以帮助召回和排序变得更精准。这节课介绍最简单的方法——对用户行为取简单的平均,作为特征输入召回、排序模型。

用户的LastN行为序列可以反映出用户对什么样的物品感兴趣,召回的双塔模型、粗排的三塔模型、还有精排模型都可以用LastN特征。LastN特征很有效,把它用到召回和排序模型中,所有指标都会大涨。

简单平均

  • 早期的做法
  • 现在也很常用

  • LastN:⽤户最近的次交互(点击、点赞等)的物品ID。
  • 对LastN物品ID做embedding,得到个向量。
  • 个向量取平均,作为⽤户的⼀种特征。
  • 适⽤于召回双塔模型、粗排三塔模型、精排模型。

  • 对各种交互行为序列单独做平均,将平均后的向量拼接起来。
  • 实际用LastN的时候,不只是用物品ID,还用物品的其他特征,比如物品类目。
  • 把ID embedding和其他特征的embedding拼在一起,这样比只用ID embedding效果更好。

二、DIN模型[1]

DIN 模型,它是对 LastN 序列建模的一种方法,效果优于简单的平均。DIN 的本质是注意力机制(attention)。

  • DIN ⽤加权平均代替平均,即注意⼒机制(attention)。
  • 权重:候选物品与⽤户LastN物品的相似度。

  • 对于某候选物品,计算它与⽤户LastN物品的相似度。
  • 以相似度为权重,求⽤户LastN物品向量的加权和,结果是⼀个向量。
  • 把得到的向量作为⼀种⽤户特征,输⼊排序模型,预估(⽤户,候选物品)的点击率、点赞率等指标。
  • 本质是注意⼒机制(attention)。

假设粗排选出了500个物品,用DIN给500个物品打分保留分数最高的几十个:
1. 500个物品依次和LastN向量求相似度(内积、余弦相似度,或更复杂的方法)
2. 将相似度作为权重,计算LastN物品的加权和,作为用户的LastN特征,输入精排模型

DIN的本质是注意力机制

相似度越高权重越大。

DIN有效的原因

图1
图2

候选物品是美食类

  • 用户近期交互过很多美食类笔记,则加权平均后的用户特征更接近同类笔记
  • 比起简单平均,更加突出了近期兴趣中的“美食”特征(注意力)
  • 因为候选物品是正样本,模型会学习到与行为序列相似的物品兴趣更大,排序分数更高

候选物品是新闻类

  • 与用户近期交互过的笔记都不相同,则加权平均后的用户特征距离候选物品不会很近

简单平均v.s. 注意力机制

  • 简单平均和注意⼒机制都适⽤于精排模型。
  • 简单平均适⽤于双塔模型、三塔模型。
    • 简单平均只需要⽤到LastN,属于⽤户⾃⾝的特征。
    • 把LastN 向量的平均作为⽤户塔的输⼊。
  • 注意⼒机制不适⽤于双塔模型、三塔模型。
    • 注意⼒机制需要⽤到LastN + 候选物品。
    • ⽤户塔看不到候选物品,不能把注意⼒机制⽤在⽤户塔。

三、SIM模型[2]

  • 让记录的行为序列变长,可以显著提升推荐系统所有的指标;
  • 但是暴力增加序列长度是不划算的增加的计算量太大,带来的收益却不够多,性价比不高

3.1 DIN模型缺点与改进

缺点

  • 注意⼒层的计算量 (⽤户⾏为序列的长度)。
  • 只能记录最近⼏百个物品,否则计算量太⼤。
  • 缺点:关注短期兴趣,遗忘长期兴趣。

改进

  • ⽬标:保留⽤户长期⾏为序列(很⼤),⽽且计算量不会过⼤。
  • 改进DIN:
    • DIN 对LastN 向量做加权平均,权重是相似度。
    • 如果某LastN 物品与候选物品差异很⼤,则权重接近零。
    • 快速排除掉与候选物品无关的LastN 物品,降低注意⼒层的计算量。

改进思路:快速排除掉对加权和贡献不大的物品

3.2 SIM模型

  • 保留⽤户长期⾏为记录,的⼤⼩可以是⼏千。
  • 对于每个候选物品,在⽤户LastN记录中做快速查找,找到个相似物品。
  • 把LastN变成TopK,然后输⼊到注意⼒层。
  • SIM模型减⼩计算量(从降到)。

3.2.1 第一步:查找

  1. ⽅法⼀:Hard Search
  • 根据候选物品的类⽬,保留LastN物品中类⽬相同的。
  • 简单,快速,无需训练。
  1. ⽅法⼆:Soft Search
  • 把物品做embedding,变成向量。
  • 把候选物品向量作为query,做近邻查找,保留LastN物品中最接近的个。
  • 效果更好,编程实现更复杂。

论文实验表明Soft Search效果更好,实践中取决于公司基建水平基建很强可以用Soft Search,否则用Hard Search就可以了。

3.2.2 第二步:注意力机制

与DIN区别只有输入的交互记录不同

使⽤时间信息

  • ⽤户与某个LastN物品的交互时刻距今为
  • 做离散化,再做embedding,变成向量
  • 把两个向量做concatenation,表征⼀个LastN物品。
    • 向量是物品embedding。
    • 向量是时间的embedding

trick: 将时间划分成区间,如七天、三十天、一年、一年以上,embedding后与物品向量拼接(时间信息是物品的交互时刻距今过去多久,不需要对交互时刻做embedding)

为什么SIM使⽤时间信息

  • DIN 的序列短,记录⽤户近期⾏为。
  • SIM的序列长,记录⽤户长期⾏为。
  • 时间越久远,重要性越低。

一年前和10分钟前的交互记录重要性不一样。

3.2.3 结论


行为序列
https://mztchaoqun.com.cn/posts/D72_DIN_SIM/
作者
mztchaoqun
发布于
2025年5月28日
许可协议