gpt4 book ai didi

python - Keras 中的策略梯度

转载 作者:IT老高 更新时间:2023-10-28 21:14:02 26 4
gpt4 key购买 nike

我一直在尝试使用“深度 Q 学习”构建一个模型,其中我有大量 Action (2908)。在使用标准 DQN 取得了一些有限的成功之后:(https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf),我决定做更多的研究,因为我认为 Action 空间太大而无法进行有效的探索。

然后我发现了这篇论文:https://arxiv.org/pdf/1512.07679.pdf他们使用 Actor -评论家模型和策略梯度,然后导致我:https://arxiv.org/pdf/1602.01783.pdf他们使用策略梯度来获得比整体 DQN 更好的结果。

我发现一些网站在 Keras 中实现了策略梯度,https://yanpanlau.github.io/2016/10/11/Torcs-Keras.htmlhttps://oshearesearch.com/index.php/2016/06/14/kerlym-a-deep-reinforcement-learning-toolbox-in-keras/但是我很困惑它们是如何实现的。在前者中(当我阅读论文时),似乎不是为参与者网络提供输入和输出对,而是为所有权重提供梯度,然后使用网络对其进行更新,而在后者中他们只是计算一个输入-输出对。

我是不是把自己弄糊涂了?我只是应该通过提供输入输出对并使用标准的“拟合”来训练网络,还是我必须做一些特别的事情?如果是后者,我该如何使用 Theano 后端呢? (以上示例使用 TensorFlow)。

最佳答案

TL;DR

  1. 了解如何使用 Keras.backend 实现自定义损失函数和渐变。您将需要它来实现更高级的算法,一旦掌握了它,它实际上会容易得多
  2. 使用 keras.backend 的一个 CartPole 示例可以是 https://gist.github.com/kkweon/c8d1caabaf7b43317bc8825c226045d2 (虽然它的后端使用了 Tensorflow,但如果不一样,应该非常相似)

问题

播放时,

代理需要一个策略,该策略基本上是将状态映射到策略的函数,该策略是每个 Action 的概率。因此,代理将根据其策略选择一个 Action 。

即策略 = f(state)

训练时,

Policy Gradient 没有损失函数。相反,它试图最大化奖励的预期返回。而且,我们需要计算 log(action_prob) * 优势的梯度

  1. 优势是奖励的函数。
    • 优势 = f(奖励)
  2. action_prob 是 states 和 action_taken 的函数。例如,我们需要知道我们采取了哪些行动,以便我们可以更新参数以增加/减少我们采取行动的概率。
    • action_prob = sum(policy * action_onehot) = f(states, action_taken)

我假设是这样的

  • 政策 = [0.1, 0.9]
  • action_onehot = action_taken = [0, 1]
  • 那么 action_prob = sum(policy * action_onehot) = 0.9

总结

我们需要两个函数

  • 更新函数:f(state, action_taken, reward)
  • 选择 Action 函数:f(state)

你已经知道它不像典型的分类问题那样容易实现,你可以只用 model.compile(...) -> model.fit(X, y)

然而,

  • 为了充分利用 Keras,您应该熟悉定义自定义损失函数和梯度。这与前一篇的作者所采用的方法基本相同。

  • 您应该阅读更多有关 Keras 功能 API 和 keras.backend 的文档

另外,策略梯度有很多种。

  • 前一种称为 DDPG,实际上与常规策略梯度有很大不同
  • 我看到的后一个是传统的 REINFORCE 策略梯度 (pg.py),它基于 Kapathy 的策略梯度示例。但它非常简单,例如它只假设一个 Action 。这就是为什么它可以使用 model.fit(...) 以某种方式实现。

引用文献

关于python - Keras 中的策略梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com