我想在OpenAI CarRacing-v0环境中设置RL代理,但在此之前我想了解动作空间.在github上的代码中, 119行说:
self.action_space = spaces.Box( np.array([-1,0,0]), np.array([+1,+1,+1])) # steer, gas, brake
Run Code Online (Sandbox Code Playgroud)
我该如何阅读这一行?虽然我的问题是具体的,但CarRacing-v0我想了解spaces.Box()一般的符号
该小队挑战排名对F1和EM得分结果。有很多关于 F1 分数的信息(精确率和召回率的函数)。但是 EM 分数是多少?
machine-learning reinforcement-learning stanford-nlp deep-learning tensorflow
什么是进化计算?这是强化学习的方法吗?还是单独的机器学习方法?或许没有?
请引用用于回答此问题的参考文献.
artificial-intelligence machine-learning reinforcement-learning evolutionary-algorithm
是否有人知道算法的任何示例代码Ronald J. Williams在
A类梯度估计算法中提出用于神经网络中的强化学习
我见过这样的话:
策略定义学习代理在给定时间的行为方式.粗略地说,政策是从感知的环境状态到在这些状态下要采取的行动的映射.
但还是没有完全明白.强化学习的政策究竟是什么?
terminology machine-learning reinforcement-learning markov-decision-process
编辑:以下似乎也是如此FrozenLake-v0.请注意,我对简单的Q学习不感兴趣,因为我希望看到适用于连续观察空间的解决方案.
我最近创建了banana_gymOpenAI环境.方案如下:
你有一根香蕉.它必须在2天内出售,因为它在第3天会很糟糕.您可以选择价格x,但香蕉只会以概率出售
奖励为x - 1.如果第三天没有出售香蕉,则奖励为-1.(直觉:你为香蕉付了1欧元).因此,环境是非确定性的(随机的).
操作:您可以将价格设置为{0.00,0.10,0.20,...,2.00}中的任何值
观察:剩余时间(来源)
我计算了最优政策:
Opt at step 1: price 1.50 has value -0.26 (chance: 0.28)
Opt at step 2: price 1.10 has value -0.55 (chance: 0.41)
Run Code Online (Sandbox Code Playgroud)
这也符合我的直觉:首先尝试以更高的价格出售香蕉,因为如果你不卖它,你知道你还有另一种尝试.然后将价格降低到0.00以上.
我很确定这个是正确的,但为了完整起见
#!/usr/bin/env python
"""Calculate the optimal banana pricing policy."""
import math
import numpy as np
def main(total_time_steps, price_not_sold, chance_to_sell):
"""
Compare the optimal policy to a given policy.
Parameters
----------
total_time_steps : int
How often the agent may offer …Run Code Online (Sandbox Code Playgroud) python optimization reinforcement-learning openai-gym keras-rl
谢谢
请注意:我发现神经网络的NeuronDotNet库,我现在正在寻找RL库..
编辑:或Dot NET库
我读过的所有强化学习算法通常都应用于具有固定数量动作的单个代理.是否有任何强化学习算法用于在考虑可变数量的动作的情况下做出决定?例如,如何在玩家控制N名士兵的计算机游戏中应用RL算法,并且每名士兵根据其条件有随机数量的动作?你不能为全球决策者(即"将军")制定固定数量的行动,因为随着士兵的创建和杀戮,可用的行动会不断变化.而且你不能在士兵级别制定固定数量的行动,因为士兵的行动是基于其直接环境的条件.如果士兵看不到对手,那么它可能只能行走,而如果它看到10个对手,那么它有10个新的可能动作,攻击10个对手中的1个.
最近我研究了强化学习,有一个问题困扰着我,我无法找到答案:如何使用GPU有效地完成培训?据我所知,需要与环境保持持续的交互,这对我来说似乎是一个巨大的瓶颈,因为这个任务通常是非数学/不可并行化的.然而,例如Alpha Go使用多个TPU/GPU.那么他们是怎么做到的呢?
我正在研究一个旨在通过深度Q学习解决的问题。但是,问题在于,每个情节的培训时间都太长,大约需要83个小时。我们正在设想在100集之内解决问题。
因此,我们逐渐学习矩阵(100 * 10),并且在每个情节中,我们需要执行某些操作的100 * 10迭代。基本上,我们从1000个候选者的集合中选择一个候选者,将该候选者放入矩阵中,然后通过将整个矩阵作为输入来计算奖励函数:
中心的障碍是,每一步的奖励函数计算都非常昂贵,大约需要2分钟,并且每次我们更新矩阵中的一个条目时。
从长远来看,矩阵中的所有元素都是相互依赖的,因此,如果我理解正确的话,整个过程似乎不适合某些“分布式”系统。
有人可以阐明我们如何看待这里的潜在优化机会吗?喜欢一些额外的工程工作吗?任何建议和评论将不胜感激。谢谢。
========================更新了一些定义=================
0.初始阶段:
1.动作空间:
2.环境:
每一步我都会有一个更新的矩阵来学习。
oracle函数F返回的定量值范围为5000〜30000,值越高越好(F的一次计算大约需要120秒)。
此函数F将矩阵作为输入并执行非常昂贵的计算,并且返回一个定量值以指示到目前为止合成矩阵的质量。
此函数本质上用于衡量系统的某些性能,因此确实需要一些时间才能在每个步骤中计算奖励值。
3.情节:
说“我们正在计划在100集内解决它”,这只是一个经验估计。但至少不应少于100集。
4.约束
理想的是,就像我提到的那样,“矩阵中的所有元素长期相互依赖”,这就是为什么奖励函数F通过将整个矩阵作为输入而不是最新选择的元素来计算奖励。
实际上,通过在矩阵中添加越来越多的元素,奖励可以增加,也可以减少。
5.目标
合成矩阵应使oracle函数F返回大于25000的值。只要达到此目标,我都会终止学习步骤。
optimization machine-learning reinforcement-learning deep-learning
openai-gym ×2
optimization ×2
c# ×1
gpu ×1
keras-rl ×1
planning ×1
python ×1
stanford-nlp ×1
tensorflow ×1
terminology ×1