Nlp 损失函数负对数似然给出损失,尽管精度很高

Nlp 损失函数负对数似然给出损失,尽管精度很高,nlp,pytorch,loss,log-likelihood,sequence-to-sequence,Nlp,Pytorch,Loss,Log Likelihood,Sequence To Sequence,我正在调试一个序列到序列的模型,并有意尝试完美地拟合一个约200个样本的小数据集(长度在5-50之间的句子对)。我在pytorch中使用负对数似然损失。我得到的损失很低(~1e^-5),但同一数据集的准确率只有33% 我还对3个样本进行了模型训练,获得了100%的准确率,但在训练过程中我有所损失。我的印象是,如果预测值和目标值之间存在不匹配,负对数似然仅给出损失(损失在~1e^-5的同一区域内) 我的代码中可能有bug吗?您的代码中没有bug。 在深网中,事情通常是通过网络预测逻辑(即日志可能性

我正在调试一个序列到序列的模型,并有意尝试完美地拟合一个约200个样本的小数据集(长度在5-50之间的句子对)。我在pytorch中使用负对数似然损失。我得到的损失很低(~1e^-5),但同一数据集的准确率只有33%

我还对3个样本进行了模型训练,获得了100%的准确率,但在训练过程中我有所损失。我的印象是,如果预测值和目标值之间存在不匹配,负对数似然仅给出损失(损失在~1e^-5的同一区域内)


我的代码中可能有bug吗?

您的代码中没有bug。
在深网中,事情通常是通过网络预测逻辑(即日志可能性)。然后使用soft max(或sigmoid函数)将这些logit转换为概率。交叉熵最终根据预测的概率进行评估。

这种方法的优点是数值稳定,易于训练。另一方面,由于soft max,您的预测永远不会有“完美”的0/1概率:也就是说,即使您的网络具有完美的准确性,它也不会将概率1分配给正确的预测,而是“接近1”。因此,损失总是正面的(尽管很小)。

谢谢,我理解。在200个样本的训练中,低损耗/低精度情况如何?这难道不寻常吗?@headache666 200数据集中有多少标签?标签是如何分布的?我试图将自然语言的话语解析为与lambda演算非常相似的意义表示。输入词汇表约有130个单词,输出词汇表约有70个标记。我在这里给出了关于我的问题的更多细节:我使用这个数据集:我猜括号和标识符在目标数据集中的比例过高。同样的目标意义表示与数据集中的多个输入句子成对出现。