强化学习(七)时序差分离线控制算法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、自动驾驶、推荐系统等。随着数据量的增加和计算能力的提升,强化学习在近年来取得了显著的进展。本文将从基础到实践的角度介绍强化学习的主流算法,包括值函数方法(Value-based methods)、策略梯度方法(Policy-gradient methods)和模型基于方法(Model-based methods)。 https://blog.csdn.net/universsky2015/article/details/137307363
2.科学网—[转载]强化学习在资源优化领域的应用基于这种行业趋势,本文针对强化学习算法在资源优化领域的应用展开调研,帮助读者了解该领域最新的进展,学习如何利用数据驱动的方式解决资源优化问题。鉴于资源优化问题场景众多、设定繁杂,划分出3类应用广泛的资源优化问题,即资源平衡问题、资源分配问题、装箱问题,集中进行调研。在每个领域阐述问题的特性,并根据具体的问题特性https://blog.sciencenet.cn/blog-3472670-1312677.html
3.人工智能团队研究成果在TKDE发表:样本高效的离线转在线强化学习算法实验室人工智能团队在D4RL基准测试上进行了大量实验来说明本研究中提出的算法的优越性。实验结果表明,本研究提出的算法在样本效率方面显著优于最先进的离线转在线强化学习算法。 相关的研究成果近期发表在TKDE上,文章第一作者为吉林大学未来科学国际合作联合实验室博士生郭思源,通讯作者为吉林大学陈贺昌教授和常毅教授。http://icfs.jlu.edu.cn/info/1007/3101.htm
4.结合向前状态预测和隐空间约束的强化学习表示算法而在强化学习的应用场景中, 智能体遇到的大多数环境的状态的存在形式都是充满噪声的高维度的. 因此, 如果有一种表示学习方法能让智能体从高维状态中准确提取低维的状态表示, 就能有效提高强化学习的样本效率. 现有算法难以从高维状态中提取准确特征的原因如下: 一是深度强化学习算法只用一个值函数损失作为损失函数,https://c-s-a.org.cn/html/2022/11/8801.html
5.TensorFlow机器学习常用算法解析和入门上图为基于ICA的人脸识别模型。实际上这些机器学习算法并不是全都像想象中一样复杂,有些还和高中数学紧密相关。 后面讲给大家一一详细单独讲解这些常用算法。 强化学习 13)Q-Learning算法 Q-learning要解决的是这样的问题:一个能感知环境的自治agent,怎样通过学习选择能达到其目标的最优动作。 https://www.w3cschool.cn/tensorflow/tensorflow-s8uq24ti.html
6.2020年媒体技术趋势报告:13大领域89项变革全输出多任务强化学习算法 (General Reinforcement Learning Algorithms) AlphaZero的团队开发的新算法可以学习多个任务。比如AlphaZero不仅在围棋上无人可敌,在象棋和日本象棋中也出类拔萃。 更快的深度学习 (Much Faster Deep Learning) 深度学习(Deep Learning, DL)是机器学习中相对较新的分支,也会很快无形地融入到各个组织https://36kr.com/p/5267903
7.百度算法岗武功秘籍(中)● OCR识别有哪些算法模型? 3.1.4 图像分类 ● 如果图像分类有百万个class,你会怎么设计模型? 3.2 深度学习-RNN递归神经网络方面 3.2.1 自然语言处理NLP ① Bert ● 文本分类,bert了解吗?输入有什么改进? ● 讲一下Bert原理? ● Bert模型结构,分类和句子翻译如何微调? https://www.flyai.com/article/948
8.在线网课学习课堂《人工智能(北理)》单元测试考核答案()A鸟喋吟B腺喋吟C胞喀咤D尿喀咤王萌售宾,D第33题单选题(1分)DNA依靠()实现计算A碱基B蛋白质C碱基的互补性D酶王确普拂匕C第34题多选题(2分)DNA计算的特性有哪些?()A巨量存储B超级并行C计算精确D低能量消耗正确答案ABD第35题多选题(2分)下列哪些搜索算法一定可以找到最优解?()A穷举搜索B度优先搜索Chttps://www.yxfsz.com/view/1673214771380457473
9.AI深度强化学习落地方法七步曲2——状态空间篇回报函数篇鉴于强化学习算法对优秀reward函数设计的依赖,学术界提出了很多方法改善这一状况。比如逆向强化学习,利用expert demonstration(专家示范)学习到reward函数,再用这个reward函数训练RL策略。此外,还有一大堆模仿学习的方法,干脆抛开reward直接拟合专家策略。以上方法的前提是要有专家数据,不具备普适性,这里就不多说了。 https://www.shangyexinzhi.com/article/4228946.html
10.钛坦白微软亚洲研究院秦涛:深度学习的五个挑战和其解决方案本期钛客之一、微软亚洲研究院主管研究员秦涛博士,在国际会议和期刊上发表学术论文100余篇,曾/现任机器学习及人工智能方向多个国际大会领域主席或程序委员会成员,曾任多个国际学术研讨会联合主席。他是中国科学技术大学博士生导师,IEEE、ACM会员。他和他的团队的研究重点是深度学习、强化学习的算法设计、理论分析及在实际https://www.tmtpost.com/2578654.html
11.高中信息技术课程标准在选修部分的五个模块中“算法与程序设计”是作为计算机应用的技术基础设置的;“多媒体技术应用”“网络技术应用”“数据管理技术”是作为一般信息技术应用设置的;“人工智能初步”是作为智能信息处理技术专题设置的。为增强课程选择的自由度,五个选修模块并行设计,相对独立。各选修模块对开设条件的要求有所不同,各学校https://www.fqkhzx.cn/index/article/view/id/94.html
12.每日热点1102Nature子刊:深度学习算法可以在显微镜图像中识别出各种细菌 BMJ:人工甜味剂安全性再添新忧!超10万人研究发现,饮食中总甜味剂摄入量高,与心血管疾病和脑血管疾病风险增加9%和18%相关 舆情信息 新冠病毒疫苗接种情况 世卫组织:黎巴嫩霍乱疫情迅速蔓延 “个人碳账户”还应更多些 https://www.sccdc.cn/Article/View?id=30661
13.九章云极DataCanvas方磊:Hypernets——自动化机器学习的基打架第二种算法叫遗传算法 (Evolutionary Algorithm),与第一种算法相比,不那么结构有序。但在搜索空间比较复杂的时候,想要找到接近于全局最优的局部最优解,Evolutionary Algorithm 是非常有效的方式。 第三类算法 Reinforcement Learning,本身是比较好的一种算法。强化学习的目标是获得最多的累计奖励。 https://m.thepaper.cn/baijiahao_13676597
14.一秒做出8000张海报设计的「鹿班智能设计平台」是怎么工作的这也是阿里内部让产品设计师学习机器学习的原因,因为搞懂算法框架和技术原理,才能更好理解工作原理。 但三方面功课背后,也不是没有具体挑战。 整个鲁班打造过程中,遭遇了三方面技术挑战。 技术挑战 首先是缺少标注数据。今天所有的人工智能都基于大规模结构化标注数据,设计这件事情连数据都没有完成在线化,更别说标准化https://www.uisdc.com/alibaba-luban-ai-work/