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项目构建了一个强大而灵活的序列推荐系统框架,为相关领域的研究和应用提供了有价值的参考。
- DDeepSeek-V3.1-BaseDeepSeek-V3.1 是一款支持思考模式与非思考模式的混合模型Python00
- QQwen-Image-Edit基于200亿参数Qwen-Image构建,Qwen-Image-Edit实现精准文本渲染与图像编辑,融合语义与外观控制能力Jinja00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~054CommonUtilLibrary
快速开发工具类收集,史上最全的开发工具类,欢迎Follow、Fork、StarJava04GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。07GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!C0377- WWan2.2-S2V-14B【Wan2.2 全新发布|更强画质,更快生成】新一代视频生成模型 Wan2.2,创新采用MoE架构,实现电影级美学与复杂运动控制,支持720P高清文本/图像生成视频,消费级显卡即可流畅运行,性能达业界领先水平Python00
- GGLM-4.5-AirGLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求Jinja00
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手HTML013
热门内容推荐
最新内容推荐
项目优选









