两阶段超长周期用户行为序列建模方法总结
今天这篇文章介绍的主题是推荐系统中,基于两阶段的超长周期用户兴趣建模系列工作。主要介绍业内比较有代表性的由快手发表的3篇工作,从2020年最开始的SIM首次提出的两阶段行为序列建模方法,到2022年KDD上发表的TWIN对两阶段一致性的优化,再到2024年CIM上提出的在TWIN基础上引入层次聚类进一步释放长周期建模能力。
1.背景
在推荐系统的排序模型中,用户行为序列建模部分的迭代一直是最核心的收益来源。用户行为序列建模迭代,又可以从空间和时间两个维度进行优化。在空间上,通过引入不同类型的行为序列、完善行为序列表征、建立不同用户行为序列关系提升信息丰富度;在时间上,通过引入更长周期的历史序列完整刻画用户长周期兴趣。
在时间上的优化,一个核心难点如何解决性能问题。随着引入序列的增长,模型的计算时间会随之增长,很难在线上应用。为了解决这个问题,快手提出了一系列基于两阶段的超长周期行为序列建模方法,其核心思路是将长周期行为序列拆分成两个阶段,第一阶段使用计算复杂度较低的方法快速从全周期序列检索出可能对预测有帮助的部分,缩短序列长度,第二阶段再使用诸如attention等复杂模型进一步进行序列建模。
2.SIM:两阶段建模
行为序列建模的核心是从历史序列中找到和目标item关系最密切的部分,作为模型的输入。一般采用attention的方法,但是其在长周期序列引入中一方面计算复杂度高,一方面模型拟合也比较困难。SIM提出了一种两阶段的长周期建模方法,由General Search Unit和Exact Search Unit两个部分组成。General Search Unit用于从长历史行为序列中选出和当前候选商品最相关的几个子序列,Exact Search Unit用于更精细的匹配,可以采用类似DIEN等的方法。
对于General Search Unit有hard search和soft search两种。Hard search比较简单,直接选择和候选商品相同类目的历史行为;Soft search采用向量检索的方式计算历史行为和候选商品的匹配分,其中商品向量采用一个辅助CTR任务来学习长期数据和候选广告之间的相关性得到。
3.TWIN:提升两阶段一致性
上述两阶段建模的方法中,GSU阶段和ESU阶段存在不一致问题,即GSU筛选的打分和ESU筛选的打分并不是相同的计算逻辑,导致GSU筛选出的TopK不是全局最优解,可能在ESU中认为最优的结果在GSU中被过滤掉了。下图也展示了这种不一致性。可以看出,GSU和ESU的差异还是比较大的,如果能解决二者的一致性问题,能带来比较大的收益。
为了解决这个问题,TWIN在GSU部分进行了改造,让GSU也进行轻量级的attention计算提升和ESU的一致性。在GSU部分,将特征分为内部特征和交叉特征。内部特征指的是item本身的特征,例如商品id、视频作者等,这部分特征不随着用户交互变化,因此可以直接缓存起来,线上不用每次都计算。对于交叉特征部分,每一维特征都使用一个全连接层映射成1维。通过这种方式,将attention计算的时间复杂度从𝑂(𝐿 × (𝐻 + 𝐶) × 𝑑𝑜𝑢𝑡)降低到𝑂(𝐿 × 𝐶),其中L为序列长度,H为内在特征维度,C为交叉特征维度,H一般占据特征的主要部分。
计算attention的公式如下,query和key使用内在特征,交叉特征维度为1,因此这里作为bias加入到attention score的计算中。
4.TWINV2:聚类释放长周期潜力
用户历史序列虽然很长,但是存在很多重复的信息或者相似的信息,这些重复或近似的item反应了用户相似的兴趣。TWINV2在TWIN的基础上,进一步通过聚类对历史行为序列进行重组,缩短历史序列,提升长周期建模潜力。
首先,将历史看过的视频根据其观看长度 / 视频长度的比例分成不同的组,每个组代表用户的一种感兴趣程度。每个组内,使用层次聚类+Kmeans聚类,对item进行聚类。每个聚类的特征由其类内item的特征组合而成。对于数值特征,使用这个类簇的均值计算该特征;对于ID特征,使用距离这个聚类中心最近的item的ID作为该聚类簇的特征。在得到历史序列的聚类结果,以及每个聚类的表征之后,使用和Twin类似的ESU+GSU两阶段方法进行用户兴趣建模。
本文转载自 圆圆的算法笔记,作者: Fareise