dqn处理cartpole问题——使用强化学习,本质上是训练mlp,预测每一个动作的得分

将者,智、信、仁、勇、严也。 将者,智、信、仁、勇、严也。     2022-11-21     584

关键词:

代码:

# -*- coding: utf-8 -*-
import random
import gym
import numpy as np
from collections import deque
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from keras.utils.vis_utils import plot_model

EPISODES = 1000


class DQNAgent:
    def __init__(self, state_size, action_size):
        self.state_size = state_size
        self.action_size = action_size
        self.memory = deque(maxlen=2000)
        self.gamma = 0.95    # discount rate
        #self.epsilon = 1.0  # exploration rate
        self.epsilon = 0.4  # exploration rate
        self.epsilon_min = 0.01
        self.epsilon_decay = 0.995
        self.learning_rate = 0.001
        self.model = self._build_model()
        #可视化MLP结构
        plot_model(self.model, to_file=\'dqn-cartpole-v0-mlp.png\', show_shapes=False)

    def _build_model(self):
        # Neural Net for Deep-Q learning Model
        model = Sequential()
        model.add(Dense(24, input_dim=self.state_size, activation=\'relu\'))
        model.add(Dense(24, activation=\'relu\'))
        model.add(Dense(self.action_size, activation=\'linear\'))
        model.compile(loss=\'mse\',
                      optimizer=Adam(lr=self.learning_rate))
        return model

    def remember(self, state, action, reward, next_state, done):
        self.memory.append((state, action, reward, next_state, done))

    def act(self, state):
        if np.random.rand() <= self.epsilon:
            return random.randrange(self.action_size)
        act_values = self.model.predict(state)
        #print("act_values:")
        #print(act_values)
        return np.argmax(act_values[0])  # returns action

    def replay(self, batch_size):
        minibatch = random.sample(self.memory, batch_size)
        for state, action, reward, next_state, done in minibatch:
            target = reward
            if not done:
                target = (reward + self.gamma *
                          np.amax(self.model.predict(next_state)[0]))
            target_f = self.model.predict(state)
            target_f[0][action] = target
            self.model.fit(state, target_f, epochs=1, verbose=0)
        #if self.epsilon > self.epsilon_min:
        #    self.epsilon *= self.epsilon_decay

    def load(self, name):
        self.model.load_weights(name)

    def save(self, name):
        self.model.save_weights(name)


if __name__ == "__main__":
    env = gym.make(\'CartPole-v0\')
    state_size = env.observation_space.shape[0]
    action_size = env.action_space.n

    #print(state_size)
    #print(action_size)

    agent = DQNAgent(state_size, action_size)

    done = False
    batch_size = 32
    avg=0

    for e in range(EPISODES):
        state = env.reset()
        state = np.reshape(state, [1, state_size])
        for time in range(500):
            env.render()
            action = agent.act(state)
            next_state, reward, done, _ = env.step(action)
            reward = reward if not done else -10
            next_state = np.reshape(next_state, [1, state_size])
            agent.remember(state, action, reward, next_state, done)
            state = next_state
            if done:
                print("episode: /, score: , e: :.2"
                      .format(e, EPISODES, time, agent.epsilon))
                avg+=time
                break
        if len(agent.memory) > batch_size:
            agent.replay(batch_size)

    print("Avg score:".format(avg/1000))

 基本思路:

让他自己训练玩这个游戏(每次应该左右移动的距离),基本思路就是:

本质上就是使用MLP训练(动作,得分)

这个得分是坚持时间的长短,如果时间长得分就高。

但是我感觉这个gym自己做了很多事情,比如度量奖励分数,action描述等。待进一步挖掘!

 

pytorch-21强化学习(dqn,deepqlearning)教程(代码片段)

要查看图文并茂的教程,请移步:http://studyai.com/pytorch-1.4/intermediate/reinforcement_q_learning.html本教程演示如何使用PyTorch在OpenAIGym的手推车连杆(CartPole-v0)任务上训练深度Q-学习的智能体(DeepQLearning(DQN)agent 查看详情

pytorch-21强化学习(dqn,deepqlearning)教程(代码片段)

...rning.html本教程演示如何使用PyTorch在OpenAIGym的手推车连杆(CartPole-v0)任务上训练深度Q-学习的智能体(DeepQLearning(DQN)agent)。任务(Task)智能体(agent)必须在两个动作(action)之间做出决定——向左或向右移动手推车(cart)——这样... 查看详情

深度强化学习 - CartPole 问题

】深度强化学习-CartPole问题【英文标题】:DeepReinforcementLearning-CartPoleProblem【发布时间】:2021-08-1323:03:57【问题描述】:我尝试实现最简单的深度Q学习算法。我认为,我已经正确地实施了它,并且知道深度Q学习与分歧作斗争,... 查看详情

强化学习库tianshou——dqn使用(代码片段)

强化学习库tianshou——DQN使用tianshou是清华大学学生开源编写的强化学习库。本人因为一些比赛的原因,有使用到强化学习,但是因为过于紧张与没有尝试快速复现强化学习的代码,并没有获得很好的成绩,故尝试... 查看详情

chatgpt使用拓展资料:强化学习dqn单模型双模型doubledqnduelingdqn

ChatGPT使用拓展资料:强化学习DQN单模型、双模型目录强化学习基础Q-LearningDQN单模型DQN双模型DoubleDQNDuelingDQNTransformers拓展资料强化学习基础在开始学习DQN之前,我们需要了解一些强化学习的基础知识。强化学习是一种机器学习方... 查看详情

强化学习(十三)策略梯度(policygradient)(代码片段)

...主要的问题主要有三点。    第一点是对连续动作的处理能力不足。DQN之类的方法一般都是只处理离散动作,无法处理连续动作。虽然有NAFDQN之类的变通方法,但是并不优雅。比如我们之前提到的经典的冰球世界(PuckWorld)强... 查看详情

dqn强化学习

pytorch比tenserflow简单。所以我们模仿用tensorflow写的强化学习。学习资料:本节的全部代码Tensorflow的100行DQN代码我制作的DQN动画简介我的DQNTensorflow教程我的强化学习教程PyTorch官网论文 PlayingAtariwithDeepReinforcementLearning要点Torch是... 查看详情

dqn(deepq-learning)入门教程(零)之教程介绍

...之后,我又不知道在哪里(YouTubeorB站杀我)看到了有人使用CNN网络玩飞翔的小鸟(FlappyBird)的游戏,当时我觉得,emm,竟然使用CNN就可以玩游戏,有意思,可以一试,然后发现,要用到DQN,再然后,又发现其是强化学习的知识... 查看详情

强化学习库tianshou——dqn使用(代码片段)

强化学习库tianshou——DQN使用tianshou是清华大学学生开源编写的强化学习库。本人因为一些比赛的原因,有使用到强化学习,但是因为过于紧张与没有尝试快速复现强化学习的代码,并没有获得很好的成绩,故尝试... 查看详情

强化学习学习资料汇总强化学习:q-learning与dqn(deepqnetwork)

python机器学习四(强化学习)DQN算法流程​​https://www.jianshu.com/p/42507aa63b05/https://www.jianshu.com/p/42507aa63b05/​​基于深度强化学习的智能体系结构参数调优​​基于深度强化学习的智能体系结构参数调优-知乎CAPES(ComputerAutomatedPerformanc... 查看详情

使用带有 DQN 算法的张量板

...UsingtensorboardwithaDQNalgorithm【发布时间】:2020-12-0402:09:43【问题描述】:对于强化学习,我读到张量板并不理想,因为它提供了每集和/或步骤的输入。由于在强化学习中有数千个步骤,它并没有为我们提供内容的概述。我在这里... 查看详情

004-dqn

什么是DQN今天我们会来说说强化学习中的一种强大武器,DeepQNetwork简称为DQN.GoogleDeepmind团队就是靠着这DQN使计算机玩电动玩得比我们还厉害.  强化学习与神经网络 之前我们所谈论到的强化学习方法都是比较传统的方式,... 查看详情

强化学习7日打卡营--使用gym游戏的预处理

最近参加完百度强化学习7日打卡营的学习班,初步了解了一些强化学习的算法。学习完后,试着开始玩玩atari的游戏,老师给了一个demo,https://github.com/PaddlePaddle/PARL/tree/develop/examples/DQN_variant,model,algorithm,agent等就不多说了,... 查看详情

自然语言处理:使用深度强化学习玩雅达利

论文名称:PlayingAtariwithDeepReinforcementLearning论文地址:http://www.cs.toronto.edu/~vmnih/docs/dqn.pdf相关论文:Human-levelcontrolthroughdeepreinforcementlearning论文地址:https://storage. 查看详情

actor-critic强化学习方法应用于cartpole-v1

...77深智研211班简介:本文结合Actor-Critic算法,针对CartPole-v1倒立摆小车环境进行了强化学习训练,最后成功实现了小车长时间维持平衡、奖励曲线收敛的理想效果。在实验过程中,我们发现,Actor-Critic算法的收... 查看详情

深度强化学习-dqn算法原理与代码(代码片段)

...-learning算法只能用于解决离散低维状态空间和动作空间类问题。DQN算法的核心就是用一个人工神经网络来代替Q-tabel,即动作价值函数。网络的输入为状态信息,输出为每个动作的价值,因此DQN算法可以用来解决连续... 查看详情

强化学习dqn经验回放是什么

...重放:强化学习由于state之间的相关性存在稳定性的问题,因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的... 查看详情

强化学习dqn经验回放是什么

...重放:强化学习由于state之间的相关性存在稳定性的问题,因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的... 查看详情