ОБНОВЛЕНИЕ 2020/11/01: доступен бесплатный тарифный план Botium! С Botium Box Mini вы сможете:
- использовать несколько технологий чат-ботов
- настроить автоматизацию тестирования за несколько минут
- наслаждайтесь новым улучшенным пользовательским интерфейсом
- получить преимущества размещенного бесплатного сервиса
Что такое матрица неточностей? Как создать и прочитать матрицу неточностей? Как рассчитать точность, отзывчивость и F1-Score для вашего движка NLU?
Эта серия статей представляет собой введение в важные показатели качества для вашего движка NLU и данных обучения вашего чат-бота. Мы сосредоточимся на практическом использовании представленных метрик, а не на математической и статистической подоплеке - для этого я добавлю ссылки на другие статьи.
Это часть 1 из серии статей Метрики качества данных обучения NLU / чат-ботов.
Для этой серии статей вы должны иметь представление о том, что такое NLU и NLP, а также о задействованном словаре (намерение, сущность, высказывание) и концепциях (разрешение намерений, уверенность в намерениях, примеры пользователей).
Почему важны показатели качества для NLU?
При обучении движка NLU для чат-бота всегда используется один и тот же подход:
- Вы пометили доступные обучающие данные (помеченные означают: вы знаете, какое намерение должно разрешить высказывание)
- Вы загружаете данные обучения в свой движок NLU
- Вы подтверждаете результат обучения
- Уточните данные обучения и повторяйте до тех пор, пока не будете удовлетворены.
Для шага 2 выбран инструмент Botium для автоматизации тренировочного процесса.
Для шага 3 одним из подходов могло бы быть выполнение некоторых ручных или автоматизированных тестов на движке NLU со специальным набором тестов, не используемым для обучения. Основной вопрос: оказал ли шаг 4, уточнение данных обучения, положительное или отрицательное влияние на производительность NLU? Сделал ли он мой NLU лучше или хуже в разрешении намерений?
Вы можете спросить, почему уточнение обучающих данных может иметь негативные последствия? Потому что изменение пользовательских примеров для намерений может и будет влиять на разрешение намерений и уверенность в намерениях с аналогичными пользовательскими примерами.
Даже при работе с небольшим и средним проектом чат-бота с 30 намерениями и 70 пользовательскими примерами для каждого намерения существуют тысячи результатов тестов, которые необходимо проверить и сравнить с предыдущими циклами обучения, что невозможно, если полагаться на быстрые циклы обратной связи. Нам нужно довольно небольшое количество сопоставимых чисел (или показателей) - в лучшем случае ровно одно число - чтобы рассказать нам об общей производительности NLU и некоторых других числах. сообщая нам горячие точки, чтобы мы обратили внимание. Одним предложением:
Метрики качества позволяют сравнивать циклы обучения NLU и указывать на области, представляющие интерес.
Матрица замешательства
Матрица неточностей показывает и обзор прогнозируемого намерения и ожидаемого намерения. Он отвечает на такие вопросы, как «При отправке пользовательского примера X я ожидаю, что NLU предскажет намерение Y, что он на самом деле предсказал?».
Ожидаемые намерения отображаются в виде строк, прогнозируемые намерения - в виде столбцов. Примеры пользователей отправляются в механизм NLU, и значение ячейки для строки ожидаемого намерения и столбца прогнозируемого намерения увеличивается на 1. Таким образом, всякий раз, когда прогнозируемое и ожидаемое намерение совпадает, значение ячейки по диагонали увеличивается - это наши успешные тестовые случаи. Все остальные значения ячеек не по диагонали являются нашими неудачными тестовыми случаями.
Примеры
Вот небольшой отрывок из большой матрицы путаницы, рассчитанной для Сара, демо-бот Rasa:
Эта матрица позволяет вычитать такие утверждения:
- Существует 53 (52 + 1) пользовательских примера для подтверждения намерения. Но для одного из них NLU вместо этого предсказал намерение enter_data.
- NLU предсказал намерение ask_faq_platform для 21 (18 + 3) пользовательских примеров, но это ожидалось только в 18 из них, для остальных 3 ожидаемым намерением было contact_sales, так что предсказание было неверным.
- Для намерения ask_faq_platform существует 19 (18 + 1) пользовательских примеров, но только 18 из них были распознаны NLU.
- Для 38 пользовательских примеров намерение ask_howold было ожидаемым, и NLU предсказал его именно для этих 38 пользовательских примеров.
И из этих утверждений можно сделать несколько выводов:
- Интенты ask_howold и how_to_get_started обучены идеально
- Есть 3 пользовательских примера, в которых NLU предсказал ask_faq_platform, но тестовые данные ожидали намерения contact_sales - найдите 3 пользовательских примера и уточните данные обучения для них.
- enter_data намерение было предсказано для 3 (1 + 1 + 1) примеров пользователей, где ожидалось другое намерение. С другой стороны, существует 682 пользовательских примера, правильно идентифицированных как enter_data, поэтому компромисс для этого намерения приемлем.
Точность, отзывчивость и оценка F1
Приведенные выше утверждения логически безупречны, но не полностью интуитивно понятны.
- Как определить, нуждается ли пара намерений или намерений в доработке и дополнительном обучении?
- Как на самом деле сравнить общую производительность NLU с предыдущим тренировочным циклом?
- Как сравнить результативность наиболее важных намерений с предыдущим тренировочным циклом?
- Как определить, достаточно ли обучающих данных для производственного использования?
Именно здесь вступает в игру статистическая концепция точности и полноты, а показатель F1 представляет собой компромисс между ними.
Вы можете найти подробности в Википедии, эта статья даст лишь приблизительный обзор.
Точность
В приведенном выше примере NLU распознал намерение ask_faq_platform для 21 (18 + 3) пользовательских примеров. Для 3 из них ожидаемое намерение было другим намерением, поэтому 3 из 21 прогноза неверны. Точность составляет ~ 0,85 (18/21), количество правильных прогнозов для намерения ask_faq_platform делится на общее количество прогнозов для намерения ask_faq_platform.
Вопрос, на который отвечает показатель точности: сколько предсказаний намерения верны?
Напоминание / Чувствительность
В приведенном выше примере у нас есть 121 (1 + 117 + 3) пользовательских примера, поскольку мы ожидаем намерения contact_sales. NLU предсказал намерение contact_sales только для 117 примеров пользователей. Отзыв составляет ~ 0,97 (117/121), количество правильных прогнозов для намерения contact_sales делится на общее количество ожиданий для намерения contact_sales.
Вопрос, на который отвечает показатель отзыва: сколько намерений правильно предсказано?
Точность против отзыва - F1-Score
Хотя эти двое звучат примерно одинаково, это не так. Фактически, невозможно оценить производительность NLU только с помощью одного из этих двух показателей.
Опять же, из приведенного выше примера:
- Намерение contact_sales было предсказано 117 раз, и 117 из предсказаний верны. Уровень точности равен 1,0, идеально.
- Есть еще 4 пользовательских примера, для которых NLU предсказал другое намерение. Скорость отзыва составляет ~ 0,97, что неплохо, но не идеально.
Теоретически можно получить идеальную точность, сделав очень мало прогнозов для намерения (например, установив уровень достоверности очень высоким). Но скорость отзыва в этом случае резко снизится, поскольку NLU во многих случаях не делает прогнозов (или делает неверный прогноз).
С другой стороны, можно получить идеальную скорость отзыва для намерения, сопоставив КАЖДЫЙ пример пользователя с этим намерением. Точность будет очень низкой, чем.
Компромисс между отзывом и точностью называется F1-Score, который представляет собой среднее гармоническое значение между ними. Наиболее важно то, что F1-Score - это сопоставимая метрика для измерения воздействия обучения NLU. Практическое правило (с некоторыми исключениями):
Увеличение F1-Score означает увеличение производительности NLU, уменьшение F1-Score означает снижение производительности NLU в ваших тестовых данных.
F1-Score 0,95 обычно является хорошим значением, что означает, что механизм NLU довольно хорошо работает с вашими тестовыми данными.
F1-Score 1.0 означает, что все ваши тестовые данные идеально обрабатываются вашим NLU, идеальная производительность NLU. Это может быть приятно для регрессионного тестирования, но обычно это признак переобучения - тема для другой статьи.
Автоматический расчет точности / отзыва / оценки F1 и создание матрицы неточностей
Botium - это Selenium для чат-ботов, идеальный выбор для автоматизированного обучения и тестирования любого из поддерживаемых движков NLU:
- IBM Watson
- Google Dialogflow
- Microsoft LUIS
- Amazon Lex
- SAP Conversational AI
- Wit.ai
- Раса
- Ботпресс
- Пользовательские конечные точки HTTP / JSON
- И многое другое…
Botium Box записывает все тестовые данные и рассчитывает для вас важную аналитику НЛП.
Помимо матрицы недоразумений, включая отзыв, точность и оценку F1 (см. Снимки экрана в этой статье), вы также получаете полный список результатов теста, показывающий все ваши высказывания с ожидаемым и прогнозируемым намерением и уверенностью в простом списке Excel.
Проведите тест-драйв Botium Box сегодня - начните с бесплатной версии Mini Edition, мы будем рады услышать от вас, если вы сочтете ее полезной!
Ищем участников
Пожалуйста, примите участие в сообществе Botium, чтобы развивать чат-ботов! Внося свой вклад, вы помогаете повысить качество чат-ботов во всем мире, что приведет к увеличению признания конечных пользователей, что снова приведет к развитию вашего собственного чат-бота! Начать здесь: