文章目录

  • 什么是强化学习?(主要的强化学习概念)
    • 4.主要的强化学习概念
      • 4.1 基于模型与无模型(Model-based vs. Model-free)
      • 4.2 预测(prediction)和控制(control)
      • 4.3 On-policy vs. Off-policy
      • 4.4 主要的强化学习技术
        • 4.4.1 蒙特卡洛学习((Monte-Carlo learning, MC)
        • 4.4.2 时间差分学习(temporal-difference learning, TD)
          • 4.4.2.1 SARSA
          • 4.4.2.1 Q-learning
        • 4.4.3 策略梯度(policy gradient, PG)
        • 4.4.4 Actor-Critic(AC)
        • 4.4.5 A2C(advantage actor-critic)
        • 4.4.6 A3C(asynchronous advantage actor-critic)
        • 4.4.7小结

什么是强化学习?(主要的强化学习概念)

4.主要的强化学习概念

强化学习与 MDPMDPMDP 的概念没有太大区别,但它具有以下特点:

  • 无法预先知道完整的状态转移概率和补偿函数

  • 状态集(几乎)无限

在前面介绍的 MDPMDPMDP 中,状态为不连续(离散)。但是,大多数应用强化学习的问题都是连续的,可能的状态非常多。例如,两个错误配置的空间为R2R^2R2。

4.1 基于模型与无模型(Model-based vs. Model-free)

强化学习无法预知状态转移概率和补偿函数。在MDP中,此状态转移概率和补偿函数称为模型(model)。

如果MDP可以确定状态转移概率和补偿函数,则称为基于模型。如果状态、行为空间较小,并且预先知道状态转移概率和补偿函数。因此,基于model可以解决的问题是有限的。MDP和动态编程相当于基于模型的。

无 MDPMDPMDP 模型的强化学习称为model-free。现实中的大多数问题都很难用MDP解决,因此最近受到关注的大多数强化学习方法都可以称为model-free。
补偿函数R(s,a)R(s, a) R(s,a)
状态转移函数T(s′∣s,a)T\left(s^{\prime} \mid s, a\right) T(s′∣s,a)

4.2 预测(prediction)和控制(control)


强化学习无法预知 MDPMDPMDP 模型,因此可以预测状态价值函数的值。然后控制其预测越来越精确。重复这些预测和控制可以说是强化学习。

预测是Agent根据给定的策略,通过与环境的沟通学习状态价值函数。由于强化学习无法确定所有状态的价值,因此对其进行采样。代理将通过体验这些示例来学习环境。控制是根据您通过预测学习的价值函数来学习策略。

预测方法包括蒙特卡罗预测和时间差预测。控制的典型方法是SARSA和Q-learning。

4.3 On-policy vs. Off-policy

on-policy: 生成样本的policy(value function)跟网络更新参数时使用的policy(value function)相同。典型为SARAS算法,基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,算法为on-policy算法。

off-policy : 生成样本的policy(value function)跟网络更新参数时使用的policy(value function)不同。典型为Q-learning算法,计算下一状态的预期收益时使用了max操作,直接选择最优动作,而当前policy并不一定能选择到最优动作,因此这里生成样本的policy和学习时的policy不同,为off-policy算法。

On-policy意味着强化学习,例如决定行为的策略(policy)和要学习的策略。相反,Off-Policy的方法不同于您所使用的策略和您所学习的策略。
On-policy强化学习是一种积累了大量经验的学习,但如果更新了策略,这些经验将无法用于学习。因此,从数据效率的角度来看,Off-Policy是一个不错的选择。

4.4 主要的强化学习技术

主要的强化学习技术有蒙特卡洛学习((Monte-Carlo learning, MC)、时间差分学习(temporal-difference learning, TD)、Q-learning、策略梯度(policy gradient, PG)、Actor-Critic(AC), A2C(advantage actor-critic), A3C(asynchronous advantage actor-critic) 。

4.4.1 蒙特卡洛学习((Monte-Carlo learning, MC)

让我们从预测和控制的角度来看看蒙特卡洛学习。在 Monte-Carlo 预测中,通过采样学习状态值函数。 经过足够多的情节后,状态值函数将更接近正确答案。

我们将通过采样状态的经验获得的增益定义如下:
Gt=Rt+1+γRt+2+⋯+γn−1Rt+nG_{t}=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1} R_{t+n} Gt​=Rt+1​+γRt+2​+⋯+γn−1Rt+n​状态值可以再次表示为获取奖励如下:
Vn+1(s)=1n∑i=1nGi=1n(Gn+∑i=1n−1Gi)=1n(Gn+(n−1)1n−1∑i=1n−1Gi)=Vn(s)+1n(Gn−Vn(s))V_{n+1}(s)=\frac{1}{n} \sum_{i=1}^{n} G_{i}=\frac{1}{n}\left(G_{n}+\sum_{i=1}^{n-1} G_{i}\right)=\frac{1}{n}\left(G_{n}+(n-1) \frac{1}{n-1} \sum_{i=1}^{n-1} G_{i}\right)=V_{n}(s)+\frac{1}{n}\left(G_{n}-V_{n}(s)\right) Vn+1​(s)=n1​i=1∑n​Gi​=n1​(Gn​+i=1∑n−1​Gi​)=n1​(Gn​+(n−1)n−11​i=1∑n−1​Gi​)=Vn​(s)+n1​(Gn​−Vn​(s))查看这个公式,我们通过添加旧状态值函数和新获得的奖励之间的差来更新状态值函数。 在这里,旧状态价值函数与新获得的奖励之间的差异称为误差。1/n1/n1/n α\alphaα乘以这个误差
Vn+1(s)=Vn(s)+α(Gn−Vn(s))V_{n+1}(s)=V_{n}(s)+\alpha\left(G_{n}-V_{n}(s)\right) Vn+1​(s)=Vn​(s)+α(Gn​−Vn​(s))与深度学习一样,学习率 α\alphaα
蒙特卡洛预测中使用的总获得奖励 GGG
蒙特卡洛控制使用状态-动作值函数而不是状态值函数。
Q(s,a)←Q(s,a)+α(Gn−Q(s,a))Q(s, a) \leftarrow Q(s, a)+\alpha\left(G_{n}-Q(s, a)\right) Q(s,a)←Q(s,a)+α(Gn​−Q(s,a))这样就可以选择状态-动作值函数值高的动作,以一定的概率进行探索。

4.4.2 时间差分学习(temporal-difference learning, TD)

还可以根据预测和控制来研究时差学习。

在 Monte Carlo 预测中,状态值函数直到结束才能更新。 因此,存在难以进行实时进行学习的缺点。 时差预测 (TD) 允许您在每个时间步更新值函数。
时间差分预测更新价值函数如下:
V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right)\right) V(St​)←V(St​)+α(Rt+1​+γV(St+1​)−V(St​))与蒙特卡罗预测不同,我们在每个时间步 ttt 更新价值函数。这样,在episode中,当前状态的值函数用下一个状态的值函数更新,所以 TDTDTD 可以说是使用bootstrap。事实上,即使在动态规划中,值函数也会在每个时间步进行更新。因此,可以说DP也使用了bootstrap。

bootstrap 是一种将当前状态的价值函数的值预测为下一个状态的价值函数的值的方法。

在 时间差分学习中,控制具有不同的名称,具体取决于它是在on-policy还是off-policy外。 On-policy 时间差分控制称为 state-action-reward-state-action (SARSA),off-policy 时间差分控制称为 Q-learning。

4.4.2.1 SARSA

对于一个 on-policy 方法,需要针对当前的行为策略 π{\pi}π 以及所有的状态 sss 和行为 aaa 估计行为值函数 qπ(s,a)q_{\pi}(s, a)qπ​(s,a),SARSA 是因为一个样本由当前状态、动作、奖励、下一个状态和下一个动作组成。这可以通过使用和TD 方法相同的方法来实现。现在考虑状态行为对之间的转移,同时学习状态行为对的值。TD方法下对应行为值函数的算法如下
Q(s,a)←Q(s,a)+α(Rsa+γQ(s′,a′)−Q(s,a))Q(s, a) \leftarrow Q(s, a)+\alpha\left(R_{s}^{a}+\gamma Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right) Q(s,a)←Q(s,a)+α(Rsa​+γQ(s′,a′)−Q(s,a))

4.4.2.1 Q-learning

Q-learning是一种off-policy 的 TD 控制算法。Q-learning将已经学习到的行为值函数 QQQ 接用来近似最优行为值函数 q∗q_*q∗​,而与当前遵循的策略无关。
Q(s,a)←Q(s,a)+α(Rsa+γmax⁡a′Q(s′,a′)−Q(s,a))Q(s, a) \leftarrow Q(s, a)+\alpha\left(R_{s}^{a}+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)-Q(s, a)\right) Q(s,a)←Q(s,a)+α(Rsa​+γa′max​Q(s′,a′)−Q(s,a))上式对一个状态行为对进行更新,而更新的数值是源自行为节点,选取的是下一状态可能的行为中对应行为值函数最大的节点

4.4.3 策略梯度(policy gradient, PG)

策略梯度可以看作是解决分类问题的强化学习。 就是决定在什么条件下哪个动作最好。 策略梯度用人工神经网络对任何状态下行为的概率值进行建模。

在在 Q-learning 中,您学习 QQQ 函数并采取具有高 QQQ 值的动作。 在策略梯度中,您学习一个动作的概率。 在策略梯度中,损失函数可以写成:
L(θ)=−E[∇θlog⁡πθ(a∣s)Q(s,a)]L(\theta)=-\mathbb{E}\left[\nabla_{\theta} \log \pi_{\theta}(a \mid s) Q(s, a)\right] L(θ)=−E[∇θ​logπθ​(a∣s)Q(s,a)]
其中 Q(s,a)Q(s,a)Q(s,a)是考虑长期奖励在状态 sss中执行动作 aaa 的价值。 策略斜率可以通过多种方式定义损失函数。 我们接下来将讨论的 Actor-Critic、A2C 和 A3C 可以看作是策略梯度方法的变体。

4.4.4 Actor-Critic(AC)

AC算法框架被广泛应用于实际强化学习算法中,该框架集成了值函数估计算法和策略搜索算法,是解决实际问题时最常考虑的框架。大家众所周知的alphago便用了AC框架。

Q-learning或策略梯度是使用单个神经网络的强化学习方法。 Actor-Critic 可以看作是 Q 学习和策略梯度的混合强化学习模型。

Actors 使用策略梯度模型来确定要采取的行动,Critic 使用 Q-learning 模型来批评所采取的行动。 这避免了单个模型常见的高方差问题。如下为Actor-Critic结构示意图

通过这种方式,Actor-Critic 通过在 Actor 和 Critic 之间共享一个神经网络来执行强化学习。 损失函数可以表示为
L(θ)=−E[∇θlog⁡πθ(a∣s)Qc(s,a)]L(\theta)=-\mathbb{E}\left[\nabla_{\theta} \log \pi_{\theta}(a \mid s) Q_{c}(s, a)\right] L(θ)=−E[∇θ​logπθ​(a∣s)Qc​(s,a)]

4.4.5 A2C(advantage actor-critic)

A2C 是在 Actor-Critic 方法中使用预期输出作为优势的方法。 优势是状态-动作值减去状态值。
D(s,a)=Q(s,a)−V(s)D(s, a)=Q(s, a)-V(s) D(s,a)=Q(s,a)−V(s)使用 Advantage 的损失函数更改为:
L(θ)=−E[∇θlog⁡πθ(a∣s)D(s,a)]L(\theta)=-E\left[\nabla_{\theta} \log \pi_{\theta}(a \mid s) D(s, a)\right] L(θ)=−E[∇θ​logπθ​(a∣s)D(s,a)]
A2C 将批评者视为优势。 这将使您不仅可以了解行为在哪个状态下有多好,还可以了解它如何变得更好。

4.4.6 A3C(asynchronous advantage actor-critic)

A3C 是 Google DeepMind 公布的具有代表性的强化学习方法之一。 A3C与A2C类似,但顾名思义,是在A2C中加入了异步概念的方法。

在 A3C 中,代理同时在多个环境中执行动作并训练神经网络。 之所以称为异步,是因为它同时在多个环境中训练神经网络。

在多种环境中执行行动并获得奖励, 并异步更新神经网络。通过这种方式,多个智能体在个体环境中独立地产生行为、奖励和批评,以执行强化学习。 这使您可以通过更广泛的经验快速有效地学习。

4.4.7小结

到目前为止,马尔可夫决策过程(MDP)、动态规划(DP)、蒙特卡洛学习(MC)、时差学习(TD)、时差学习(TD)、Q-学习(QL)、DQN、策略梯度(PG ),Actor - 介绍了了 Critic (AC)、A2C 和 A3C。 下表显示了这些强化学习技术的强化学习特征。

什么是强化学习?(主要的强化学习概念)相关推荐

  1. 打破深度学习局限,强化学习、深度森林或是企业AI决策技术的“良药”

    算法.算力和数据是人工智能时代的三驾马车,成为企业赋能人工智能的动力,但它们自身的特性也为企业和高校在研究和落地应用过程带来了重重挑战.比如,训练算法的成本高昂,数据从采集.处理到存储已面临瓶颈,目前 ...

  2. Science 好文:强化学习之后,机器人学习瓶颈如何突破?

    来源 | AI科技评论 编译 | 陈彩娴 编辑 | 陈大鑫 在过去的十年里,机器学习确实取得了巨大的突破,计算机视觉与语言处理方面也因此出现了许多改变世界的重要应用.但是,这股"春风&quo ...

  3. 干货|浅谈强化学习的方法及学习路线

    作者:Angel_Kitty 来源:http://www.cnblogs.com/ECJTUACM-873284962/ 一.介绍 目前,对于全球科学家而言,"如何去学习一种新技能" ...

  4. 浅谈强化学习的方法及学习路线

    介绍 目前,对于全球科学家而言,"如何去学习一种新技能"成为了一个最基本的研究问题.为什么要解决这个问题的初衷是显而易见的,如果我们理解了这个问题,那么我们可以使人类做一些我们以前 ...

  5. 【强化学习】从强化学习基础概念开始

    在开始探索强化学习的诸多算法之前,我们先来了解一下它所涉及到的具体概念.这些概念将作为基石,一直陪伴着我们的学习之旅.为了能够将这些概念熟记在心,我们这一期做成强化学习概念小卡片,一张一张给大家展示和 ...

  6. 【强化学习】深度强化学习入门介绍

    深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略. 自 2013 年Deep Q-Lear ...

  7. 强化学习-动态规划_强化学习-第4部分

    强化学习-动态规划 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU's Yo ...

  8. 强化学习-动态规划_强化学习-第5部分

    强化学习-动态规划 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU's Yo ...

  9. 强化学习q学习求最值_通过Q学习更深入地学习强化学习

    强化学习q学习求最值 by Thomas Simonini 通过托马斯·西蒙尼(Thomas Simonini) 通过Q学习更深入地学习强化学习 (Diving deeper into Reinfor ...

  10. 【逆强化学习-2】最大熵学习(Maximum Entropy Learning)

    文章目录 0.引言 1.算法原理 2.仿真 0.引言 \qquad本文是逆强化学习系列的第2篇,其余博客传送门如下: 逆强化学习0-Introduction 逆强化学习1-学徒学习 \qquad最大熵 ...

最新文章

  1. 切换apache的prefork和worker模式
  2. 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案
  3. 成功解决SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 0-1: malformed
  4. 试分析下列程序段:请选择(L1、L2、L3或L4)填入相应的括弧中
  5. 怎么解决 数据丢失的问题_ThreadLocal中内存泄漏和数据丢失问题的问题浅析及解决方案...
  6. 每天一点Swift(五)控制器的生命周期和SizeClass
  7. 多种时间格式字符串转换为Date对象
  8. angularjs启动项目报ERROR in AppModule is not an NgModule解决方法
  9. iOS中处理时间的类
  10. 频谱感知3:合作频谱检测中的硬合并与软合并
  11. 模糊控制在matlab的实现,模糊控制系统的MATLAB实现
  12. 淘宝 生成 图片二维码分享
  13. 【转载】ANSYS 动力分析 (9) - 瞬态动力分析 (1)
  14. 微信小程序云函数如何返回参数?
  15. 推荐画UML图以及流程图的在线网站Site
  16. Android圆形头像图Circle ImageView
  17. 水平垂直居中的几种方式
  18. [openwrt]coredump设置
  19. hexo butterfly主题添加备案信息
  20. 离职了,写点什么吧~

热门文章

  1. Maven详解(第二节)
  2. 燕郊手机5G网络已全面覆盖,宽带提高至1000M!
  3. 二手家具回收app功能
  4. 从0开始制作H5直播源码的教程
  5. 针对python代码下载youtub视屏报错修复
  6. mac os壁纸软件_如何在Mac OS X上更改桌面墙纸
  7. App耗电及Crash体验优化
  8. 华为手机如何安装google play, chrome等
  9. Android 10.0 媒体音乐,铃声,闹钟,通知等设置默认音量为最大音量80%
  10. Excel VBA 代替Sumproduct实现多条件求和