【发布时间】:2022-01-18 13:47:19
【问题描述】:
首先:此问题不寻求有关强化学习 (RL) 的帮助,RL 仅用作示例。
Keras 文档包含一个使用 Gradient Tape 的示例 actor-critic reinforcement learning implementation。基本上,他们创建了一个具有两个独立输出的模型:一个用于演员(n 动作),另一个用于评论家(1 奖励)。以下几行描述了反向传播过程(在代码示例中的某处找到):
# Backpropagation
loss_value = sum(actor_losses) + sum(critic_losses)
grads = tape.gradient(loss_value, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
尽管actor和critic loss的计算方式不同,但它们将这两个loss相加得到用于计算梯度的最终loss值。
在看这个代码示例时,我想到了一个问题:有没有一种方法可以计算输出层相对于相应损失的梯度,即根据以下公式计算第一个n 输出节点的梯度演员损失和使用批评损失的最后一个输出节点的梯度?据我了解,这比添加损失(不同!)和基于这种累积方法更新梯度要方便得多。你同意吗?
【问题讨论】:
标签: python tensorflow keras reinforcement-learning gradienttape