【问题标题】:What is loss exactly?究竟什么是损失?
【发布时间】:2017-02-06 06:48:12
【问题描述】:

我正在训练 tensorflow 的 im2txt 样本,它会输出损失:

INFO:tensorflow:global step 2174: loss = 3.6930 (15.83 sec/step)
INFO:tensorflow:global step 2175: loss = 3.6651 (15.52 sec/step)
INFO:tensorflow:global step 2176: loss = 3.5733 (18.25 sec/step)
INFO:tensorflow:global step 2177: loss = 3.1979 (18.87 sec/step)
INFO:tensorflow:global step 2178: loss = 2.9362 (15.99 sec/step)
INFO:tensorflow:global step 2179: loss = 3.6375 (15.65 sec/step)

什么是损失?它与 AI 正确执行的概率有什么关系(有公式吗)?通常可接受的损失是多少?

【问题讨论】:

    标签: tensorflow neural-network


    【解决方案1】:

    发件人:https://github.com/tensorflow/models/blob/master/im2txt/im2txt/show_and_tell_model.py

      losses = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=targets,
                                                              logits=logits)
      batch_loss = tf.div(tf.reduce_sum(tf.multiply(losses, weights)),
                          tf.reduce_sum(weights),
                          name="batch_loss")
    

    softmax 基本上是一个可派生的花哨的 max 函数(您可以在文档中查找确切的定义)。对于最大的激活,它将具有很高的价值。它可以有多个高激活,这将因所有错误的激活而受到惩罚。

    损失是您希望模型优化的东西。

    这通常意义不大,除非您已经训练了许多具有完全相同损失的相似模型。通常您会查看损失图以了解模型何时停止取得进展,以便您可以停止训练。还要记住,对于其他模型,您将希望在您可能想要优化的损失中添加其他内容(例如一些您想要平均为 1.0 的输入权重),这会增加损失,但这并不意味着模型更差。

    如果您想弄清楚您的模型是好是坏,请为您关心的事情添加指标。显而易见的事情是精度/召回/准确性。您已经可以使用预定义的指标 (streaming_accuracy)。或者,您可以计算指标并将其添加为摘要,但这不会从 eval 数据集中获得。

    另一种选择是设置一个明显不好(恒定或随机)的模型,并将该模型的损失与您得到的进行比较。

    【讨论】:

      【解决方案2】:

      损失是优化算法试图最小化的目标函数。

      一般来说,您希望损失函数能够衡量您的模型有多糟糕。但是因为优化算法需要一些数学属性才能很好地工作,所以您不能选择精度和召回等通常的东西(您需要相对于模型参数可微分的连续函数)。

      对于分类任务,softmax 是常见的选择。它是argmax 的流畅且表现良好的版本,用于选择网络激活度最高的类。通过回归,通常的 mean squared error 可以正常工作。

      【讨论】:

        猜你喜欢
        • 2019-08-17
        • 1970-01-01
        • 2014-10-28
        • 2012-08-27
        • 2010-11-12
        • 2011-03-18
        • 2011-01-22
        • 1970-01-01
        相关资源
        最近更新 更多