加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

AlphaGo 的棋局,与人工智能有关,与人生无关

发布时间:2016-03-14 21:30:55 所属栏目:评论 来源:爱范儿
导读:1997 年中考后的暑假在姑父公司的机房第一次接触电脑,当时应该是 80386 的微机。学习电脑就是学习 DOS 命令和打字,完全不懂干什么用的,打字尤其是五笔字型,更是学得头

使用了两大类 pattern,一种是 response 的 pattern,也就是上一步走法附近的 pattern(一般围棋很多走法都是为了“应付”对手的走子);另一种就是非 response 的 pattern,也就是将要走的那个走法附近的 pattern。具体使用的特征见下表。Rollout Policy 比较简单,每个 CPU 线程每秒可以从空的局面(开局)模拟 1000 个对局。

棋局 人工智能 有关 人生

横线之上的 feature 用来 rollout,所有的 feature 用来计算 place-holder 先验概率。

Symmetries

前面在讲 Search Algorithm 讲过了。

SL Policy Network

SL Policy Network 使用了 29.4 million 局面来训练,这些局面来自 KGS 6d-9d 的 16 万个对局。使用了前 1million 用来测试,后面的 28.4million 用来训练。此外进行了旋转和镜像,把一个局面变成 8 个局面。使用随机梯度下降算法训练,训练的 mini-batch 大小是 16。使用了 50 个 GPU 的DistBelief(并没有使用最新的 Tensorflow),花了 3 周的时间来训练了 340million 次训练步骤(每个 mini-batch 算一个步骤?)

RL Policy Network

每次用并行的进行 n 个游戏,使用当前版本(参数)的 Policy Network 和之前的某一个版本的 Policy Network。当前版本的初始值来自 SL Policy Network。然后用 Policy Gradient 来更新参数,这算一次迭代,经过 500 次迭代之后,就认为得到一个新的版本把它加到 Pool 里用来和当前版本对弈。使用这种方法训练,使用 50 个 GPU,n=128,10,000 次对弈,一天可以训练完成 RL Policy Network。

Value Network

前面说了,训练的关键是要自己模拟对弈然后随机选择局面而不是直接使用 KGS 的对局库来避免 overfitting。

AlphaGo 生成了 3 千万局面,也就是 3 万次模拟对弈,模拟的方法如下:

随机选择一个 time-step U~unif{1,450}

根据 SL Policy Network 走 1,2,… , U-1 步棋

然后第 U 步棋从合法的走法中随机选择

然后用 RL Policy Network 模拟对弈到游戏结束

棋局 人工智能 有关 人生

被作为一个训练数据加到训练集合里。

这个数据是

棋局 人工智能 有关 人生

的一个无偏估计。

最后这个 Value Network 使用了 50 个 GPU 训练了一周,使用的 mini-batch 大小是 32。

Policy/Value Network使用的Features

其实和前面 Tian 的差不太多,多了两个征子相关的 feature,另外增加了一个常量 1 和常量 0 的 plane。

最后一个 feature 是 value network 用的,因为判断局面得分时要知道是谁走的,这个很关键。

棋局 人工智能 有关 人生

神经网络结构 Policy Network

13 层从 CNN,输入时 19*19*48,第一个 hidden 层把输入用零把输入 padding 成 23*23,然后用 k 个 5*5 的 filter,stride 是 1。

2 到 12 层首先用零把输入 padding 成 21*21,然后使用 k 个 5*5 的 filter,stride 依然是 1。

最后一层用一个 1*1 的 filter,然后用一个 softmax。

比赛用的 k=192,文章也做了一些实验对比 k=128,256,384 的情况。

Value Network

14 层的 CNN,前面 12 层和 Policy Network 一样,第 13 层是一个 filter 的卷积层,第 14 层是全连接的 Relu 激活,然后输出层是全连接的 tanh 单元。

棋局 人工智能 有关 人生

不同分布式版本的水平比较,使用的是 Elo rating 标准。

总结

从上面的细节来看,神经网络的训练其实用的时间和机器不多,真正非资源的还是在搜索阶段。

最强的 AlphaGo 使用了 64 个搜索线程,1920 个 CPU 的集群和 280 个 GPU 的机器(其实也就二十多台机器)

之前我们讨论过分布式 MCTS 时说过,MCTS 很难在多机上并行,所以 AlphaGo 还是在一台机器上实现的 LockFree 的多线程并行,只不过 Rollout 和神经网络计算是在 CPU 和 GPU 集群上进行的。Google 的财力肯定不只二三十台机器,所以分布式 MCTS 的搜索才是最大的瓶颈。如果这个能突破,把机器堆到成百上千台应该还是能提高不少棋力的。

我个人估计在 3 月与李世石的对弈中这个架构可能还很难有突破,可以增强的是 RL Policy 的自对弈学习,不过这个提升也有限(否则不会只训练一天就停止了,估计也收敛的差不多了)

所以我个人的观点是 3 月份要战胜李世石还是难度比较大的。

人生的棋

之前我们讨论的都是完全信息的两人的零和博弈游戏。用的 minimax 也是假设对手都是走最优的走法,但实际比赛中可能并非如此。

比如为了争胜,我们可能走一些冒险的策略,这个策略下如果对手走到最佳的走法我们可能会输。但是由于局面复杂,稍有不慎可能就会走错,那么我们的目的就达到了。

还有就是多人的博弈,比如斗地主,我们可能还得对多个对手或者队友建模。比如地主最后一张牌是否要炸,还得看队友的接牌能力。

又比如你陪领导玩斗地主,另外一个人明显目的是来给领导送钱的,那么你的策略可能也需要调整。

这可能就是现实世界和人工智能的差别了。有些事情,机器永远也不会懂,比如人生。

对于人生,每个人都像一颗棋子,那么谁是下棋者呢,他又是和谁在下棋呢?

我们在下棋的时候更多的考虑是全局的利益,比如用一个兵卒换一个马炮我们会非常开心,但是作为要牺牲的兵卒来说呢?一将功成万骨枯。

人生如棋,落子无悔。等到游戏结束的时候我们来复盘,才能发现当年犯下的错误,不过毕竟于事无补,只能给后人一些经验教训罢了。

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读