强化学习State和Observation的区别

State和 Observation区别:

State是 Environment的私有表达,我们往往不知道不会直接到的。在 MDP 中,当前状态State(Markov state)包含了所有历史信息,即将来只和现在有关,与过去无关,因为现在状态包含了所有历史信息。举个例子,在一个遵循牛顿第二定律的世界里,我们随意抛出一个小球,某一时刻 t知道了小球的速度和加速度,那么 t之后的小球的位置都可以由当前状态,根据牛顿第二定律计算出来。再举一个夸张的例子,如果宇宙大爆炸时奇点的状态已知,那么以后的所有状态就已经确定,包括人类进化、我写这篇文章和你在阅读这篇文章都是可以根据那一状态推断出来的。当然这只是理想状况,现实往往不会那么简单(因为这只是马尔科夫的一个假设)。只有满足这样条件的状态才叫做马尔科夫状态。即:

正是因为 State太过于复杂,我们往往可以需要一个对 Environment的观察来间接获得信息,因此就有了 Observation。不过 Observation是可以等于 State的,在游戏中,一帧游戏画面完全可以代表当前状态,因此 ObservationState,此时叫做 Full Observability 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PyTorch是一个流行的深度学习框架,它提供了丰富的工具和库来支持强化学习任务。在PyTorch中进行强化学习,首先需要定义一个环境,然后使用神经网络模型作为智能体来与环境进行交互,并根据交互结果更新模型的参数。 以下是一个简单的PyTorch强化学习的示例代码: ```python import torch import torch.optim as optim import torch.nn as nn import gym # 定义神经网络模型 class QNetwork(nn.Module): def __init__(self, state_size, action_size): super(QNetwork, self).__init__() self.fc1 = nn.Linear(state_size, 64) self.fc2 = nn.Linear(64, 64) self.fc3 = nn.Linear(64, action_size) def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.fc3(x) return x # 定义强化学习算法 def reinforce(env, model, optimizer, gamma): state = env.reset() done = False while not done: state_tensor = torch.tensor(state, dtype=torch.float32) q_values = model(state_tensor) action = q_values.argmax().item() # 根据最大Q值选择动作 next_state, reward, done, _ = env.step(action) next_state_tensor = torch.tensor(next_state, dtype=torch.float32) next_q_values = model(next_state_tensor) max_next_q_value = next_q_values.max().item() target_q = reward + gamma * max_next_q_value # 奖励与下一个状态的最大Q值的乘积 q = q_values[action] loss = nn.MSELoss()(q, target_q) # 使用均方误作为损失函数 optimizer.zero_grad() loss.backward() optimizer.step() state = next_state # 创建环境和模型 env = gym.make('CartPole-v1') state_size = env.observation_space.shape[0] action_size = env.action_space.n model = QNetwork(state_size, action_size) # 定义优化器和训练参数 optimizer = optim.Adam(model.parameters(), lr=0.001) gamma = 0.99 # 训练模型 for episode in range(100): reinforce(env, model, optimizer, gamma) # 在环境中测试模型 state = env.reset() done = False while not done: state_tensor = torch.tensor(state, dtype=torch.float32) q_values = model(state_tensor) action = q_values.argmax().item() next_state, _, done, _ = env.step(action) state = next_state env.close() ``` 请注意,这只是一个简单的示例代码,实际的强化学习应用可能需要更复杂的算法和技术。强化学习是一个非常广阔且活跃的研究领域,如果你有特定的问题或任务,请提供更多的细节,我将尽力提供更准确和详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值