tensorflow - tf.losses.mean_squared_error 目标为负

标签 tensorflow neural-network reinforcement-learning loss-function q-learning

我正在使用 Q 学习,我想知道如果我有一个可以给出负奖励的奖励函数,我是否可以使用 tf.losses.mean_squared_error 损失计算函数。

因为如果我有以下 Q 值作为我的网络的输出:(0.1, 0.2, 1),并且我计算出我的真实 Q 值应该是 (0.1, -5, 1),如果我使用mean_squared_error 函数第二个 Q 值的损失将为正,我错了吗?因为平方运算所以梯度下降不会基于正确的损失?

最佳答案

是的,效果很好。

您应该关注mse成本函数。

mse = tf.reduce_mean(tf.square((x*w+b)-y))

成本函数计算差值的平方。这意味着始终 -值变为+ .

而且,你是对的。
7-15+ -1成本与 36 相同。

为了更好地理解梯度下降,您需要知道如何最小化 mse 。 从下图中,您可以看到当前mse通过x*w+b .
此时,梯度下降得到一个斜率来决定w改变的方向。

enter image description here

斜率由导数计算得出。

enter image description here

mse求导后可以看到下面的公式功能。

enter image description here

所以,你可以看到W的方向,如果((w*x-y)*x) > 0,W将向左移动。如果没有,将移至右侧。

关于tensorflow - tf.losses.mean_squared_error 目标为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56270744/

相关文章:

python - 尝试使用 Anaconda-navigator 安装 Tensorflow 但在导航器中找不到该包

python - 数据嘈杂时如何有效衡量神经网络的性能

machine-learning - 训练过程中出现Nans的常见原因

python - Pytorch 运行时错误 : element 0 of tensors does not require grad and does not have a grad_fn

machine-learning - 强化学习文献中的 "soft"是什么意思?

python - 如何在 TensorFlow 中使用我自己的数据?

javascript - 在 tensorflow.js 中设置权重的函数初始值设定项

python - 如何使用 python 中的枚举将值放入列表中?

Python:Pybrain 包中的 train() 方法返回什么?

python - 观察意义 - OpenAI Gym