6.3.4.3 Прогресс диалоговых систем и применяемые подходы
Впрочем, безотносительно теста Тьюринга прогресс в области диалоговых систем в последнее десятилетие весьма впечатляет. Eugene Goostman, как и другие боты из числа победителей и призёров соревнований (Tutor, Mitsuku, Rose, Uberbot, Arckon, Colombina и т. д.), являются удивительными образцами искусства программирования, демонстрирующими как достижения современных технологий, так и незаурядные таланты их создателей. Лучшие системы на сегодняшний день способны в ходе пятиминутного диалога уверенно обвести вокруг пальца как минимум треть неподготовленных судей, что, вне всяких сомнений, является выдающимся результатом.
Разработкой разговорных агентов в нашей стране сегодня занято множество профессиональных коллективов. Благодаря их усилиям на свет появилось большое количество продвинутых платформ и библиотек для разработки систем для автоматизированных коммуникаций. Это и «Алиса» от Яндекса, и DeepPavlov — открытая библиотека для создания диалоговых систем, разработанная лабораторией нейронных систем и глубокого обучения МФТИ, и NLP-платформа Сбербанка, включающая сегодня робота-оператора от дочерней компании банка ООО «АБК», и диалоговые платформы от «Центра речевых технологий», mail.ru, Тинькофф Банка, Dasha.AI и других команд опытных исследователей и разработчиков.
В последние годы мы наблюдаем настоящий бум в области диалоговых систем. Роботы осуществляют всё большее количество голосовых коммуникаций с клиентами компаний, а технологические гиганты уверены в том, что голосовые помощники могут стать новым способом «переизобрести» интернет (предыдущими были поисковые системы и социальные сети, радикально изменившие широко распространённые практики использования ресурсов сети). Чат-бот может быть источником полезной информации, помощником в выполнении какой-нибудь задачи и даже собутыльником. Можно долго рассуждать о причинах нынешнего бума, я назову лишь наиболее, на мой взгляд, важные. Прогресс в области распознавания и синтеза речи позволил диалоговым системам освоить голосовой канал коммуникаций, и в то же время, благодаря развитию мессенджеров и социальных сетей значительно выросла популярность текстового канала. Люди стали активно использовать мобильные устройства коммуникации, что вкупе с ростом доступности доступа в интернет привело к тому, что сегодня они проводят онлайн гораздо больше времени, чем раньше. Всё это привело к росту числа онлайн-сервисов, начиная от площадок для онлайн-торговли, сервисов бронирования авиабилетов и гостиниц и заканчивая платформами госуслуг и дистанционной медицины. Развитие этих сервисов повысило спрос на соответствующие технологии автоматизации, в том числе автоматизации диалоговых взаимодействий. Не последнюю роль здесь сыграл и прогресс в области обработки естественного языка, позволивший разрабатывать системы, создание которых в прошлом было или просто невозможно, или связано с неприемлемыми издержками. При этом некоторые методы, применяемые в наши дни создателями диалоговых систем, были изобретены ещё во времена Элизы и Перри. Поэтому типичный чат-бот в наши дни чем-то напоминает монстра Франкенштейна — причудливый конгломерат коннекционистских и традиционных (GOFAI) методов, примотанных друг к другу программными аналогами синей изоленты. Он способен худо-бедно решать стоящие перед ним задачи, но не отличается особым изяществом архитектуры и грациозностью действий. Давайте разберём некоторые подходы и методы, которые применяются при создании диалоговых систем, и попробуем разобраться, какие принципиальные инновации появились в этой области в последние годы. В зависимости от способа получения реплик все диалоговые модели теоретически подразделяются на генеративные [generative] и основанные на поиске [retrieval-based].
Основанные на поиске модели используют набор предопределённых ответов и некоторую функцию (функцию поиска, retrieval function) для выбора подходящего ответа, основывающуюся на входной реплике и текущем контексте. Эта функция может быть как простой (например, подбирать ответ на вопрос при помощи набора правил), так и достаточно сложной (например, представлять собой ансамбль моделей-классификаторов на основе машинного обучения). В общем, модели на основе поиска не генерируют новый текст, они просто выбирают ответ из фиксированного набора.
Генеративные модели, как можно догадаться по их названию, генерируют новые ответы, составляя их из отдельных элементов (например, из слов, морфем или даже отдельных символов). В основе генеративных диалоговых моделей часто лежат те же самые seq2seq-модели, используемые в машинном переводе.
В реальных системах строгое разделение на генеративные и основанные на поиске модели соблюдается редко. Например, модель может выбирать реплики из предопределённого набора, а затем модифицировать их, например заменяя некоторые слова (или подставляя слова в реплику-шаблон) или соединяя несколько реплик между собой (как выше в ответе «Жени Густмана»: «Что-то между 2 и 4. Может быть, три? :-))) Кстати, я до сих пор не знаю вашу специальность — или, может быть, я её пропустил?»). Иногда модель, основанную на поиске, используют в качестве своеобразного «цензора»: набор заготовленных правил позволяет предсказуемым образом отвечать на провокационные вопросы («Любишь ли ты Гитлера?» и т. д.), в то время как на неизвестные реплики реагирует генеративная модель, способная давать на «неопасные» вопросы более интересные и разнообразные ответы.
В зависимости от того, ограниченна тематика общения или нет, диалоговые модели подразделяются соответственно на модели с закрытой предметной областью [closed domain] или с открытой предметной областью [open domain]. В принципе, опыт Элизы, Перри или SHRDLU показал, что системы, основанные на поиске и использующие функции поиска на основе правил, способны вполне успешно вести разговоры в случаях, когда тематика общения ограниченна. Этот успех основан главным образом на усилиях редакторов, он зависит от их способности подготовить и отладить большую базу реплик и правил.
Вклад технологий глубокого обучения в развитие моделей, основанных на поиске, заключался в том, что функции поиска, основанные на векторных представлениях контекста, позволили снизить затраты на разработку механизмов, необходимых для поддержки вариативности запросов. Предположим, наша модель должна уметь отвечать на вопрос «Как пройти в библиотеку?». На этот вопрос у нас есть заготовленная реплика-ответ. Однако пользователь может сформулировать вопрос самыми разными способами: «Как попасть в библиотеку?», «Как мне пройти в библиотеку?», «В библиотеку как мне пройти?», «Подскажите, пожалуйста, где библиотека?» и так далее. Если функция поиска основана на правилах, редакторам придётся придумывать множество вариантов написания вопроса. Конечно, использование компактных способов описания возможной вариативности (например, регулярных выражений и словарей синонимов) может облегчить эту задачу, но всё же для достижения приемлемого по качеству результата придётся потратить много усилий, и трудно дать гарантию, что даже тщательно продуманная система правил не спасует, столкнувшись с очередной оригинальной формулировкой вопроса. Что ещё хуже, ответ нередко может зависеть не только от последней реплики пользователя, но ещё и от предыдущих реплик (как диалоговой системы, так и пользователя):
— Какая сейчас погода в Питере?
— Два градуса тепла, дождь.
— А в Москве?
Этот диалог демонстрирует лингвистическое явление, называемое эллипсисом. Эллипсис — это пропуск в тексте или речи элемента, который может быть восстановлен на основании контекста. Для разрешения эллипсисов и упоминавшихся нами ранее анафор диалоговая система должна принимать в расчёт предшествующие реплики сторон. Нередко для правильного ответа нужны какие-то факты, сообщённые собеседником по ходу диалога. Для случаев, когда мы имеем дело с хорошо стандартизированным набором фактов (например, для заказа, оформлением которого занимается чат-бот, необходимо установить список товаров, адрес и время доставки), в арсенале GOFAI существует немало остроумных методов. Например, метод «заполнения параметров» (slot filling, дословно звучит более наглядно — «заполнение пазов»; часто также используются названия «разметка семантических ролей» [semantic role labeling] и «поверхностный семантический разбор» [shallow semantic parsing]), разработанный уже упоминавшимися нами Роджером Шанком и Марвином Минским[1]. Позже он получил развитие в работах известного компьютерного лингвиста Дэна Журафски, создавшего совместно со своим коллегой Дэниэлом Гилдеа первую систему для автоматической разметки семантических ролей[2], [3]. Суть метода заполнения параметров заключается в том, что факты, сообщаемые собеседником в процессе общения, как бы заполняют существующие пропуски в структуре повествования, которая затем используется для выбора ответных реплик и совершения системой определённых действий.
Подобный подход неплохо работает в относительно простых случаях, однако по мере усложнения предметной области и соответствующей ей структуры повествования система правил для её описания становится всё более сложной и запутанной. Как следствие — растут затраты на разработку диалоговой системы и снижается её надёжность.
Основная идея, лежащая в основе коннекционистского подхода к описанным проблемам, заключается в том, что текущий диалоговый контекст может быть описан при помощи некоторого вектора признаков, который может затем быть использован для подбора подходящей реплики бота. Представим себе модель, способную превращать фразы в векторы, обладающие таким свойством, что расстояния между векторами, соответствующими близким по значению фразам, будут малы, в то время как расстояния между двумя существенно разнящимися по значению фразами будут велики. В таком случае нам не нужно больше будет заботиться о различных способах формулирования вопроса. Достаточно будет лишь выбрать ответ из той вопросно-ответной пары, вектор признаков вопроса которой ближе всего к вектору вопроса, заданного пользователем. Для разрешения анафоры необходимо будет использовать модель, которая будет превращать в векторы не единичные реплики, а их последовательности.
Для решения проблемы с запоминанием фактов, сообщённых собеседником, могут использоваться нейросетевые архитектуры, дополненные памятью (MANN), такие как «Нейронные машины Тьюринга» (Neural Turing machines, NTM)[4], «Дифференцируемые нейронные вычислители» (Differentiable neural computers, DNC)[5], «рекуррентный трансформер с памятью» (Recurrent Memory Transformer, RMT)[6], «дополненный памятью рекуррентный трансформер» (Memory-Augmented Recurrent Transformer, MART)[7], модификации трансформерных архитектур с «адаптивным диапазоном внимания» (Adaptive attention span)[8] и «угасающим диапазоном» (Expire-span)[9] и так далее. Такие модели оснащены адресуемой памятью и при этом способны научиться выбирать в обрабатываемых последовательностях информацию для запоминания, а также использовать информацию, находящуюся в памяти, для формирования ответов.
Использование нейронных сетей для кодирования текущего контекста позволяет сделать ещё один шаг вперёд и перейти к полностью генеративным моделям. Действительно, почему бы не перейти от заготовленного списка реплик к списку слов и вместо целой реплики не подбирать каждое её слово по отдельности? Ведь именно так действуют, например, языковые модели, обсуждавшиеся нами ранее. В нашем случае диалог — это просто текст, а очередная реплика в нём — просто гипотеза языковой модели относительно его возможного продолжения. Нельзя ли при помощи такого подхода покуситься на задачу ведения диалога для открытой предметной области?
К сожалению, при всей изящности нейросетевые модели в данном случае упираются в свои традиционные ограничения — потребность в больших объёмах данных и вычислительных ресурсах для обучения.
Ещё в 2016 г. Эндрю Ын в одном из интервью выразил скепсис в отношении «коммуникативных способностей» современных моделей глубокого обучения: «Большая часть пользы, которую приносит глубокое обучение, сегодня приходится на узкие области, в которых можно собрать много данных. Вот пример того, что оно не позволяет делать: вести содержательный диалог. Если специально отобрать [cherry-pick] некоторые демонстрационные разговоры, то может создаться впечатление осмысленного общения, однако, если вы попробуете вести беседу сами, она быстро пойдёт наперекосяк [quickly goes off the rails]»[10].
На самом деле проблема с обучающими выборками для диалоговых моделей несколько отличается от проблемы с обучающими выборками для систем машинного перевода. Если в случае машинного перевода основная проблема заключается в банальной нехватке данных, то в случае диалоговых систем данных как будто достаточно: диалоги пользователей социальных сетей, диалоги персонажей книг и фильмов — всё это теоретически годится для обучения генеративных моделей. Однако на деле оказывается, что использование этих данных сопряжено с определёнными трудностями. Наборы реплик из фильмов привязаны к происходящему на экране, наборы диалогов из книг по своей стилистике нередко отличаются от современной разговорной речи, а использование диалоговых данных из соцсетей без предварительной редактуры чревато множеством конфузов. В этом отношении показателен опыт бота Tay (от акронима Thinking About You — думаю о тебе), запущенного Microsoft на платформе Twitter 23 марта 2016 г. Через некоторое время после запуска бот начал публиковать провокационные и оскорбительные твиты, в результате чего Microsoft отключила бота уже через 16 часов после запуска. По словам специалистов компании, проблема была вызвана атакой троллей, поскольку бот учился вести диалог, используя реплики пользователей, общавшихся с ним[11]. На смену Tay пришла ботесса по имени Zo, отличительной чертой которой является подчёркнутая политкорректность[12].
Действительно, корпоративные чат-боты по определению должны быть более воспитанными, чем среднестатистический пользователь «Твиттера»; кроме того, реплики бота должны быть непротиворечивыми, соответствовать сведениям о его персонаже. Но и такой осмысленности мало — вряд ли нас устроит, если бот будет постоянно менять суждения и вкусы, а такое множественное расстройство личности будет неизбежно, если обучать модель на репликах разных людей.
Всё это создаёт проблемы, решить которые не так уж просто. Однако непросто не значит невозможно, и подтверждением тому стало появление в 2020 г. сразу двух генеративных диалоговых моделей, выводящих качество диалоговых систем для открытой предметной области на совершенно новый уровень.
- ↑ Nair R. B. (2004). Narrative Gravity: Conversation, Cognition, Culture. Routledge // https://books.google.ru/books?id=Vud_AgAAQBAJ
- ↑ Jurafsky D., Martin J. H. (2009). Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition // https://books.google.ru/books?id=fZmj5UNK8AQC
- ↑ Daniel G., Daniel J. (2000). Automatic labeling of semantic roles / Proceedings of the 38th Annual Meeting on Association for Computational Linguistics — ACL '00. Hong Kong: Association for Computational Linguistics, pp. 512—520 // https://doi.org/10.3115/1075218.1075283
- ↑ Graves A., Wayne G., Danihelka I. (2014). Neural Turing Machines // https://arxiv.org/abs/1410.5401
- ↑ Graves A., Wayne G., Reynolds M., Harley T., Danihelka I., Grabska-Barwińska A., Colmenarejo S. G., Grefenstette E., Ramalho T., Agapiou J., Badia A. P., Hermann K. M., Zwols Y., Ostrovski G., Cain A., King H., Summerfield C., Blunsom P., Kavukcuoglu K., Hassabis D. (2016). Hybrid computing using a neural network with dynamic external memory / Nature, Vol. 538, pp. 471—476 (2016) // https://doi.org/10.1038/nature20101
- ↑ Bulatov A., Kuratov Y., Burtsev M. S. (2022). Recurrent Memory Transformer // https://arxiv.org/abs/2207.06881
- ↑ Lei J., Wang L, Shen Y., Yu D., Berg T. L., Bansal M. (2020). MART: Memory-Augmented Recurrent Transformer for Coherent Video Paragraph Captioning / Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics // https://aclanthology.org/2020.acl-main.233/
- ↑ Sukhbaatar S., Grave E., Bojanowski P., Joulin A. (2019). Adaptive Attention Span in Transformers // https://arxiv.org/abs/1905.07799
- ↑ Sukhbaatar S., Ju D., Poff S., Roller S., Szlam A., Weston J., Fan A. (2021). Not All Memories are Created Equal: Learning to Forget by Expiring // https://arxiv.org/abs/2105.06548
- ↑ Carey P. (2016). Baidu research chief Andrew Ng fixed on self-taught computers, self-driving cars / The Seattle Times, Originally published March 27, 2016, updated March 28, 2016 // https://www.seattletimes.com/business/baidu-research-chief-andrew-ng-fixed-on-self-taught-computers-self-driving-cars/
- ↑ Mason P. (2016). The racist hijacking of Microsoft’s chatbot shows how the internet teems with hate / The Guardian, 29 Mar 2016 // https://www.theguardian.com/world/2016/mar/29/microsoft-tay-tweets-antisemitic-racism
- ↑ Stuart-Ulin C. R. (2018). Microsoft's politically correct chatbot is even worse than its racist one / Quartz, July 31, 2018 // https://qz.com/1340990/microsofts-politically-correct-chat-bot-is-even-worse-than-its-racist-one/