栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

优化精度而不是Keras模型中的损失

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

优化精度而不是Keras模型中的损失

首先,使用您作为示例的代码片段:

model.compile(loss='mean_squared_error', optimizer='sgd', metrics='acc')

实际上是 无效的 (尽管Keras不会产生任何错误或警告),原因很简单:MSE是 回归 问题的有效损失,而 回归
问题的准确性是毫无意义的(仅对 分类
问题有意义,而MSE并非如此)有效的损失函数)。有关详细信息(包括代码示例),请参见以下内容中的答案:当损失为均方误差(MSE)时,哪个函数定义Keras的准确性?; 对于scikit-
learn中类似的情况,请在此线程中查看自己的答案。

继续回答您的一般问题:在 回归 设置中,通常我们不需要单独的性能指标,为此,我们通常只使用损失函数本身,即,您使用的示例的正确代码将简单地是

model.compile(loss='mean_squared_error', optimizer='sgd')

没有任何

metrics
指定。我们当然可以使用
metrics='mse'
,但这是多余的,并不是真正需要的。有时人们使用类似

model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['mse','mae'])

即根据MSE损失优化模型,但除MSE之外,还以平均绝对误差(MAE)展示其性能。

现在,您的问题是:

在训练过程中,模型的重点是否应该最大化acc(或最小化1 / acc)而不是最小化MSE?

至少在原则上确实是有效的(保留用于MSE的参考),但仅适用于 分类
问题,在这种情况下,粗略地说,情况如下:我们不能使用庞大的凸优化方法库来直接最大化准确性,因为准确性不是微分函数;因此,我们需要代理可区分函数以用作损失。适用于分类问题的这种损失函数最常见的例子是交叉熵。

毫不奇怪,尽管上下文略有不同,但您的问题会不时出现。例如查看自己的答案

  • 成本函数训练目标与准确性目标
  • 定位特定指标以优化张量流

对于二进制分类的特殊情况下的损失和准确性之间的相互作用,您可能会在以下有用的线程中找到我的答案:

  • 损失和准确性-这些学习曲线是否合理?
  • Keras如何评估准确性?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号