由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Go版 - 谈谈AlphaGo的算法 【转载】
相关主题
所谓机器与机器的顶尖对决,对人根本无意义打劫就是拼计算量
无需神化alpha go关于alphago的不合理招法
技术贴(懂围棋的请进)从第四盘棋看狗狗的弱点
阿法狗第二局最令人震惊的地方在于看阿法狗的自战棋谱有彻底崩溃的感觉
关于棋软的实力,以前的看法在哪个环节出了问题?以后围棋比赛都成了大型绞杀战zz
兄弟早就说阿发狗是会犯错误的不管棋渣如何炒作,赢棋是第一位的
AlphaGo通俗的解释如果狗再次赢棋, 就真的只能跪了
神经网络的结构决定了他的极限AlphaGo的错招似乎不少
相关话题的讨论汇总
话题: ai话题: alphago话题: 搜索话题: 变化话题: 赢棋
进入Go版参与讨论
1 (共1页)
E******w
发帖数: 2616
1
关于AlphaGo使用的算法的论文网上可以看到,虽然没有具体的细节,但是可以了解个
大概。这里我尝试解释一下为什么现在AI的棋力比过去有质的飞跃。它的弱点到底有可
能在哪里。
机器最大的优势是暴力搜索,利用高运算量多机联网的方式,在极短的时间内可以搜索
数量巨大的可能变化。这个能力人无法与之抗衡。机器的核心弱点是不明白为什么,不
明白道理,不会推理,形势判断显然也远不如人。对于围棋这样复杂度很高的游戏,机
器搜索能力再强,能搜的变化也只是所有变化的一小部分,如果花大量时间去搜索没有
意义的变化,搜索能力就不会对棋力有多大的影响。
过去AI集中解决的问题,就是对可能的变化的重要性进行排序。假设人在短时间内只能
搜索100种变化,而AI在同样的时间可以搜索几千万种变化,只要AI能够对各种变化排
序,保证人搜的那100种变化都被排在了几千万之内,那样AI就同样可以搜索人搜索过
的变化,逻辑推理能力的弱点就可以得到弥补。只要这个目的达到了,这100种变化是
不是用推理得出来的,这并不重要。(同样的道理,如果AI有能力搜索所有的变化,根
本就不需要任何推理能力也可以战胜人,归根结底是机器和人各有长处而已)
过去所谓的蒙特卡罗方法,就是在无法搜索所有变化的情况下,用致骰子的办法随机选
取一些变化进行搜索。AI反正不明白道理,随便丢弃的变化多半也未必是什么有意义的
变化。所以只要搜索能力足够强大,用蒙特卡罗方法搜索部分变化,仍然能逼近搜索全
部变化的效果。特别是如果有一些算法或者基本棋理原则的辅助,帮助AI丢弃一些明显
不合理的变化,偏重一些可能性大的变化,效果就会更好一些。
AlphaGo采用的对各种变化进行排序的方法,不是基于棋理,而是基于对高手对局的棋
谱的模仿。通过大量的学习,AI希望能够预测高手可能的选点,只要这个预测正确率不
低,就可以大幅减少需要的搜索计算。注意这里的预测不是精确地预测高手的下一步,
而是只要能做到高手的下一步出现在预测的列表之中就可以。比如AI每步可以选20个点
,只要高手的选点在这20个点之中,AI的预测就是成功的。这种模仿预测起到了两个重
要的效果,第一,进行搜索的时候,可以只搜索那些处于列表之中的变化,大大降低了
计算量;第二,基于这种降低了运算量的搜索,AI可以把很多棋演算到棋局结束(或者
演算到能够明显判断胜负的情况),这样的演算可以反过来帮助AI判断每步棋选点的价
值(只要演算出相应的胜率就可以了)。
AI把模仿高手行棋的算法存储在一个神经网络中,不断用棋谱对这个网络进行训练,最
终达到的目的是只要把当前的棋局输入这个网络,神经网络可以立即输出高手可能的选
点。准确率可以在网络实战中进行检验。训练神经网络需要很大的功夫,但是具体下棋
的时候,这个神经网络基本不需要运算量。其次,AI在模仿高手下棋的基础上,通过自
己和自己对战,来微调这些模仿招法的重要性。使得AI的方法不是单纯的模仿,而是在
模仿的基础上偏向于那些取胜率高的招法。这些胜率的数据也会给AI带来形势判断的基
础。就是说它每一步预测出来的走法列表中,每一个走法都有相应的胜率数据。
AlphaGo会按照这些胜率的数据对列表进行排序,按照变化的重要性来进行具体的搜索
。正式比赛中,棋局通常是AlphaGo的数据库中没有出现过的,AlphaGo会用上述方法往
前多算很多步,直到运算能力受限(比如时间限制),再对每一个搜索结果进行形势判
断,然后选出最优的下法。AlphaGo的所谓“不用搜索就可以达到业余三段”的说法,
就是说直接用预测,然后基于自己大量训练得到的胜率判断,在预测中选择最优的下法
。这样的方法可以达到业余三段的水平。而有搜索的算法,是基于这些预测往前多算很
多步,对推演后的结果再进行比较。
以上是我理解的AI方法的大概原理。对于围棋这个游戏来说,可能模仿高手的走法,对
减小AI的计算量的效果是巨大的。而对于其他一些复杂度相对较低的游戏,可能自我对
战涨棋的效果会大一些。而且,围棋的复杂度和运算困难主要还是体现在初期的大局判
断上,因此AlphaGo初期的走法可能还是以模仿为主。不过,这至少和业余棋手的思维
没有多大的区别。业余棋手在初期大致是在模仿高手,后期可能局部计算也不那么精细
。因此最终会败给AI。职业棋手在这些方面到底有多少优势,我觉得不那么好说。如果
不能利用AI的弱点使得局面大幅领先,那后期算错一个局部,可能就回天乏术了。
我觉得当前AlphaGo的核心弱点是,它的神经网络是按照优化“取胜概率”来训练的。
实际上最好的方法是应该按照优化”实地控制“来训练神经网络。以赢棋为目的是人的
思维方式,落后的时候放胜负手,领先的时候选择简明走法。机器没有这些问题。相反
,机器如果以赢棋为目的来训练,一旦规则改变,所有的训练都要重做。这是为什么
AlphaGo对Zen让九子也必须要黑方贴7目半。因为它的网络必须用这个贴目的胜负规则
。其次,以胜负为目的,会导致AlphaGo在局面大幅落后的情况下水平失常,因为它怎
么算都算不出赢棋的希望。这种情况下它分辨不出好手与臭棋。同样要命的是,在局面
领先的情况下,因为它算出很多招法都可以赢棋,因此它会走出缓手。与樊辉的对局中
不去吃对方的角,就是这个问题的表现。机器不懂得简化局面,它只是看见了那样下也
能赢而已。这个弱点,导致就算局面领先,AlphaGo也会慢慢把优势扔掉。这种情况下
它一样也会失去判断好手和臭棋的能力。
我觉得因为有这个明显的弱点,三月的比赛AlphaGo应该不可能打败李世石。0:5输掉是
最可能出现的结果。但是这个弱点并不是本质弱点。在将来的算法中一定可以改掉的。
D*******r
发帖数: 2323
2
说的大部分地方靠谱,个别地方需要纠正一下。
首先,先要理解所谓的棋理是什么?棋理的形成就是历史上成千上万局的胜负结果被总
结后形成的经验。
阿法狗的training不是简单的模仿高手的下法(只是模仿的话它就分不清哪些是臭手哪
些是好手),它的training和人类的学习过程基本是一样的,分析高手(其实也包括低
手)的棋谱,根据其结局以及分阶段的形式判断,来学习每手在不同情况下应对的好坏
,根据预判和实际结果的差异来调整自己的判断。区别只在于人不需要亲自去下几十万
盘去总结这些经验,人可以从老师那里学,从书上读,而计算机的经验全部是自己从“
实战”中去总结的,它不需要人来输入棋理。
另外一个,原作者认为计算机在判断优势情况下会下缓手,然后把前面的优势慢慢丧失
。其实情况正相反,计算机一旦保持了优势就很难丧失。因为后面“丧失优势”这种可
能性就包括在它的当前这手的获胜概率的统计中了,它选择的是获胜概率最高的一手,
而不是只要当前还能有优势的一手(也就是缓手)。
至于说到规则改变就要重新training也说的不正确。人不会因为贴五目半还是贴七目半
而把棋理全部推翻重新学棋,神经网络也一样,它的所有training的效果一样是保持的
,只需要对个别参数做调整来调整形势判断而已。如果让子多的情况下,还会有参数来
设置分阶段目标,比如让九子的情况,前50手争取把差距缩小为60目,100手内的目标
是把差距缩小为30目,小官子前把差距缩小为10目以内。这样就不需要让九子上来就找
盘面胜负的点,那会因为找不到一手不走就当场认输的,或者丧失理智去疯狂打入。

【在 E******w 的大作中提到】
: 关于AlphaGo使用的算法的论文网上可以看到,虽然没有具体的细节,但是可以了解个
: 大概。这里我尝试解释一下为什么现在AI的棋力比过去有质的飞跃。它的弱点到底有可
: 能在哪里。
: 机器最大的优势是暴力搜索,利用高运算量多机联网的方式,在极短的时间内可以搜索
: 数量巨大的可能变化。这个能力人无法与之抗衡。机器的核心弱点是不明白为什么,不
: 明白道理,不会推理,形势判断显然也远不如人。对于围棋这样复杂度很高的游戏,机
: 器搜索能力再强,能搜的变化也只是所有变化的一小部分,如果花大量时间去搜索没有
: 意义的变化,搜索能力就不会对棋力有多大的影响。
: 过去AI集中解决的问题,就是对可能的变化的重要性进行排序。假设人在短时间内只能
: 搜索100种变化,而AI在同样的时间可以搜索几千万种变化,只要AI能够对各种变化排

E******w
发帖数: 2616
3
你说的问题我不认同。优势情况下下缓手,是因为它的价值网络判断有很多下法都能赢
棋,而且赢棋的概率很大。这种情况下这些不同下法的优劣差别就会被缩小。机器毕竟
不能暴力搜索所有的变化,不能够有效分辨各种走法的差别,会让自己的优势迅速丢失
(至少丢失到一定范围之内),这对高手来说,就等于留下了抓住机器的一两个失误翻
盘的机会。
另外,神经网络的训练很多时候就是输出对还是错,定了规则以后,网络就是判断某个
走法是否会导致胜利。这基本上是0和1的区别。至于概率的高低,那是大量实验的统计
结果而已。原作者的意思只是需要在胜负的基础上区别大胜和小胜。这只是个原则的建
议,说明比单纯判断胜负要强。但是具体实现不那么容易的。因为有很多大胜的棋是因
为对手犯错或者走无理棋。如果机器学习的时候偏重于这些样本,会导致overfitting
的问题。总之我觉得说起来容易,做起来实际上是很困难的。
综合来说,从Zen的表现和AlphaGo已知的表现,说明这个弱点确实存在。改进方法应该
是有的,但是肯定不是什么短时间就能解决的问题。

说的大部分地方靠谱,个别地方需要纠正一下。

【在 D*******r 的大作中提到】
: 说的大部分地方靠谱,个别地方需要纠正一下。
: 首先,先要理解所谓的棋理是什么?棋理的形成就是历史上成千上万局的胜负结果被总
: 结后形成的经验。
: 阿法狗的training不是简单的模仿高手的下法(只是模仿的话它就分不清哪些是臭手哪
: 些是好手),它的training和人类的学习过程基本是一样的,分析高手(其实也包括低
: 手)的棋谱,根据其结局以及分阶段的形式判断,来学习每手在不同情况下应对的好坏
: ,根据预判和实际结果的差异来调整自己的判断。区别只在于人不需要亲自去下几十万
: 盘去总结这些经验,人可以从老师那里学,从书上读,而计算机的经验全部是自己从“
: 实战”中去总结的,它不需要人来输入棋理。
: 另外一个,原作者认为计算机在判断优势情况下会下缓手,然后把前面的优势慢慢丧失

D*******r
发帖数: 2323
4
这个“赢棋的概率”本身就包括了对后面优势丧失的可能性的考虑。比如说,当前有可
以赢棋的两个应手A和B,A和B下一手又各自有5个应手,A下面的五个应手中有三个赢棋
的,两个输棋的,B下面的五个应手中有两个赢棋的,三个输棋的。那么计算机就会选A
吗?不是的,它还会继续计算A的下下一手和B的下下一手。如果A的下下一手又是共五
手,但只有一手能赢棋,而B的下下一手中五手中有4手能赢棋,那么B点的赢棋概率就
比A点大。
实际情况当然不只计算到两手,可能是30手甚至50手,算了30-50手,那赢棋效率最高
的一手其实是已经考虑了优势可能丧失的风险,以及进行了是否需要争取更大的优势的
判断。人在下棋时其实也是一样的考虑方法,在盘面上不确定之处比较多时(换句话说
就是后面丧失优势的可能性比较大时),人会下得更积极争取把优势转为胜势。但是已
经是胜势且进入大官子阶段,人就会避免任何增加风险的应手,选变化最少的保持优势
的应手。
机器不需要暴力搜索完所有的变化,它只需要比人多算10步。就是说它只要比你算得更
深它就会比你更早考虑什么地方可能丧失优势的风险。
zen现在的问题不是它优势下的缓手问题,它的问题是只是单纯依靠计算而没有神经网
络的学习功能,所以它会在关键时刻发神经,以及碰到打劫这些情况时的计算上的bug
。包括它的形式判断也是机械的,而不是通过神经网络学习后不断进步调整的,所以一
来它的形式判断不准,二来它会在不该脱先的时候脱先。
至于你说的阿法狗表现出来的弱点,不知道你指的是哪盘,如果是指和樊麾第三盘可以
杀棋但是没有杀的那盘,我不觉得是什么弱点,那盘棋不杀白棋,白棋也没有任何翻盘
的可能,所以不存在后面优势可能丧失的可能。

overfitting

【在 E******w 的大作中提到】
: 你说的问题我不认同。优势情况下下缓手,是因为它的价值网络判断有很多下法都能赢
: 棋,而且赢棋的概率很大。这种情况下这些不同下法的优劣差别就会被缩小。机器毕竟
: 不能暴力搜索所有的变化,不能够有效分辨各种走法的差别,会让自己的优势迅速丢失
: (至少丢失到一定范围之内),这对高手来说,就等于留下了抓住机器的一两个失误翻
: 盘的机会。
: 另外,神经网络的训练很多时候就是输出对还是错,定了规则以后,网络就是判断某个
: 走法是否会导致胜利。这基本上是0和1的区别。至于概率的高低,那是大量实验的统计
: 结果而已。原作者的意思只是需要在胜负的基础上区别大胜和小胜。这只是个原则的建
: 议,说明比单纯判断胜负要强。但是具体实现不那么容易的。因为有很多大胜的棋是因
: 为对手犯错或者走无理棋。如果机器学习的时候偏重于这些样本,会导致overfitting

E******w
发帖数: 2616
5
你是从人的思维来理解的。机器怎么可能知道“避免复杂局面”?它在优势情况下随意
放樊辉做活,就是一种缓手的表现。也许樊辉那种情况下没机会翻盘,换上李世石可就
不一定。你不能假设机器不会犯错。任何时候大优总是比小优要强的。

选A

【在 D*******r 的大作中提到】
: 这个“赢棋的概率”本身就包括了对后面优势丧失的可能性的考虑。比如说,当前有可
: 以赢棋的两个应手A和B,A和B下一手又各自有5个应手,A下面的五个应手中有三个赢棋
: 的,两个输棋的,B下面的五个应手中有两个赢棋的,三个输棋的。那么计算机就会选A
: 吗?不是的,它还会继续计算A的下下一手和B的下下一手。如果A的下下一手又是共五
: 手,但只有一手能赢棋,而B的下下一手中五手中有4手能赢棋,那么B点的赢棋概率就
: 比A点大。
: 实际情况当然不只计算到两手,可能是30手甚至50手,算了30-50手,那赢棋效率最高
: 的一手其实是已经考虑了优势可能丧失的风险,以及进行了是否需要争取更大的优势的
: 判断。人在下棋时其实也是一样的考虑方法,在盘面上不确定之处比较多时(换句话说
: 就是后面丧失优势的可能性比较大时),人会下得更积极争取把优势转为胜势。但是已

D*******r
发帖数: 2323
6
所谓的”复杂局面“就是赢棋的概率的另一种说法。计算机判断是否是复杂局面不是基
于樊麾的棋力,也不是基于李世石个人的棋力,而是基于上万盘高手对局,上百万盘自
我训练,以及深度神经网络的计算来得出结果的,如果你说李世石的个人水平远高于这
个统计结果,那说明李世石的水平远远偏离人们通常得出的棋理。
“任何时候大优比小优要强”这是不对的,如果一种走法只能赢一目,但是100%赢棋,
因为下一手的100种应法都是正确的。另一种走法可以赢50目,但是,赢50目的下一手
中有99手都是对的,但有1手是错的,会让自己反被杀。那么你说说能大优比小优强的
理由是什么?

【在 E******w 的大作中提到】
: 你是从人的思维来理解的。机器怎么可能知道“避免复杂局面”?它在优势情况下随意
: 放樊辉做活,就是一种缓手的表现。也许樊辉那种情况下没机会翻盘,换上李世石可就
: 不一定。你不能假设机器不会犯错。任何时候大优总是比小优要强的。
:
: 选A

1 (共1页)
进入Go版参与讨论
相关主题
AlphaGo的错招似乎不少关于棋软的实力,以前的看法在哪个环节出了问题?
其实用AI训练人是很容易的,就是谷歌肯不肯的问题兄弟早就说阿发狗是会犯错误的
反MKL一局AlphaGo通俗的解释
古力春兰怒斩金太子。神经网络的结构决定了他的极限
所谓机器与机器的顶尖对决,对人根本无意义打劫就是拼计算量
无需神化alpha go关于alphago的不合理招法
技术贴(懂围棋的请进)从第四盘棋看狗狗的弱点
阿法狗第二局最令人震惊的地方在于看阿法狗的自战棋谱有彻底崩溃的感觉
相关话题的讨论汇总
话题: ai话题: alphago话题: 搜索话题: 变化话题: 赢棋