Текст с водяным знаком SynthID Text выглядит обычно. Никаких странных символов, невидимых пробелов или подозрительных слов. Но в тесте японского автора из Zenn средний показатель для текста с меткой составил 0,587, а без неё — 0,511.

Разница небольшая, и именно на ней держится подход. SynthID Text не ставит на страницу печать «сделано AI». Система слегка меняет статистику выбора следующих токенов — слов, частей слов и знаков препинания.

Как SynthID Text прячет метку внутри генерации

Водяной знак часто связывают с обработкой готового файла: логотипом на видео или изменением пикселей в изображении. SynthID Text работает раньше — в тот момент, когда модель выбирает очередной токен.

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

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

Есть и ограничение. Когда в конкретном месте почти один очевидный вариант, механизму мало что менять. Если кандидатов много и их вероятности близки, водяной знак может сильнее повлиять на выбор.

Тест на GPT-2: глазами не видно, цифры расходятся

Для эксперимента автор взял открытую реализацию google-deepmind/synthid-text и небольшую модель GPT-2. Всё запускалось на CPU в Jupyter Notebook. Конфигурация: Python 3.11.8, PyTorch 2.4.0+cpu, Transformers 4.43.3.

Задание выбрали простое — рецепт Mac and Cheese. Получились два текста: с водяным знаком и без него. Оба напоминали рецепт, но готовить по ним я бы не стал. В одном молоко, крахмал, миндальный экстракт и петрушка быстро превратились в кулинарный хаос.

И это тоже полезное наблюдение. Качество рецепта заметно плавало само по себе. Человек не мог по виду понять, где стоит метка. Автор пишет, что при сравнении текстов её наличие «совершенно не чувствуется».

Дальше текст проверили детектором. В эксперименте использовался Weighted Mean score. Для текста без маркировки ожидали значение около 0,5.

Результаты одного сравнения:

• без водяного знака: 300 токенов всего, 219 пригодных для анализа, Weighted Mean — 0,51147586; • с водяным знаком: 229 токенов всего, 201 пригодный токен, Weighted Mean — 0,5874444.

В дополнительных запусках без метки значения держались примерно в диапазоне 0,49–0,51, а с меткой начинались от 0,57. Это не вероятность того, что текст написан AI. Показатель нужно читать вместе с порогом детектора.