RecNN
RecNN 是一个基于 PyTorch 1.7 构建的强化学习推荐系统工具包,专注于解决个性化新闻推荐中的在线离策略(online off-policy)学习难题。它创新性地引入了动态生成的物品嵌入技术,旨在为研究人员和开发者提供一个灵活、高效的实验平台,用于探索和实现前沿的强化学习推荐算法。
该工具特别适合那些希望将强化学习应用于推荐场景的算法工程师与科研人员。RecNN 提供了极高的抽象自由度:用户既可以直接调用封装好的完整算法(如 DDPG、TD3、SAC 等)进行快速训练,也可以拆解网络结构与学习函数,自定义数据加载器以适配特定任务。其核心亮点包括支持序列化环境建模(兼容 ML20M 等数据集)、提供多种状态表示方法(如 LSTM、GRU),以及利用 Modin 实现并行数据加载与缓存,显著提升了数据处理效率。此外,项目代码风格纯净,示例文件去除了冗余逻辑,并配有详细的技术文章指导,帮助用户轻松上手从基础概念到高级修正策略的各类应用。
使用场景
某新闻平台算法团队正致力于将传统的静态推荐系统升级为能实时响应用户点击行为的强化学习模型,以解决用户兴趣快速漂移的问题。
没有 RecNN 时
- 开发人员需从零搭建复杂的强化学习推荐架构,手动处理动态生成的物品嵌入(Item Embeddings),代码冗余且极易出错。
- 面对在线离策略(Off-policy)学习难题,缺乏现成的校正算法(如 Top-K Correction),导致模型在利用历史数据训练时偏差严重,推荐准确率难以提升。
- 序列状态表示(State Representation)需要自行编写 LSTM 或 GRU 模块来捕捉用户阅读历史,调试周期长且难以复用。
- 数据加载效率低下,缺乏并行处理机制,无法高效支撑 ML20M 级别的大规模序列数据训练。
- 算法实现与业务逻辑耦合紧密,若想切换 DDPG 或 TD3 等不同算法,往往需要重构大量底层代码。
使用 RecNN 后
- 直接调用 RecNN 内置的 SOTA 算法(如 TD3、SAC),库自动处理动态嵌入生成,纯模型定义让核心逻辑清晰可见,开发效率提升数倍。
- 内置先进的离策略校正机制,有效利用历史交互数据进行安全训练,显著降低了探索成本并提升了新闻推荐的即时相关性。
- 灵活的状态表示模块支持一键切换 LSTM/RNN/GRU,轻松适配不同长度的用户行为序列,快速捕捉兴趣变化。
- 集成 Modin 并行数据加载与缓存技术,大幅加速大规模序列数据的预处理过程,完美适配 PyTorch 1.7 环境。
- 提供高度抽象的接口,既可一键运行完整算法,也能拆解网络与学习函数进行自定义组合,轻松在不同强化学习策略间自由切换。
RecNN 通过封装复杂的强化学习细节并提供灵活的抽象层级,让新闻推荐系统从“静态匹配”进化为“动态决策”,大幅降低了前沿算法的落地门槛。
运行环境要求
- 未说明
未说明 (项目基于 PyTorch,支持 GPU 加速,但 README 未指定具体型号或显存要求)
未说明

快速开始
这是我的学校项目。它专注于使用强化学习进行个性化新闻推荐。其主要特点在于尝试解决在线离策略学习问题,并采用动态生成的物品嵌入。我希望创建一个包含强化学习推荐领域最先进算法的库,提供您所需的抽象层次。
📊 功能概述
按需抽象:您可以导入整个算法(如DDPG),直接调用ddpg.learn(batch);也可以分别导入网络和学习函数,为您的任务创建自定义加载器,或者完全自行定义所有内容。
示例中不包含任何冗余代码或变通方法:纯模型定义与算法本身都集中在单个文件中。我还撰写了几篇文章来解释其工作原理。
学习框架围绕序列或帧环境构建,支持ML20M等数据集。Seq和Frame决定了序列数据的长度类型,seq是完全动态长度的序列数据(开发中),而frame则是静态帧。
状态表示模块提供多种方法。对于序列状态表示,可以使用LSTM/RNN/GRU(开发中)。
使用Modin(Dask / Ray)实现并行数据加载及缓存。
支持PyTorch 1.7,并可进行TensorBoard可视化。
未来还将添加新的数据集。
📚 Medium文章
该仓库分为两部分:库(./recnn)和示例区(./examples),后者用于说明如何使用某些功能。
- 如果您熟悉推荐系统但对强化学习了解不多,以下内容几乎涵盖了入门所需的一切:
- REINFORCE推荐系统中的Top-K离策略修正:
已加入/将加入的算法
| 算法 | 论文 | 代码 |
|---|---|---|
| 深度Q学习(概念验证) | https://arxiv.org/abs/1312.5602 | examples/0. Embeddings/ 1.DQN |
| 深度确定性策略梯度 | https://arxiv.org/abs/1509.02971 | examples/1.Vanilla RL/DDPG |
| 双延迟DDPG(TD3) | https://arxiv.org/abs/1802.09477 | examples/1.Vanilla RL/TD3 |
| 软演员-评论家算法 | https://arxiv.org/abs/1801.01290 | examples/1.Vanilla RL/SAC |
| 批量约束Q学习 | https://arxiv.org/abs/1812.02900 | examples/99.To be released/BCQ |
| REINFORCE Top-K离策略修正 | https://arxiv.org/abs/1812.02353 | examples/2. REINFORCE TopK |
我参考过的仓库
- Sfujim的BCQ(尚未实现)
- Higgsfield的RL Adventure 2(极大启发)
🤔 这是什么
这是我的学校项目。它专注于使用强化学习进行个性化新闻推荐。其主要特点在于尝试解决在线离策略学习问题,并采用动态生成的物品嵌入。此外,由于我们使用的是数据集,因此不存在探索机制。在示例部分,我利用Google的BERT模型处理ML20M数据集,从电影描述中提取上下文信息,形成潜在向量表示。之后,您可以对新出现的、从未见过的物品应用相同的转换(因此嵌入是动态生成的)。如果您不想费心处理嵌入流程,我还提供了一个作为概念验证的DQN嵌入生成器。
✋ 入门指南
欲了解更多关于recnn的信息,请阅读文档: recnn.readthedocs.io
⚙️ 安装
pip install git+git://github.com/awarebayes/RecNN.git
PyPi版本正在筹备中……
🚀 尝试演示
我搭建了一个Streamlit演示,以展示其功能。其中有一个“给我推荐一部电影”的功能!请注意,当您评分电影时,得分会如何变化。刚开始时,电影未被评分(默认评分为5/10),得分约为~40(欧氏距离),但随着您不断评分,得分会降至10以下,这表明预测更加个性化和精准。您还可以测试多样性、查看推荐的相关性、成对距离以及预测的准确性。
运行方式如下:
git clone git@github.com:awarebayes/RecNN.git
cd RecNN && streamlit run examples/streamlit_demo.py
📁 下载资源
📁 下载模型
📄 引用
如果您在学术出版物中使用了 RecNN,请使用以下 BibTeX 格式进行引用:
@misc{RecNN,
author = {M Scherbina},
title = {RecNN: 使用 PyTorch 的强化学习推荐},
year = {2019},
publisher = {GitHub},
journal = {GitHub 仓库},
howpublished = {\url{https://github.com/awarebayes/RecNN}},
}
版本历史
0.22019/12/090.12019/10/280.0.12019/08/30常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

