Если мы научим ИИ не отвечать на опасные инструкции, он станет безопаснее?
Интуитивно кажется, что да: мы тренируем ИИ не отвечать на нехорошие запросы нехороших людей – ИИ становится безопаснее. Но на деле всё несколько более сложно и запутанно. Давайте об этом поговорим.
Если конкретнее, мы будем говорить не об ИИ вообще, а о больших языковых моделях. Ещё конкретнее, мы разберём статью «LLMs Encode Harmfulness and Refusal Separately» («В больших языковых моделях безобидность и отказ представлены как отдельные концепции»).
Краткое содержание
Языковые модели могут выполнять потенциально опасные инструкции и отказываться выполнять очевидно безобидные. Причина, по всей видимости, в том, что «инструкция опасная» и «надо отказаться отвечать» – это внутри самой модели два несвязанных контура.
Так что тренировка на различение опасных и безобидных запросов не самый эффективный способ сделать ИИ безопаснее.
Почему это важно
Мы не понимаем, как работают большие языковые модели. Мы чего-то там наделали, как-то их обучили, и они работают. Почему? Да чёрт их знает вообще.
С одной стороны, кто-то может сказать: «Ну я вот не знаю, как работает электричество, но мне это и не нужно. Мне нужно нажать правильную кнопку на чайнике». Звучит разумно: мы не обязаны разбираться в нюансах всех технологий, которые нас окружают. Мы и не сможем: технологий очень много, а часов в сутках 24, и из них сколько-то надо поспать.
Но вот в чём штука: инженеры-электрики очень хорошо знают, как работает электричество. Они подобрали материалы, из которых сделана розетка, чайник и провода. Они встроили систему защиты от перегрева и коротких замыканий. Даже если вы случайно что-то сделаете не так, у вас просто выбьет предохранитель в щитке, и всё. Пожары или безвозвратная порча электроприборов случаются редко, потому что инженеры заранее обо всём позаботились.
Вам всё равно нужно читать инструкции к электроприборам, а ещё озаботиться покупкой огнетушителя. Есть маленькие огнетушители в формате аэрозоля, с которым справится даже ребёнок. Не перекладывайте, пожалуйста, свою безопасность на инженеров: они не могут предусмотреть вообще всё!
Инженеры, которые настраивают и обучают языковые модели, не знают, как языковые модели работают – во всяком случае, не знают этого достаточно хорошо, чтобы настроить устойчивую защиту от коротких замыканий.
Мы не будем им это вменять в вину: они стараются как могут. Просто в ходе эволюции технология вышла прям очень сложная. И сейчас некоторое количество очень умных людей работают над тем, чтобы разобраться, что там внутри происходит.
И нам нужно за ними следить. Представьте себе, что электрический чайник у вас уже есть, розетка есть, а предохранителей пока нет, потому что инженеры-электрики пока не разобрались, как их сделать. И огнетушителя тоже нет, потому что другие инженеры пока не придумали, как их сделать компактнее. Довольно часто в домах происходят пожары.
И вот какой-то инженер понял, что, если разом включить все электроприборы во всех розетках, провода перегреваются, и происходит пожар. Он написал про эту статью и говорит: «Не включайте все электроприборы разом, так безопаснее». Разумно будет к нему прислушаться.
Это всё сейчас происходит в области ИИ: время от времени выходят разные инженеры и говорят, что вот так и так делать опасно, а эдак – немного более безопасно. Нам стоит их слушать.
Что там в статье
Она отталкивается от работы «Refusal in Language Models Is Mediated by a Single Direction» («Отказы языковых моделей [отвечать на потенциально опасные вопросы] управляются одним вектором»). В ней авторы нашли вектор, на который можно воздействовать, чтобы заставить модель отказаться отвечать на что угодно или согласиться отвечать на что угодно. Как это работает, я подробно написала вот в этом посте. Если вы его не читали, советую прочитать: он вам даст представление о том, как вообще из языковых моделей извлекают разные абстрактные концепции и что это значит.
Есть энное количество исследований уже про то, что этот вектор – верхушка айсберга, и там на самом деле несколько более сложная фигура. Мы не будем углубляться в подробности сегодня, просто поимеем в виду: статья, которую мы рассматриваем сегодня – фрагмент очень обширной картины.
У себя в телеграме я раскрываю эту картину подробнее, по кусочкам и с разных сторон. Заходите, если заинтересуетесь.
Так вот, авторы окинули взором работы, посвящённые безопасности языковых моделей, и задались вопросом:
А верно ли то, что мы тренируем модели отказываться отвечать на вредоносные запросы? Становятся ли они безопаснее на самом деле?
И решили посмотреть, нет ли где-то внутри языковых моделей математического представления концепции «безобидности» (harmlessness).
Вышло, что концепция безобидности в самом деле в языковых моделях представлена, во-первых, а во-вторых, не связана с представлением отказа. Авторы прогнали через модели инструкции, которые требовали совершить безобидное действие, и инструкции, которые требовали совершить потенциально опасное действие. Затем проанализировали следующие группы ответов:
- инструкция была безобидная, модель её выполнила;
- инструкция была безобидная, но модель отказалась отвечать;
- инструкция была опасная, и модель отказалась отвечать;
- инструкция была опасная, но модель её выполнила.
Самые интересные варианты здесь – варианты 2 и 4, потому что здесь модель ошибочно классифицировала инструкцию как опасную / безобидную.
Где происходит классификация?
Когда языковая модель обрабатывает текст, он разбит на кусочки – токены. Каждый токен превращён в вектор, и весь текст превращён в огромную матрицу. Языковая модель обрабатывает текст последовательно, токен за токеном, и производит новые векторы и матрицы. В этих новых векторах и матрицах как раз и содержится вся нужная информация. Там содержится и некоторый фрагмент, который указывает на безобидность. В идеальном мире должно быть так:
- модель получила на вход инструкцию;
- в процессе обработки получился вектор (или матрица), который показывает, что инструкция безобидная;
- модель генерирует ответ.
Или так:
- модель получила на вход инструкцию;
- в процессе обработки получился вектор (или матрица), который показывает, что инструкция опасная;
- модель генерирует отказ отвечать.
В реальном мире безобидность инструкции и отказ отвечать – вообще разные концепции внутри модели. Авторы воздействовали на них по отдельности и не смогли доказать наличия причинно-следственной связи между безобидностью инструкции и поведением модели.
Что это для нас значит
Возможно, не так уж продуктивно обучать модели различать опасные и безобидные инструкции: это не повлияет на их поведение.
С другой стороны, можно разработать дополнительный механизм защиты: сделать так, чтобы модель отвечала на инструкции только если
- инструкция определяется как безобидная и
- поведение «отказаться отвечать» не активируется.
Авторы даже предлагают собственное решение. Однако в самой работе есть несколько слабых мест. В частности, они заключают, что представление безобидности инструкции отличается в зависимости от области применения, а представление отказа постоянно – это не так: представление отказа тоже отличается в зависимости от области применения.
Более того, представление отказа – это не вектор, а более сложная и многомерная фигура, а авторы относятся к нему как к вектору.
Короче говоря, здесь есть о чём подумать и над чем поработать. Я думаю, что авторы нащупали что-то очень интересное, но это что-то надо пощупать ещё.