边境的悍匪—机器学习实战:第十八章 强化学习

第十八章 强化学习


前言

强化学习同样是一个很古老在很早之前就已经提出来的思想,目前主要应用与游戏领域,并且已经在该领域取得了不错的成绩,达到了超越人类的水平。它与一般的有监督学习不同,没有标签的概念,而只有奖励机制,通过给智能体反馈正向或者反向的奖励来约束智能体找到一个最优解,并且它要比有监督学习的训练复杂,值得高兴的是目前科学家们已经提出了可以简化构建一个强化学习系统的各种技术与框架。现在就让我们来看看吧。


一、主要内容

1、学习优化奖励

在强化学习中,用于观察环境做出决策的系统称之为智能体,智能体做出的决策应用与环境之后会获得奖励,奖励的正负取决于策略之后获得的回报(一般情况下奖励越大说明决策越优,反之亦然)。智能体的工作就是通过不断的试错,找到一个对于环境A做出决策X获得最大的奖励。

2、策略搜索

智能体用来决策对应环境A做出决策X的算法成为策略。智能体需要完成的就是在整个策略了空间内寻找一个应对当前环境最好的策略,这个过程就称为策略搜索。
策略搜索的方式有很多种,对于策略空间较小的情况,我们可以使用暴力所有的方式多次尝试不同的值,直到获得最优解。还可以使用遗传算法,先尝试多条策略筛选出较优的几条,然后保存较优策略了并加上其变体生成第二代继续筛选,以此类推。还可以使用策略梯度,通过评估策略参数有关的奖励梯度来调整参数,根据奖励的多少来调整参数优化的方向。
在这里插入图片描述

3、OpenAI Gym介绍

我们在训练一个智能体时有一个关键的前提,就是需要为智能体提供一个训练的环境。例如训练的是一个游戏的智能体则需要为它提供一个游戏的模拟器,如果训练的是一个行走的机器人那么就需要为智能体提供一个真是的陆地环境。但显然这样的方式并不完全可行,需要很大的投入和训练成本。OpenAI Gym的问世就是为了解决这一问题,它是一个工具包,提供了很多的模拟环境供我们训练一个智能体。

4、神经网络策略

神经网络策略的思想与硬编码策略的思想是一样的,观察者的观察结果作为输入,执行的操作作为输出,神经网络会输出每个动作的概率,最后根据输出的概率随机选择一个动作执行。
在这里插入图片描述

5、评估动作:信用分配问题

以往我们在训练一个机器学习或者是神经网络模型时有损失函数,我们可以通过观察损失函数的值就能够判断模型做出的决策是否是好的。但是在强化学习中我们只有奖励机制,我们只有在完成一个任务之后才会知道任务的结果,我们没有办法知道在完成任务时所做的众多动作中,哪些是好的哪些是坏的,更没有办法将最终结果的奖励分配到每个一个动作上。
一种常见的用于评估动作的办法是根据一个动作完成后获得的奖励总和(动作回报)来评估一个动作。为了屏蔽会出现一些特殊的情况来干扰我们最后做出的判断,我们必须运行多个回合并归一化所有动作的回报,这样我们就可以看出所有的动作的优劣。

6、策略梯度

策略梯度算法(PG)是跟随朝着回报更高的梯度来优化策略的参数。
PG有一个常见的变体(REINFORCE),它会让智能体多次参加游戏并计算每个步骤的梯度。多个回合之后将梯度向量与动作的优势相乘,最后计算所有梯度向量的均值执行梯度下降。不过由于这个算法需要多个回合才能估算每个动作的优势,所以它的样本效率极低无法应用与更加复杂更大的任务。

7、马尔克夫决策过程

马尔克夫决策过程(MDP)的基础是马尔克夫链,它是由固定数量的状态组成,每一个步骤会从一个状态切换到另一个转态(包括当前状态),每个状态切换的概率的固定的,切换过程随机选择状态。
在这里插入图片描述

马尔克夫决策过程基于马尔克夫链,智能体在做出决策时可以根据每个动作的概率选择所有可能的动作中的一个,完成状态转换后会返回一定的奖励,智能体要做的就是找到一个随着时间的推移最大化奖励的策略。
在这里插入图片描述

8、时序差分学习

时序差分学习(TD)用于解决在马尔克夫决策过程中需要不断的经历才知道状态转换的概率以及转换之后的奖励问题。它使用探索策略来探索MDP并且随着他的发展会根据观察到的转变和奖励来更新状态的估计值。

9、Q学习

Q学习是Q值迭代算法对最初位置转移概率和奖励情况的一种改进。它的工作方式是观察智能体的活动,逐步改善其对Q值的估算,一旦找到准确的Q值的估算值,那么最佳的策略就是最高Q值动作。

  1. 探索策略
    Q学习是通过观察智能体的活动来估算Q值,所以需要智能体充分了解MDP才能有不错的效果,但是智能体探索MDP的过程非常的漫长。这个时候我们就可以使用ε贪婪策略,它会使得智能体以概率ε随机行动,随着探索的时间越长Q值越准确,它也会花费更多的时间来探索MDP有趣的部分,同时也会花费一定的时间来探索MDP中未知的部分。
  2. 近似Q学习和深度Q学习
    Q学习的弊端在于它无法很好的扩展到具有许多状态和动作的大型MDP,解决的办法是使用一些可管理的参数找到一个可以求出近似任何状态S的Q值函数,直白点说就是能找到一个算法可以根据任何一个状态输出他的Q值估算值,这就称为近似Q学习。当我们把这个Q值估算的算法换为DNN时,这时的Q学习称为深度Q学习,这时的DNN称为深度Q网络(DQN)。

10、实现深度Q学习

实现深度Q学习我们需要一个深度Q网络为每一个可能的动作都输出一个近似的Q值。为了使得深度Q网络可以选择动作,我们需要让智能体使用ε贪婪策略来探索环境,并且我们在训练深度Q网络的过程中不仅使用新的经验来训练,而是会把所有的经验都放在混冲去每次训练迭代都从中抽取一批次来训练。
深度学习算法面临着一个主要的问题,随着智能体探索环境他会更新策略,但是在新环境中学到的东西会破坏先前在其他环境中学到的东西,导致强化学习训练的不稳定,以及对超参数的值与随机种子的巨大敏感性。

11、深度Q学习的变体

  1. 固定Q值的目标
    为了解决深度Q学习算法不稳定的问题,提出了深度Q学习的变体,这个变体由两个深度Q网络组成,一个用于学习并移动智能体,另一个负责定义目标的目标模型。
  2. 双DQN
    后来研究人员发现,负责定义目标的网络往往会高估Q值,所以他们建议在选择下一个状态的最佳动作时,使用线性模型而不是目标模型,并且仅仅使用目标模型来估计这些最佳动作的Q值。
  3. 优先经验重播
    我基础的深度Q学习中,经验的采样是从重播缓冲区随机采样一个批次,在科学家的优化后经验采样时,在重播缓冲区会优先采样重要的经验,不过这样也存在着过拟合的风险,可以通过降低重要经验的权重来降低过拟合的风险。
  4. 竞争DQN
    在竞争DQN中,模型同时估算状态值和每个可能的动作的优势。由于最佳动作的优势应为0,因此模型从所有的预测中的优势减去最大的预测优势。

12、TF-Agents库

  1. 简介
    TF-Agents是一个基于TensorFlow的强化学习库,它提供了许多的现成的环境。它支持PyBullet库,DeepMind的DM Control库和Unity的ML-Agents库。它实现了许多的RL算法以及各种组件并且支持自定义组件。
  2. 环境规范
    使用TF-Agents环境时,它提供了观察、动作和时间步骤的规范,包括其形状、数据类型和名称,以及其最大值最小值。
  3. 环境包装器
    TF-Agents提供了几个环境包装器,他们包装了一个环境,将每个调用转发给该环境还添加了一些额外的功能。
  4. 训练架构
    TF-Agents的训练架构通常分为两个并行的部分。一部分是驱使者,观察者和重播缓冲区。驱使者使用收集的策略操作来探索环境,然后收集轨迹发给观察者,由观察者保存至重播缓冲区。另一部分是智能体,智能体从重播缓冲区中提取了一批次的轨迹并训练一些网络。这个训练架构的中心思想就是一部分探索环境,收集轨迹。另一部分学习并更新收集的策略。
    在这里插入图片描述

13、一些流行的RL算法概述

目前有一些比较流行的强化学习算法,例如:Actor-Critic算法,Asynchronous Advantage Actor-Critic,Advantage Actor-Critic,Soft Actor-Critic,Proximal Policy Optimization,Curiosity-based exploration。每个算法各有特色,我们可以根据自己的实际情况选择合适的算法。

二、课后练习

1. 你如何定义强化学习?它与常规的有监督学习或无监督学习有何不同?
强化学习是机器学习的一个领域,旨在创建能够在环境中采取行动的智能体,从而使奖励随着时间的推移而最大化。RL与常规有监督学习和无监督学习之间有很多差异。下面是一些差异:
·在有监督学习和无监督学习中,目标通常是在数据中找到模式并使用它们来进行预测。在强化学习中,目标是找到一个好的策略。
·与有监督学习不同,强化学习没有明确为智能体给出“正确”的答案。它必须通过反复试验错误来学习。
·与无监督学习不同,有一种通过奖励的有监督形式。我们不告诉智能体如何执行任务,但是会告诉智能体其成功或失败。
·强化学习代理需要在探索环境、寻找获得奖励的新方法以及利用已经知道的奖励来源之间找到适当的平衡。相反,有监督学习和无监督学习系统通常不需要担心探索。它们只是根据给定的训练数据。
·在有监督学习和无监督学习中,训练实例通常是独立的(实际上,它们通常是随机混洗的)。在强化学习中,连续观察通常不是独立的。智能体在继续前进之前可能会在环境的同一区域中停留一段时间,因此连续的观察结果将非常相关。在某些情况下,重播存储(缓冲区)用于确保训练算法能得到相当独立的观察结果。

2. 你能想到本章中未提到的RL的三种可能的应用吗?对于每一个来说,环境是什么?什么是智能体?有哪些可能的动作?有什么奖励?
除了第18章中提到的,这里还有一些强化学习的可能应用:
音乐个性化
环境是用户的个性化网络广播。智能体是决定该用户接下来要播放什么歌曲的软件。它可能的操作是播放目录中的任何歌曲(必须选择用户喜欢的歌曲)或播放广告(必须选择会引起用户兴趣的广告)。每次用户听一首歌曲,它都会得到很小的奖励;每次用户收听广告,它会得到更大的奖励;当用户跳过歌曲或广告时,它会得到负面奖励;如果用户离开,则得到更大的负面奖励。
市场营销
环境是你公司的营销部门。智能体是一种软件,它根据给定的个人资料和历史购买记录来定义应将邮件发送给哪个客户(对于每个客户,它有两个可能的操作:发送或不发送)。它为邮件的成本给予负面奖励,为该活动产生的估计收入给予正面奖励。
产品交付
让智能体控制一批货车,确定它们应该在仓库取什么货,应该去的地方,应该卸什么货,等等。对于按时交付的每种产品,它将获得正面奖励;而对于延迟交付的产品,它将获得负面奖励。

3. 折扣因子是多少?如果你修改折扣因子,最优策略会改变吗?
估计动作的值时,强化学习算法通常会汇总该动作带来的所有奖励,将更多的权重分配给即时奖励,将较少的权重分配给以后的奖励(考虑到某项动作对近期未来的影响大于遥远未来的影响)。为了对此建模,通常在每个时间步长应用折扣因子。例如,在折扣因子为0.9的情况下,当你估算操作的值时,在两个时间步长之后收到的100的奖励仅计为0.92×100=81。你可以将折扣因子视为衡量相对于当前的未来价
值的量度:如果它非常接近1,则未来的值几乎与现在的值相同;如果接近0,则仅是立即获得的奖励很重要。当然,这会对最优策略产生巨大影响:如果你看重未来,你可能愿意为最终回报的前景承担很多当即的痛苦;如果你不看重未来,则只会抓住你可以找到的任何可以立即获得的回报,从不对未来进行投资。

4. 你如何衡量强化学习智能体的性能?
要衡量强化学习智能体的性能,你可以简单地汇总它所获得的奖励。在模拟环境中,你可以运行许多个回合,查看其平均获得的总奖励(可以查看最小值、最大值、标准差等)。

5. 什么是贡献分配问题?什么时候发生?如何缓解呢?
信用分配问题是这样的事实:当强化学习智能体收到奖励时,它没有直接的方法来知道其先前的哪些行为促成了该奖励。这通常在动作和所得奖励之间存在较大延迟时发生(例如,在Atari的Pong游戏中,从智能体击球到获胜之间可能有几十个时间步长)。解决它的一种方法是在可能的情况下为智能体提供短期奖励。这通常需要有关任务的先验知识。例如,如果我们想建立一个会下棋的智能体,不是仅仅在赢得比赛时才给予奖励,我们可以在每次吃掉对手的一个棋子时给予奖励。

6. 使用重播缓冲区有什么意义?
智能体通常可以在其环境的同一区域中停留一段时间,因此在这段时间内,其所有的经历都非常相似。这可能会在学习算法中引入一些偏差。它可能会针对此环境区域调整其策略,但是一旦移出该区域,它的性能会不好。要解决此问题,你可以使用重播存储。智能体不使用最近的学习经历,而将基于过去的经历的缓冲来学习(也许这就是我们晚上做梦的原因:重播我们白天的经历并更好地学习?)。

7. 什么是异策略(off-policy)RL算法?
异策略RL算法学习最佳策略的值(即如果智能体采取最佳行动,则每个状态可以预期的折扣奖励总和),而智能体遵循不同的策略。Q学习是这种算法的一个很好的示例。相反,同策略的算法学习智能体实际执行的策略的值,包括探索和利用。

三、总结

以上就是强化学习所有的内容,强化学习是一种独立于有监督无监督学习之外的一种人工智能体学习模式。我们对上文做一个总结就是:

  1. 强化学习没有一个准确的标签提供模型做损失函数的计算,而只有智能体在完成一个动作之后得到的奖励,根据动作完成之后状态的反馈来确定奖励的好坏。
  2. 强化学习所要做的就是让智能体能够根据观察到的状态X给出一个能获得最大奖励的动作,这一行为称为策略探索。
  3. 马尔科夫决策过程更像是一个由很多状态以及状态转换过程的树,智能体一旦了解了当前任务的这个马尔科夫决策过程就可以针对特有的环境做出决策判断。
  4. Q学习的中心思想就是给每个动作一个Q值类衡量动作的好坏,当智能体探索完整个决策空间之后就只需找到Q值最大的组合即可。
  5. 深度Q学习就是把衡量Q值的大小的决策交由深度神经网络来完成。
  6. TF-Agents是一个基于TensorFlow的强化学习库,提供了很多的环境以及强化学习算法,并且所有的组件支持自定义。

对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!

项目地址: 码云地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值