先说我是个两日棋迷,可以等同于完全不懂围棋(可能有十几级?),
实在班门弄斧..不过想要来讲一下我读AlphaGo论文的心得,
(论文连结:http://www.willamette.edu/~levenick/cs448/goNature.pdf )
希望能对这里的专业板友提供一点参考价值@@
然后这论文是一月发的,跟现在的AlphaGo很可能有所不同。
先说下面肯定有不少错误,请大家指正orz
(更新错误:感谢fgkor123的连结,写得比我好百倍,不过好像原作者关了orz)
感谢countingtls版友的启发,本来有些看不懂的地方被他指出重点突然就懂了XD
-
AlphaGo的运作原理(超级简化版)的四个部分:
(1) SL策略网络: (SL=监督式学习)
从数十万个棋谱学习,让类神经网络猜测职业棋手在每个盘面会下的一步,不搜寻。
这里可以达到57%的猜测准确率。
(让业余初段的旗手能自由翻阅棋谱来猜顶尖职业棋手的下一步应该可以做得远远更好?)
用这个网络而不搜寻,对Pachi(KGS业余2段)有12%胜率。
(1')展示策略(rollout policy,乱翻一通XD):
类似SL策略网络,但使用简单许多的棋盘特征来做判断。
展示策略只能达到24%的猜测准确率。
呼叫一次展示策略要用0.000002秒,相对于SL策略网络要0.003秒(1500倍)。
(2) RL策略网络: (RL=强化学习)
从SL策略网络开始自我改良,一直自己跟自己的变种下(还是不搜寻)。
每一局下到完为止,下的结果只问胜负不问差几目。
最后进化出来得到的RL策略网络不搜寻对Pachi有85%胜率。
(大概在这里可以想成只凭直觉完全不做计算而有至少业余二段的棋手)
补注: SL和RL策略网络其实不是真的猜最有可能的一步,而是给出每个步数认为的机率。
(3) RL助值网络:
用RL策略网络自己跟自己下棋+搜寻来建立,
这次的目的是建立一个网络来对每个盘面赋予一个分数,
大概类似于‘往后计算个几步,问问RL策略网络对得到的盘面有何看法’。
这个分数诞生于RL策略网络给与的回馈,与目数差无直接关系。
(4) 真AlphaGo:
用(1)SL策略网络,(1')展示策略和(3)RL助值网络一起来做判断基准,
(1), (3)的用法应该就是直接用来评分(两者具体用法不同,不过我自己还不太懂),
但(1')的使用方法是以当下盘面开始自己跟自己下直到游戏结束用得到的结果评分。
然后用蒙特卡洛树搜寻法的变体。我个人的粗浅理解是:
(还蛮直觉的我觉得)
越好的落子点(机率越高&分数越高)就去计算越多步,
反过来用计算的结果来定义什么是好的落子。
最后被计算最彻底的一步,AlphaGo就判定为当下最佳的一手。
-
讨论:
1. 文章内有提到AlphaGo对CrazyStone(KGS业余6段)让四子的胜率是77%。
我是个大外行,不过如果假设是李世石是不是可以有高得多的胜率?
我的猜测是要让AlphaGo很好的学会玩让子还是有点障碍,
因为AlphaGo的力量本源是自己跟自己下来追求进步:p
而自己跟自己下让子只会是一方惨电另一方,听起来不是很有学习效率..
2. AlphaGo并不是严格意义上的追求最大胜率;让我觉得很奇妙与神秘的,
它追求最大胜率以及下起来最像职业棋士(SL策略网络)。
就在下读到的,它打一开始就不认得什么是目数差。
但反过来说,它所学习的职业棋士显然会考虑目数差,
所以某种意义上它还是有‘考虑’到的...
3. 论文里的AlphaGo并没有提到劫,就算AlphaGo真的很讨厌劫,
它多半也不知道他在讨厌的东西是劫。
以我这个外行看来,一种可能是:
‘引入这种又臭又长的结果会让我在搜寻范围内可预见的胜率变低。’之类的@@
我自己是认为教AlphaGo去刻意避免劫不大可能:他的计算公式是自己生成的,
人类很难重新去读懂。加入刻意的人工设计多半会弱化它。
4. 由于(1')展示策略的存在,因此不管AlphaGo的搜寻计算(=蒙特卡洛树)考虑多少盘面,
他其实还有加一个会粗糙的另外计算到底的设计。
所以如果一个劫所展开的变化‘不难’,那不管后续有几百步AlphaGo应该都是能照顾的。
(我猜这是AlphaGo理解循环劫的主要方式)