首先:此问题不寻求有关强化学习 (RL) 的帮助,RL 仅用作示例。
Keras 文档包含一个使用Gradient Tape的示例演员评论家强化学习实现。基本上,他们创建了一个具有两个独立输出的模型:一个用于演员(动作),一个用于评论家(奖励)。以下几行描述了反向传播过程(在代码示例中的某处找到):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))
尽管演员和评论家损失的计算方式不同,但它们将这两个损失相加以获得用于计算梯度的最终损失值。
在看这个代码示例时,我想到了一个问题:有没有办法计算输出层相对于相应损失的梯度,即根据n
actor损失和梯度计算第一个输出节点的梯度使用评论家损失的最后一个输出节点?据我了解,这比添加损失(不同!)和基于这种累积方法更新梯度要方便得多。你同意吗?