DouZero

为斗地主设计的强化学习框架
授权协议 Apache
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 国产
投 递 者 巫马化
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DouZero 是为斗地主设计的强化学习框架(斗地主 AI),从零开始通过自我博弈强化学习来学打斗地主。斗地主十分具有挑战性。它包含合作、竞争、非完全信息、庞大的状态空间。斗地主也有非常大的动作空间,并且每一步合法的牌型会非常不一样。DouZero由快手AI平台部开发。

安装

训练部分的代码是基于GPU设计的,因此如果想要训练模型,您需要先安装CUDA。安装步骤可以参考官网教程。对于评估部分,CUDA是可选项,您可以使用CPU进行评估。

首先,克隆本仓库(如果您访问Github较慢,国内用户可以使用Gitee镜像):

git clone https://github.com/kwai/DouZero.git

确保您已经安装好Python 3.6及以上版本,然后安装依赖:

cd douzero
pip3 install -r requirements.txt

我们推荐通过以下命令安装稳定版本的Douzero:

pip3 install douzero

如果您访问较慢,国内用户可以通过清华镜像源安装:

pip3 install douzero -i https://pypi.tuna.tsinghua.edu.cn/simple

或是安装最新版本(可能不稳定):

pip3 install -e .

注意,Windows用户只能用CPU来模拟。关于为什么GPU会出问题,详见Windows下的问题。但Windows用户仍可以在本地运行演示

训练

假定您至少拥有一块可用的GPU,运行

python3 train.py

这会使用一块GPU训练DouZero。如果需要用多个GPU训练Douzero,使用以下参数:

  • --gpu_devices: 用作训练的GPU设备名
  • --num_actor_devices: 被用来进行模拟(如自我对弈)的GPU数量
  • --num_actors: 每个设备的演员进程数
  • --training_device: 用来进行模型训练的设备

例如,如果我们拥有4块GPU,我们想用前3个GPU进行模拟,每个GPU拥有15个演员,而使用第四个GPU进行训练,我们可以运行以下命令:

python3 train.py --gpu_devices 0,1,2,3 --num_actor_devices 3 --num_actors 15 --training_device 3

如果用CPU进行训练和模拟(Windows用户只能用CPU进行模拟),用以下参数:

  • --training_device cpu: 用CPU来训练
  • --actor_device_cpu: 用CPU来模拟

例如,用以下命令完全在CPU上运行:

python3 train.py --actor_device_cpu --training_device cpu

以下命令仅仅用CPU来跑模拟:

python3 train.py --actor_device_cpu

其他定制化的训练配置可以参考以下可选项:

--xpid XPID           实验id(默认值:douzero)
--save_interval SAVE_INTERVAL
                      保存模型的时间间隔(以分钟为单位)
--objective {adp,wp}  使用ADP或者WP作为奖励(默认值:ADP)
--actor_device_cpu    用CPU进行模拟
--gpu_devices GPU_DEVICES
                      用作训练的GPU设备名
--num_actor_devices NUM_ACTOR_DEVICES
                      被用来进行模拟(如自我对弈)的GPU数量
--num_actors NUM_ACTORS
                      每个设备的演员进程数
--training_device TRAINING_DEVICE
                      用来进行模型训练的设备。`cpu`表示用CPU训练
--load_model          读取已有的模型
--disable_checkpoint  禁用保存检查点
--savedir SAVEDIR     实验数据存储跟路径
--total_frames TOTAL_FRAMES
                      Total environment frames to train for
--exp_epsilon EXP_EPSILON
                      探索概率
--batch_size BATCH_SIZE
                      训练批尺寸
--unroll_length UNROLL_LENGTH
                      展开长度(时间维度)
--num_buffers NUM_BUFFERS
                      共享内存缓冲区的数量
--num_threads NUM_THREADS
                      学习者线程数
--max_grad_norm MAX_GRAD_NORM
                      最大梯度范数
--learning_rate LEARNING_RATE
                      学习率
--alpha ALPHA         RMSProp平滑常数
--momentum MOMENTUM   RMSProp momentum
--epsilon EPSILON     RMSProp epsilon
 相关资料
  • 主要内容 课程列表 基础知识 专项课程学习 参考书籍 论文专区 课程列表 课程 机构 参考书 Notes等其他资料 MDP和RL介绍8 9 10 11 Berkeley 暂无 链接 MDP简介 暂无 Shaping and policy search in Reinforcement learning 链接 强化学习 UCL An Introduction to Reinforcement Lea

  • 强化学习(Reinforcement Learning)的输入数据作为对模型的反馈,强调如何基于环境而行动,以取得最大化的预期利益。与监督式学习之间的区别在于,它并不需要出现正确的输入/输出对,也不需要精确校正次优化的行为。强化学习更加专注于在线规划,需要在探索(在未知的领域)和遵从(现有知识)之间找到平衡。 Deep Q Learning.

  • 探索和利用。马尔科夫决策过程。Q 学习,策略学习和深度强化学习。 我刚刚吃了一些巧克力来完成最后这部分。 在监督学习中,训练数据带有来自神一般的“监督者”的答案。如果生活可以这样,该多好! 在强化学习(RL)中,没有这种答案,但是你的强化学习智能体仍然可以决定如何执行它的任务。在缺少现有训练数据的情况下,智能体从经验中学习。在它尝试任务的时候,它通过尝试和错误收集训练样本(这个动作非常好,或者非常

  • 强化学习(RL)如今是机器学习的一大令人激动的领域,也是最老的领域之一。自从 1950 年被发明出来后,它被用于一些有趣的应用,尤其是在游戏(例如 TD-Gammon,一个西洋双陆棋程序)和机器控制领域,但是从未弄出什么大新闻。直到 2013 年一个革命性的发展:来自英国的研究者发起了 Deepmind 项目,这个项目可以学习去玩任何从头开始的 Atari 游戏,在多数游戏中,比人类玩的还好,它仅

  • 强化学习(RL)如今是机器学习的一大令人激动的领域,当然之前也是。自从 1950 年被发明出来后,它在这些年产生了一些有趣的应用,尤其是在游戏(例如 TD-Gammon,一个西洋双陆棋程序)和及其控制领域,但是从未弄出什么大新闻。直到 2013 年一个革命性的发展:来自英国的研究者发起了一项 Deepmind 项目,这个项目可以学习去玩任何从头开始的 Atari 游戏,甚至多数比人类玩的还要好,它

  • 在本章中,您将详细了解使用Python在AI中强化学习的概念。 强化学习的基础知识 这种类型的学习用于基于评论者信息来加强或加强网络。 也就是说,在强化学习下训练的网络从环境中接收一些反馈。 然而,反馈是有评价性的,而不是像监督学习那样具有指导性。 基于该反馈,网络执行权重的调整以在将来获得更好的批评信息。 这种学习过程类似于监督学习,但我们的信息可能非常少。 下图给出了强化学习的方框图 - 构建

  • 我正在制作一个程序,通过强化学习和基于后状态的时间差分学习方法(TD(λ)),教两名玩家玩一个简单的棋盘游戏。学习是通过训练神经网络来实现的。我使用萨顿的非线性TD/Backprop神经网络)我很想听听你对我以下困境的看法。在两个对手之间进行回合的基本算法/伪代码如下 每个玩家应在何时调用其学习方法玩家。学习(GAME\u状态)。这是难题。 选项A.在每个玩家移动后,在新的后状态出现后,如下所示:

  • 译者:平淡的天 作者: Adam Paszke 本教程将展示如何使用 PyTorch 在OpenAI Gym的任务集上训练一个深度Q学习 (DQN) 智能点。 任务 智能点需要决定两种动作:向左或向右来使其上的杆保持直立。你可以在 Gym website 找到一个有各种算法和可视化的官方排行榜。 当智能点观察环境的当前状态并选择动作时,环境将转换为新状态,并返回指示动作结果的奖励。在这项任务中,每