DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
代码:
# -*- 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_modelEPISODES = 1000class DQNAgent:def __init__(self, state_size, action_size):self.state_size = state_sizeself.action_size = action_sizeself.memory = deque(maxlen=2000)self.gamma = 0.95 # discount rate#self.epsilon = 1.0 # exploration rateself.epsilon = 0.4 # exploration rateself.epsilon_min = 0.01self.epsilon_decay = 0.995self.learning_rate = 0.001self.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 Modelmodel = 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 modeldef 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 actiondef replay(self, batch_size):minibatch = random.sample(self.memory, batch_size)for state, action, reward, next_state, done in minibatch:target = rewardif not done:target = (reward + self.gamma *np.amax(self.model.predict(next_state)[0]))target_f = self.model.predict(state)target_f[0][action] = targetself.model.fit(state, target_f, epochs=1, verbose=0)#if self.epsilon > self.epsilon_min:# self.epsilon *= self.epsilon_decaydef 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 = Falsebatch_size = 32avg=0for 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 -10next_state = np.reshape(next_state, [1, state_size])agent.remember(state, action, reward, next_state, done)state = next_stateif done:print("episode: {}/{}, score: {}, e: {:.2}".format(e, EPISODES, time, agent.epsilon))avg+=timebreakif len(agent.memory) > batch_size:agent.replay(batch_size)print("Avg score:{}".format(avg/1000))
基本思路:
让他自己训练玩这个游戏(每次应该左右移动的距离),基本思路就是:
本质上就是使用MLP训练(动作,得分)
这个得分是坚持时间的长短,如果时间长得分就高。
但是我感觉这个gym自己做了很多事情,比如度量奖励分数,action描述等。待进一步挖掘!
转载于:https://www.cnblogs.com/bonelee/p/9146540.html
DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...相关推荐
- 深度强化学习综述(上)
其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 人工智能 ...
- 【DQN】解析 DeepMind 深度强化学习 (Deep Reinforcement Learning) 技术
原文:http://www.jianshu.com/p/d347bb2ca53c 声明:感谢 Tambet Matiisen 的创作,这里只对最为核心的部分进行的翻译 Two years ago, a ...
- 基于强化学习与深度强化学习的游戏AI训练
github地址 一.摘要 在本次大作业中由两个项目组成. 第一个小项目即为简单AI走迷宫游戏,通过强化学习的Q-learning算法,对AI进行训练来让其能以大概率找打一条通关路径并基本按照该路径进 ...
- “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识
李杉 编译自 KDnuggets 量子位 出品 | 公众号 QbitAI 地处加拿大埃德蒙顿的阿尔伯塔大学(UAlberta)可谓是强化学习重镇,这项技术的缔造者之一萨顿(Rich Sutton)在这 ...
- 深度强化学习之:PPO训练红白机1942
本篇是深度强化学习动手系列文章,自MyEncyclopedia公众号文章深度强化学习之:DQN训练超级玛丽闯关发布后收到不少关注和反馈,这一期,让我们实现目前主流深度强化学习算法PPO来打另一个红白机 ...
- 第七章 深度强化学习-深度Q网络系列1(Deep Q-Networks,DQN)
获取更多资讯,赶快关注上面的公众号吧! 文章目录 第七章 深度强化学习-深度Q网络 7.1 学习目标 7.2 深度学习和强化学习的区别 7.3 DQN原理 7.4 DQN算法 7.4.1 预处理 7. ...
- 在Unity环境中使用强化学习训练Donkey Car(转译)
在Unity环境中使用强化学习训练Donkey Car 1.Introduction 简介 2. Train Donkey Car with Reinforcement Learning 使用强化学习 ...
- 《EasyRL》强化学习笔记
文章目录 概览 基本概念 系统构成 Agent与环境 策略 奖赏函数 值函数 环境模型 强化学习分类 强化学习与监督学习|非监督学习的区别 例子:playing pong 新技术:深度强化学习 马尔科 ...
- dpg learning 和q_深度学习和强化学习之间的差别有多大?
我是做深度强化学习的(Deep Reinforcement Learning)的,这个问题有趣.我对@张馨宇他在此问题下的简洁回答非常认同:"可以用深度学习这个工具来做强化学习这个任务,也可 ...
最新文章
- munin监控windos机子
- php web目录结构,目录结构
- VB 长整型和字节数组的转换问题 (LongByte)
- C++基础回顾-强制类型转换
- 机器学习(十)——因子分析
- 行驶在傍山的道路上_进藏线上那些唯美弯道,行驶中却充满风险,自驾游要注意几个事项...
- 2021 re:Invent ,我们到底该关注哪些发布?
- Python深度学习:常见优化算法
- 微信小程序 和公众号 内嵌网页或H5页面记录
- Magento清空购物车
- 推荐8个值得推荐的神器软件和网站
- 十年HRD总结3个逆向思维的招聘方法
- bway ESL电竞联赛十六季C组对战前瞻 三组战队情报分析
- esp32 + python 呼吸灯实现
- 华为诺亚方舟实验室招聘实习生
- 单片机ch2o程序_基于单片机的甲醛浓度检测仪的设计_李娟娟
- 细胞培养常见问题分析
- 生活充满欺骗,不由你不信
- Python 爬虫进阶篇——Selenium教程(一)
- 2021年材料员-岗位技能(材料员)考试技巧及材料员-岗位技能(材料员)试题及答案
热门文章
- 鼠标点击触发事件python_如何在鼠标按下的情况下触发tkinter的“Enter”事件?...
- Jmeter性能测试之Switch控制器使用
- TestNG测试框架之失败测试重跑
- 第五章5.1 strace
- 大数据SQL日常学习——NVL函数
- linux注册硬盘中断,基于Linux底层硬盘中断辅助代码的分析与设计
- 设置刻度线_6.19 坐标轴:(补充)针对坐标轴线和小刻度线太细的问题
- Linux命令学习之nslookup
- 【响应式Web前端设计】Viewport解析
- 【微信小程序企业级开发教程】界面刷新获取新更新数据