Rasa NLU:置信度分数计算

Piy*_*ija 5 python metrics tensorflow rasa-nlu

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

\n\n

我一直致力于使用张量流嵌入进行意图分类任务。一旦我的模型经过训练并解析新/测试数据,我就会收到一个置信度分数以及每个可能的意图。但我几乎不知道这个置信度分数实际上代表什么。

\n\n

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

\n\n

快速查看代码后我认为它是在 \xe2\x80\x9cembedding_intent_classifier.py\xe2\x80\x9d 文件中的 \xe2\x80\x9c_tf_sim\xe2\x80\x9d 函数中计算的(相关代码段如下)

\n\n

有人可以确认/澄清它是如何工作的或者置信度分数在这里到底意味着什么吗?

\n\n
    def _tf_sim(self, a, b):\n    """Define similarity"""\n\n    if self.similarity_type == \'cosine\':\n        a = tf.nn.l2_normalize(a, -1)\n        b = tf.nn.l2_normalize(b, -1)\n\n    if self.similarity_type == \'cosine\' or self.similarity_type == \'inner\':\n        sim = tf.reduce_sum(tf.expand_dims(a, 1) * b, -1)\n\n        # similarity between intent embeddings\n        sim_emb = tf.reduce_sum(b[:, 0:1, :] * b[:, 1:, :], -1)\n\n        return sim, sim_emb\n    else:\n        raise ValueError("Wrong similarity type {}, "\n                         "should be \'cosine\' or \'inner\'"\n                         "".format(self.similarity_type))\n
Run Code Online (Sandbox Code Playgroud)\n

Tob*_*ias 3

意图分类器intent_classifier_tensorflow_embedding文档)是一种基于Facebook 的StarSpace 论文的方法。

在这种方法中,意图示例及其标签都嵌入到同一多维空间中。因此,意图特征向量和这句话的标签分别乘以一个权重矩阵,将它们映射到一个 n 维空间。在训练过程中,调整这两个权重矩阵,使得映射的意图向量与其标签的映射向量相似,并与其他标签尽可能不同。因此,使用余弦相似度来测量相似度。这种相似性是1指对于其他角度,向量是否指向相同的方向< 1