我喜欢在强化学习方面做兼职研究.近年来(截至2009年),rl-competition.org举办了强化学习竞赛,其中有一些非常有趣的问题,但这似乎已经停止.我希望提高我的技能和知识,并与该领域的其他爱好者一起衡量 - 是否还有这样的比赛?
我正在寻找构建或改编优选基于RL理论的模型,该模型可以解决以下问题.非常感谢任何指导或指示.
我有一个连续的动作空间,可以在10-100(含)范围内选择动作.根据值函数,每个动作与某个强化值相关联,范围从0到1(也包括).到现在为止还挺好.这是我开始介入的地方:
并发症1:
值函数V根据给定动作x和目标动作A之间的距离将动作映射到强化.两者之间的距离越小,强化越大(即,强化与abs(A - x)成反比.但是,对于接近A的动作,值函数仅为非零(abs(A - x)较小)比如说epsilon)和其他地方的零.所以:
**V**正比于1 / abs(**A** - **x**)对abs(**A** - **x**) < epsilon,和
**V** = 0对abs(**A** - **x**) > epsilon.
并发症2:
我不确切地知道每一步采取了什么行动.我大致知道它们是什么,因此我知道它们属于x +/- sigma 范围,但不能将单个动作值与我收到的强化完全关联起来.
我想要解决的确切问题如下:我有一系列嘈杂的动作估计和精确的强化值(例如在试验1中我可能有~15-30的x和0的强化;在试验2我可能有x约为25-40,强化为0;在试验3中,x约为80-95,强化为0.6.)我想构建一个模型,该模型表示每个步骤后目标动作A最可能位置的估计值.,可能根据某些学习速率参数对新信息进行加权(因为确定性会随着样本的增加而增加).
artificial-intelligence machine-learning reinforcement-learning
我试图在连续状态(昏暗= 20)和离散动作(3种可能的动作)的环境中找到最优策略.并且有一个特定的时刻:对于最优政策,一个动作(称之为"动作0")应该比其他两个更频繁地选择(大约100倍以上;这两个动作更有风险).
我尝试过使用NN值函数逼近的Q学习.结果相当糟糕:NN学会总是选择"动作0".我认为政策梯度方法(关于NN权重)可能有所帮助,但不了解如何在离散行动中使用它们.
你能给一些建议尝试一下吗?(也许算法,论文要读).当状态空间是连续的并且动作空间是离散的时,最先进的RL算法是什么?
谢谢.
我已按照中所述实施了Q-Learning,
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
为了约 Q(S,A)我使用如下的神经网络结构,
在每次学习迭代时使用以下公式,

我计算一个Q-Target值然后使用计算错误,
error = QTarget - LastQValueReturnedFromNN
Run Code Online (Sandbox Code Playgroud)
然后通过神经网络传播错误.
Q1,我是在正确的轨道上吗?我已经看到一些文章为每个动作实现一个具有一个输出神经元的NN.
Q2,我的奖励函数返回介于-1和1之间的数字.当激活函数为sigmoid(0 1)时,可以返回介于-1和1之间的数字
问题3,根据我对这种方法的理解,给定足够的训练实例,应该隔离它以找到最佳策略?当训练XOR时,它有时会在2k次迭代后学习它,有时甚至在40k 50k迭代之后也不会学习.
artificial-intelligence machine-learning reinforcement-learning neural-network q-learning
我想创建一个在python中使用强化学习训练的神经网络.
X -> [ANN] -> yEstimate -> score! -> (repeat until weights are optimised)
Run Code Online (Sandbox Code Playgroud)
我使用的那一刻Scikit学习,但似乎并没有被所有的神经网络的东西试图以适应yEstimate到yTarget.
是否存在scikit-learn的秘密,或者是否有其他我不了解的图书馆来实现这一目标?
谢谢!
最近我一直在阅读很多关于神经网络Q学习的内容,并考虑更新电厂锅炉中现有的旧优化系统,该锅炉由简单的前馈神经网络组成,近似于许多感应输入的输出.然后输出链接到基于线性模型的控制器,该控制器以某种方式再次输出最佳动作,因此整个模型可以收敛到期望的目标.
识别线性模型是一项耗费任务.我考虑用Q函数的神经网络近似来将整个事物翻新为无模型Q学习.我画了一张图表,问你我是否在正确的轨道上.
我的问题:如果你认为我理解这个概念,我的训练集应该是State Features vectors从一方组成的Q_target - Q_current(这里我假设有越来越多的奖励),以便迫使整个模型朝向目标,或者我错过了什么?
注意:该图显示了上部旧系统与下部建议更改之间的比较.
编辑:状态神经网络是否保证体验重播?
python artificial-intelligence machine-learning reinforcement-learning tensorflow
我想知道什么时候人们会决定诉诸强化学习来解决以前通过数学优化方法解决的问题——想想旅行商问题或工作调度或出租车共享问题。
由于强化学习旨在以与运筹学尝试优化某个成本函数的结果类似的方式最小化/最大化某个成本/奖励函数,我认为可以解决两方之一可以解决的问题由另一个。然而,情况是这样吗?两者之间有取舍吗?关于上述问题,我还没有真正看到对 RL 进行的太多研究,但我可能会弄错。
如果有人有任何见解,他们将不胜感激!!
optimization mathematical-optimization reinforcement-learning operations-research
我正在健身房CartPole-v0环境中实现价值迭代,并希望将代理动作的视频记录在视频文件中。我一直在尝试使用 Monitor 包装器来实现这一点,但它会在录制目录中生成 json 文件而不是视频文件。这是我的代码:
env = gym.make('FrozenLake-v0')
env = gym.wrappers.Monitor(env, 'recording', force=True)
env.seed(0)
optimalValue = valueIteration(env)
st = time.time()
policy = cal_policy(optimalValue)
policy_score = evaluate_policy(env, policy)
et = time.time()
env.close()
print('Best score: %.2f Time: %4.4f sec' % (policy_score, et-st))
Run Code Online (Sandbox Code Playgroud)
我遵循了本教程,但不确定出了什么问题。我在谷歌上搜索了很多,但没有遇到任何有用的东西。
python machine-learning reinforcement-learning python-3.x openai-gym
我只是想执行这个简单的试用代码:
import gym
env = gym.make('SpaceInvaders-v0')
env.reset()
for _ in range(1000):
env.step(env.action_space.sample())
env.render('human')
env.close()
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
Traceback (most recent call last): File "C:\Users\91920\ML\ReinforcementLearning\space_invaders.py", line 2, in <module>
env = gym.make('SpaceInvaders-v0') File "C:\ProgramData\Anaconda3\lib\site-packages\gym\envs\registration.py", line 156, in make
return registry.make(id, **kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\gym\envs\registration.py", line 101, in make
env = spec.make(**kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\gym\envs\registration.py", line 72, in make
cls = load(self._entry_point) File "C:\ProgramData\Anaconda3\lib\site-packages\gym\envs\registration.py", line 17, in load
mod = importlib.import_module(mod_name) File "C:\ProgramData\Anaconda3\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 python 中进行强化学习。我使用的是 Tensorflow 2.1,我的机器有多个 GPU(带有 CUDA 10.2 驱动程序 440.59)。我正在使用 tf.device() 在我的 GPU 上分配操作。我没有使用 tf.distribute.Strategy。我正在构建我的模型:
with tf.device(USE_GPU):
model = build_keras_Seq()
Run Code Online (Sandbox Code Playgroud)
其中 build_keras_Seq() 使用功能 AP 创建模型:
model = tf.keras.Model(inputs=inputs, outputs=outputs)
Run Code Online (Sandbox Code Playgroud)
我所有的输入都是与我的模型在同一 GPU 上分配的张量。
with tf.device(USE_GPU):
self.images_gpu = tf.zeros(shape=(1,IMG_HEIGHT,IMG_WIDTH), dtype=tf.int16) # (165, 160, 1)
self.actions_gpu = tf.zeros(shape=(1,), dtype=tf.int16)
self.rewards_gpu = tf.zeros(shape=(1,), dtype=tf.int16)
self.dones_gpu = tf.zeros(shape=(1,), dtype=tf.int16)
Run Code Online (Sandbox Code Playgroud)
我的目标是由 @tf.function 计算的,它实现了预期的 SARSA 并在 GPU 上返回一个张量:
target_train is on device: /job:localhost/replica:0/task:0/device:GPU:1
Run Code Online (Sandbox Code Playgroud)
当我调用model.fit时,似乎在CPU上执行了很多操作(见下文)导致性能不佳。我的理解是张量在被发送到 GPU 之前被移回 CPU。关于如何防止这种行为并将张量直接从 GPU 馈送到同一 GPU 上托管的模型的任何想法?
2020-02-23 09:49:32.100259: I tensorflow/core/common_runtime/eager/execute.cc:573] Executing op …Run Code Online (Sandbox Code Playgroud) python ×4
openai-gym ×2
gpu ×1
optimization ×1
python-3.x ×1
q-learning ×1
scikit-learn ×1
tensorflow ×1
tf.keras ×1