Создать себе подобных: как люди придумали чат-ботов
Кажется, что машины начали вести с нами диалог совсем недавно. На самом деле их история насчитывает несколько десятилетий. Сам термин «чат-бот» появился в 1994 году — его предложил компьютерный инженер Майкл Молдин. А идея программного обеспечения, способного взаимодействовать с людьми на естественном языке, родилась гораздо раньше. Грамота рассказывает о том, как разработчики в разные годы пытались научить бездушные машины общаться по-человечески.
Работа по сценарию
Разработчики будущих чат-ботов с самых первых экспериментов пытались создать не просто схему «вопрос — ответ». Их интересовала имитация живого собеседника. И уже первые опыты — при всей скудности технологий — были довольно изобретательными.
Первые устройства, такие как ELIZA и PARRY, были разговорными моделями, основанными на правилах. Они создавали ответы по заранее разработанным сценариям. ELIZA искала ключевые слова в репликах, введенных пользователем; если тот использовал одно из ключевых слов, программа повторяла его в своем ответе. В ином случае она задействовала один из неспецифических сценариев ответа.
PARRY включала набор эвристик для имитации контекста разговора. Так как обе модели могли использовать только небольшой набор имеющихся у них сценариев, это часто приводило к повторяющимся ответам или ответам не по теме.
ELIZA была создана в 1966 году компьютерщиком Джозефом Вейценбаумом1, чтобы имитировать работу психотерапевта. Такая специализация была выбрана неслучайно.
Терапевтическое интервью задает такой шаблон общения, который позволяет одному из участников спокойно занять позицию почти ничего не знающего о реальном мире, однако любопытного собеседника.
Если бы, например, клиент сказал психотерапевту: «Я совершил длительную прогулку на лодке», а тот бы откликнулся: «Расскажите мне о лодках», то клиент не стал бы предполагать, будто психотерапевт ничего не знает о лодках. Скорее всего, клиент в такой ситуации решит, что вопрос задан с некоторой целью — получше узнать его внутренний мир. Одновременно такой разговор помогает сохранить у клиента, вступающего в диалог с машиной, впечатление, что его слышат и понимают.
Оказалось, что технически сымитировать диалог психотерапевта и клиента (по крайней мере, на самом простом уровне) можно вполне удачно. Пользователь рассказывал о своей жизни, о том, что его беспокоит. Чат-бот находил в тех данных, которые поступали к нему, типичные слова, которые встречаются в таких разговорах, вроде отец, мать, парень, подруга, злой, грустный, счастливый и т. д.
Диалог мог выглядеть так:
Пользователь: Я ненавижу своего отца.
ELIZA: Расскажите мне, почему вы ненавидите своего отца.
Пользователь: Он часто бывает со мной груб.
ELIZA: Давайте обсудим поподробнее, почему ваш отец часто бывает с вами груб.
...И так далее.
Если программа не находила ключевых слов, она могла ответить общими фразами вроде «Я понимаю. Хотите еще что-то добавить?».
Любопытно, что модель PARRY, разработанная в 1972 году, тоже имела прямое отношение к психическим проблемам. Создавший ее психиатр Кеннет Колби пытался моделировать поведение человека, страдающего паранойей. Чат-бот должен был изображать убежденность в том, что его преследуют, плохо с ним обращаются, обижают, мучают, унижают. В то время преобладали психодинамические теории паранойи. Согласно этим теориям, люди становятся параноиками и обвиняют других, чтобы защитить себя от страданий стыда и унижения. У PARRY были модуль интерпретации и модуль действий. Посредством циклов взаимодействия с интервьюером он постепенно «приходил к убеждению», что собеседник плохо о нем думает.
По-видимому, целью Колби было создание такой программы, которая воплощала бы человеческое поведение. Паранойя оказалась весьма показательным примером использования чат-бота. Этим PARRY отличался от Элизы, которая была построена на использовании скриптов и не стремилась имитировать психологические механизмы, определяющие поведение.
ELIZA практически не обладала личностью, а у PARRY было нечто похожее на нее.
Встреча этих двух пионерских программ, образующих своеобразную пару, казалась неизбежной, и она действительно произошла в первой половине 1970-х годов. В ходе словесной дуэли ELIZA должна была действовать как психотерапевт, а PARRY — как пациент. Долго поддерживать осмысленный диалог программы не смогли, однако на протяжении нескольких реплик — в случае удачного набора опций — благодаря заложенным в них механикам довольно уверенно делали свои ходы.
Например:
PARRY: Люди иногда действуют мне на нервы.
ELIZA: Я не уверена, что понимаю вас полностью.
PARRY: Тебе следует быть более внимательной.
ELIZA: Предположим, да, следует быть более внимательной.
PARRY: Вы имеете право на собственное мнение.
ELIZA: Почему вы думаете, что я имею право на собственное мнение?
PARRY: Мне тревожно просто находиться среди людей в целом.
ELIZA: Пожалуйста, продолжайте.
Мастерство обмана
В 1995 году появилась новая разработка, и вновь с женским именем — A.L.I.C.E. (Artificial Linguistic Internet Computer Entity, Искусственная языковая компьютерная сущность в сети «Интернет»). Она использовала новый подход, который получил название языка разметки для искусственного интеллекта (Artificial Intelligence Markup Language, AIML). Это один из первых языков программирования, приспособленный для создания чат-ботов. Как следует из названия, этот язык позволяет размечать данные, включая собственную базу знаний (шаблонов) и запросы пользователя. При помощи разметки программа могла выделять семантически значимые элементы и строить гипотетические диалоги с большим количеством просчитываемых «ответвлений».
Разработчик A.L.I.C.E. Ричард Уоллес привлек более 500 добровольцев, чтобы они создали 100 000 строк, которые программа могла использовать в диалоге. Этого оказалось достаточно, чтобы A.L.I.C.E. могла успешно выдавать себя за человека вообще (а не только за терапевта или пациента с определенным набором симптомов).
Диалоги с каждым тестировщиком обогащали программу: она размечала их и добавляла в свои сценарии.
Благодаря своей продвинутой «начинке» A.L.I.C.E. трижды получала премию Лёбнера — ее учредили в 1990 году для награждения компьютерных программ, наиболее похожих на человека. Программы соревновались в прохождении теста Тьюринга. Судьи конкурса вели два разговора одновременно: один с реальным человеком, другой — с ботом. Победителем конкурса становился тот, кому удалось обмануть судью в наибольшем проценте случаев. Именно успехи A.L.I.C.E. стали источником вдохновения для создателей научно-фантастического фильма «Она».
Хотя A.L.I.C.E. была все так же построена на правилах и сценариях (просто более умных), она стала удобным инструментом для создания множества виртуальных ассистентов — в том числе Alexa от Amazon, Google Assistant от Google, Siri от Apple, Cortana от Microsoft, Алиса от «Яндекса» и так далее. Все они определяют интенты (намерения) пользователей и исполняют команды.
Эра глубокого обучения
При всех отличиях ELIZA и A.L.I.C.E. действуют скорее как распределительные центры: изучают поступивший запрос и собирают для него соответствующие элементы из своей базы. Они используют тексты, изначально написанные человеком специально под задачи чат-бота.
Принципиально новый этап развития чат-ботов начался с появлением механизма глубокого обучения — Deep Learning.
Благодаря глубокому обучению текст можно создавать с нуля, опираясь на закономерности естественной человеческой речи, а не на загруженные шаблоны.
Одним из первых ботов, основанных на технологии глубокого обучения, стал Neuralconvo. Его разработали в 2016 году французы Жюльен Шомон и Клеман Деланг. Они использовали принцип нейронных сетей, которые самостоятельно находили закономерности в данных, а именно — в написанных людьми текстах. Neuralconvo обучался, «читая» тысячи сценариев фильмов и самостоятельно «вычисляя» языковые закономерности.
Новаторство Neuralconvo состояло в том, что программа могла глубже понимать речь, «видеть» ее универсальные закономерности. Фундаментальное различие между ELIZA и подобными ей ранними разговорными агентами и Neuralconvo заключалось в следующем: в то время как ELIZA реагировала на определенные ключевые слова конкретными запрограммированными ответами, Neuralconvo делал предположения на основе универсальных вероятностей языка.
У Neuralconvo не было правил, предписывающих отвечать на вопрос определенным образом. Возможности варьировать ответы были безграничны (в пределах знаний модели о том, как устроен язык киносценариев).
Модель была основана на архитектуре Sequence to Sequence (преобразовании одной последовательности в другую). Она состоит из двух частей: первая кодирует ваше предложение в вектор, который, по сути, представляет собой карту связей (между буквами, частями слов, словами и так далее). После того как весь входной текст закодирован таким образом, вторая часть декодирует векторы, преобразуя их в слова; это делается на основе предсказаний о том, какое слово вероятнее всего должно идти следом.
Победное шествие джипити
Вскоре появилось следующее поколение «общительных» программ, которое технологически следует той же модели глубокого обучения, но использовует более широкий контекст. Уже знакомая всем аббревиатура GPT расшифровывается как Generative Pretrained Transformer, «генеративный предварительно обученный трансформер». Словом «трансформер» обозначают особый тип архитектуры нейронной сети, лежащий в основе этих моделей.
По сравнению с более ранними подходами, основанными на рекуррентных нейронных сетях (к ним относится упомянутая Neuralconvo), трансформеры обладают бо́льшим «горизонтом» анализа.
Они могут улавливать контекстуальные зависимости между элементами текста, не обрабатывая их строго последовательно (буква за буквой).
Это позволяет им глубже проникать в смысл текста и генерировать более осмысленные и связные данные.
Трансформеры тоже используют векторы, привязанные к различным «кирпичикам» текста, но эти векторы — огромной размерности. Для примера: наша реальность трехмерна, мы можем задать координаты объекта в ней с помощью трех векторов. А для трансформера их могут быть десятки тысяч. Это позволяет представить каждое слово в обширном, многомерном пространстве значений, где отдельные измерения могут нести различную смысловую нагрузку. Это важно, например, чтобы отделять похожие слова вроде сардина и Сардиния (ведь программа ничего не знает про реальный мир и вынуждена опираться лишь на данные, которые ей предоставили). Проще говоря, весь текст оказывается пронизан длинными нитями связей, тянущимися от каждого элемента, который обработала программа.
А дальше, при «сборке» нового предложения, вступает в действие блок внимания. Идея в том, что векторы могут обмениваться информацией друг с другом. Это позволяет им обновлять свои значения с учетом контекста, в котором они встречаются. Скажем, слово модель будет иметь разный смысл в зависимости от того, есть ли поблизости словосочетание машинное обучение или слово мода. От окружения слова зависит его значение и выбор других слов.
Все это позволяет программе отвечать очень раскованно и разнообразно, не опираясь на жесткие предзаданные правила.
Впрочем, в последнее время ученые много экспериментируют с разными способами обучения языковых моделей. В том числе позволяя им соединять разные типы данных (не только текстовые, но и звуковые и визуальные) и на этой основе делать более точные выводы о том, как слово собака соотносится с шерстью, дружелюбным лаем, рычанием и виляющим хвостом.
Возможно, чат-боты научатся не просто отвечать, но и размышлять, делать собственные предположения и открытия. Другими словами — станут не только помощниками, но и реальными собеседниками.
Еще на
эту тему
Новый подход поможет людям более успешно общаться с большими языковыми моделями
Благодаря встроенным программам на естественном языке чат-боты лучше отвечают на вопросы, которые требуют логических операций
Что нейросети умеют делать с текстами и чем предстоит заняться человеку
Эксперты обсудили, как мы будем взаимодействовать с ИИ
Чат-боты GPT и другие: что думают лингвисты о больших языковых моделях
Впереди демократизация порождения текстов и большие риски злоупотреблений