什么是损失?

Him*_*ors 8 neural-network 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)
Run Code Online (Sandbox Code Playgroud)

什么是损失?它如何与AI相关:正确执行的概率(是否存在公式)?什么是可接受的损失?

Sor*_*rin 6

来自: 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")
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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


vil*_*asv 5

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

一般来说,您希望损失函数能够衡量模型的糟糕程度。但是,由于优化算法需要一些数学属性才能正常工作,因此您无法选择精度和召回率等常用的东西(您需要相对于模型参数可微的连续函数)。

对于分类任务来说,softmax是一个常见的选择。它是 的平滑且表现良好的版本argmax,用于选择网络激活最高的类别。通过回归,通常的方法mean squared error就可以了。