Агент Aigents - это чат-бот? Можно ли с ним говорить на человеческом языке? Используются ли в нем машинное обучение и нейронные сети?
Давайте разберемся с «ботами». Вообще, существует несколько основных методов создания чат-ботов. А потом поймем, куда относится бот Aigents (https://aigents.com/).
«Ручная настройка»
Один, самый древний, известный более полувека и пока самый практичный метод - это - ручное программирование всего многообразия сценариев протекания диалогов и используемых в них речевых «шаблонов». Таким образом программировались самые первые боты, таки образом, по сути, программировался и бот «Евгений Гусман», впервые прошедший «Тест Тьюринга» - более 10 лет его разработчики оттачивали сам механизм «шаблонизации» и наполнение базы его шаблонов, участвуя во всех конкурсах чат-ботов, включая Loebner Prize и Turing Award - до тех пор, пока требуемый критерием «Теста Тьюринга» порог «разумности» не был достигнут.
Такую же технологию предлагают большинство существующих на сегодня и практически работающих чат-ботов, используемых для решения узкого круга задач, где «все можно автоматизировать». Уже лет 10-15 назад была компания Conversagent, которая продавала на рынке специальный инструментарий для конструирования подобных ботов - BuddyScript (мы тогда использовали его для интеграции системы ассоциативного поиска в задачах поддержки пользователей с чат системами Microsoft Messenger и другими). Однако, в ту пору такие боты на рынке не прижились, а сейчас мы видим новое оживление в использовании данного подхода и компаний предлагающих подобные инструменты. Их уже - много, «боты» переживают новый бум.
Подобный подход трудно назвать машинным обучением, это скорее – ручная настройка и ручное программирование, хотя элементы машинного обучения (в том числе, с использованием нейронных сетей) могут использоваться программистами в процессе настройки шаблонов и сценариев.
«Обучение без учителя»
Другой, противоположный подход - использование машинного обучения. Машинное обучение по сути, это - вычислительная статистика, оперирующая с огромными наборами данных. «Нейронные сети» это - один из методов машинного обучения, также известный с середины прошлого века и показавший огромную эффективность для задач классификации в самые последние годы - потому что имеющиеся вычислительные мощности и накопленные данные для обучения достигли критического уровня. Суть подхода в том, что система «сама» учит закономерности как между словами в выражениях так и между различными языковыми конструкциями и используемыми словами, анализируя множество «учебных текстов» - сама генерирует все множество шаблонов, на создание которых у людей ушли бы человеко-десятилетия.
Успех этого подхода был также продемонстрирован несколько лет назад системой IBM Watson, когда она выиграла у людей в популярном теле-шоу «Jeopardy», где победителю требуется в равной степени обладать эрудицией, интеллектом и знанием языка. Большие успехи в этом направлении в самое последнее время демонстрируют комании Baidu и Google. Кстати, аналогичные алгоритмы разработаны у нас в Росии - в Новосибирске в Институте Математики (В.Д. Гусев, Н.В. Саломатина), но у нас нет тех объемов данных и вычислительных мощностей, которыми располагают для требуемых масштабов обучения Baidu и Google.
Проблема применения «нейронных сетей» к обучению ботов «диалогу» - в необходимости тщательного набора обучающих данных. Для этого, по сути, надо предусмотреть все возможные сценарии диалогов и «скормить» из системе в процесс обучения. И на практике, если такие сценарии есть для какой-то конкретной области, то - проще уж запрограммировать их вручную, чем возиться с обучением а потом еще проверять - насколько оно прошло успешно.
Такой подход можно назвать обучением без учителя — как если бы мы рассчитывали, что человек будет в состоянии изучить любой иностранный язык, если запереть его на несколько месяцев один-на-один с собранием литературы на этом языке и достаточным количеством еды. Такое было бы возможно (хотя и мало эффективно) только в том случае, если бы все фразы и слова были ассоциированы с соответствующими картинками, либо если бы вместо книжной библиотеки была видеотека в фильмами, причем желательно — с субтитрами а еще лучше — дублирующими субтитрами на родном языке.
«Системное обучение с подкреплением и учителем»
На самом деле, огромным плюсом использования «нейронных сетей», или статистического формирования шаблонов позволяет боту вести диалог в тех областях, для которых он «не совсем обучен» или «не полностью запрограммирован». При этом, бот может ошибаться, но, используя технологию «обучения с подкреплением», он может учиться на своих ошибках, если учитель дает положительную либо отрицательную оценку его высказываниям или явно поправляя его - говоря ему то, что он должен был сказать. Так и учатся дети. Это называется обучением с подкреплением и обучением с учителем, соответственно. Однако, помимо накопления статистического опыта от общения с родственниками, учителями и сверстниками, дети также получают в огромном объеме систему понятий и связей между ними, например: «ругаться - плохо, помогать - хорошо, плыть - глагол, плот - существительное, хищники едят мясо, травоядные едят траву, кошка это хищник, корова это травоядное». И тогда, когда у ребенка накапливается достаточно полная «картина мира» (называемая «онтологией») в виде понятий и связей наряду с многообразием «шаблонов» в виде грамматических конструкций, он в состояниями оперировать с любыми понятиями встречающимися в любых конструкциях, даже если не сталкивался с ними раньше. Это, так сказать, «системное обучение».
Именно поэтому в проекте Aigents (https://aigents.com/) мы решаем прежде всего принципиальную задачу - лежащую посередине двух первых «крайностей» («ручной настройки» и «самообучения»). Сначала, мы даем возможность агенту принципиальную оперировать с текстовыми «шаблонами» (которые могут быть достаточно сложными и включать синонимы и омонимы, варианты написаний, последовательности и переменные значения) и «онтологией» (системой понятий об окружающем мире). На начальном этапе, «шаблоны» и «онтология» могут быть настроены вручную. Однако, далее, «онтология» может расширяться по ходу взаимодействия агента с пользователем на основе «подкрепления». Также, агент может «брать пример» с пользователя или анализировать информацию в предоставляемых ему примеров для расширения своих познаний — как в «онтологии», так и в «шаблонах», формируя новые шаблоны и понятия в онтологии. Для последнего уже используются методы машинного обучения (включая «нейронные сети»).
По мере того, как агент начинает выявлять более общие и частные понятия, и то, как они отражаются в текстовых шаблонах, он получает возможность транслировать абстрактные сущности в «онтологии» («мама», «мыть», «рама») в конкретные объекты физического мира («моя любимая мама», «мыть сейчас и здесь», «рама этого конкретного окна»), а также переводить их через шаблоны («кто делает что где») в тестовое выражение («моя мама сейчас моет раму на этом окне») или наоборот — из текста на уровень понятий.
То, как мы в проекте Aigents (https://aigents.com/) работаем с текстом, рассказано в следующем видео-сюжете.
Кстати, Google в прошлом месяце последнюю задачу уже решил для одного частного случая - они научились с помощью машинного обучения строить как шаблоны так и системы понятий - пока только для задач машинного перевода, когда однозначная фраза на одном языке должна быть транслирована в примерно равнозначную фразу на другом. Так что - время разработчиков не ждет :-).
На сегодняшний день, агенты Aigents (https://aigents.com/) могут общаться с пользователем на «промежуточном» языке («interlingua»), про который рассказано в следующем видео-сюжете.
В наши планах, расширять их возможности за счет машинного обучения, приближая уровень диалога к «естественно-человеческому», по мере того как будут увеличиваться возможности машинного обучения самих агентов, а также — по мере того как их «системные знания» (в виде «онтологий») будут наполняться их пользователями.
А пока, существующий уровень диалога ботов Aigents представлен по следующей ссылке: http://aigents.com/test/aigents_turing_test.html
Моя самочувствия хорошо, температура нормальная, влажность 20:))) Ох, как все это сложно...
Да! Именно так пока :-) "Моя канава капай, твоя зарплата плати, начальника ма..."