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

Технологии машинного обучения быстро меняют способы решения задач, и к тому же они становятся дешевле!

Обработка естественного языка сейчас в моде. С выпуском OpenAI API GTP3 машинное обучение и НЛП могли бы быстро стать более доступными для любого уровня стартапа.

Итак, мы хотим воспользоваться моментом, чтобы прояснить, как мы пришли к этому и что это означает для начинающих основателей, которые хотят интегрировать НЛП и МО в свои текущие или будущие продукты. Спойлер — это проще, эффективнее и доступнее, чем когда-либо!

Давайте познакомимся

  • Краткая история НЛП
  • BERT GoogleAI
  • Amazon Comprehend
  • Амазон Лекс
  • Использование AWS в вашем продукте

История НЛП

Обработка естественного языка, также известная как НЛП, лежит на стыке лингвистики, информатики и машинного обучения. НЛП решает проблемы взаимодействия между машинами и людьми через наши родные человеческие языки.

История НЛП начинается с книги Алана Тьюринга Вычислительные машины и интеллект. В этой статье он спросил: Могут ли машины думать? Но термины машина и мыслить слишком расплывчаты, слишком двусмысленны, чтобы дать точный ответ. Поэтому Тьюринг предложил ответить на альтернативный вопрос: Может ли цифровая машина победить в игре-симуляторе?

Программисты решали этот вопрос по-разному на протяжении многих лет, но их решения в целом делятся на два разных подхода:

  • «На основе правил» — где все правила парсинга и обработки текста создаются программистом вручную, что позволяет добиться высокой точности и обрабатывать аномалии в тексте. Но такой подход сильно усложняет архитектуру программы.
  • «Машинное обучение» — позволяет проводить вероятностный анализ, но требует для обучения большого объема текстов.

Наиболее точные и оптимальные решения включают оба подхода одновременно.

GoogleAI, BERT и эволюция нейронных сетей

Последней тенденцией в алгоритмах NLP являются двунаправленные кодировщики Google AI Language от Transformers, также известные как BERT. В нем представлены самые современные результаты в широком спектре задач НЛП, включая ответы на вопросы (SQuAD v1.1) и вывод на естественном языке (MNLI).

Но обо всем по порядку. Начнем с рекуррентных нейронных сетей.

Поскольку у каждого нейрона есть внутреннее состояние, эта модель может обрабатывать любую последовательность.

Главное преимущество этой модели в том, что она может обрабатывать последовательности и — в определенном смысле — учитывать контекст значения в последовательности. Основным недостатком этой модели является так называемая проблема исчезновения и взрыва градиента. При достаточно длинной последовательности градиент функции «исчезает».

Проще говоря, чем длиннее последовательность, тем меньше контекста учитывается. В 1991 году какие-то умники нашли способ уменьшить влияние этой проблемы — они предложили добавить в каждую ячейку дополнительный элемент под названием Долговременная кратковременная память (LSTM).

Дополнительная ячейка памяти позволяет дольше сохранять градиент (контекст) в памяти, но это не полное решение проблемы. Длина обрабатываемых последовательностей увеличилась не более чем на порядок — со 100 до 1000. В двух словах мы получаем дополнительные слои — Входные, Выходные и Забыть Гейты — которые помогают сохранить градиент функции.

В 2017 году было представлено новое поколение рекурсивной модели — Трансформер.

BERT использует сеть-трансформер для решения задачи преобразования последовательности или нейронного машинного перевода. Это любые задачи преобразования одной последовательности в другую — например, преобразование аудиоинформации в текст (распознавание речи).

Принципиально архитектура повторяет идею RNN, но давайте подробнее рассмотрим, что именно там происходит. В качестве примера воспользуемся переводом с английского на французский:

Большая рыжая собака -› Le gros chien rouge

Он состоит из 2 частей — энкодера (слева) и декодера (справа).

Input Embedding и Output Embedding «отображают» слова на входе во встроенное пространство. Каждое слово имеет свои координаты и в этом пространстве мы можем определить, насколько эти слова близки по значению, определив расстояние между ними.

Input Embedded получает N-е слово исходного предложения «big», а Output Embedded N-1 получает слово переведенного предложения «Le». После этого мы работаем только с векторами. Позиционное кодирование создает вектор, предоставляющий контекст на основе положения слова в предложении.

Но понимания положения каждого слова недостаточно. Даже в таком простом предложении слова имеют разную степень важности.

Введите Multi-Head Attention. Основная задача этого блока — указать на связь текущего слова с остальными словами в предложении. Для каждого слова генерируется вектор значений — поэтому он называется многоголовым.

Этот блок расположен в энкодере и сравнивает значения слов, полученных в энкодере и декодере. Другими словами, он инкапсулирует взаимодействие между языками.

Другие элементы трансформера:

  • Masked Multi-Head Внимание: эта сеть присутствует только в энкодере, необходимо маскировать значения, которые мы еще не рассчитали.
  • Feed Forward: применяет вектор внимания к предыдущим значениям и подготавливает данные для следующего блока декодера/кодировщика.
  • Добавить и нормализовать: нормализует данные.
  • Линейный: сравнивает значения вектора и слова — действие, обратное встраиванию.
  • Softmax: вычисляет распределение вероятностей и дает наиболее вероятный результат.

Итак, в итоге у нас есть Трансформер:

Теперь, когда мы понимаем, что такое трансформеры, будет легче понять «прорыв», сделанный инженерами Google.

Раньше анализ текста проводился в определенном направлении. Теперь анализ является двунаправленным — или, скорее, ненаправленным, поскольку предложение анализируется целиком.

Таким образом, модель BERT позволяет поисковой системе Google понимать запросы лучше, чем люди, которые их создают.

Амазонка понять

Amazon Comprehend — это сервис обработки естественного языка, который извлекает ключевые фразы, места, имена, бренды, события и настроения из неструктурированного текста. Он основан на сложных моделях глубокого обучения, обученных AWS. Он использует не прямое значение слов, а их значение в контексте. Это исключает большинство неудач в определении темы.

Основное преимущество Amazon Comprehend — расширяемость. Если ваш бизнес предоставляет услуги в очень конкретной области, вы можете легко расширить модель с помощью настраиваемых объектов и пользовательской классификации. Пользовательские сущности позволяют вам находить термины/слова или, как говорят серьезные люди, «любую последовательность символов», которая вам нужна.

Например, решает задачи сортировки и рассылки почты, статей, отзывов клиентов и любой информации на естественном языке. Очевидно, что чем больше данных вы предоставите, тем точнее их найдет Comprehend. Тематическое моделирование позволяет обучать модели только по содержимому этих документов.

Пользовательская классификация позволяет классифицировать наборы документов. Вы можете классифицировать письма с отзывами клиентов, отправлять положительные отзывы руководителю отдела, делать выводы на основе отрицательных и автоматически «отмечать их как прочитанные».

Amazon использует Latent Dirichlet Allocation (LDA) — генеративную вероятностную модель для коллекций дискретных данных, основанную на теореме Байеса. Например, большинство «нормальных» людей сделают вывод, что если в тексте есть «недифференцированное поднятие тяжестей», то это, скорее всего, статья о спорте. А вот если в тексте встречаются имена Байеса или Дирихле, вероятно, речь идет о серьезном ML.

Если от этого у вас кружится голова, не волнуйтесь!

Чтобы интегрировать Comprehend в свой продукт, вам не нужно разбираться в «элементарных преобразованиях» теоремы Байеса.

Вам даже не нужны разработчики с глубокими знаниями в области машинного обучения. Вместо «однообразной тяжелой работы» вы можете сосредоточиться на функциях и быстрой доставке.

Интерфейс и документация Amazon позволяют нам создавать продукты на основе технологий машинного обучения с помощью команды веб-разработчиков и недели исследований.

Амазонка Лекс

В то время как Comprehend предназначен для текста, Amazon Lex обеспечивает широкие функциональные возможности и гибкость понимания естественного языка (NLU) и автоматического распознавания речи (ASR). AWS предоставляет не только API, но и графический интерфейс. Вам просто нужно передать образцы фраз и чем больше данных вы используете, тем точнее будет классификация.

Этот сервис позволяет создавать ботов для голосового и текстового общения. Основными элементами Amazon Lex являются типы Intent, Slot и Channel. Только с этими тремя объектами вы можете создать домашнюю Alexa (ну, почти).

Конечно, самые актуальные данные — это история общения с вашими клиентами. Lex позволяет вам обрабатывать ошибки, устанавливать подсказки с разъяснениями и фразу для завершения разговора, чтобы более приятно общаться с вашими клиентами.

Для каждого намерения вы можете указать набор слотов. Слот — это данные, которые клиент должен предоставить для выполнения намерения. Если вы продаете пиццу, пользователь должен указать размер и начинку, иначе он не сможет ее заказать. Для каждого слота можно указать конкретную подсказку.

Это добавит интерактивности вашему приложению, и мы сможем наконец-то избавить мир от статических многоэтапных форм.

Установка типа канала позволяет вам адаптировать поведение для каждого канала. Например, чтобы быть более кратким в чате на Twillio, Лекс может использовать короткие сленговые формы, такие как LOL, IDK, JFYI. Но на Facebook он может переключаться на полные формы слов.

И последнее, но не менее важное — бизнес-логика. AWS Lex позволяет использовать хуки в формате функций AWS Lambda. Это немедленно и значительно увеличивает вашу способность настраивать и проверять поведение! Вы можете автоматизировать не только общение с клиентом, но и часть своего бизнеса.

НЛП и ваш продукт

Таким образом, машинное обучение было демократизировано такими сервисами, как AWS Lex и Comprehend.

Что это значит для предпринимателей? С падением финансовых порогов для технологий глубокого обучения растет как качество услуг машинного обучения, так и количество успешных продуктов, интегрирующих машинное обучение.

Теперь, чтобы изменить мир, не нужны богатые родители и диплом Гарварда — родителей из среднего класса более чем достаточно!

В Paralect мы ориентируемся на доставку продукта и время выхода на рынок с использованием передовых технологий. Такие сервисы, как AWS Lex и Comprehend, в сочетании с подходом без написания кода позволяют быстро и в рамках бюджета запускать, расширять или итерировать продукты.

Первоначально опубликовано на blog.paralect.com, автор Владимир Пантелеев 🙏