基于Pytorch的强化学习(DQN)之Q-learning

Posted ZDDWLIG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Pytorch的强化学习(DQN)之Q-learning相关的知识,希望对你有一定的参考价值。

目录

1. 引言

2. 数学推导

3. 算法


1. 引言

我们上次已经介绍了Saras算法,现在我们来学习一下和Saras算法非常相似的一个算法:

Q-learning算法。

Q-learning是一种用于机器学习的强化学习技术。 Q-learning的目标是学习一种策略,告诉Agent在什么情况下要采取什么行动。 它不需要环境模型,可以处理随机转换和奖励的问题,而无需进行调整。

对于任何有限马尔可夫决策过程(FMDP),Q学习找到一种最优的策略,即从当前状态开始,它在任何和所有后续步骤中最大化总奖励的预期值。在给定无限探索时间和部分随机策略的情况下,Q学习可以为任何给定的 FMDP 确定最佳动作选择策略。“Q”命名函数返回用于提供强化的奖励,并且可以说代表在给定状态下采取的动作的“质量”。

Q-learning算法与Saras算法区别在于Q-learning是学习最优动作价值函数 ,而Saras是学习动作价值函数

2. 数学推导

我们上次推导出了动作价值函数的递推公式,现在我们选取最优策略,由最优动作价值函数的定义,我们得到

对于含有随机变量的我们先将其写成最大化的形式,由优化目标我们有:

于是得到 

那么

这个式子中含有随机变量,我们使用蒙特卡罗算法来近似这个期望:由

我们得到 

于是我们将 

 作为TD target 使用TD 算法具体步骤如下:

  1. 观测到state transtition 
  2. 计算TD target 
  3. 计算TD error 
  4. 更新最优动作价值函数

上面的  可以从Q表中获取,我们只需要从第行搜索出最大的即可

3. 算法

  1.  用神经网络  来近似
  2. 计算TD target: 
  3. 计算TD error: 
  4. 损失函数loss:
  5. 梯度下降: 

伪码如下

以上是关于基于Pytorch的强化学习(DQN)之Q-learning的主要内容,如果未能解决你的问题,请参考以下文章

基于Pytorch的强化学习(DQN)之Q-learning

基于Pytorch的强化学习(DQN)之 Baseline 基本概念

基于Pytorch的强化学习(DQN)之 Multistep TD target

(pytorch复现)基于深度强化学习(CNN+dueling network/DQN/DDQN/D3QN)的自适应车间调度(JSP)

(pytorch复现)基于深度强化学习(CNN+dueling network/DQN/DDQN/D3QN)的自适应车间调度(JSP)

(pytorch复现)基于深度强化学习(CNN+dueling network/DQN/DDQN/D3QN/PER)的自适应车间调度(JSP)