标签: reinforcement-learning

例外:ms_pacman 缺少 ROM,请参阅 https://github.com/openai/atari-py#roms 了解说明

我对 OpenAi 健身房完全陌生,我刚刚安装了健身房,然后尝试为其创建环境, env = gym.make('MsPacman-v0')所以我收到以下错误:

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-21-e04adf623175> in <module>
----> 1 env = gym.make('MsPacman-v0')

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(id, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, path, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, **kwargs)

~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\atari\atari_env.py in __init__(self, game, 
mode, difficulty, obs_type, frameskip, repeat_action_probability, full_action_space)

~\Anaconda3\envs\env_project\lib\site-packages\atari_py\games.py in get_game_path(game_name)
 18     path = os.path.join(_games_dir, game_name) + ".bin"
 19     if not os.path.exists(path):
---> 20         raise Exception('ROM is missing for %s, see https://github.com/openai/atari-py#roms 
for instructions' % (game_name,))
 21     return path
 22 

Exception: ROM is …
Run Code Online (Sandbox Code Playgroud)

python machine-learning reinforcement-learning jupyter-notebook openai-gym

3
推荐指数
1
解决办法
1万
查看次数

监督学习与离线(批量)强化学习

我能找到的大多数材料(例如,David Silver 的在线课程)都提供了有关监督学习和强化学习之间关系的讨论。然而,它实际上是监督学习和在线强化学习之间的比较,在在线强化学习中,代理在环境中运行(或模拟交互),以在有关底层动态的有限知识的情况下获得反馈。

我对离线(批量)强化学习更好奇,其中数据集(收集的学习经验)是先验的。那么与监督学习相比有什么区别呢?他们有哪些相似之处?

reinforcement-learning unsupervised-learning

3
推荐指数
1
解决办法
958
查看次数

Stable Baselines3 PPO() - 如何在训练期间更改 Clip_range 参数?

我想在 PPO 模型的整个训练过程中逐渐减小 Clip_range(epsilon、探索与利用参数)。

\n

我尝试简单地运行“model.clip_range = new_value”,但这不起作用。

\n

在此处的文档中,它说“clip_range (Union[float, Callable[[float], float]]) \xe2\x80\x93 剪辑参数,它可以是当前剩余进度的函数(从1到0)。 ”

\n

有谁知道如何在训练期间实际更改此参数,或者如何输入“当前剩余进度的函数”?

\n

reinforcement-learning stable-baselines

3
推荐指数
1
解决办法
1560
查看次数

ValueError:给定的 numpy 数组中至少有一个步幅为负,并且当前不支持具有负步幅的张量

我正在使用 RL 编写自动驾驶代码。我正在使用稳定的基线3和开放的人工智能健身房环境。我在 jupyter 笔记本中运行以下代码,但出现以下错误:

# Testing our model
episodes = 5 # test the environment 5 times
for episodes in range(1,episodes+1): # looping through each episodes
    bs = env.reset() # observation space
    # Taking the obs and passing it through our model
    # tells that which kind of the action is best for our work
    done = False 
    score = 0
    while not done:
        env.render()
        action, _ = model.predict(obs) # now using model here # returns model action and …
Run Code Online (Sandbox Code Playgroud)

python reinforcement-learning openai-gym stable-baselines

3
推荐指数
1
解决办法
7410
查看次数

没有训练价值的神经网络学习

我想知道如何在不提供训练值的情况下训练神经网络.我的前提是神经网络将用于可以从传感器接收正/负反馈的机器人.IE,为了训练它自由地漫游而不碰到东西,当没有触发碰撞传感器或接近传感器时会发生正反馈.当碰撞/接近传感器被触发时发生负反馈.如何使用这种方法训练神经网络?

我是用C++写的

machine-learning reinforcement-learning neural-network

2
推荐指数
1
解决办法
2170
查看次数

多臂强盗演习的反直觉结果

我正在阅读 Sutton & Barto 的Reinforcement Learning: An Introduction 的第 2 章第 7 节,其中涉及多臂老虎机问题中的梯度方法。(我意识到第 2 版是草稿,似乎各节移动了一点,但我的文件有 2.7 节标题为“梯度强盗”。)我设法使用 2.3-2.5 节中的方法没有问题,但我一直使用令人费解的梯度方法获得结果。我将遍历我的代码并展示一个示例。

只是在这里初始化一切:

import random
import math
import numpy as np, numpy.random

# number of arms (k) and step-size (alpha)
k = 10
alpha = 0.1

# initialize preference function (H), and reward distribution (R)
H = {i: 0 for i in range(k)}
R = {i: [random.uniform(-100,100), 1] for i in range(k)}
Run Code Online (Sandbox Code Playgroud)

我使用固定奖励分布,我使用字典来表示这些分布。我假设每个奖励都由高斯描述,因此我使用以下函数将操作映射到奖励:

def getReward(action, rewardDistribution):
  return random.gauss(rewardDistribution[action][0], rewardDistribution[action][1])
Run Code Online (Sandbox Code Playgroud)

所谓的“偏好函数” H …

python machine-learning reinforcement-learning gradient-descent

2
推荐指数
1
解决办法
738
查看次数

Q学习表收敛到-inf

我尝试通过自己的q学习实现来解决aigym山地车问题

在尝试了不同的方法之后,它开始确实很好地工作,但是过了一会儿(20k集*每集1000个样本),我注意到我存储在Q表中的值变大了,因此它存储了-inf值。

在仿真过程中,我习惯于以下代码:

for t in range(SAMPLE_PER_EPISODE):

    observation, reward, done, info = env.step(action)
    R[state, action] = reward

    history.append((state,action,reward))

    max_indexes = np.argwhere(Q[state,] == np.amax(Q[state,])).flatten()
    action = np.random.choice(max_indexes)
Run Code Online (Sandbox Code Playgroud)

为了学习,我在每一集之后都使用了以下代码:

#train
latest_best = 0
total_reward = 0
for entry in reversed(history):
    Q[entry[0],entry[1]] = Q[entry[0],entry[1]] + lr * (entry[2] + latest_best * gamma)

    latest_best = np.max(Q[entry[0],:])
    total_reward += entry[2]
Run Code Online (Sandbox Code Playgroud)

使用该算法我获得了很好的结果,但是问题是-如上文所述-Q值的确很快达到了-inf

我认为我错误地实现了Q算法,但是将其更改为以下实现之后,它不再起作用(几乎和以前一样好):

#train
latest_best = 0
total_reward = 0
for entry in reversed(history):
    # Here I changed the code
    Q[entry[0],entry[1]] = Q[entry[0],entry[1]] + …
Run Code Online (Sandbox Code Playgroud)

python machine-learning reinforcement-learning q-learning

2
推荐指数
1
解决办法
125
查看次数

当动作不影响强化学习中的状态时,它叫什么?

在强化学习中,是否有算法的名称,其中所采取的行动不会影响状态?例如武装匪徒

machine-learning reinforcement-learning

2
推荐指数
1
解决办法
234
查看次数

openai Gym env.P,AttributeError“ TimeLimit”对象没有属性“ P”

我目前正在阅读Sudharsan Ravichandiran撰写的Python动手强化学习,在第一个例子中,我遇到了这个AttributeError:

AttributeError 'TimeLimit' object has no attribute 'P'

由以下行引发:

for next_sr in env.P[state][action]: 
Run Code Online (Sandbox Code Playgroud)

我找不到有关env.P的任何文档,但在这里找到了用python2编写的类似示例:https : //gym.openai.com/evaluations/eval_48sirBRSRAapMjotYzjb6w/

我想env.P是一个过时的库的一部分(即使这本书于2018年6月出版,并且隐含的代码在python3中),那么我该如何替换呢?

python reinforcement-learning python-3.x openai-gym

2
推荐指数
1
解决办法
2122
查看次数

Tensorflow:如何将转换层权重复制到另一个变量以用于强化学习?

我不确定Tensorflow是否可行,我担心我可能不得不切换到PyTorch。

基本上,我有这层:

self.policy_conv1 = tf.layers.conv2d(inputs=self.policy_s, filters=16, kernel_size=(8,8),strides=(4,4), padding = 'valid',activation=tf.nn.relu, kernel_initializer=tf.glorot_uniform_initializer, bias_initializer = tf.glorot_uniform_initializer)
Run Code Online (Sandbox Code Playgroud)

我正在尝试每训练约100次迭代将其复制到另一层:

self.eval_conv1 = tf.layers.conv2d(inputs=self.s, filters=16, kernel_size=(8,8),strides=(4,4), padding = 'valid', activation=tf.nn.relu, kernel_initializer=tf.glorot_uniform_initializer, bias_initializer = tf.glorot_uniform_initializer)
Run Code Online (Sandbox Code Playgroud)

tf.assign 似乎不是正确的工具,并且以下内容似乎无效:

self.policy_conv1 = tf.stop_gradient(tf.identity(self.eval_conv1))
Run Code Online (Sandbox Code Playgroud)

本质上,我希望将其遍历eval conv层复制到policy conv层,并且不要在每次图形运行一个变量或另一个变量时将它们绑在一起(这与上面的身份代码段一起发生)。如果有人可以指出所需的代码,我将不胜感激。

python reinforcement-learning conv-neural-network tensorflow

2
推荐指数
1
解决办法
1247
查看次数