结论：鉴于在线版本 https://mjai.ekyu.moe 已经基本实现了我所期望自己的 AI 去提供的功能，目前没有公开模型参数的计划。
我是否要发布训练好的麻将 AI 模型？
我是 akochan-reviewer 的作者，这是一个基于 critter 的 akochan 制作的麻将学习工具
我制作麻将牌谱检讨工具的初衷是希望它能成为一个 7x24 小时在线的教练来教导人类玩家，尤其是那些没法接触到高质量教学资源或者教练的人。这样的工具已经在国际象棋和围棋这样的游戏里存在了，而麻将也应当有一个。当我看到有人说他们从 akochan-reviewer 学到了什么的时候，我是挺欣慰的，即便 akochan 时常做出反常的行为。
akochan 举止怪异是一个我也无法修复的已知问题。出于对 akochan 存在的种种限制、不足、以及糟糕的性能的不满，我决定自己做一个全新的 AI。
费劲将近一年的心血之后，我从零开始完成了一个强度足够的麻将 AI 的 1.0 版本。它很强，根据它和 akochan 对战的统计数据可以得出它的水平已经超过 akochan，也包括了其他我所能拿到的 baseline，它可能和初版的 Suphx 强度相当。
这个 AI 兼容 akochan 的协议，也就是 mjai，所以我的 akochan-reviewer 能很轻易地支持以它为后端。
如果你感兴趣的话，这里有几张新 AI 的 1.0 版本(旧版本，现已被新版本击败)之间自我对战的牌谱：
正如我所做的 akochan-reviewer 一样，用户可以轻易地下载到预先构建好的版本，然后在本地跑。目前，我正在维护的 akochan-reviewer 的在线版本只有有限的功能，也无法检讨雀魂牌谱，而本地版本却有所有的功能，并且能读取下载好的雀魂牌谱，甚至还能输入任意自定义的牌谱。
首先有个坏消息，这样的不当利用 已经 发生在了 akochan 上。一些脚本小子已经售卖基于 akochan 的雀魂 bot 有些时间了。尽管他们在描述里没提到 akochan 的名字，但有很多线索指向他们在用 akochan 或者 akochan 的改版。
我看到的时候心情很复杂。我对做挂卖挂的行为感到气愤，也为他们在卖偷来的东西感到失望。但突然间又感到一丝庆幸，还好他们没打上 akochan 的标签，不然吃瓜群众可能会误解是 akochan 开发者的授意。最后我只能感到悲哀，因为即便他们没有售卖、散布、制作外挂，终有一天也会冒出来另一群人在做类似的事，只要 AI 能够从公共途径获取到。
我并不反对制作天凤或者雀魂的个室 bot，相反，我觉得他们非常实用，无论是想玩但找不齐人，或者只是单纯好奇想和 AI 在自己熟悉的平台上比试比试。
stockfish 是个很有名的开源国际象棋 AI。如果你玩国际象棋，辛苦把你所知道的分享一下。
- stockfish 有把在线象棋平台毁了吗？如果是的话是多大程度的影响？
- 在线象棋平台如何避免人们使用 stockfish 来作弊？
NLP 的 GPT-3
OpenAI 的 GPT-3 的预训练模型，从来没有被公开发布过。根据我所听到的故事，是因为模型实在太强，太容易被滥用。当然也可能是因为商业价值太高。
最近，OpenAI 宣布了一系列的由 GPT-3 模型支持的在线服务。我觉得我也可以走类似的路子，提供些在线服务，比如牌谱检讨和去个室玩。这也是 NAGA 正在做的事情。
听起来不错，但是开发和维护在线服务需要时间和钱，而且如果我哪天丧失了兴趣就没了。我可能需要做一些需要捐赠才能解锁的会员功能来支撑服务运行下去。但是做成收费的话又会丧失其之于 NAGA 的优势。
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.
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.
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:
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.
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.
Please comment down bellow.
If you have any idea, please comment down bellow. Thank you.