LLM-Sequential-Recommendation项目核心技术实现解析
项目概述
LLM-Sequential-Recommendation是一个基于大型语言模型(LLM)的序列推荐系统项目,该项目创新性地将传统序列推荐算法与大型语言模型相结合,实现了多种先进的推荐模型架构。本文将深入解析该项目的核心技术实现细节,包括神经网络模型设计、SKNN算法实现、混合模型策略以及超参数搜索方法。
神经网络模型实现
基础架构设计
项目中的BERT4Rec、SASRec和GRU4Rec模型均继承自NeuralModel基类,该基类封装了Keras模型的训练和预测功能。训练过程中采用了创新的"内部验证"机制:
- 从训练会话中抽取10%(最多500个会话)作为验证集
- 使用NDCG@20作为早停指标
- 设置2个epoch的耐心值(patience),在验证指标连续2个epoch未提升时停止训练
- 恢复模型到验证指标最佳的epoch权重
这种设计有效防止了模型过拟合,同时考虑到模型通常在5-15个epoch内收敛,较小的耐心值既保证了效率又不会影响最终性能。
所有神经网络模型都采用了N=20的会话截断长度,确保不同长度的会话可以统一处理。训练过程使用Keras的AdamW优化器。
BERT4Rec实现细节
项目中的BERT4Rec实现主要遵循原始论文设计,但在初始化策略上有所改进:
- 使用GlorotUniform初始化权重(keras默认)
- 偏置项初始化为零
- 相比原始论文的截断正态分布初始化,这种策略获得了更好的性能表现
SASRec实现优化
SASRec实现有以下关键改进:
- 采用BERT4Rec的投影头(projection head)替代原始设计
- 使用分类交叉熵损失函数,省略了原始论文中的负采样
- 支持多头注意力机制(虽然原始论文发现单头效果已足够)
- 在嵌入层后添加了dropout层
这些改进使得模型性能得到提升,同时保持了原始架构的核心思想。
GRU4Rec实现创新
项目对GRU4Rec进行了几项重要改进:
- 采用整会话批处理方式,简化了实现复杂度
- 同样使用BERT4Rec的投影头设计,减少了模型参数量
- 使用分类交叉熵损失函数,未出现原始论文中报告的不稳定问题
- 通过会话截断有效去除了长尾噪声
SKNN算法实现
项目中的SKNN实现支持多种变体和配置:
- 相似度计算:支持点积和余弦相似度
- 采样策略:随机采样或基于时间戳的最近优先采样
- IDF加权:可选是否基于项目IDF分数进行加权
- 变体支持:
- V-SKNN(使用衰减参数)
- SF-SKNN(设置sequential_filter为true)
- S-SKNN(设置sequential_weighting为true)
- 标准SKNN
- 嵌入版本:支持使用项目嵌入表示,需配置:
- 提示会话嵌入组合策略
- 训练会话嵌入组合策略
- 降维配置
- 衰减参数
混合模型策略
嵌入模型集成
LLMSeqSim模型基于四个核心维度构建:
- 源LLM嵌入模型(OpenAI或Google)
- 降维方法
- 降维后的维度数
- 会话嵌入计算方法
项目通过分析不同变体推荐结果的交集发现:
- 不同配置的推荐结果差异显著
- 通过排名或置信度组合可以产生独特的推荐列表
- 这种集成能够捕捉互补的语义信号,提升推荐性能
数据处理策略
项目采用了严格的数据预处理方法:
-
Beauty和Steam数据集:
- 使用5-core方法处理,确保每个会话和项目至少有5次交互
- 采用时间分割策略划分训练测试集
- 过滤测试提示中未出现在训练数据中的项目
-
Delivery Hero数据集:
- 保持原始数据以模拟真实场景
- 仅从测试集中移除单交互会话
时间分割策略最能模拟真实场景,优于文献中常见的随机分割或演化分割方法。
超参数搜索方法
项目采用Tree-Parzen-Estimator(TPE)采样器进行超参数搜索:
-
搜索策略:
- 初始40个随机配置避免偏差
- 后续使用TPE采样器建议
- 连续100次试验未改进则停止
- 最长运行时间72小时
-
验证折叠:
- 将训练数据分为4个时间箱
- 创建3个验证折叠,保持时间顺序
- 使用早剪枝策略(每折后剪除后20%配置)
-
LLMSeqPrompt特殊处理:
- 仅搜索预测参数(temperature和top_p)
- 固定训练参数以减少成本
- 针对GPT和PaLM采用不同温度范围
超参数搜索范围
项目为不同模型设定了详细的超参数搜索范围,主要包含:
-
神经网络共同参数:
- 学习率(0.0001-0.01)
- 权重衰减(0-0.1)
- 批量大小(32-512)
- 嵌入维度(16-512)
- dropout率(0-0.9)
-
模型特定参数:
- BERT4Rec/SASRec:层数(1-4)、头数(1-4)、mask概率(0.05-0.9)
- GRU4Rec:隐藏层维度(16-512)
- 降维方法:PCA、自编码器、LDA、随机投影
-
SKNN相关参数:
- 近邻数(50-500)
- 采样大小(500-2000)
- 衰减策略(无、线性、谐波)
- 相似度度量(点积、余弦)
-
LLMSeqPrompt参数:
- 温度(GPT:0-0.5, PaLM:0.125-0.25)
- 固定top_p=1
技术实现亮点
-
高效的早停机制:基于内部验证集的2-epoch耐心值,平衡了训练效率和模型性能。
-
创新的模型改进:在各原始模型基础上进行针对性优化,如投影头共享、初始化策略调整等。
-
灵活的SKNN实现:单一类支持多种SKNN变体,便于比较和组合。
-
智能的超参数搜索:结合时间分割的验证策略和早剪枝,大幅提升搜索效率。
-
严谨的数据处理:5-core处理和时间分割策略确保了数据质量和真实场景模拟。
通过以上技术实现,LLM-Sequential-Recommendation项目构建了一个强大而灵活的序列推荐系统框架,为相关领域的研究和应用提供了有价值的参考。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00