电脑为何下不过围棋高手?
电脑为何下不过围棋高手?
我是Facebook的智能围棋darkforest的负责人和第一作者。现在我们最新的darkfmcts3 在KGS上有5段,和目前最好的软件相当,让四子与一位韩国的职业六段一胜一负。收到的评论都是说“下得非常像人”,大局观强,屡见好手,当然偶尔也犯低级错误。
我们用了DCNN(深度卷积神经网络)进行模式匹配再加MCTS(蒙特卡罗树)搜索的办法。DCNN其实要比简单的开局库或者搜索引擎要厉害得多,在看过十几万局棋之后,它会有比较强的泛化能力,或者通俗地说是举一反三的能力。围棋虽说是“千古无同局”,但在局部及开局还是有很多相似或者相同的模式会反复出现,DCNN能够抓住这些模式并且在实战中灵活运用。完全不用搜索的DCNN挂在KGS上就有3段的水平,这是非常让人吃惊的,甚至比我们通过搜索能达到5段更让人吃惊,我们只在这个项目上花了五个月的时间,若是用传统方法来做这个模式识别,估计耗时几年1k都不一定上得了。
单单拿游戏的状态个数去比较它们的难度,是不准确的。有很多状态空间广阔但是易解的例子。比如状态空间的估值函数很平滑,用一个简单的函数就容易拟合,在这种情况下即使状态数目是无穷大,问题也不难。
让计算机投篮,出手的方向、速度、篮球的旋转,每个变量都是连续的,因而有无限可能,但是计算机试几次之后很快就能找到最优解。又比如状态空间存在可以用数学表达的全局结构,这样用贪心法或者动态规划也可以很快地解决,其难度和状态个数就无关。
比如说棋盘上放些黑子作障碍物,要求白子从左上角走到右下角,哪怕是千路万路棋盘,尽管可能的路径有指数条,一个最短路径搜索也就可以搞定了。
围棋难的地方在于它的估值函数非常不平滑,差一个子盘面就可能天翻地覆,同时状态空间大,也没有全局的结构。这两点加起来,迫使目前计算机只能用穷举法并且因此进展缓慢。但人能下得好,能在几百个选择中知道哪几个位置值得考虑,说明它的估值函数是有规律的。这些规律远远不是几条简单公式所能概括,但所需的信息量还是要比状态空间本身的数目要少得多(得多)。现在的深度学习能在大量对局中找到这样的一些规律,但仍然没有人脑厉害。这一方面说明我们现在算法的局限性,另一方面它还有巨大的发展空间。
一句话,穷举状态并不是最终目标,就算以后超超级计算机能做到这一点,也不能说解决了人工智能。只有找到能学出规律的学习算法,才是解决问题的根本手段。像NP-hard的问题也是如此,不太可能会在多项式时间内被一个简单算法解决,也不太可能需要超级计算机穷举解决,而是会被过去的大量经验加上适当搜索解决。这个方向最近开始有一些文章了,我觉得这是个有趣的方向。
大家都知道创造是需要素材的,从机器学习的角度来说,素材就是给自己大脑的训练样本,在从这些样本中抽取别人不曾抽取到的共同点,找到潜在的联系及局限性,创造力就会自然而然地产生。
现在机器不如人的地方就是它抽取的效率太低,需要大量的样本,而人脑在过去经验加上更有效算法的基础上,只要几个样本就可以做到。如何让计算机也做到这一点?我们还需要进一步的研究。
■作者:田渊栋,美国卡耐基梅隆大学机器人系博士
为什么不会被自己的呼噜声吵醒?
为什么对于有些在睡梦中打呼噜的人,自己的呼噜声不能把自己吵醒反而细小的声音,比如蚊子的声音却可以吵醒你呢?打呼噜的人的身体在打的时候就已经知道会有呼噜声,这时候听见呼噜声也没什么意外的了。
比如你在转眼球的时候,虽然视网膜上的像旋转了,但你不会感觉世界在转,因为眼球肌肉的信号已经给了一份拷贝告诉你这是你自己在转眼球。同样,你挠自己的胳肢窝很难觉得痒,而别人一挠就痒。这个原理是,在人的中枢向肌肉传递动作信号时,还会产生一份信号拷贝,由比较器将其与感觉系统的信号进行比较,如果一致则抵消影响。这样你就对自己的动作所产生的变化有了“防备”,从而减少了对自己动作的反应。
从进化意义上来讲,生物体感受系统的信号被分成了两部分,其中一部分跟运动信号拷贝的预测结果一样,另外跟自己运动无关。这样的机制可以帮助你保持世界的稳定,减少不必要的信号干扰,提高信噪比,也免得因为自己制造的信号产生不必要的警觉。
■作者:林枭雄,北京大学心理学系