Обучение и тестирование моделей¶
Запуск процесса обучения¶
Перед началом общения с ботом в чате необходимо его обучить. Время обучения зависит от вашей политики и количества историй, что может занять значительное время. Чтобы ускорить процесс и работать с подмножествами диалогов, вы можете выбрать одну или несколько групп историй для обучения только соответствующих им историй.
Шаги для выбора групп историй:¶
-
Выбор группы историй:
-
Нажмите на значок 👁️ (глаз) рядом с названием группы историй, который появляется при наведении курсора.
- При активации фокуса на группе историй обучение будет ограничено только этими историями.
-
Запуск обучения:
-
Нажмите на кнопку "Тренировать" для начала процесса обучения.
Обратите внимание, что время обучения зависит от политик и количества описаний функциональности. Фокусируясь на одной или нескольких группах историй, вы можете ускорить итерацию по диалогам и оптимизировать процесс обучения.
Тестирование модели классификатора NLU¶
Оценка понимания намерений¶
Оценка модели предоставляет совокупные показатели практической ценности созданной модели NLU-ассистента. Это необходимо для контроля "пробелов" в классификации намерений пользователей на этапе разработки.
Методы ручной оценки¶
Намерения, как корпус обучающих данных, создаются и заполняются на вкладке Тренировочные данные. После заполнения намерений и их значений возможна проверка и оценка их точности вручную.
Введите фразу от имени пользователя, и вы получите оценку в виде вероятности совпадения с одним из намерений вашего корпуса данных. В приведенном примере фраза с вероятностью 100% ассоциируется с намерением Приветствие. Если намерение отсутствует, через это поле можно создать новое и присвоить ему текущую фразу.
Более развернутую информацию для анализа можно получить на вкладке API. Это можно сделать удаленно с помощью HTTPS-запроса (форма генерируется динамически) при вводе проверяемой фразы. Здесь отображается весь спектр совпадений с существующими намерениями, проранжированных по убыванию вероятности совпадения. Это помогает понять причины неправильных ассоциаций, ведущих к ошибкам в диалогах.
Недостаток данного метода оценки эффективности модели NLU заключается в том, что при большом количестве намерений метод становится трудоемким и не дает ощутимых результатов. Он подходит для разбора исключительных случаев, требующих анализа при явном обнаружении ошибок.
Методы автоматизированной оценки¶
При разработке моделей машинного обучения рекомендуется выделять часть корпуса данных для оценки качества модели. То же самое рекомендуется делать и для моделей NLU:
- Преимущества создания тестового набора для оценки не всегда превышают затраты на создание менее производительной модели из-за заимствования части обучающих данных.
- Тестовый набор данных требует постоянного обновления и поддержки, так как характер данных меняется при взаимодействии ассистента с реальными пользователями.
На вкладке Оценка можно работать с отдельным набором данных в режиме тестирования.
Wisebot предлагает несколько вариантов оценки вашей модели, позволяя избежать вышеупомянутых компромиссов:
- Использование тренировочного набора
Хотя метрики такой оценки обычно завышены и ненадежны, этот метод полезен на этапе разработки для быстрого выявления проблем проектирования модели или ошибок аннотации данных. Происходит проход всех примеров по намерениям в обученной модели, определяется F1-оценка, точность, погрешность.
- Использование проверенных примеров
Позволяет использовать проверенные примеры для оценки производительности моделей с реальными пользователями и тестировщиками. Эти примеры включаются в Входящие, и после оценки могут быть добавлены в обучающие данные для улучшения модели без ущерба для валидации.
- Использование отдельного тестового набора (загрузка)
Стандартный, но наименее используемый метод из-за вышеописанных причин.
Однако не рекомендуется создавать набор данных для обучения таким образом, так как это может привести к созданию огромного набора данных без семантического разнообразия.
Отчеты об оценке¶
Намерения¶
Общие метрики и обратная связь по намерениям позволяют увидеть работу модели и выявить ошибки, такие как неправильная маркировка или конфликтующие намерения.
Представление заменяет матрицу путаницы, которая неудобна при большом количестве намерений. Вместо этого предоставляется сортируемая таблица для детального анализа.
Сущности¶
Извлечение сущностей сложно оценить и отладить. Отчет предоставляет обратную связь в виде неудачных примеров, сравнивая ожидаемые и фактические результаты, что помогает быстро идентифицировать и решить проблемы.
Тестирование пользовательских историй¶
Тестирование диалогов¶
После создания потока диалога важно убедиться, что он продолжает работать. Тесты Wisebot призваны помочь в этом.
Тест Wisebot — это последовательность высказываний пользователя и ответов бота, созданная на основе разговора. Во время выполнения теста канал WisebotRegressionTesting отправляет текст каждого высказывания пользователя в Rasa и сравнивает полученный диалог с содержимым теста, чтобы определить, пройден тест или нет.
Тесты обычно недоступны для редактирования, но их можно обновить, перезаписав текущее содержимое результатами самого последнего запуска теста, если они не пройдены.
Тесты наследуют язык диалога, из которого они были созданы, и будут отображаться в диалоговом меню только при выборе этого языка.
Создание тестов¶
Создать новый тест можно двумя разными способами.
-
Создание через панель веб-чата¶
Щелкните значок буфера обмена в верхней части панели веб-чата, чтобы сохранить беседу в качестве тестового примера. При нажатии значок станет зеленым.
-
Создание через экран разговоров¶
В разделе «Входящие» бокового меню → «Разговоры» вы можете создать новый тест, щелкнув значок буфера обмена на панели действий над разговором.
Поддержка разговоров из версий до 1.0 не гарантируется.
Запуск тестов¶
Вы можете инициировать запуск всех тестов в вашем проекте через раскрывающееся меню кнопки обучения. В том же меню есть возможность запустить все тесты, использующие текущий выбранный язык.
Также вы можете запускать тесты по отдельности, выбирая их в диалоговом меню и нажимая кнопку воспроизведения в правом верхнем углу теста.
После завершения тестового прогона появится уведомление с количеством пройденных и непройденных тестов. Все тесты, которые завершились неудачей в последнем тестовом запуске, можно найти в смарт-группе Неудачные тесты. Эта смарт-группа игнорирует фильтр по языку, обычно применяемый к тестам, чтобы упростить обновление неудачных тестов.
Обновление неудачных тестов¶
Когда тест терпит неудачу, текущее содержимое теста отличается от результатов тестового прогона. Совпадающие события не имеют цветного фона, ожидаемые события, выделенные красным цветом, относятся к исходной беседе, а фактические события, полученные в результате выполнения теста, отображаются зеленым цветом.
Вы можете перезаписать тест новыми результатами, щелкнув кнопку «Установить фактические как ожидаемые» на верхней панели теста. Это удалит все ожидаемые события и сохранит фактические события как часть теста.
Если в ходе беседы были внесены существенные изменения, вам потребуется удалить тест и создать новый, выполнив шаги, описанные ранее в этом разделе.
Учет результатов и выбор оптимальных параметров¶
После процесса обучения следует обратить внимание на ошибки обучения (t_loss, i_acc). Если t_loss (общая ошибка) существенно больше 1.5 (в настоящее время уже больше 4) и/или i_acc (точность определения намерения) существенно меньше единицы, возможно, стоит увеличить число эпох обучения в конвейере:
Если это не помогает, необходимо проанализировать примеры в намерениях на предмет их излишней схожести и провести анализ результатов тестирования проекта.
Политики¶
Помощник использует политики для определения следующего действия на каждом шаге беседы. Существуют политики машинного обучения и политики на основе правил, которые ваш помощник может использовать в тандеме.
Политики, используемые помощником, можно настроить, указав их в конфигурационном файле проекта. Существует несколько политик на выбор, и вы можете включить несколько политик в одной конфигурации. Вот пример списка политик в файле policiesconfig.yml
:
recipe: default.v1
language: # ваш язык
pipeline:
# - <компоненты конвейера>
policies:
- name: MemoizationPolicy
- name: TEDPolicy
max_history: 5
epochs: 200
- name: RulePolicy
Приоритет политики¶
Если две политики прогнозируют с одинаковой уверенностью (например, MemoizationPolicy и RulePolicy могут предсказывать с уверенностью 1), приоритет политики рассматривается. Политики Rasa имеют приоритеты по умолчанию, которые устанавливаются для обеспечения ожидаемого результата в случае ничьей. Приоритеты выглядят следующим образом, где более высокие числа имеют более высокий приоритет:
- RulePolicy – приоритет 6
- MemoizationPolicy или AugmentedMemoizationPolicy – приоритет 3
- UnexpecTEDIntentPolicy – приоритет 2
- TEDPolicy – приоритет 1
В общем, не рекомендуется иметь более одной политики для каждого уровня приоритета в конфигурации. Если у вас есть две политики с одинаковым приоритетом и они прогнозируют с одинаковой уверенностью, выбранное действие будет выбрано случайным образом.
Если вы создаете свою собственную политику, используйте эти приоритеты в качестве руководства для определения приоритета вашей политики. Если ваша политика основана на машинном обучении, она, скорее всего, должна иметь приоритет 1, такой же, как и TEDPolicy.
Конфигурация¶
Параметры конфигурации можно указать в файле. Если вы хотите точно настроить модель, начните с изменения следующих параметров:
-
epochs (эпохи). Этот параметр задает количество раз, когда алгоритм будет просматривать обучающие данные (по умолчанию: ). Один проход равен одному циклу вперед и одному циклу назад во всех обучающих примерах. Иногда модели требуется больше эпох для правильного обучения. Однако большее количество эпох не всегда влияет на производительность. Чем меньше количество эпох, тем быстрее обучается модель.
-
max_history (максимальная история). Этот параметр определяет, сколько истории диалогов просматривает модель перед тем, как сделать вывод. Значение по умолчанию для этой политики означает, что учитывается полная история диалогов с момента перезапуска сеанса. Если вы хотите ограничить модель просмотром только определенного количества предыдущих поворотов диалога, вы можете установить конечное значение. Пожалуйста, обратите внимание, что вы должны тщательно выбирать это значение, чтобы у модели было достаточно предыдущих поворотов диалога для создания правильного прогноза.
-
batch size (размер пакета). Общее число тренировочных объектов, представленных в одном пакете. Нельзя пропустить через нейронную сеть весь датасет одновременно. Поэтому данные делятся на пакеты, сеты или партии, аналогично тому, как большая статья делится на разделы — введение, градиентный спуск, эпохи, batch size и итерации. Такое разбиение позволяет легче обрабатывать и понимать данные.