别再自己玩游戏了,让我们教计算机自己玩游戏!
这篇文章与大家分享“强化学习”,英文名叫做“Reinforcement Learning”。这是一个有趣的机器学习算法,去年在国际围棋界大显身手、战胜世界冠军的AlphaGo以及其进化版AlphaGo zero的关键技术就是强化学习。它还被用于玩电脑游戏,比如Dota2、英雄联盟、Flappy bird,还有各种小游戏。
AlphaGo VS 柯洁
AI玩Pingpong游戏
强化学习是我们的课程安排之一,作为实验教学,课程中我们教给同学们如何让电脑自己玩贪吃蛇游戏。
正式介绍强化学习前我们先科普一下人工智能和智能算法的关系,看图
AI知识图谱
人工智能是一个非常大的概念,机器学习(Machine Learning)算法是人工智能的主要技术之一,而且是现在应用最广泛的也是机器学习算法, 深度学习(Deep Learning)或深度神经网络(Deep Neural Networks)属于机器学习,所以现在人们一般有下面的认识:
AI-ML-DL
传统上,机器学习算法一般可以分为有监督学习和无监督学习,二者各有长短。监督学习认为人要把自己的经验教给机器。拿分辨猫猫和狗狗的 AI 来说,你需要准备几千张照片,然后手把手教机器——哪张照片是猫,哪张照片是狗。机器会从中学习到分辨猫狗的细节,从毛发到眼睛到耳朵,然后举一反三得去判断一张它从没见过的照片是猫猫还是狗狗。
而无监督学习认为机器要去自己摸索,自己发现规律。人的经验或许能帮助机器掌握智能,但或许人的经验是有缺陷的,不如让机器自己发现新的,更好的规律。人的经验就放一边吧。
强化学习是无监督学习的一种。强化学习是一种模仿人类学习方式的模型,它的基本想法是:要是机器得到了好的结果就能得到奖励,要是得到差的结果就得到惩罚。
举个例子,训练一只汪星人听懂人的命令。开始主人对小汪下了“坐下”的指令,可小汪不知道什么意思,摇了摇尾巴;然后主人又下了一次“坐下”的指令,小汪还是听不懂啊,又摇了摇尾巴,主人生气了,踢了小汪一脚;第三次,主人又对小汪下了“坐下”的命令,小汪也着急了,急得一屁股坐在了地上。哈哈,然而主人很高兴,小汪能听懂了,于是赏了小汪一根骨头。小汪啃着骨头也恍然大悟了,主人说“坐下”的时候,自己坐下就会有骨头吃,于是小汪就听懂这个命令了。
我们来抽象一下上边的例子就是强化学习了。强化学习有四个要素:
状态(States):例如小汪目前的状态,是坐着,趴着,或是站着
动作(Actions):在每个状态下,有什么行动是容许的。例如小狗目前是趴着的,现在能采取的动作有:站起来,坐起来或继续趴着。
奖励(Rewards):采取某个动作后,能带来的正面或负面的价值,也就是奖励或惩罚。例如小汪听到“坐下”的命令,坐下了,主人就奖励它一跟骨头,否则惩罚它踢一脚。
方案(Policy):每个状态下,该采取什么样的行动。比如小汪听到“坐下”命令后,该怎么行动。
实际的应用场景中,并不像训练小汪那么容易,有如下的难点:
状态很多,比如游戏中角色在的每一个位置都是一个状态,同一位置因其周围的环境变化也是多个状态。
动作多样,比如游戏中的角色,可以向前后左右各个方向移动,也可以释放各种技能。
奖励延迟,当角色采取一个行动后,并不能马上给它反馈—奖励或惩罚,往往需要很久之后,角色死亡或胜利了,才能反过头来给它反馈。
有问题就有解决方法,强化学习里都有解法,同学们有没有做好准备来学习强化学习算法呢?同学们可以思考一下,如果是贪吃啥游戏,状态和动作都有哪些?
领取专属 10元无门槛券
私享最新 技术干货