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))\nRun Code Online (Sandbox Code Playgroud)\n
意图分类器intent_classifier_tensorflow_embedding(文档)是一种基于Facebook 的StarSpace 论文的方法。
在这种方法中,意图示例及其标签都嵌入到同一多维空间中。因此,意图特征向量和这句话的标签分别乘以一个权重矩阵,将它们映射到一个 n 维空间。在训练过程中,调整这两个权重矩阵,使得映射的意图向量与其标签的映射向量相似,并与其他标签尽可能不同。因此,使用余弦相似度来测量相似度。这种相似性是1指对于其他角度,向量是否指向相同的方向< 1。