来自本科生的暴击:清华开源「天授」强化学习平台,纯PyTorch实现

本文机器之心编译
是否你也有这样的感觉 , 成熟 ML 工具的源码很难懂 , 各种继承与处理关系需要花很多时间一点点理清 。在清华大学开源的「天授」项目中 , 它以极简的代码实现了很多极速的强化学习算法 。重点是 , 天授框架的源码很容易懂 , 不会有太复杂的逻辑关系 。
项目地址:
天授()是纯 基于代码的强化学习框架 , 与目前现有基于的强化学习库不同 , 天授的类继承并不复杂 , API 也不是很繁琐 。最重要的是 , 天授的训练速度非常快 , 我们试用的 API 就能快速构建与训练 RL 智能体 。
目前天授支持的 RL 算法有如下几种:
另外 , 对于以上代码天授还支持并行收集样本 , 并且所有算法均统一改写为基于 - 的形式 。
速度与轻量:「天授」的灵魂
天授旨在提供一个高速、轻量化的 RL 开源平台 。下图为天授与各大知名 RL 开源平台在与环境下的速度对比 。所有代码均在配置为 i7-8750H +的同一台笔记本电脑上进行测试 。值得注意的是 , 天授实现的 VPG()算法在 -v0 任务中 , 训练用时仅为 3 秒 。

来自本科生的暴击:清华开源「天授」强化学习平台,纯PyTorch实现

文章插图
以上测试使用了 10 个不同的 seed 。和任务中的累积奖赏阈值分别设置为 195.0 与-250.0 。可能会有读者感觉这两个任务比较简单 , 不太能突出框架的优势 。该项目也表示 , 在这几天内 , 他们会更新天授在 Atari Pong /任务上的性能 。
天授 , 只需 1500 行代码
非常令人惊讶的是 , 天授平台整体代码量不到 1500 行 , 其实现的 RL 算法大多数都少于百行代码 。单从数量上来说 , 这样的代码量已经非常精简了 , 各种类与函数之间的关系应该也容易把握住 。
项目表示 , 天授虽然代码量少 , 但可读性并不会有损失 。我们可以快速浏览整个框架 , 并理解运行的流程与策略到底是什么样的 。该项目提供了很多灵活的 API , 例如可以便捷地使用如下代码令策略与环境交互 n 步:
result = collector.collect(n_step=n)
或者 , 如果你想通过采样的批量数据训练给定的策略 , 可以这样写:
result = policy.learn(collector.sample(batch_size))
正是通过大量精简的 API 构造 RL 模型 , 天授才能保持在 1500 行代码内 。例如我们可以看看 DQN 的模型代码 , 它是非常流行的一种强化学习模型 , 在天授内部 , DQN 模型真的只用了 99 行代码就完成了 。当然 , 这 99 行代码是不包含其它公用代码块的 。
来自本科生的暴击:清华开源「天授」强化学习平台,纯PyTorch实现

文章插图
如下为 DQN 的主要代码结构 , 我们省略了部分具体代码 , 各个 RL 策略都会继承基本类的结构 , 然后重写就够了 。可以发现 , 在常规地定义好模型后 , 传入这个类就能创建策略 。DQN 策略的各种操作都会写在一起 , 后续配置后就能直接训练 。
来自本科生的暴击:清华开源「天授」强化学习平台,纯PyTorch实现

文章插图
项目作者把所有策略算法都模块化为 4 部分:
实际体验
天授很容易安装 , 直接运行「pip」就可以 。下面我们将该项目克隆到本地 , 实际测试一下 。