跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

MiniOneRec 论文解读:生成式推荐框架与代码分析

MiniOneRec 是一个开源生成式推荐框架,涵盖 SID 构建(RQVAE)、SFT 及 RL(GRPO)流程。文章分析了其代码实现,包括数据集构建、SID 索引扩展、新 Token Embedding 训练策略及强化学习奖励机制。实验表明模型 Scaling 有效,SID 与文本对齐重要,Beam Search 采样优于 TopK,NDCG 奖励设计优于简单 01 奖励。框架支持 Qwen 系列模型,适用于序列推荐场景。

清心发布于 2026/4/6更新于 2026/9/1077 浏览

MiniOneRec 论文解读:生成式推荐框架与代码分析

概述

MiniOneRec 是一个开源的生成式推荐框架,支持从 0.5B 到 7B 的模型扩展。核心流程包括 SID 构建(RQVAE)、SFT(0.5b~7b)以及 RL(受限解码 + 混合奖励)。实验表明模型规模越大效果越好,且将 SID 与文本对齐至关重要。

代码结构

主要入口文件位于 MiniOneRec/sft.py 和 MiniOneRec/rl.py。

SFT 原理

数据集
  • SidSFTDataset: 输入用户最近交互 item 列表,预测下一个交互 item。
  • SidItemFeatDataset: 执行 sid2title 或 title2sid 任务。
  • FusionSeqRecDataset: 带意图识别的商品推荐。
训练细节
  1. 传入主干 LLM 即 base_model。
  2. SID token 被映射到普通 tokens 中,而非 special tokens。
  3. 可选择冻结 LLM 自带参数,仅训练新传入的 SID token embedding。
  4. 处理上述三种类型数据集并进行训练。

SID 索引扩展

SID 索引示例存储在 JSON 文件中,格式为 {index: [token_list]}。函数 get_new_tokens 返回 SID 的子 token 集合。注意代码逻辑可能读取所有实体的 SID token 集合,而非码本的实际利用集合,部分未见过的实体可能被分配至未使用的 SID 索引 token。

新 Token Embedding 训练策略

通过冻结所有参数并设置 embedding 层权重梯度,配合 hook 控制保留特定 token 的梯度。

print("Freezing LLM parameters, only training new token embeddings")
for param in model.parameters(): 
    param.requires_grad = False
if sid_index_path and os.path.exists(sid_index_path) and new_tokens: 
    embedding_layer = model.get_input_embeddings()
    if embedding_layer.weight.shape[0] > original_vocab_size: 
        embedding_layer.weight.requires_grad = True
def mask_grad(grad):
    grad[:original_vocab_size].zero_()
    return grad
embedding_layer.weight.register_hook(mask_grad)
print(f"Unfrozen {len(new_tokens)} new token embeddings (indices {original_vocab_size} to {len(tokenizer)-1})")

注意不能直接对张量切片设置 requires_grad 属性。

RL 优化

数据集

  • SidDataset: 输入历史交互 item SID 序列,预测下一个 item SID。
  • RLTitle2SidDataset: title2sid 和 description2sid 任务,返回 prompt-completion pairs。
  • RLSeqTitle2SidDataset: 输入用户交互序列(带 title)预测下一个 item SID。

奖励模型

使用 SASRec 作为奖励模型基础。

建模框架

  1. Tokenizer: 使用 RQVAE。
  2. LLM-text 对齐: 利用 LLM 的世界知识。
  3. SFT next token prediction: 序列推荐任务。
  4. RL (GRPO): 强化学习优化。

任务定义

序列推荐任务。先分词:用户 u 的历史交互商品序列 Hu 通过 RQVAE 编码为 3 层 SID。后训练 LLM πθ,读取历史序列预测下一个商品。推理时使用 k beams search。

Item Tokenization

标准 RQVAE。为避免码本坍缩,使用第一个训练 batch 的 k-means 中心作为 codebook 初始化。代码中包含 Sinkhorn-Knopp algorithm 以缓解码本坍缩。

LLM 对齐

对齐 LLM 世界知识和 SID 信号。

  • 任务一:序列推荐任务。
  • 任务二:对齐 SID 和文本描述任务。 后续更新包含 GPR-inspired SFT with Value-Aware Fine-Tuning (VAFT),基于模拟物品价值加权损失,但尚未有实验结果验证效果。

可验证奖励强化学习 (RLVR)

  1. 混合动态采样: SID 空间小,容易采样重复 SID。最终采用 beam search 方法。
  2. 稀疏排序信号: 使用 NDCG 作为奖励,如果是正确商品分数再加 1。

训练配置

  • 商品描述: Qwen3-Embedding-4B 编码。
  • 分词器: RQVAE,单卡训练,batchsize=20480,lr=1e-3,epochs=10000。
  • SFT: AdamW,Qwen2.5-Instruct。8 卡训练,单卡 batchsize=128, 10 epochs+early stop(patience=1),lr=3e-4,cosine decay。
  • RL: GRPO,2epoch,KL 权重β不变=0.1,lr=1e-5,batchsize=512。
  • 推理: beam search width=16。

评估指标

亚马逊数据集 Office+Industrial,使用 hitrate+NDCG 作为指标。

  1. Scaling: 训练 + 评估损失随模型增大而减小。
  2. Baseline 对比: LLM 系列和非 LLM 系列对比证明世界知识重要性;Ours 和 LLM 系列对比证明 RL 的重要性。

迁移性

SID pattern discovery 实验:在 Industrial 上训练在 Office 上评估。证明 RL 的有效性。未做 SFT 是因为 SFT 容易领域过拟合影响迁移。

消融实验

  • Language-SID 重要性:
    1. 不做 Language-SID 对齐。
    2. 做 Language-SID 对齐,但不 SFT 推荐任务,只在 RL 上做推荐任务。
    3. SFT 只做推荐任务,RL 做 Language-SID 对齐。
  • 采样策略:
    1. 直接 topk。
    2. 采 1.5 倍 budget+ 筛选。
    3. Beamsearch(效果最好)。
  • 奖励设计:
    1. 01 奖励。
    2. SASRec 模型 logits(效果差,存在 reward hacking)。
    3. NDCG。
  • 预训练: 预训练效果更好。

目录

  1. MiniOneRec 论文解读:生成式推荐框架与代码分析
  2. 概述
  3. 代码结构
  4. SFT 原理
  5. 数据集
  6. 训练细节
  7. SID 索引扩展
  8. 新 Token Embedding 训练策略
  9. RL 优化
  10. 数据集
  11. 奖励模型
  12. 建模框架
  13. 任务定义
  14. Item Tokenization
  15. LLM 对齐
  16. 可验证奖励强化学习 (RLVR)
  17. 训练配置
  18. 评估指标
  19. 迁移性
  20. 消融实验

更多推荐文章

查看全部
  • AMD 显卡部署 llama.cpp 兼容性解决方案与部署指南
  • 大模型 LLM 合成训练样本的数据分布问题
  • 基于 Python 解析 HAR 文件生成页面性能测试报告
  • Qwen3.5 大模型单 GPU 高效部署与股票筛选应用
  • F12 网络调试实战:前后端交互原理与 Flask 路由定位
  • 8 个技术要点,帮助企业更好落地大模型知识库
  • Java 反射机制详解:从原理到实践
  • Java 数据类型、运算符与方法核心总结
  • C++ chrono 库详解:steady_clock 与 duration 原理及实战
  • 前缀和算法原理与实战
  • 前端渲染 Markdown 格式:从基础到实战
  • 开源低代码平台 Microi 吾码技术架构与部署指南
  • IROS 2025 精选论文:从通用机器人到真实世界部署
  • 鸿蒙APP开发:页面路由与组件跳转详解
  • 2026年3月18日人工智能早间新闻
  • 企业级 AI 视频管理平台开源:集成算法商城与集群管理
  • PyCharm 与 GitHub Copilot 配置指南:学生认证流程详解
  • GitHub Copilot 深度调教与 7 个上下文工程技巧
  • Web 基础技术详解
  • FPGA 实现基础 DDS:连续可调的频率、幅度

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online