1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

计算机迟早会在围棋上下赢人类的,不过跟量子计算没关系

本帖由 漂亮的石头2015-02-17 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    485,167
    赞:
    46
    围棋作为唯一一种电脑下不赢人的大众棋类,是何原因导致?以及量子计算机出现后有无可能?


    围棋没有深入了解过,真的有那么难以及那么多变化么?以及量子计算机出现后极大的数据处理量能否解决。

    [​IMG] 周瑶

    非常不好意思,因为一些感情上的事,所以现在才来回答。

    首先我要说明的是没有哪位科学家试图用量子计算来下围棋,至少目前还没有看到。题主的这个问题和问的另一个量子计算机会不会取代今天的计算机算法技术? - 互联网有很强的相关性,所以我就一起回答了,好让看到的人有一个整体的认识。

    观点:量子计算机不会取代传统的算法,但是有了量子计算机之后,一部分传统算法就失去了存在的价值;计算机迟早会在围棋上下赢人类的,跟量子计算机没有关系。

    另外题主的「量子计算机出现后极大的数据处理量」基本就是错误的说法,把量子计算想的太美好了。

    现在已经有叫 Many Faces of Go 的程序能在开局前先放 7 个子的情况下战胜专业的人类棋手了,虽然优势不太大,只有 4.5 分的差距。

    围棋计算机目前不能像深蓝一样战胜人类,主要原因在于围棋本身的复杂性,几个回答也都有提到。

    不考虑强人工智能,我们要让计算机下围棋采用的是蒙特卡罗树搜索(MCTS)的办法。比如现在处于局面 A,要让计算机决定下一步的走法,根据围棋规则,下一步的走法是确定的,到达 A1,A2,A3 等不同的局面。

    MCTS 的办法就是这样的,以 A1 为起点,随机决定下一步黑白双方的走法,再下一步还是随机走,直到计算机的资源耗尽或设定的值达到,然后判定是赢还是输,输赢的情况就被添加到 A1 的胜率中,然后重新以 A1 为起点,再乱走一遍,这样 A1 的胜率就改变了,然后又是一遍.....直到设定的次数,这样 A1 就有一个胜率了,然后针对 A2 又同样地来,A2 也有一个胜率.....然后每一个局面都有一个胜率了。

    是不是很简单粗暴?但这目前也是大多数程序的基本思想。为了增强计算机赢的概率,我们还要用到 Rapid Action Value Estimation(Rave),对于以局面 A1 为起点的随机走棋,如果最终是赢,那么我们把这个过程中下到棋子的每一个位置都加上一个点数,这样我们得到了 A1 的胜率和每一个位置的价值,但是 A1 其实也是下棋的位置,对于 A2,A3...也是同样,于是我们得到了每一个位置的胜率和「价值」。

    继续决定下一步的走法,计算机就可以参考胜率和「价值」来走。对于胜率来说,如果计算机的 10 次尝试中如果胜了 8 次,胜率 80%,但另一个尝试了 100 次,赢了 70 次,胜率 70%,一般地认为,应当采用赢的次数最多的走法,虽然 70%看起来胜率更低。

    还是很简单粗暴对不对?以这种方式下不赢人类,我觉得大抵是很正常的。感觉上就几乎是随机的办法。不采用全部搜索的办法就是因为计算机的性能不够,退而求其次用蒙特卡罗方法。

    人类当然不可能像计算机一样去分析没一种可能性,但是我们有智能啊,智能中最重要的能力是什么,模式识别啊,一张图片,计算机看到的是 1001110100........对于人类 来说,我们看到的就是一张图片,「图片」就是一种模式。对于一个棋局,人类可以看出其中的模式,但计算机就不行,所以就只能用穷举或随机的办法,如果考虑到人工智能呢?人工智能我就不掺和了:为什么最近有很多名人,比如比尔盖茨,马斯克、霍金等,让人们警惕人工智能? - 谢熊猫出没注意 - 知乎专栏,用人工智能的办法来下围棋,那战胜人类就是分分钟的事,只是目前没有很好的办法让计算机拥有智能。

    上面说不采用全部搜索的办法就是因为计算机的性能不够,那要是计算机的性能够了,足以在每秒钟之内分析完所有的可能性,那当然战胜人类就是分分钟的事。所以题主可能想,量子计算机会怎么样,它不是性能很强嘛。我估计题主认为「量子计算机有很强的数据处理能力是来源于大数分解问题,传统计算机永远也算不出来,量子计算机就算出来了,所以量子计算机处理速度肯定很快」。

    还真不是这样的,量子计算机分解大数并非因为处理速度很快,量子计算机分解大数的时候并不像传统计算机一样分析了每一种可能性。

    且听我道来。

    量子计算中最重要的算法是大因子分解的 Shor 算法,传统算法的基本思想就是把每一种可能尝试一下,发现,呃,好多可能性呀,几个世纪都算不完呢,那就用一些办法过滤一下,减少要分析的可能性的数量,最好的传统算法普通数域筛选法(GNFS),需要

    [​IMG]

    步计算出来,但 Shor 算法需要的[​IMG]个量子逻辑门就可以完成操作。

    Shor 算法的基本思想就是,用一个量子处理器同时计算了所有可能性,但是所有的结果是纠缠在一起的,要想得到结果,只能得到一个诶,因为一测量就破坏量子态了。要是得到了结果,验证了一下,发现,好像不对呢,所以,就换一个再来嘛,还是不对,再换......于是,只要有足够多的处理器,总有一个是正确的。

    简单粗暴

    要是运气好,说不定第一个算出来的就是正确的。要是运气不好……啊哈哈……不过幸好在操作中,我们可以通过一些办法使运算了一定次数后成功的概率无限接近 1。

    用另外一个例子来说量子计算的“同时”,假如我们现在要计算一个 10^1000 位数与一个 10^1000 位数的乘积,量子计算可以一次计算出所有 10^1000 位数之间的乘积,但是不好意思,这些结果是纠缠在一起的,您要测量一下,量子态坍缩了,就得到了所有结果中的任意一个,没准得到了 5201314。我想,没人想用量子计算机干这事。

    量子计算还有一个很重要的应用是 Grover 量子搜索算法,在 N 个无结构数据中搜索一个给定的数据,传统算法的时间复杂度[​IMG],计算机只能从头到尾挨个查询,通过量子算法可以使时间复杂度降低到[​IMG]

    量子计算用于傅里叶变换也是很有用的。

    量子计算有没有可能取代传统算法呢?

    在以上说的几个方面,没问题,可以取代。但是,驱动程序用量子计算机实现,不可能,操作系统,不可能。量子计算也不可能脱离传统计算机,就算是以上说的分解,分解的结果也要打印到屏幕上不是,还得要传统计算机的协作。

    简而言之,量子计算的局限性比较大。而传统算法则不仅仅局限于计算。随便来一个进程调度算法,什么,您想用量子计算机来实现?......今天的天气真好.....

    我想就不用解释为什么没人想用量子计算机下围棋了吧。

    强烈建议,以后改量子计算为量子算法,以区别于传统计算机。

    其实,说了这么多……什么围棋象棋 MCTS……感情才是世界上最复杂的事有没有!!!

    查看知乎原文
     
正在加载...