Value-Based Reinforcement Learning-DQN

强化学习

这一章会讲DQN算法,并且用TD算法来训练DQN。

前言

说明一下:这是我的一个学习笔记,课程链接如下:

最易懂的强化学习课程
公众号:AI那些事
在这里插入图片描述


一、Action-Value Functions

我们回顾一下Action-Value Functions:
在这里插入图片描述
  这些R都是环境给的Reward奖励,每当agent做出一个动作,环境就会更新一个状态,并且给一个奖励R,每一个奖励R都依赖前一个状态和动作,所以Return依赖t时刻开始所有的动作和所有的状态,未来的状态A和S都是随机变量,动作A的随机性来自policy函数π,动作是agent根据函数π随机抽样得到的,状态S的随机性来自于状态转移函数p,新的状态是根据函数p随机抽样得到的,未来所有的动作和状态都是随机的,Ut依赖于这些动作和状态,因此Ut也是随机的,Ut的值可以反映出来未来奖励的总和,所以我们想了解Ut的大小,由于Ut是一个随机变量,在t时刻我们并不知道Ut的值,我们可以对Ut求期望,这样就可以排除掉Ut中的随机性,这个期望是关于未来所有的动作A和状态S求的,期望消除了S和A的随机变量,只留下了At和St两个变量,通过求期望我们得到了Qπ函数,它被称为Action-Value function 动作价值函数,Qπ和策略函数π有关,和St和At也有关,未来的随机性都被期望所消除了,Qπ只依赖当前的动作At和状态St,Qπ可以反映出当前状态St下做动作At的好坏程度,我们想要进行一般消除策略函数π,我们可以根据Qπ对π求最大化得到最优动作价值函数Q*(最优动作价值函数)

  Q* 告诉我们不管用什么样的策略π要使agent在当前状态st下做动作at,那么回报Ut的期望顶多就是Q*(st,at),不会更好,Q* 函数与policy函数π无关,只要agent做的动作a那么Q*(st,at)就是最好的结果了,哪怕之后你把策略函数π改进的更好,你获得的回报也不会比Q*(st,at)更好。

  说的更简单一点Q* 函数告诉我们,基于当前状态st做出动作at的好坏程度,所以Q* 函数可以指导agent做决策,agent观测到当前的状态st,Q* 函数可以给当前状态进行打分,比如向上跳是3000分,向左是2000分,向右是1000分,agent可以根据分数来做决策,既然向上跳的分数最高是3000分agent就应该向上跳,这样期望回报才会最大化。

二、DQN

在这里插入图片描述

2.1 游戏中agent的目标是什么?

  主要目标是打赢游戏,既然目标定下来了,那么agent就要努力的实现目标,假设Q* 函数是知道的,那么agent该怎么做决策呢?

2.2 agent如何做决策?

  决策就是选出最优动作,那什么才是最优动作呢,我们刚才说Q* 函数可以给所有的动作打分,每个动作a都有一个分数,最好的动作a就是分数最高的那个动作,我做一个更加通俗的解释:Q* 函数就像一个先知一样,它能预见未来的结果,比如你问先知,现在有a,b,c三支股票,我该把我的钱用来买哪一支股票呢?未来是充满随机性的,什么都可能发生,如蝴蝶效应,所以先知没有办法给你一个确定的答案,只能告诉你平均值,先知告诉你,从平均值来看,A股票涨了10倍,B股票涨了2倍,C股票跌了一半,先知还告诉你实际发生的情况和平均值并不一样,那么你该买哪一支股票呢?我们很定会选择A股票,因为它能涨10倍。

2.3 如何理解Q* 函数呢?

  我们可以把Q* 当做一个先知,它能够告诉你每一个动作带来的平均回报,你该听先知的话,选平均回报最高的那个动作,我们希望有Q* 这样一个先知,agent可以靠Q* 的指点来做决策,这样agent就像开了挂一样。但实际上我们没有Q* 函数,价值学习的基本想法就是学习一个函数来近似Q* ,我们不可能近似出一个万能的先知,但是对于超级玛丽这种游戏学习出来一个先知并不难,要是我玩了10w次超级玛丽,我就跟先知一样了,看一眼屏幕就告诉你这一步是什么操作才是最好的。

2.5 DQN打游戏?

  DQN是一种价值学习的方法,用一个神经网络去近似Q* 函数,我们将这个神经网络记为Q(s,a;w),神经网络的参数是w,输入是状态s,输出是很多数值,这些数值是对所有很能的动作的打分,每一个动作对应一个分数,我们通过奖励来学习神经网络。这个神经网络给动作的打分就会逐渐改进。打分会越来越准,如果让神经网络玩几百万次超级玛丽,这个神经网络就跟先知一样了。
在这里插入图片描述
  DQN就是一个这样的神经网络,对于不同的问题DQN的结构可能会不一样,我这里举个例子,如果是玩超级玛丽,可以把屏幕上的画面进行输入,用一个卷积层将图片变为特征向量,最后用几个全连接层把特征映射到一个输出的向量,这个输出的向量就是对动作的打分,向量每一个元素对应一个动作,在超级玛丽的例子里面有左右上三个动作,所以输出的向量是三维的,agent会做得分最高的动作,所以我们只要把DQN训练好,就可以用DQN自动控制超级玛丽打游戏。
在这里插入图片描述
  用DQN控制agent打游戏,当前观测到状态st,用DQN把st作为输入,给所有的动作打分,选出分数最高的动作作为at,agent执行at这个动作后,环境会改变状态,用状态转移函数p来随机抽一个状态st+1,环境告诉我们这一步的奖励rt,奖励可以是正的可以是负的也可以是0,奖励就是强化学习中的监督信号,DQN要靠奖励进行训练,有了新的状态st+1,DQN再对所有的动作打分,agent选择分数最高的动作,作为at+1,agent执行at+1后,环境会再更新状态st+2,还会再给一个奖励rt+1,然后还是重复这一过程,让DQN给动作打分,让agent选择分数最高的动作来执行,然后环境再更新状态s再给奖励rt+2,不断重复这一过程直到游戏结束。
在这里插入图片描述

三、如何训练DQN?

  我们这里采用TD算法

3.1 TD算法

在这里插入图片描述
  TD算法不是那么容易理解,所以我用一个例子来阐述:

  假设:我要从纽约开车到亚特兰大,我有一个模型Q,参数是W,他可以预测出开车出行的时间开销,我现在要从纽约出发了,这是Q告诉我,要开车1000min,才能到亚特兰大,这个模型一开始不是很准确,或者是纯随机的,但是随着用这个模型的人越来越多,得到越来越来数据跟多训练,这个模型就会越来越准,会像谷歌地图一样准确。

  问题是这样的,我需要什么数据呢,得到这些数据我该怎么更新模型参数呢?

  最简单的办法是,首先,出发之前,让模型做一个预测记作q,模型告诉我,从纽约到亚特兰大要花1000min,所以q=1000,预测过后我就出发了,但当我到亚特兰大的时候我只用了860min,这里的q是模型的预测,而y是我真实的开销,于是我把y作为target,q和y不一样,q比y大了140min,这就说明我的模型预测有了偏差,比我实际的y要多,这就造成了loss损失。损失定义为q和y的平方差。记作l,我们对损失l关于模型参数W求导,然后把倒数关于链式法则展开l是q的函数,q是W的函数,所以这之间可以用链式法则求导,结果就是(q-y) * q函数对W的倒数。梯度求出来了,我们就能根据梯度下降来更新模型参数W,新的参数Wt+1为:
在这里插入图片描述
  假如我们用Wt+1代替Wt那么预测值将会更加接近真实值y=860,这是因为梯度下降减小了loss让预测值离真实值更近了,这种算法我必须完成整个旅途才能对模型进行一次更新。
在这里插入图片描述
  我问个问题,假如我走到半路我就不走了,那我还有办法对模型进行更新吗?

  我从纽约开车去亚特兰大会经过华盛顿DC,假如我到DC的时候,车子出故障了,我就去不了亚特兰大了,那我有没有可能使用这一段旅途去改进模型呢?

  其实是可以的,我从出发的时刻做了预测,模型说从纽约开车到亚特兰大要花1000分钟,这个1000就是模型的估计,当我开车到DC的时候我一看花了300分钟(真实观测),然后模型又预测我还需要花600min才能到达亚特兰大。

  回顾一下,一开始模型告诉我,从纽约到亚特兰大需要花1000min。而现在我到DC花了300min,模型又告诉我,我还需要花600min才能到达亚特兰大,根据模型新的预测我知道我到达亚特兰大的总时间900min,比原来快了100min,在TD算法里面我们将这个新的估计900min叫做TD target

  TD target虽然也是一个虽然也是个估计,但未必是实际情况,但是它要比最初的1000min要更可靠,最初的估计纯粹是一个估计,无事实成分,虽然TD target也是一个估计但是它有事实成分,当我越接近亚特兰大,TD target就越接近真实值。

  用TD target的话我不需要跑完整个路程去知道真实的时间开销,我到了DC我得到TD target=900,我就可以更新模型参数了,我假如y=900就是真实观测,我把y作为target,损失函数就是:最开始预测的模型参数 1000和TD target差的平方,这里Q(W)和y的差我们称为TD error。
在这里插入图片描述
  整个模型更新如下:
在这里插入图片描述
在这里插入图片描述
  刚才我们学了TD算法,有了TD算法即使不完成旅途也能更新模型参数,把TD算法用来学习DQN是相同的道理,我不需要打完游戏就能更新游戏的参数。

3.2 TD算法训练DQN

在这里插入图片描述
  怎样才能使用TD算法来学习DQN呢?

  刚才的例子里面要用到这样一个公式:
在这里插入图片描述
&ems p; 公式的意思是纽约到亚特兰大的时间(估计)约等于纽约到DC(真实时间)+ DC到亚特兰大的时间(估计),有上述公式才能实现TD算法:
在深度强化学习中也有这样一个公式:
在这里插入图片描述
  等式左边是T时刻的估计,这是未来总和的期望相当于纽约到亚特兰大的总时间,等式右边有一项rt是真实的奖励,第二项是DQN在t+1时刻做的估计,相当于DC到亚特兰大的估计时间,接下来,我总结一下为什么强化学习有这个公式:
  回顾一下折扣回报:
在这里插入图片描述
  这里的R是奖励。γ是一个介于0-1之间的折扣率,我们对这个公式进行处理,将有γ的项提取一个γ得到:
在这里插入图片描述
  括号里的内容是什么呢?我们再用一下折扣回报U的定义,不难发现括号里面就是Ut+1因此我们得到一个等式:
在这里插入图片描述
  这个等式反应了相邻两个折扣之间的关系。

  现在我们要把TD算法用到DQN上,在t时刻DQN输出的值Q(st,at;w)是对Ut做出的估计,这就像我从纽约出发前,模型做的预测,告诉我,纽约到亚特兰大的总时间。

  在下一时刻DQN输出的值Q(st+1,at+1;w)是对Ut+1做出的估计,这就我开车到DC,模型预测DC到亚特兰大的时间。

  我们知道Ut=Rt+γ * Ut+1,所以Ut的期望约等于Rt加上Ut+1的期望,所以我们能够得到这样一个关系,DQN在t时刻做出的预测:
在这里插入图片描述
在这里插入图片描述

四、训练步骤

  有了prediction和TD target我们就能更新DQN的模型参数了:
在t时刻,模型做出了预测Q(st,at;w),这里的st是当前的状态,at是已经做出的动作,wt是当时的模型参数。
在这里插入图片描述
  到了t+1时刻,我们观测到真实的奖励rt,还观测到新的状态st+1,有了st+1,我们就能用DQN算出下一个动作at+1了,在t+1时刻我们知道了rt,st+1,at+1的值,这时候我们就能计算TD target记作yt,t+1时刻的动作at+1是怎么算出来的呢,DQN对每一个动作打分,分数最高的那个动作就被选出来作为at+1,所以呢。Q(st+1,at+1;wt)就是对Q函数关于a求最大化。
在这里插入图片描述
  我们将两者差的平方l做为loss:
在这里插入图片描述

  然后算lt关于模型参数w的导数,作梯度下降来更新模型参数,做梯度下降是为了使loss减小
在这里插入图片描述
  总的来说所有步骤就是这样的:
在这里插入图片描述

六、总结

期待大家和我交流,留言或者私信,一起学习,一起进步!麻烦大家可用关注公众号:AI那些事,感谢!!!
在这里插入图片描述

  • 44
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
Multi-agent reinforcement learning (MARL) is a subfield of reinforcement learning (RL) that involves multiple agents learning simultaneously in a shared environment. MARL has been studied for several decades, but recent advances in deep learning and computational power have led to significant progress in the field. The development of MARL can be divided into several key stages: 1. Early approaches: In the early days, MARL algorithms were based on game theory and heuristic methods. These approaches were limited in their ability to handle complex environments or large numbers of agents. 2. Independent Learners: The Independent Learners (IL) algorithm was proposed in the 1990s, which allowed agents to learn independently while interacting with a shared environment. This approach was successful in simple environments but often led to convergence issues in more complex scenarios. 3. Decentralized Partially Observable Markov Decision Process (Dec-POMDP): The Dec-POMDP framework was introduced to address the challenges of coordinating multiple agents in a decentralized manner. This approach models the environment as a Partially Observable Markov Decision Process (POMDP), which allows agents to reason about the beliefs and actions of other agents. 4. Deep MARL: The development of deep learning techniques, such as deep neural networks, has enabled the use of MARL in more complex environments. Deep MARL algorithms, such as Deep Q-Networks (DQN) and Deep Deterministic Policy Gradient (DDPG), have achieved state-of-the-art performance in many applications. 5. Multi-Agent Actor-Critic (MAAC): MAAC is a recent algorithm that combines the advantages of policy-based and value-based methods. MAAC uses an actor-critic architecture to learn decentralized policies and value functions for each agent, while also incorporating a centralized critic to estimate the global value function. Overall, the development of MARL has been driven by the need to address the challenges of coordinating multiple agents in complex environments. While there is still much to be learned in this field, recent advancements in deep learning and reinforcement learning have opened up new possibilities for developing more effective MARL algorithms.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写Bug那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值