翻译Deep Learning and the Game of Go(11)第九章:靠实践学习:强化学习

本章包括:

  1. 为强化学习定义一个任务
  2. 为游戏构建一个学习代理
  3. 为训练收集自我游戏经验

我可能已经读过十几本关于围棋的书,这些书都是由来自中国、韩国和日本的强大专业人士写的,但我依旧只是一个中等的业余棋手。为什么我没有达到和这些传奇一样的水平呢?是因为我忘记他们的课程吗?不是这样的;我实际上可以背诵Toshiro Kageyama对于围棋基础的一些经验,也许我只需要读更多的书.。

我不知道成为顶级围棋高手的全部秘方,但我至少知道我和围棋专业人士的一个区别:练习。围棋棋手在获得专业资格之前,至少需要练五千到一万盘。实践创造知识,有时这是你无法直接交流的知识。你可以总结这种知识——这就是围棋书籍存在的意义。如果我希望掌握我读过的课程,我需要投入类似的练习时间。

如果练习对人类如此宝贵,那么对于计算机呢?计算机程序能通过练习来学习吗?这就是强化学习的真谛。在强化学习(R L)中,您通过反复尝试一个任务来改进一个程序。当它有良好的结果,您可以修改程序以重复这种决定。当它有坏的结果时,您可以修改程序以避免这些决定。这并不意味着在每次试验之后都要编写新代码:RL算法提供了进行这些修改的自动化方法。

强化学习使用起来并不轻松。首先,它很慢:你的机器人需要玩成千上万的游戏才能有所长进。此外,训练过程非常繁琐,难以调试。但是,如果你努力将这些技术融入到你的AI中,回报是巨大的。你可以构建一个使用复杂策略的软件去处理一系列任务,即使你自己不知道其策略

本章就介绍强化学习的周期。接下来,你将看到如何建立一个围棋机器人,让它以一种适合强化学习的方式与自己对抗。第10章就展示了如何使用自我对弈的数据去提高机器人的性能。 

9.1 强化学习周期 

许多算法实现了强化学习的力学,但它们都在标准框架内工作。本节描述强化学习周期,其中计算机程序通过反复尝试一项任务来改进。图9.1说明了周期。 

图9.1.  强化学习周期:可以通过多种方式实现强化学习,但整体过程有共同的结构。首先,计算机程序尝试重复一个任务。这些尝试的记录被称为经验数据。接下来,您修改行为以模仿更成功的尝试;这个过程是训练。然后你会定期评估确认程序正在改进。通常,您需要重复这个过程多次。 

在强化学习中,您的围棋AI是一个为了完成任务而做出决策的程序。在本书的前面部分,您实现了选择围棋落子的各种版本的Agent。在这些情况下,你给AI提供了一个GameState对象,使它可以用一个决定(即一个落子)来回应。尽管你那时没有使用强化学习,但AI的原理是一样的。

强化学习的目标是使AI尽可能有效。在这种情况下,你想让你的AI去赢。

首先,你让你的围棋AI跟自己玩了一批游戏;在每一场比赛中,它应该记录每一个回合和最后的结果。这些游戏记录被称为它的经验。

接下来,你通过在其自我对弈过程中发生的事情去更新AI的行为来训练你的AI。这一过程类似于第6章和第7章所涵盖的神经网络的训练。这个核心思想是,你希望AI能够重复它在赢棋中做出的决定,并停止在它输棋中做出的决定。训练算法作为一个软件包来处理你AI的结构:为了训练你需要能够系统地修改你的AI行为。有许多算法都可以做到这一点;我们在这本书中涵盖了三个算法。在这一章和接下来的一章,我们将学习策略梯度算法。在第11章中,我们将讨论Q-learning算法。第12章将介绍actor-critic算法。

训练后,你希望你的机器人能够更强大。但是训练过程有很多地方会出错,因此评估机器人的进展以确认其实力是个好主意。要评估一个玩游戏的AI,需要让它玩更多的游戏。您可以将你的AI与早期版本进行对弈,以衡量其水平。要做一个全面的测试,你也可以定期将你的AI与其他AI或你进行对弈

然后你可以无限期地重复整个周期:

  • 收集经验
  • 训练
  • 评估

我们将把这个周期分成多个脚本。在本章中,您将实现一个自我对弈脚本,该脚本将模拟自我对弈,并将经验数据保存到磁盘。在下一章中,您将制作一个训练脚本,将经验数据为输入,相应地更新AI,并保存新的AI

9.2.什么将成为经验? 

在第三章中,您设计了一组用于表示围棋游戏的数据结构。您可以想象如何通过使用诸如Move、GoBoard和GameState等类来存储整个游戏记录。而强制学习算法是通用的:它们处理一个问题的高度抽象表示,因此相同的算法可以应用于尽可能多的问题领域。本节就展示如何使用强化学习的语言来描述游戏记录。

在玩游戏的情况下,你可以把你的经验分为个人游戏和一段变化。每一个变化都有一个明确的结局,一个变化做出的决定不会影响另一个变化的决定。在其他领域,你可能没有任何明显的方法来把经验分成各种变化;例如,一个机器人,被设计用来连续操作,去做无止尽的决策。你仍然可以将强化学习应用于这类问题,但这里的变化边界使它变得更简单。

在一个变化中,一个AI面临着它的环境状态。基于当前状态,AI必须选择一个动作。在选择一个动作后,AI将看到一个新的状态;下一个状态取决于无论是选择的行动和环境中发生的其他事情。在围棋中,您的AI将看到一个棋盘盘面(状态),然后选择一个合法的落子。在那之后,AI将在下一个回合中看到一个新的棋盘局面。

注意,在AI选择一个落子后,下一个状态也包括对手的落子。你无法根据当前的游戏状态去确定下一个状态以及您要选择的落子:您还必须等待对手的落子。对手的行为也是环境的一部分,你的AI必须学会适应。

为了提升水平,你的AI需要反馈它是否达到了目标。你可以通过计算它的回报来提供反馈,这是一个达到目标的分数。对于你的围棋AI来说,目标是赢得对局,你可以在它赢一局棋时加1,以及在其输一局时减1。强化学习算法将改变AI的行为,从而增加它的回报量。图9.2说明了如何用状态、动作和奖励来描述围棋游戏。

图9.2,一个5*5的游戏,围棋翻译成强化学习的语言..你想训练的是黑棋。它看到一系列状态(棋盘局面)并选择落子(合法落子)。在一个变化(一个完整的游戏)结束时,它将得到一个奖励,以表明它是否达到了它的目标。在这种情况下,黑色赢得了游戏,所以给它奖励了1。

围棋和类似的游戏都是特殊情况:在游戏结束时计算一次回报,而回报只有两种可能:你赢了或输了,你不在乎游戏中还会发生什么情况。在其他领域,回报可能会分散开来。想象一下让AI玩拼字游戏。在每一个回合中,AI都会放置一个单词和积分,然后它的对手也会做同样地事情。在这种情况下,您可以计算人工智能积分的正回报,以及对手积分的负回报。然后人工智能就不需要一直等到一个变化结束后才能得到回报;在它采取的每一个落子之后,它都会得到很少的回报。

强化学习的一

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值