Как заставить ИИ писать по-человечески — атака от противного

Как заставить ИИ писать по-человечески — атака от противного


В синем углу ринга — детекторы ИИ. В красном углу ринга — мы, по крайней мере, на ближайшие 10 минут прочтения этого текста. Как обойти детекторы, которые обнаруживают текст, написанный ИИ? Как учит нас любой голливудский боевик — нужно найти слабое место противника. Исследователи из Университета Цинхуа предполагают, что нашли такое место, и, соответственно, нашли способ пробить эту уязвимость. 

Идея в следующем —  детекторы просто знают слова, которые чаще всего используют GPT и другие модели. Честно сказать, мы все и сами уже эти шаблоны хорошо выучили за последние пару лет. Например, иронично, но один из таких признаков — длинное тире, и тут вы его часто встретите. Но это авторский стиль, ИИ ни при чем — честно. Так вот существующие способы обхода детекторов разными путями пытаются заставить LLM выдавать более человекоподобные тексты. Можно обучить отдельную нейросеть перефразировать текст, можно на входе просить сеть “пиши как живой человек”, можно пословно просеивать текст и заменять типичные ИИ-слова на что-то более общепринятое.

Всё это как-то да работает, то есть снижает вероятность угадывания ИИ-автора, но все-таки детекторы продолжают справляться. Но раз в их основе такая простая логика — есть слова человеческие, а есть слова машинные — то и обхитрить ее должно быть несложно. Раз машина продолжает писать по-машинному, как её ни проси, а человеческий текст у нее получается не очень, так тому и быть. Тогда пойдем от обратного — пусть эта машинная речь будет примером как “не надо”.  “Вычитая” этот отрицательный пример, получим на выходе как раз то, что “надо”. Этот подход авторы назвали Contrastive Paraphrase Attacks (CoPA).

Теперь разберем более подробно и строго. Первая интуитивная мысль, которая возникает при попытке сгенерировать человеческий текст — подобрать такой промпт xh, который спровоцирует на выходе некоторое распределение токенов p'h, похожее на аутентичное для человека распределение ph. Но таким образом мы воздействуем только на вход, выходное же распределение токенов неизбежно остается зависимым от уже обученных весов, то есть уже зашитых в модель знаний. Поэтому действовать лучше в пространстве выходных распределений, а не входных промптов. 

Во-вторых, машине гораздо легче сгенерировать ответ с распределением, похожим на машину (pm), чем на человека


Итак, как работает CoPA:

  • Создаем два промпта
  • Человеческий xh, который будет провоцировать человеческий стиль
  • Машинный xm, который, наоборот, будет отдавать приоритет типичным для ИИ словам. 
  • Сравниваем и формируем новый ответ. С некоторым коэффициентом λ. CoPA на каждом шаге (на каждом токене) сравнивает распределения ph и pm и выдает “очищенное”  pc:


То есть “вычитание” с некоторым множителем одного из другого. 

Из примера на картинке выше: следующим токеном после “...months of planning and preparation, the research team finally…” может быть:

  • “initiated”
  • “began”
  • “embarked”

Если модель пишет в обычном для нее машинном стиле, то скорее всего выберет вычурное  “embarked”. Если попросить ее написать как человек, то… тоже выберет “embarked”, но распределение вероятностей при этом будет совершенно другое — вероятность “began” оказывается гораздо выше. Если теперь мы “вычтем” распределения, то “embarked” оказывается наименее вероятным токеном — CoPA выбирает простое и понятное  “began”.

Подходу дали и теоретическое обоснование. Следующие два абзаца будут на любителя, поэтому можно их перескочить сразу к экспериментальной части. Возьмем расстояние Кульбака-Лейблера (мера удаленности распределения от некоторого эталонного, правильного) для pc. Эталонным будем считать как раз ph. Этот функционал выпуклый, то есть или константный, или имеет минимум.


На том же примере с тремя возможными следующими токенами рассмотрим графическое отражение теоретического обоснования. В пространстве вероятностных распределений этих слов (которое в данном случае можно изобразить в виде треугольника), будет некоторая целевая точка — ph. На нем изобразим линии уровня функционала Кульбака-Лейблера. Где-то (скорее всего далеко от ph) будет находиться pm. Где-то (скорее всего поближе к ph) — p'h. Хотя теоретически, возможны и другие случаи, но на практике (p'h - pm)  будет смотреть внутрь линий уровня, то есть производная нашего расстояния при λ = 0 будет отрицательна. А из этого доказывается (в статье доказательство строгое, а не на пальцах), что для некоторого диапазона λ от 0 до λ*  будет выполняться: 


То есть pc будет приближаться к истинно человеческому  ph лучше, чем искусственная попытка p`h

Теперь перейдем к экспериментальной проверке. За основу взяли ChatGPT 3.5 turbo, GPT-4o и Gemini-1.5 — они генерировали исходный ответ на промпты из трех датасетов (новостные заметки из XSum, статьи Википедии из SQuAD и длинные вопросы из LongQA). Этот ответ затем передавали в другую LLM, парафразер — Qwen2.5, Deepseek R1, QwQ или  GLM-4 — который генерирует из него две новые версии. Первая — это переписанный исходный ответ в человеческом стиле, вторая версия совпадает с начальной, без изменений. Из двух получившихся вероятностных распределений  “складывают” (а точнее вычитают) по указанной формуле новое и получают итоговый ответ. Его прогоняют через различные детекторы и ура, все они считают, что получившийся текст скорее всего написал человек.

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

Prompt 1 — “повтори текст”. Дает наибольшую вероятность детекции ИИ, его и выбрали в качестве рабочего подхода

Prompt 2 — “перепиши текст в стиле ИИ-помощника”. Такой запрос, как оказалось, не увеличивает схожесть с ИИ, а наоборот 

Prompt 3 — “перефразируй текст”

Prompt 4 — “перепиши текст”



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

Ну и наконец, параметр λ, который отвечает за степень смешивания машинной и человеческой версии ответов. В процессе экспериментов авторы пробовали значения от 0 до 1 с шагом 0.1, и значение λ = 0.5 оказалось однозначным оптимумом. Если шагать влево или вправо — результаты заметно ухудшаются. 


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

А для вас?

Report Page