Reinforcement-learning-with-tensorflow
中文强化学习入门首选教程,用 TensorFlow 从零实现 Q-Learning 到 PPO 的所有核心算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
中文强化学习入门首选教程,用 TensorFlow 从零实现 Q-Learning 到 PPO 的所有核心算法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
项目背景:一位中国程序员的情怀与执念
想象一下:你在网上搜索"强化学习教程",满屏都是英文论文和公式推导,好不容易找到一些中文资料,又发现代码要么跑不通、要么注释全是机器翻译。就在这个时候,一个叫"莫烦"的中国程序员出现了——他用最直白的语言、最干净的代码,把强化学习这个"高深莫测"的概念,拆解成了一个个可以亲手跑通的例子。
MorvanZhou 的这套教程,就是这样一个存在。项目诞生于2017年前后,正值深度强化学习最火热的时期——AlphaGo击败李世石不久,DQN、Policy Gradient 等算法刚被学术界验证,所有人都想学,但门槛极高。"莫烦"看到了这个痛点,决定用 TensorFlow 从零实现每一行代码,用中文讲解每一个细节。
十年过去,这个仓库积累了超过9000颗星,成为中文互联网强化学习入门的事实标准之一。它的价值不仅在于代码本身,更在于"让你从零理解强化学习,而不是从零配置环境"。
一、这是一个什么样的项目?
用一句话概括:面向人类学习者的强化学习算法教学代码库。
与很多"demo 跑起来炫酷但看不懂原理"的仓库不同,这个项目的核心设计哲学是"代码即注释"——每一行核心代码旁边都有详细的中文注释,告诉你这一行在做什么、为什么要这样做。它不是让你直接拿来用的生产级代码库,而是一个理解强化学习算法工作原理的脚手架。
项目覆盖了从最基础的 Q-Learning 到前沿的 PPO 算法,共12个章节:

每一章都有三个标准文件:
maze_env.py:定义环境(迷宫/小车的状态和奖励)RL_brain.py:算法的核心逻辑(策略网络/Q网络/策略更新)run_this.py:训练循环(和环境交互、记录奖励曲线)这种"三件套"结构贯穿整个项目,学会了第一层,就能无师自通地理解后面的章节,因为套路完全一致。
二、技术架构与代码风格
技术栈:Python + TensorFlow 1.x
项目采用 TensorFlow 1.x 编写,使用 Session + placeholder 的老派写法。这在2024年看来略显"复古"——TensorFlow 2.x 已经全面切换 eager execution,PyTorch 也早已成为学术界的默认框架。但对于教学来说,1.x 版本并非坏事:TensorFlow 1.x 的"显式"反而是一种优势。在 Session 中手动管理数据流向,需要你清楚地知道"数据从哪里来、到哪里去"——这恰好是理解强化学习算法的核心。
代码结构:模块化 + 算法对比设计
每个章节都是一个独立的"算法实现 + 环境测试"闭环。作者还巧妙设计了难度递进的环境:
这种环境梯度设计,让同一个算法在不同环境中展现出完全不同的学习曲线,是非常宝贵的对照实验素材。

三、为什么这个项目值得推荐?
1. 中文友好的交互式学习体验
市面上99%的强化学习教程都是英文的,公式推导占据了大量篇幅。"莫烦"教程的核心竞争力是中文 + 代码先行:先让你跑通代码,看到智能体学会任务(比如杆子保持平衡、小车爬上山坡),再回头解释为什么这样做有效。这种"先看到结果、再理解原理"的教学法,完美契合工程思维学习者。
2. 算法实现忠实于原始论文
作者并非"魔改"算法,而是严格按照原始论文的实现细节来写代码。例如 DQN 的 Experience Replay、Target Network 更新间隔,Double DQN 的目标值分离,A3C 的多线程异步更新——每一个细节都和论文描述一致。这让你在学完之后,可以无缝对接论文复现工作。
3. 可视化训练过程
项目配套的博客 mofanpy.com 提供了大量训练曲线图,展示了不同算法在不同环境下的收敛速度、稳定性、最终性能。这些图来自真实训练,非常适合用来理解"算法之间的实际差异"。
四、局限性与争议
1. TensorFlow 1.x 的历史包袱
这是最大的问题。TensorFlow 1.x 代码无法在 TensorFlow 2.x 或 PyTorch 环境中直接运行。如果你今天要入门强化学习,99%的社区资源都已经是 PyTorch 版本。这个项目虽然经典,但代码已经无法无缝接入现代深度学习工作流。作者本人也已创建了 PyTorch 版本,建议配合使用。
2. 无生产部署能力
项目代码是教学用的"最小可运行版本",完全没有考虑生产环境:没有日志系统、没有超参数管理、没有模型保存/加载的最佳实践、没有测试用例。作为算法原型验证可以,但想直接拿来做产品?门都没有。
3. OpenAI Gym 接口已过时
项目使用的 Gym 版本较旧,新版 Gym(v0.26+)的 API 有 breaking change。直接跑可能会遇到环境初始化错误,需要降级 Gym 版本才能复现。
五、行业意义与影响力
这个项目在中文 AI 教育社区的影响力是现象级的:
它的意义不只是"一个代码仓库",而是中国 AI 教育的破冰之作——证明了用中文做技术教育不仅可行,而且可以做得很好。
六、部署指南:如何跑起来?
虽然项目没有 Docker 支持,但部署本身并不复杂:
git clone https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow.git
cd Reinforcement-learning-with-tensorflow/contents
conda create -n rl_tutorial python=3.6
conda activate rl_tutorial
pip install tensorflow==1.15 numpy gym matplotlib
cd 2_Q_Learning_maze
python run_this.py
结语
MorvanZhou 的这套强化学习教程,是一个时代的产物,也是一个被时代验证的经典。它不是最强的强化学习代码库(那应该是 Ray/RLlib 或 Stable-Baselines3),但它是最适合人类学习的强化学习入门路径。
如果你想从零掌握强化学习、想理解每个算法背后的直觉、想看到代码从不会到学会的全过程——这套教程值得你花时间从头到尾学一遍。
唯一需要提醒的是:请同时安装 PyTorch 版本对照学习,因为现实世界的强化学习项目,99%都是 PyTorch 写的。