Board logo

标题: 知乎热话:是否不按套路下棋就能赢AlphaGo? [打印本页]

作者: 天马行空    时间: 2021-2-12 12:39     标题: 知乎热话:是否不按套路下棋就能赢AlphaGo?

2021年01月29日 14:51 体育综合

  在2016年3月13日AlphaGo与李世石的对阵中,比赛进行到两个半小时后,李世石仅剩下17分钟,比“阿尔法围棋”剩余时间足足少1个小时。但随后李世石祭出白78“挖”妙手,一场“逆袭”之战也由此开始。AlphaGo被李世石的“神之一手”下得陷入混乱,走出了黑93一步常理上的废棋,导致棋盘右侧一大片黑子“全死”。此后,“阿尔法围棋”判断局面对自己不利,每步耗时明显增长,更首次被李世石拖入读秒。最终,李世石冷静收官锁定胜局。

  那我们是否可以这样认为:当我们不按套路下棋(类似李世石的神之一手),让 AlphaGo在数据库中找不到应对方法,陷入逻辑混乱,是不是就可以赢AlphaGo了?让我们来看看知乎棋迷们贡献出了怎样精彩的回答吧。

  知乎作者:‘已注销’

  题主问的这个问题非常有意思,因为它牵扯到了一个深度学习里非常重要而又在这种情况下,很难定义的一个概念。

  首先,AlphaGo 一共分为3个版本,从人类棋谱中学习的AlphaGo, 未知方法的AlphaGo Master和从零开始的AlphaGo Zero。这三个版本的训练方式完全不同,所以也需要分开来看才能取得有意义的结论。

  我们先来说AlphaGo。

  AlphaGo 的训练方式非常简单。用大白话来说,就是让AI从棋盘中的情况预测职业棋手会下的下一手,而这下一手的来源则来自于职业棋手有限的棋谱。

  在这个情况下,“不按套路出牌”可以理解为下一手在棋谱中不存在,没有任何一个职业棋手下过的一步。这看起来非常promising,但是实际上AlphaGo 不一定会陷入逻辑混乱,因为它可以generalize (归纳 ,总结)。

  深度学习中一般将使用已存在的输入(棋盘中的情况)和相对应的期望输出(职业棋手的下一手)pairs的模型称作监督学习的模型。在这个情况下,generalization performance就可以被非常直观的定义成遇到“不按套路”时模型的表现。 而在AlphaGo的情况下, 因为AlphaGo训练使用的输入-输出pairs非常非常的多,所以generalization performance 也很自然的不会特别差。

  所以,在AlphaGo这一情况下,让AlphaGo陷入“逻辑混乱”,在遇到没遇见的一手时表现出非常差的棋力是有可能的。

  但是,对于AlphaGo Zero这个豪华升级版来说,情况就不太一样了。

  AlphaGo Zero训练时并没有使用职业棋手所下过的棋谱,而是从零开始左右搏击,从自己的棋谱中训练。(强化学习)

  简单来说,AlphaGo Zero和自己下棋(selfplay)所获得到的棋谱肯定有一方完胜,一方完败的情况(废话)。所以,直接让AlphaGo Zero学习完胜那方在那一局里面的下法就可以在自己的基础上继续进步了。

  这个时候,“不按套路出牌”就和上面那个例子不太一样了。现在,因为和自己下棋不需要人类参与,谷歌又特别有钱,和自己下棋的次数非常非常多,所以很难找到上面那个意义的“神之一手”。

  同时,强化学习这个方式也可以自动增加generalization performance。如果AlphaGo Zero只会玩一个套路的话,那么selfplay两方只要一方随便下一手就赢了。所以,AlphaGo Zero会自动学习到几乎所有的套路,使得自己在selfplay时不会因为随机一手而导致全盘皆输。

  但是,强化学习也有自己的缺陷,也就是forgetting。因为在selfplay的时候,模型永远在和现在的自己对战,所以很有可能记不住以前下过的对手所操控的脏套路和相对的应对措施。

  这就和你在星际争霸里钻石段位打了无数局,回到白银段位还是被光炮rush黄金舰队吊锤师一个道理。

  为了解决这个问题,AlphaGo Zero使用了replay buffer。它现在不仅会从最新的棋局中学习,也会从离现在500000局内的所有棋局学习,以此来提高它的记忆能力。

  总的来说,遇上AlphaGo,“不按套路下棋”是有可能下出“神之一手”的。遇上AlphaGo Zero,那“神之一手”的存在概率低到基本上可以忽略的地步,可以无视。

  但是,现在最有可能和AlphaGo Zero对战的情况是在World AI Tournament里扮演星阵,PheonixGo, 韩豆,里拉 (leela-zero), MiniGo, SAI中的一位。没想到现在连围棋ai都能上知乎了,看来强人工智能真的离我们不远了。

[attach]193051[/attach]


  知乎作者:含辛

  提出这个问题显然是对机器学习缺乏最基本的了解。

  实际上alphago本身下棋就是没有所谓套路的,alphago的目标很简单,就是通过海量对弈学习找到某一固定布局下胜率最高的下法。为什么alphago知道怎么下胜率最高?因为在这一步之后的所有下法alphago都会试一遍。

  所以对于人类而言,你下在一个职业棋手很少下或者从来不会去下的地方,这叫不按套路,但是对alphago而言,棋盘上的每一点都是同样重要的,全都需要参与到最终的胜率计算中,人类职业棋手的常规下法在alphago的算法中并不拥有更高的特殊地位。如果用不按套路的方法和alphago下棋,唯一的结果只会是输得更快。

[attach]193052[/attach]


  知乎作者:sen2020

  AlphaGo 2016版本中,第一步是用Behavior Cloning从人类棋谱中学习,得到一个初步的策略网络。文章中号称 第一步结束之后 ,这个弱鸡策略网络可以打败业余棋手。如果你跟这个策略网络下棋,那么不按套路出牌确实可以打败这个策略网络。Behavior Cloning的弱点就是遇到没见过的状态会懵逼。

  但是,

  AlphaGo最终用的不是Behavior Cloning训练出的弱鸡策略网络。AlphaGo第二步做自我博弈,探索各种可能的状态,进一步提高策略网络。这一步叫做“强化学习”。Behavior Cloning+强化学习之后的策略网络 可以以80-20击败Behavior Cloning学出来的策略网络。这时候不按常理出牌已经不好使了。做强化学习的时候,AlphaGo已经探索过各种奇葩的走法,奇葩的走法对AlphaGo来说并不奇葩。

  这还没有完。

  AlphaGo跟李世石下棋用的不是这个更强的策略网络。这个策略网络只是辅助MCTS。AlphaGo最终形态是MCTS。每走一步棋,先模拟成千上万局,看出来当前怎么走胜算最大。这就像是开挂了一样,人不太可能有胜算。不管你的棋走得多么不合常理,AlphaGo根本不在乎,AlphaGo直接暴力模拟接下来可能发生的情况。

  后来AlphaGo又变强了。

  最新的版本叫做AlphaGo Zero。他们嫌人太笨了,于是训练策略网络的时候不跟人类棋谱学了。他们改用MCTS来监督学习策略网络。在最后比赛的时候用策略网络辅助MCTS。AlphaGo Zero跟“老版本”(就是虐了李世石的那个)对弈,比分100:0。

[attach]193053[/attach]


  知乎作者:Arcadia

  不能。首先不按套路下棋你确定你有获胜把握吗。。。如果亿万分之一的胜率也算能赢的话,就能吧。。。不按套路的前提是你对绝大多数套路了如指掌。

  以往AlphaGo采用了大量人类高手的对弈数据进行训练,这种训练过程多少会参杂一些定式。但随着训练过程的深入,AlphaGo能够通过自我对弈发掘新的定式(人类高手认为胜率不高),这种以人的思维角度,已经是不按套路出牌了。

  再者,AlphaGo不同于国际象棋的深蓝,没有采用暴力穷举,它的每一步都是基于当前的最优概率,所谓的不按套路出牌,其实在程序看来和走别的地方除了概率不同,没有区别。

  AlphaZero在AlphaGo基础上更进一步,不依赖于人类知识,完全通过自我博弈收集数据进行学习。每到一个没有出现过的局面,进行若干次模拟棋局得到每种走法的胜率,如此反复,神经网络可以更精确地对棋局进行判断。

  研究生的Machine Learning课程中有幸自己写了一个简易版本的AlphaZero,用于5x5棋盘大小的围棋比赛。

  有人可能会觉得5x5棋盘的围棋很简单(完全依照围棋规则),但如果没有一定围棋基础,是很难下过训练良好的模型的。

  一个很简单的类似AlphaZero的网络只用自我博弈1500局就能够打败其他同学训练了几十万次的q-learning模型,确实很厉害。大概就是策略-价值网络加蒙特卡洛树搜索,有兴趣的同学可以自己学习一下。

[attach]193054[/attach]


  知乎作者:时间旅客

  我觉得其实是有可能的,但实现难度应该比让模型把熊猫识别成大猩猩的难度要大一些。

  人工智能和深度学习领域中,有一个研究领域叫对抗攻击(Adversarial Attack),大概的意思就是想办法对输入的图片进行一些微小的变动,就可以让模型识别错误,例如下图。

[attach]193055[/attach]


  具体的攻击方法有很多,比如FGSM等。它们的攻击原理大概是深度学习的模型非常深,在某个层上面加上一点点噪音就可以产生蝴蝶效应,使最后一层的输出与之前大相径庭。具体的攻击方

  法是反梯度下降法,具体就不细说了(因为具体我也不太懂),这个研究在现实里面也是能用上的。

[attach]193056[/attach]


  回到题目,我觉得是有可能的。因为alphago算法中的一部分就是根据一个围棋局面图片预测下一个落子点的概率,就有可能我们落子的某一点的改变起到了类似对抗攻击的作用,使alphago的预测产生偏差了。

  那为什么说实现难度比较大呢?因为围棋和图片有不同之处,围棋棋盘是19*19大小,每个点只有3种可能(黑、白、无),对应模型的输入应该是(1,0,-1),而对抗攻击中的图片中每个点的像素可以随意调整小数的。即使算上吃子对棋盘分布的改变,落下一颗子对整个图片的影响也是比较离散的,因此我认为由于落下一个子而产生对抗攻击的概率比较小。

  不过如果是实际面对面的时候,可能就有更多攻击方式了,比如往棋盘上贴点黑白贴纸啥的。当然,裁判可能不允许

[attach]193057[/attach]


  无论是否可行,能提出这一问题本就难能可贵,但或许围棋人工智能的意义并不是被人类战胜,而是在更深远的层面去推动围棋与科技的关联性发展。

  (棋牌深度报道组 跳跳)




欢迎光临 亦苏围棋社区 (http://ysgo.91em.com/bbs/) Powered by Discuz! 7.2