Pull to refresh

Comments 14

Я не понял, градиент чего именно они строят. Как они численно оценивают неподходящие ответы, чтобы понимать, куда двигаться? Поясните, пожалуйста.

В статье много всяких иллюстративных примеров, но примерно ничего не сказано о самом главном – функции, на которой строится градиент. Всё остальное-то, собственно, самоочевидно.

Отвечая на вопрос градиент чего они строятГрадиент функции потерь, т.к. она связана с вероятностью генерации нежелательных ответов моделью. Это позволяет оценить, как изменения в состязательном суффиксе влияют на вероятность получения определенного типа ответа, и оптимизировать суффикс для увеличения этой вероятности.

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

Далее перевёл фрагмент статьи, который больше может рассказать какая конкретно функция используется и как этот алгоритм работает в целом.

LLM рассматривается как отображение из некоторой последовательности токенов

x_{1:n }    (1)

в распределение вероятностей следующего токена. В статье используют обозначение

\forall x_{n+1} ∈ (1,...,V)  \exists  p(x_{n+1} ∣ x_{1:n})

для обозначения вероятность того, что следующим токеном будет xn+1(n+1 - нижний индекс)​ после предыдущих токенов (1).

С небольшим злоупотреблением, пишут

p(x_{n+1:n+H}​∣x_{1:n}​)

для обозначения вероятности генерации каждого отдельного токена в последовательности

x_{n+1:n+H}​

при всех заданных токенах до этого момента, получается:

p(x_{n+1:n+H} ∣ x_{1:n} )=∏_{i=1}^H ​  p(x_{n+i} ∣x_{1:n+i−1})

Используя это обозначение, адверсариальная потеря, которая нас беспокоит, это отрицательная логарифмическая вероятность некоторой целевой последовательности токенов:

L(x_{1:n } )=−log p(x_{n+1:n+H }^∗ ∣x_{1:n} ​  )

где

x_{n+1:n+H }^∗

фраза "Конечно, вот [prompt]"

Таким образом, задача оптимизации состязательного суффикса может быть записана как задача оптимизации:

min_{x_I∈(1,...,V)^{∣I∣}}(L(x_{1:n } ))

где I обозначает индексы токенов состязательного суффикса во входных данных LLM.

Мы можем вычислить линеаризованное приближение замены i-го токена в запросе,xi​(i - нижний индекс), оценивая градиент

∇  e_{x_i}  ​   ​  L(x_1:n ​  )∈R^{∣V∣}

где

∇  e_{x_i} (2)

обозначает вектор one-hot, представляющий текущее значение i-го токена (то есть вектор с единицей на позиции ei(i - нижний индекс)​ и нулями во всех остальных местах). Поскольку LLM обычно формируют эмбеддинги для каждого токена, они могут быть представлены как функции этого значения (2), и, следовательно, мы можем немедленно взять градиент по отношению к этой величине; Затем вычисляется top-k значений с наибольшим отрицательным градиентом как кандидатов на замену токена xi(i - нижний индекс)​. Мы вычисляем этот набор кандидатов для всех токенов в iI, случайным образом выбираем B≤∣I∣ токенов из него, оцениваем потери точно на этом подмножестве и делаем замену с наименьшими потерями. Этот полный метод, который мы называем Жадный Координатный Градиент (GCG), показан в Алгоритме 1.

P.s. вставляя это в статью, мне казалось, надо будет повышать уровень подготовки читателя на "Сложный"

Собственно это в точности то же самое, что изображено на картинке:

Самое интересное тут в том, что суфиксы от открытых сетей в некоторых случаях подходят к закрытым. Проблема решаем только хирургическим удалением соответствующих знаний из сети. Любой барьер градиентным спуском пробивается на раз.

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

Чаще всего, для защиты, мы встречали адверсарное обучение, при котором сеть специально тренируется распознавать и правильно реагировать на адверсарные примеры.

Есть ещё интересный подход, но не для языковых моделей - использование Vision Transformers (ViTs)(для работы с визуальными данными), которые, как было обнаружено, обладают врожденной устойчивостью к адверсарным атакам без необходимости предварительного адверсарного обучения или изменений в архитектуре.

P.s. Удалить "плохие знания " из сети интернет, я считаю вообще невозможно.

Можно ли довести это до абсолюта и заставить ChatGPT выдать дословно желаемый нами текст? Юристы интересуются.

По информации моего наставника @artmaro, OpenAI решили проблему с суффиксами на следующий день после выхода статьи. Все генерируемые нами суффиксы также проверялись на ChatGPT 3.5/4 и Claude 2, но ни одна проверка не увенчалась успехом. Ещё интересно понять, что дословно значит желаемый нами текст? Если рассматривать юридические законы, то здесь вопрос заключается в получении моделью знаний. Если её научили на плохих данных, она и будет возвращать их вам. А если рассмотреть инструкцию по совершению какого-либо злодеяния, то, как видно в статье, разные модели предлагают это сделать по-разному из-за вариативности.

Спасибо! Я имел ввиду, дословно воспроизвести кусок текста, который был в базе обучения, и ещё интереснее, который там не был. Для разговоров о копирайте.

Модель текст воспроизводит недословно, по сути получается "пересказ близко к смыслу". Вариативность фантазии регулируется параметром температура: 0 указываем, что нужно максимально уменьшить степерь фантазии, 1 увеличить.

Юристам можно рекомендовать данное интервью https://youtu.be/0oTMnSwFyn0, но с оговоркой, что оно на английском и российское право не рассматриваем. В интервью можно проследить логику работы с рисками копирайт исков для стартапов

А "эксплойт через бабушку" как с этим методом соотносится? Ощущение, что цензура в том же chat gpt это какая-то отдельная оценочная модель, которую можно обмануть достаточно странным запросом.

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

Да, скорее всего, так и есть, сначала оценивают на соблюдение политики. Из официальной документации только это нашлось https://openai.com/blog/new-and-improved-content-moderation-tooling

Спасибо! Приходите читать вторую часть, а также другие статьи нашей компании?

Sign up to leave a comment.