目标值为tf.losses.mean_squared_error的目标是

时间:2019-05-23 08:10:01

标签: 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值的损失将为正,对吗?由于采用平方运算,因此梯度下降将不会基于正确的损失?

2 个答案:

答案 0 :(得分:1)

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

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

例如,考虑简单的线性回归。如果误差为正或负,则所有损失函数值均为正。这为具有全局最小值的凸损失函数提供了空间,其中梯度下降可以完美地发挥作用。

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

enter image description here

答案 1 :(得分:1)

是的,效果很好。

您应该关注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会向左移动,否则,W会向右移动。