Tensorflow tf.loss.mean_squared_误差与负目标

Tensorflow tf.loss.mean_squared_误差与负目标,tensorflow,neural-network,reinforcement-learning,loss-function,q-learning,Tensorflow,Neural Network,Reinforcement Learning,Loss Function,Q Learning,我正在使用Q学习,我想知道如果我有一个奖励函数,可以给出负的奖励,我是否可以使用tf.loss.mean_squared_error loss计算函数 因为,例如,如果我有以下Q值作为网络的输出:(0.1,0.2,1),我计算出我的真实Q值应该是(0.1,-5,1),如果我使用均方误差函数,第二个Q值的损失将变为正值,我错了吗?由于平方运算,因此梯度下降不会基于正确的损失?是的,您可以安全地使用均方误差(MSE)损失函数,即使奖励函数可以给出负值 正如您所评论的,由于平方运算,MSE函数始终为正

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


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

是的,您可以安全地使用均方误差(MSE)损失函数,即使奖励函数可以给出负值

正如您所评论的,由于平方运算,MSE函数始终为正。然而,这是一个理想的效果

例如,在一个简单的线性回归中。如果误差为正或负,则所有损失函数值均为正。这就让位于一个具有全局最小值的凸损失函数,其中梯度下降可以完美地工作

以下模式(来自文章)说明了梯度下降过程,这可能有助于更好地理解我的意思:

是的,它工作得很好

您应该关注
mse
成本函数

mse = tf.reduce_mean(tf.square((x*w+b)-y))
成本函数计算为差异的平方。这意味着总是
-
值变为
+

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

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

斜率由导数计算

mse
函数的导数之后,可以看到下面的公式


因此,您可以看到W的方向,即如果
((W*x-y)*x)>0,W将向左移动,如果不是,W将向右移动。

谢谢您的回答!但有一件事我仍然不明白,如果MSE损失计算实际上是正向的,即使实际值和目标值之间的差是负的,假设我的实际Q值=1,目标值Q等于-5,那么梯度下降如何正确地在好的方向上最小化损失?因为1和-5之间的平方差与1和7之间的平方差相同,不是吗?也许我误解了什么?欢迎,现在一切都清楚了,所以我不打算更新答案。好的,我明白了!谢谢你花了这么多时间来回答这个问题!