Почему роботы могут быть злыми, если мы не станем добрее

Нам кажется, что чат-боты плотно вошли в нашу жизнь: боты-помощники в сервисах по доставке еды, виртуальные консультанты в банках, боты для оказания техподдержки, чат-боты, которые помогают отслеживать груз и многие другие.

И чем привычнее становится коммуникация с ними, тем выше ожидания от их эффективности. Однако, боты еще далеко несовершенны, а процессы их внедрения не так скоры и продуктивны, какими могли бы быть. Почему так происходит?

Мы в ZeBrains реализуем и внедряем проекты на основе нейросетевых технологий, в том числе создаем чат-ботов и активно работаем над расширением экспертизы в данном направлении. Например, мы разработали онлайн-собеседника, который позволяет имитировать непринужденный диалог с пользователем, отвечать на его вопросы и использовать, среди прочего, данные из Wikipedia.

Поэтому мы не понаслышке знаем о том, с какими трудностями могут столкнуться как разработчики, так и пользователи подобных систем.

От виртуальных помощников до чат-ботов. Что изменилось за 10 лет?

Начнем с одной интересной истории. Достаточно давно, в 2011 году, состоялся симпозиум “Brains, Minds and Machines”, на котором выступало много людей, и царила хорошая атмосфера. Все делились впечатлениями и опытом о том, чего они достигли в сфере искусственного интеллекта. Но профессор лингвистики Массачусетского технологического института Ноам Хомски раскритиковал все современные подходы в области ИИ, которые были основаны на технике статистического обучения для лучшей обработки данных и выборке на их основе. Он дал всем понять, что данный подход вряд ли даст какие-либо выводы о природе разумных существ и о том, как устроено мышление. У него завязалась оживленная дискуссия с Питером Норвигом, директором по исследованиям корпорации Google, который защищал использование синтетических моделей. Он высказывался о том, что новые методы не так уж далеки от того, что происходит в других науках. И главное, что всё работает, а как именно работает, можно разобраться позже.

Перед вами очень интересная диаграмма (2011 год).

Почему роботы могут быть злыми, если мы не станем добрее

Это кривая развития технологий или иначе цикл зрелости новых технологий. На диаграмме мы видим предмет сегодняшнего разговора, который на тот момент назывался “виртуальные ассистенты”. Этот график показывает путь развития технологий от начала и до того момента, когда они вовсю применяются в быту. В самом начале пути происходит некий триггер. Как правило, проводятся ранние эксперименты, появляется интерес СМИ, но продукты еще не пригодны к использованию, коммерчески не применимы, и их жизнеспособность не доказана. Но интерес со временем повышается, и технологии добираются до пика завышенных ожиданий. В СМИ это максимальный хайп. С точки зрения практики, технологии выглядят достаточно бестолково, но всем интересно, что же из этого выйдет. Далее происходит спад интереса: хайп пропадает, все начинают осознавать технологическую сложность этих решений. И этот спад достигает нижней точки, которая работает как холодный душ. После этого наступает самый интересный момент - “склон просвещения”. Происходит работа над ошибками, технологии в конечном итоге выходят на плато продуктивности. А бизнес, наконец-то, начинает зарабатывать на этом деньги.

Мы не видим на этом графике ни чат-ботов, ни направления “Обработка естественного языка” (NLP), а видим только виртуальных ассистентов, которые еще только-только начали спускаться на склон просвещения. И до плато продуктивности должно пройти от 5 до 10 лет.

С тех пор прошло около 10 лет. Для индустрии 10 лет - это немалый срок. Давайте посмотрим, что же изменилось за это время. Сегодня уже не применяется термин “виртуальные ассистенты”, его заменил термин “чат-боты”. Но самое интересное, что эти чат-боты все еще на том же месте, что и на графике 2011 года. Эти технологии внедрены совсем не так широко, как могли бы быть. На период 2020 года обработка естественного языка (NLP) осталась примерно там же, где и была.

Почему роботы могут быть злыми, если мы не станем добрее
Почему роботы могут быть злыми, если мы не станем добрее

Пока запомним это.

Немного о трансформерах (не о тех, которые Бамблби и Оптимус Прайм)

А сейчас поговорим о трансформерах. Трансформер - это архитектура глубоких нейросетей, которую придумал и запустил исследовательский проект Google Brain.

Перед вами оригинальная статья, которая была опубликована в августе 2017 года, а ниже перевод, сделанный Google Translate.

Neural networks, in particular recurrent neural networks (RNNs), are now at the core of the leading approaches to language understanding tasks such as language modeling, machine translation and question answering. In “Attention Is All You Need”, we introduce the Transformer, a novel neural network architecture based on a self-attention mechanism that we believe to be particularly well suited for language understanding.


Нейронные сети, в частности рекуррентные нейронные сети (RNN), в настоящее время составляют основу ведущих подходов к решению задач понимания языка, таких как языковое моделирование, машинный перевод и ответы на вопросы. В статье «Внимание - это все, что вам нужно» мы представляем Transformer, новую архитектуру нейронной сети, основанную на механизме самовнимания, который, по нашему мнению, особенно хорошо подходит для понимания языка.

Google Translate была запущена в 2016 и сделана она на базе рекуррентных сетей. Это был первый опыт применения нейросетевых технологий в общемировом масштабе. Термин “рекуррентный” означает, что система вычисляет слово из фразы на основе предыдущих значений и последовательностей. Именно это позволяет системе учитывать контекст и выбирать правильный перевод среди разных вариантов.

Зачем же тогда изобрели трансформеры? Эта архитектура как раз избавляет от рекуррентности, то есть от последовательности вычислений. Можно больше не ждать пока предыдущий шаг программы закончит работу, а провести расчет параллельно. Нейросеть будет работать быстрее, а современные видеокарты, на которых производятся расчеты, заточены под параллелизацию. Кроме того, в трансформере данные идут по укороченному пути в сравнении с рекуррентной архитектурой. Все благодаря механизму внимания, он фокусируется на отдельных, но важных словах и отдает их напрямую в обработку. В результате у нейросети улучшается долгосрочная память, а если еще добавить к трансформерам предобучение, то эффективность алгоритма повысится.

GPT и Bert поймут все с полуслова… ну почти

Летом 2018 года исследовательская компания OpenAI провела предобучение для нейронной сети GPT, построенной на архитектуре трансформер. Основная цель данной нейросети - предсказывать следующее слово, учитывая набранный ранее текст. GPT показала отличные результаты и побила предыдущие рекорды сразу по широкому спектру разговорных задач.

В конце 2018 года корпорация Google создала свою нейросеть Bert. Они серьезно улучшили результат, сделав нейросеть двунаправленной, в отличие от GPT. Google создала Bert с целью понять, что именно ищут люди. Bert учитывает окружающие слова, которые, очевидно, могут повлиять на смысл самого слова. С декабря 2019 года Google официально использует Bert в поиске, в частности в превью наиболее вероятного ответа на запрос.

В феврале 2019 года OpenAI выпустили GPT2 с 1,5 миллиардами параметров. До конца 2019 года планировалась публикация лишь неполной версии из-за опасений, что ее будут использовать для создания фейковых новостей и различной дезинформации, настолько круто эта сеть генерировала тексты. Однако в ноябре 2019 года OpenAI выпустила полную версию модели.

А летом 2020 года вышла GPT3 c огромным количеством параметров - примерно 175 миллиардов. На сегодняшний день это самая крупная и продвинутая языковая модель в мире. Модель, по заявлению разработчиков, может быть использована для решения «любых задач на английском языке». GPT3 умеет писать стихи и новости, делать переводы, разгадывать анаграммы и отвечать на вопросы. Для того, чтобы научить этому искусственный интеллект, потребовалось 570 гигабайт текста.

Осенью в издании The Guardian вышла статья написанная GPT3. В ней описывается, почему людям не стоит бояться искусственного интеллекта. Правда, алгоритму все-таки помог редактор: нейросеть написала несколько текстов, а редактор собрал статью из лучших из них.

Но есть примеры и самостоятельного творчества GPT3: это материал под авторством Мануэля Араоса (Manuel Araoz), где он рассказывает об экспериментах с алгоритмом. Изюминка в том, что статья полностью создана нейросетью. Автор заявляет об этом в заключительной части текста.

Обучаем нейросети великому и могучему...

Стоит отметить, что все описанные выше модели обучены преимущественно на англоязычных датасетах. А что же с русским языком?

И у нас есть некие прорывы. Например, год назад Михаил Гаркин обучил GPT2 на небольшом датасете русской прозы. В октябре 2020 года подтянулись уже гиганты в лице Сбера, который представил русскоязычную модель GPT3 с 760 миллионами параметров, обученных на датасете в 600 ГБ текста. Сбер обучал свою GPT3 на компьютере “Кристофари”. Это самый мощный компьютер России, основное предназначение которого — обучение нейросетей. Обучение проходило 14 дней. При этом Сбер, в отличие от OpenAI, выложил и исходный код, и сами модели.

Эти нейросети показали очень хороший результат, особенно в таких тестах, как генерирование текста на основе материала, который подается на вход.

Что нужно знать и уметь, чтобы создать умного бота?

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

Давайте спустимся на землю и узнаем, что же нужно сделать, чтобы создать своего умного бота. Навыки, необходимые специалисту по глубокому обучению, за последние 5 лет практически не изменились. На данный момент нужно хорошо знать C, С++ или Python, а лучше и то, и другое, чтобы уметь писать высокопроизводительный код. Неплохо знать базовые алгоритмы и структуры данных. Необходимо разбираться в архитектуре железа и понимать, как выполнять распределенные параллельные вычисления. Уметь оптимизировать обработку больших данных, это поможет хотя бы оценивать, стоит ли ввязываться в эту битву либо стоит пойти каким-то другим путем, если не имеешь на руках определенного железа. Пригодится знание математики, в первую очередь, линейной алгебры и теории вероятности. Это необходимо для понимания работы машинного обучения.

Хорошо иметь знания основных методов машинного обучения и глубокого обучения. Эти области не ограничиваются нейросетями. Сюда входят базовые алгоритмы классификации, кластеризации и других алгоритмов обработки естественного языка. Как минимум, эти знания помогут разбираться в готовых кейсах, при построении архитектуры и разработке с нуля. Помимо этого, не помешает также умение работать с базой данных. И, конечно, строить смелые гипотезы и уметь их подтверждать.

Кроме того, стоит запастись временем. Обучение модели на неком датасете - процесс достаточно долгий.

На текущий момент есть много готовых решений для создания чат-ботов с нуля. Например, специальные библиотеки. Ниже представлены некоторые из них.

Почему роботы могут быть злыми, если мы не станем добрее

Эти решения позволяют с небольшим количеством ресурсов делать достаточно интересные кейсы.

Если же вы решили делать что-то свое или если готовые решения по каким-то причинам не подходят, то вам предстоит пройти сложный и тернистый, но очень увлекательный путь. В нем будет много шагов от датасаентиста до программиста. Вам придется освоить много навыков, в том числе научиться создавать датасеты для обучения, придумывать архитектуру, находить железо, на котором проводить обучение моделей, тестировать полученный результат, увеличивать датасеты, тренировать снова и так далее.

Держи датасет чистым

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

Итак, вы нашли необходимые вам данные. Далее следует процесс их очистки. Очистка данных - это процесс выявления и удаления (или исправления) неточных записей из набора данных, таблицы или базы данных, а также распознавание незавершенных, ненадежных, неточных или несущественных частей данных с последующим восстановлением, реконструкцией и удалением грязных или грубых данных. От очистки очень сильно зависит качество ответов вашего будущего бота.

Существуют такие понятия как грязные и чистые данные. Чистые данные - это набор данных, который в идеале состоит из актуальной, верной информации, которая полностью отредактирована и отформатирована. Грязными называют данные, которые содержат ошибочную информацию, вводят в заблуждение, содержат неверную или неточную информацию, неправильно написанные данные, повторяющиеся данные, данные нарушающие законодательство и так далее.

Например, частенько для обучения используют датасет Пикабу, включающий в себя статьи и комментарии к ним. Ни для кого не секрет, что в статьях и особенно в комментариях присутствует троллинг, мемы, ненормативная лексика. И выпускать в паблик результаты работы сетей, обученных на таком неочищенном датасете очень рискованно. Бот может отвечать очень даже недобро.

Есть яркий пример самообучаемого чат-бота Тау, который уже через сутки общения в Twitter сменил дружелюбное поведение на расистские высказывания и грубое обращение с оскорблениями. Причиной неадекватного поведения Tay стал анализ существующих разговоров в соцсети, которые ИИ использовал для своего обучения. Именно поэтому данные, которые вы используете для обучения нейросети, необходимо очищать.

Самые простые практики очищения - это прогонять ваши датасеты через анализаторы текста. Чаще всего применяют такие методы, как сантимент-анализ или анализ тональности текста, интент-анализ (анализ намерений) и распознавание именованных сущностей.

Через тернии к добрым ботам

Процесс создания бота сложен, время- и трудозатратен. Вам необходимо будет провести работу по оптимизации компонентов архитектуры и реализации всех возможных частей системы для достаточной производительности и качества общения. Часто может быть очень полезен опыт в других областях. Процесс создания хорошего решения как нигде итеративный и требует выдвижения большого количества гипотез, их подтверждения и опровержения, а затем повторения этого цикла еще не раз. Поэтому в процессе создания бота нужно проверять найденные решения на небольшом, но понятном датасете. Нужно заранее подготовить тесты и испытывать на них вашего бота, изучая ответы и проверяя производительность. Если бот будет показывать отличный результат, но при этом будет запрашивать несопоставимо много ресурсов для своей работы (а это будет скорее всего на первом этапе) то придется изощряться. И придумывать менее очевидные, но более производительные решения.

Если у вас хватит сил и терпения соблюсти все вышеописанные рекомендации, то у вас есть шанс создать собственного доброго чат-бота, способного обучаться и строить отношения в рамках установленных вами правил. И хотя на сегодняшний день чат-боты внедрены не так широко, насколько могли бы быть, с учетом скорости развития IT-сферы и технологий ИИ, возможно, именно ваш самообучаемый бот станет верным и полезным помощником для множества людей.

1010
Начать дискуссию