DQN tensorflow2 + OpenAI gym 实战

OpenAI gym

手动编环境是一件很耗时间的事情, 所以如果有能力使用别人已经编好的环境, 可以节约我们很多时间. OpenAI gym 就是这样一个模块, 他提供了我们很多优秀的模拟环境. 我们的各种 强化学习算法都能使用这些环境. 

CARTPOLE-V1 环境介绍

CartPole 是gym提供的一个基础的环境,即车杆游戏,游戏里面有一个小车,上有竖着一根杆子,每次重置后的初始状态会有所不同。小车需要左右移动来保持杆子竖直,为了保证游戏继续进行需要满足以下两个条件:

  • 杆子倾斜的角度 \thetaθ 不能大于15°
  • 小车移动的位置 x 需保持在一定范围(中间到两边各2.4个单位长度)

对于 CartPole-v1 环境,其动作是两个离散的动作左移(0)和右移(1),环境包括小车位置、小车速度、杆子夹角及角变化率四个变量。下面以CartPole-v1 环境为例,来介绍 DQN 的实现。

Q-Learning

在 Q-Learning 算法中,我们把这个长期奖励记为 Q 值,我们会考虑每个 ”状态s-动作a“ 的 Q 值,和动作a的回报R。具体而言,它的计算公式为

 不过一般地,我们使用更为保守地更新 Q 表的方法,即引入松弛变量 alpha,按如下的公式进行更新,使得 Q 表的迭代变化更为平缓。

 DQN

我们知道,神经网络的训练是一个最优化问题,最优化一个损失函数loss function,也就是标签和网络输出的偏差,目标是让损失函数最小化。为此,我们需要有样本,巨量的有标签数据,然后通过反向传播使用梯度下降的方法来更新神经网络的参数。

用Q-learning产生的数据来训练神经网络。实际Q值与目标Q值之差是神经网络优化的对象。 

preview

 这里的y_j 就是目标Q值。当然了,一开始没有数据,要吧Q-Learning过程中产生的数据的结果存储到一定程度再计算目标Q值,处理好数据送去训练。

总代码如下 

import argparse
import os
import random

import numpy as np

import gym
import tensorflow as tf

parser = argparse.ArgumentParser()
parser.add_argument('--train', dest='train', default=True)
parser.add_argument('--test', dest='test', default=True)

parser.add_argument('--gamma', type=float, default=0.95)
parser.add_argument('--lr', type=float, default=0.005)
parser.add_argument(&
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值