21. Чат-боты
Текст видео

Всем привет, это курс по основам Искусственного Интеллекта, и я — Роман Душкин. Мы продолжаем исследовать прикладные аспекты и задачи, в которых применимы технологии ИИ, и сегодня у нас третье занятие на эту тему и двадцать первое в курсе. Мы изучим чат-боты.

Я уверен, что все вы знаете и даже уже так или иначе сталкивались с чат-ботами. Тем не менее, дам краткое определение. Чат-бот — это как будто бы программа, которая общается с пользователем в мессенджере на естественном или формальном языке. Чат-бот предназначен или для решения какой-то специальной узкой задачи, или же может представлять собой «виртуального собеседника» общего плана. Именно на последних обычно и проводится тест Тьюринга, о котором мы размышляли на четвёртом занятии. И в качестве примера на пятнадцатом занятии мы рассматривали довольно примитивного чат-бота с романтичным именем ELIZA.

Теперь кратко о двух задачах, и мы перейдём к рассмотрению внутреннего устройства чат-ботов. Итак, чат-бот реализует естественно-языковой интерфейс к некоторой информационной системе. Отсюда первая задача — выполнять какую-либо узкую функцию, например, исполнение поисковых запросов и выдача результатов. Другой вариант узкой задачи — поддержка беседы в чатах (и именно отсюда пришло название «чат-бот») на IRC или ещё где-либо в подобном месте. Либо на тех же чат-площадках выполнение каких-либо рутинных задач, типа поиска сигнатуры функции в чатах для программистов. Вторая задача заключается в возможности понимания естественного языка, выполнение на основе этого запросов пользователя и поддержания общей беседы. Наиболее известным классом чат-ботов, решающих эту задачу, являются виртуальные помощники, которые всё никак не вытеснят секретарей и ассистентов. Но уже скоро.
Каким образом чат-бот реализует свои функции? Давайте повторим ещё раз: чат-бот — это естественно-языковой интерфейс к какой-либо информационной системе. То есть сам по себе чат-бот — это не универсальный отчуждаемый программный модуль, но всего лишь часть некоторой большей системы, которая используется для взаимодействия с пользователем на естественном языке. Такое взаимодействие может происходить в нескольких каналах передачи информации — при помощи распознавания речи и при помощи анализа вводимых пользователем фраз и команд с клавиатуры. Впрочем, первый способ тоже в конечном итоге приводит к анализу записанного текста, поскольку на первом этапе принятые микрофоном звуковые волны преобразуются в текст.

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

Среди перечисленных действий анализ фразы на естественном языке и перевод запроса на внутренний язык представляет собой самую сложную задачу, которая окончательно не решена до сих пор. Естественный язык — очень сложная штука, и анализ всех нюансов, умолчаний, неполноты, двусмысленности и неопределённости представляет собой задачу космической сложности. Собственно, чего ждать от программы, если иногда естественный интеллект человека с ней не справляется? Попробуйте проанализировать фразу «Он попрекал их семью грехами». Для анализа и перевода было придумано много метотов, которые имеет смысл перечислить и кратко охарактеризовать. Мы не будем углубляться в детали каждого метода, поскольку изучение самой технологии обработки естественного языка требует нескольких курсов. Так что…

Самым простым и самым неточным является статистический метод, основанный на применение формулы Байеса к последовательностям символов. Символом здесь называется не привычная нам «буква», а любой объект, который можно рассматривать по отдельности и в контексте. То есть это может быть звук, буква, буквосочетание, слог, слово, фраза и даже текст. Чем примитивнее символ, тем проще для него собрать статистику, но тем бессмысленнее получаются результаты. Использовать этот метод можно, и наиболее известным способом его использования являются цепи Маркова. Но, повторюсь, результаты довольно скромные.

Следующий метод, который теоретически является самым точным, но его сложность очень высока — это формальный метод, то есть он основывается на формальных грамматиках, и можно сказать, что это апофеоз нисходящей парадигмы. В рамках этого метода язык описывается при помощи формальной грамматики, которая и лежит в основе анализа. Формальная грамматика представляет собой набор правил порождения строк, допустимых в языке. Простые языки состоят из нескольких правил, а для естественных языков полных формальных грамматик не составлено. К тому же, для естественных языков есть нюанс — наличие контекста. И хотя существуют контекстно-зависимые грамматики, их применение на практике оказывается очень затруднительным. Тем не менее, этот подход развивается, и долгое время, к примеру, автоматические переводчики с одного языка на другой использовали именно такой подход, хотя в них также применялись и элементы статистического подхода.

Наконец, ещё один метод, который появился совсем недавно, заключается в использовании нейросетей. Поначалу это было удивительно, но нейросети специальной архитектуры умеют справляться со многими неприятными особенностями естественного языка. Что происходит внутри нейросетей при их обучении, не очень понятно, как обычно с нейросетями, но снаружи естественно-языковые единицы представляются векторами в некотором языковом пространстве. И к лингвистическим единицам можно применять векторную математику. Ну мы уже рассматривали некоторые примеры. Фишка нейросетевого подхода заключается в том, что если анализирующую нейросеть специальным образом как бы перевернуть, то получится синтезирующая нейросеть, и если их соединить друг с другом, то фактически получается некая система, которая может дать адекватный ответ на запрос, которого не было в обучающей выборке. И это очень интересно. Но тут проблемой является то, что чем больше корпус текстов, которые необходимо обрабатывать, тем больше нужно обучать нейросеть на разнообразных примерах, а грань между недообученной и переобученной нейросетью очень тонкая. Тем не менее, подход продолжает активно развиваться, и по сообщениям той же компании Google их переводчик теперь работает на нейросетях после того, как обучился на огромном массиве документов ООН, которые изначально переводятся на множество языков.

Под конец кратко рассмотрим несколько примеров чат-ботов. Всем известны языковые помощники, которые сегодня предоставляются всеми, кому только не лень. Недавно компания Яндекс представила помощника Алису. Все они позиционируются как чат-боты общего плана и выполняют, в основном, поисковые функции. Можно найти билеты в кино. Можно забронировать гостиницу. Много чего можно, они постоянно обучаются. Но всё равно остаются немного туповатыми. При общении с ними нужно набирать текст, как будто бы вы общаетесь с человеком в чате. Попробуйте поиграться с каким-нибудь из них. Проверьте то, как они обрабатывают контекст, для чего задайте какой-нибудь вопрос, а в следующей фразе сошлитесь на что-либо в этом вопросе при помощи местоимения. Это первый тест, который делаю я с такими чат-ботами. Результаты всегда самые плачевные. Другой вариант — использование предустановленных или даже динамически создаваемых команд, которые выглядят как фразы на естественном языке. Таков, к примеру, чат-бот нашей системы Джейн, который выполняет сравнительно узкие функции, но общается с пользователем на самом хорошем естественном языке. Просто сценарий общения не позволяет пользователю задавать произвольные вопросы — чат-бот всегда вернёт его в основное русло разговора.

На этом я, пожалуй, закругляюсь. Поскольку создание лингвистического процессора для русского языка было одной из тем моих исследований в институте, я могу говорить про это часами. Так что надо остановиться. Ну а пока мы узнали про чат-ботов и три метода обработки естественного языка — статистический, формальный и нейросетевой. Переходите к дополнительным материалам и тесту. Всем удачи.
Интересные вопросы курсантов
(орфография и пунктуация курсантов сохранены)
Каким образом попадает языковая единица в нейросеть? Вы говорите вектором? Объясните более детально, пожалуйста.
Нейросети специальной архитектуры позволяют обрабатывать последовательности естественно-языковых единиц. Другой тип нейросетей позволяет генерировать ЕЯ-фразы на основании какого-то внутреннего представления. Смысловые единицы естественного языка представляются внутри таких нейросетей в виде векторов (ну, поскольку, искусственная нейросеть — это про умножение вектора на матрицу). Можно вытащить из нейросети внутреннее представление слова или фразы вектором, но почему оно такое — неясно. Это общее свойство нейросетей, в общем случае мы не можем понять, как обучаются нейросети и почему у них настраиваются весовые коэффициенты так, а не иначе. В общем, сеть представляет внутри себя смысловые единицы векторами, и так получается, что единицы, одинаковые по смыслу, представляются очень близкими векторами.
А не могли бы Вы чуть подробнее объяснить про эту тоную грань между недообученной и переобученной сетью?
Недообученная нейронная сеть для довольно большого числа образцов, подаваемых на вход, не знает, что с ними делать. Переобученная нейронная сеть даёт правильные результаты только для тех образцов, которые были в обучающей выборке, а для остальных не знает, что делать. Тонкая грань в причинах, почему недообученная и переобученная нейросети так себя ведут. Первая потому, что у неё не хватает информации. А вторая потому, что у неё слишком «сильными» стали коэффициенты на связях между нейронами, и они не пропускают образцы, хотя бы чуть-чуть отличающиеся от тех, которые были в обучающей выборке.
Самостоятельная работа
Задание 1

Прочесть все материалы по ссылкам выше

Задание 2

Сдать проверочный тест
Есть вопросы? Отлично, задавайте!
Предыдущие уроки
Урок № 1: ИИ и две зимы здесь
Урок № 2: ИИ и междисциплинарные исследования здесь
Урок № 3: Две парадигмы здесь
Урок № 4: Интуитивный подход и тест Тьюринга здесь
Урок № 5: Символьный и логический подходы здесь
Урок № 6: Агенты и роевой интеллект здесь
Урок № 7: Гибридный подход здесь
Урок № 8: Гибридный подход здесь
Урок № 9: Некоторые мифы об ИИ — 1 здесь
Урок №10: Некоторые мифы об ИИ - 2 здесь
Урок №11: Некоторые мифы об ИИ — 3 здесь
Урок №12: Правда об ИИ - 1 здесь
Урок №13: Правда об ИИ - 2 здесь
Урок №14: Правда об ИИ - 3 здесь
Урок №15: Несколько успешных примеров ИИ-проектов — 1 здесь
Урок №16: Несколько успешных примеров ИИ-проектов — 2 здесь
Урок №17: Несколько успешных примеров ИИ-проектов — 3 здесь
Урок №18: Философия ИИ здесь
Урок №19: Прикладное 1: ЭС и СППР здесь
Урок №20: Распознавание образов здесь