Комментарии 15
LLM это авторегрессионная вероятностная модель. На каждом шаге она выбирает следующий токен из своего большого словаря (обычно от десятков до сотен тысяч токенов) опираясь на изначальный промпт и предыдущие сгенерированные ею токены. Сначала модель отбирает топ-K наиболее вероятных токенов, а затем выбирает среди них один единственный с учетом его вероятности. Вотермаркинг же смещает распределение вероятностей токенов: слова, которые обычно редко встречаются в тексте, начинают появляться чаще, и наоборот.
Но если моделей, их вариантов и версий множество (да ещё и настройки температуры можно крутить), то кто будет обладать полной базой данных вероятностей выбора сотен тысяч слов для детекции этих вотермарков?
А зачем обладать полной базой данных вероятностей для все моделей, температур и т.д.? Достаточно обладать информацией о распределении слов в обычном, не написанном ИИ тексте, их совместной встречаемости и т.д. И соответственно если вдруг встречаешь текст, в котором частота появления отдельных слов или их сочетаний резко отличается от нормальной - значит это вероятно нейрослоп.
"Обычные тексты" простираются от библейских до Корнея Чуковского, — распределение отдельных слов и словосочетаний в них будет размазано по широкому n-мерному пространству...
(Заметьте, что я вставил в текст длинное тире...)
Неправильно объяснил, без разницы, насколько тексты разнообразны. Там это как работает, если в деталях: есть фиксированный ключ, есть последние m токенов в тексте, дальше на основании этого ключа и последних токенов разбивают словарь на две примерно равные части, условно красную и зеленую. И следующий токен выбирают только из зеленой части. При выборе следующего токена раскраска меняется и как бы не получается, что всегда одни и те же токены выбирают.
А дальше на проверке, зная ключ и зная предыдущие токены просто смотрим из какой половины раскраски данный токен - зеленой или красной. И вот, если раз за разом на протяжении 10-20-30 токенов стабильно получается так, что токен всегда из зеленой части, очень похоже, что текст сгенерирован. Причем даже если какие-то слова в тексте менять, что-то выкидывать и т.д., все равно останется множество подпоследовательностей в которых эти зеленые токены будут идти подряд один за другим. Поэтому от ватермарки так сложно избавиться.
Добавил это объяснение в текст статьи, а то действительно не очень понятно, как это все так ловко работает.
Всё равно не понял:
У кого есть этот ключ (условно, есть ли у антропика ключ от джемини?) и кто сможет проверить текст?
Как это работает с кодом? (там не разгуляешься!)
А двойной перевод через Google Translate — он тока русский->английский->русский, или можно любой промежуточный? Просто интересно, если через китайский гонять, ватермарк снесёт сильнее чем через английский, или это уже не важно и все равно одинакого ровно сносит?
Любой в принципе можно, в настройках задается
Как их обходить
Хорошо бы ещё написать, а зачем "их обходить"? Типа, если нельзя использовать ИИ, но хочется?
На самом деле это работает так.
А откуда автор информацию получил, которую описывает далее? Так как основной вопрос - а это точно все классы таких схем описаны или только один из них?
Следующие три шага направлены на борьбу с самой сутью вотермаркинга - специфическим распределением токенов.
1) Автор сам проверил, что это работает? Типа: "Вот текст пестрит метками и это обнаружено внешней системой (не автора), а вот после программы автора это внешнее обнаружение уже не работает".
2) ИИ написал текст, затем его дважды перевели, далее другой ИИ его переписал...
а) Предположу, что такая борьба "визуально" заметна будет человеку (как минимум, некоторым) стилистически и т.д. из-за чего-то внесённого странного во всей этой цепочке переделок.
б) Очевиден риск потери смысла. Игра "испорченный телефон" широко известна. При этом искажение может быть и не очевидным.
Хорошо бы ещё написать, а зачем "их обходить"? Типа, если нельзя использовать ИИ, но хочется?
Ну да, почему нет? Просто в последние два дня поднялось много шума вокруг всего этого, и мне стало интересно, насколько сложно от этой самой вотермарки избавиться.
А откуда автор информацию получил, которую описывает далее? Так как основной вопрос - а это точно все классы таких схем описаны или только один из них?
Справедливо, добавил в статью ссылку на статью по SynthID от гугла + описал еще одну похожую схему. Что там у Антропика, неизвестно, но есть основания полагать, что что-то похожее.
Автор сам проверил, что это работает? Типа: "Вот текст пестрит метками и это обнаружено внешней системой (не автора), а вот после программы автора это внешнее обнаружение уже не работает".
Справедливо, добавил в статью тесты. В репозитории они тоже доступны, можно поиграться, если интересно.
ИИ написал текст, затем его дважды перевели, далее другой ИИ его переписал...
а) Предположу, что такая борьба "визуально" заметна будет человеку (как минимум, некоторым) стилистически и т.д. из-за чего-то внесённого странного во всей этой цепочке переделок.б) Очевиден риск потери смысла. Игра "испорченный телефон" широко известна. При этом искажение может быть и не очевидным.
Да, будет заметна, но задачи сделать текст человекоподобным и не стояло. Все что я сделал, это просто свел более сложную задачу избавления от вотермарок к более легкой задаче приведения текста к нормальному виду, которая решается точечными правками, а не тотальным переписыванием текста.
Да, будет заметна, но задачи сделать текст человекоподобным и не стояло. Все что я сделал, это просто свел более сложную задачу избавления от вотермарок к более легкой задаче приведения текста к нормальному виду.
Тройное переписывание даже в изначально человекоподобный текст внесёт искажения. Т.е. Вы пишете, что не планировали улучшать качество, а я о том, что качество упадёт.
И спасибо за ответы на вопросы. Не очень, правда, понятно стало, как проверять текст, если разные LLM используют немного разные методы. Грузить в каждый детектор от основных производителей по отдельности или детектор сразу на все методы (KWG, SynthID и т.д.) проверяет?
Если текст сгенерирован определенной LLM, то проверять надо соответствующим ей детектором (то есть детектор от Google подходит только для Gemini, детектор от Anthropic - только для Claude и т.д.), только он способен распознать наличие вотермарки. Ну и соответственно для переписывания текста нужно использовать другую LLM с открытыми весами, так как в нее вотермарку впихнуть проблематично. Тут правда встает вопрос, а почему бы сразу не генерить текст такой LLM или просто писать руками, но, как я уже писал, статья не про это.
Для начала предобработать исходный текст, чтобы удалить самые очевидные признаки сгенерированного ИИ контента: длинные тире, символы нулевой ширины, нестандартные пробелы и т. д.
Да, ещё можно удалить точки, запятые, кавычки, писать всё капсом и с ошибками. Пренебрегаем пунктуацией, типографикой и орфографией ради того, чтобы слоп никто не спалил

Как работают текстовые ИИ-вотермарки и как их обходить