强化学习基础知识详解

强化学习基本概念

强化学习四要素:状态(state)、动作(action)、策略(policy)、奖励(reward)。

 

名词解释
智能体学习器与决策者的角色。
环境智能体之外一切组成的、与之交互的事物。
动作智能体的行为表征。
状态智能体从环境获取的信息。
奖励环境对于动作的反馈。
策略智能体根据状态进行下一步动作的函数。
状态转移概率智能体做出动作后进入下一状态的概率。

RL考虑的是智能体(Agent)与环境(Environment)的交互问题:

智能体处在一个环境中,每个状态为智能体对当前环境的感知;智能体只能通过动作来影响环境,当智能体执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给智能体一个奖赏。
--- 周志华 《机器学习》

 

RL的目标是找到一个最优策略,使智能体获得尽可能多的来自环境的奖励。例如赛车游戏,游戏场景是环境,赛车是智能体,赛车的位置是状态,对赛车的操作是动作,怎样操作赛车是策略,比赛得分是奖励。在论文中中常用观察(Observation)而不是环境,因为智能体不一定能得到环境的全部信息,只能得到自身周围的信息。

 

强化学习基本结构 

 

智能体与环境交互

 在每个时间步(timestep),智能体在当前状态根据观察来确定下一步的动作,因此状态和动作之间存在映射关系,这种关系就是策略,用\large \pi表示:

\LARGE \pi:S\rightarrow A

记作 \large \alpha = \pi(s), \large \alpha表示表示动作action,S表示状态state。

学习开始时往往采用随机策略进行实验得到一系列的状态、动作和奖励样本,算法根据样本改进策略,最大化奖励。由于奖励越来越大的特性,这种算法被称作增强学习。

马尔可夫决策过程(Markov Decision Process, MDP)

 马尔可夫性

系统的下一个状态仅与当前状态有关,而与历史状态无关。

 此处的状态是指完全可观察的全部的环境状态。

回报(Return)

为最大化长期累积奖赏,定义当前时刻后的累积奖赏为回报(Return),考虑折扣因子(避免时间过长时,总回报无穷大):

\large {R_{\rm{t}}} = {r_{t + 1}} + \gamma {r_{t + 2}} + {\gamma ^2}{r_{t + 3}} + ... = \sum\limits_{k = 0}^\infty {​{\gamma ^k}{r_{t + k + 1}}} \

值函数(Value Function)
强化学习的目标是学习到一个策略来最大化期望,即希望智能体执行一系列的动作来获得尽可能多的平均回报。为评估一个策略的期望回报,需要定义值函数. 

状态值函数:在状态s下执行动作a获得的期望回报。 

 

 状态-动作值函数:在状态s下执行动作a后获得的期望回报。

 

 

根据马尔可夫特性,二者有如下关系:

 即状态值函数\large {V^\pi }(s)\是动作-状态值函数\large {Q^\pi }(s,a)\关于动作a的期望。

 贝尔曼方程(Bellman equation)

 其意义在于当前状态的值函数可以通过下一状态的值函数来计算。同理,状态-动作值函数也有类似关系。

 \large {Q^\pi }(s,a) = {E_\pi }[{r_{t + 1}} + \gamma {Q^\pi }({s_{t + 1}},a{}_{t + 1})|{s_t} = s,{a_t} = a]\

 计算状态值函数的目的是为了构建学习算法从数据中得到最优策略,每个策略对应着一个状态值函数,最优策略对应着最优状态值函数。

基于值函数的学习方法

求解最优策略等价于求解最优的值函数,这是求解最优策略的一种方法,称为基于值函数的学习方法,DQN采用该算法。

最优的Q值必然为最大值,故等式右侧的Q值必然为使a'取最大的Q值。

 

由于值函数是对策略的评估,为不断优化直至选出最优策略,一种可行的方式是依据值函数选取策略更新的方式。常见的策略有两种:

 

  • 贪婪策略

 贪婪策略是一个确定性策略,即始终选取使值函数最大的策略。这是智能体对已知知识的利用(exploitation),不好更新出更好的Q值,但可以得到更好的测试效果用于判断算法是否有效。

  •  ε-greedy策略:

 选取不使值函数最大的动作表示智能体对未知知识的探索(exploration),探索未知的动作会产生的未知的效果,有利于更新Q值,有可能获得更好的策略,故ε-greedy策略平衡了探索和利用。

分类

马尔科夫链过程

  • 基于模型的(Model-based):动态规划
  • 无模型的(Model-free):强化学习
    • 基于值函数的(Value-based)
    • 基于策略梯度的(Policy-gradient)
    • 基于模型的(Model-based)

 

 

 无模型强化学习方法

基于模型的强化学习方法(动态规划)的前提是知道环境的状态转移概率,但在实际问题中,状态转移的信息往往无法获知,由此需要数据驱动的无模型(model-free)的方法。

蒙特卡罗(Monte Carlo)方法

在无模型时,一种自然的想法是通过随机采样的经验平均来估计期望值,此即蒙特卡罗法。其过程可以总结如下:

  • 智能体与环境交互后得到交互序列
  • 通过序列计算出各个时刻的奖赏值
  • 将奖赏值累积到值函数中进行更新
  • 根据更新的值函数来更新策略

在动态规划中,为保证算法的收敛性,算法会逐个扫描状态空间中的状态,计算值函数时用到了当前状态的所有后继状态的值函数。而蒙特卡罗利用经验平均估计状态的值函数,此处的经验是指一次试验,而一次试验要等到终止状态出现才结束,因此学习速度慢,效率不高。下图较直观展示了二者的不同。

 

动态规划

 

 蒙特卡罗方法

 

在蒙特卡罗中,如果采用确定性策略,每次试验的轨迹都是一样的,因此无法进一步改进策略。为了使更多状态-动作对参与到交互过程中,即平衡探索和利用,常用ε-greedy策略来产生动作 ,以保证每个状态-动作对都有机会作为初始状态,在评估状态-动作值函数时,需要对每次试验中所有状态-动作对进行估计。

时序差分方法(Temporal Difference)

由于蒙特卡罗需要获得完整轨迹,才能进行策略评估并更新,效率较低。时序差分法结合了动态规划和蒙特卡罗,即模拟一段轨迹(一步或者几步),然后利用贝尔曼方程进行自迭代更新,如下图所示:

  时序差分

 

对该方法的通俗理解:
你需要从A点出发,经过B点后到C点,你有两个路段(A-B,B-C)的估计用时,在一次实验中,经过A-B路段后得到一个准确用时,根据这个准确用时和B-C路段的估计用时即可得到新的全路段估计用时(即更新)。
上述例子体现了TD学习的主要原则:不必等到实验结束再沿着实验路径进行更新。

区别

蒙特卡罗使用的是值函数最原始的定义,即利用所有奖赏的累积和来估计值函数;
动态规划和时序差分则利用一步预测方法来计算当前状态值函数,不同的是,动态规划利用模型计算后继状态,时序差分利用实验得到后继状态。

Q-learning

Q学习基于时序差分得到更新Q值的方法:

 迭代得到的值没有直接赋予新的Q值,而是采用递进的方式更新原有Q值,这能够减少估计误差造成的影响,类似随机梯度下降,最终收敛到最优Q值。

 Q-Learning 算法

 

深度Q网络(Deep Q-Network, DQN)

函数近似(Function Approximation)

动态规划、蒙特卡罗、时序差分等都有一个共同前提:状态空间和动作空间是离散的且不能太大。通常值函数用表格的形式的表示(Q-Table),故又称之为表格型强化学习。但在很多问题中,状态空间维数很大,甚至可能是连续的,无法用表格表示,即在训练过程中,仅通过反复的测试无法获得足够的样本来遍历每个状态,这样在应用过程中若遇到未遍历的状态将导致算法失败。

人类在学习过程中不可能遍历所有的情况,更多的是将新情况与记忆进行比对,如果相似,则采用相似的做法。因此,如果能用一个函数来表示值函数,输入任意的状态都能输出结果,那么就可以把Q矩阵的更新问题变成一个函数拟合问题,相近的状态也就可以得到相近的动作,这就是值函数近似(value function approximator):

 通过更新参数w来使得Q函数逼近最优的Q值。

 

上述操作将求解值函数问题转化为函数优化问题,从而可以使用监督学习(supervised learning).监督学习是一种常见且易于解决的问题,线性回归(Linear Regression) 、支持向量机(Support Vector Machine)、决策树(Decision Tree), 以及神经网络(Neural Network )等都可以用来解决此类问题,一般做法是:

1 确定一个损失函数loss function
2 计算w关于损失函数的梯度
3 使用梯度下降比如随机梯度下降(SGD)等方法来更新θ

使用深度神经网络做值函数近似来解决强化学习问题即是深度强化学习(Deep Reinforcement Learning,Deep Q-Learning,DQN)

DQN

 DQN结构

 

与Q-Learning相比,DQN主要改进在以下三个方面:
(1)DQN利用深度卷积网络(Convolutional Neural Networks,CNN)来逼近值函数;
(2)DQN利用经验回放训练强化学习的学习过程;

Q-Leaning 方法基于当前策略进行交互和改进,每一次模型利用交互生成的数据进行学习,学习后的样本被直接丢弃。但如果使用机器学习模型代替表格式模型后再采用这样的在线学习方法,就有可能遇到两个问题,这两个问题也都和机器学习有关。

  1. 交互得到的序列存在一定的相关性。交互序列中的状态行动存在着一定的相关性,而对于基于最大似然法的机器学习模型来说,我们有一个很重要的假设:训练样本是独立且来自相同分布的,一旦这个假设不成立,模型的效果就会大打折扣。而上面提到的相关性恰好打破了独立同分布的假设,那么学习得到的值函数模型可能存在很大的波动。
    为解决以上两个问题,引入经验回放。Replay Buffer 包含了收集样本和采样样本两个过程。收集的样本按照时间先后顺序存入结构中,如果Replay Buffer 已经存满样本,那么新的样本会将时间上最久远的样本覆盖。而对采样来说,如果每次都取出最新的样本, 那么算法就和在线学习相差不多; 一般来说,Replay Buffer 会从缓存中均匀地随机采样一批样本进行学习。这样,每次训练的样本通常来自多次交互序列,这样单一序列的波动就被减轻很多,训练效果也就更加稳定。同时,一份样本也可以被多次训练,提高了样本的利用率。

  2. 交互数据的使用效率。采用梯度下降法进行模型更新时,模型训练往往需要经过多轮迭代才能收敛。每一次迭代都需要使用一定数量的样本计算梯度, 如果每次计算的样本在计算一次梯度后就被丢弃,那么我们就需要花费更多的时间与环境交互并收集样本。

为解决以上两个问题,引入经验回放。Replay Buffer 包含了收集样本和采样样本两个过程。收集的样本按照时间先后顺序存入结构中,如果Replay Buffer 已经存满样本,那么新的样本会将时间上最久远的样本覆盖。而对采样来说,如果每次都取出最新的样本, 那么算法就和在线学习相差不多; 一般来说,Replay Buffer 会从缓存中均匀地随机采样一批样本进行学习。这样,每次训练的样本通常来自多次交互序列,这样单一序列的波动就被减轻很多,训练效果也就更加稳定。同时,一份样本也可以被多次训练,提高了样本的利用率。

 (3)DQN独立设置了目标网络来单独处理时序差分中的偏差。

在Q-Learning中,通过当前时刻的回报和下一时刻的价值估计进行更新,由于数据本身存在着不稳定性, 每一轮迭代都可能产生一些波动,这些波动会立刻反映到下一个迭代的计算中,这样我们就很难得到一个平稳的模型。为了减轻相关问题带来的影响,需要尽可能地将两个部分解耦,由此引入目标网络,其训练过程如下:

  1. 在训练开始时,两个模型使用完全相同的参数。
  2. 在训练过程中, Behavior Network 负责与环境交互,得到交互样本。
  3. 在学习过程中,由Q-Learning 得到的目标价值由Target Network 计算得到;然后用它和Behavior Network 的估计值进行比较得出目标值并更新Behavior Network。
  4. 每当训练完成一定轮数的迭代, Behavior Network 模型的参数就会同步给Target Network ,这样就可以进行下一个阶段的学习。

通过使用Target Network ,计算目标价值的模型在一段时间内将被固定,这样模型可以减轻模型的波动性。

 DQN完整算法

 DQN完整算法

具体训练过程: 

Step 1: 用一个深度神经网络来作为Q值的值函数近似,参数为w

Step 2: 在Q值中使用均方差来定义目标函数即损失函数:

 

 

此处Target即为算法流程中的目标网络。

Step 3:计算参数w关于损失函数的梯度:

 

Step 4: 使用SGD实现End-to-end的优化目标
得到上述梯度,且\frac{​{\partial Q(s,a;w)}}{​{\partial w}}\可以从深度神经网络中进行计算,因此可以使用随机梯度下降算法来更新参数,从而得到最优的Q值。



转载自:https://www.jianshu.com/p/6436b99dcaef
 

 

 

 

 

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PPO (Proximal Policy Optimization) 是一种基于梯度的强化学习算法。它的主要思想是通过对策略的更新来提高策略的效率。主要包括以下步骤: 1. 首先选取一个初始策略,然后使用这个策略在环境中进行多次探索。 2. 收集探索中获得的数据,并使用这些数据来估计策略的价值。 3. 通过梯度下降法来更新策略,使得策略的价值更高。 4. 通过使用一个称为“clip”的技巧来限制策略的更新,以避免策略变得过于激进。 5. 重复上述步骤,直到策略达到最优。 PPO 通过在策略迭代过程中限制更新的幅度来防止策略的更新过于激进,从而提高了稳定性和效率。这也是为什么 PPO 算法在实际应用中表现很好的原因。 ### 回答2: 强化学习ppo算法,全称是Proximal Policy Optimization,是一种用于解决连续动作空间问题的强化学习算法。 ppo算法的核心思想是通过参数更新策略,优化策略的近似目标函数,以获得更好的策略。它采用了两个核心技术:策略评估和策略改进。 首先,ppo算法使用一个神经网络来表示策略,并基于当前策略采样生成训练数据。然后,利用产生的训练数据来更新策略模型的参数,提高策略的性能。 在策略评估方面,ppo算法采用了一种称为价值函数的辅助函数,用于估计当前策略的优劣。这个价值函数可以帮助判断哪些动作对于获得更好的回报是有帮助的。通过评估策略的优劣,可以确定哪些策略需要得到改进,以及改进的方向。 在策略改进方面,ppo算法使用一种叫做近端策略优化的方法,将策略的更新限制在一个可接受的范围内,防止策略的更新过于剧烈。这种方法可以保证策略更新的稳定性,并且避免一些不可预见的问题。 最后,通过多轮的策略评估和策略改进,ppo算法可以逐步优化策略,提高强化学习的性能。相比于传统的强化学习算法,ppo算法具有较强的鲁棒性和稳定性。 总结来说,ppo算法是一种用于解决连续动作空间问题的强化学习算法,通过使用策略评估和策略改进的方法,优化策略模型的参数,以提高策略的性能。它具有鲁棒性和稳定性的优势,适用于许多实际问题的求解。 ### 回答3: 强化学习(Reinforcement Learning)是一种机器学习方法,其通过智能体(agent)与环境(environment)的交互学习,通过观察环境状态和采取不同的行动来优化策略,使得智能体获得更高的奖励。 其中,PPO(Proximal Policy Optimization)是一种基于策略梯度(Policy Gradient)的强化学习算法。PPO算法通过定义一个目标函数,通过最大化该目标函数,优化策略。其基本思想是通过充分利用已有数据的经验,进行更新,并保证更新策略与之前的策略之间的差异不会太大,避免过大的策略改变导致训练不稳定。PPO算法的目标函数使用了一种被称为"近似比率(Importance Sampling Ratio)"的技巧,用于约束策略更新的幅度。 PPO算法具体步骤如下: 1. 初始化策略参数 2. 根据当前策略与环境交互采集样本数据 3. 计算采集到的样本数据的优势估计值,用于评估每个状态行动对的价值 4. 根据样本数据计算目标函数,并通过优化算法(如Adam)更新策略参数 5. 重复步骤2-4,直到达到预设的训练轮数或满足停止条件 PPO算法相较于其他强化学习算法的优势在于,其采用了一种近似比率的方法来约束策略更新范围,避免了过于剧烈的改变,增强了算法的稳定性。此外,PPO算法还可通过引入剪切或克隆操作来控制策略更新的幅度,进一步增加算法的稳定性。 总结起来,PPO算法是基于策略梯度的一种强化学习算法,通过近似比率来约束策略更新的幅度,以提高算法的稳定性。通过与环境的交互学习,PPO算法能够优化策略,并使智能体获得更好的奖励。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值