Меня зовут Иван Бондаренко.
Алгоритмами машинного обучения для анализа текста и речи занимаюсь примерно с 2005 года.
Сейчас работаю в Московском Физтехе ведущим научным разработчиком лаборатории бизнес-решений на базе Центра компетенций искусственного интеллекта НТИ при МФТИ и в Центре данных Компания Monsters, занимающаяся практической разработкой диалоговых систем для решения тех или иных задач в отрасли.
Еще я немного преподаю в нашем университете.
Мой рассказ будет посвящен тому, что такое чат-бот, как используются алгоритмы машинного обучения и другие подходы для автоматизации общения человека с компьютером и где это можно реализовать.
Полную версию моего выступления на Ночи научных историй можно посмотреть на сайте видеозаписи , а краткие тезисы я приведу по тексту ниже.
Возможности алгоритма
Прежде всего, в колл-центрах успешно используются алгоритмы взаимодействия с человеком.Работа оператора колл-центра очень сложная и дорогая.
Более того, во многих ситуациях полностью решить проблему общения человека с компьютером практически невозможно.
Одно дело, когда мы работаем с банком, у которого, как правило, несколько тысяч клиентов.
Вы можете набрать штат сотрудников колл-центра, которые будут обслуживать этих клиентов и разговаривать с ними.
Но когда мы решаем более крупные задачи (например, производим смартфоны или какую-то другую бытовую электронику), у нас появляется не несколько тысяч клиентов, а несколько десятков миллионов по всему миру.
И мы хотим понять, какие проблемы у людей возникают с нашей продукцией.
Пользователи обычно делятся информацией друг с другом на форумах или пишут в службу поддержки производителя смартфона.
Живые операторы не смогут справиться с работой огромной клиентской базы, и здесь на помощь приходят алгоритмы, способные работать в многоканальном режиме, обслуживая огромное количество людей.
Для решения подобных задач, построения алгоритмов диалоговых систем, которые могли бы взаимодействовать с человеком и извлекать смысловую и важную информацию из произвольных сообщений, существует целое направление в области компьютерной лингвистики — анализ текстов на естественном языке.
Робот должен уметь читать, понимать, слушать, говорить и так далее.
Это направление — Natural Language Processing (анализ текста на естественном языке) — распадается на несколько частей.
Понимание текста (Natural Language Dealing, NLU).
Когда бот общается с человеком и человек что-то пишет боту, нужно понять, что было написано, что хотел пользователь, о чем он упомянул в своей речи.
Понимание намерений пользователя, так называемое намерение — чего хочет человек: перевыпустить банковскую карту или заказать пиццу.
И выбор именованных сущностей, то есть вещей, о которых конкретно говорит пользователь: если это пицца, то «Маргарита» или «Гавайская»; если карта, то какой системы – MasterCard, World и так далее.
И, наконец, понимание тона сообщения – в каком эмоциональном состоянии находится человек.
Алгоритм должен уметь определять, в каком тоне написано сообщение, либо это новостной текст, либо это сообщение от человека, который общение с нашим ботом, чтобы адекватно реагировать на тон.
Генерация текста (генерация естественного языка) – адекватный ответ на человеческий запрос на том же человеческом языке (естественном), а не сложными жестами или формальными фразами.
р распознавание и синтез речи (Speech-to-Text и Text-to-Speech).
Если чат-бот не просто переписывается с человеком, а говорит и слушает, нужно научить его понимать устную речь, преобразовывать звуковые колебания в текст, чтобы модуль понимания текста потом мог анализировать этот текст, и в свою очередь генерировать звуковые колебания.
из текста ответа, который затем услышит человек, абонент.
Виды чат-ботов
В чат-ботах есть несколько ключевых архитектур.Чат-бот, отвечающий на наиболее часто задаваемые вопросы (чат-бот FAQ) - самый простой вариант. Мы всегда можем сформулировать набор типичных вопросов, которые задают люди.
Для сайта по доставке готовой еды, как правило, это вопросы: «сколько будет стоить доставка», «доставляете ли вы в Первомайский район» и т. д. Их можно сгруппировать по нескольким классам, намерениям, и намерения пользователя.
И для каждого намерения выберите стандартные ответы.
Целенаправленный чат-бот. Здесь я попытался показать архитектуру аналогичного чат-бота, который реализован в проекте iPavlov. iPavlov — проект по созданию диалогового искусственного интеллекта.
В частности, целенаправленный чат-бот помогает пользователю достичь какой-то цели (например, забронировать столик в ресторане или заказать пиццу, узнать что-то о проблемах в банке).
Речь идет не просто об ответе на вопрос (вопрос-ответ – без всякого контекста).
Целевой чат-бот имеет модуль для понимания текста, управления диалогом и генерации ответов.
Чат-боты вопросно-ответной системы и просто «чат-чат-боты».
Если два предыдущих типа чат-ботов либо отвечают на наиболее часто задаваемые вопросы, либо проводят пользователя через графический диалог, в конечном итоге помогая забронировать ресторан, узнать, что хочет пользователь, китайскую или итальянскую кухню и т. д., то вопрос-и- система ответов — это еще один тип чат-бота.
Задача такого чат-бота – не перемещаться по графу диалога и не просто классифицировать намерения пользователя, а обеспечить поиск информации – найти наиболее релевантный документ, соответствующий вопросу человека, и место в документе, где находится ответ. содержится.
Например, сотрудники крупного ритейлера вместо того, чтобы запоминать инструкции, регламентирующие работу, или искать ответ, куда положить гречку, задают вопрос такому чат-боту по системе вопросов и ответов.
Типы машинного обучения
Распознавание намерений, идентификация названных сущностей, поиск в документах и поиск мест в документе, соответствующих семантике вопроса — все это невозможно реализовать без машинного обучения, без какого-то статистического анализа.Поэтому современные чат-боты основаны на машинном обучении — методах постановки задач, аппроксимации некой скрытой закономерности, существующей в больших объемах данных, и выявлении этих закономерностей.
Этот подход имеет смысл использовать, когда есть закономерности и задачи, но невозможно придумать простую формулу или формализм для описания этой закономерности.
Существует несколько типов машинного обучения: обучение с учителем, обучение без учителя и обучение с подкреплением.
Нас интересует, прежде всего, проблема обучения с учителем - когда имеются входные изображения и инструкции (метки) учителя и классификация этих изображений.
Или входные речевые сигналы и их классификация.
И мы учим нашего бота, наш алгоритм воспроизводить работу преподавателя.
Ладно, вроде все круто.
Как научить компьютер понимать тексты? Текст — сложный объект, а как превратить буквы в цифры и придумать векторное описание текста? Есть самый простой вариант – «мешок слов».
Задаем словарь всей системы, например, всех слов, которые существуют в русском языке, и формулируем эти самые разреженные векторы с частотами слов.
Этот вариант хорош для простых вопросов, но для более сложных задач не подходит. В 2013 году произошло что-то вроде революции в моделировании слов и текстов.
Томас Миколов предложил специальный подход к эффективному векторному представлению слов, основанный на гипотезе распределения.
Если разные слова встречаются в одном контексте, значит, у них есть что-то общее.
Например: «Учёные провели анализ алгоритмов» и «Учёные провели исследование алгоритмов».
Таким образом, «Анализ» и «Исследование» являются синонимами и означают примерно одно и то же.
Поэтому можно научить специальную нейронную сеть предсказывать слово по контексту или контекст по слову.
Наконец, как мы учим? Чтобы научить бота понимать намерения, истинные намерения, нужно вручную разметить кучу текстов с помощью специальных программ.
Чтобы научить бота понимать именованные сущности — имя человека, название компании, местоположение — нужно еще размещать тексты.
Соответственно, с одной стороны, алгоритм обучения с учителем является наиболее эффективным, он позволяет создать эффективную систему распознавания, но, с другой стороны, возникает проблема: нужны большие размеченные наборы данных, а это дорого и по времени.
-потребляющий.
В процессе маркировки наборов данных могут возникать ошибки, вызванные человеческим фактором.
Для решения этой проблемы современные чат-боты используют так называемое трансферное обучение.
Те, кто знает много иностранных языков, наверняка заметили нюанс, что выучить другой иностранный язык легче, чем первый.
Собственно, когда вы изучаете новую задачу, вы пытаетесь использовать для этого свой прошлый опыт. Итак, трансферное обучение основано на таком принципе: мы обучаем алгоритм решению одной задачи, для которой у нас есть большой набор данных.
А потом мы обучаем этот обученный алгоритм (то есть берём алгоритм не с нуля, а обученный для решения другой задачи) для решения нашей задачи.
Таким образом, мы получаем эффективное решение, используя небольшие разные данные.
Одной из таких моделей является ELMo (Embeddings from Language Models), например ELMo из «Улицы Сезам».
Мы используем рекуррентные нейронные сети, они обладают памятью и могут обрабатывать последовательности.
Например: «Программист Вася любит пиво.
Каждый вечер после работы он идет к Джонатану и выпивает-другую.
Итак, кто он? Он вечер, он пиво или он программист Вася? Нейронная сеть, обрабатывающая слова как элементы последовательности с учетом контекста, рекуррентная нейронная сеть, может понять взаимосвязи, решить эту проблему и выделить некоторую семантику.
Мы обучаем такую глубокую нейронную сеть моделировать тексты.
Формально это учебное задание с учителем, но нашим учителем является сам неразмеченный текст. Следующее слово в тексте – учитель по отношению ко всем предыдущим.
Таким образом, мы можем использовать гигабайты, десятки гигабайт текстов и обучать эффективные модели, выделяющие семантику в этих текстах.
А затем, когда мы используем модель «Вложения из языковых моделей» (ELMo) в режиме вывода, мы подаем слово в зависимости от контекста.
Не просто придерживаться, а давайте придерживаться.
Давайте посмотрим, что генерирует нейросеть в данный момент времени, какие сигналы.
Мы преобразуем эти сигналы и получаем векторное представление слова в конкретном тексте с учетом его конкретного смыслового значения.
Есть еще одна особенность анализа текста: при решении задачи машинного перевода один и тот же смысл в одном количестве слов на английском языке может быть передан другим количеством слов на русском языке.
Соответственно, это не линейное сравнение, и нам нужен механизм, который бы концентрировал внимание на определенных фрагментах текста, чтобы адекватно перевести их на другой язык.
Изначально внимание было придумано для машинного перевода — задачи преобразования одного текста в другой с помощью обычных рекуррентных нейронных систем.
К этому мы добавляем особый слой внимания, который в каждый момент времени оценивает, какое слово для нас сейчас важно.
Но потом ребята из Google подумали, а почему бы вообще не использовать механизм внимания без рекуррентных нейронных сетей — просто внимание.
И они придумали архитектуру, названную трансформатором (BERT (представления двунаправленного кодировщика от трансформаторов)).
На основе такой архитектуры, когда имеется только многоголовое внимание, были придуманы специальные алгоритмы, которые также могут анализировать связи слов в текстах, связи текстов друг с другом — как это делает ELMo, только хитрее.
Во-первых, это более крутая и сложная сеть.
Во-вторых, мы решаем одновременно две задачи, а не одну, как в случае с ELMo — языковое моделирование, прогнозирование.
Мы пытаемся восстановить скрытые слова в тексте и восстановить связи между текстами.
То есть, допустим: «Программист Вася любит пиво.
Каждый вечер он ходит в бар».
Два текста связаны.
«Программист Вася любит пиво.
Журавли осенью летят на юг» — это два несвязанных между собой текста.
Опять же, эту информацию можно извлечь из неразмеченных текстов, обученных на BERT, и можно получить очень крутые результаты.
Об этом в ноябре прошлого года была опубликована статья «Внимание — это все, что вам нужно», которую я настоятельно рекомендую прочитать.
На данный момент это самый крутой результат в области анализа текста для решения различных задач: классификация текста (распознавание тональности, намерений пользователя); для вопросно-ответных систем; распознавать именованные сущности и так далее.
Современные диалоговые системы используют BERT, предварительно обученные контекстные внедрения (ELMo или BERT), чтобы понять, чего хочет пользователь.
Но модуль управления диалогами по-прежнему часто проектируется на основе правил, поскольку конкретный диалог может быть очень зависим от темы или даже от задачи.
Теги: #Машинное обучение #искусственный интеллект #МФТИ #Обработка естественного языка #чат-боты #виртуальные помощники #Физтех #Лаборатория бизнес-решений #Центр компетенций НТИ
-
История Развития Флеш-Памяти
19 Oct, 24 -
Прорывная Разработка Игр На Svelte
19 Oct, 24 -
«Сделай Меня Красивой!» Выпуск №32
19 Oct, 24 -
Windows 7 – Приятные Сюрпризы В Rc1 7100
19 Oct, 24