强化学习(七)时序差分离线控制算法QLearning刘建平Pinard

Q-Learning这一篇对应Sutton书的第六章部分和UCL强化学习课程的第五讲部分。

Q-Learning算法是一种使用时序差分求解强化学习控制问题的方法,回顾下此时我们的控制问题可以表示为:给定强化学习的5个要素:状态集$S$,动作集$A$,即时奖励$R$,衰减因子$\gamma$,探索率$\epsilon$,求解最优的动作价值函数$q_{*}$和最优策略$\pi_{*}$。

这一类强化学习的问题求解不需要环境的状态转化模型,是不基于模型的强化学习问题求解方法。对于它的控制问题求解,和蒙特卡罗法类似,都是价值迭代,即通过价值函数的更新,来更新策略,通过策略来产生新的状态和即时奖励,进而更新价值函数。一直进行下去,直到价值函数和策略都收敛。

再回顾下时序差分法的控制问题,可以分为两类,一类是在线控制,即一直使用一个策略来更新价值函数和选择新的动作,比如我们上一篇讲到的SARSA,而另一类是离线控制,会使用两个控制策略,一个策略用于选择新的动作,另一个策略用于更新价值函数。这一类的经典算法就是Q-Learning。

对于Q-Learning,我们会使用$\epsilon-$贪婪法来选择新的动作,这部分和SARSA完全相同。但是对于价值函数的更新,Q-Learning使用的是贪婪法,而不是SARSA的$\epsilon-$贪婪法。这一点就是SARSA和Q-Learning本质的区别。

Q-Learning算法的拓补图入下图所示:

首先我们基于状态$S$,用$\epsilon-$贪婪法选择到动作$A$,然后执行动作$A$,得到奖励$R$,并进入状态$S'$,此时,如果是SARSA,会继续基于状态$S'$,用$\epsilon-$贪婪法选择$A'$,然后来更新价值函数。但是Q-Learning则不同。

对于Q-Learning,它基于状态$S'$,没有使用$\epsilon-$贪婪法选择$A'$,而是使用贪婪法选择$A'$,也就是说,选择使$Q(S',a)$最大的$a$作为$A'$来更新价值函数。用数学公式表示就是:$$Q(S,A)=Q(S,A)+\alpha(R+\gamma\max_aQ(S',a)-Q(S,A))$$

对应到上图中就是在图下方的三个黑圆圈动作中选择一个使$Q(S',a)$最大的动作作为$A'$。

此时选择的动作只会参与价值函数的更新,不会真正的执行。价值函数更新后,新的执行动作需要基于状态$S'$,用$\epsilon-$贪婪法重新选择得到。这一点也和SARSA稍有不同。对于SARSA,价值函数更新使用的$A'$会作为下一阶段开始时候的执行动作。

下面我们对Q-Learning算法做一个总结。

下面我们总结下Q-Learning算法的流程。

算法输入:迭代轮数$T$,状态集$S$,动作集$A$,步长$\alpha$,衰减因子$\gamma$,探索率$\epsilon$,

输出:所有的状态和动作对应的价值$Q$

1.随机初始化所有的状态和动作对应的价值$Q$.对于终止状态其$Q$值初始化为0.

2.forifrom1toT,进行迭代。

a)初始化S为当前状态序列的第一个状态。

b)用$\epsilon-$贪婪法在当前状态$S$选择出动作$A$

c)在状态$S$执行当前动作$A$,得到新状态$S'$和奖励$R$

d)更新价值函数$Q(S,A)$:$$Q(S,A)+\alpha(R+\gamma\max_aQ(S',a)-Q(S,A))$$

e)$S=S'$

f)如果$S'$是终止状态,当前轮迭代完毕,否则转到步骤b)

绝大部分代码和SARSA是类似的。这里我们可以重点比较和SARSA不同的部分。区别都在episode这个函数里面。

首先是初始化的时候,我们只初始化状态$S$,把$A$的产生放到了while循环里面,而回忆下SARSA会同时初始化状态$S$和动作$A$,再去执行循环。下面这段Q-Learning的代码对应我们算法的第二步步骤a和b:

#playforanepisodedefepisode(q_value):#trackthetotaltimestepsinthisepisodetime=0#initializestatestate=STARTwhilestate!=GOAL:#chooseanactionbasedonepsilon-greedyalgorithmifnp.random.binomial(1,EPSILON)==1:action=np.random.choice(ACTIONS)else:values_=q_value[state[0],state[1],:]action=np.random.choice([action_foraction_,value_inenumerate(values_)ifvalue_==np.max(values_)])接着我们会去执行动作$A$,得到$S'$,由于奖励不是终止就是-1,不需要单独计算。,这部分和SARSA的代码相同。对应我们Q-Learning算法的第二步步骤c:

next_state=step(state,action)defstep(state,action):i,j=stateifaction==ACTION_UP:return[max(i-1-WIND[j],0),j]elifaction==ACTION_DOWN:return[max(min(i+1-WIND[j],WORLD_HEIGHT-1),0),j]elifaction==ACTION_LEFT:return[max(i-WIND[j],0),max(j-1,0)]elifaction==ACTION_RIGHT:return[max(i-WIND[j],0),min(j+1,WORLD_WIDTH-1)]else:assertFalse后面我们用贪婪法选择出最大的$Q(S',a)$,并更新价值函数,最后更新当前状态$S$。对应我们Q-Learning算法的第二步步骤d,e。注意SARSA这里是使用$\epsilon-$贪婪法,而不是贪婪法。同时SARSA会同时更新状态$S$和动作$A$,而Q-Learning只会更新当前状态$S$。

values_=q_value[next_state[0],next_state[1],:]next_action=np.random.choice([action_foraction_,value_inenumerate(values_)ifvalue_==np.max(values_)])#Sarsaupdateq_value[state[0],state[1],action]+=\ALPHA*(REWARD+q_value[next_state[0],next_state[1],next_action]-q_value[state[0],state[1],action])state=next_state跑完完整的代码,大家可以很容易得到这个问题的最优解,进而得到在每个格子里的最优贪婪策略。

现在SARSA和Q-Learning算法我们都讲完了,那么作为时序差分控制算法的两种经典方法吗,他们都有说明特点,各自适用于什么样的场景呢?

Q-Learning直接学习的是最优策略,而SARSA在学习最优策略的同时还在做探索。这导致我们在学习最优策略的时候,如果用SARSA,为了保证收敛,需要制定一个策略,使$\epsilon-$贪婪法的超参数$\epsilon$在迭代的过程中逐渐变小。Q-Learning没有这个烦恼。

另外一个就是Q-Learning直接学习最优策略,但是最优策略会依赖于训练中产生的一系列数据,所以受样本数据的影响较大,因此受到训练数据方差的影响很大,甚至会影响Q函数的收敛。Q-Learning的深度强化学习版DeepQ-Learning也有这个问题。

在学习过程中,SARSA在收敛的过程中鼓励探索,这样学习过程会比较平滑,不至于过于激进,导致出现像Q-Learning可能遇到一些特殊的最优“陷阱”。比如经典的强化学习问题"CliffWalk"。

在实际应用中,如果我们是在模拟环境中训练强化学习模型,推荐使用Q-Learning,如果是在线生产环境中训练模型,则推荐使用SARSA。

对于Q-Learning和SARSA这样的时序差分算法,对于小型的强化学习问题是非常灵活有效的,但是在大数据时代,异常复杂的状态和可选动作,使Q-Learning和SARSA要维护的Q表异常的大,甚至远远超出内存,这限制了时序差分算法的应用场景。在深度学习兴起后,基于深度学习的强化学习开始占主导地位,因此从下一篇开始我们开始讨论深度强化学习的建模思路。

(欢迎转载,转载请注明出处。欢迎沟通交流:liujianping-ok@163.com)

THE END
1.原创探索AI中的强化学习与深度强化学习原理及应用导读:随着人工智能技术的不断发展,强化学习和深度强化学习作为其重要分支,在许多领域都取得了显著的成果。本文将深入探讨强化学习和深度强化学习的原理及应用,帮助读者更好地理解这两种技 随着人工智能技术的不断发展,强化学习和深度强化学习作为其重要分支,在许多领域都取得了显著的成果。本文将深入探讨强化学习和深度强https://www.0753zz.com/html/biancheng/zx/2024-11-27/319487.html
2.Ai顶会创新点!GNN+强化学习,高性能,低成本!今天给大家推荐一个涨点发顶会的好方向:GNN+强化学习。这俩热点的结合可以轻松实现“1+1>2”的效果。GNN能够深入挖掘图中的模式和关系,而RL(强化学习)擅长在动态环境中进行序列决策,尤其是在需要长期规划和适…https://zhuanlan.zhihu.com/p/10461522860
3.强化学习算法详解:从理论到实践的完整指南强化学习算法详解:从理论到实践的完整指南 强化学习概述 强化学习是一种机器学习方法,旨在让智能体从与环境的交互中学习最佳行为策略,以最大化累积奖励。强化学习的核心思想是通过与https://www.jianshu.com/p/432bd53f17f8
4.ReinforcementLearning)和在线强化学习(OnlineReinforcementLearnin离线强化学习就像是通过看别人开车的录像学习一样,你使用预先准备好的数据(录像)来学习如何做出最佳决策。而在线强化学习则更像是亲自上路学车,你在真实环境中与环境互动,通过实际经验来改进你的决策和行为。 专业版本 离线强化学习(OfflineReinforcement Learning)和在线强化学习(Online Reinforcement Learning)是两种强化学https://blog.csdn.net/qq_40718185/article/details/139231769
5.离线强化学习为什么在线强化学习算法没有受到外推误差的影响呢?因为对于在线强化学习,即使训练是离线策略的,智能体依然有机会通过与环境交互及时采样到新的数据,从而修正这些误差。但是在离线强化学习中,智能体无法和环境交互。因此,一般来说,离线强化学习算法要想办法尽可能地限制外推误差的大小,从而得到较好的策略。https://hrl.boyuai.com/chapter/3/%E7%A6%BB%E7%BA%BF%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/
6.科学网—[转载]强化学习在资源优化领域的应用强化学习在资源优化领域的应用王金予, 魏欣然, 石文磊, 张佳微软亚洲研究院,北京 100080 摘要:资源优化问题广泛存在于社会、经 ,科学网https://blog.sciencenet.cn/blog-3472670-1312677.html
7.强化学习离线模型离线模型和在线模型强化学习离线模型 离线模型和在线模型,在推荐算法领域,时常会出现模型离线评测效果好,比如AUC、准召等指标大涨,但上线后业务指标效果不佳,甚至下降的情况,比如线上CTR或CVR下跌。本文尝试列举一些常见的原因,为大家排查问题提供一点思路。1.离线、在线特征不一致离线https://blog.51cto.com/u_14499/11815202
8.基于安全强化学习的主动配电网有功无功协调优化调度基于安全强化学习的主动配电网有功-无功协调优化调度编者按光伏(photovoltaic,PV)在主动配电网(activedistributionnetwork,ADN)中比重的提升可能引发严重的电压越限问题。此外,由于配电线路阻抗大,有功、https://news.bjx.com.cn/html/20240402/1369428.shtml
9.AIR学术李升波:将强化学习用于自动驾驶:技术挑战与发展趋势或使用模型,或使用预先采集的数据,先离线训练一个最优策略,然后部署到自动驾驶汽车,实现在线控制应用。第二,同时训练和应用策略,即SOTI方法:这是利用强化学习的探索试错机制,通过在线探索环境产生数据,实现自动驾驶策略的在线自我更新。这类方法要求强化学习算法必须进行在线部署,从而进行在线地探索和在线地训练。https://air.tsinghua.edu.cn/info/1008/1323.htm
10.生成式AI与LangCHain(二)(3)离线方法通过直接利用人类反馈来绕过在线强化学习的复杂性。我们可以区分基于排名和基于语言的方法: 基于排名的:人类对语言模型输出进行排名,用于定义微调的优化目标,完全避免了强化学习。这包括 Preference Ranking Optimization (PRO; Song 等人,2023)和 Direct Preference Optimization (DPO; Rafailov 等人,2023)等方法。https://developer.aliyun.com/article/1511477
11.深度强化学习使用MATLAB 和 Simulink 将深度强化学习应用于控制和决策应用。https://ww2.mathworks.cn/solutions/deep-learning/deep-reinforcement-learning.html
12.ICLR上新强化学习扩散模型多模态语言模型,你想了解的前沿本周,全球最负盛名的人工智能盛会之一 ICLR 大会将在奥地利维也纳举办。所以,今天的“科研上新”将为大家带来多篇微软亚洲研究院在 ICLR 2024 上的精选论文解读,涉及领域涵盖深度强化学习、多模态语言模型、时间序列扩散模型、无监督学习等多个前沿主题。 https://www.msra.cn/zh-cn/news/features/new-arrival-in-research-11
13.基于深度强化学习的水面无人艇路径跟踪方法6.针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种基于深度强化学习的水面无人艇路径跟踪方法,无需进行环境和无人艇运动建模并且具备自适应能力,从而能够进一步提高无人艇路径跟踪控制的稳定性和准确性。 7.为了解决上述技术问题,本发明采用了如下的技术方案: https://www.xjishu.com/zhuanli/54/202210772926.html/
14.大语言模型的拐杖——RLHF基于人类反馈的强化学习强化学习从人类反馈(RLHF)是一种先进的AI系统训练方法,它将强化学习与人类反馈相结合。它是一种通过将人类训练师的智慧和经验纳入模型训练过程中,创建更健壮的学习过程的方法。该技术涉及使用人类反馈创建奖励信号,然后通过强化学习来改善模型的行为。http://wehelpwin.com/article/4042
15.替代离线RL?Transformer进军决策领域,“序列建模”成关键Transformer 开始进军决策领域了,它能否替代离线强化学习呢?近日,UC 伯克利、FAIR 和谷歌大脑的研究者提出了一种通过序列建模进行强化学习的 Transformer 架构,并在 Atari、OpenAI Gym 等强化学习实验平台上媲美甚至超越 SOTA 离线 RL 基线方法。 自2016 年 AlphaGo 击败李世石开始,强化学习(Reinforcement Learning)在优化https://www.thepaper.cn/newsDetail_forward_13934432
16.动手学强化学习本书系统地介绍了强化学习的原理和实现,是一本理论扎实、落地性强的图书。本书包含3个部分:第一部分为强化学习基础,讲解强化学习的基础概念和表格型强化学习方法;第二部分为强化学习进阶,讨论深度强化学习的思维方式、深度价值函数和深度策略学习方法;第三部分为强化https://www.ptpress.cn/bookDetails?id=UB7d4a1fc362a4a
17.强化学习的10个现实应用通过强化学习,金融贸易不再像从前那样由分析师做出每一个决策,真正实现机器的自动决策。例如,IBM构建有一个强大的、面向金融交易的强化学习平台,该平台根据每一笔金融交易的损失或利润来调整奖励函数。 Reinforcement Learning in NLP (Natural Language Processing) https://www.flyai.com/article/750
18.「数字天空科技招聘」数字天空科技怎么样?数字天空科技 · 强化学习算法研究员 影响力129 访客993四川成都 个人简介 游戏行业研发,任职数字天空科技强化学习算法研究员职位,常驻四川;近期有993位访问者,在脉脉形成影响力129;在2020-6至今,任数字天空科技公司强化学习算法研究员职位;在2019-5至2020-6,任字节跳动公司iOS开发工程师职位;在2018-8至2018-10,.https://maimai.cn/brand/home/1ahq1EPmY
19.人工智能技术研究人工智能技术创新强化学习Reinforcement Learning 自动神经网络结构生成 自动离线强化学习 自动算法选择与动态调参 自动表示学习 样本高效强化学习 环境学习Environment Learning 知识驱动离散环境学习 知识驱动连续环境学习 数据驱动基于ML的环境学习 数据驱动基于因果的环境学习 AI基础架构 https://www.4paradigm.com/about/research.html