【问题标题】:Tensorflow seq2seq - confidence of replyTensorflow seq2seq - 回复的信心
【发布时间】:2016-04-18 09:27:49
【问题描述】:

我想知道在 Tensorflow 的 seq2seq 框架中是否有一种方法可以让我知道是否可以以 x% 的置信度给出对输入的回复。

以下示例:

我有hi 作为对hello 的回复。它工作正常。我还有很多其他训练有素的句子。但是,假设我输入了一些像这样的垃圾 - sdjshj sdjk oiqwe qw。 Seq2seq 仍然试图给出回应。我理解它是这样设计的,但我想知道是否有一种方法可以说框架无法自信地回答这个问题。或者没有训练过这样的词。

这会很有帮助。

【问题讨论】:

    标签: artificial-intelligence bots tensorflow deep-learning


    【解决方案1】:

    在输出 logits 上使用逻辑函数(或 sigmoid): 因为logit函数基本上是sigmoid函数的反函数:

    Logit 函数:

    Sigmoid 函数:

    你可以看到它是相似的。在张量流中。有 sigmoid 函数,但我发现当你只编写 sigmoid 函数时程序会更快:

    如果你使用 sigmoid 函数。您将获得一个从 0 到 1 的值,这是您正在寻找的置信度。更多信息可以在这里找到:

    https://en.wikipedia.org/wiki/Sigmoid_function

    https://en.wikipedia.org/wiki/Logit

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 感谢您的提示,已修复。
    • 这是否提供了对整个输出的信心,或者只是最后一个标记?我猜@spiralarchitect 希望它反映整个输出的信心。
    • 所以你基本上把整个logits放到了sigmoid函数中。在这种情况下,它将返回所有类的置信度(您可以为其设置阈值)。如果你使用 argmax 函数,那么你只会得到一个最高值
    • 但是,要理解的一点是使用 sigmoid 函数,softmax loss 的阈值就像作弊一样。因为softmax loss会考虑其他标签的预测来给出预测。因此,所有置信度输出加起来为 100%。如果可以,您应该选择置信度最高的输出。
    【解决方案2】:

    我认为seq2seq_model.model.stop返回的average perplexity是信心,越小越好。但人们可能很难说出一个适当的阈值。

    【讨论】:

    • 我想你的意思是seq2seq_model.model.step。我试过了。对于经过训练的和垃圾输入,它始终为 0.0。也许通过语料库较少因为它可以正常工作?我有大约 1000 条训练线。
    • 检查translate.py 中的贪婪解码器,了解它是如何提取权重的。
    • 1000 行对于训练这种类型的模型来说非常小。
    • @AlexandruCeausu 可能是对的。似乎只是在训练中返回的困惑。
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多