浅谈Alpha Go所涉及的深度学习技术

作者注:关于Alfa Go的评论文章很多,但真正能够与开发团队交流的却不多,感谢Alfa Go开发团队DeepMind的朋友对我这篇文章内容的关注与探讨,指出我在之前那一版文章中用字上的不够精确,所以在此又作调整 。我之前文章提到的「全局」指的是跨时间点的整场赛局,很容易被误认为是某个特定时点整个棋盘的棋局,所以后面全部都修改为「整体棋局」 。此外,关于整体棋局评估,除了透过脱机数据学习的评价网络之外,还可以透过根据目前状态实时计算的不同策略评价差异(这项技术称之为Rollouts),它透过将计算结果进行快取,也能做到局部考虑整体棋局的效果 。再次感谢DeepMind朋友的斧正 。
在人类连输AlphaGo三局后的今天,正好是一个好时机,可以让大家对于AlphaGo所涉及的深度学习技术能够有更多的理解(而不是想象复仇者联盟中奥创将到来的恐慌) 。在说明Alpha Go的深度学习技术之前,我先用几个简单的事实总结来厘清大家最常误解的问题:
AlphaGo这次使用的技术本质上与深蓝截然不同,不再是使用暴力解题法来赢过人类 。
没错,AlphaGo是透过深度学习能够掌握更抽象的概念,但是计算机还是没有自我意识与思考 。
AlphaGo并没有理解围棋的美学与策略,他只不过是找出了2个美丽且强大的函数来决定他的落子 。
什么是类神经网络
其实类神经网络是很古老的技术了,在1943年,Warren McCulloch以及Walter Pitts首次提出神经元的数学模型,之后到了1958年,心理学家Rosenblatt提出了感知器(Perceptron)的概念,在前者神经元的结构中加入了训练修正参数的机制(也是我们俗称的学习),这时类神经网络的基本学理架构算是完成 。类神经网络的神经元其实是从前端收集到各种讯号(类似神经的树突),然后将各个讯号根据权重加权后加总,然后透过活化函数转换成新讯号传送出去(类似神经元的轴突) 。

浅谈Alpha Go所涉及的深度学习技术

文章插图
至于类神经网络则是将神经元串接起来,我们可以区分为输入层(表示输入变量),输出层(表示要预测的变量),而中间的隐藏层是用来增加神经元的复杂度,以便让它能够仿真更复杂的函数转换结构 。每个神经元之间都有连结,其中都各自拥有权重,来处理讯号的加权 。
浅谈Alpha Go所涉及的深度学习技术

文章插图
传统的类神经网络技术,就是透过随机指派权重,然后透过递归计算的方式,根据输入的训练数据,逐一修正权重,来让整体的错误率可以降到最低 。随着倒传导网络、无监督式学习等技术的发展,那时一度类神经网络蔚为显学,不过人类很快就遇到了困难,那就是计算能力的不足 。因为当隐藏层只有一层的时候,其实大多数的状况,类神经网络的分类预测效果其实并不会比传统统计的罗吉斯回归差太多,但是却要耗费更庞大的计算能力,但是随着隐藏层神经元的增加,或者是隐藏层的增加,那么所需要计算权重数量就会严重暴增 。所以到了八十年代后期,整个类神经网络的研究就进入了寒冬,各位可能只能在洗衣机里体会到它小小威力(现在洗衣机里根据倒入衣物评估水量与运行时间很多都是用类神经网络作的),说真的,类神经网络一点都没有被认为强大 。
这个寒冬一直持续到2006年,在Hinton以及Lecun小组提出了「A fast learning algorithm for deep belief nets」论文之后,终于有了复苏的希望,它们提出的观点是如果类神经网络神经元权重不是以随机方式指派,那么应该可以大幅缩短神经网络的计算时间,它们提出的方法是利用神经网络的非监督式学习来做为神经网络初始权重的指派,那时由于各家的论文期刊只要看到类神经网络字眼基本上就视为垃圾不刊登,所以他们才提出深度学习这个新的字眼突围 。除了Hinton的努力之外,得力于摩尔定律的效应,我们可以用有更快的计算能力,Hinton后来在2010年使用了这套方法搭配GPU的计算,让语音识别的计算速度提升了70倍以上 。深度学习的新一波高潮来自于2012年,那年的ImageNet大赛(有120万张照片作为训练组,5万张当测试组,要进行1000个类别分组)深度学习首次参赛,把过去好几年只有微幅变动的错误率,一下由26%降低到15% 。而同年微软团队发布的论文中显示,他们透过深度学习将ImageNet 2012数据集的错误率降到了4.94%,比人类的错误率5.1%还低 。而去年(2015年)微软再度拿下ImageNet 2015冠军,此时错误率已经降到了3.57%的超低水平,而微软用的是152层深度学习网络(我当初看到这个数字,吓都吓死了)....