Когда мы слышим выражение «водяной знак», обычно представляем полупрозрачную надпись поверх фотографии, логотип на видео или едва заметный рисунок на документе. С текстами всё сложнее. В обычном тексте практически нет свободного пространства, куда можно незаметно добавить информацию. Если вставить специальные символы, их можно обнаружить и удалить. Если сохранить идентификатор в HTML или метаданных файла, он исчезнет после обычного «Копировать» – «Вставить». Если использовать необычные пробелы, форматирование или шрифты, достаточно пропустить текст через простой текстовый редактор. Однако существует намного более интересный способ. Можно ничего не добавлять в готовый текст вообще. Вместо этого скрытая структура формируется в момент выбора слов самой языковой моделью.

Чтобы понять, как это работает, необходимо начать с более старой области информационной безопасности – стеганографии.

Превью изображение статьи

Что такое стеганография

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

9f86d081884c7d659a2feaa0c55ad015...

Он понимает: здесь передаются какие-то данные, но я не знаю их содержания. Стеганография пытается добиться другой ситуации:

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

Наблюдатель должен предположить, что здесь вообще нет никакого секретного сообщения.

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

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

Схематическое сравнение подходов

Простейший пример текстовой стеганографии

Представим предложение:

Сегодня вечером обязательно позвони своему брату.

Можно договориться, что наличие определённого слова означает бит 1, а его отсутствие – бит 0. Например, «очень хороший» – 0, «действительно хороший» – 1.

Тогда последовательность совершенно естественно выглядящих фраз может кодировать двоичные данные: 0 1 1 0 1 0 ...

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

Стеганография существовала задолго до компьютеров. Идея скрытого сообщения очень стара. Классическими примерами были:

  • невидимые чернила;

  • сообщения, спрятанные внутри других документов;

  • микроточки;

  • определённые буквы или слова обычного текста;

  • акростихи;

  • изменение расположения символов.

Но с появлением компьютеров наиболее удобными контейнерами стали:

  • изображения

  • аудио

  • видео

  • сетевой трафик

  • файлы

  • текст

С изображениями задача сравнительно проста. Обычная фотография содержит миллионы числовых значений. Небольшое изменение некоторых пикселей: RGB(154, 83, 201) на: RGB(154, 83, 200) человек практически наверняка не заметит. Поэтому в изображениях существует большое количество избыточности, пригодной для скрытия информации. С обычным текстом такой роскоши нет.

Почему прятать информацию в тексте сложно? Возьмём предложение: «Сегодня идёт дождь». Здесь практически каждый символ имеет значение. Если изменить «дождь» на «дожь», это сразу заметит человек. Если удалить слово «Сегодня идёт» изменится смысл.

Если вставить случайные символы: «Сегодня идёт x7 дождь», они также будут видны.

Именно поэтому Криста Беннетт ещё в обзоре 2004 года отмечала принципиальную проблему лингвистической стеганографии: текст должен выдерживать не только статистический анализ компьютером, но и проверку человеческим читателем. Тем не менее исследователи разработали несколько больших классов текстовой стеганографии.

Способ №1. Форматирование текста

Один из наиболее старых цифровых способов – кодировать информацию внешним видом документа. Можно слегка изменять:

  • расстояние между словами;

  • расстояние между строками;

  • положение символов;

  • ширину пробелов;

  • размер шрифта;

  • начертание;

  • кернинг.

Например: обычный интервал – 0, чуть увеличенный интервал – 1 В результате визуально документ почти не меняется. Однако у метода есть очевидный недостаток. Если сделать копирование текста и дальнейшую вставку без форматирования, вся информация может исчезнуть. Обзоры стеганографии в тексте поэтому характеризуют методы изменения расстояния между словами и строками, как плохо устойчивые к структурным преобразованиям цифрового текста.

Способ №2. Невидимые символы юникода

Юникод содержит символы, которые могут присутствовать внутри строки, но практически не отображаться. Например:

  • U+200C – Бесшовное соединение нулевой ширины

  • U+200D – Соединитель нулевой ширины

Существуют и другие специальные управляющие юникод-символы. Можно договориться:

  • U+200C – 0

  • U+200D – 1

После обычных букв вставляется последовательность невидимых символов. Для человека:

Hello world

и:

Hello[ZWJ][ZWNJ][ZWJ][ZWJ] world

могут выглядеть совершенно одинаково. А программа получит, например:

1 0 1 1

Такие техники действительно исследовались и применялись для текстовой стеганографии. В литературе описаны схемы с символом нулевой ширины, соединителем нулевой ширины и не соединяющий символ нулевой ширины.

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

Именно поэтому Anthropic отдельно подчёркивает, что маркирование Claude не использует скрытых символов.

Способ №3. Похожие символы

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

  • вариант A – 0

  • вариант B – 1

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

Способ №4. Лингвистическая стеганография

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

  • быстрый

  • скорый

  • стремительный

могут в некотором контексте выражать близкие значения. Можно договориться:

  • быстрый – 0

  • скорый – 1

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

  • синонимические замены;

  • порядок слов;

  • синтаксические преобразования;

  • морфологические варианты;

  • структуру предложения.

Ещё в работе Топкара, Таскиран и Делп 2005 года маркирование с использованием естественных языков отделялось от методов, меняющих только внешний вид букв и строк: исследователи предлагали использовать саму структуру предложения как носитель скрытой информации.

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

Способ №5. Генеративная лингвистическая стеганография

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

В работе нейро-лингвистическая стеганография 2019 года Закари ЗейглерЮнтиан Дэнг и Александр Раш предложили использовать нейронную лингвистическую модель совместно с арифметическим кодированием. Секретные биты влияли на выбор следующего токена, при этом авторы стремились сохранить распределение генерируемого текста близким к нормальному распределению модели.

В 2020 году Шен, Джи и Хан развили похожую идею в работе Практически незаметная нейронная лингвистическая стеганография с помощью самонастраивающегося арифметического кодирования. В ней секретное сообщение кодировалось непосредственно в процессе генерации самого текста.

Чем стеганография отличается от маркирования текста

Стеганография и маркирование текста используют очень похожие математические идеи, но обычно преследуют разные цели. При стеганографии мы хотим передать какое-либо секретное сообщение. Например: «Встречаемся в 18:00» сначала можно представить в бинарном виде: «01010011 01100101 ...» и спрятать эти биты внутри другого текста. Маркирование текста обычно выполняет другую функцию. Нам необязательно передавать полноценное сообщение. Достаточно встроить устойчивый сигнал: этот текст был создан моделью X. На следующем изображении представлено наглядное сравнение стеганографии и маркирования текста.

Сравнение стеганографии и маркирования текста

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

Связь технологий идентификации текста

Маркирование текстов, созданных LLM, можно считать современной формой стеганографии. Вернёмся к простому примеру. Представим, что модель хочет написать: «На улице был холодный ____ день». Она считает возможными: пасмурный, серый, мрачный, дождливый. Каждое слово вполне естественно. Если специальный алгоритм управляет тем, какое из допустимых продолжений будет выбрано, выбор может переносить скрытую информацию. Например:

  • Пасмурный – группа 1

  • Серый – группа 0

Но современные системы вроде SynthID-Text делают это значительно сложнее. Они не помещают в текст буквальное сообщение: «создано с помощью CLAUDE», и не кодируют идентификатор пользователя. Они создают статистическую корреляцию между последовательностью выбранных токенов и секретным ключом маркирования текста. Например, Anthropic подчёркивает, что маркирование текстов Claude ничего не добавляет в сам текст, не использует скрытых символов и не несёт идентифицирующей информации о пользователе, организации или отдельном чате. Таким образом, связь методов и алгоритмов можно изобразить следующим образом. А теперь разберемся, каким образом проводится маркирование текстов при генерации в языковых моделях.

Как нейросеть генерирует текст

Пошаговая генерация текста

Большая языковая модель не пишет предложение целиком. Она генерирует его последовательно токен за токеном, слово за словом. Например, модель получает начало: «Столица Германии – ». После обработки этого текста она вычисляет оценки для всех возможных следующих токенов. Упрощённо:

  • Берлин – 99,90 %

  • Мюнхен – 0,04 %

  • Гамбург – 0,03 %

  • Франкфурт – 0,01 %

Первоначальные числа внутри модели называются логиты. После применения много переменной логической функции из них получается распределение вероятностей. Если всегда брать только самый вероятный вариант, используется жадное декодирование. Но современные языковые модели часто применяют различные методы семплинга для вероятностной выборки: temperature, top-k, top-p. Поэтому модель не обязана выбирать токен с максимальной вероятностью. Допустим, что для фразы «Сегодня холодный и ___ день» вероятность встретить в естественном языке следующие слова распределена следующим образом:

  • серый – 45 %

  • пасмурный – 40 %

  • мрачный – 10 %

  • облачный – 5 %

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

Маркирование прячется в случайности

Представим, что в тексте имеется множество мест, где модель может выбрать несколько примерно одинаково подходящих вариантов:

  • пасмурный / серый

  • лёгкий / слабый

  • движется / дует

  • тихий / спокойный

  • дом / жилище

  • книга / роман

Один выбор ничего не означает. Но комбинаций становится огромное количество. Если имеется 20 независимых решений, у каждого из которых только два варианта: количество вариантов 2²⁰ = 1 048 576. При 100 аналогичных решениях: количество вариантов = 2¹⁰⁰ ≈ 1,27 × 10³⁰. То есть существует астрономическое количество немного различающихся, но вполне естественных текстов. Маркирование может управлять частью этих решений при помощи секретного ключа. Каждый отдельный выбор выглядит естественно. Но сотни выборов вместе начинают демонстрировать статистическую корреляцию с секретным ключом. Так возникает маркирование текста

Причём здесь псевдослучайные числа

Компьютер способен генерировать воспроизводимые псевдослучайные последовательности. Условно seed в значении 42 может приводить к разному набору весов  и, если снова использовать тот же seed, последовательность повторится. Упрощённо обычное семплирование можно представить так.

Обычное семлирование

При маркировании текста источник случайности связывается с секретом. Фиксированный seed здесь является только учебной аналогией. Реальная система использует меняющийся контекст. Например: ключ – K, контекст – «Сегодня погода очень», seed₁ = HASH(K || контекст). Модель выбирает «пасмурная», теперь контекст – «Сегодня погода очень пасмурная», seed₂ = HASH(K || новый контекст) и алгоритм получает уже другое псевдослучайное состояние.

Семплирование с маркированием

В SynthID-Text случайный генератор seed действительно может учитывать предыдущий текст вместе с ключом для маркирования

Зелёные и красные токены

Одна из ключевых ранних работ: Джон Кирхенбауэр и др. – Маркирование для больших языковых моделей, ICML 2023.

Алгоритм псевдослучайно разделяет словарь на две части: зелёный список и красный список. Затем немного увеличивает вероятность токенов из зеленого списка. Именно так описывается оригинальный метод авторами работы. Например, до маркирования:

  • пасмурный – 40 %

  • серый – 38 %

После небольшого смещения:

  • пасмурный – 46 %

  • серый – 33 %

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

Схема работы с зелёными и красными списками

Как обнаруживается маркирование по зеленому списку

Допустим, алгоритм относит половину словаря к зеленому списку. Тогда для обычного случайного текста ожидается примерно: 50 % вариантов из зеленого списка, 50 % вариантов из красного списка, но в маркированном тексте мы систематически видим иные и большие проценты. Чтобы определить, насколько необычно такое отклонение, используется Z-оценка. В удобной записи формула выглядит так:

Изображение формулы

Где T – общее число анализируемых токенов, G – число токенов из зеленого списка, γ – ожидаемая доля вариантов из зеленого списка, z – насколько далеко наблюдаемый результат находится от нормального ожидания.

Рассмотрим конкретный пример. Пусть: T = 100 токенов, γ = 0,5, G = 75 зеленых токенов.

Сначала вычислим ожидаемое число зелёных: γ × T = 0,5 × 100 = 50. Разница: 75 − 50 = 25

Знаменатель: √(100 × 0,5 × 0,5) = √25 = 5. Следовательно: z = 25 / 5, z = 5

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

У маркирования по зеленому списку есть недостаток. Мы намеренно изменили вероятности токенов. Поэтому исследователи начали искать методы, позволяющие встроить маркирование, не изменяя итоговое распределение текста или минимизируя такое изменение.

Маркирование без искажения

Другой важный вопрос можно сформулировать так: возможно ли спрятать маркирование в процедуре семплирования, не делая само распределение текста статистически отличимым от обычного? Этим направлением занимались несколько групп.

Неискаженное маркирование

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

Кудитипуди, Тикстун, Хасимото и Лян предложили Надежное неискаженное маркирование для языковых моделей. Их идея заключается в использовании псевдослучайных последовательностей для маркирования текста, тогда детектор, знающий ключ, сопоставляет последовательность токенов с той же псевдослучайной последовательностью. Авторы использовали два механизма семплирования:

  • Выборка с обратным преобразованием

  • Экспоненциальная минимальная выборка

Именно из подобных исследований выросла современная идея использовать в маркирование не столько «специальные слова», сколько управляемую случайность в процессе семплирования.

Энтропия – главное ограничение маркирования. Маркирование можно встроить только там, где модель действительно имеет выбор. Например, на вопрос: «Столица Франции?» ответ: «Париж» с вероятность, стремящейся к 100 %. Модель не может ради маркирования ответить: «Берлин». Это низкоэнтропийная ситуация. Теперь другой запрос: «Опиши спокойный осенний вечер» возможны:

  • тихий

  • прохладный

  • дождливый

  • пасмурный

  • золотистый

  • мрачный

  • уютный

Энтропия и маркирование текста

Здесь существует намного больше свободы выбора. Следовательно, чем больше энтропия, тем больше возможностей для маркирования текста. Маркирование также зависит от длины текста и энтропии распределения токенов. Исследования Google в статье также показывают, что обнаруживаемость маркирования меняется в зависимости от настроек энтропии языковой модели.

Маркирование является статистическим сигналом. Если подбросить монету три раза и получить три раза один и тот же результат, это ещё не означает, что монета поддельная. Но если необычное смещение наблюдается сотни раз, уверенность растёт. Аналогично и для языковой модели для 10 токенов очень мало статистики, а 100 токенов дает больше статистики. Поэтому длинные тексты обычно намного удобнее для проверки на маркирование текста.

Связь объема и результата

SynthID-Text и семплирование турниром

Google DeepMind представила SynthID-Text в работе Сумант Дататри и др. – Масштабируемое маркирование для идентификации результатов работы больших языковых моделей, опубликованной в Nature в 2024 году.

Общая схема сеплирования турниром

Именно SynthID-Text Anthropic выбрала в качестве основы маркирования для Claude. Главная особенность метода: семплирование турниром.

Как устроен турнир токенов, пусть LLM сформировала следующее распределение для продолжения фразы «Сегодня холодный и ___ день» со следующими вероятностями:

  • серый – 50 %

  • пасмурный – 30 %

  • мрачный – 15 %

  • облачный – 5 %

SynthID не просто выбирает максимально высокое значение. Сначала из исходного распределения модели сэмплируется множество кандидатов, кандидаты делятся на группы в зависимости от их вероятности. Обратите внимание: часто встречающийся «серый» появляется чаще именно потому, что исходная модель дала ему вероятность 50 %. То есть знания самой LLM никуда не исчезают. Дальше начинается турнир.

Для каждого кандидата вычисляется несколько псевдослучайных функций: g₁, g₂, g₃ ... gₘ. Они зависят от ключа маркирования, контекста и токена. В простейшем объяснительном варианте каждая функция может возвращать 0 или 1. Например для «серый» g₁ = 1, g₂ = 0, g₃ = 1, то есть «серый» будет 101, для другого токена «пасмурный» будет, например, 010. В статье описывается именно множество псевдослучайных функций маркирования, используемых в разных раундах семплирования турниром.

В статье для m слоёв турнира сначала семплируется 2ᵐ кандидатов

Схема турнира

Например, если m = 3, тогда, 2³ = 8 кандидатов, они делятся на пары: A ↔ B, C ↔ D, E ↔ F, G ↔ H. В первом раунде используется: g₁. В каждой паре проходит кандидат с более высоким значением. Так проходит первый раунд турнира.

Во втором раунде турнира остаются четыре кандидата: A ↔ C, E ↔ G. Теперь используется: g₂. Остаются два кандидата.

В финальном раунде последняя пара сравнивается по g₃. Победитель становится следующим токеном текста. Это и есть семплирование турниром.

При таком подходе модель всё равно пишет нормальный текст, потому что участники турнира не выбираются случайно из всего словаря. Они изначально берутся из вероятностей модели на основе следующего токена и общего контекста, то есть из настоящего распределения модели. Если правильное слово с вероятностью в 90 %, оно будет чрезвычайно часто попадать среди кандидатов. Если бессмысленное слово с вероятностью около 0,000001 %, оно практически никогда туда не попадёт.

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

Как обнаруживается SynthID-Text

Схема обнаружения маркирования

Детектор анализирует готовый текст и повторно рассчитывает функции маркирования. Для каждого токена xₜ из контекста и секретного ключа восстанавливается rₜ, после чего вычисляются g₁(xₜ, rₜ), g₂(xₜ, rₜ) ... gₘ(xₜ, rₜ). Затем значения агрегируются. Функцию оценки можно представить как отношение суммы всех значений функции g к числу всех измерений.

Изображение формулы

Где: T – число анализируемых токенов, m – число функций маркирования; g – псевдослучайная оценка конкретного токена в конкретном раунде. То есть это просто среднее значение всех оценок маркирования.

Представим: T = 100 токенов, m = 3 функции, всего детектор получает 100 × 3 = 300 значений g. Если обычный текст в среднем должен иметь: примерно 0,5, а маркированное семплирование постоянно немного предпочитал варианты с большими g, среднее значение начнёт систематически отклоняться вверх. В математической записи оригинальной статьи это соответствует следующей формуле.

Изображении формулы

Где T – общее количество токенов в проверяемом тексте, m – количество независимых бинарных функций маркирования (слоев турнира), gl(ti, ri) – псевдослучайная функция водяного знака для слоя l, принимающая значение 0 или 1.

Практически формулу можно понять как:

  • Рассчитать g-значения всех токенов.

  • Сложить их.

  • Разделить на количество рассчитанных значений.

  • Сравнить результат с распределением, ожидаемым для текста без маркирования.

Оригинальная схема оценки описана в статье и базируется на байесовском детекторе. Он учитывает не просто среднее арифметическое, а распределение вероятностей языковой модели, чтобы снизить количество ложных срабатываний на банальных, предсказуемых фразах. Важно отметить, что для детектирования запуска самой огромной LLM уже не требуется. Это одно из важных преимуществ SynthID-Text, подчёркнутое авторами статьи.

Изображение в виде дерева процессов маркирования и проверки текста

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

Рассмотрим вариант с небольшим количеством токенов, допустим следующий вариант, где токен A получил 101, он получил две единицы из трёх. Однако случайный токен легко может получить 111 или 000. Поэтому один токен ничего не доказывает. Важна статистика большого количества решений. Если они систематически лучше соответствуют секрету функции маркирования, вероятность простого совпадения уменьшается.

Важно отметить, что детектирование не отвечает на вопрос о том, написан ли текст ИИ. Оно отвечает на вопрос – совместима ли статистика этого текста с нашим известным ключом для маркирования текста. Детектор не доказывает: что весь текст написал ИИ, что человек не редактировал ответ, что другая модель не участвовала, что текст является плагиатом, что использование AI нарушало правила.

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

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

Следовательно, если маркирование найдено, это не 100 % доказательство происхождения, как и не найденное маркирование не доказательство человеческого авторства.

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

Качество генерируемого текста

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

SynthID-Text позволяет работать как в искаженных, так и в неискажённых конфигурациях. В статье авторы провели эксперимент в реальной среде примерно на 20 миллионах ответов Gemini. Различия в пользовательской обратной связи между маркированными и немаркированными вариантами были крайне малы: около 0,01 процентного пункта для понравившихся и 0,02 процентного пункта для не понравившихся ответов. Исследователи не обнаружили практического ухудшения качества в этом эксперименте.

Устойчивость маркирования

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

Схема копирования текста

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

Схема перефразирования

Намного сильнее работает на искажение полное переписывание. Возьмем пример: «Сегодня холодная и пасмурная погода. Легкий ветерок проносится сквозь деревья.» После перефразирования: «Послеобеденное время выдалось прохладным и пасмурным, в то время как между деревьями дул легкий ветерок». Смысл похож, но токены будут совершенно другими. Поэтому маркирование на уровне токенов может сильно ослабнуть.

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

Например, Кудитипуди и др. экспериментально показывали для OPT-1.3B и LLaMA-7B обнаружение маркирования после случайного изменения примерно 40-50 % токенов в их конкретных экспериментальных условиях. Для Alpaca-7B из-за более низкой энтропии результат обнаружения оказался заметно сложнее.

Поэтому нельзя сказать ни «достаточно заменить одно» слово, ни «маркирование удалить невозможно». Оба утверждения слишком упрощают ситуацию.

Чтобы увеличить устойчивость к перефразированию, исследователи пытаются переносить маркирование выше уровня отдельных токенов. Например, SemStamp работает с семантическим представлением предложений. Вместо требования использовать слова, можно пытаться обеспечить попадание предложения в определённую область семантического пространства. Поскольку перефразирование часто сохраняет смысл, такой подход потенциально устойчивее к замене конкретных слов. SemStamp был специально разработан для повышения устойчивости к перефразированию на уровне маркирования токенов. Схожее направление используется в SemaMark, где маркирование также связывается с семантикой предыдущего текста вместо простого хеширования предыдущих токенов.

Существует ещё одна проблема. Если API маркированной модели публичен, атакующий может многократно обращаться к ней с разными запросами и анализировать статистические закономерности.

В работе Кража маркирования в больших языковых моделях Йованович, Стааб и Вечев продемонстрировали возможность приблизительного  реверсивного анализа некоторых схем маркирования через множество запросов к API. После этого возможны две атаки:

  • Чистка

  • Подмена

Схема чисткиСхема подмены

В экспериментах авторы сообщали средний уровень успеха свыше 80 % против исследованных на текущем этапе схем маркирования при определённых условиях. Поэтому маркирование – это не цифровая подпись. Это чрезвычайно важное различие. При использовании цифровой подписи можно точно сказать, что конкретные данные были подписаны соответствующим ключом, можно доказать авторство. Статистическое маркирование текста означает другое – статистические свойства текста достаточно хорошо соответствуют известному механизму маркирования. То есть маркирование является вероятностным признаком, а не строгой криптографической подписью конкретной последовательности байтов.

Почему watermarking начали внедрять сейчас

Одна из причин нынешнего практического внедрения маркирования текстов, созданных ИИ, и повышение интереса ко всему процессу – European AI Act. Transparency obligations статьи 50 применяются с 2 августа 2026 года. Европейская комиссия поясняет, что поставщики соответствующих генеративных ИИ-систем должны добавлять машиночитаемые отметки, позволяющие обнаруживать сгенерированный или измененный с помощью ИИ контент.

Anthropic прямо связывает внедрение маркирования Claude с выполнением этих требований. При этом сама технология возникла значительно раньше законодательства. Исследования маркирования по зеленому списку, семплирования без искажений и криптографическому маркированию велись уже в 2022–2024 годах.

Вывод

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

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

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

Основные исследования

John Kirchenbauer et al. — A Watermark for Large Language Models, ICML 2023

Miranda Christ, Sam Gunn, Or Zamir — Undetectable Watermarks for Language Models, COLT 2024

Rohith Kuditipudi et al. — Robust Distortion-Free Watermarks for Language Models, TMLR 2024

Sumanth Dathathri et al. — Scalable watermarking for identifying large language model outputs, Nature, 2024

Zachary Ziegler, Yuntian Deng, Alexander Rush — Neural Linguistic Steganography, 2019

Jiaming Shen, Heng Ji, Jiawei Han — Near-imperceptible Neural Linguistic Steganography via Self-Adjusting Arithmetic Coding, EMNLP 2020

Vinu Sankar Sadasivan et al. — Can AI-Generated Text be Reliably Detected?

Nikola Jovanović, Robin Staab, Martin Vechev — Watermark Stealing in Large Language Models, ICML 2024

Abe Hou et al. — SemStamp, NAACL 2024

Xuandong Zhao, Yu-Xiang Wang, Lei Li — Watermarking for Large Language Models, ACL 2024

Если Вам понравилась заметка, обязательно делитесь ее со своими друзьями, если же есть пожелания или замечания – сообщите о них.

Использование материалов на сторонних ресурсах, без разрешения автора, запрещено.