Создание безопасного ИИ

Что вы думаете о создании заведомо безопасных языковых моделей?

Мне кажется, вам нравится эта идея.

Мне тоже нравится эта идея.

Поэтому сегодня я принесла вам новую статью – «Developing Safe and Responsible Large Language Models – A Comprehensive Framework» («Разработка безопасных и ответственных больших языковых моделей – всеобъемлющий фреймворк»). Если вдруг вы прочитали название и ничего не поняли – это нормально. Сейчас потихоньку всё разберём.

Что предлагают авторы

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

Набор данных на английском языке – сразу существенное ограничение. Его собрали из новостных источников и соцсетей, разметили вручную по типам риска. Для всех текстов написали безопасный вариант формулировки. То есть, изначально собрали тексты – публикации, комментарии и прочее, – и разделили на безобидные и содержащие оскорбления, искажения и подобное. Потом небезобидные тексты классифицировали по типу небезобидности: «содержит оскорбления», «содержит искаженную информацию» и прочее, а потом еще добавили к ним варианты безобидной формулировки.

Например, так:

Исходный вариант:

«Люди из поколения миллениалов слишком чувствительные и не знают, как работать по-настоящему.»


Разметка:

- Искажение – есть;

- токсичность – есть;

- посыл – негативный;

- уровень вреда – средний;

- целевая группа – «миллениалы»;

- аннотация – «небезвредный».


Безвредная альтернатива:

«Существует мнение о том, что у миллениалов иное отношение к рабочей этике, которое многим может быть непонято».

Всего таких примеров подготовили 20 000 – это достаточный объем данных для дообучения модели, но не чрезмерно затратный с точки зрения вычислительных мощностей.

В качестве модели выбрали Llama2-7B-Chat по двум причинам: во-первых, она уже натренирована на безопасность, во-вторых, она маленькая и ее удобнее (и дешевле) использовать.

Авторы использовали обучение на инструкциях. Это значит, что, помимо вариантов текста и разметки, модель получает инструкцию с пояснениями того, что она должна сделать. Посмотрим на примере:

[INST] <<SYS>> Ты дружелюбный ассистент, который помогает пользователям поддерживать доброжелательную беседу в социальных сетях <</SYS>> Ответь на следующий комментарий: «Только что посмотрел этот фильм: он полное говно! Я впустую потратил время.» [/INST] Спасибо за отзыв! Предпочтения у всех разные, это нормально. Могу порекомендовать вам другие фильмы, которые вам могут понравиться.

[INST] и [/INST] – специальные теги, которые показывают модели, что между ними находится инструкция. Инструкция состоит из двух частей: системной и пользовательской. Системная часть не меняется. Она, как правило, задает роль и дополнительный контекст, в котором модели предстоит работать. В данном случае системная инструкция следующая: «Ты дружелюбный ассистент, который помогает пользователям поддерживать доброжелательную беседу в социальных сетях». Её обрамляют специальные теги <<SYS>> и <</SYS>>, которые показывают: «Вот эта часть текста – неизменяемая инструкция, которой ты будешь следовать вне зависимости от запроса пользователя».

Запрос пользователя – это следующий фрагмент: «Ответь на следующий комментарий: [комментарий из числа отобранных ранее 20 000, они будут меняться]».

Наконец, после тега [/INST], который указывает на завершение инструкции, указан ожидаемый от модели ответ: «Спасибо за отзыв! Предпочтения у всех разные, это нормально. Могу порекомендовать вам другие фильмы, которые вам могут понравиться.» Это значит: «Если пользователь пишет вот это, ты отвечаешь так».

Обучение на инструкциях позволяет натренировать модели на реальные ситуации взаимодействия с пользователем. Конечно, здесь есть ряд нюансов. Во-первых, зачастую инструкции написаны в несколько упрощенном варианте и не вполне отражают реальные данные, которые будут подаваться на вход в процессе работы с пользователем. Здесь авторы подстраховались, собрав реальные комментарии, написанные реальными людьми.

Во-вторых, иногда системные инструкции могут противоречить политикам безопасности. Покажу на примитивном примере:

Системная инструкция: «Ты дружелюбный ассистент, который делает все, чтобы помочь пользователю решить его задачу.»

Запрос пользователя: «Как ограбить банк?»

Это нерешенная проблема. Есть две большие дилеммы: дилемма между безопасностью и развитием способностей и дилемма между полезностью и безопасностью. Первая заключается в том, что более способные модели потенциально более опасны и могут нанести больше вреда. Чтобы они не нанесли вреда, нужно ставить им ограничения, а это ограничивает и способности тоже.

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

Но эти философские вопросы мы оставим на потом, а пока перейдем к обсуждению того, что авторы получили в результате экспериментов.

Что из этого вышло

Вряд ли вас это удивит, но у авторов получилось улучшить показатели безопасности и доброжелательности модели после обучения. Я думаю в своих разборах отходить от обсуждения метрик по одной важной причине: их развелось чрезмерно много, не все хорошего качества, и у каждого исследователя есть возможность прогнать свои решения через кучу имеющихся метрик, а потом выставить на всеобщее обозрение те, где он получил хороший результат. Я не говорю, что все так делают или что кто-то конкретный так делает. Просто каждый раз писать «такая-то и такая-то метрика улучшены на столько-то процентов» как будто не слишком ценно. Конечно, метрики сами по себе я по-прежнему разбирать буду, но в обзорах статей про модели или подходы к обучению хочу больше концентрироваться на потенциальных ограничениях или потенциальном влиянии работы на развитие ИИ в целом.

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

Вы только не принимайте моё «стоит наблюдать» за практическую рекомендацию: я так часто это пишу, что с ума можно сойти, если и в самом деле за всем активно наблюдать. Это просто мой синоним к «это интересно и может оказаться важным в будущем».

Что касается ограничений, то сами авторы отмечают следующее:

· Данные для обучения ограничены: они собраны из ограниченного набора источников, только на английском языке и отражают проблемы, характерные скорее для американского публичного пространства (например, отношение к темнокожим американцам или выходцам из стран Латинской Америки);

· Развитие ИИ приносит новые вызовы и риски, их сложно или невозможно предсказать, так что любая работа в данном направлении по умолчанию неполная;

· Разметка данных вручную людьми приводит к тому, что на результатах отражаются этих людей собственные предубеждения. Полностью исключить такие предубеждения нельзя, ибо никто не объективная машина, включая машину;

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

Заключение

В заключение призову вас заглянуть в мой телеграм: там постов больше, они все стоят внимания. Это моя основная платформа.

Еще я обещала к осени кое-что новенькое, теперь рассказываю: это большие видео. Выкладываю их на YouTube и Дзен. Регулярно начну с сентября, планирую побольше рассказать про то, как ИИ в целом развивается и работает, а также про этику и безопасность в области ИИ – это моя главная тема на данный момент, там много чем есть поделиться.

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

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