第十八章 强化学习

文章目录

  • 第十八章 强化学习
  • 前言
  • 一、主要内容
    • 1、学习优化奖励
    • 2、策略搜索
    • 3、OpenAI Gym介绍
    • 4、神经网络策略
    • 5、评估动作:信用分配问题
    • 6、策略梯度
    • 7、马尔克夫决策过程
    • 8、时序差分学习
    • 9、Q学习
    • 10、实现深度Q学习
    • 11、深度Q学习的变体
    • 12、TF-Agents库
    • 13、一些流行的RL算法概述
  • 二、课后练习
  • 三、总结

前言

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


一、主要内容

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。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!

项目地址: 码云地址

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

  1. 机器学习实战(十)——利用K-均值聚类算法对未标注数据分组

    机器学习实战(十)--利用K-均值聚类算法对未标注数据分组 聚类是一种无监督的学习,即对于训练数据来说并没有已知标签,我们是根据样本之间的相似程度将其划分为多个类. 一.K-均值聚类算法 K-均值算法 ...

  2. PyTorch强化学习实战(1)——强化学习环境配置与PyTorch基础

    PyTorch强化学习实战(1)--强化学习环境配置与PyTorch基础 0. 前言 1. 搭建 PyTorch 环境 2. OpenAI Gym简介与安装 3. 模拟 Atari 环境 4. 模拟 ...

  3. 机器学习实战(十四)Pegasos(原始估计子梯度求解器)

    目录 0. 前言 1. SVM 概念 2. Pegasos 3. 实战案例 3.1. Pegasos 学习完机器学习实战的Pegasos,简单的做个笔记.文中部分描述属于个人消化后的理解,仅供参考. ...

  4. 机器学习实战(十二)降维(PCA、SVD)

    目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...

  5. 机器学习实战(十)Apriori(关联分析)

    目录 0. 前言 1. Apriori 算法寻找频繁项集 2. 从频繁项集中挖掘关联规则 3. 实战案例 3.1. apriori算法发现频繁项集和关联规则 学习完机器学习实战的Apriori,简单的 ...

  6. 要不要读博?机器学习博五学生和强化学习博士展开了一场battle

    机器之心报道 编辑:魔王 要不要读博?读博值不值得?如何才能顺利完成博士生涯,并为职业发展打好基础?最近,社交网络上就此展开了一场争论. 读博还是不读博,这是个问题. 是否读博.读博有多难是个经久不衰 ...

  7. 吴恩达《机器学习》第十八章:图片文字识别OCR

    文章目录 十八.应用实例:图片文字识别OCR 18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:下一步工作 十八.应用实例:图片文字识别OCR 18 ...

  8. 机器学习实战(十四)利用SVD简化数据

    第十四章 利用SVD简化数据 14.1 SVD的应用 14.1.1 隐形语义索引 14.1.2 推荐系统 14.2 矩阵分解(SVD矩阵分解) 14.3 利用python实现SVD 14.4 基于协同 ...

  9. 机器学习实战(十)利用K-means算法对未标注数据分组

    第十章 利用K-means算法对未标注数据分组 10.1 K-均值聚类算法 10.2 使用后处理来提高聚类性能 10.3 二分K-均值算法 10.4 总结 第十章 利用K-means算法对未标注数据分 ...

  10. Python数据分析与机器学习实战<十>贝叶斯算法

    目录 贝叶斯算法概述 贝叶斯要解决的"逆概"问题 正向概率: 逆向概率:(也就是贝叶斯解决的问题) 为什么使用贝叶斯? 贝叶斯推导实例 贝叶斯公式 贝叶斯--"拼写纠正& ...

最新文章

  1. java怎么接收多选框多数据_表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)...
  2. 第20条:为私有方法名加前缀
  3. 数据中心可以不设置柴发吗?
  4. datagridview绑定xml
  5. Excel打印区域设置
  6. Use Windows Azure AD to create SSO projects
  7. php代码加注释_怎么在php中添加注释
  8. Linux scp连接很慢,ssh连接很慢问题分析
  9. $smary模板缓存
  10. 加多宝首度披露"换头手术"的详细内幕
  11. STM32F030C8T6 STM32F107VCT6总时钟树(clock tree)位置是在参考手册中
  12. 地址总线、数据总线、控制总线
  13. 笔记本开机速度怎么计算机,笔记本开机加速的步骤_如何给笔记本电脑开机提速-win7之家...
  14. 交易开拓者-附录一:计算公式
  15. 学习笔记(2):Java面试:核心考点突击大串讲-Redis的持久化机制
  16. 论文解读:《利用深度学习方法识别RNA伪尿苷位点》
  17. 物业怎么发短信通知给业主?
  18. python类实例化 输入参数名字 下划线_Python 用下划线作为变量前缀和后缀指定特殊变量...
  19. virtualbox虚机硬盘扩容
  20. 制作表白墙,给TA一个惊喜吧

热门文章

  1. 阿里云云虚拟主机开启安装SSL证书,开启HTTPS访问
  2. QFP、PQFP、LQFP、TQFP封装形式及PCB详解(转载)
  3. 《虎胆龙威4》观后感
  4. RTC领域首个AI算法大赛 AI in RTC 2019 创新挑战圆满落幕
  5. 最小生成树(Kruskal、Prim)
  6. ubuntu安装wine版微信
  7. 拉丁舞身形研究之恰恰恰
  8. 通过Adblock关闭网站上百度分享的方法
  9. 如何让计算机显示隐藏的文件夹,隐藏的文件夹如何显示 win7与xp系统显示隐藏文件夹的设置方法...
  10. 活血化瘀药题库【1】