Keras 中损失函数的含义?
Meaning of Loss function in Keras?
我在python用keras做了一个神经网络,并不能真正理解损失函数的含义。
所以这里首先是一些一般信息:
我使用 classes 0-9 处理扑克牌手数据集,我用 OneHotEncoding 将其写为向量。我在最后一层使用了 softmax 激活,所以我的输出告诉我对于向量中的 10 个条目中的每一个,样本属于某个 class 的概率。例如:
我的真实输入是(0,1,0,0,0,0,0,0,0,0),表示class 1(从0-9表示从无牌到同花大顺),以及class 1 表示一对(如果你懂扑克的话)。
使用神经网络,它会得到类似 (0.4, 0.2, 0.1, 0.1, 0.2, 0,0,0,0,0) 的输出,这意味着我的样本有 40% 属于 class 0 , 20% 到 class 1 等等!
好的!我还使用二进制 cross_entropy 作为损失、准确度指标和 RMSprop-Optimizer。
当我使用来自 keras 的 mode.evaluate() 时,我得到了类似 0.16 的损失,我不知道如何解释这个。
这是否意味着我的预测平均偏离真实值 0.16?所以如果我对 class 0 的预测是 0.5,它也可能是 0.66 或 0.34?
或者我该如何解释?
请大家帮忙!
首先,根据您的问题定义,您有一个多 class 问题。因此,您应该使用 categorical_crossentropy。二进制 cross_entropy 用于双 class 问题或多标签 class化。
但一般损失函数的取值有一个相对的影响值。首先,您必须了解 cross_entropy 的含义。公式为:
在哪里
c 是观察 o 和
的正确class化
y 是二元指标(0 或 1),如果 class 标签 c 是观察 o 的正确 class 化并且 p 是 o 属于 class c 的预测概率。
对于二元交叉熵,M 等于 2。对于分类交叉熵,M>2。
因此,如果预测概率收敛到实际标签,则交叉熵减小:
现在让我们以您的示例为例,您有 10 个 classes,您的实际输入是:(0,1,0,0,0,0,0,0,0,0)。
如果你有0.16的损失,那就意味着
这意味着您的模型已将 0.85 分配给正确的标签。
因此,损失函数为您提供正确 class 化概率的对数。在 keras 中,损失是按整批计算的,它是特定批次中整个数据的正确 class 化概率的对数的平均值。如果您使用 evaluate
函数,则它是您正在评估的整个数据的正确 class 化概率的对数的平均值。
我在python用keras做了一个神经网络,并不能真正理解损失函数的含义。
所以这里首先是一些一般信息: 我使用 classes 0-9 处理扑克牌手数据集,我用 OneHotEncoding 将其写为向量。我在最后一层使用了 softmax 激活,所以我的输出告诉我对于向量中的 10 个条目中的每一个,样本属于某个 class 的概率。例如: 我的真实输入是(0,1,0,0,0,0,0,0,0,0),表示class 1(从0-9表示从无牌到同花大顺),以及class 1 表示一对(如果你懂扑克的话)。 使用神经网络,它会得到类似 (0.4, 0.2, 0.1, 0.1, 0.2, 0,0,0,0,0) 的输出,这意味着我的样本有 40% 属于 class 0 , 20% 到 class 1 等等!
好的!我还使用二进制 cross_entropy 作为损失、准确度指标和 RMSprop-Optimizer。 当我使用来自 keras 的 mode.evaluate() 时,我得到了类似 0.16 的损失,我不知道如何解释这个。 这是否意味着我的预测平均偏离真实值 0.16?所以如果我对 class 0 的预测是 0.5,它也可能是 0.66 或 0.34? 或者我该如何解释?
请大家帮忙!
首先,根据您的问题定义,您有一个多 class 问题。因此,您应该使用 categorical_crossentropy。二进制 cross_entropy 用于双 class 问题或多标签 class化。
但一般损失函数的取值有一个相对的影响值。首先,您必须了解 cross_entropy 的含义。公式为:
在哪里
c 是观察 o 和
的正确class化
y 是二元指标(0 或 1),如果 class 标签 c 是观察 o 的正确 class 化并且 p 是 o 属于 class c 的预测概率。
对于二元交叉熵,M 等于 2。对于分类交叉熵,M>2。
因此,如果预测概率收敛到实际标签,则交叉熵减小:
现在让我们以您的示例为例,您有 10 个 classes,您的实际输入是:(0,1,0,0,0,0,0,0,0,0)。
如果你有0.16的损失,那就意味着
因此,损失函数为您提供正确 class 化概率的对数。在 keras 中,损失是按整批计算的,它是特定批次中整个数据的正确 class 化概率的对数的平均值。如果您使用 evaluate
函数,则它是您正在评估的整个数据的正确 class 化概率的对数的平均值。