Project Icon

kanachan

挑战顶级日本麻将AI的开源项目

kanachan是一个开源的日本立直麻将AI项目,旨在开发能够挑战现有顶级麻将AI和职业选手的智能体。项目利用雀魂的大规模对局数据,采用端到端学习方法,无需人工特征工程。通过课程式微调策略,kanachan逐步提升AI能力。该项目展示了个人开发者在麻将AI领域的潜力,有望推动麻将AI技术的进步。

"是时候让我加入了。" - 池田花菜

kanachan

一个支持雀魂(CN、JP、EN)标准游戏中采用的四人日本立直麻将变体规则的麻将AI。

公告

  • [2023/05/06] 对代码库进行了重大添加和更改

简要指南

本仓库提供了雀魂游戏记录的标注工具,以及训练某些类型麻将AI模型的程序。但本仓库不提供任何雀魂游戏记录的爬虫、训练数据或已训练的模型。因此,用户需要自行准备训练数据和计算资源。

用户使用本仓库的第一步是收集雀魂的游戏记录。游戏记录的格式必须与点击"https://game.mahjongsoul.com/?paipu=YYMMDD-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"格式的URL时,从雀魂API服务器返回的WebSocket响应消息相同。可以通过使用mitmproxy或Wireshark等网络嗅探工具、浏览器扩展或其他工具捕获与雀魂API服务器交换的WebSocket消息来获取此格式的数据。再次强调,本仓库不包含此类工具。因此,请在GitHub等代码托管服务上寻找,或自行实现。

收集游戏记录后,下一步是使用annotate将游戏记录转换为适合学习的注释格式。

最后,通过以注释为输入运行kanachan Python模块下的训练程序,可以获得训练好的模型。

项目目标

本项目的目标是创建一个四人日本立直麻将变体规则的麻将AI,能够击败现有的顶级麻将AI(包括NAGA和Suphx)甚至顶级职业选手。

这是我个人的项目,与当今一些由公司运营的顶级麻将AI项目形成对比。本项目还旨在向世界展示,个人项目也能构建顶级麻将AI。

目前,日本将棋AI已被认为远远超过顶级人类专业选手的水平。我认为,日本将棋领域出现这种情况的推动力是个人项目中各种将棋AI之间的激烈竞争。我希望本项目能成为在麻将AI领域引发类似情况的先驱。

本项目的主要特点

来自雀魂的超大数据集

本项目假设使用从雀魂爬取的牌谱数据集。这将成为一个极其庞大的数据集,在数量和生成速度上都与现有代表性数据集(即天凤的凤凰卓数据)有数量级的差异。

让我给你一些具体数字。从天凤的凤凰卓可以获得2009年到2019年11年间产生的1700万局牌谱。另一方面,我从2020年7月开始爬取雀魂的牌谱,截至2021年8月底,金间或更高级别房间的四人麻将牌谱数量已达到约6500万局。这个数字到2021年底肯定会超过1亿局。

数据量的巨大差异将允许我们使用比现有麻将AI大几个数量级和/或表达能力更强的模型。例如,虽然NAGA和Suphx使用天凤数据集训练了ResNet,但本项目旨在利用海量数据来训练基于更具表达能力框架(如transformer)的大规模模型。

无人工特征

本项目中模型的输入(即特征)几乎没有基于人类麻将经验和直觉的处理。所有牌都表示为简单的标记,这些标记是对应嵌入的索引。表示一筒的标记与数字"1"没有直接关联,也不表示它是筒子牌之一。表示手牌中一筒的标记与表示河中一筒的标记没有直接关系。没有直接表示宝牌指示牌和宝牌关系的特征。没有表示某种牌对玩家可见数量的特征。虽然在雀魂标准规则中共有90种吃的组合,但每种吃只由90个完全独立的标记之一表示...等等。

游戏中某一时刻的情况表示非常简单。与游戏进行顺序无关的游戏情况方面,如场风、局数、宝牌、手牌等,表示为上述标记的集合。每个玩家的打牌和副露按照发生顺序表示为上述标记的序列。点数、立直棒数等具有数值意义的特征则用数字本身表示。

更具体地说,请参见"行为克隆的训练数据格式"。

一些读者可能会严重怀疑这种特征设计是否真的能进行适当的学习。不用担心。即使在学习的非常早期阶段,使用上述特征设计训练的模型的行为已经表明它已经掌握了麻将的基本概念。它似乎已经掌握了包括宝牌、赤牌、箭牌、圈风牌、门风牌、断幺九、为断幺九、三色同顺、一气通贯、混全带幺九和对对和等役而鸣牌、混一色和清一色的价值、形式听牌、弃和、现物(立直后打出的牌对该立直绝对安全的概念)、筋(例如,如果立直后打出5s,则2s和8s对该立直相对安全的概念)、流局满贯等概念。

然而,不言而喻,这种端到端的特征设计需要大型数据集和具有高表达能力的模型才能正常运作。在机器学习中,是利用人类智慧设计适当的特征,还是准备大型数据集和具有高表达能力的模型并将其留给大规模计算资源,这是一个基本的权衡。本项目选择后者,因为深度学习成功的本质在于摆脱特征工程,而且我从2000年代初就开始从事机器学习,并在那些日子里为特征工程而挣扎。

逐步课程微调

麻将AI有各种目标,包括模仿人类行为、最大化单局分数差、提高最终排名以及最大化段位分差。这些目标按顺序变得越来越抽象和全面,因此越往后学习就越困难。

本项目的理念是逐步学习从动作选择到这些目标的映射,从最简单到最难。这相当于课程学习。此外,当学习了一个目标的映射后,开始学习更难的目标时,前一步训练的模型的编码器部分会在后一个映射的训练中被重用,只有模型的解码器部分会被替换以适应新的更难目标。前一步学到的信息存储在编码器部分,并转移到后一步。通过这种方式,目的是在编码器部分保留独立于目标的普遍麻将知识。在本项目中,这一理念被称为课程微调

组件

prerequisites(仅供开发人员使用)

使各种先决条件包和工具可供其他组件使用。该组件已构建并作为公共Docker镜像提供,并被其他组件隐式使用。因此,非开发人员无需构建或直接使用此组件。

[src/annotation](https://github.com/Cryolite/kanachan/blob/main/src/annotation

一个C++程序,从雀魂的游戏记录中提取几乎所有的决策点,并将每个决策点的游戏情况连同玩家的动作和单局/整局最终结果转换为适合学习的标注。

[src/xiangting](https://github.com/Cryolite/kanachan/blob/main/src/xiangting

一个C++程序,生成用于计算向听数的基于LOUDS的TRIE数据结构

[src/simulation](https://github.com/Cryolite/kanachan/blob/main/src/simulation

一个C++库,实现了完美模仿雀魂标准游戏规则的麻将模拟器,包括许多未明确说明的规则边界情况。该库的功能也可以通过kanachan.simulation.simulate Python函数访问。

[src/paishan](https://github.com/Cryolite/kanachan/blob/main/src/paishan

一个C++程序,从雀魂的游戏记录中还原整个牌山。注意,该程序还原的牌山仅可用于测试目的(作为test/annotation_vs_simulation的输入),不得用于任何其他目的。

test/annotation_vs_simulation

一个称为标注vs模拟的测试框架,用于检查标注实现和模拟实现之间是否存在任何差异。

[kanachan/training](https://github.com/Cryolite/kanachan/blob/main/kanachan/training

使用PyTorch实现的学习程序和预测模块。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号