一些感想

田渊栋 2018年5月3日 14:57

写完了官方报告现在写一点自己的感想。

这个项目不是为了做最好的围棋程序,不是说要打败谁。我们做这个是因为以下三个目的:

(1) AlphaGoZero/AlphaZero算法很有意思,我们想知道为什么它有效果,是怎么会有效果的,是不是如同宣传的那样是百试百灵的通用算法,是不是只要堆机器,强人工智能马上就来了?还是说其实这个算法有什么问题和弱点?DeepMind不开源也不透露细节,文章里面一些地方也没有写得很清楚。我之前写过Blog讨论过,但是没有第一手经验总不是很踏实。所以本着研究目的,我们需要复现一下,先有复现,才有创新,这个是做研究的习惯。

(2) 今年年初我重写了ELF的核心代码,另外也加了分布式训练,需要找个具体应用来测试一下。站在这个角度上,AlphaGoZero/AlphaZero是个完美的选择,再说之前也有DarkForest的代码和围棋程序的经验,所以把它们拼起来不用花太多力气。

(3) 不管是通用算法还是分布式平台,都可以用来干很多别的事情,不一定是围棋,不一定是游戏。如果我们去看ELF OpenGo的代码,会发现其实很大一部分和围棋一点关系也没有,完全适用于其它方向的工作。而围棋对我们来说,只是一个把算法和平台做好的手段。在这一点上,花点时间把围棋做好是值得的。

两年前为什么我决定停止做DarkForest,主要是因为当时科研上再做围棋价值不大了;现在继续做这个,主要是因为AGZ/AZ作为一个一般化的算法非常有趣,研究它可能会有新的感悟,能对问题有新的理解——这个是科学的最终目的。

今天ELF OpenGo终于发布,我觉得这三个目的都达到了,而且为整个研究界贡献了我们在探索中所获得的知识,非常高兴。

这个项目从今年一月开始,做了四个月不到的时间。首先写了一个AZ的版本,效果不是很好;然后写了AGZ,效果还是一般;直到我发现一个PyTorch的bug(见 KLDivLoss behaves differently on CPU/GPU · Issue #5801 · pytorch/pytorch ,GPU下梯度有错,CPU下正常),修掉了之后,AI水平就像野马奔腾一样往上冲,令人叹为观止。最后为了加快速度又换成了AZ。要是从一开始就没有这个bug,很可能可以提前两个月发布。大家要是做VAE,GAN或者有任何用到KL divergence的地方,要注意用最新的PyTorch,免得掉坑里面。当然有这几个转折后的好处是我们对整个系统的行为有了更深的理解,同时发布的代码里可以选择是用AGZ或者AZ,或者其它的中间方案。

整个新版ELF,分布式框架及快速蒙特卡罗搜索的代码是我搭建起来的,部署在CGOS和LeelaZero上的实验,还有半精度前馈网络的测试由龚渠成负责,各种分布式部署、调参、蒙特卡罗搜索的测试及代码重构由Jerry和Shubho还有卓远负责,Larry则提供了巨大的支持。这里感谢大家的辛勤工作!另外吴育昕在整个项目中也帮了挺多忙,还要感谢公司提供的大量资源,不然最后的模型不会有那么好的效果,更不用说能在无时限慢棋中以单卡战胜职业高手。

插个花絮:之前大家在猜测CGOS上那些以美国总统和朝代为名(除了jin_lee)的bot都是谁,其实那些都是我们各种不同版本的bot。本来是要用朝代名序列的,不过不知道是谁搞了个 jin_lee抢了先,所以切换成了美国总统序列。

相关阅读
  • 推荐阅读
  • 文章导航