В Rasa мы рады сделать передовые технологии машинного обучения доступными в удобном для разработчиков рабочем процессе. С Rasa 1.8 наша исследовательская группа выпускает новую современную легкую, многозадачную архитектуру преобразователя для NLU: Dual Intent and Entity Transformer (DIET).

В этом посте мы поговорим о функциях DIET и о том, как вы можете использовать ее в Rasa, чтобы добиться большей точности, чем все, что у нас было раньше. Мы публикуем научную статью, в которой демонстрируется, что эта новая архитектура улучшает текущее состояние дел, превосходит точную настройку BERT и в шесть раз быстрее обучается.

Что такое ДИЕТА

DIET - это многозадачная архитектура преобразователя, которая одновременно обрабатывает как классификацию намерений, так и распознавание сущностей. Он предоставляет возможность подключать и воспроизводить различные предварительно обученные вложения, такие как BERT, GloVe, ConveRT и т. Д. В наших экспериментах не существует единого набора встраиваний, который неизменно лучше всего подходил бы для разных наборов данных. Поэтому особенно важна модульная архитектура.

Зачем нужна ДИЕТА

Крупномасштабные предварительно обученные языковые модели не идеальны для разработчиков, создающих диалоговые приложения AI.

ДИЕТА отличается тем, что:

  • Модульная архитектура, которая вписывается в типичный рабочий процесс разработки программного обеспечения.
  • Сравнивает крупномасштабные предварительно обученные языковые модели по точности и производительности
  • Улучшает текущее состояние и тренируется в 6 раз быстрее

Крупномасштабные предварительно обученные языковые модели показали многообещающие результаты на тестах понимания языка, таких как GLUE и SuperGLUE, и, в частности, показали значительные улучшения по сравнению с другими методами предварительного обучения, такими как GloVe и контролируемые подходы. Поскольку эти вложения обучаются на крупномасштабных корпусах текстов на естественном языке, они хорошо оснащены для обобщения различных задач.

В прошлом году я помог создать помощника службы поддержки, который автоматизировал разговоры и повторяемые ИТ-процессы. Мы интегрировали помощника с BERT, потому что в то время BERT и другие модели большого языка достигли максимальной производительности в различных задачах НЛП. Хотя он помог решить некоторые проблемы, BERT также представил свои собственные проблемы; он был очень медленным и для обучения требовался графический процессор.

Крупномасштабные модели, как правило, требуют больших вычислительных ресурсов, времени на обучение и представляют собой практические проблемы для разработчиков программного обеспечения, которые хотят создать надежных помощников искусственного интеллекта, которые можно быстро обучить и повторить. Более того, если вы создаете многоязычных помощников ИИ, важно достичь высокого уровня производительности без крупномасштабного предварительного обучения, поскольку большинство предварительно обученных моделей обучаются на английском тексте.

До DIET конвейер NLU Rasa использовал модель мешка слов, в которой для каждого пользовательского сообщения был один вектор признаков. Хотя это быстрый базовый уровень, который сложно превзойти, сейчас мы выходим за его рамки.

DIET использует модель последовательности, которая учитывает порядок слов, тем самым обеспечивая лучшую производительность. Это также более компактная модель с модульной архитектурой plug-and-play. Например, вы можете использовать DIET как для классификации намерений, так и для извлечения сущностей; вы также можете выполнить отдельную задачу, например, настроить ее, чтобы отключить классификацию по намерениям и обучить ее только для извлечения сущностей.

Кроме того, DIET не только значительно быстрее обучается, но и по производительности параллельна крупномасштабным предварительно обученным языковым моделям. Он превосходит точную настройку BERT и улучшает текущее состояние сложного набора данных NLU. Достижение современной точности не может больше означать жертвовать эффективностью.

Как пользоваться ДИЕТой

Чтобы подготовиться к DIET, мы обновились до Tensorflow 2.1. TF 2 упрощает создание и обучение моделей, а также интуитивно понятную отладку.

Чтобы выполнить классификацию намерений и извлечение сущностей с использованием новой архитектуры DIET, добавьте компонент DIETClassifier в файл конфигурации конвейера NLU.

Вот файл конфигурации, который создается при вызове rasa init.

 language: en 
pipeline: 
  - name: WhitespaceTokenizer 
  - name: RegexFeaturizer 
  - name: LexicalSyntacticFeaturizer 
  - name: CountVectorsFeaturizer 
  - name: CountVectorsFeaturizer
  analyzer: "char_wb" 
  min_ngram: 1 
  max_ngram: 4 
  - name: DIETClassifier 
  epochs: 100 
  - name: EntitySynonymMapper 
  - name: ResponseSelector 
  epochs: 100

Давайте посмотрим на DietClassifier и его зависимости. DIETClassifier зависит от двух классов фэтуризаторов: плотных и разреженных. Featurization - это процесс преобразования пользовательских сообщений в числовые векторы. Ключевое различие между разреженными и плотными характеристиками состоит в том, что разреженные элементы функций сжимают векторы функций, которые содержат в основном нули, в структуру, эффективную для памяти. Если вы хотите узнать больше об использовании редких функций, прочтите этот пост.

ConveRTFeaturizer - это пример плотного featurizer, который использует модель ConveRT. LanguageModelFeaturizer - еще один пример плотного инструментария, который использует предварительно обученную языковую модель, такую ​​как BERT.

CountVectorsFeaturizer - пример разреженного featurizer. Его можно настроить для использования словарных или символьных н-граммов. LexicalSyntacticFeaturizer - еще один пример разреженного featurizer. Он создает функции для извлечения сущностей с помощью скользящего окна над каждым токеном в данном пользовательском сообщении. Компонент LexicalSyntacticFeaturizer можно настроить для указания типа извлекаемых лексических и синтаксических функций.

Кроме того, DIETClassifer можно настроить с помощью различных гиперпараметров. Например, вы можете настроить архитектуру нейронной сети, указав размер трансформатора, количество слоев трансформатора, количество используемых головок внимания и так далее.

Если вы обновляетесь до Rasa 1.8, ознакомьтесь с инструкциями в Руководстве по миграции. Как всегда, мы рекомендуем каждому определить свой собственный конвейер, перечислив имена компонентов, которые вы хотите использовать.

Следующие шаги

Мы очень рады DIET, новой многозадачной архитектуре трансформатора, которую мы изобрели. Мы выпустили его по двум причинам: создание эффективных помощников ИИ не всегда требует крупномасштабных предварительно обученных языковых моделей, и мы хотели предоставить разработчикам гибкую архитектуру plug-and-play. DIET развивает современный уровень техники, превосходит точную настройку BERT и в шесть раз быстрее обучается.

Скоро мы опубликуем об этом статью. А пока ознакомьтесь с дополнительной информацией о ДИЕТЕ и посмотрите это видео о том, как она работает. Попробуйте и поделитесь своими результатами в форуме. Следите за новостями, подписавшись на Раса в Твиттере.

Первоначально опубликовано на https://blog.rasa.com 9 марта 2020 г.