hands on machine learning 第二版_DQN(Deep Q-learning)入门教程(六)之DQN玩游戏

DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird中,我们使用q-learning算法去对Flappy Bird进行强化学习,而在这篇博客中我们将使用神经网络模型来代替Q-table,关于DQN的介绍,可以参考我前一篇博客:DQN(Deep Q-learning)入门教程(五)之DQN介绍

在这篇博客中将使用DQN做如下操作:

  • Flappy Bird
  • MountainCar-v0

再回顾一下DQN的算法流程:

9453ca4b369e2ba19bc1b9530954bd66.png

项目地址:Github

MountainCar-v0

MountainCar的训练好的Gif示意图如下所示,汽车起始位置位于山的底部,最终目标是驶向右边山的插旗的地方,其中,汽车的引擎不能够直接驶向终点,必须借助左边的山体的重力加速度才能够驶向终点。

0953549f1c427f55ccc778ea68787cd5.png

MountainCar-v0由OpenAI提供,python包为gym,官网网站为https://gym.openai.com/envs/MountainCar-v0/。在Gym包中,提供了很多可以用于强化学习的环境(env):

cb30abde13b42825e7bc5eaa0fd91e3c.png

在MountainCar-v0中,状态有2个变量,car position(汽车的位置),car vel(汽车的速度),action一共有3种Accelerate to the LeftDon't accelerateAccelerate to the Right,然后当车达到旗帜的地方(position = 0.5)会得到

的奖励,如果没有达到则为
。但是如果当你运行步骤超过200次的时候,游戏就会结束。详情可以参考
源代码(ps:官方文档中没有这些说明)。

下面介绍一下gym中几个常用的函数:

  • env = gym.make("MountainCar-v0")
    这个就是创建一个MountainCar-v0的游戏环境。
  • state = env.reset()
    重置环境,返回重置后的state
  • env.render()
    将运行画面展示在屏幕上面,当我们在训练的时候可以不使用这个来提升速度。
  • next_state, reward, done, _ = env.step(action)
    执行action动作,返回下一个状态,奖励,是否完成,info。

初始化Agent

初始化Agent直接使用代码说明吧,这个还是比较简单的:

import keras
import random
from collections import deque

import gym
import numpy as np
from keras.layers import Dense
from keras.models import Sequential


class Agent():
    def __init__(self, action_set, observation_space):
        """
        初始化
        :param action_set: 动作集合
        :param observation_space: 环境属性,我们需要使用它得到state的shape
        """
        # 奖励衰减
        self.gamma = 1.0
        # 从经验池中取出数据的数量
        self.batch_size = 50
        # 经验池
        self.memory = deque(maxlen&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值