接上文继续学习建模算法优化改良。
2015年2月,Aja Huang在Deepmind的同事在顶级学术期刊nature上发表的文章 Human-level control through deep reinforcement learning 用神经网络打游戏。这篇文章给AlphaGo提供新的方向:强化学习。
强化学习(Reinforcement learning)是机器学习的一个分支,特别善於控制一只能够在某个环境下自主行动的个体 (autonomous agent),透过和环境之间的互动。(备注:强化学习定义可查阅《人工智能应用案例学习3》)
借用吃豆人游戏进一步说明强化学习建模过程:自主行动的个体就是控制的吃豆人,环境就是迷宫,奖励就是吃到的豆子,行为就是上下左右的操作,强化学习的输入是:
状态 (States) = 环境,例如迷宫的每一格是一个 state。
动作 (Actions) = 在每个状态下,有什么行动是容许的。
奖励 (Rewards) = 进入每个状态时,能带来正面或负面的价值。
输出是:方案 (Policy) = 在每个状态下,你会选择哪个行动?也是一个函数。
所以,需要根据S,A,R,来确定什么样的P是比较好的,通过不断的进行游戏,获得大量的交互数据,可以确定在每一个状态下,进行什么动作能获得最好的分数,而强化学习也就是利用神经网络来拟合这个过程。
参考这种思路,Aja Huang给围棋也设计了一个评价函数v(s) 。此函数的功能是:量化评估围棋局面。使用v(s)可以让我们在MCTS的过程中不用走完全局(走完全盘耗时耗力,效率不高)就发现已经必败。
在利用P(s) 走了开局的20步后,如果有一个v(si) (i为当前状态)可以直接判断是否能赢,得到最后的结果r,不需要搜索到底,可以从效率(树剪枝,优化算法时间复杂度)上进一步增加MCTS的威力。
很可惜的,现有的人类棋谱不足以得出这个评价函数(此处并不明白原理,先记录下来待后面深入分析)。所以Aja Huang决定用机器和机器对弈的方法来创造新的对局,也就是AlphaGo的左右互搏。
神经网络的训练过程和结构先用P(s)和P(s)对弈,比如1万盘,得到1万个新棋谱,加入到训练集中,训练出 P1(s)。
使用P1(s)和P1(s)对弈,得到另1万个新棋谱,加入训练集,训练出P2(s)。
同理,进行多次的类似训练,训练出Pn(s),给最后的新策略命名为Pplus(s)。
使用Pplus(s)和P(s)进行对弈,发现Pplus(s)胜率高,自对弈的方法就被证明是有效的。(之所以自对弈有效,是因为过程中没有放弃过随机,如此一来,大量的计算,就更可能覆盖到更多的可能性,对提高棋力可以产生有效的作用,同时因为概率的问题,不断的自我对弈造成下棋的路数集中)
事实并没有那么美好,Aja Huang发现,使用Pplus(s)来代替P(s)进行MCTS反而棋力会下降。
Aja Huang认为是Pplus(s)走棋的路数太集中(此处记下后续验证尝试),而MCTS需要更加发散的选择才能有更好的效果。
网友评论