楼主:
aaaba (小强)
2016-01-30 16:49:38AlphaGo的问世,使得有些人会很好奇怎么这么强,甚至觉得怀疑,提出造假论
我想就我的理解来让大家稍稍体会AG或一般程式里面的运作模式。不过,因为
我不是专家,同时又要写的通俗,难免背离实际设计难度而过度简化,欢迎指正
与补充。
整个系统主要有几个大的模组,简介如下:
形势判断模组(value network)
这个模组要回答一个很单纯的问题:给你看一个中盘,请问双方获胜机率为何?
训练方式就是给非常非常大量的棋谱库,随机展示(中盘画面,最终输赢)这样
的案例给电脑去学习,学习的方法是最近人工智能的大热门 deep learning,有
兴趣且英文好的玩家推荐去看 udacity 上 google 专家的线上教学。
下一步去哪儿模组(policy network)
这个模组要回答一个很单纯的问题:给你看一个中盘,请问棋盘上每个位置成为
下一手的机率为何?训练方式就是给非常非常大量的棋谱库,随机展示(中盘画
面,下一手)这样的案例给电脑去学习。
赛局树(Game tree)
用张图举个例子 http://imgur.com/XwQ6tmm
上图:假设圆圈是该黑棋下,方块是该白棋下,假设现在“下一步
模组”会提供两个落子的可能性,黑棋任选其一下了之后,就会出
现两个可能的盘面情形(分支),接着,请出“形势判断模组”来
打分数,分别给出-6和-11的得分,如果黑棋只满足于最最简单的
计算,那么它就会挑-6这个相对较好的发展方向来落子,问号的位
置将被填入-6。
中图:假设黑棋认为时间充裕或他的硬件强大,可以做更深入的
计算。那他或许觉得把-6这个局势再多设想一步比较保险,于是
现在从-6这个盘面开始考虑,是该白棋落子了。同样透过“下一步
模组”来提供两个落子的可能性,白棋任选其一下了之后,就会出
现两个可能的盘面情形,接着,请出“形势判断模组”来打分数,
分别给出21和-8的得分。
下图:因为要站在白棋的角度思考,他想把盘面弄的对黑棋不利
,21和-8中,白棋应会选择-8,于是,在第一张图时原本认为导
向-6这个局面其实再更进一步思量之后,局面继续发展方向没那
么乐观,实际上只有-8分而已。至此,最顶层的黑棋便必须在-8
或-11中挑较佳的下,所以下图里面的问号将会被填上-8,代表以
黑棋目前的细算能力,他认为他会把棋盘导向最下排右边那个得
分-8的盘面。
以此类推,轮流请出两个模组的结果,就是这棵树会越长越多层。
如果你的时间充裕或硬件强大,也可以让“下一步模组”每次提供
三个以上的落子位置来候选,这样树就会长得比较宽(分支较多)
,又或者,你可以一次又一次的使用“下一步模组”来多往下发展
几步,这样树就会长得比较深比较多层。总之,你有多少养分,就
可以种多大的树,随时可以喊停,不用去穷尽所有棋局变化,这样
做是不切实际的。
最大最小法则(Minmax rule)
以这个图作为例子 http://imgur.com/TsmiK04
现在该黑棋下,他当然希望局面分数越高越好(Max),但是他也
知道白棋不会让他如意,会试图把局面搞得越难看越好(Min),
于是,即使在他这棵0~4层的细算树里面也有着高达20分的分支,
黑棋是不可妄想去走到那个盘面的,他会从-8和-10选一个相对高
的,也就是问号的位置会被填入-8,代表目前黑棋可达到的最好形
势。备注一下这里的分数只是网络上随便抓的图,真正的分数可以
想成是落在0~1的获胜机率。当然,这个最大最小法则只是最粗浅
的赛局策略而已,实际上AlphaGo有更好的细算方法,叫做蒙地卡罗
树搜寻(Monte Carlo tree search),复杂许多,这里就不细说了。
结语
近五年由于 deep learning 的问世,提炼出大量数据之精华的效果也变得超级好,
人工智能的趋势就是:得大数据/超级电脑者,得天下。旧的工程方法引入 deep
learning 改良后效能也都是巨幅提升,不仅仅是在电脑围棋这块而已。
作者:
sky0302 (free)
2016-01-30 17:00:00围棋TV有说 以前电脑的算法是硬算各种变化现在算法比较像人类 会用删去法 先排除可能比较差的棋不过就像不知道是不是李世石 还是哪位职棋说的这种算法也有漏洞 因为那些被排除了 也可能刚好是好棋也就是现在的电脑是比较像人类了 但要赢人类还要打问号就算电脑最终赢人类 也不代表它每手棋都是一百分
作者: milkdragon (谢谢大家!!) 2016-01-30 18:15:00
你的图是 min-max tree, 不是mcts喔,mcts是不平衡的树mcts有别minmax的地方,其中一点就在于不用一视同仁地长到一样的深度再呼叫评估函数,而可以往较好的方向长得较深,这当然是重点之一。要是长成平衡的树,就变成worst case,大违MCTS本意了。呃……我没有恶意,也很感谢你分享想法,不过那张图摆明就是minmax的图,最上层的选择,是基于叶节点一层选min一层选max这样推回来的,跟mcts“完全”不一样。再说,这张图没有完全平衡,那是因为那些点没办法再往下长了,注意看那是无限的符号,代表某方获胜了,当然不需要继续往下长囉。mcrs当然“绝对”可以长出一颗平衡的树,只要在selection步骤中把控制利用跟探索的平衡的参数调成一个很过分的值,这样mcts会平均给每个候选点模拟的机会,这样当然要多平衡有多平衡,但如此一来就成了worst casr,搜寻深度会很浅,对棋力没有任何帮助。抱歉,手机打字,有的字打歪了,不过应该不影响阅读吧
作者:
GHowPan (豪洨)
2016-01-31 10:40:00跟电脑下就是要下成乱斗
作者:
paulli (paulli)
2016-01-31 11:54:00请问可借转弈棋站吗?谢谢
楼主:
aaaba (小强)
2016-01-31 21:22:00可以转,不过明天有空我会修正一些内容,现在的不尽正确。
作者:
paulli (paulli)
2016-02-01 14:01:00作者:
bearching (Pandora`s Box)
2016-02-04 01:20:00请教一下genetic programming有机会用在这个AI里吗
作者:
ddavid (谎言接线生)
2016-02-04 03:21:00基因算法现今来看应该不算是很适合拿来解19x19围棋它的本质还是search,只是找解的顺序不同。然后它太依赖对好的目前盘面编码以及评估函式,我觉得在计算时间上以及选取好着手两个方面都不见得特别优秀
作者:
ztdxqa (ztdxqa)
2016-02-04 12:38:00基因算法感觉好古老喔 最近有新突破吗?