Я пытался понять, каков на самом деле показатель доверия, выведенный rasa nlu (ver-0.12.3), и как они вычисляются.
Я работал над задачей классификации намерений с вложением тензорного потока. Как только моя модель обучена, и я анализирую новые / тестовые данные, я получаю оценку достоверности вместе с каждым вероятным намерением. Но я почти не представляю, что на самом деле представляет этот показатель доверия.
Как упомянуто в документах, это не представляет вероятность. И после некоторого наблюдения за результатами это кажется оценкой типа «один-много», т. Е. Для одного ввода текста я могу получить несколько намерений с высокими показателями достоверности.
После быстрого просмотра кода я думаю, что он вычисляется в функции «_tf_sim» в файле «embedding_intent_classifier.py» (Соответствующий сегмент кода ниже)
Может кто-нибудь подтвердить / уточнить, как это работает или что именно здесь означает показатель доверия?
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))