6.3.4.4 Перспективные диалоговые модели
Речь идёт о ботах Meena от Google[1], [2] и BlenderBot от Facebook[3], [4]. Они были созданы на границе десятилетий и во многом могут рассматриваться как прародители диалоговых систем, появившихся в последующие годы. В основе обеих моделей лежат архитектуры, построенные на многослойных трансформерах, причём в случае BlenderBot, как можно догадаться по его названию (blend означает «смешение»), используется ансамбль из генеративных моделей и моделей на основе поиска.
Чтобы оценить вычислительные затраты на обучение этих моделей, достаточно взглянуть на число их параметров. В нейронных сетях Meena и BlenderBot соответственно 2,6 и 9,4 млрд синаптических весов, что делает их одними из самых больших на данный момент среди всех моделей глубокого обучения.
В качестве обучающей выборки для Meena были использованы диалоги, собранные в соцсетях, общим объёмом в 341 Гб (40 млрд слов)[5]. Сопоставимый по объёму датасет (около 237 Гб — 145,6 млрд 13-битных токенов) на основе бесед на платформе Reddit был использован создателями BlenderBot[6].
Оценка качества ответов чат-ботов, предназначенных для открытой предметной области, на самом деле задача не совсем простая. Для начала нужно понять, какая цель стоит перед диалоговой моделью. Если мы говорим о модели, служащей частью виртуального ассистента, подобного Siri или «Алисе», то перед такой системой стоит сразу несколько задач.
Во-первых, виртуальный ассистент должен обладать набором полезных навыков, таких как способность сообщить информацию о погоде, выполнить поисковый запрос в интернете, произвести арифметические расчёты, включить музыку, рассчитать оптимальный маршрут на карте, сыграть с пользователем в какую-нибудь игру, забронировать столик в ресторане и так далее. Подобные навыки виртуального ассистента являются своеобразным аналогом приложений в вашем смартфоне, с той лишь разницей, что их интерфейс приспособлен к работе в диалоговом режиме. Нередко разработчики виртуальных ассистентов доверяют разработку некоторых навыков внешним подрядчикам, и за каждым из навыков может стоять отдельная диалоговая модель, предназначенная обычно для собственной ограниченной предметной области. Таким образом, предметные области навыков становятся подмножествами открытой предметной области ассистента. Последняя, однако, обычно не является механической комбинацией закрытых предметных областей его навыков.
Во-вторых, помимо наличия полезных навыков, современные виртуальные ассистенты обычно способны решать две другие важные задачи: отвечать на вопросы для открытой предметной области (Open Domain Question Answering, ODQA) и поддерживать разговор на произвольные темы, или, проще говоря, болтать (chitchat). ODQA обычно сводится к задаче соотнесения вопроса пользователя и некоторой словарной статьи (источником которой может быть, например, онлайн-словарь или энциклопедия) и традиционно решается при помощи моделей, основанных на поиске. Таким образом, в сухом остатке мы имеем одну бесспорную задачу виртуального ассистента, в которой может быть востребована генеративная диалоговая модель, и эта задача — болтовня. Самая легкомысленная, на первый взгляд, задача, с технологической точки зрения оказывается наиболее сложной. И именно для решения этой задачи предназначены такие «монстры», как Meena и BlenderBot.
Как оценить качество болтовни? Беседа с chitchat-моделью должна приносить пользователю удовольствие, и эта цель отнюдь не тождественная цели, которая стоит перед ботами, участвующими в соревнованиях, подобных AI Loebner. Виртуальному ассистенту вовсе не нужно выдавать себя за человека, напротив, такое его поведение будет весьма странным. Ассистент должен давать осмысленные ответы на вопросы пользователя. Однако этого критерия явно недостаточно. Например, фраза «я не знаю» будет осмысленным ответом на практически любой вопрос, но вряд ли такой ответ удовлетворит пользователя. Поэтому вторым важным качеством ответа следует считать его специфичность текущему контексту. Именно на оценке этих двух свойств ответа основана метрика SSA (Sensibleness and Specificity Average, Средняя осмысленность и специфичность), предложенная создателями бота Meena.
Создатели Meena использовали следующую методику расчёта SSA. На краудсорсинговой платформе люди-оценщики оценивали диалоги разговорных агентов (в роли которых выступали различные диалоговые модели и люди). Каждый диалог начинался со стандартного приветствия (Hi!). В отношении каждой из реплик диалога оценщики должны были, руководствуясь здравым смыслом, рассудить, в полной ли мере она разумна в данном контексте. Если что-то казалось неправильным — запутанным, нелогичным, не соответствующим контексту или фактически неверным, тогда на вопрос о разумности реплики следовало дать отрицательный ответ. Если же ответ являлся осмысленным, то необходимо было оценить его специфичность в данном контексте. Например, если A сказал: «Я люблю теннис», а B ответил: «Это хорошо», то высказывание следовало пометить как «неспецифичное», поскольку этот ответ может быть использован во множестве различных контекстов. Но если B ответил: «Я тоже! Обожаю следить за игрой Роджера Федерера!», то такой ответ помечался как «специфичный», поскольку он был тесно связан с обсуждаемым вопросом.
Итоговая оценка рассчитывалась на основе 1600–2400 реплик из 100 диалогов каждого из агентов. Осмысленность рассчитывалась как доля положительных ответов от общего числа ответов на вопрос о разумности реплик данного агента. Специфичность, соответственно, — как доля положительных ответов на вопрос о специфичности реплик агента от общего числа ответов на данный вопрос. Величина SSA была рассчитана как среднее арифметическое специфичности и осмысленности.
Поскольку расчёт значения этой метрики возможен лишь на основе опроса экспертов, её величина не годится в качестве целевой функции в процессе обучения модели. На эту роль подходит только полностью автоматизированная метрика, такая, например, как оценка способности модели предсказывать реплики диалогов, входящих в обучающую выборку. В случае Meena модель в процессе обучения стремилась минимизировать величину перплексии (perplexity)[7], [8]. Чем ниже перплексия, тем более уверенно модель предсказывает токены (символы, части слов или слова) последовательности. Величина перплексии для последовательности токенов равна единице, делённой на среднее геометрическое вероятностей каждого из токенов последовательности.
Рассмотрим это на примере. Допустим, в нашей обучающей выборке содержится единственный диалог:
— У вас продаётся славянский шкаф?
— Шкаф продан, могу предложить никелированную кровать с тумбочкой.
Предположим, нам нужно оценить перплексию ответов модели при генерации второй (ответной) реплики этого диалога. Токенизатор (т. е. алгоритм, применяемый для разбивки текста на токены) представил эту реплику в виде последовательности из 11 токенов: «шкаф», «продан», «,», «могу», «предложить», «никелированную», «кровать», «с», «тумбочкой», «.» и «<END>» (специальный токен, означающий окончание реплики). Начнём смотреть вероятности, которые наша модель прогнозировала для каждого из токенов при генерации последовательности слева направо. То есть какова, по мнению модели, была вероятность того, что реплика, отвечающая на вопрос «У вас продаётся славянский шкаф?», начнётся словом «шкаф»? Допустим, модель считала, что вероятность этого составляет 0,1. Теперь возьмём следующую вероятность, а именно вероятность того, что реплика, которая является ответом на вопрос «У вас продаётся славянский шкаф?» и начинающаяся при этом словом «шкаф», будет продолжена словом «продан»? Допустим, эта вероятность равна 0,5. Поскольку наша модель генерирует слова ответа одно за другим слева направо, мы на каждом шаге просто добавляем к предшествующей последовательности очередной токен и вновь «просим» модель предсказать распределение вероятностей для следующего токена, затем выбираем из этого распределения вероятность для токена, на самом деле встреченного на следующей позиции в последовательности, и так далее до конца последовательности. Положим, в итоге для наших 11 токенов мы получили следующий набор вероятностей: 0,1; 0,5; 0,8; 0,9; 0,9; 0,9; 0,9; 0,9; 0,9; 0,9; 0,9. Теперь перемножим их между собой и извлечём из результата корень одиннадцатой степени — получим примерно 0,69. Теперь разделим единицу на это число и получим итоговое значение — приблизительно равное 1,45, что и будет перплексией данной последовательности ответов модели. Легко заметить, что чем с большей вероятностью наша модель предсказывает токены, тем меньше итоговая величина перплексии. При стопроцентной вероятности для каждого из токенов последовательности итоговая перплексия будет равна единице. Если бы каждому из токенов соответствовала вероятность 0,5, то итоговая перплексия была бы равна двойке. По мере уменьшения вероятностей величина перплексии стремится к бесконечности. Высокая перплексия последовательности с точки зрения модели означает, что эта последовательность является «неожиданной» для модели, плохо согласующейся с её прогнозом. Например, модель, обученная на большом корпусе рекламных текстов, скорее будет ожидать последовательность «Мы удовлетворим даже самого требовательного клиента», чем «Бумага летать кольцо вперёд красный!». Поэтому первая фраза будет обладать низкой перплексией, а вторая — высокой.
Перплексию часто используют в качестве целевой функции при обучении языковых моделей, так что в данном случае создатели Meena не открыли Америку. Однако весьма поучительным открытием стало то, что величина перплексии сильно коррелирует (коэффициент детерминации R2 = 0,93) со значением SSA. Чем ниже перплексия модели, тем более высокое значение SSA получают ответы диалоговой модели при оценке их людьми.
Интересны итоги сравнения диалоговых реплик Meena по метрике SSA с ответами людей и других разговорных агентов. Уверенную победу в сравнении одержали люди с показателем SSA = 0,86. Лучшая из модификаций Meena смогла получить SSA = 0,79. Неоднократный (2013, 2016, 2017, 2018, 2019) победитель AI Loebner[9] бот Mitsuku получил SSA = 0,56, а бот Xiaoice от Microsoft (по всей видимости, использовалась его англоязычная версия по имени Zo) — SSA = 0,31. Как видно из этого сравнения, новая модель от Google смогла преодолеть более половины разрыва в искусстве болтовни между людьми и чат-ботами[10].
Поскольку публикация разработчиков BlenderBot вышла в свет позже статьи создателей Meena, исследователи Facebook решили сравнить свои результаты с результатами коллег из Google. Задача осложнялась тем, что, в отличие от создателей BlenderBot, авторы Meena не спешили выкладывать свою модель в свободный доступ, поэтому специалистам Facebook пришлось довольствоваться сотней опубликованных записей диалогов с участием Meena. Оценщикам-людям показывали пары диалогов, в одном из которых собеседником человека выступал BlenderBot, а в другом — Meena. При этом оценщикам задавали два вопроса: «С кем бы вы предпочли общаться в ходе длительной беседы?» (оценка привлекательности) и «Какой из собеседников общается более по-человечески?» (оценка человекоподобия)[11], [12]. По обеим метрикам победителем оказался BlenderBot (75 : 25 в оценке привлекательности и 67 : 33 в оценке человекоподобия).
Более того, BlenderBot неплохо смотрелся даже в сравнении с людьми: в одном из экспериментов оценщики отдали предпочтение диалогам с его участием при сравнении с диалогами «человек — человек» в 49% случаев. Впрочем, авторы бота пишут в своей статье, что далеки от мысли, что им удалось полностью решить задачу ведения диалога с открытой предметной областью[13], [14]. Не менее впечатляющих результатов удалось достичь исследователям компании Baidu, из-под «пера» которых в 2020–2021 гг. последовательно вышли диалоговые модели PLATO[15], PLATO-2[16] и PLATO-XL[17]. Для оценки качества диалоговых моделей китайские исследователи используют свои метрики, представляющие собой развитие SSA, но в отличие от последней в PLATO вместо двух шкал оценки используются четыре: естественность [fluency], связность [coherence], информативность [informativeness] и общее качество [overall], а в PLATO-XL — пять: связность [coherence], противоречивость [inconsistency], информативность [informativeness], галлюцинации [hallucination] и вовлечённость [engagingness].
Впрочем, в наши дни для оценки качества диалоговых моделей активно продолжают использовать и простые попарные (side-by-side) сравнения по принципу: «какие реплики нравятся вам больше?» Например, на платформе Chat Arena [Чат-арена] любой желающий может дать сравнительную оценку ответов разных моделей, на основе чего формируется рейтинг LMSys (Large Model Systems Organization, Организация систем больших моделей)[18].
Словом, как и во многих других творческих задачах, проблема оценки качества полученных результатов в диалоговых системах стоит довольно остро. Тем не менее значительный прогресс, произошедший в этой области за последние годы, заметен невооружённым глазом. Идеи BlenderBot и Meena получили дальнейшее развитие в следующем поколении диалоговых моделей, таких как LaMDA[19], Anthropic assistant[20], WebGPT[21], BlenderBot 2[22], BlenderBot 3[23], Sparrow[24] и, наконец, ChatGPT[25], [26] и его многочисленные аналоги, о которых мы поговорим чуть позже.
- ↑ Adiwardana D. (2020). Towards a Conversational Agent that Can Chat About…Anything / Google AI Blog, January 28, 2020 // https://ai.googleblog.com/2020/01/towards-conversational-agent-that-can.html
- ↑ Adiwardana D., Luong M.-T., So D. R., Hall J., Fiedel N., Thoppilan R., Yang Z., Kulshreshtha A., Nemade G., Lu Y., Le Q. V. (2020). Towards a Human-like Open-Domain Chatbot // https://arxiv.org/abs/2001.09977
- ↑ Roller S., Weston J., Dinan E. (2020). A state-of-the-art open source chatbot / Facebook Artificial Intelligence, April 29, 2020 // https://ai.facebook.com/blog/state-of-the-art-open-source-chatbot/
- ↑ Roller S., Dinan E., Goyal N., Ju D., Williamson M., Liu Y., Xu J., Ott M., Shuster K., Smith E. M., Boureau Y.-L., Weston J. (2020). Recipes for building an open-domain chatbot // https://arxiv.org/abs/2004.13637
- ↑ Adiwardana D., Luong M.-T., So D. R., Hall J., Fiedel N., Thoppilan R., Yang Z., Kulshreshtha A., Nemade G., Lu Y., Le Q. V. (2020). Towards a Human-like Open-Domain Chatbot // https://arxiv.org/abs/2001.09977
- ↑ Roller S., Dinan E., Goyal N., Ju D., Williamson M., Liu Y., Xu J., Ott M., Shuster K., Smith E. M., Boureau Y.-L., Weston J. (2020). Recipes for building an open-domain chatbot // https://arxiv.org/abs/2004.13637
- ↑ * Данное слово может быть переведено на русский язык как «недоумение» или «растерянность», что неплохо отражает смысл этой метрики.
- ↑ Adiwardana D. (2020). Towards a Conversational Agent that Can Chat About…Anything / Google AI Blog, January 28, 2020 // https://ai.googleblog.com/2020/01/towards-conversational-agent-that-can.html
- ↑ Past Events (2020) / The Society for the study of Artificial Intelligence and Simulation of Behaviour // https://aisb.org.uk/aisb-events/
- ↑ Adiwardana D. (2020). Towards a Conversational Agent that Can Chat About…Anything / Google AI Blog, January 28, 2020 // https://ai.googleblog.com/2020/01/towards-conversational-agent-that-can.html
- ↑ * Этот метод оценки получил название Acute-eval [«Острая» или «умная» оценка].
- ↑ Li M., Weston J., Roller S. (2019). ACUTE-EVAL: Improved Dialogue Evaluation with Optimized Questions and Multi-turn Comparisons // https://arxiv.org/abs/1909.03087
- ↑ Roller S., Weston J., Dinan E. (2020). A state-of-the-art open source chatbot / Facebook Artificial Intelligence, April 29, 2020 // https://ai.facebook.com/blog/state-of-the-art-open-source-chatbot/
- ↑ Roller S., Dinan E., Goyal N., Ju D., Williamson M., Liu Y., Xu J., Ott M., Shuster K., Smith E. M., Boureau Y.-L., Weston J. (2020). Recipes for building an open-domain chatbot // https://arxiv.org/abs/2004.13637
- ↑ Bao S., He H., Wang F., Wu H., Wang H. (2019). PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable // https://arxiv.org/abs/1910.07931
- ↑ Bao S., Chen B., He H., Tian X., Zhou H., Wang F., Wu H., Wang H., Wu W., Lin Y. (2021). A Unified Pre-training Framework for Conversational AI // https://arxiv.org/abs/2105.02482
- ↑ Bao S., He H., Wang F., Wu H., Wang H., Wu W., Wu Z., Guo Z., Lu H., Huang X., Tian X., Xu X., Lin Y., Niu Z. (2021). PLATO-XL: Exploring the Large-scale Pre-training of Dialogue Generation // https://arxiv.org/abs/2109.09519
- ↑ LMSYS (2023). Chatbot Arena Leaderboard Updates (Week 2) // https://lmsys.org/blog/2023-05-10-leaderboard/
- ↑ Thoppilan R., Freitas D. D., Hall J., Shazeer N., Kulshreshtha A., Cheng H., Jin A., Bos T., Baker L., Du Y., Li Y., Lee H., Zheng H. S., Ghafouri A., Menegali M., Huang Y., Krikun M., Lepikhin D., Qin J., Chen D., Xu Y., Chen Z., Roberts A., Bosma M., Zhao V., Zhou Y., Chang C., Krivokon I., Rusch W., Pickett M., Srinivasan P., Man L., Meier-Hellstern K., Morris M. R., Doshi T., Santos R. D., Duke T., Soraker J., Zevenbergen B., Prabhakaran V., Diaz M., Hutchinson B., Olson K., Molina A., Hoffman-John E., Lee J., Aroyo L., Rajakumar R., Butryna A., Lamm M., Kuzmina V., Fenton J., Cohen A., Bernstein R., Kurzweil R., Aguera-Arcas B., Cui C., Croak M., Chi E., Le Q. (2022). LaMDA: Language Models for Dialog Applications // https://arxiv.org/abs/2201.08239
- ↑ Askell A., Bai Y., Chen A., Drain D., Ganguli D., Henighan T., Jones A., Joseph N., Mann B., DasSarma N., Elhage N., Hatfield-Dodds Z., Hernandez D., Kernion J., Ndousse K., Olsson C., Amodei D., Brown T., Clark J., McCandlish S., Olah C., Kaplan J. (2021). A General Language Assistant as a Laboratory for Alignment // https://arxiv.org/abs/2112.00861
- ↑ Nakano R., Hilton J., Balaji S., Wu J., Ouyang L., Kim C., Hesse C., Jain S., Kosaraju V., Saunders W., Jiang X., Cobbe K., Eloundou T., Krueger G., Button K., Knight M., Chess B., Schulman J. (2021). WebGPT: Browser-assisted question-answering with human feedback // https://arxiv.org/abs/2112.09332
- ↑ Shaster K., Weston J. (2021). Blender Bot 2.0: An open source chatbot that builds long-term memory and searches the internet / Meta AI blog, July 16, 2021. // https://ai.meta.com/blog/blender-bot-2-an-open-source-chatbot-that-builds-long-term-memory-and-searches-the-internet/
- ↑ Shuster K., Xu J., Komeili M., Ju D., Smith E. M., Roller S., Ung M., Chen M., Arora K., Lane J., Behrooz M., Ngan W., Poff S., Goyal N., Szlam A., Boureau Y., Kambadur M., Weston J. (2022). BlenderBot 3: a deployed conversational agent that continually learns to responsibly engage // https://arxiv.org/abs/2208.03188
- ↑ Glaese A., McAleese N., Trębacz M., Aslanides J., Firoiu V., Ewalds T., Rauh M., Weidinger L., Chadwick M., Thacker P., Campbell-Gillingham L., Uesato J., Huang P., Comanescu R., Yang F., See A., Dathathri S., Greig R., Chen C., Fritz D., Elias J. S., Green R., Mokrá S., Fernando N., Wu B., Foley R., Young S., Gabriel I., Isaac W., Mellor J., Hassabis D., Kavukcuoglu K., Hendricks L. A., Irving G. (2022). Improving alignment of dialogue agents via targeted human judgements // https://arxiv.org/abs/2209.14375
- ↑ OpenAI (2022). Introducing ChatGPT / OpenAI blog, November 30, 2022. // https://openai.com/blog/chatgpt
- ↑ Liu Y., Han T., Ma S., Zhang J., Yang Y., Tian J., He H., Li A., He M., Liu Z., Wu Z., Zhu D., Li X., Qiang N., Shen D., Liu T., Ge B. (2023). Summary of ChatGPT/GPT-4 Research and Perspective Towards the Future of Large Language Models // https://arxiv.org/abs/2304.01852