前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >强化学习系列(二)--算法概念

强化学习系列(二)--算法概念

原创
作者头像
languageX
修改2024-05-09 21:13:22
1.3K0
修改2024-05-09 21:13:22
举报

上文我们已经理解强化学习的基础概念以及其目标是找到一个策略 \pi 最大化未来累计奖励。同时介绍了几种常用的寻找最优策略的方法。在强化学习中还会将这些方法分类为model-based和model-free,value-based和policy-based,其中value-base的学习方法又分为off-policy和on-policy。本文主要介绍这些方法的区别和概念。

model-based和model-free

model-based基于模型的方法是让agent学习一种模型,这里的模型是指在环境中状态转移概率P,以及采取action后的奖励函数R进行建模,然后利用模型做出动态规划得到最佳策略。比如,如果agent已知任何状态下转移到任意状态的转移概率,以及在状态下执行任何动作的回报,那就可以通过动态规划问题求解得到一个回报最高的策略了。这种通过建立环境模型的方法就是model-based方法。

model-free方法则不需对环境进行建模,通常情况下去对环境统计出模型的情况也很少。model-free是对状态 s_t 下执行动作a_t能获得未来累计奖励进行估计,上文中MC和TD并没有对状态转移概率和奖励建立模型,所以是属于model-free方法。(个人理解model-free并不能说并没有模型,比如对累计奖励的预估也是模型,只是不需要先学一个概率转移模型,而是在agent和environment实时交互中优化策略。)

所以一个强化学习算法是model-based还是model-free主要是看是否有对状态转移概率以及奖励建模,如果有就是model-based,否则就是model-free。

value-based和policy-based

value-based基于值的强化方法

on-policy和off-policy

介绍value-based之前先了解on-policy和off-policy。这两者的主要区别就是在于更新值函数时的策略。on-policy,只使用了当前策略产生的样本,而off-policy,并不一定使用当前策略产生的样本。主要区别是看学习者和策略者是不是同一个,如果是一个边决策边学习,就是on-policy,比如SARSA;否则不是同一个,通过学习历史信息对策略优化,就是off-policy,比如Q-learning.

SARSA和Q-learning

接下来初步了解下上文提到的SARSA和Q-learning算法。

SARSA算法的基础思路就是他的名字(State-Action-Reward-State'-Action')。先基于 \epsilon -贪婪法对当前状态S选择动作A,进入下一个状态S'并得到即时回报R,在新状态S’下再基于 \epsilon -贪婪法选择下一个动作A',更新价值函数:

Q(S,A) = Q(S,A)+ \alpha(R+ \gamma Q(S',A') - Q(S,A))

如此循环迭代,直到收敛。

(其中 \epsilon -贪婪法指设置一个小的 \epsilon值,1- \epsilon的概率选择目前认为是最大行为价值的行为, \epsilon的概率从动作空间中选择动作)

Q-learning的基本思路是先基于 \epsilon -贪婪法对当前状态S选择动作A, 进入下一个状态S'并得到即时回报R,(这里和SARSA一样),接下来使用贪婪法选择A’来更新价值函数(SARSA是使用 \epsilon -贪婪法选择A’去更新价值函数)

Q(S,A) = Q(S,A)+ \alpha(R+ \gamma \underset {a}maxQ(S',a) - Q(S,A))

价值函数更新后,新的动作是基于状态S’,用 \epsilon -贪婪法重新得到。(SARSA是直接使用A’作为下一步开始执行动作)

SARSA和Q-learning都是价值迭代,通过价值函数的更新来更新当前策略,然后通过策略得到新的状态和即时奖励,循环迭代直到价值函数和策略收敛,得到最优价值函数和最优策略。

对于价值函数我们也可以通过神经网络来进行近似表示。对于状态价值函数,输入是状态s,输出是状态价值V(s,w)。对于动作价值函数,一种是输入状态s和动作a,输出对于动作价值q(s,a,w),一种是只输入状态s,动作集合有多少个动作就有多少个q(s,a_i,w)

Deep Q-learning和Q-learning的区别在于,价值函数Q值不通过状态和动作计算出来,而是通过深度网络Q网络得到。Q网络的输入是状态向量,输出是所有动作在该状态下的动作价值函数Q。

以上方法均是基于值函数来学习,但是在应用中主要有以下不足:

  1. 对连续动作处理不足;2.无法解决随机策略问题;3.在拥有重复状态环境下处理不足。

policy-based基于策略的强化方法

基于策略的强化学习,是直接对策略进行建模,用一个神经网络表示策略,对动作输出一个输出概率来表示。即学习

\pi_\theta(s,a)=p(a|s,\theta)

,给定状态s,得到选择的动作a的概率。

在基于值的方法中,选择动作的策略是不变的,使用贪婪选择法,而在基于策略中是通过概率分布选择的。

首先它是可以处理离线动作空间的,从s输出一个离散分布,选择每个动作的概率;其次,对于连续空间,可以先假设动作服从一个分布,然后从s输出一个动作的均值,选择动作时就可以利用分布选择。

在基于价值算法中,是根据值函数对策略进行改进,对比基于策略的方法,他的决策更为肯定就是选择价值最高的;而基于策略方法,是直接对策略进行迭代,直到累计回报最大。

最后借鉴一张图片总结下强化学习算法框架

参考:

https://blog.csdn.net/wordyang1/article/details/76557608

https://www.cnblogs.com/pinard/p/10137696.html

https://zhuanlan.zhihu.com/p/65847946

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • model-based和model-free
  • value-based和policy-based
    • value-based基于值的强化方法
      • policy-based基于策略的强化方法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档