KataGo作者David Wu专访

丈夫贵兼济,岂独善一身:我为什么要开源KataGo

20201018


9月底,2020世界人工智能围棋大赛在福州结束了预赛阶段的比拼,来自中国的15支人工智能围棋团队和来自韩国、日本、比利时、美国的5支人工智能围棋团队出战本届比赛。七轮积分编排赛过后,前八名晋级将于11月底进行的淘汰赛。

令人意外的是,实力强大的KataGo因为胜势超时、自降算力和用未经测试的搜索算法输掉了3盘比赛,最终名列第9无缘本赛,而大量“二次开发”的KataGo后继者却纷纷晋级8强。

赛后弈客联系到了KataGo的作者David Wu(毕业于哈佛大学,目前供职于Jane Street,是一名从事人工智能研究的研究员),与之进行了一番深入的访谈,以下是采访实录:

1. What’s your level of Go? What’s your story with the game of Go?

2a. Why did you choose to develop Go AI in the first place (or why you are interested in developing Go AI)?

1. 您的围棋水平如何?您与围棋有怎样的渊源?

2a. 您当初为何会选择开发围棋AI(或者说为何对开发围棋AI产生了兴趣)?

I am officially around AGA 3d amateur, but am very rusty and out of practice as I have focused the last few years on AI development and many other things rather than playing games myself. I learned about Go more 15 years ago and have been interested in computer game-playing AI ever since that time. Writing fun algorithms and AI programs for games has always been a thing I enjoy and am good at. I was around at the time of a lot of the early exciting developments when Monte-Carlo Tree Search (MCTS) was discovered in 2006 and 2007 and finally Go programs jumped from beginner level to amateur dan level, and have followed a lot of the published papers and research ever since then. However, I only actually started coding a bot of my own very recently in 2017 and 2018. In fact, around 2017 essentially the first time I ever trained a neural net and learned how deep learning worked.

我大概是AGA(美国围棋协会)业余3段的水平,但由于过去几年我一直专注在AI开发和其他许多事情上,就没怎么下棋,所以棋艺生疏了不少。接触围棋有15年了,并且从那时起,我就对人工智能AI对弈很感兴趣。编写有趣的算法、运作相关AI程序,一直是我所喜欢和擅长的事情。我见证了2006年和2007年蒙特卡洛树搜索(MCTS)引入围棋,那是早期非常令人振奋的一大进步,接着围棋AI从初学者水平升至业余段位,后续又有了一系列相关的论文发表和实验研讨。不过直到17年我才开始训练神经网络并了解深度学习的工作原理,17到18年之间才开始着手编写自己的对弈程序。

2b. Why is this AI named Katago?

2b. 为何将这款AI命名为KataGo?

https://en.wikipedia.org/wiki/Kata

As I understand things, ‘kata’ is a word originally from Japanese that has now become simply also a normal word in English within the context of martial arts. It refers to the sequence of patterns and movements and forms that one practices in martial arts training. It seemed like a fun name for a self-play engine – one that improves by practicing by itself to gradually train its own pattern and movement and form on the Go board.

据我所知,“kata”一词出自日语,现在也成为了一个武术里的英文常用词汇。武术训练中它指的是一串动作,或者说招法。对于自对弈程序来说,这感觉上是个有趣的名字——通过左右互搏自我练习,慢慢精进棋盘上的招式。

3. Many appreciations to KataGo’s great contribution to the richness and ease of use of AI. KataGo has given Go fans an unparalleled gift. The question I want to ask is, in the process of developing KataGo, have you also made progress in your understanding of AI, and to what extent?

非常感谢KataGo对AI功能丰富性和易用性做出的巨大贡献。KataGo给了棋迷们一个无与伦比的礼物。我想问的问题是,研发KataGo的过程,是否您也在对AI的理解上获得了进步,这种进步是何种程度的?

Sure. As I said, the first time I ever got any experience with deep learning was in 2017, and the research project that eventually became KataGo my attempt to learn the field. Whenever I try to learn a new major subject area in Computer Science, I always try to do so by launching a personal project to build something in that area – and sometimes it becomes something useful to release for others. I love writing tools and algorithms that do useful and interesting things.

诚然。我前面讲过,步入这个领域,我最开始获得深度学习经验是在2017年,后来进阶为KataGo这一研究项目。每当我尝试钻研计算机科学一个新的主要学科领域时,我总会通过启动另外的个人项目来帮助构建我在该领域中的知识体系,有时会收获意外之喜。我爱好编写工具及算法,去做有用又有趣的事情。

4. Before the birth of KataGo, Go AI has completely changed people’s perception of Go, and has profoundly affected all aspects. So did you create KataGo more out of the application of artificial intelligence or for the hope to further change the Go ecology?

在KataGo出世前,围棋人工智能已经完全改变了人们对围棋AI的认知,也已经深刻的影响了围棋的方方面面。那么你创出KataGo更多的是出于对于人工智能的应用实践还是对于希望进一步改变围棋生态?

Both! I initially developed KataGo because in the years immediately after AlphaZero, the ability to develop self-play-based AI in full-scale large board games was almost entirely out of reach of anyone except for large companies and organizations or mass-online distributed projects. AlphaZero and some replications like ELF OpenGo both used thousands of GPUs or TPUs, which is completely impossible for many individuals or smaller research groups to match.

两者都有!我最初开发KataGo的原因是,在AlphaZero之后的几年,除了大型公司和组织或大规模项目外,大棋盘上开发基于自对弈AI对任何个人来说都几乎是难以企及的。 AlphaZero以及像ELF OpenGo之类的复制品都配备数千个GPU或TPU,这对于许多个人或规模较小的研究团队而言是完全达不到的。

Once I understood the algorithms, I saw that there were many clear paths to improving the self-play algorithms to make them vastly stronger and more efficient. As a result of many such improvements, KataGo reached the top levels using only a small fraction of compute resources. With KataGo’s code, with even just a single 2080 Ti if you are able to devote a few months, you should be able to train a Go bot starting from nothing to reach strong human professional levels or maybe even beyond. That means that the level that “AlphaGo Lee” reached – can now be matched by anyone who merely happens to own a high-end gaming rig and is willing to devote the time. With the right methods, smaller research teams and individual developers can achieve results that previously were only possible with large data centers and millions of dollars, making research much more possible and practical.

理解算法后,我发现有许多清晰明了的方法可以改进自对弈,从而使之变得更加强大和高效,因此KataGo仅使用一小部分计算资源就达到了顶尖水平。KataGo的内置代码能使一个只有一块2080 Ti显卡的人,只花费短短数月时间便可从无到有地将一个围棋AI训练达到人类顶尖职业水平甚至更高。也就是说,“AlphaGo Lee”达到的高度——现在可以由愿意投入时间的任何人在自己的高端游戏本上实现。只要方法正确,小型研究团队和个体开发人员都可以实现以前只有大型数据中心和数百万美元投入才可能获得的结果,研究也由此变得更加可行和实用了。

157 个训练日进步飞速的KataGo

This is why KataGo is open source as well. It is about more than just Go. I have also received personal word from developers working on other board games besides Go that some of the techniques in KataGo helped in these other games as well. If you only try to develop even stronger Go programs but you never publish anything or explain your methods, then maybe you will improve slightly the level of Go AI, but you won’t help other smaller researchers or developers who want to build their own AIs for Go or other games, or to experiment with AI research in broader areas.

这就是为什么KataGo同时也是开源的。不光围棋,我还从其他棋盘游戏的开发人员那里得知,KataGo中的某些技术应用于其他棋类项目也很给力。如果您只是尝试训练出更强大的围棋程序,但不愿分享任何内容或方法,那么也许只会稍微拔高围棋AI的峰顶,却无法助力其他在围棋或游戏项目上想要构建自己AI的少数研究人员或开发人员,或者帮助在更广泛的领域开展AI研究。

Anyways, after the above goal was achieved, it seemed fun to continue developing KataGo. I also enjoy building tools that other people can use, so KataGo was my attempt to give to the Go community an engine with features that nobody else seemed yet able to produce. Support for a wide variety of rulesets including Japanese rules, reducing slack endgame play when winning to produce better analysis, better handicap game play, support for multiple board sizes without changing the neural net. All of these features were missing in almost all of the top bots post-AlphaZero, and I thought I knew ways to support them, so I did.

不管怎样,在实现上述目标之后,继续开发KataGo仍然有趣。我乐于去开发普通大众都能用上的工具,KataGo便是我对于围棋界的贡献,这似乎还没有其他人做到。包括支持日本规则在内的多种对弈规则,判断清楚后减少胜定终局时不必要的行棋,让子棋中更好的表现,支持多种棋盘规格且无需做出匹配更改……所有这些功能在AlphaZero之后的几乎所有顶级AI中都没能囊括,而我知道如何改进,我也做到了。

自对弈形式判断

5. KataGo has amazing strength, helping people improve the level of competitive Go, and also has very free parameter settings. Many people use it to realize the fun of Go. For example, Yike uses the features of KataGo to create AI game that is popular among users. Among them, various chessboards and different gameplay make players hooked. I wonder if Dr. Wu have any try? Also do you think that this has presented all the characteristics of KataGo?

KataGo拥有惊人的实力,帮助人们提高竞技围棋的水平,也拥有非常自由的参数设定,不少人用它去实现围棋的趣味性。比如弈客就使用KataGo的特性创建了广受用户喜欢的ai闯关游戏。其中各种棋盘,不同玩法,都让玩家大呼过瘾。不知道您是否了解?另外您觉得大家是否已经发挥了KataGo的所有特性了呢?

Thanks. No, I haven’t explored all the different things people are doing with KataGo. I know there are many more than I can follow myself, and indeed I hope it stays that way, as people continue to find it exciting and fun. And if any developers have ideas for any new features that I could implement , I’d love to hear it. More than once now, I’ve added features and subcommands into KataGo that were needed by other developers on different servers or sites to do interesting and new things that weren’t possible before, and I’m happy to add more when I have the time.

谢谢。我还没关注大家通过KataGo研发的所有不同事情。我知道有很多,可来不及跟踪,但我非常希望大家能够持续发掘它的魅力。还有,我将很乐意听到如果有任何开发人员对任何有望实现的新功能有想法。目前我已经不止一次地在KataGo中添加了其他服务器或站点上的其他开发人员所需要的功能和子命令,执行实现了以前无法预见的有趣的新动作,所以未来我希望能更加丰富完善它。

编者按:中国围棋人工智能的研发呈现井喷,如星阵在“终局不退让”,“让子棋”,“小棋盘”,“任意贴目”,“数目规则”等方向上做了大量研究和实验,并率先进行了多场表演赛:2018年让先41局、9路挑战赛、17路天弈挑战赛。而弈客的弈小天则另辟蹊径,在模拟低水平,自定义棋风等教培应用相关领域发力。来自世界各地的AI专家们的努力,不断地推进围棋人工智能的高水平的同时,规则相关,“拟人相关”的应用型成果会取得更大的突破】

6. What are KataGo’s future plans? Should we continue to dig deep into Go or explore other fields such as medicine, finance or meteorology? In addition, Go is almost the first to be changed by AI. What kind of mentality should the people of Go and even the whole mankind face the AI era?

KataGo今后计划是什么?是继续深耕围棋还是去探索医学、金融或气象等其他领域?另外,围棋几乎是最早受到AI变天的,围棋人乃至于全人类应以什么样的心态来面对AI时代?

In the next month or two, there is a chance that KataGo can also begin distributed training, similar to Leela Zero. Thanks to KataGo’s efficiency improvements, large-scale distributed training with hundreds of GPUs and contributors has not been necessary so far to reach a high level, but it would be fascinating to push it further and see how far it can reach if it does receive those resources. Once distributed training is released, I hope there will be some people who will join me in seeing how high a level KataGo can reach with more training.

接下去一两个月,跟Leela Zero一样,KataGo也可以开始分布式训练了。不过得益于KataGo提高了效率,不需要数百个GPU和贡献者进行大规模训练就可以达到很高的水平,但如果拥有了那些资源再看其进一步能有多大跨越,那也是值得期待的。分布式训练开启的话,我希望能有更多人加入我,共同见证KataGo能继续攀升至怎样的水平。

As for other fields – yes there are many other valuable areas of research. I know there are many researchers out there trying to improve the quality of science and technology in these areas. Maybe at some point I would get involved in some of those areas too at some point in a new project, I don’t know yet. But at least in the field of reinforcement learning and deep-learning-augmented search I hope that some of the approaches and ideas used in KataGo will continue to be useful.

至于其他领域,当然还有许多其他有价值的研究方向。我知道有很多研究人员试图实现相关领域的科技突破。可能在某个节点上,我也无意中置身于某项新科研,但我并不知道。然而至少在强化学习和深度学习领域,我希望KataGo中运用的某些策略和想法能发挥作用。

7. Not long ago, Yike was very fortunate to contact the developer who completed Gobang AI based on the KataGo engine and successfully applied that program to the Yike platform, which brings an unprecedented win rate, strategy and opening experience for Gobang players. Do you would like to see such kind of cross-border cooperation?

不久之前弈客非常有幸的联系到了通过KataGo引擎完成五子狗的开发者,并成功将程序应用到了平台上。为五子棋玩家带来了前所未有的胜率,支招以及开局库的体验。您是否认为这样的跨界是你希望看到的?

Yes, definitely. As I mentioned above, the entire original purpose of KataGo was about more than just Go. It was to make it easier for a wide range of game AI researchers and developers to be able to build high-quality programs for different games. If anyone wants to take KataGo’s ideas, or its published algorithm techniques, or its code directly, and build upon them further to solve new problems or surpass KataGo itself – then that is a success. My only wish is for people to be friendly and honest about when they use KataGo – whether they clone it with only minor modifications, or whether they use it as simply the foundation for genuine new training and original research. When developing KataGo, the goal has never been about trying to beat other people, or to be the best, or to win. I don’t care if it wins or is the top bot, that doesn’t matter. Instead KataGo’s purpose is to make it possible for everyone to do better together.

当然。我前面提过,KataGo的全部初衷绝不仅仅是围棋,而是为帮助AI研究人员和开发人员更轻松适配不同游戏所构建的高质量程序。如果有人直接套用了KataGo,或拿走已公开的算法技术或代码为之所用,并在其基础上进一步解决新问题或超越KataGo本身——那就是一种成功。我唯一的愿望是人们对借用KataGo的行为能够大方、诚实——不论是对其进行少量修改的克隆,还是将其用作新研究的基石。开发KataGo的目的从来都不是击败人类、冠绝AI或是赢得胜利。我不在乎它是永远赢棋还是最顶尖AI,这无所谓。相反,KataGo是希望让大家一起做到更好。

And in Go, I’ve been told that in the recent Go AI tournament preliminaries in Fuzhou, besides the public KataGo entry, at least a few of the submissions were based off of KataGo and that in at least one case, a team also developed new improvements with new separate training. And I’ve been told that a few of these submissions might have made it to the upcoming final rounds as well, which is great. I am mostly a spectator and not actively involved, but if this is true then I would hope that after the conclusion of the tournament such teams would consider publishing their methods, especially if they can share new algorithms and training techniques. It makes me happy that I was able to make an AI that other people would want to use or to build on top of.

我被告知说在最近的福州围棋AI锦标赛预赛中,除KataGo外,还有一些参赛作品是基于KataGo编写的,并且不止一支团队都通过独立训练后有了新的改进。可能会在后续淘汰赛中看到各AI的精彩表现,这很棒。没有亲身参与比赛的我只是一名看客,但如果这是真的,那么我希望比赛结束后,相关团队可以考虑公开,特别是共享新的算法和训练技术。我为自己能够创作出其他人想要使用或构建的AI感到非常高兴。

Aside from Go and “Gobang” (Gomoku?), I have also been privately contacted by a few developers for other different games, who have reported that they found some of the individual techniques in KataGo useful (“playout cap randomization”, “auxiliary training targets”, etc), and helped answer questions about how to apply them. I’ve also talked with some researchers doing more general work on trying to improve the accuracy of game-tree-search as well. In all of these cases, if KataGo can help make a foundation for other people to do new and better research, that makes me excited.

除了围棋和五子棋之外,一些开发人员还私下与我联系,说他们发现KataGo中的某些独立技术很有用(“计算量上限随机化”,“辅助训练目标”等),我还与一些研究人员进行了交谈,他们也在尝试提高游戏树搜索的准确性方面做了更广泛的工作。在所有这些情况下,如果KataGo可以为其他人开展新的更好的研究打下基础,那会让我很激动。

8. Taxing makes the game of Go different, which is an option in KataGo. Is this tax process achieved through training or a specific algorithm? Could it be realized that in the tax mode, White first moves?

还棋头是KataGo中的一个选项,因为还棋头,使围棋的下法出现不同。这个过程是通过训练所得还是特定算法实现的?因此能否实现还棋头模式下,白先落子?

KataGo handles different rules variations and board sizes simply by training the neural net with lots of games with these rules during self-play. You can definitely use “tax” rules or “stone scoring” rules – KataGo plays a major fraction of its games with them, so it should have much experience. And including with white playing first if you like, since KataGo doesn’t care what color moves first. If you want to make white move first, then just tell KataGo to play a move for white first instead of black, and set the “komi” to either 0 or to a negative number so that black is the one that receives compensation for moving second instead of white.

KataGo通过大量自对弈,实现了对神经网络适应不同规则和棋盘尺寸的训练。“还棋头”或“数子”规则也不在话下——KataGo已然成功完成了很多对局,可以说是经验丰富。另外白棋先行也没问题,KataGo不在乎棋子颜色。如果要先落白子,只需要告诉KataGo先是白子而非黑子先行棋,然后将“贴目”设置成0或负数,这样黑色就是被贴目的那一方。

One fascinating thing about the ancient “tax” or “stone scoring” rules is that they seem to slightly encourage a more cosmic-style of play. Because the penalty is increased for making multiple small groups, this means playing lots of big global moves and making large frameworks becomes more favored. For example, under these rules, 3-3 invasion appears to be no longer a good move to play early, and fighting for influence on the sides and center becomes more favored too. For people who have been a little disappointed about the high value that modern AIs place on the corner territory and the resulting tight style of game, perhaps these ancient rules might feel refreshing.

关于古代“还棋头”和“数子”规则有趣的是,似乎在某种程度上鼓励的是一种更宏大的行棋思路。由于多块活棋会被要求还子,也就使得进行全盘性质的大动作和大型模样作战更加受到青睐。例如,在这些规则下,“三三”进攻似乎不再是布局的好选点,而争夺边路和中央势力范围显得更为重要。那些对现代AI重视四角和紧凑棋风失望的爱好者,或许这些古棋规则可能令人耳目一新。

9. What level do you think KataGo will eventually reach, such as how much higher the elo rating will be, comparing with the current version?

您认为KataGo最终会达到一个什么水平,比如比现在的版本高出多少elo等级分?

It’s very hard to say! As I mentioned above, I hope KataGo can begin distributed training fairly soon, and that there can be enough community support to continue improving as a free and open program for everyone to use. We will see how much farther it can improve. 🙂

很难讲吧!如前所述,我希望KataGo能够尽快投入分布式训练,并且衷心期盼作为供所有人使用的免费开放程序,能够有足够的反馈来支持其继续改进。我们会看到它可以达到多高的水准的(笑)。

作者:

喜欢围棋和编程。

 
发布于 分类 围棋标签

发表评论

电子邮件地址不会被公开。