跟我的AI比试比试:究竟谁学得更快?


全文共2664字,预计学习时长9分钟

 图源:unsplash

你可以在玩“Nim”游戏时打败我的AI吗?来吧试一试,比赛开始之前你想练习几次都可以。点击链接开始比赛:https://nimai.herokuapp.com/

 

本文就来为你解释AI是如何学习的?AI是怎样变得如此聪明的?我还将在不使用数学公式的前提下从高水平的角度解释Q-learning的概念。

nimAI Web应用程序的用户界面

 

我相信,掌握之后,“easy peasy”模式对你来说是小菜一碟。但要想达到更高的水平可不是那么容易的。这些等级之间有什么区别呢?我能将更高级的代理设计编程做得更聪明吗?我是否应该告诉他们怎样在Nim上玩一局完美游戏的数学公式?

 

答案当然是不!我要做的是让代理自己找出如何赢得Nim游戏的方法。这就是Q-learning的魔力:你将问题形式化之后,将其交给代理,代理完成大部分工作的同时你只管坐下来放松。

来吧,让我们看看这背后到底发生了什么。

 

人工智能需要知道什么

为了成为一名真正的Nim大师,需要向代理告知游戏的基本设置和规则:

初始界面的外观是什么样的?

nimAI网络应用程序的初始界面

 

这就是我nimAI网络应用程序的初始界面。从理论上讲,你可以从任何数量的行和硬币开始,而我们的学习算法也能处理所有这些替代方案。在Python中,上述的页面可以形式化为列表:

initial_board = [1, 3, 5, 7]


在界面的指定状态下哪种操作是可行的?

在游戏的结尾思考一下这个界面状态:

游戏结尾的界面状态

 

这里有三种不同的选择:从第一行拿一个硬币,或者从第二行拿一个硬币,或者从第二行拿两个硬币。我们需要做的就是编写一个函数,该函数可以运行界面状态并返回一些可能的操作。在Python中,这种表示形式可以是一组元组,其中每个元组由行和要删除的硬币数组成:

 

legal_actions = {(1, 1), (2, 1),(2, 2)}

动作是如何更改当前状态的?

如果我从第二行拿走一枚硬币,那么界面将会变成什么样?

移动(2,1)之后的界面状态

这很简单,但我们需要形式化这种状态转换函数。到目前为止,代理还不如你聪明。

游戏何时会判定输赢?

我们需要提供一个功能,在给定的游戏状态下告知代理谁是获胜者(“ AI”,“人类”,“没有人”)。更准确地说,我们需要考虑界面是否已经空了([0,0,0,0]),如果是,谁输了游戏。

 

图源:unsplash

现在AI知道了游戏如何开始(初始状态),在每种可能的界面状态下选择如何移动,此类动作如何改变界面(状态转换功能)以及是否已经有赢家。

 

AI是如何变聪明的

 

开发Q-learning的想法实际上很简单,我们太懒了,没有明确地告诉代理如何掌握游戏,而是让AI多次与自己对战。我们希望它会遇到各种不同的情况,并且通过反复试验发现这是在界面特定状态下的所执行的最佳行动。

 

在对代理进行训练之后,人类可以向其发起Nim游戏挑战。

 

玩家自信满满地开始,殊不知这种情况AI已经见过好多次。在前期训练经验的积累下,AI将会对可怜的玩家发起致命一击。接着,它将会继续牵着玩家的鼻子走。

 

奖励与惩罚

 

Q-learning是一种强化学习领域的技术,其灵感来自行为心理学,它认为人类和很多其他动物都通过奖励和惩罚来学习。

 

如果一个孩子触摸了火炉,那么它就会受到惩罚(疼痛),并且在下次会更加小心;一个孩子打扫厨房之后妈妈奖励了他巧克力曲奇饼,那么下周她将会再次积极地打扫厨房。这就是经验教训。

 

图源:unsplash

Q-learning正是基于这一原理。我们让代理尝试采取行动,如果该行动促成“良好”状态,我们将会奖励它。如果该行动导致“不良”状态,我们将对它进行处罚。我们用数字表示奖励和惩罚(越高越好),计算机程序喜欢数字!

 

在Nim中,我们用“ -1”来惩罚失败的操作(即删除最后一个硬币),而用“ 1”奖励会立即导致对手失败的操作。

 

预期奖励

 

那么其他不会终止游戏的操作呢?我们不会直接惩罚或奖励他们,而是采用Q-learning的核心思想:预期奖励。

 

代理会逐步了解到某些操作(尽管不会立即赢得/或输掉游戏)会使她处于有利或危险的境地。这些知识将从游戏结束阶段逐渐“传播”到较早的位置。可能你也经历过,在新游戏开始时,想出一个策略真的很难,但到了最后,你却更容易看出那些操作是好是坏。

 

对于AI来说是一样的:首先,她的大部分举动都是完全随机的,没有任何策略。但是,之后她会学习到哪些最终操作会让它立即赢得游戏,接着学习了那些帮助它立即赢得游戏的操作,继续学习了那些帮助它立即赢得游戏的操作,如此循环往复,继续操作。

 

如果你允许代理反复练习游戏,那么她将能学会在任何给定的界面状态下的任何给定操作下获得最终的期望奖励。但如果你只允许她玩几次,那么她将没有机会体验游戏的其他设定。这就是为什么某些AI以易用模式(尤其是在游戏开始时)操作时看起来相当随机的原因,而更高级的代理似乎立即有了计划。

 

计划?策略?AI不会按照某些出色的计划行动,也没有理由认定那是最好的操作。它只会记得过去在对局中,在某个界面状态下最有效的方法,而这就是它比任何人类都做得更好的地方。

接下来,我想说一些有趣的细节,并以“Q&A”的形式为你指出更为严格的信息来源。

一些Q&A

Q:代理的知识如何体现出来?

A:在经典的Q-learning中,你可以想象一个简单的表,这个表代表状态和动作的所有可能组合,并包含各自的Q值。在Python中,这样的Q表可以用以状态动作对作为键的字典来表示。例如,假设代理在州中有两个法律诉讼a1和a2。然后,她可以查找 Q_table[(s, a1)]和 Q_table[(s, a2)] ,然后简单地选择具有较高Q值的动作。

 

注意,还有更高级和高效的Q-learning版本,例如深度Q-learning。在这里,你可以使用神经网络来学习估计任何状态动作对的Q值的函数,而不是将所有Q值显式存储在表中。

 

Q:Q值到底是如何计算的?

 

A:首先,所有可能的移动的Q值均为0,除非它们立即终止游戏。代理根本不知道如何分辨好坏操作。然后,在训练过程中,将根据先前的积累和新的经验更新Q值。这两个因素需要权衡,以学习率为模型。

 

Q:那么关于探索与利用问题呢?

 

A:在许多AI问题中,你都会遇到一个基本的难题:鉴于资源(时间,计算能力等)有限,你是应该探索尽可能多的替代方案还是利用已经运行良好的替代方案?对于成功的Q-learning来说,至关重要的是要在探索和利用之间找到良性的平衡,这可以通过时不时探索没有最高可用Q值的动作来实现。

 

图源:unsplash

希望这篇能让你对Q-learning有一个很好的直观了解,激发自己深入探索下去的兴趣。


推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:高淳子、钟惠

相关链接:

https://towardsdatascience.com/who-learns-faster-you-or-my-ai-681e442416b0

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值