我应该在LSTM中使用哪种损耗功能以及原因



我尝试逐步了解Keras和LSTMS。现在,我在那里构建了一个lstm,输入是一个句子,输出是五个值的数组,每个值可以为0或1。

示例:输入句子:"我讨厌饼干"输出示例:[0,0,1,0,1]

为此,我正在使用keras库。

现在我不确定我应该使用哪种损失功能。现在,我只知道两个预定义的损失功能好一些,这似乎对我的例子并不好:

二进制交叉熵:如果我的输出仅为0或1,则很好分类交叉熵:如果我有一个数组的输出,一个1,所有其他值为0。

对于我的例子,这两个功能都没有任何意义。您会使用什么,为什么?

编辑

另一个问题:您将在Keras中使用哪个激活功能?

跨熵上的底漆是横向熵损失或对数损失,可以测量分类模型的性能,其输出是0到1的概率值。

跨透镜损失随着预测的概率与实际标签的分歧而增加。因此,当实际观察标签为1时,预测概率为.012是不好的,并且会导致高损耗值。

完美的模型将具有0。对于LSTM模型,您可能需要或不需要此损耗功能。这是一个更详细地回答您的问题的链接。

此链接应该让您了解跨渗透性的作用以及何时是使用它的好时机。激活功能在实验的基础上使用。KERA中有很多激活功能,您可以尝试使用这些功能。

请参考YouTube和此博客上的Stanford视频,这两者都会为您提供对如何选择损失功能的基本了解。

祝你好运!

您需要使用logistic激活。这将每个logit在0到1之间的推动,这代表该类别的概率。

然后使用categorical cross entropy。这不会使您的模型成为单个类分类器,因为您使用的是Logistic激活而不是SoftMax激活。

作为经验法则:

  • logistic激活将值在0到1
  • 之间
  • SoftMax将值推到0到1之间,并使它们成为有效的概率分布(总和至1)
  • 交叉熵计算任何类型的分布之间的差异。

我发现了一个非常好的链接,解释了最好的方法是使用" binary_crossentropy"。

原因是数组中的每个值都可以为0或1。因此,我们有一个二进制问题。

我也尝试过。借助我的数据集,我能够使用二进制交叉熵获得92%的精度。对于分类的横熵,我刚刚获得81%的精度。

编辑

我忘了添加链接。多个输入/输出模型的良好解释以及要使用的损失函数:

https://towardsdatascience.com/deep-learning-which-loss-and-activation-functions-should-i-is-i-ac02f1c56aa8

涉及深度学习均值错误的回归问题,MSE是最喜欢的损失函数,但是当涉及到分类问题时,您希望输出为1或0错误的十字二进制熵是可取的

最新更新