强化学习(七)时序差分离线控制算法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.什么是人工智能领域的ReinforcementLearning现实世界中强化学习的应用广泛而深远,从自动驾驶、机器人控制,到游戏玩家和推荐系统,都能看到它的身影。以 AlphaGo 为例,这是一个结合了蒙特卡洛树搜索和深度神经网络的深度强化学习系统,它学会了在围棋游戏中战胜世界级的人类选手。这一成就不仅展示了深度强化学习的强大能力,也激发了更多领域对强化学习技术的探索和https://open.alipay.com/portal/forum/post/159101016
2.ReinforcementLearning)和在线强化学习(OnlineReinforcementLearnin训练过程:在离线强化学习中,模型使用这些离线数据进行训练,目标是从这些数据中学习到一个良好的策略,而不需要与真实环境进行交互。 应用场景:离线强化学习适用于那些收集数据困难或成本高昂的场景,以及对实时反馈不敏感的任务。 在线强化学习: 数据获取:在线强化学习是在实际环境中与代理程序交互,通过与环境的交互来获取https://blog.csdn.net/qq_40718185/article/details/139231769
3.强化学习的基本概念在线学习和离线学习针对的是在强化学习模型在训练过程中交互数据的使用方式。在线学习的强化学习模型,会在一个交互之后,立即用本次交互得到的经验进行训练。而离线学习的强化学习模型,往往是先将多个交互的经验存储起来,然后在学习的时候,从存储的经验中取出一批交互经验来学习。 https://www.jianshu.com/p/28625d3a60e6
4.强化学习离线模型离线模型和在线模型强化学习离线模型 离线模型和在线模型 在推荐算法领域,时常会出现模型离线评测效果好,比如AUC、准召等指标大涨,但上线后业务指标效果不佳,甚至下降的情况,比如线上CTR或CVR下跌。 本文尝试列举一些常见的原因,为大家排查问题提供一点思路。 1. 离线、在线特征不一致https://blog.51cto.com/u_14499/11815202
5.离线强化学习图18-1 离线强化学习和在线策略算法、离线策略算法的区别 18.2 批量限制 Q-learning 算法 图18-1 中的离线强化学习和离线策略强化学习很像,都要从经验回放池中采样进行训练,并且离线策略算法的策略评估方式也多种多样。因此,研究者们最开始尝试将离线策略算法直接照搬到离线的环境下,仅仅是去掉算法中和环境交互的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.科学网—[转载]强化学习在资源优化领域的应用随着强化学习在围棋、游戏等序列化决策领域大放异彩、在多智能体协作等领域取得较好表现,它的一些优秀特性也得到了资源优化领域的关注。首先,基于强化学习的解决方案决策非常高效。虽然强化学习策略的训练非常耗时,但是这些训练工作可以离线进行,实际中只需要利用训练好的模型进行推理,因而在绝大部分情况下可以做到近似实时https://blog.sciencenet.cn/blog-3472670-1312677.html
7.2020届计算机科学方向毕业设计(论文)阶段性汇报本文将信息流推荐系统与用户的多步交互过程建模为马尔科夫决策过程,并基于强化学习算法设计动态决定信息流推荐中广告间隔的模型,以优化广告收入与用户参与度指标的综合长期目标。针对在推荐系统场景中部署在线强化学习模型的挑战,本文使用推荐系统的历史日志数据离线训练强化学习策略,并通过实验对相应算法的可行性及效果进行https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
8.多目标排序在快手短视频推荐中的实践多目标精排:从手工融合到Learn To Rank 复杂多目标:Ensemble Sort和在线自动调参 重排序:Listwise、强化学习和端上重排序 总结和展望 01 快手短视频推荐场景介绍 1. 关于快手 快手主要的流量形态 有4个页面: ① 发现页:致力于让用户看见更大的世界,分为单列和双列两种形态。 https://maimai.cn/article/detail?fid=1603183032&efid=T7RIoRo14AcJUC_PIXWVhA
9.从搜索到智能客服:阿里开放强化学习技术演进与实践书籍机器之心近日,阿里开放了一本描述强化学习在实践中应用的书籍《强化学习在阿里的技术演进与业务创新》,这本书重点描述了阿里巴巴在推动强化学习输出产品及商业化的实践过程。例如在在搜索场景中对用户的浏览购买行为进行 MDP 建模、在推荐场景中使用深度强化学习与自适应在线学习帮助每?个用户迅速发现宝贝、在智能客服中赋予阿里https://www.jiqizhixin.com/articles/2018-02-06-3
10.强化学习究竟是什么?它与机器学习技术有什么联系?▌3.最常用的深度学习算法原理是什么? Q-learning和SARSA是两种最常见的不理解环境强化学习算法,这两者的探索原理不同,但是开发原理是相似的。Q-learning是一种离线学习算法,智能体需要从另一项方案中学习到行为a*的价值;SARSA则是一种在线学习算法,智能体可从现有方案指定的当前行为来学习价值。这两种方法都很容易https://m.elecfans.com/article/662224.html
11.探索(Exploration)还是利用(Exploitation)?强化学习如何tradeoff同样的思想也可以应用到强化学习算法中。在下面的章节中,基于附加奖励的探索奖励方法大致分为两类:一是发现全新的状态,二是提高智能体对环境的认知。 1、基于计数的探索策略 如果将状态的新颖程度作为内在奖励的条件,那就需要寻找一种方法来衡量当前状态是新颖的还是经常出现的。一种直观的方法是统计一个状态出现的次https://www.zhuanzhi.ai/document/8c25cb38ff7b6a2acc8610b42ff00fdd
12.基于深度强化学习的水面无人艇路径跟踪方法6.针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种基于深度强化学习的水面无人艇路径跟踪方法,无需进行环境和无人艇运动建模并且具备自适应能力,从而能够进一步提高无人艇路径跟踪控制的稳定性和准确性。 7.为了解决上述技术问题,本发明采用了如下的技术方案: https://www.xjishu.com/zhuanli/54/202210772926.html/
13.在对齐AI时,为什么在线方法总是优于离线方法?根据人类反馈的强化学习(RLHF)随着大型语言模型(LLM)发展而日渐成为一种用于 AI 对齐的常用框架。不过近段时间,直接偏好优化(DPO)等离线方法异军突起 —— 无需主动式的在线交互,使用离线数据集就能直接对齐 LLM。这类方法的效率很高,也已经得到实证研究的证明。但这也引出了一个关键问题: https://m.thepaper.cn/newsDetail_forward_27434433
14.深度强化学习实战:用OpenAIGym构建智能体全书先简要介绍智能体和学习环境的一些入门知识,概述强化学习和深度强化学习的基本概念和知识点,然后重点介绍 OpenAI Gym 的相关内容,随后在具体的 Gym 环境中运用强化学习算法构建智能体。本书还探讨了这些算法在游戏、自动驾驶领域的应用。本书适合想用 OpenAI Gym 构建智能体的读者阅读,也适合对强化学习和深度强化https://www.epubit.com/bookDetails?id=UB83082546ee4de
15.深度强化学习针对控制的强化学习实践:设计、测试和部署 产品 了解深度强化学习使用的产品。 Reinforcement Learning Toolbox Deep Learning Toolbox Parallel Computing Toolbox Simulink Simscape 30天免费试用 快速入门 有疑问吗? 请与深度强化学习专家交流。 发邮件给我们https://ww2.mathworks.cn/solutions/deep-learning/deep-reinforcement-learning.html
16.机器学习学术速递[7.26]腾讯云开发者社区【1】 Model Selection for Offline Reinforcement Learning: Practical Considerations for Healthcare Settings 标题:离线强化学习的模型选择:医疗设置的实际考虑 作者:Shengpu Tang,Jenna Wiens 机构:Department of Electrical Engineering and Computer Science, University of Michigan, Ann Arbor, MI, USA 备注:33 pahttps://cloud.tencent.com/developer/article/1852823
17.人工智能技术研究人工智能技术创新自动离线强化学习 自动算法选择与动态调参 自动表示学习 样本高效强化学习 环境学习Environment Learning 知识驱动离散环境学习 知识驱动连续环境学习 数据驱动基于ML的环境学习 数据驱动基于因果的环境学习 AI基础架构 系统框架System Architecture 异构计算Heterogeneous Computing https://www.4paradigm.com/about/research.html