Rasa NLU:置信度分数计算

Rasa NLU: Confidence Score Computation

我试图了解 rasa nlu(ver-0.12.3) 输出的置信度分数实际上是什么以及它们是如何计算的。

我一直在使用 tensorflow 嵌入进行意图分类任务。一旦我的模型经过训练并且我解析了 new/test 数据,我就会收到一个置信度分数以及每个可能的意图。但我几乎不知道这个置信度分数究竟代表什么。

如文档中所述,它不代表概率。经过对结果的一些观察,这似乎是一个多类型的评估,即对于单个文本输入,我可以获得具有高置信度分数的多个意图。

快速查看code后,我认为它是在“embedding_intent_classifier.py”文件中的“_tf_sim”函数中计算的(下面的相关代码段)

有人可以 confirm/clarify 了解它是如何工作的或者这里的置信度分数到底意味着什么吗?

    def _tf_sim(self, a, b):
    """Define similarity"""

    if self.similarity_type == 'cosine':
        a = tf.nn.l2_normalize(a, -1)
        b = tf.nn.l2_normalize(b, -1)

    if self.similarity_type == 'cosine' or self.similarity_type == 'inner':
        sim = tf.reduce_sum(tf.expand_dims(a, 1) * b, -1)

        # similarity between intent embeddings
        sim_emb = tf.reduce_sum(b[:, 0:1, :] * b[:, 1:, :], -1)

        return sim, sim_emb
    else:
        raise ValueError("Wrong similarity type {}, "
                         "should be 'cosine' or 'inner'"
                         "".format(self.similarity_type))

意图分类器 intent_classifier_tensorflow_embeddingdocs) is an approach based on the StarSpace paper 来自 Facebook。

在这种方法中,意图示例及其标签都嵌入到相同的多维 space 中。所以意图特征向量,和这句话的标签分别乘以一个权重矩阵,映射到一个n维的space。在训练期间调整这两个权重矩阵,使映射的意图向量与其标签的映射向量相似,并尽可能不同于其他标签。因此,使用 cosine similarity 来衡量相似度。如果向量指向同一方向,则此相似度为 1,对于其他角度 < 1