ChineseChess-AlphaZero

GitHub
1.2k 364 中等 1 次阅读 6天前GPL-3.0开发框架
AI 解读 由 AI 自动生成,仅供参考

ChineseChess-AlphaZero 是一个基于 AlphaZero 算法的中国象棋人工智能项目,旨在通过强化学习训练出高水平的中国象棋 AI。它借鉴了 DeepMind 在围棋、国际象棋和日本将棋领域的研究成果,并结合了开源社区的优秀实现,致力于打造全球最强的中国象棋 AI。

该项目解决了传统中国象棋引擎依赖人工规则和经验的问题,通过自我对弈和深度神经网络训练,使 AI 能够自主学习并提升棋力。它适用于研究人员和开发者,尤其是对强化学习、深度学习以及博弈论感兴趣的人群。项目提供了完整的训练流程和内置图形界面,方便用户进行测试和交互。

其独特之处在于采用了分布式训练架构,支持多人协作训练,同时集成了监督学习和模型评估模块,显著提升了训练效率和模型性能。用户可以通过命令行或图形界面与 AI 对弈,体验高水平的中国象棋 AI 棋力。

使用场景

某高校人工智能实验室正在开发一款用于中国象棋教学与训练的智能系统,旨在为学生提供高质量的对弈练习和策略分析。

没有 ChineseChess-AlphaZero 时

  • 实验室缺乏一个能够自主学习并不断优化的中国象棋AI,导致训练数据不足且模型性能提升缓慢。
  • 现有的中国象棋引擎无法通过强化学习进行自我对弈和策略优化,难以模拟高水平对局。
  • 开发团队需要手动标注大量棋谱数据,耗时费力,且难以覆盖复杂局面。
  • 缺乏分布式训练支持,单机计算资源不足以支撑大规模模型训练。
  • 教学系统中无法提供实时的对弈反馈和策略分析,影响学生的学习效果。

使用 ChineseChess-AlphaZero 后

  • 通过AlphaZero方法实现的自我对弈功能,使AI能够在无监督环境下生成高质量训练数据,显著提升模型性能。
  • 引入强化学习机制后,AI可以自主探索和优化策略,模拟出接近专业棋手水平的对局。
  • 利用分布式训练架构,团队可高效利用多台计算设备,大幅缩短模型训练时间。
  • 内置GUI界面支持人机对弈和可视化分析,为教学系统提供了实时反馈和策略讲解能力。
  • 结合监督学习模块,AI还可利用互联网公开棋谱进一步提升泛化能力和应对复杂局面的能力。

中国象棋教学系统借助ChineseChess-AlphaZero实现了智能化、自动化的训练与分析,极大提升了教学质量和效率。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

需要 NVIDIA GPU,显存 8GB+,CUDA 11.7+

内存

16GB+

依赖
notes建议使用 conda 管理环境,首次运行需下载约 5GB 模型文件,并需手动下载并安装 PingFang.ttc 字体文件。Windows 用户可直接下载可执行文件。
python3.6.3
tensorflow-gpu
Keras
pygame
requirements.txt 中的其他依赖
ChineseChess-AlphaZero hero image

快速开始

中国象棋Zero(CCZero)

App Icon

关于

基于AlphaZero方法的中国象棋强化学习。

本项目主要基于以下资源:

  1. DeepMind于10月19日发表的论文:《无需人类知识即可掌握围棋游戏》(https://www.nature.com/articles/nature24270.epdf?author_access_token=VJXbVjaSHxFoctQQ4p2k4tRgN0jAjWel9jnR3ZoTv0PVW4gB86EEpGqTRDtpIz-2rmo8-KG06gqVobU5NSCFeHILHcVFUeMsbvwS-lxjqQGg98faovwjxeTUgZAUMnRQ)。
  2. @mokemokechicken/@Akababa/@TDteach在他们的仓库中对Reversi/Chess/中国象棋进行的出色开发工作:https://github.com/mokemokechicken/reversi-alpha-zero,https://github.com/Akababa/Chess-Zero,https://github.com/TDteach/AlphaZero_ChineseChess。
  3. 一款带有GUI的中国象棋引擎:https://github.com/mm12432/MyChess

帮助训练

为了构建一个遵循与AlphaZero相同技术路线的强大中国象棋AI,我们需要以分布式项目的形式来进行,因为这需要大量的计算资源。

如果您想加入我们,共同打造世界上最好的中国象棋AI:

elo

环境

  • Python 3.6.3
  • tensorflow-gpu: 1.3.0
  • Keras: 2.0.8

模块

强化学习

该AlphaZero实现由两个工作进程组成:“self”和“opt”。

  • “self”是自我对弈模块,通过使用BestModel进行自我对弈来生成训练数据。
  • “opt”是训练器模块,用于训练模型并生成新模型。

为了加快训练速度,还涉及另外两个工作进程:

  • “sl”是监督学习模块,用于训练从互联网上抓取的数据。
  • “eval”是评估器模块,用于用当前的BestModel评估NextGenerationModel。

内置GUI

要求:pygame

python cchess_alphazero/run.py play

截图

board

您可以选择不同的棋盘/棋子样式和对弈双方,详见与人类对弈

使用方法

设置

安装库

pip install -r requirements.txt

如果您只想使用CPU,请将requirements.txt中的tensorflow-gpu替换为tensorflow

确保Keras使用TensorFlow,并且您已安装Python 3.6.3及以上版本。

配置

PlayDataConfig

  • nb_game_in_file, max_file_num: 训练数据的最大局数为nb_game_in_file * max_file_num

PlayConfig、PlayWithHumanConfig

  • simulation_num_per_move:每步的MCTS模拟次数。
  • c_puct:MCTS中价值网络与策略网络的平衡参数。
  • search_threads:MCTS中速度与精度的平衡参数。
  • dirichlet_alpha:自我对弈中的随机参数。

完整使用

usage: run.py [-h] [--new] [--type TYPE] [--total-step TOTAL_STEP]
              [--ai-move-first] [--cli] [--gpu GPU] [--onegreen] [--skip SKIP]
              [--ucci] [--piece-style {WOOD,POLISH,DELICATE}]
              [--bg-style {CANVAS,DROPS,GREEN,QIANHONG,SHEET,SKELETON,WHITE,WOOD}]
              [--random {none,small,medium,large}] [--distributed] [--elo]
              {self,opt,eval,play,eval,sl,ob}

positional arguments:
  {self,opt,eval,play,eval,sl,ob}
                        what to do

optional arguments:
  -h, --help            show this help message and exit
  --new                 run from new best model
  --type TYPE           use normal setting
  --total-step TOTAL_STEP
                        set TrainerConfig.start_total_steps
  --ai-move-first       set human or AI move first
  --cli                 play with AI with CLI, default with GUI
  --gpu GPU             device list
  --onegreen            train sl work with onegreen data
  --skip SKIP           skip games
  --ucci                play with ucci engine instead of self play
  --piece-style {WOOD,POLISH,DELICATE}
                        choose a style of piece
  --bg-style {CANVAS,DROPS,GREEN,QIANHONG,SHEET,SKELETON,WHITE,WOOD}
                        choose a style of board
  --random {none,small,medium,large}
                        choose a style of randomness
  --distributed         whether upload/download file from remote server
  --elo                 whether to compute elo score

自我对弈

python cchess_alphazero/run.py self

执行后,自我对弈将使用BestModel开始。如果不存在BestModel,则会创建一个新的随机模型并将其设为BestModel。自我对弈记录将存储在data/play_record中,而BestModel则存储在data/model中。

选项

  • --new:创建新的BestModel
  • --type mini:使用迷你配置(参见cchess_alphazero/configs/mini.py
  • --gpu '1':指定使用哪块GPU
  • --ucci:是否使用ucci引擎进行对弈(而非自我对弈,参见cchess_alphazero/worker/play_with_ucci_engine.py
  • --distributed:以分布式模式运行自我对弈,即把对弈数据上传到远程服务器,并从中下载最新模型

注1:为帮助训练,建议运行python cchess_alphazero/run.py --type distribute --distributed self(且不要修改configs/distribute.py配置文件),更多信息请参见wiki

注2:如需在GUI中查看自我对弈记录,参见wiki

训练器

python cchess_alphazero/run.py opt

执行后,训练将开始。系统会加载当前的BestModel。每完成一个epoch,训练好的模型将被保存为新的BestModel。

选项

  • --type mini:使用迷你配置(参见cchess_alphazero/configs/mini.py
  • --total-step TOTAL_STEP:指定总步数(迷你批次数量)。总步数会影响训练的学习率。
  • --gpu '1':指定使用哪块GPU

在Tensorboard中查看训练日志

tensorboard --logdir logs/

然后访问http://<机器IP>:6006/

与人类对弈

使用内置GUI进行对弈

python cchess_alphazero/run.py play

执行该命令后,将加载BestModel与人类对弈。

选项:

  • --ai-move-first:若设置此选项,则由AI先行;否则由人类先行。
  • --type mini:使用mini配置(参见cchess_alphazero/configs/mini.py)。
  • --gpu '1':指定使用的GPU。
  • --piece-style WOOD:选择棋子样式,默认为WOOD
  • --bg-style CANVAS:选择棋盘样式,默认为CANVAS
  • --cli:若设置此标志,则在CLI环境中与AI对弈,而非GUI界面。

注意:在开始之前,您需要下载或找到一个字体文件(.ttc),并将其重命名为PingFang.ttc,然后放入cchess_alphazero/play_games目录。由于该字体文件过大,我已将其从本仓库中移除,但您可以从这里下载。

您也可以直接从这里下载Windows可执行文件。更多信息请参阅维基

UCI模式

python cchess_alphazero/uci.py

如果您希望在诸如“冰河五四”等通用GUI中对弈,可以从这里下载Windows可执行文件。更多信息请参阅维基

评估器

python cchess_alphazero/run.py eval

执行该命令后,将使用当前的BestModel对NextGenerationModel进行评估。如果NextGenerationModel尚不存在,工作进程将等待其生成,并每5分钟检查一次。

选项:

  • --type mini:使用mini配置(参见cchess_alphazero/configs/mini.py)。
  • --gpu '1':指定使用的GPU。

监督学习

python cchess_alphazero/run.py sl

执行该命令后,训练将开始。系统将加载当前的SLBestModel。每完成一个epoch,训练好的模型将被保存为新的SLBestModel。

关于数据

我有两个数据来源:一是从https://wx.jcloud.com/market/packet/10479下载的数据;二是从http://game.onegreen.net/chess/Index.html爬取的数据(需使用`--onegreen`选项)。

选项:

  • --type mini:使用mini配置(参见cchess_alphazero/configs/mini.py)。
  • --gpu '1':指定使用的GPU。
  • --onegreen:若设置此标志,则sl_onegreen工作进程将开始训练从game.onegreen.net爬取的数据。
  • --skip SKIP:若设置此标志,则索引小于SKIP的游戏将不会用于训练(仅在onegreen标志启用时有效)。

版本历史

v2.42019/08/16

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架