[强化学习]强化学习基础

前言

为了应对车载网络中通信环境快速变化的难题,可以使用强化学习进行解决,这里结合莫烦PYTHON的教程对强化学习的基础进行整理。主要的应用场景为车载网络中资源分配问题。

本文源自莫烦PYTHON 强化学习章节,有需要请查阅原文

简介

强化学习的主要构成有:agent(主体)、状态、动作准则、奖励函数。

主要流程为:agent开始时处 于某种状态中,agent需要通过动作准则决定自己的动作并进入下一个状态,此外在做出动作后将通过奖励函数获得奖励,并更新动作准则。

与监督学习的区别:

  • 样本的获得方式不一样:监督学习的样本一开始就已给出,强化学习没有具体的训练样本,其agent所处的状态与“样本”的角色相同,也就是说强化学习的样本训练样本一开始是不知道的,随着时间逐渐从环境中逐渐积累得到。
  • label不一样:监督学习的label伴随着样本一起给出,强化学习没有实质上的label,由奖励函数所输出的奖励数值作为评判标准。

价值

当你需要与环境互动或快速追随环境的变化,进而改进自己的行为的时候,强化学习很适用

常用名词

Model-free 和 Model-based

这两者的差别就是 算法中是否包含agent所处环境的模型

Model-based的算法中会构建一个虚拟的环境,它可以在这个虚拟环境中进行试验,然后再在真实环境中进行试验,这样的好处就是避免在真实环境中的低级错误(因为他在真实环境中的动作都是在虚拟环境中验证过的比较好的动作)

Q learning、Sarsa都是Model-free

基于概率 和 基于价值(Policy-Based & Value-Based)

 选择动作时需要给对每个动作进行比较然后选择合适的动作。

如果使用概率进行比较,那我不一定选择概率数值最高的动作(因为那个只是概率高,我也有概率选择其他的动作)。如果使用数值(价值)比较,那么答案就很明确了,选择数值最高的就好,其他的动作我不可能选。

基于价值和基于动作相比就是引入了选择其他分数不高的动作的随机性

On-Policy & Off-Policy 

这个词条蛮复杂的,我这里只是做表面理解,详细请另行查找BLOG,比如这个

区别发生在更新动作准则的打分函数的阶段。

Off在新状态思考下一步行动时只想着让动作分数最优,On在新状态后会使用一定策略进行动作选择。

Q-Learning

决策

所谓决策,是根据状态动作准则选择动作的过程。Q learning中的动作准则用一个表格表示,这个表称作Q表,如下所示

状态\动作 a1 a2

s1

-2

1

s2 -4 2

左侧目录表示状态,上侧目录表示动作,每个单元格表示在当前状态下选择当前动作所得到的分数,称作Q值

决策时,动作准则是已知的,将agent的当前状态作为输入,查找准则选择Q值高的动作作为输出。

更新

当决策进行后,状态发生改变(由s变为s'),接下来更新Q表,更新后的Q表记为Q'。

更新方法如下:

  1. 将决策阶段选择的动作所获得Q值记为q1,并根据奖励函数得到一个奖励r
  2. 以s‘为输入,在Q表上再次进行决策并将得分记作q2
  3. 现实 = r + \gamma * q2,估计 = q1,Q’ = Q + \alpha (现实 - 估计)。这里的\gamma\alpha都为超参数,\alpha表示学习效率,\gamma表示对未来奖励的衰减值
  4. 此时已经得到更新后的Q表:Q‘
  5. 【一次完整的迭代结束,接下来从’决策‘步骤开始下一轮迭代】

整体算法

举例

我在刷碗(状态s),对接下来的干些啥(动作空间)已经有了小算盘(Q表),【这个小算盘的每一行表示一个状态、每一列表示一个动作,每个格子是该状态下该动作所得到的快活】,我想去做目前可以做到的最快活的事(最大化Q值),那就是去偷懒(决策)!,进入偷懒状态(状态s‘)。【到此为止决策完毕,进入了新的状态,但一次完整的迭代还没结束】,此时妈妈(奖励函数)给了我刷碗的工资(奖励),而我脑中再次快速运转,根据小算盘思考现在做什么可以“让自己最快活”。

这时,洗碗状态下可能得到的最大快活(Q值),和 工资带来快活+偷懒状态下可能得到的最大快活(Q值),存在一定差异,根据此差异修正我的小算盘(更新Q表)【到此为止一次完整的迭代完毕,得到了新的Q表、新的状态】。

这里要注意,Q值和奖励 r 的差别。Q值是我的小算盘,而奖励是执行动作后实际的收益,这两者之间存在的差别是我们更新小算盘的动力。

DQN(Deep Q Network)

结合DNN的初衷和方法

Q表每一行表示一个状态,当状态太多时,存储和搜索都是问题。所以用DNN代替Q表,输入状态和动作,输出有两种形式:1.直接输出Q值;2.输出动作打分,再由一定准则输出Q值(这样主要是省去了对各种状态下动作打分的存储和查找)。

更新

以下分析基于输出动作Q值的DNN,输入的是状态和动作,输出的是动作的Q值。

具体方法和更新Q表一样,形式上就是把Q表替换为DNN,将查表的操作替换为DNN执行前传进行预测。

Experience Replay & Fixed Q-targets

经验重播(Experience Replay)允许DQN在更新的时候,随机抽取一些经历进行学习,通过随机抽取打乱经历之间的相关性,从而使神经网络的训练更有效率。

Fix Q-targets将会用另一个DNN预测‘现实’。这个DNN的参数是很久以前的参数,进而打乱相关性。

 

发布了23 篇原创文章 · 获赞 8 · 访问量 6405

猜你喜欢

转载自blog.csdn.net/m0_37495408/article/details/105346914