基于Pytorch的强化学习(DQN)之Q-learning
Posted ZDDWLIG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Pytorch的强化学习(DQN)之Q-learning相关的知识,希望对你有一定的参考价值。
目录
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 算法具体步骤如下:
- 观测到state transtition
- 计算TD target
- 计算TD error
- 更新最优动作价值函数
上面的 可以从Q表中获取,我们只需要从第行搜索出最大的即可
3. 算法
- 用神经网络 来近似
- 计算TD target:
- 计算TD error:
- 损失函数loss:
- 梯度下降:
伪码如下
以上是关于基于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)