强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

这篇具有很好参考价值的文章主要介绍了强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
专栏详细介绍:【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现

对于深度强化学习这块规划为:

  • 基础单智能算法教学(gym环境为主)
  • 主流多智能算法教学(gym环境为主)
  • 一些趣味项目(超级玛丽、下五子棋、斗地主、各种游戏上应用)
  • 单智能多智能题实战(论文复现偏业务如:无人机优化调度、电力资源调度等项目应用)

本专栏主要方便入门同学快速掌握强化学习单智能体|多智能体算法原理+项目实战。后续会持续把深度学习涉及知识原理分析给大家,让大家在项目实操的同时也能知识储备,知其然、知其所以然、知何由以知其所以然。

声明:部分项目为网络经典项目方便大家快速学习,后续会不断增添实战环节(比赛、论文、现实应用等)

  • 专栏订阅(个性化选择):

    • 强化学习原理+项目专栏大合集

    • 强化学习单智能体算法原理+项目实战

    • 强化学习多智能体原理+项目实战

    • 强化学习相关技巧(调参、画图等)

    • tensorflow_gym-强化学习:免费

强化学习基础篇[2]:SARSA、Q-learning

1.SARSA

SARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法,通常应用于机器学习和强化学习学习领域中。它由Rummery 和 Niranjan在技术论文“Modified Connectionist Q-Learning(MCQL)” 中介绍了这个算法,并且由Rich Sutton在注脚处提到了SARSA这个别名。

State-Action-Reward-State-Action这个名称清楚地反应了其学习更新函数依赖的5个值,分别是当前状态S1,当前状态选中的动作A1,获得的奖励Reward,S1状态下执行A1后取得的状态S2及S2状态下将会执行的动作A2。我们取这5个值的首字母串起来可以得出一个词SARSA。

1.1基础概念

算法的核心思想可以简化为:

Q ( S t , A t ) = Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] Q(S_{t},A_{t})=Q(S_{t},A_{t})+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_{t},A_{t})] Q(St,At)=Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]
其中 Q ( S t + 1 , A t + 1 ) Q(S_{t+1},A_{t+1}) Q(St+1,At+1) 是下一时刻的状态和实际采取的行动对应的 Q 值, Q ( S t , A t ) Q(S_{t},A_{t}) Q(St,At) 是当前时刻的状态和实际采取的形同对应的Q值。折扣因子 γ \gamma γ的取值范围是 [ 0 , 1 ],其本质是一个衰减值,如果gamma更接近0,agent趋向于只考虑瞬时奖励值,反之如果更接近1,则agent为延迟奖励赋予更大的权重,更侧重于延迟奖励;奖励值 R t + 1 R_{t+1} Rt+1为t+1时刻得到的奖励值。 α \alpha α为是学习率。

1.2应用举例

将一个结冰的湖看成是一个4×4的方格,每个格子可以是起始块(S),目标块(G)、冻结块(F)或者危险块(H),目标是通过上下左右的移动,找出能最快从起始块到目标块的最短路径来,同时避免走到危险块上,(走到危险块就意味着游戏结束)为了引入随机性的影响,还可以假设有风吹过,会随机的让你向一个方向漂移。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图1: 初始化

左图是每个位置对应的Q value的表,最初都是0,一开始的策略就是随机生成的,假定第一步是向右,那根据上文公式,假定学习率是 α \alpha α是 0.1,折现率 γ \gamma γ是0.5,而每走一步,会带来-0.4的奖励,那么(1.2)的Q value就是 0 + 0.1 ×[ -0.4 + 0.5× (0)-0] = -0.04,为了简化问题,此处这里没有假设湖面有风。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图2: 走一步

假设之后又接着往右走了一步,用类似的方法更新(1,3)的Q value了,得到(1.3)的Q value还为-0.04

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图3: 走一步

等到了下个时刻,骰子告诉我们要往左走,此时就需要更新(1,2)的Q-value,计算式为:V(s) = 0 +0.1× [ -0.4 + 0.5× (-0.04)-0) ]

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图4: 走一步

从这里,智能体就能学到先向右在向左不是一个好的策略,会浪费时间,依次类推,不断根据之前的状态更新左边的Q table,直到目标达成或游戏结束。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
图5: 走一步

假设现在智能体到达了如图5所示的位置,现在要做的是根据公式,更新(3,2)这里的Q value,由于向下走的Q-value最低,假定学习率是0.1,折现率是0.5,那么(3,2)这个点向下走这个策略的更新后的Q value就是,Sarsa会随机选一个action,比如这里选择的是(Q(4,2),down):

Q ( ( 3 , 2 ) d o w n ) = Q ( ( 3 , 2 ) d o w n ) + 0.1 × ( − 0.4 + 0.5 × ( Q ( ( 4 , 2 ) d o w n ) ) − Q ( ( 3 , 2 ) , d o w n )) Q( (3,2) down) = Q( (3,2) down ) + 0.1× ( -0.4 + 0.5 × (Q( (4,2) down) )- Q( (3,2), down)) Q((3,2)down)=Q((3,2)down)+0.1×(0.4+0.5×(Q((4,2)down))Q((3,2),down))

Q ( ( 3 , 2 ) , d o w n ) = 0.6 + 0.1 × ( − 0.4 + 0.5 × 0.4 – 0.6 ) = 0.52 Q( (3,2), down) = 0.6 + 0.1× ( -0.4 + 0.5 × 0.4 – 0.6)=0.52 Q((3,2),down)=0.6+0.1×(0.4+0.5×0.4–0.6)=0.52

1.3 优缺点

SARSA 算法经常与Q-learning 算法作比较,以便探索出两种算法分别适用的情况。它们互有利弊。

与SARSA相比,Q-learning具有以下优点和缺点:

  • Q-learning直接学习最优策略,而SARSA在探索时学会了近乎最优的策略。
  • Q-learning具有比SARSA更高的每样本方差,并且可能因此产生收敛问题。当通过Q-learning训练神经网络时,这会成为一个问题。
  • SARSA在接近收敛时,允许对探索性的行动进行可能的惩罚,而Q-learning会直接忽略,这使得SARSA算法更加保守。如果存在接近最佳路径的大量负面报酬的风险,Q-learning将倾向于在探索时触发奖励,而SARSA将倾向于避免危险的最佳路径并且仅在探索参数减少时慢慢学会使用它。

如果是在模拟中或在低成本和快速迭代的环境中训练代理,那么由于第一点(直接学习最优策略),Q-learning是一个不错的选择。 如果代理是在线学习,并且注重学习期间获得的奖励,那么SARSA算法更加适用。

2.Q-learning

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

首先我们看一下上图Q-learning在整个强化学习的位置,Q-Learning是属于值函数近似算法中,蒙特卡洛方法和时间差分法相结合的算法。它在1989年被Watkins提出,可以说一出生就给强化学习带来了重要的突破。

Q-Learning假设可能出现的动作a和状态S是有限多,这时a和S的全部组合也是有限多个,并且引入价值量Q表示智能体认为做出某个a时所能够获得的利益。在这种假设下,智能体收到S,应该做出怎样的a,取决于选择哪一个a可以产生最大的Q。下面的表格显示了动物在面对环境的不同状态时做出的a对应着怎样的Q,这里为了简单说明只分别列举了2种S和a:

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

显然,如果此时S=“前方有食物”,选择a=“向前走1米”,得到的利益Q=“1” 显然比选择a=“向后走1米” 的q="0"要大,所以这时应该选择向前走;相对的前方如果有天敌,往前走显然没有任何利益,这时选择最大的利益就要向后走。这种表格在Q-Learning中被称为Q表,表中的S和a需要事先确定,表格主体的数据——q在初始化的时候被随机设置,在后续通过训练得到矫正。

2.1 基础概念

Q-Learning的训练过程是Q表的Q值逐渐调整的过程,其核心是根据已经知道的Q值,当前选择的行动a作用于环境获得的回报R和下一轮 S t + 1 S_{t+1} St+1对应可以获得的最大利益Q,总共三个量进行加权求和算出新的Q值,来更新Q表:

Q ( S t , A t ) = Q ( S t , A t ) + α [ R t + 1 + γ m a x a Q ( S t + 1 , a ) − Q ( S t , A t ) ] Q(S_{t},A_{t})=Q(S_{t},A_{t})+\alpha[R_{t+1}+\gamma \mathop{max}_{a} Q(S_{t+1},a)-Q(S_{t},A_{t})] Q(St,At)=Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)Q(St,At)]

其中 Q ( S t + 1 , a ) Q(S_{t+1}, a) Q(St+1,a) 是在 t + 1 t+1 t+1 时刻的状态和采取的行动(并不是实际行动,所以公式采用了所有可能采取行动的Q的最大值)对应的 Q 值, Q ( S t , A t ) Q(S_{t},A_{t}) Q(St,At) 是当前时刻的状态和实际采取的形同对应的Q值。折扣因子 γ \gamma γ的取值范围是 [ 0 , 1 ],其本质是一个衰减值,如果gamma更接近0,agent趋向于只考虑瞬时奖励值,反之如果更接近1,则agent为延迟奖励赋予更大的权重,更侧重于延迟奖励;奖励值 R t + 1 R_{t+1} Rt+1为t+1时刻得到的奖励值。 α \alpha α为是学习率。

这里动作价值Q函数的目标就是逼近最优的 q ∗ q* q q ∗ = R t + 1 + γ m a x a Q ( S t + 1 , a ) q*=R_{t+1}+\gamma \mathop{max}_{a} Q(S_{t+1},a) q=Rt+1+γmaxaQ(St+1,a),并且轨迹的行动策略与最终的 q ∗ q* q是无关的。后面中括号的加和式表示的是 q ∗ q* q的贝尔曼最优方程近似形式。

2.2 应用举例

将一个结冰的湖看成是一个4×4的方格,每个格子可以是起始块(S),目标块(G)、冻结块(F)或者危险块(H),目标是通过上下左右的移动,找出能最快从起始块到目标块的最短路径来,同时避免走到危险块上,(走到危险块就意味着游戏结束)为了引入随机性的影响,还可以假设有风吹过,会随机的让你向一个方向漂移。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图1: 初始化

左图是每个位置对应的Q value的表,最初都是0,一开始的策略就是随机生成的,假定第一步是向右,那根据上文公式,假定学习率是 α \alpha α是 0.1,折现率 γ \gamma γ是0.5,而每走一步,会带来-0.4的奖励,那么(1.2)的Q value就是 0 + 0.1 ×[ -0.4 + 0.5× (0)-0] = -0.04,为了简化问题,此处这里没有假设湖面有风。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图2: 走一步

假设之后又接着往右走了一步,用类似的方法更新(1,3)的Q value了,得到(1.3)的Q value还为-0.04

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图3: 走一步

等到了下个时刻,骰子告诉我们要往左走,此时就需要更新(1,2)的Q-value,计算式为:V(s) = 0 +0.1× [ -0.4 + 0.5× (-0.04)-0) ]

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析

图4: 走一步

从这里,智能体就能学到先向右在向左不是一个好的策略,会浪费时间,依次类推,不断根据之前的状态更新左边的Q table,直到目标达成或游戏结束。

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
图5: 走一步

假设现在智能体到达了如图5所示的位置,现在要做的是根据公式,更新(3,2)这里的Q value,由于向下走的Q-value最低,假定学习率是0.1,折现率是0.5,那么(3,2)这个点向下走这个策略的更新后的Q value就是:

Q ( ( 3 , 2 ) d o w n ) = Q ( ( 3 , 2 ) d o w n ) + 0.1 × ( − 0.4 + 0.5 × m a x [ Q ( ( 4 , 2 ) a c t i o n ) ] − Q ( ( 3 , 2 ) , d o w n )) Q( (3,2) down) = Q( (3,2) down ) + 0.1× ( -0.4 + 0.5 × max [Q( (4,2) action) ]- Q( (3,2), down)) Q((3,2)down)=Q((3,2)down)+0.1×(0.4+0.5×max[Q((4,2)action)]Q((3,2),down))

Q ( ( 3 , 2 ) , d o w n ) = 0.6 + 0.1 × ( − 0.4 + 0.5 × m a x [ 0.2 , 0.4 , 0.6 ] – 0.6 ) = 0.53 Q( (3,2), down) = 0.6 + 0.1× ( -0.4 + 0.5 × max [0.2, 0.4, 0.6] – 0.6)=0.53 Q((3,2),down)=0.6+0.1×(0.4+0.5×max[0.2,0.4,0.6]–0.6)=0.53

2.3 优缺点

Q-Learning算法有一些缺点,比如状态和动作都假设是离散且有限的,对于复杂的情况处理起来会很麻烦;智能体的决策只依赖当前环境的状态,所以如果状态之间存在时序关联那么学习的效果就不佳。文章来源地址https://www.toymoban.com/news/detail-468458.html

到了这里,关于强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 强化学习路径优化:基于Q-learning算法的机器人路径优化(MATLAB)

    Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果,因此在Q-learning算法中更新Q表就是机器人与环境的交互过程

    2024年02月14日
    浏览(59)
  • 强化学习Q-learning入门

    本文为最近学习的强化学习 Q-learning 的学习笔记,主要用于总结和日常记录,本文主要讲解相应的必备入门知识。 闲话少说,我们直接开始吧! 我们小时候都经历过以下情形:我们做错了某年事,受到了惩罚,我们学习后,在遇到类似的状况,我们将不会再犯错。同样,许

    2024年02月08日
    浏览(54)
  • 强化学习Q-learning实践

    前篇文章介绍了强化学习系统红的基本概念和重要组成部分,并解释了 Q-learning 算法相关的理论知识。本文的目标是在 Python3 中实现该算法,并将其应用于实际的实验中。 闲话少说,我们直接开始吧! 为了使本文具有实际具体的意义,特意选择了一个简单而基本的环境,可

    2024年02月08日
    浏览(63)
  • 强化学习 - Q-learning(Q学习)

    强化学习中的 Q-learning (Q学习)是一种用于 学习在未知环境中做出决策的方法 。它是基于值函数的方法,通过学习一个值函数 Q,该函数表示在给定状态和动作下,期望的累积奖励。 以下是一个简单的 Q-learning 的实现教程,使用 Python 进行演示。这里我们考虑一个简单的驾

    2024年01月24日
    浏览(60)
  • 【强化学习】Q-learning训练AI走迷宫

    Q-learning? 最简单 的强化学习算法! 不需要 深度学习网络的算法! 带有概率性的 穷举 特性!(甚至还有一点点动态规划的感觉) Q-learning是一种基于强化学习的算法,用于解决 Markov决策过程 (MDP)中的问题。 这类问题我们理解为一种可以用 有限状态机 表示的问题。它具

    2024年01月22日
    浏览(62)
  • 【强化学习】常用算法之一 “SARSA”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月11日
    浏览(53)
  • 强化学习系列--时序差分学习方法(SARSA算法)

    SARSA(State-Action-Reward-State-Action)是一种强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。 SARSA算法属于基于值的强化学习算法 ,用于学习最优策略。 在SARSA算法中,智能体通过与环境进行交互来学习。它基于 当前状态、选择的动作、获得的奖励、下一个状态和下

    2024年02月11日
    浏览(36)
  • 【机器学习】强化学习(六)-DQN(Deep Q-Learning)训练月球着陆器示例

    概述 Deep Q-Learning(深度 Q 学习)是一种强化学习算法,用于解决决策问题,其中代理(agent)通过学习在不同环境中采取行动来最大化累积奖励。Lunar Lander 是一个经典的强化学习问题,其中代理的任务是控制一个着陆舱在月球表面着陆,最小化着陆过程中的燃料消耗。 以下

    2024年01月25日
    浏览(63)
  • Pytorch深度强化学习案例:基于Q-Learning的机器人走迷宫

    本专栏重点介绍强化学习技术的数学原理,并且 采用Pytorch框架对常见的强化学习算法、案例进行实现 ,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。 🚀详情:

    2024年02月04日
    浏览(61)
  • 强化学习应用(二):基于Q-learning的物流配送路径规划研究(提供Python代码)

    Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每个状态动作对的价值。Q值表示在特定状态下采取某个动作所能获得

    2024年01月21日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包