※ 引述《nnlisalive (nnlisalive)》之铭言:
: 我觉得要从程式码方面下手了
: 首先就是阿发狗所谓的"胜率"是怎计算出来的?
: 不外乎用盘面上所得到的资讯转换成数据
: 再代入胜率函数得到每一点的胜率
: 那这个函数适用于任何盘面吗? 没有任何逻辑漏洞和盲点?
: 算出来的胜率没有误差? 如果有个点胜率是70%
: 具体来说应该是下了这个点跑到结束N次 有0.7*N次会赢
: 但明明就还没下完 也不知道对方会怎下
: 所以只要能骗过电脑 让他一直下到误判胜率的棋
其实看很多人对AlphaGo算法的看法好像还在以前
把作法写死在程式里跑Funciton的想法
所以才会说找Bug和骗电脑之类的
这就让我想到昨天第二局腾讯那个转播,较前面两个解说来宾
(名字我就不晓得了,毕竟个人也没啥围棋经验)
右边那位来宾也是停留在改Code,修原始码之类的旧式理解
左边那位就对AlphaGo的作法,神经网络的东西理解很深
以下是个人粗浅的理解,毕竟以前没深入研究过NN且Nature那篇也还没看完
AlphaGo并不是把规则写在Code里面,而是把盘面的资料丢到一个
Model中,在Model中经过计算后吐出来一个结果来
以Policy Network来说就是吐出各点的下子可能机率
而Value Network就是该盘面的可能胜率
也就是像这样:
Input Model Output
盘面上各点的资料
共19*19 = 361维
[1, 2, ..., 361] -> Policy Network -> 各点下子可能机率
Value Network -> 盘面的可能值
真正重要的是Model中的计算参数(而且可能有非常多个)
才是决定这么Model好坏的关键
当然这个关键是不用人手去调的,而是以过去的资料去对Model进行"训练"
也就是参数的调整,让这个网络能越来越符合我们要的结果
就是在之前讨论或文章中作SL(Supervisor Learning)的部分
但这要有过去的资料才能作到,因此AlphaGo还多了一步
是在过去的资料上继续自己创造资料与结果
也就是RL(Reinforcement Learning),来不断的自我训练
不断的加强自身强度
所以常常看到有人说找Bug和对原始码下手,但其实这是不对的
这个计算系统是随时随地在变动的
如果有一般人所谓的Bug(系统实作上的问题)也早就找出来了
要也是要对Model和系统本身的弱点来下手,但NN会在不断的训练逐渐趋近最佳解
所以要"骗"或找Bug是非常困难的甚至没意义的