BDPL模型:行为感知双通道学习如何提升异构序列推荐效果
1. 从“千人千面”到“千人千面+千时千面”:推荐系统的下一站
如果你在电商平台搜索过“婴儿奶粉”,接下来几天你的首页大概率会被各种母婴用品、育儿书籍和儿童玩具填满。这背后是经典的协同过滤和序列推荐在起作用——它们通过你的历史行为序列,预测你“接下来可能喜欢什么”。然而,这种模式正面临一个日益明显的瓶颈:用户的行为是复杂且多变的。同一位用户,在工作日的午休时间可能快速浏览科技新闻,在周末晚上则沉浸于游戏直播,在给家人选购礼物时又表现出完全不同的兴趣模式。传统的序列推荐模型,往往将这些混杂的、来自不同场景(我们称之为“异构”)的行为序列不加区分地喂给模型,期望得到一个统一的用户偏好表示,这就像让一个厨师用同一把勺子去处理川菜、粤菜和西点,结果难免串味。
“BDPL:行为感知双通道偏好学习”这篇论文,正是为了解决这个“串味”问题。它不再将用户视为一个兴趣单一的个体,而是敏锐地捕捉到,用户在不同类型行为(如点击、收藏、购买、长时间观看)背后,隐藏着截然不同的意图和偏好。一个“收藏”行为,可能代表深度的兴趣和未来的购买意向;而一次快速的“点击-跳出”,可能只是偶然的误触或浅层的好奇。BDPL的核心思想,就是为这些异构行为构建“双通道”:一个通道专注于捕捉用户稳定的、长期的综合兴趣(就像你的基本口味偏好);另一个通道则实时感知用户当前会话中表现出的动态、短期的行为意图(就像你此刻是渴了想喝水,还是饿了想吃饭)。通过对这两类偏好进行分离、学习和有机融合,模型能够更精准地预测用户在特定情境下的下一个行为。
这不仅仅是学术上的精进。在信息过载的今天,提升推荐的精准度直接关系到用户体验、留存和商业价值。BDPL所代表的“行为感知”与“异构序列”处理思路,为推荐系统从“千人千面”走向更精细的“千人千面+千时千面”提供了切实可行的技术路径。接下来,我将结合对这类模型的普遍性理解,拆解BDPL的关键设计、实现逻辑,并探讨其性能背后的原因以及在实际应用中可能遇到的挑战。
2. 解构“异构序列”:为什么传统模型在这里失灵了?
在深入BDPL之前,我们必须先理解“异构序列推荐”到底难在哪里。所谓“异构”,在推荐系统上下文中,通常指代两种或两种以上不同类型的行为数据共同构成的序列。最常见的就是我们在电商或内容平台看到的:点击、加购、收藏、购买、评分、分享、长时间停留……这些行为的重要性、置信度和背后的用户心理是截然不同的。
2.1 行为异质性的三重挑战
第一重挑战是信号强度与噪音的差异。一个“购买”行为是强烈的正向信号,几乎可以肯定用户对该物品有高偏好;而一个“点击”行为则微弱得多,可能源于封面吸引、误触或随意浏览。传统模型如GRU4Rec或SASRec,使用相同的网络参数处理所有类型的行为嵌入,相当于赋予所有行为相似的权重,这必然会使得强信号被弱信号稀释,或者模型无法有效区分信号的真伪。
第二重挑战是行为背后的意图分化。用户进行不同行为时,其心理状态和目标是不同的。例如,在“收藏”时,用户可能处于一种“标记以备后用”的规划状态;在“加购”时,可能进入了“比价和决策”状态;而在“浏览”时,可能只是处于“探索和消遣”状态。这些不同的意图状态,应该对应不同的偏好向量。传统单一通道的模型输出的一个“综合偏好”向量,试图同时表达所有这些状态,必然会导致表征模糊。
第三重挑战是行为间的复杂依赖关系。异构行为之间的转移模式并非随机。存在一些常见的模式链,如“点击 -> 详细浏览 -> 加购 -> 购买”,这是一个强烈的转化意图链;也可能有“点击 -> 快速跳出”这样的负面链。模型需要能够捕捉这些跨行为类型的、具有特定意义的转移规律,而不仅仅是同类型行为(如点击序列)内部的转移。
2.2 传统序列建模的局限性
基于RNN(如GRU)或Transformer(如BERT、SASRec)的经典序列推荐模型,其强大之处在于捕捉序列中的长期依赖和动态演化。但它们的基本假设是序列元素(行为)是同质的,或者其差异性可以通过嵌入层(Embedding)来简单刻画。在处理异构序列时,它们的局限性凸显:
- 统一的嵌入与建模:尽管可以为不同行为类型设置不同的嵌入向量,但后续的序列建模层(如Transformer Encoder)对所有位置的信息进行混合注意力计算时,不同类型行为间的差异性容易被平滑掉。模型难以自主地学习到“购买行为应给予更高注意力权重”或“收藏行为应与长期兴趣模块关联更强”这样的规则。
- 单一的兴趣表征:最终,模型输出一个单一的向量来表示用户在当前序列下的兴趣。这个向量被迫承载了所有混杂的意图信息,当需要预测下一个可能是任何类型的行为时,这个综合向量的针对性就会变弱。
BDPL的提出,正是为了正面应对这些挑战。它的设计哲学很清晰:既然行为是异构的、意图是多变的,那么我们就用不同的“通道”或“模块”来分别处理它们,最后再根据当前情境进行智能整合。
3. BDPL架构深潜:双通道如何感知与学习?
BDPL模型的核心创新在于其“行为感知”与“双通道”结构。我们可以将其想象成一个拥有两位专业顾问的决策系统:一位是“长期战略顾问”,负责分析你的历史档案和稳定偏好;另一位是“实时战术顾问”,负责解读你当前正在做的事情和瞬间意图。BDPL的架构就是让这两位顾问高效协作的框架。
3.1 输入层与行为感知嵌入
首先,模型需要接收原始的异构行为序列。假设一个序列为[(item₁, b-type₁), (item₂, b-type₂), ..., (item_t, b-type_t)],其中每个元素包含了物品ID和行为类型。
- 物品嵌入:每个物品
item_i通过一个可学习的查找表,被映射为一个稠密向量e_i,这与传统方法一致。 - 行为感知嵌入:这是BDPL的第一个关键点。它不是简单地为行为类型(如点击、购买)分配一个独立的嵌入向量,而是设计了一个行为感知的映射网络。这个网络以物品嵌入
e_i和行为类型编码b_type_i为输入,输出一个融合了行为信息的“行为-物品联合嵌入”h_i。- 具体实现上,可以将行为类型编码为一个独热向量,然后与物品嵌入拼接,通过一个全连接层进行融合:
h_i = ReLU(W * concat(e_i, embed(b_type_i)) + b)。 - 这样做的深层原因是:同一物品,在不同行为下对用户偏好的贡献度不同。例如,对于同一款手机,用户“购买”它和“浏览”它,所反映的兴趣强度天差地别。
h_i就承载了这种差异化信息。
- 具体实现上,可以将行为类型编码为一个独热向量,然后与物品嵌入拼接,通过一个全连接层进行融合:
3.2 长期偏好通道:捕捉稳定的兴趣画像
这个通道的目标是从用户整个历史交互序列中,提炼出那些相对稳定、持久的兴趣偏好。这些偏好可能跨越多个会话,与用户的人口统计学特征、固有品味相关。
- 序列建模:将整个行为感知嵌入序列
[h_1, h_2, ..., h_t]输入到一个序列编码器中(论文中可能采用Transformer Encoder或GRU)。这里的关键是,模型通过自注意力机制,能够学习到序列中哪些行为(尤其是那些强信号行为如购买、收藏)对定义用户长期兴趣更为关键。 - 偏好提炼:序列编码器最终输出每个位置的上下文向量。BDPL通常会采用一种聚合策略(如取最后一个隐藏状态,或对所有隐藏状态进行注意力聚合),生成一个长期偏好向量
p_long。这个向量可以被理解为用户的“兴趣基底”。
注意:在实际实现中,长期通道可能会对序列进行采样或使用更长的历史窗口,以确保其真正关注“长期”模式,而非被近期频繁的临时行为所主导。
3.3 短期偏好通道:感知当前的动态意图
这个通道专注于当前会话(或最近一段密集交互序列)内的行为模式,旨在捕捉用户即时的、动态的意图。例如,用户最近十分钟连续点击了多款跑步鞋,那么其短期意图很可能与“运动装备”相关。
- 会话划分或滑动窗口:首先需要从完整序列中界定“短期”的范围。这可以通过会话分割(基于时间间隔)或使用一个固定长度的滑动窗口来实现。假设我们取最近K个行为作为短期序列。
- 意图敏感的序列建模:将短期序列的行为感知嵌入输入另一个序列编码器(可能与长期通道共享结构,但参数不共享)。这个编码器的任务是捕捉短期内的行为转移模式。由于序列较短,模型能更敏锐地感知到用户当前的任务导向。
- 短期偏好生成:同样通过聚合,得到短期偏好向量
p_short。这个向量高度依赖于最近的交互上下文,变化较快。
3.4 双通道偏好融合:情境化的决策引擎
得到长期偏好p_long和短期偏好p_short后,最关键的一步是如何将它们融合起来,用于预测下一个物品。BDPL在这里引入了“行为感知”的融合机制,即:融合的权重应根据待预测的行为类型(或当前上下文)动态调整。
- 门控融合机制:一个常见且有效的做法是使用门控网络(Gating Network)。例如,设计一个门控向量
g:g = sigmoid(W_g * concat(p_long, p_short, c) + b_g)其中c是当前的上下文信息(如下一个行为类型的嵌入,或最近一个行为的嵌入)。然后,融合后的最终用户偏好表示为:p_final = g ⊙ p_long + (1 - g) ⊙ p_short这里⊙表示逐元素相乘。门控向量g学习在何种情况下应更依赖长期偏好(例如,当用户行为稀疏或当前行为意图不明确时),何种情况下应更依赖短期偏好(例如,当用户处于一个明确、连贯的浏览会话中时)。 - 预测层:最终,使用融合偏好
p_final与所有候选物品的嵌入进行内积计算(或通过更复杂的神经网络),得到每个候选物品的得分,并通过Softmax生成预测概率。损失函数通常采用交叉熵损失,旨在最大化下一个真实物品的预测概率。
通过这套流程,BDPL实现了对用户异构行为的精细化建模:长期通道负责“知根知底”,短期通道负责“察言观色”,而门控融合机制则扮演了“审时度势”的决策者角色。
4. 性能优势分析:BDPL为何能更胜一筹?
在公开数据集(如Amazon、Tmall)上的实验表明,BDPL模型在命中率、归一化折损累计增益等关键指标上,通常优于GRU4Rec、SASRec、以及一些早期的异构行为处理模型。其性能提升并非偶然,而是源于其架构设计精准地击中了传统模型的痛点。
4.1 对信号噪声的鲁棒性增强
在包含大量点击噪声的序列中,传统模型容易受到干扰。BDPL的双通道结构提供了一种自然的去噪机制:
- 长期通道:由于关注整体序列,偶然的噪声点击在注意力权重计算中不易获得高权重,特别是当用户有大量强信号行为(如购买)作为锚点时。长期偏好
p_long更多地由高置信度行为塑造。 - 短期通道:即使短期序列包含噪声,但由于序列短,模型可以结合行为类型信息来弱化噪声的影响。例如,一个孤立的“点击-跳出”行为在短期建模中可能被识别为无效模式。
- 动态融合:当短期序列噪声较大时,门控网络可以自动降低
p_short的权重,更多地依赖相对稳定的p_long,从而稳定预测结果。
4.2 对复杂意图的刻画能力提升
用户从“浏览旅游攻略”到“购买机票”,与从“浏览手机评测”到“收藏某款手机”,虽然可能都是“浏览->主动行为”的模式,但意图强度和决策路径不同。
- BDPL的行为感知嵌入让模型在输入层就区分了“浏览”同一个物品和“购买”同一个物品的天壤之别。
- 双通道分离使得模型能够分别表征用户的“泛在旅游兴趣”(长期)和“当前强烈的出行规划意图”(短期)。在预测“购买机票”时,短期通道的权重会显著增加,模型能精准捕捉到从“攻略浏览”到“机票购买”这种跨行为类型的强意图转化。
4.3 对数据稀疏场景的缓解
对于新用户或交互数据较少的用户,其短期行为序列可能非常短或噪声大。此时,传统单一模型容易过拟合或表现不佳。
- BDPL的长期通道可以从有限的交互中,尽可能提取用户的粗略兴趣画像(即使只有几次购买,也能说明很多问题)。
- 在短期数据不足时,门控网络会倾向于信任长期通道。同时,模型可以通过在大量用户数据上预训练行为感知嵌入和门控网络,获得对行为类型的一般性理解,从而更好地泛化到数据稀疏的用户上,实现“冷启动”性能的提升。
4.4 与“小尺度衰落”概念的类比启示
虽然“小尺度衰落下的GSM载波性能分析”是通信领域的术语,但其思想与推荐系统有有趣的类比。在无线通信中,“小尺度衰落”指的是信号在短时间或短距离内因多径效应导致的快速波动。通信系统需要区分并处理这种快速变化的“小尺度衰落”和相对缓慢变化的“大尺度路径损耗”。
- BDPL的短期偏好通道,正是在处理用户兴趣的“小尺度衰落”——即因当前情境、瞬时意图引起的兴趣快速波动。
- 长期偏好通道,则对应处理用户兴趣的“大尺度路径损耗”——即相对稳定、缓慢演变的长期兴趣基底。
- 一个稳健的通信系统需要同时对抗这两种衰落,一个精准的推荐系统也同样需要同时建模这两种兴趣变化。BDPL通过双通道分离建模,正是借鉴了这种“分而治之”的思想,从而获得了更稳健、更精准的性能。
5. 从论文到实践:实现BDPL的关键细节与踩坑点
阅读论文获得灵感是一回事,将其转化为可运行、有效果的代码则是另一回事。在尝试复现或借鉴BDPL思想进行工程实践时,有几个关键细节和潜在陷阱需要特别注意。
5.1 行为类型的设计与编码
行为类型的定义是模型的基石,定义不当会导致模型学习混乱。
- 粒度选择:行为粒度过粗(如只分“点击”和“非点击”)无法体现异质性;粒度过细(如将“停留1-3秒”、“停留3-10秒”都分为不同类型)则会导致数据稀疏和模型复杂。一个实用的起点是采用业务中的关键事件:
曝光、点击、详情页停留超时、加购、收藏、购买、支付。曝光行为可以作为负样本或提供上下文信息。 - 编码方式:除了使用独热编码,可以考虑为行为类型也学习一个嵌入向量。更高级的做法是引入行为类型的先验权重(如购买=5,收藏=3,点击=1),将这个权重作为特征之一输入到行为感知嵌入层或注意力计算中。
5.2 长期与短期序列的划分策略
如何定义“长期”和“短期”,直接影响两个通道的学习目标。
- 短期序列:通常基于会话划分。一个简单有效的方法是设定一个时间阈值(如30分钟),两次交互间隔超过该阈值则视为不同会话。将最后一个完整会话作为短期序列。另一种方法是使用滑动窗口,取最近N个交互(如50个)。
- 长期序列:可以是用户的所有历史交互(去除短期序列部分),也可以是一个更长的时间窗口(如过去90天)。需要注意的是,长期序列不宜过长,否则计算开销大且早期历史可能已过时。通常需要对长期序列进行采样,例如随机采样一定数量(如100个)的历史交互,或保留所有强信号行为(购买、收藏)并采样部分弱信号行为。
5.3 门控网络的设计与训练技巧
门控网络是融合的核心,设计不好容易导致模型退化(例如门控值始终偏向一边,退化为单通道模型)。
- 输入信息:门控网络的输入至关重要。除了
p_long和p_short,务必加入当前上下文信息c。c可以是最新一个行为的“行为-物品联合嵌入”h_t,也可以是待预测的行为类型嵌入。这为门控网络提供了“为何而融合”的决策依据。 - 初始化与正则化:将门控网络的偏置
b_g初始化为0,这样在训练初期,门控值g在0.5附近,模型能平等地看到两个通道的信息,避免早期收敛到次优状态。同时,可以对门控值g的分布施加正则化(如鼓励其不要过于极端),确保两个通道都能被有效利用。 - 梯度流:确保长期和短期通道的梯度都能顺畅地回传到门控网络及更早的层。有时需要对较长的长期序列进行梯度截断或使用更稳定的优化器。
5.4 负采样策略的适配
序列推荐通常使用负采样来构建损失函数。在异构行为场景下,负采样也需要稍作调整。
- 行为感知的负样本:对于给定的正样本(用户,序列,下一个物品+行为类型),负采样时,不仅要采样一个用户未交互过的物品,还应考虑这个物品在该行为类型下的合理性。例如,预测的下一个行为是“购买”,那么负样本物品应该是用户从未购买过,但可能曝光或点击过的物品,而不是一个完全无关的物品。这需要根据业务日志构建更精细的候选集。
- 批次内负采样:由于引入了行为类型,标准的批次内负采样(将同一批次内其他用户的正样本作为当前用户的负样本)可能仍然有效,但需要注意平衡不同行为类型的样本数量。
在实际部署中,BDPL类模型的计算开销会比单通道模型大,因为它需要维护和计算两个序列编码器。因此,需要在效果和效率之间进行权衡,例如对长期通道使用更轻量级的模型(如平均池化),或者只在离线训练时使用完整模型,在线服务时使用缓存好的用户长期偏好向量。
