图19 程序经过训练后玩打砖块游戏
最终,程序学会了怎么迅速取得高分,即让球在砖墙一侧“钻”一个洞,这样球就会在砖墙上快速反弹。没有人教程序这么做,这种行为让程序开发者都大吃一惊。
我得反复强调一点:深度思维的程序员并没有编写一个程序来玩雅达利游戏:这并不难。他们所做的是写一个程序,让它学习如何比人类更会玩全部49个雅达利游戏中的29个。程序接收到的唯一输入就是屏上显示的东西,以及分数。
此前已经提到过,雅达利游戏程序使用的是强化学习的方式,通过神经网络来实现,它使用的神经网络具有三个隐藏层。神经网络的输入经过预处理,将图像从原始的210×160像素的彩色格式缩减为84×84像素,并用灰度代替了彩色。程序从可用的输入中提取出样本,由每四幅游戏屏幕图像拼合组成,而不是单独的每一幅图像。神经网络使用经典的深度学习技术(随机梯度下降)进行训练。