tf.losses.mean_squared_error 负目标
tf.losses.mean_squared_error with negative target
我正在使用 Q 学习,我想知道如果我有一个可以给出负奖励的奖励函数,我是否可以使用 tf.losses.mean_squared_error 损失计算函数。
因为如果我有例如以下 Q 值作为网络的输出:(0.1, 0.2, 1),并且我计算出我的真实 Q 值应该是 (0.1, -5, 1),如果我使用 mean_squared_error 函数,第二个 Q 值的损失将为正,我错了吗?因为平方运算所以梯度下降不会基于正确的损失 ?
是的,即使奖励函数可以给出负值,您也可以安全地使用均方误差 (MSE) 损失函数。
正如您所评论的,由于平方运算,MSE 函数将始终为正。然而,这是一个理想的效果。
例如,考虑简单的线性回归。所有的损失函数值都是正的,独立于误差是正还是负。这让位于具有全局最小值的凸损失函数,其中梯度下降非常有效。
以下模式(来自Gradient Descent: All You Need to Know文章)说明了梯度下降过程,这可能有助于更好地理解我的意思:
是的,效果很好。
您应该关注 mse
成本函数。
mse = tf.reduce_mean(tf.square((x*w+b)-y))
成本函数计算差值的平方。这意味着总是 -
值变成 +
.
而且,你是对的。
7-1
和 5+ -1
与 36 的成本相同。
为了更好地理解梯度下降,你需要知道如何最小化mse
。
从下图中,您可以看到当前 mse
by x*w+b
.
此时Gradient descent得到一个斜率来决定w要改变的方向。
斜率是通过导数计算的。
mse
函数求导后可以看到如下公式。
所以,你可以看到W的方向,如果((w*x-y)*x) > 0
,W将向左移动,否则将向右移动。
我正在使用 Q 学习,我想知道如果我有一个可以给出负奖励的奖励函数,我是否可以使用 tf.losses.mean_squared_error 损失计算函数。
因为如果我有例如以下 Q 值作为网络的输出:(0.1, 0.2, 1),并且我计算出我的真实 Q 值应该是 (0.1, -5, 1),如果我使用 mean_squared_error 函数,第二个 Q 值的损失将为正,我错了吗?因为平方运算所以梯度下降不会基于正确的损失 ?
是的,即使奖励函数可以给出负值,您也可以安全地使用均方误差 (MSE) 损失函数。
正如您所评论的,由于平方运算,MSE 函数将始终为正。然而,这是一个理想的效果。
例如,考虑简单的线性回归。所有的损失函数值都是正的,独立于误差是正还是负。这让位于具有全局最小值的凸损失函数,其中梯度下降非常有效。
以下模式(来自Gradient Descent: All You Need to Know文章)说明了梯度下降过程,这可能有助于更好地理解我的意思:
是的,效果很好。
您应该关注 mse
成本函数。
mse = tf.reduce_mean(tf.square((x*w+b)-y))
成本函数计算差值的平方。这意味着总是 -
值变成 +
.
而且,你是对的。
7-1
和 5+ -1
与 36 的成本相同。
为了更好地理解梯度下降,你需要知道如何最小化mse
。
从下图中,您可以看到当前 mse
by x*w+b
.
此时Gradient descent得到一个斜率来决定w要改变的方向。
斜率是通过导数计算的。
mse
函数求导后可以看到如下公式。
所以,你可以看到W的方向,如果((w*x-y)*x) > 0
,W将向左移动,否则将向右移动。