About MariaGO

打造可以理解的 AI

谁在运营这个网站?

大家好,我是站长“思考之树”(Saenggaknamu)。我是一名有 32 年经验的开发者, 为了打造有人情味、能像人一样思考的 AI 模型,一直在制作各种各样的 AI 模型。随着 AI 的普及,一个人也能完成开发之后,我开始挑战各种课题。

后来,我看到了一个解数独的 AI。它的思路和人完全不同,就像一个早已知道答案的孩子, 从第一格开始一行一行地依次填入答案。我告诉它这是作弊,它这才按照数独的规则, 比较横行、竖列和 3×3 宫格来得出答案。看到这一幕,我从 Hugging Face 下载模型, 开始亲自训练。从那以后我发现,许多模型都像这样,仿佛早已知道答案似的在解益智游戏。

MariaGO 的模型训练、游戏引擎、网页界面和服务器运营,全部由我亲自负责。这里的文章 并不是对一般游戏百科的重新总结,而是根据实现过程中确认过的代码和实验记录撰写的。

项目名称中的“GO”指的是最初的起点——围棋。从围棋开始的问题,逐渐扩展到了五子棋、 黑白棋、韩国象棋、国际象棋,以及数字和文字谜题。每种游戏的规则各不相同,但都有一个 共同的主题:“AI 如何读取当前状态,并选择下一步行动?”

为什么还要再做一个游戏网站?

在线对弈服务已经有很多了。MariaGO 想要解决的问题,并不是快速找到对手一较高下。 我想打造一个属于个人的对弈环境:不必和别人约时间,想下的时候就下一步;时间不够就先停下, 之后再回到同一盘棋。

目标不是炫耀最强的 AI,而是让任何人都能在浏览器中直接接触训练后模型的判断, 并理解其背后的过程。

我很喜欢电影《银翼杀手》。片中有这样一个场景:J.F. 塞巴斯蒂安和泰勒博士 身处不同的地方,用语言一步一步地交换着继续下国际象棋。为了让 MariaGO 的围棋也具有这样的特点, 我没有设置每步的时间限制。

每当你确认落子,棋盘和着法顺序都会保存到服务器上,下次访问时会重新载入进行中的对局。 你可以前后翻看棋谱,然后从任意一步重新开始下。

注意:对局以每个浏览器生成的 ID 保存。如果在无痕模式或其他浏览器中下棋, 将无法载入已有的对局,而是会创建新的存档。

是如何开发的?

围棋模型使用从高段业余棋手和职业棋手的 SGF 棋谱中提取的局面与下一手进行训练。 这并不是把原始棋谱直接放进去就结束了。我们会把 19×19 的坐标转换成模型能读取的对齐网格, 去除重复的局面,并确认训练数据与实际对局服务器使用的是相同的棋盘表示方式。

并非所有 AI 模型都使用相同的围棋坐标——这一点我在开始开发很久之后才知道。我长时间训练 Google 的 Gemma,但模型落子的位置总是在第四象限。于是我加上了各种限制,而这些限制又带来了新的错误。

后来我才发现,每个模型使用的坐标都不一样,甚至 SGF 棋谱和我们自己的模型使用的坐标也不同。 也是在那时我才知道,把人下的着法告诉模型后,它会用另一套坐标回复。因此在初期,我花了很长时间 训练模型对齐坐标,在那之后,模型的棋力才开始急剧上升。

训练之后,我们不只看胜率。我们会记录模型能否以相近的准确度找到四个角的坐标、是否会选择已经有棋子的点、 是否过早停一手。在网页对局中,AI 的着法也不会被直接采用,而是由游戏引擎检查自杀、打劫违规、 在已有棋子处落子等非法着法。

训练数据从高段业余和职业棋手的 SGF 中提取的局面与实际下一手
局面表示行号和列号统一对齐为两位数的 19×19 文本网格
实战验证分别检查坐标准确度、合法着法比例、过早停一手和方向偏差
对局保存以每一手为单位保存棋盘状态和完整着法顺序,用于复盘和续下

内容与运营原则

只写亲自确认过的内容

功能说明完全按照当前实际运行的情况撰写。每当有了新想法就会添加新功能, 文章也会随之及时更新。

同时公开局限

模型的失误、自动数目在死活判断上的局限等读者应当了解的条件,都会与结果一并说明。

把制作过程写下来

不只是收集游戏链接,而是让你能读到规则、实现方式,乃至失败与修复的记录。

追求不慌不忙的体验

有事的话随时停下就好。之后有空了、想到了下一手,再接着下就行。如果下错了, 随时都可以回到那一步重新下。

我们也会坦白当前的局限

MariaGO 的各个游戏并非都达到了同样的完成度。围棋支持棋谱保存和续下,但其他游戏的功能范围各不相同。 围棋自动数目会计算被围住的空白区域和提子,但无法完全判定死子。数目结果并不是裁判的最终判定, 而是供对局者检讨棋盘时参考的数值。

这些差异和失败案例,恰恰是项目记录的核心。功能发生变化时,本页面和研究笔记也会一并更新。