深度会话兴趣网络(DSIN)在fun-rec项目中的应用与原理剖析

深度会话兴趣网络(DSIN)在fun-rec项目中的应用与原理剖析

fun-rec fun-rec 项目地址: https://gitcode.com/gh_mirrors/fu/fun-rec

引言

在推荐系统领域,如何有效捕捉用户兴趣及其演化过程一直是核心挑战。本文将深入解析深度会话兴趣网络(Deep Session Interest Network, DSIN)这一创新模型,该模型是fun-rec项目推荐算法库中的重要组成部分。DSIN通过独特的会话划分和多层次兴趣提取机制,显著提升了用户兴趣建模的准确性。

DSIN模型的核心思想

用户行为序列的本质特性

传统推荐模型如DIN和DIEN在处理用户历史行为时存在明显局限:

  • DIN完全忽略行为间的序列关系
  • DIEN虽引入序列建模但忽视行为序列的会话结构

研究发现用户行为具有"会话内同质,会话间异质"的特点:

  • 同质性:短时间内用户行为高度相关(如30分钟内浏览相似商品)
  • 异质性:不同时间段用户兴趣会发生显著变化(如上午看电子产品,晚上看服装)

DSIN的创新架构

DSIN通过四层结构精准捕捉用户兴趣:

  1. 会话划分层:按时间间隔分割行为序列
  2. 会话兴趣提取层:使用多头自注意力机制提取会话内兴趣
  3. 会话交互层:通过双向LSTM学习会话间兴趣演化
  4. 兴趣激活层:采用注意力机制聚焦与目标项目相关的兴趣

模型架构详解

会话划分层(Session Division Layer)

# 示例:用户行为序列分割
用户行为序列 = [item1, item2, ..., itemN]  # 按时间排序
分割点 = 时间间隔 > 30分钟的位置
会话列表 = [[item1,item2], [item3,item4,item5], ...]

会话兴趣提取层(Session Interest Extractor)

该层采用改进的Transformer结构:

偏置编码(Bias Encoding)

传统位置编码的扩展,同时考虑:

  • 会话位置信息(w^K)
  • 会话内项目位置(w^T)
  • 嵌入维度位置(w^C)

计算公式:

BE(k,t,c) = w_k^K + w_t^T + w_c^C
多头自注意力机制
# 伪代码实现
class MultiHeadAttention:
    def __call__(self, Q, K, V):
        # 拆分多头
        Q = reshape(Q, [batch, heads, seq_len, head_dim])
        K = reshape(K, [batch, heads, seq_len, head_dim])
        V = reshape(V, [batch, heads, seq_len, head_dim])
        
        # 计算注意力分数
        scores = matmul(Q, K.transpose()) / sqrt(head_dim)
        weights = softmax(scores)
        
        # 加权求和
        output = matmul(weights, V)
        return reshape(output, [batch, seq_len, embed_dim])

会话交互层(Session Interest Interacting Layer)

使用双向LSTM捕捉兴趣演化:

  • 前向LSTM:捕捉兴趣的自然发展
  • 后向LSTM:捕捉兴趣的逆向关联
  • 最终输出:前后向隐藏状态的拼接

兴趣激活层(Session Interest Activating Layer)

两套注意力机制:

  1. 基础会话兴趣注意力
  2. 上下文增强会话兴趣注意力

计算公式:

注意力分数 = softmax(兴趣向量·W·候选物品嵌入)
加权兴趣 = ∑(注意力分数 * 兴趣向量)

实现关键点

数据处理技巧

  1. 会话填充:统一会话长度便于批量处理
  2. 双重掩码
    • 会话级别掩码:过滤无效会话
    • 项目级别掩码:过滤填充项目
# 掩码实现示例
seq_mask = tf.sequence_mask(seq_length, maxlen)  # 项目级
sess_mask = tf.sequence_mask(sess_length, max_sess)  # 会话级

模型构建技巧

  1. 动态维度处理:确保多头注意力维度匹配
    assert att_head_nums * singlehead_emb_size == embedding_dim
    
  2. 层次化特征处理
    • 连续特征直接拼接
    • 离散特征先嵌入再拼接
    • 会话特征走DSIN核心流程

实验与应用

性能优势

DSIN相比基线模型的提升:

  • 点击率预测准确率提升8-15%
  • 特别是在长序列场景下优势明显

实际应用建议

  1. 会话划分阈值需根据业务调整(30分钟非固定)
  2. 多头注意力的头数需要调优
  3. 适合有明显会话特性的场景(如电商浏览)

总结

DSIN通过创新的会话划分和层次化兴趣提取机制,在fun-rec项目中展现了强大的推荐性能。其核心价值在于:

  1. 更符合真实用户行为模式
  2. 细粒度的兴趣提取能力
  3. 可解释的注意力机制

该模型特别适合处理具有明显会话特征的用户行为数据,为推荐系统的兴趣建模提供了新的技术思路。

fun-rec fun-rec 项目地址: https://gitcode.com/gh_mirrors/fu/fun-rec

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓秋薇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值