Skip to content

Instantly share code, notes, and snippets.

@Equim-chan
Last active February 23, 2024 09:56
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save Equim-chan/cf3f01735d5d98f1e7be02e94b288c56 to your computer and use it in GitHub Desktop.
Save Equim-chan/cf3f01735d5d98f1e7be02e94b288c56 to your computer and use it in GitHub Desktop.
Should I release the trained model of my mahjong AI?
简体中文

更新

2022-08-19

结论:鉴于在线版本 https://mjai.ekyu.moe 已经基本实现了我所期望自己的 AI 去提供的功能,目前没有公开模型参数的计划。

2022-04-13

已经开源在了 https://github.com/Equim-chan/Mortal

我是否要发布训练好的麻将 AI 模型?

麻将社群,我需要你们的帮助。

背景

我是 akochan-reviewer 的作者,这是一个基于 critter 的 akochan 制作的麻将学习工具

我制作麻将牌谱检讨工具的初衷是希望它能成为一个 7x24 小时在线的教练来教导人类玩家,尤其是那些没法接触到高质量教学资源或者教练的人。这样的工具已经在国际象棋和围棋这样的游戏里存在了,而麻将也应当有一个。当我看到有人说他们从 akochan-reviewer 学到了什么的时候,我是挺欣慰的,即便 akochan 时常做出反常的行为。

akochan 举止怪异是一个我也无法修复的已知问题。出于对 akochan 存在的种种限制、不足、以及糟糕的性能的不满,我决定自己做一个全新的 AI。

费劲将近一年的心血之后,我从零开始完成了一个强度足够的麻将 AI 的 1.0 版本。它很强,根据它和 akochan 对战的统计数据可以得出它的水平已经超过 akochan,也包括了其他我所能拿到的 baseline,它可能和初版的 Suphx 强度相当。

这个 AI 兼容 akochan 的协议,也就是 mjai,所以我的 akochan-reviewer 能很轻易地支持以它为后端。

在接下来的几个月,我准备要将源代码公开至 GitHub,但我在犹豫是否要公开训练好的模型。

如果你感兴趣的话,这里有几张新 AI 的 1.0 版本(旧版本,现已被新版本击败)之间自我对战的牌谱:

理由

公开模型的理由

1. 有始有终

如果只有代码没有预先训练好的模型,对于一个深度学习项目来说总显得有点不太完整。如果模型也发布了的话,其他的研究员就无需自己训练模型了,节省了大量的时间和金钱。

2. 在本地运行的能力

正如我所做的 akochan-reviewer 一样,用户可以轻易地下载到预先构建好的版本,然后在本地跑。目前,我正在维护的 akochan-reviewer 的在线版本只有有限的功能,也无法检讨雀魂牌谱,而本地版本却有所有的功能,并且能读取下载好的雀魂牌谱,甚至还能输入任意自定义的牌谱。

3. 方便衍生作品

也许其他人比我有更好的方式去做麻将牌谱检讨机。发布模型的话,他们就可以轻易地发布或部署他们自己的检讨机或者其他正规的衍生作品,只要把模型嵌入。

4. 就算不发布,开挂的人自己也会训练模型

然后他们还能以此为理由卖得更贵。

也许在我把源代码公开的那一刻,我就已经输给了做挂的人。如果他们不惜一切代价都要搞的话,说不定我自己免费公开模型让他们难以获利还更好,尽管这理由听着挺蠢。

不公开模型的理由

开挂的人一定会利用它

这是我最大的担忧。

首先有个坏消息,这样的不当利用 已经 发生在了 akochan 上。一些脚本小子已经售卖基于 akochan 的雀魂 bot 有些时间了。尽管他们在描述里没提到 akochan 的名字,但有很多线索指向他们在用 akochan 或者 akochan 的改版。

我看到的时候心情很复杂。我对做挂卖挂的行为感到气愤,也为他们在卖偷来的东西感到失望。但突然间又感到一丝庆幸,还好他们没打上 akochan 的标签,不然吃瓜群众可能会误解是 akochan 开发者的授意。最后我只能感到悲哀,因为即便他们没有售卖、散布、制作外挂,终有一天也会冒出来另一群人在做类似的事,只要 AI 能够从公共途径获取到。

我并不反对制作天凤或者雀魂的个室 bot,相反,我觉得他们非常实用,无论是想玩但找不齐人,或者只是单纯好奇想和 AI 在自己熟悉的平台上比试比试。

可惜,人的恶是无法被阻止的。能被不当利用的东西一定会被不当利用。如果我发布了训练好的模型,我实在找不到什么方法能去避免它被利用去打段位战。更糟糕的是,我可能还会被受害者指责“在帮人做外挂”。很难想象会有多糟糕。

其他类似的项目是如何处理的?

国际象棋的 stockfish

stockfish 是个很有名的开源国际象棋 AI。如果你玩国际象棋,辛苦把你所知道的分享一下。

  • stockfish 有把在线象棋平台毁了吗?如果是的话是多大程度的影响?
  • 在线象棋平台如何避免人们使用 stockfish 来作弊?
  • 在线象棋的玩家对此怎么看?

NLP 的 GPT-3

这个不是游戏 AI,但它在现在这个上下文里算是个不错的例子。

OpenAI 的 GPT-3 的预训练模型,从来没有被公开发布过。根据我所听到的故事,是因为模型实在太强,太容易被滥用。当然也可能是因为商业价值太高。

最近,OpenAI 宣布了一系列的由 GPT-3 模型支持的在线服务。我觉得我也可以走类似的路子,提供些在线服务,比如牌谱检讨和去个室玩。这也是 NAGA 正在做的事情。

可能的解决方案

1. 不发布模型

最直接,但这很大程度上限制了这个项目能对麻将社群做的贡献。

2. 不发布模型,但是提供在线服务

听起来不错,但是开发和维护在线服务需要时间和钱,而且如果我哪天丧失了兴趣就没了。我可能需要做一些需要捐赠才能解锁的会员功能来支撑服务运行下去。但是做成收费的话又会丧失其之于 NAGA 的优势。

3. 发布模型,但是要付费

盗版的运作方式同样能放在这。同时,这也只让做外挂的人更难搞,并不是完全阻止。

… 更多?

请在下方评论。


如果你有任何想法,请在下方留言。谢谢。

Equim.

English

Updates

2022-08-19

Conclusion: considering the online version https://mjai.ekyu.moe has already provided what I expected my AI to provide, currently I have no plan to release the trained model.

2022-04-13

The source code is now avilable on GitHub at https://github.com/Equim-chan/Mortal.

Should I release the trained model of my mahjong AI?

Dear mahojng community, I need your help.

Background

I am the author of akochan-reviewer, a mahjong learning tool powered by critter's akochan.

My original intention for building mahjong reviewer was that it could serve as a 7x24 available coach that guides human players, especially for those without access to high-quality tutorial or coach resource. Such tools already exist in other games like chess and go, and mahjong should also have one. I am really happy to see people telling me they learn something from akochan-reviewer, even though akochan acts weird from time to time.

Akochan acts weird, this is one of the known issues, and I can't fix it as well. Out of dissatisfaction with the limitations, weaknesses and poor performance of akochan, I decided to make a brand new one myself.

After almost a year of hard work, I managed to build the 1.0 version of a powerful mahjong AI from scratch. It is very strong. Statistics from test plays conclude it is stronger than akochan and any other available baseline I have, and it's probably as strong as the early version of Suphx.

The AI is compatible with akochan's protocol, namely mjai, therefore it can serve as a backend for my akochan-reviewer very easily.

In the next several months, I am going to release the source code on GitHub, but I am hesitant to release the trained model.

If you are interested, here are some games the new AI (version 1.0, weaker than the current version) played with each others:

Reasons

To release the model

1. Make the research complete

It feels a bit incomplete for a deep learning project to only release the code without a trained model. If the model is released, other researchers won't have to reproduce the model on their own, which save a huge amount of time and money.

2. Ability of running locally

Just like akochan-reviewer I made, users can easily download a prebuilt all-in-one package and run it locally. At the moment, the online reviewer service I maintain has limited features and no access to mjsoul logs, whereas the local version has all the features and can read downloaded mjsoul logs and even any hand-crafted log.

3. Easier for derived works

Maybe somebody else have a better idea of making a mahjong reviewer than me. By releasing the trained model, they can easily release or deploy their own reviewer or other legit derived works bundled with the AI.

4. Cheaters are going to train their own model anyways

And they will even sell it higher for such reason.

I may have already lost to cheaters by the time I release the code to the public. If they're going to do it at any cost, it might be even better for me to release the model for free to make them harder to profit, although the idea sounds a bit dumb.

Not to release the model

Cheaters will definitely exploit it

This is the biggest concern.

First of all I have some bad news, such exploit is already happening on akochan. Some script kiddies in the wild have been selling akochan bot for mjsoul for some time. Although they don't mention of the name "akochan" in the description, there are some indications that they are using akochan or a modified version of it.

I had very mixed feelings when I saw it. I was angry for the conduct of making and selling cheats itself, and also for them selling things they stole from others. But then I happened to feel a bit thankful for them not having tagged it with the name "akochan", which will be worse as people may think it is affiliated with akochan devs. And in the end, I was just sad. Even if those guys had not sold, distributed, or even developed the cheat, as long as the AI is publicly available, another group of people will eventually get their hands on it.

I am not against making tenhou or mjsoul bots that play in private lobbies, instead, I think they are very handy and useful when you want to play but can't find enough friends, or you are just curious and simply want to challenge the AI on the platform you are familiar with.

Unfortunately, there is no way to stop people from being evil. Things that can be exploited will be exploited. If I release the trained model, I don't see a way to prevent it from being exploited to play in ranked lobbies. Even worse, I may become the one to be blamed by some victims for "assisting cheaters". I honestly can't imagine how horrible it will be.

How do other similar projects handle it?

stockfish for chess

Stockfish is a well-known open source chess AI. If you are a chess player, please share information you know about it.

  • Has and how has stockfish destroyed online chess?
  • How do online chess platforms keep people from cheating with stockfish?
  • How do online chess players think about it?

GPT-3 for NLP

This is not a game AI, but it serves as a good example in this context.

The trained model of GPT-3, by OpenAI, were never released to the public, according to the story I heard, because the model is so powerful that it can't be kept from being exploited. Of course it is also possible that it is because the commercial value of it is too high.

Recently, OpenAI announced a suite of online services backed by GPT-3. I believe I can go the similar way by not releasing the weights and instead offering online reviewer and private lobby bot services. Offering online services is also what NAGA is doing.

Possible solutions

1. Do not release the model at all

The straightforward way, but it greatly limits the project's ability to benefit the mahjong community.

2. Do not release the model, but offer an online service for review and bot for private lobby

Sounds good, but it takes time and money for me to develop and maintain the service, and it probably won't last forever if someday I lose my interest. I may need to make some features premium that require donations to unlock to keep the service alive. But if it becomes pay-to-use, it will lose its advantage over NAGA.

3. Release the model, but behind a paywall

We all know how piracy works and the same can apply to this. It only makes it harder for cheaters but does not completely make it impossible.

... more?

Please comment down bellow.


If you have any idea, please comment down bellow. Thank you.

Equim.

@Equim-chan
Copy link
Author

这个AI光发出来,训练模型不公开的话,使用者肯定是没有那个能力去自己训练模型的,即使用者也无法通过将本AI接入 akochan-reviewer来学习;而做外挂的,肯定有人脉支持他自己训练模型,看他做不做而已,所以这个AI公布之后,实际作用对于平常使用者有限,外挂肯定是无法避免的了,时间的问题而已,现在公布AI仅仅是有利于做外挂的,让他们能得到更强的AI做更强的外挂

这个说法很好,我之前没有好好考虑到这一点。不过,仅凭现在公开的代码要去训练也不 trivial,因为我还没有公开数据集或者它们的获取方式,也没有说明训练的配置方式,而这些要外挂开发者去研究的话,都是需要额外的工作和时间的。训练本身的话确实可能比较 trivial,就像 Discord 群一位群友所说,it doesn't even need to be strong (to be used as a cheat)。

我之前计划的 timeline 是 akochan-reviewer 改造完毕,支持 Mortal 之后,就会公开模型。

@LYJ19950412
Copy link

您的AI不是有个官网吗,能否先将mortal的数据接入方式修改,使其与akochan的数据接入方式区别开来(因为现有的BOT基本都是使用akochan接入),然后将 Mortal及其训练好的模型、akochan-reviewer两者整合编译和加密之后,之后别人应该比较难获得您的训练模型吧(其实我也不是很懂这个),放到官网上供需要AI讲谱学习的使用者下载,而且exe方式也比较方便使用者使用,因为一般使用者也不会处理这么多软件方面的操作问题,而不是将训练模型直接公布,以后如果不想维护了,再把AI及对应的训练模型交给可信的人继续跟进或者直接为使用者提供最后更新的版本。

@Equim-chan
Copy link
Author

Equim-chan commented Apr 15, 2022

这做不到,混淆与加密只会减慢被滥用的速度而无法阻止。

关于后续,我会像 akochan-reviewer 的 release 页面一样,直接放一个全都编译好了的版本,开箱即用的。

@hansen0086
Copy link

都已经开源了开不开源模型是不是没有太大意义了?训练一个模型也就是租个服务器跑一段时间的问题啊。

@celie1
Copy link

celie1 commented Apr 17, 2022

Here is my two cents on this, considering those cheaters that are already profiteering on Akochan with monthly subscription from users (guarantee to get Saint and possible Celestial in Majsoul's Jade Room), I believe there wouldn't be much different even if a much stronger version like Suphx is available for exploitation, they would still be dominating in Jade Room, since Jade Room have the most PT-efficiency for achieving Celestial.

While those who use NAGA as a learning tools or can't afford to pay for NAGA will benefits from the available offline service.

@LYJ19950412
Copy link

LYJ19950412 commented May 18, 2022

我建议你还是不要公布模型为好,隔壁自动打牌bot作者和沆瀣一气的用bot给别人代练的黑心人,天天说说你做个开源AI,然后反手要比特币赞助,天天说你又立牌坊又装高大上,自己觊觎着新的强力AI,他们得不到你的mortal就骂,我也得知他们正在谋划着用隔壁的kanachan作为自动打牌bot的新AI,目前正在测试训练的功能,等新的40系显卡训练

@LYJ19950412
Copy link

Screenshot_2022_0518_182339

@Equim-chan
Copy link
Author

@LYJ19950412 感谢你的情报,我也转告了 kanachan 的作者 Cryolite。

我之前参考了你的建议,打算至少也要等我把 reviewer 改好,让一般的麻将玩家也能很顺手地使用 Mortal 检讨牌谱之后,才放出模型。这个决定基于几点原因:

  • 现在公开模型只会让开挂的更方便,一般玩家反而无法收益。
  • 如果只是拿来作弊,其实 AI 本身都不需要有多强。对于外挂制作者来说,可能没有必要为了从「能击败 95% 的人类」训练到「能击败 99% 的人类」而多付出数倍的训练资源。对只想不怀好意拿去在平台上作弊的人来说,自己训练出来的门槛也不算高。换言之,我最终是否放出模型不会造成什么决定性的影响,只是方不方便的问题。
  • 这是一个结构性问题。即便我和 Cryolite 都不公开我们的作品,以后也会有别人做一样的研究,届时他们也依然会面临相同的困境。我觉得迟早也要去面对这个问题。

@LYJ19950412
Copy link

其实更强力的AI,这方面,目前淘宝上有很多代练(雀魂代上分的),很多商家都是用bot打的(价目表到雀豪之后就没有的那些商家和部分说是能上魂天的商家,使用akochan的bot,可以打到雀圣3,甚至有人尝试过自动打到雀圣3的9000分然后开黑上魂天),虽然店铺里标榜着纯手打,群内就有这样的人,每天叫嚣着“反正bot也能上分,为什么要手打,我开着电脑就能赚钱,在家躺平等单子,让电脑自己帮我赚钱就好”之类的话,bot群里很多代练指望着有新的强力AI来突破瓶颈,让他们可以接那种“代上魂天”的单,继续为号主无视封号风险代上分(尽管雀魂近几个月不怎么管bot),以进一步提高收入,您的AI和akochan的接口应该是差不多的,所以说,您一旦公布模型,bot制作者可以较为轻易地升级自己的bot,使得代练bot能更快更好地完成号主的目标,甚至不需要付出多少实际劳动,显然bot代练商家和bot制作者恨不得您马上将您的训练模型公布,好让他们能进一步获取收益

@herjer
Copy link

herjer commented May 19, 2022

其实更强力的AI,这方面,目前淘宝上有很多代练(雀魂代上分的),很多商家都是用bot打的(价目表到雀豪之后就没有的那些商家和部分说是能上魂天的商家,使用akochan的bot,可以打到雀圣3,甚至有人尝试过自动打到雀圣3的9000分然后开黑上魂天),虽然店铺里标榜着纯手打,群内就有这样的人,每天叫嚣着“反正bot也能上分,为什么要手打,我开着电脑就能赚钱,在家躺平等单子,让电脑自己帮我赚钱就好”之类的话,bot群里很多代练指望着有新的强力AI来突破瓶颈,让他们可以接那种“代上魂天”的单,继续为号主无视封号风险代上分(尽管雀魂近几个月不怎么管bot),以进一步提高收入,您的AI和akochan的接口应该是差不多的,所以说,您一旦公布模型,bot制作者可以较为轻易地升级自己的bot,使得代练bot能更快更好地完成号主的目标,甚至不需要付出多少实际劳动,显然bot代练商家和bot制作者恨不得您马上将您的训练模型公布,好让他们能进一步获取收益

LYJ 先生您好,我是牌谱屋主机管理人 EDWARDH ,可以请您联系提供我一些相关的 bot 资料吗? https://twitter.com/EDWARDH_Jantama

我想这可以说是必然的发展,如果变成开源又是个可抽换的模组,必然变成外挂迅速进步而一般玩家受益甚少的状况。所有开源者几乎都出于善心,但"此项目仅用于学习研究使用,请勿滥用于正常游戏或各类活动,以免干扰游戏正常秩序"这种声明对于无耻的人是没有限制力的。

雀魂官方显然专心的事情也不在麻将的公平竞技性与最优化研究,不管 bot 实际上也是确实难管。 https://github.com/747929791/MajsoulAI
模拟的鼠标如果包含了迟延跟点击位置的随机性,那侦测 bot 的难度可以说是增加了好几个数量级。毕竟人也就是眼睛看了牌的组合,判断位置慢慢把手移过去的。就算没有这个自动化,作弊者屏幕上根据 AI 亮出建议打什么他就打什么,任何一个打工人都能办到。

问题的根源当然是用户想买一个雀豪买一个雀圣买一个魂天,有些只是自爽,有些则是要商业化。买一个魂天并不能让自己鸡打的比例下降。但这样的淘宝销售如果不管,那对于认真想改进自己的玩家是很大的打击。如果 Yostar 不管我会建议日本的天凤与雀魂玩家直接推荐日中分服,跨区对局本身的乐趣下降太多。更正确的说,发下来你都告诉我打三万平均 +1.2 pt,打九索平均 -0.3pt,那要我坐那干嘛? 我自己不这样打,也没兴趣跟宣称人打然后用 AI 作弊的人打。

当然我还是要说,并没有理由为了这些坏人而停下我们想帮 "想努力打好牌的人" 的脚步,请继续依自己的步调前进,我会建议用线上 Reviewer 的方式继续装在黑箱子里,打完后的牌谱愿意讨论,那 AI 可以客观而非结果论的依各家切牌推荐,但不需要即时给出建议。我对于 github 上能不能用这样的架构保持怀疑,但我会跟日本的天凤雀魂玩家努力沟通,也会尽量的拿出所需资源来。

@Sasy00
Copy link

Sasy00 commented May 21, 2022

Stockfish hasn't destroyed online chess tbh. I only play on chess.com and lichess.org so I will talk only with my (limited) knowledge of these sites. Basically the countermeasures for cheaters are

  1. Player reports: player can reports other player for cheating, then a team (or in chess.com case a program and a team) decides if they are a cheater or not
  2. in the case of chess.com, directly a program checking if they are cheating or not (idk how it works).

Also it is somewhat easy to spot if someone is cheating, there are a lot of tells that can make you pretty sure they are. For example if they always spend the same ammount of time for EVERY move then they are most likely cheating, because some moves such as taking back a piece in a trade should be done automatically without thinking (except some cases but they are rare) and some moves require lot of calculation to be made which requires more time than an average move. Also if while reviewing the game with an engine you see that opponent played always top 3 moves, even when the moves are really difficult to find because they are counterintuitive (random king moves when lots is happening is the best example), then there is a chance they are cheating. The easiest is when all these conditions are true ofc.

I'm not sure how to tell if someone is cheating on mahjong tho. While playing it is impossible because I can't know what choices they had, and even after playing I can't be sure.

Also I'd like to add that I play online chess since ~2014 and the ammount of cheaters I faced is well under the 50s.
Hope this helps, I'm looking forward to using this amazing tool!

@herjer
Copy link

herjer commented May 22, 2022

I think the conditions are a little different (not a native English speaker so I hope there are no misunderstandings or impolite words).
First of all, the biggest difference between playing chess and mahjong is the uncertainty.
In mahjong we can be sure that the same tile will not appear again (astronomical odds), however, the opening of the chess game and even many of the optimal solutions for specific situations have been improved by traditional human research.
It is almost inevitable in mahjong, combination 34s is better than 68s, but there is 33.3% probability 7s will come before 25s.
The reporting itself is not difficult, the focus is on detection and review.
Since the same hand does not appear again, humans or computers are evaluated in a likelihood method, while humans have much less computing power than computers.

In addition, mahjong is a four-player activity rather than a two-player zero-sum game.
Riichi Mahjong is particularly difficult because rankings may bring more value than raw scores.
I can easily add the friendliness of other players to determine my utility function, making it difficult to detect whether my judgment is based on what is good for me or what is good for "me and a particular position", even if I play the same card, under the uncertainty.

So I think the advice should be given only after 60 seconds of decision, no matter how quickly the hand is calculated by AI.

@Jesterboxboy
Copy link

I would say you should release the model as well. My reasoning is as follows:
1.) it's only a matter of time until someone does release a reasonable strong ai with a trained model or just a model for your ai anyway if you don't do it now.
2.) Online platforms will need to adapt, as has happened with all other games where stronger than human ais are available.

@luooooob
Copy link

我提供一个做决策的角度:

核心的问题是,你究竟是想要

一个 7x24 可用的教练来指导人类玩家,特别是对于那些无法获得高质量教程或教练资源的人

还是

一个非常酷的ai项目,用来验证和提高自己的代码水平和工程能力

如果你的目标是前者,那就应该只提供在线服务,naga收费明显过高了而且支付方式能劝退一堆人,市场还是很大的。但是市场的前提是不能把市场送人,什么扩展能力都可以给但是必须通过在线服务提供,绝对不能提供源码或二进制这种不受控制的东西。还能顺便防止有人用这个ai作弊

如果你的目标是后者的话,那确实应该全程开源,所有细节都展示出来,没啥需要遮掩的。公开源码了不公开模型没必要,甚至数据集也可以公开。我今天来就是要卷死各位或者被各位卷死,什么开挂代练没工夫管那些,也不需要考虑长期怎么办,比较简单粗暴。

@Equim-chan
Copy link
Author

@luooooob 我觉得这两个说法都偏极端了一些。前者并不是就不能开源了,因为开源能提升透明度,还能方便其他人学习、改善这个项目;后者也不是必须要公开模型,甚至都不一定需要开源,就像 AlphaGo 之类的作品一样,不开源对影响力没有太大影响。

但是我想提的一点是,麻将 AI 需要依赖玩家的生态存活。麻将的圈子相比围棋、象棋本来就不大,如果 AI 滥用作弊的情形变得更加普遍了,很多玩家可能会离开这个游戏,圈子会进一步萎缩。到时候 AI 可能都成了口诛笔伐的对象,更难发展下去了。

@luooooob
Copy link

luooooob commented Jul 5, 2022

@luooooob 我觉得这两个说法都偏极端了一些。前者并不是就不能开源了,因为开源能提升透明度,还能方便其他人学习、改善这个项目;后者也不是必须要公开模型,甚至都不一定需要开源,就像 AlphaGo 之类的作品一样,不开源对影响力没有太大影响。

但是我想提的一点是,麻将 AI 需要依赖玩家的生态存活。麻将的圈子相比围棋、象棋本来就不大,如果 AI 滥用作弊的情形变得更加普遍了,很多玩家可能会离开这个游戏,圈子会进一步萎缩。到时候 AI 可能都成了口诛笔伐的对象,更难发展下去了。

其实后面只是气话,我是希望能有个牌谱分析网站成功地运营起来的。一旦引擎泄漏出去,网站肯定经营不起来了,各种抄袭和作弊的负面消息也很难让你继续有动力研究下去,大概率就渐渐弃坑了。目前看来能持续下去的方法也只有商业化,其他方案对这个项目都是有害的。虽然商业化的路不好走,但是还是希望能多多考虑

@Zeks
Copy link

Zeks commented Sep 5, 2022

Now that the site has been purged by tenhou everyone regrets the decision to never release the model.

@gavingrey
Copy link

I find it disappointing that there is no trained model and the documentation is scrubbed of information. In the current state this project appears to be an advertisement for an analysis website. I would be eager to contribute but not without documentation

@jacy
Copy link

jacy commented Jul 31, 2023

how can I start training the AI to play like a normal human(not need to be smarter than human, but not a dumbheaded AI either)

@jacy
Copy link

jacy commented Aug 3, 2023

hope moral can open source completely like doudizhu

https://github.com/kwai/DouZero

@nideii
Copy link

nideii commented Sep 19, 2023

TL;DR
Very simply, grow the community so large that those for profit companies have to build anti-cheat in order to make more money.

First, let's talk about the technical details, and luckily, there is a chess boom happening.
One of, or the, largest chess website, chess.com, use deep learning method to find cheaters. I am not 100% sure what model they used, but it might be a stockfish variant. And for human to identify a cheater, beside cheaters' move are very similar to stockfish, the time between each move also be very consistent.

HOW TO IDENTIFY A CHESS CHEATER,

  1. Cheaters might make bad move at the beginning, thinking they might get away with this.
  2. The time the spend for each move is very consistent.
  3. They might not always choose the top stockfish move.
  4. When remaining time is a big factor, like during the end game, they will lose on time or make bad move.
  5. They usually make new accounts

Here is my idea about cheating and tooling,

First, if you don't release the model, then yes, few people will use it to cheat, and much more people cannot use this to learn, as long as there are more honest player than cheaters.
Second, stop releasing the model, then cheaters will find other ways to cheat, they will not stop cheating because this tool is not available.
Third, there will eventually be a new and better deep learning models tomorrow to replace STOA models today. Make everything more assessable to everyone, this process will happen much faster.

It is good to think about cheating when making tools. However, it is not single individual's responsibility to prevent cheating or stop cheating, everyone does.

Just think about this, if you solve world hunger, but afraid some dictators will start a war for it, so you choose not to release it, then who benefit the most? You? the dictators? or no one?

@ashleycolton
Copy link

it is already out there with a paywall. and there's currently no alternative open source mahjong ai..
as far as i know, these projects are already filled with AI:
chess
GO
poker
gomoku
mahjong

i'm hoping to see an open source one tbh

@BarclayII
Copy link

BarclayII commented Feb 23, 2024

One necessary component I feel is missing for mahjong in particular is explainability.

We know that stockfish is open source and is probably the best AI in chess, but it doesn't offer comprehensive explanations to its policy. However, there are some platforms that offers explanations in natural language, indicating which moves are brilliant, good, or poor, as well as the reasons behind such judgement (e.g. "you lose a knight if you play this move"). Chess.com is a good example - I used it for a while, and it even offers a "what to improve" (e.g. endgames, forks, etc.) section after a review. The paywall is super expensive.

I didn't see a route to explainability in mahjong RL agents as clear as those for chess though, primarily because of two reasons: (1) the inherent randomness, and (2) the partially observable nature. Even with standard "nanikiri" problems where you are only given your hand without any other information, I still saw some of the professional players disagree on what is the best policy by saying "this may happen", "that may happen", etc., and often times agree to disagree. So if one indeed builds such an explainability service, it will become a stable profit source and many more people will benefit from it, even without releasing the model weights or even the architecture.

I have some thoughts on how an explainability model for mahjong RL agents may look like, but I didn't get the time to formulate it yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment