返回列表 发帖

绝艺的发展历程——从AlphaGo到国产狗绝艺系列评论之三

来源:知乎  逝水  2017-03-27


腾讯公司从2016年2月才开始着手研制围棋AI,3月才正式立项和组建团队,6月下旬绝艺的棋力就达到业余6段水平,8月开始在野孤平台上下棋,8月23日首次战胜职业棋手,11月2日第一次战胜世界冠军江维杰,11月19日首次战胜柯洁交手。简直是光彩夺目的进步历史,作为人类,以前没有,今后我相信不会有任何一个人可以在一年之内进步如此之快。绝艺进步的神速当然是得益于腾讯站在巨人的肩膀上。

正如腾讯绝艺研制团队接受采访时谈到的:

据绝艺团队介绍,绝艺的学习方式包含两部分,一部分来自人类棋谱,通过深度卷积网络的训练,得到一个策略网络;第二部分为自对弈棋谱,也通过深度卷积网络训练,得到一个估值网络。

在绝艺的成长过程中,与人类棋手对弈是绝艺强大起来的重要原因,绝艺的突破性进展总是伴随其战胜某一实力水平的棋手出现。

本人在去年AlphaGo与李世石对战时,依据Google发表的论文,花了两幅图来说明其工作原理。

AlphaGo的原理架构图

AlphaGo下棋的具体过程

可见,绝艺使用的技术和AlphaGo非常类似,都是采用了MCTS+策略网络+估值网络的基本架构。根据媒体报道,我概况了一下,绝艺快速进步的原因主要就是两点:

- 更有效的强化学习方法,能够创造出更优质的自我对局模拟数据,导致绝艺的对杀能力更强;

- 在世界超一流棋手的指导下不断改进设计。这一点的确是中国的优势,因为野狐围棋平台本身就属于腾讯旗下,因此近水楼台的优势就显现出来。

腾讯团队接受采访时提到利用腾讯云计算生成高质量数据,媒体报道的并不清楚,我本人并不认为这是什么关键环节。

这就是科学技术的力量,义和团用气功一定打不过洋人的洋枪洋炮,但是只要掌握了正确的方法,国产围棋狗绝艺的水准就可以在很短时间内与强大的阿狗想媲美。事实证明,MCTS+深度学习的确是处理类似围棋这样公开信息博弈问题的优秀方案。

实际上,上述两点对于目前大热的基于深度学习的人工智能领域来讲,恰恰是关键的两个方面。第一点,增强学习实际上是解决训练数据不足的问题,因为即使咋大数据时代,面对许多复杂问题,现有的训练数据仍然在规模上是远远不够的。围棋就是这样的情况,可能的局面比宇宙总所有源自的数量哈多很多,能够用于训练神经网络的实战对局数量相比起来就少的可怜了,因此就需要使用增强学习方法来提供额外的训练数据,Google的AlphaGo就是通过自我对战来产生模拟数据,腾讯团队没有进一步解释具体的技术策略,这一定是其核心技术,技术复用性很强,对今后咋其它领域的应用也很重要。

第二点实际上就是深度学习领域讲的有监督还是无监督学习的问题,因为计算机或者说神经网络本身并不知道设计这的意图,各种神经网络虽然在结构上有区别,但本质都相同,就是需要依靠训练数据调整网络各层各节点之间的连接参数,或者说权重。这就好比,我们在学校学习,一本好的教材很重要(训练数据),另一方面老师也很关键,因为好的老师可以及时指出你学习中存在的各种问题,及时纠正就可以比较快的进步。在老师指导下学习就相当于有监督学习,全部自学就相当于无监督学习。因为好老师总是很少,所以对于深度学习领域,如何通过无监督学习训练网络就很重要。

腾讯官方曾发布了一张绝艺的成长路线图:

我粗略统计了野孤围棋上绝艺的成绩,绝艺(含刑天、郦龙)交手的共有50名职业棋手,赢过绝艺的有28人,不考虑只下了一两盘的对局,成绩最好的古力,对绝艺的胜率37.5%。

“绝艺”账号

20167年11月19日晚,绝艺终于和柯洁下了两局棋,第一局绝艺胜,第二局惜败。之后,据说柯洁发了朋友圈:“下的全是汗…冷汗”。

绝艺虽然越杀越勇,但和人的对局多了,慢慢就暴露出缺陷,2017年2月10日,柯洁、连笑、范廷钰、范蕴若在野孤围棋上连续战胜绝艺,全是采用大规模对杀的招数,逼迫绝艺暂时闭关修炼。

结束闭关后,匪夷所思的是,绝艺对柯洁居然取得13连胜,其中6盘60秒棋仍然败北。绝艺似乎是得到了某本真经,打通了任督二脉,功力大增,之前的缺陷完全被修复了。

知乎网的PENG Bo先生曾经专门写文章分析绝艺可能的设计缺陷,他认为原因在于绝艺使用的深度卷积网络层数不够,导致信息不能有效传递,当大龙很长,AI就不一定知道这实际上是一条连通的大龙。PENG Bo先生还给人类棋手支招:

细长的大龙、分叉的大龙、卷曲的大龙,会尤其是它的弱点。棋手可以多尝试让电脑或自己的棋变成这样,电脑就会更容易看不清死活。细长的大龙、分叉的大龙、卷曲的大龙,会尤其是它的弱点。棋手可以多尝试让电脑或自己的棋变成这样,电脑就会更容易看不清死活。

@PENG Bo 先生的分析很有道理,但对此,我感到疑惑的是,如果原因确实如此,那么就需要重新设计神经网络,而这将导致需要重新训练。但是绝艺仅仅下线闭关三天就回来了,设计团队几乎不可能进行非常大的重新设计。

事实上,为了避免类似的问题,深度学习系统使用的神经网络层数越来越大,例这两年在ImageNet等国际大赛上刷新图像识别准确率新高的商汤公司,他们打造了的神经网络已经达到1207层。

后来我看到腾讯绝艺团队对此的回复是:

雷锋网:绝艺在2月10日时在野狐围棋被几位棋手连杀几局,随后被下线调整。当时到底遇到了哪些问题,你们为此做了哪些调整?

绝艺团队:我们在测试 布局、中盘、官子三个阶段的平衡,加强中盘之后,对杀问题就不存在了。


我认为绝艺团队的回答应该是靠谱的,虽然他们并没有讲更多的细节。本人在知乎的一个回答中(AlphaGo 与李世石的第五局比赛中有哪些值得关注之处?):

围棋的状态空间如此之大,不可能穷尽所有可能,目前阿狗在训练中也就是学习了3千万盘棋。这样,MCTS搜索就必须要剪枝,而剪枝那就必然可能丢掉更有威胁的招数,只不过概率很小而已。这个问题比较难解决,所以Google也说要重新训练估值网络。那么,可能的方法一是要考虑加强对更高段位棋手对局学习的权重。说起来容易,做起来难,首先就是权重到底调整成多少合适?其次就是如何识别好棋?不见得高段位下出的一定是好棋,人可以知道哪些棋好,自动判断很难。还有训练神经网络需要的对局数量很大,怎么解决?

我尝试从另一个角度思考如何解决:DCNN过度拟合的问题不好解决,但是可以考虑动态调整决策时分配给MCTS和估值网络的权重。和田渊栋老师交流时,我们都认为:因为目前阿狗的设计是估值网络只给出一个评估数,如果对MCTS搜索的节点,都估值,然后再统计,效果可能更好。但是因为MCTS的每个叶子节点都是新拓展出来的,都进行估值,情况就非常复杂,计算速度也是问题。

但是我们可以简化一点。再重新看阿狗的基本结构:阿狗相当于拥有两个大脑,一个是逻辑计算能力强的左脑(局部强,但是看的不远),另一个是有大局观的右脑(有时死活不分,对杀会出错)。其他的围棋程序一般只有左脑,所以下不赢高手。阿狗厉害的地方就在于把这两个大脑结合和平衡的很好,不过所谓的平衡也就是上面那个直接各自0.5的权重。Google通过自我对局,觉得0.5的权重对比其他全总有95%的胜率,这个我实在是觉得Deepmind做得不好,怎么能用这个逻辑去决定就用0.5呢,问题根本就没有全部搞清楚:不仅要在不同的对局中比较不同的权重,还要在同一个对局的不同阶段比较权重的优劣。

权重的选择目前还很难用理论指导,但是至少我们可以直观通过和人类比得出判断:开局阶段,大家都在布局,也没法算到很清楚,所以就应该多依靠定式和大局观,对于阿狗,就应该给估值网络更大权重;在官子阶段和局部,人可以算的很清楚,就应该多依靠左脑,也就是MTCS搜索的结果。我看直播中,古力和常昊也就是算个十多步,阿狗可以算20步,这个能力应该是很强的。综合看整个5局,大家发现阿狗九段的大局观很好,这很出乎意料,但是局部和官子反而不那么好,好比阿狗是一个天赋非常好的高手,不过得了一个偶尔会『突发性短时抽疯』的毛病,抽疯时直接就不会下棋了。其实我们的直觉判断没错,阿狗的计算能力是很强,但有时没有表现出来的原因就是我上面阐述的,不是阿狗计算不好,是平衡的不好。这个权重可能就是我们所说的棋风吧,它决定了棋手是擅长布局,视野开阔的聂卫平,还是计算能力超强、锱铢必较的李昌镐;亦或是大开大合的古力!不过阿狗九段只要解决了这个问题,就可以更厉害,成为十段(写到这里,真觉得我们这些死程序员真是亡人类之心不死啊!)

绝艺在闭关之后仍然尝到了多次败绩,往往输在官子阶段,因此似乎仍然不同程度存在于深禅类似的问题,相信腾讯团队也在不断地完善绝艺。

腾讯团队这样评价深度学习:

“我们从来没有想象AI可以这么强,很多很复杂的棋,真不知道它为什么可以正确应对,只能说深度神经网络真的很神奇。”

的确是这样,深度学习,或者说深度神经网络本身的理论基础其实到目前并不十分清楚,但其效果却毋庸置喙,不论是在指纹识别、人脸识别、文本分类、语音识别等等领域,使用深度学习技术后,都几乎在数量级层面提高了识别率。

绝艺夺冠--从AlphaGo到国产狗绝艺系列评论之一 - 知乎专栏

2016波澜壮阔的人工智能元年从AlphaGo到国产狗绝艺系列评论之二 - 知乎专栏

绝艺的发展历程--从AlphaGo到国产狗绝艺系列评论之三 - 知乎专栏
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

返回列表