我无法理解如何更新tic tac toe游戏的Q值.我读了所有这些,但我无法想象如何做到这一点.我读到Q值在游戏结束时更新,但我不明白,如果每个动作都有Q值?
artificial-intelligence machine-learning reinforcement-learning tic-tac-toe q-learning
我在YouTube上看到了有关遗传算法的有趣视频.
正如你在视频中看到的那样,机器人学会了战斗.
现在,我已经研究了一段时间的神经网络,我想开始学习遗传算法.这种方式结合了两者.
你如何结合遗传算法和神经网络来做到这一点?
还有一个人如何知道在这种情况下你用来反向传播和更新你的权重并训练网络的错误?而且您认为视频中的节目如何计算其适应度函数?我想突变肯定发生在视频节目中,但是交叉呢?
谢谢!
我想知道CartPole-v0OpenAI Gym 中观察的规范(https://gym.openai.com/)。
例如,在以下代码中输出observation. 一种观察就像[-0.061586 -0.75893141 0.05793238 1.15547541]我想知道数字的含义。我想以任何方式知道其他的规范,Environments例如MountainCar-v0,MsPacman-v0等等。
我试图阅读https://github.com/openai/gym,但我不知道。你能告诉我知道规格的方法吗?
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
for t in range(100):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
Run Code Online (Sandbox Code Playgroud)
(来自https://gym.openai.com/docs)
输出如下
[-0.061586 -0.75893141 0.05793238 1.15547541]
[-0.07676463 -0.95475889 0.08104189 1.46574644]
[-0.0958598 -1.15077434 0.11035682 1.78260485]
[-0.11887529 -0.95705275 0.14600892 1.5261692 …Run Code Online (Sandbox Code Playgroud) python machine-learning reinforcement-learning deep-learning openai-gym
我是强化学习的完全新手,并一直在寻找一个框架/模块,以轻松导航这个危险的地形.在我的搜索中,我遇到了两个模块keras-rl和OpenAI GYM.
我可以让他们两个在他们的WIKI上共享的示例上工作,但是它们带有预定义的环境,并且几乎没有关于如何设置我自己的自定义环境的信息.
如果有人能指出我的教程,或者只是向我解释如何设置非游戏环境,我真的很感激?
我正在研究这篇文章中的时间差异学习.这里TD(0)的更新规则对我来说很清楚,但是在TD(λ)中,我不明白在一次更新中如何更新所有先前状态的效用值.
以下是用于比较机器人更新的图表:
上图解释如下:
在TD(λ)中,由于合格性迹线,结果传播回所有先前的状态.
我的问题是,即使我们使用具有资格跟踪的以下更新规则,如何将信息传播到单个更新中的所有先前状态?
在单个更新中,我们只更新单个状态Ut(s)的实用程序,然后如何更新所有先前状态的实用程序?
编辑
根据答案,很明显,此更新适用于每一步,这就是传播信息的原因.如果是这种情况,那么它再次让我困惑,因为更新规则之间的唯一区别是资格跟踪.
因此,即使资格跟踪的值对于先前的状态不为零,在上述情况下delta的值将为零(因为最初的奖励和效用函数被初始化为0).那么以前的状态如何在第一次更新中获得除零以外的其他效用值?
同样在给定的python实现中,在单次迭代后给出以下输出:
[[ 0. 0.04595 0.1 0. ]
[ 0. 0. 0. 0. ]
[ 0. 0. 0. 0. ]]
Run Code Online (Sandbox Code Playgroud)
这里只更新了2个值而不是所有5个先前的状态,如图所示.我在这里缺少什么?
我想在笔记本中玩OpenAI体育馆,并且将体育馆内联渲染。
这是一个基本示例:
import matplotlib.pyplot as plt
import gym
from IPython import display
%matplotlib inline
env = gym.make('CartPole-v0')
env.reset()
for i in range(25):
plt.imshow(env.render(mode='rgb_array'))
display.display(plt.gcf())
display.clear_output(wait=True)
env.step(env.action_space.sample()) # take a random action
env.close()
Run Code Online (Sandbox Code Playgroud)
这行得通,我在笔记本中看到了健身房:
但!它还会打开一个交互式窗口,显示完全相同的内容。我不希望打开此窗口:
python reinforcement-learning python-3.x jupyter-notebook openai-gym
我根据 OpenAI Gym 框架创建了一个自定义环境;含step,reset,action,和reward功能。我的目标是在这个自定义环境上运行 OpenAI 基线。但在此之前,环境必须在 OpenAI 健身房注册。我想知道如何在 OpenAI 健身房注册自定义环境?另外,我是否应该修改 OpenAI 基线代码以包含此内容?
在这里,他们提到需要optim.zero_grad()在训练时将参数梯度归零。我的问题是:我也可以这样做吗net.zero_grad(),会产生同样的效果吗?还是有必要做 optim.zero_grad()。此外,如果我两者都做会发生什么?如果我什么都不做,那么梯度就会累积,但这究竟是什么意思?他们会被添加吗?换句话说,doingoptim.zero_grad()和net.zero_grad(). 我问是因为在这里,他们使用第 115 行net.zero_grad(),这是我第一次看到,这是强化学习算法的实现,其中必须特别小心梯度,因为有多个网络和梯度,所以我假设他们有理由这样做net.zero_grad()而不是optim.zero_grad()。
我用 Python 编写了一个小脚本来解决具有策略梯度的各种 Gym 环境。
import gym, os
import numpy as np
#create environment
env = gym.make('Cartpole-v0')
env.reset()
s_size = len(env.reset())
a_size = 2
#import my neural network code
os.chdir(r'C:\---\---\---\Python Code')
import RLPolicy
policy = RLPolicy.NeuralNetwork([s_size,a_size],learning_rate=0.000001,['softmax']) #a 3layer network might be ([s_size, 5, a_size],learning_rate=1,['tanh','softmax'])
#it supports the sigmoid activation function also
print(policy.weights)
DISCOUNT = 0.95 #parameter for discounting future rewards
#first step
action = policy.feedforward(env.reset)
state,reward,done,info = env.step(action)
for t in range(3000):
done = False
states = [] #lists for …Run Code Online (Sandbox Code Playgroud) python reinforcement-learning backpropagation policy-gradient-descent
我正在与 RL 代理合作,并试图复制本文的发现,其中他们基于 Gym 开放 AI 制作了一个自定义跑酷环境,但是当我尝试渲染这个环境时遇到了问题。
import numpy as np
import time
import gym
import TeachMyAgent.environments
env = gym.make('parametric-continuous-parkour-v0', agent_body_type='fish', movable_creepers=True)
env.set_environment(input_vector=np.zeros(3), water_level = 0.1)
env.reset()
while True:
_, _, d, _ = env.step(env.action_space.sample())
env.render(mode='human')
time.sleep(0.1)
c:\users\manu dwivedi\teachmyagent\TeachMyAgent\environments\envs\parametric_continuous_parkour.py in render(self, mode, draw_lidars)
462
463 def render(self, mode='human', draw_lidars=True):
--> 464 from gym.envs.classic_control import rendering
465 if self.viewer is None:
466 self.viewer = rendering.Viewer(RENDERING_VIEWER_W, RENDERING_VIEWER_H)
ImportError: cannot import name 'rendering' from 'gym.envs.classic_control' (C:\ProgramData\Anaconda3\envs\teachagent\lib\site-packages\gym\envs\classic_control\__init__.py)
[1]: https://github.com/flowersteam/TeachMyAgent
Run Code Online (Sandbox Code Playgroud)
我认为这可能是这个自定义环境以及作者决定渲染它的方式的问题,但是,当我尝试
from gym.envs.classic_control …Run Code Online (Sandbox Code Playgroud) openai-gym ×5
python ×4
keras ×1
keras-rl ×1
python-3.x ×1
pytorch ×1
q-learning ×1
tic-tac-toe ×1