Текстовый водяной знак в Claude: как Anthropic делает случайность детерминированной
Компания Anthropic представила детальное описание механизма текстового водяного знака, встроенного в модель Claude. Технология не переобучает нейросеть, а модифицирует процесс выборки токенов, используя секретный ключ и концепцию турнирного сэмплирования. Это позволяет выявлять сгенерированный контент без ущерба для его качества.

# Механизм работы текстового водяного знака в Claude
Эпоха неконтролируемой генерации текста постепенно меняется. В центре внимания находится новая статья от компании Anthropic, описывающая работу текстового водяного знака (text watermark) в модели Claude. Главная цель этой технологии — создание надежного способа детекции искусственно сгенерированного текста, что имеет прямое отношение к вопросам авторского права и цифровой этики.
Анализ механизма показывает, что водяной знак не является чем-то внешним по отношению к модели, а встраивается непосредственно в процесс случайного выбора токенов (сэмплирования). Важно понимать разницу между статистическими выводами модели и конечным выбором слова, который происходит на каждом шаге генерации.
Внутренняя логика выбора токена
Модели языковых величин (LLM) генерируют ответы по одному токену за раз. В каждый момент времени модель выдает оценки вероятностей для всех возможных следующих слов. Этот процесс называется softmax. Далее следует этап сэмплирования — выбор конкретного токена на основе этих вероятностей.
Существует два основных подхода к этому выбору: 1. Жадное декодирование: всегда выбирается токен с максимальной вероятностью. Это логично, но на длинных текстах часто приводит к повторам и зацикливанию. 2. Вероятностное сэмплирование: выбор осуществляется «нечестным кубиком», где шансы выпадения токена пропорциональны его вероятности. Это создает разнообразие.
Именно в момент сэмплирования работает водяной знак. Возьмем пример: модель должна выбрать слово, описывающее погоду. Варианты могут быть «холодно и пасмурно» (overcast) или «холодно и серо» (gray). Оба варианта логичны и имеют близкие оценки вероятности. В обычном режиме выбор случаен. В режиме с активным водяным знаком выбор также случаен, но подвергается влиянию скрытого ключа.
Детерминизм через случайный ключ
Чтобы сгенерировать один и тот же текст при каждом запросе, используется фиксация случайного числа (seed). Если задать фиксированный сид, генератор случайных чисел будет выдавать одну и ту же последовательность, позволяя воспроизвести ответ полностью. Однако простой статический сид не подходит для водяного знака.
В системе Claude используется секретный ключ (похожий на API-ключ). Этот ключ не фиксирован один раз, а динамически участвует в вычислении сида на каждом шаге генерации. Сид формируется на основе этого секретного ключа и информации о четырёх предыдущих словах.
Механизм работает следующим образом: вместо простого числа мы имеем секретный ключ, который совместно с контекстом генерирует псевдослучайное число для текущего выбора. Это делает процесс детерминированным: при одном и том же ключе и контексте модель всегда выберет одинаковый токен. При этом логиты (оценки вероятностей) модели не меняются, меняется только алгоритм «броска кубика». Таким образом, текст не ухудшается, но становится узнаваемым.
Техническое пояснение: турнирное сэмплирование
Для детекции водяного знака на этапе анализа текст должен быть проверен без доступа к исходному ключу модели. Это требует удешевления процесса проверки. Вместо повторного прогона промпта через тяжелую нейросеть используется метод, основанный на турнирном сэмплировании (Tournament Sampling), заимствованный у DeepMind.
Процесс выглядит так: 1. Для каждого кандидата на роль следующего токена вычисляется сигнатура. Это битовая строка (нули и единицы), полученная путем пропуска токена через набор секретных случайных функций (например, G1, G2, G3) вместе с ключом водяного знака. 2. Токены разбиваются на пары и соревнуются друг с другом. Очки для соревнования берутся из значений функций сигнатур. 3. В паре побеждает токен с более высоким значением по функции. Если значения равны (например, 0 против 0 или 1 против 1), победитель выбирается случайно.
Этот турнир продолжается, пока не останется один победитель, который и становится выбранным токеном. Ключевым моментом является то, что в турнире участвует не только один раз каждый уникальный токен, но и пул токенов, взятых из распределения вероятностей модели. Это позволяет сохранять естественность текста и вероятность слов, влияя лишь на финальный выбор в критических узлах.
Возможности детекции и защиты
Система водяных знаков Anthropic имеет четкие ограничения и возможности:
Детекция: Проверить наличие водяного знака можно только при наличии доступа к соответствующему API от Anthropic. Скоринговая функция оценивает текст, и если значение превышает порог, контент считается помеченным. В будущем планируется предоставить доступ к этой проверке компаниям-партнерам (например, для платформ вроде Substack или X), что позволит авторам маркировать свои статьи.
Удаление: Попытка удалить водяной знак вручную крайне сложна. Поскольку пользователь не знает точных позиций токенов, на которых «сидит» ключ водяного знака, любые правки будут носить характер гадания. Единственный надежный способ — заменить достаточно много слов в тексте, чтобы наверняка затронуть скрытые позиции. Однако это неизбежно ухудшает качество и стилистику написанного, делая текст менее естественным.
Авторский комментарий
Эта технология напоминает, что за кажущимся хаосом генеративного текста скрывается жесткая математическая структура. Водяной знак не нарушает естественность речи, лишь слегка корректируя неизбежную случайность человеческого восприятия, превращая её в контролируемый инструмент верификации источника.