我试图了解 DQN 中的 epsilon - 贪婪方法。我正在从https://github.com/karpathy/convnetjs/blob/master/build/deepqlearn.js 中提供的代码中学习
以下是随年龄变化的 epsilon 更新规则如下:
$this.epsilon = Math.min(1.0, Math.max(this.epsilon_min, 1.0-(this.age - this.learning_steps_burnin)/(this.learning_steps_total - this.learning_steps_burnin)));
这是否意味着 epsilon 值从 min(由用户选择)开始,然后随着年龄增加达到burnin 步骤并最终变为1?或者 epsilon 是否从 1 左右开始然后衰减到 epsilon_min ?
无论哪种方式,在这个过程之后学习几乎停止。那么,我们是否需要足够仔细地选择 learning_steps_burnin 和 learning_steps_total 呢?关于需要选择什么值的任何想法?
performance reinforcement-learning neural-network q-learning deep-learning
有什么简单的方法可以将 PPO 的属性与 A3C 方法合并?A3C 方法运行多个 parrel actor 并优化参数。我正在尝试将 PPO 与 A3C 合并。
我在 中创建了以下形式的神经网络keras:
from keras.layers import Dense, Activation, Input
from keras import Model
input_dim_v = 3
hidden_dims=[100, 100, 100]
inputs = Input(shape=(input_dim_v,))
net = inputs
for h_dim in hidden_dims:
net = Dense(h_dim)(net)
net = Activation("elu")(net)
outputs = Dense(self.output_dim_v)(net)
model_v = Model(inputs=inputs, outputs=outputs)
model_v.compile(optimizer='adam', loss='mean_squared_error', metrics=['mse'])
Run Code Online (Sandbox Code Playgroud)
后来,我使用model_v.train_on_batch(X[i],y[i]).
为了测试神经网络是否正在成为更好的函数逼近器,我想定期评估模型的累积X和y(在我的情况下,随着时间的推移X而y增长)。但是,当我调用 时model_v.evaluate(X, y),控制台中只显示特征进度条,但不会打印损失值和 mse-metric(在这种情况下是相同的)。
我怎样才能改变它?
我想在 OpenAI 环境中修改一些东西。如果我们使用Cartpole示例,那么我们可以编辑类 init 函数中的内容,但使用Box2D它的环境似乎并不那么简单。
例如,考虑BipedalWalker环境。
在这种情况下,我将如何编辑SPEED_HIP或SPEED_KNEE变量之类的内容?
Batch size 指的是监督学习中神经工作训练的样本数量,然而,在强化学习的背景下,batch size 的含义是什么?它也指样品吗?如果是这样,样本在强化学习背景下的意义是什么?
我正在使用 openAI 的stable-baselines训练强化学习代理。我还使用optuna优化代理超参数。
为了加快该过程,我在不同的函数调用中使用多重处理。具体参见SubprocVecEnv此处文档study.optimize中的建议(分别在 1.15.3 和 1.10.4 下)。
import numpy as np
from stable_baselines.common.vec_env import SubprocVecEnv
from stable_baselines import PPO2
from stable_baselines.common.policies import MlpLnLstmPolicy
import optuna
n_cpu = 4
def optimize_ppo2(trial):
""" Learning hyperparamters we want to optimise"""
return {
'n_steps': int(trial.suggest_loguniform('n_steps', 16, 2048)),
'gamma': trial.suggest_loguniform('gamma', 0.9, 0.9999),
'learning_rate': trial.suggest_loguniform('learning_rate', 1e-5, 1.),
'ent_coef': trial.suggest_loguniform('ent_coef', 1e-8, 1e-1),
'cliprange': trial.suggest_uniform('cliprange', 0.1, 0.4),
'noptepochs': int(trial.suggest_loguniform('noptepochs', 1, 48)),
'lam': trial.suggest_uniform('lam', 0.8, 1.)
}
def optimize_agent(trial):
""" …Run Code Online (Sandbox Code Playgroud) 我正在试验 Q-learning 算法。我已经从不同的来源阅读并理解了该算法,但是,似乎没有明确的数学支持的收敛标准。
大多数来源建议迭代多次(例如,N = 1000),而其他人则表示当所有状态和动作对 (s, a) 被无限频繁访问时实现收敛。但这里的问题是,多少是无限频繁。对于想要手动解决算法的人来说,最好的标准是什么?
如果有人能在这方面教育我,我将不胜感激。我也很感激任何有这种效果的文章。
问候。
algorithm artificial-intelligence machine-learning reinforcement-learning q-learning
因此,我尝试使用gym 在自定义环境中执行一些强化学习,但是我对spaces.box 的工作原理感到非常困惑。每个参数的含义是什么?例如,如果我有一个涉及大量信息的游戏状态,例如角色的生命值、他们的统计数据和能力,我不确定这样的东西是否会在 Box 中表示为观察状态。另外,在一款具有多种能力的游戏中,最好对它们进行一次性编码,还是将它们保留为常规增量 Id,因为我想使用神经网络来查找预期的 Q 值。
我正在尝试使用 OpenAI 执行以下代码:
import gym
env = gym.make('CarRacing-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample())
Run Code Online (Sandbox Code Playgroud)
但它会抛出错误:
fn = getattr(mod, attr_name) AttributeError: 模块 'gym.envs.box2d' 没有属性 'CarRacing'
然后我尝试通过 pip install box2d-py 安装 box2d 并抛出此错误:
ERROR: Command errored out with exit status 1:
command: 'C:\Users\Junior\Anaconda\envs\gym\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Junior\\AppData\\Local\\Temp\\pip-install-w8awn22p\\box2d-py\\setup.py'"'"'; __file__='"'"'C:\\Users\\Junior\\AppData\\Local\\Temp\\pip-install-w8awn22p\\box2d-py\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Junior\AppData\Local\Temp\pip-record-netg1nlq\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\Junior\Anaconda\envs\gym\Include\box2d-py'
cwd: C:\Users\Junior\AppData\Local\Temp\pip-install-w8awn22p\box2d-py\
Complete output (16 lines):
Using setuptools (version 45.2.0.post20200210).
running install
running build
running build_py …Run Code Online (Sandbox Code Playgroud) python machine-learning reinforcement-learning box2d openai-gym
我使用策略保存程序保存了训练有素的策略,如下所示:
tf_policy_saver = policy_saver.PolicySaver(agent.policy)
tf_policy_saver.save(policy_dir)
Run Code Online (Sandbox Code Playgroud)
我想继续使用保存的策略进行训练。所以我尝试使用保存的策略初始化训练,这导致了一些错误。
agent = dqn_agent.DqnAgent(
tf_env.time_step_spec(),
tf_env.action_spec(),
q_network=q_net,
optimizer=optimizer,
td_errors_loss_fn=common.element_wise_squared_loss,
train_step_counter=train_step_counter)
agent.initialize()
agent.policy=tf.compat.v2.saved_model.load(policy_dir)
Run Code Online (Sandbox Code Playgroud)
错误:
File "C:/Users/Rohit/PycharmProjects/pythonProject/waypoint.py", line 172, in <module>
agent.policy=tf.compat.v2.saved_model.load('waypoints\\Two_rewards')
File "C:\Users\Rohit\anaconda3\envs\btp36\lib\site-packages\tensorflow\python\training\tracking\tracking.py", line 92, in __setattr__
super(AutoTrackable, self).__setattr__(name, value)
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)
我只是想节省每次重新训练的时间。如何加载保存的策略并继续训练?
提前致谢
openai-gym ×4
python ×3
q-learning ×2
algorithm ×1
batchsize ×1
box2d ×1
gpu ×1
keras ×1
performance ×1
tensorflow ×1