sarsa算法和qlearning区别,sarsa算法与qlearn区别

  sarsa算法和qlearning区别,sarsa算法与qlearn区别

  

1 学习目标

1.复习Q学习;

  2.了解什么是价值函数逼近);是;

  3.理解什么是DQN,并找出它和Q-Learning的区别。

  

2 用Q-Learning解决经典迷宫问题

有一套5室的房子,如图1。房间由门相连,编号为0到4。5号在房子外面,这是我们的目的地。我们随机将代理放在任何一个房间,每打开一扇门就返回一份奖励。图2显示了房间之间的抽象关系。箭头表示代理可以从这个房间转到相连的房间,箭头上的数字代表奖励值。

  图1房屋原型图图2抽象关系图根据这个关系,可以得到如下回报矩阵

  Q-Learning是一种离策TD方法,伪代码如图。

  q-学习伪代码。首先,我们将初始化一个Q表,它用于记录状态-动作对的值。每集的每一步都会根据下面的公式更新Q表

  这里的迷宫问题,每部史诗的结束都是指到达结束状态5。为简单起见,这里将学习率设置为1,更新公式变为

  此外,衰减系数设置为0.8。q表被初始化为全零的55矩阵。下面这个小视频,展示的是一集一步更新的过程。每次这样更新,最后的Q表都会收敛成一个矩阵。

  最终的q表收敛于

  因此,也可以获得最佳路径,如下面的红色箭头所示。

  Python代码:

  将numpy导入为npGAMMA=0.8Q=np.zeros((6,6))R=np.asarray([[-1,-1,-1,-1,0,-1,0,-1,100],[-1,-1,-1,0,-1,-1,0,-1,0,-1],[0,-1,0,-1,100],[-1,0,-1,0,-1,0,100]]]

  

实际情况下,大部分问题都是有巨大的状态空间或者动作空间,想建立一个Q表,内存是绝对不允许的,而且数据量和时间开销也是个问题。

值函数逼近法是为了解决状态空间过大的问题,也称“维数灾难”。用

3 值函数近似与DQN

代替Q表,这个函数可以是线性的,也可以是非线性的。

  也就是所谓的“重量”。那如何找到这个权重,也就是拟合出这样一个合适的函数呢?

函数

这里就要结合机器学习算法里的一些有监督学习算法,对输入的状态提取特征作为输入,通过MC/TD计算出值函数作为输出,然后对函数参数

这里主要讲回归算法,比如线性回归,决策树,

进行训练,直到收敛。

等。

  在这里,你可以介绍DQN(深Q网),

神经网络

  好了,现在关键问题来了。如何训练这个网络?换句话说,如何确定网络参数?

实际上它就是Q-Learning和神经网络的结合,将Q-Learning的Q表变成了Q-Network。

  训练样本说起来容易,通过策略生成就行了。回想一下Q-Learning,我们通过迭代每一步的回报和当前Q表来更新Q表。然后我们就可以用这个计算出来的Q值作为监督学习的“标签”来设计损失函数。我们采用以下形式,即近似值与真值的均方差。

  采用随机梯度下降法迭代求解,可以得到我们想要的结果。具体配方和工艺请参考参考资料。这里就不展开了,其实就是推导。值得一提的是,上述公式是根据不同的方法计算出来的,其形式是不同的。比如用MC的话,就是(return);用TD(0),就是;也就是Q-Learning。

  在David Silver的课上,他根据每次更新所涉及的样本量,将更新方法分为增量法和批量法。前者是一次更新一个数据,后者是先收集一堆样本,然后抽取其中一部分样本更新Q网,称为“

第一,我们需要一个Loss Function;第二,我们需要足够的训练样本。

”。事实上,DQN提出的DeepMind采用了实证回放的方法。为什么要采用体验回放的方法?因为在训练神经网络的时候,

经验回放

。然而,通过强化学习收集的数据之间存在相关性。用这些数据进行序列训练,神经网络当然是不稳定的。体验回放可以打破数据之间的相关性。

  最后,附上DQN的伪代码。

  DQN伪代码学到这里,其实我们可以做一个阶段性的总结。强化学习算法的基本框架可以概括为下图。

  强化学习框架本专栏介绍了这张图中的大部分内容,但最重要、应用最广泛的基于策略的方法还没有介绍,这是我们后面要重点介绍的。

  

假设样本是独立同分布的

[1]强化学习:介绍-第9章:基于策略的近似预测

  [2]强化学习:导论——第十章:基于策略的近似控制

  [3]David Silver的RL课程讲座6 -价值函数逼近(视频、幻灯片)

  [4]DQN 5深度解读DQN算法从进入到放弃

  [5]咸鱼强化学习之路6值函数逼近与DQN

sarsa算法和qlearning区别,sarsa算法与qlearn区别