tensorflow - 具有负目标的 tf.losses.mean_squared_error
问题描述
我正在使用 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文章)说明了梯度下降过程,这可能有助于更好地理解我的意思:
推荐阅读
- python - Python - 创建切片元组
- java - 我可以像 CRON 作业一样安排 Java Spring Cache 在每个小时的顶部过期吗?
- python - How to view specific rows clustering within shap and scipy?
- wix - 如何使用 WiX 更新 GAC 文件夹中的程序集
- entity-framework-core - EFCore 3.1.4 中的 EFCore 5:FromSqlInterpolated() 和 IQueryable 的问题
- anaconda - conda env list 显示环境路径而不是名称
- c# - .net core 2.2在没有ControllerContext的日志中间件中获取动作和控制器名称
- c - 使用管道在 C 的子进程中更改使用 cat 命令输入的输入
- php - 使用 Do While 过程时使用 mysqli_data_seek 时出错
- python - Docker-compose 没有读取环境变量 COMPOSE_FILE