强化学习(七)时序差分离线控制算法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.强化学习在实际环境运用中存在的问题以及解决方案强化学习泛化问题?深度强化学习模型的本质是“试错”式的学习方式。所以强化学习模型在训练的过程中需要大量的交互数据才能学习到有效的策略,体现低样本效率问题。并且在现实环境中,强化学习的应用不同于我们学习该方法时的情况有所不同。相比于在虚拟环境中通过在线交互机制实时获得即时奖励(例如解决走迷宫、摆锤等问题)。智能体与现https://blog.csdn.net/z2036709353/article/details/143321070
2.强化学习与多任务推荐第二阶段,学习 policy 优化播放时长目标,同时满足和第一阶段学习到的 policy 的距离约束。我们在理论上得到了第二阶段问题的最优解并提出新的优化 loss。通过在 KuaiRand 数据集的离线评估和快手 App 在线 A/B 测试,我们证明 TSCAC 显著优于 Pareto 优化以及 State of the Art 约束强化学习算法。TSCAC 算法已https://www.51cto.com/article/772510.html
3.科学网—[转载]强化学习在资源优化领域的应用摘要:资源优化问题广泛存在于社会、经济的运转中,积累了海量的数据,给强化学习技术在这一领域的应用奠定了基础。由于资源优化问题覆盖广泛,从覆盖广泛的资源优化问题中划分出3类重要问题,即资源平衡问题、资源分配问题和装箱问题。并围绕这3类问题总结强化学习技术的最新研究工作,围绕各研究工作的问题建模、智能体设计等https://blog.sciencenet.cn/blog-3472670-1312677.html
4.2020届计算机科学方向毕业设计(论文)阶段性汇报推荐系统与用户进行多步交互的过程可以建模为马尔科夫决策过程并使用强化学习算法训练推荐策略,但在真实的工业界场景中,在线上进行强化学习模型的训练成本极高。本课题希望使用推荐系统与用户交互的历史数据离线训练强化学习算法,并探讨这一模式的问题解决方式。 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
5.高级工程师个人专业技术工作总结(通用21篇)在工程建设的具体实施过程中,本人认真学习合同,严格遵守合同,对合同中规定质量责任,划分界限,材料设备的采购,图纸设计,工艺使用的认可和批准制度都有较好的贯彻执行。通过研究各方面提出来的与合同实施有关的问题,对涉及到工程进度的有关问题及时提出解决办法并通过监理工程师去实施,必要时对施工手段、施工资源、施工https://www.oh100.com/a/202210/5471479.html
6.强化学习与自动驾驶在电商中的应用主要是利用强化学习去做推荐。 推荐系统涉及到许多强化学习的内容,尤其是如何去学习离线的数据。推荐系统可以通过收集数据,推荐给客户较为满意的商品,以此获得更高的reward。 2. 强化学习问题构建 这部分的内容主要围绕强化学习问题的构建展开。 https://www.jianshu.com/p/be915d014084
7.机器学习探究Q一.AI序列决策问题 AI序列决策问题是指在人工智能领域中,智能体需要在一个序列的环境中做出一系列决策,以达到某个目标或最大化某种累积奖励的问题。这类问题通常涉及到强化学习,其中智能体通过与环境的交互来学习最优的行为策略。 1.序列决策问题的特点: https://developer.aliyun.com/article/1496910
8.强化学习求解组合最优化问题的研究综述[3]刘永娟.基于萤火虫算法的车间调度问题研究与应用[D].2022. [4]刘洋.基于Linux的时间敏感网络CQF整形器的设计与实现[D].2022. [5]张予惟.基于强化学习的不对称信息下展示广告实时竞价研究[D].2022. [6]郝世诚.光伏发电系统MPPT控制方法的研究[D].2022. https://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jsjkxyts202202002
9.替代离线RL?Transformer进军决策领域,“序列建模”成关键研究者首先研究了如何通过在语言建模框架中提出顺序决策问题来改变对强化学习的观点。虽然强化学习中的传统工作使用了依赖 Bellman 备份的特定框架,但用序列建模来作为替代对轨迹进行建模使其能够使用强大且经过充分研究的架构(如 Transformer)来生成行为。 为了说明这一点,研究者研究了离线强化学习,从固定的数据集上训练https://www.thepaper.cn/newsDetail_forward_13934432
10.强化学习求解组合最优化问题的研究综述计算机科学与探索 Journal of Frontiers of Computer Science and Technology 1673-9418/2022/16(02)-0261-19 doi: 10.3778/j.issn.1673-9418.2107040 强化学习求解组合最优化问题的研究综述 王扬,陈智斌+,吴兆蕊,高远 昆明理工大学 理学院,昆明 650000 + 通信作者 E-mail: chenzhibin311@126.com 摘要:组合最https://engine.scichina.com/doi/pdf/E2EC56036ABD430FAC17BA13DB04FD51
11.强化学习的两大话题之一,仍有极大探索空间探索VS 利用,这是强化学习中至关重要的话题。我们希望强化学习中的智能体尽快找到最佳策略。然而,在没有充分探索的情况下就盲目地选择某个策略会带来一定的问题,因为这会导致模型陷入局部最优甚至完全不收敛。目前的强化学习算法朝着回报值最大化的方向优化,而探索仍然更像是一个开放性话题。 https://www.zhuanzhi.ai/document/943c26fdef26d9c1c660b9ee8367c1a3
12.实践活动总结20篇三、认真学习,强化党员宗旨意识 xx党总支全体党员干部,特别是副处级以上领导干部坚持理论与实际相结合、集中学习与个人自学相结合、讨论交流与调查研究相结合、对照学习与查摆问题相结合的方式,对党的十八大报告、《党章》、十二届全国人大一次会议上的讲话、党的十八届中央纪委二次全会上的讲话、党的十八届二中全会第https://www.jy135.com/huodongzongjie/1115952.html
13.基于深度强化学习的水面无人艇路径跟踪方法6.针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种基于深度强化学习的水面无人艇路径跟踪方法,无需进行环境和无人艇运动建模并且具备自适应能力,从而能够进一步提高无人艇路径跟踪控制的稳定性和准确性。 7.为了解决上述技术问题,本发明采用了如下的技术方案: https://www.xjishu.com/zhuanli/54/202210772926.html/
14.强化学习(一)入门介绍腾讯云开发者社区本讲将对强化学习做一个整体的简单介绍和概念引出,包括什么是强化学习,强化学习要解决什么问题,有一些什么方法。一、强化学习强化学习(Reinforcement Learning, RL)又称为增强学习、评价学习等,和深度学习一样是机器学习的一种范式和方法论之一,智能体从一系列随机的操作开始,与环境进行交互,不断尝试并从错误中进行学https://cloud.tencent.com/developer/article/1707034