В честь 3000 подписчиков расскажу про наш новый препринт, в котором тексты, сгенерированные ChatGPT, детектируются с помощью анализа их внутренней размерности:
https://arxiv.org/abs/2306.04723
Итак, здесь мои коллеги и я продолжили заниматься полюбившейся с 2021 года темой - детекцией сгенерированного контента. Особое внимание, конечно, уделили детекции текста, сгенерированного моделями семейства GPT-3.5 (davinci, chatgpt). А делали мы это с помощью такой интересной штуки, как дробная размерность. Первое знакомство с ней можно осуществить, посмотрев видео 3blue1brown: https://www.youtube.com/watch?v=gB9n2gHsHN4 (рассказ про размерность начинается со второй половины видео).
Хоть введенная в видео размерность и называется "фрактальной", на деле можно получать приближенные оценки такой размерности не только для фракталов, но и просто для облаков точек, если формы облаков достаточно сложные. И вот возник вопрос: а почему бы не построить облако точек по тексту на естественном языке и не посмотреть, какой будет его размерность?
Далее последовательность действий была такая:
1) Брался достаточно длинный текст (написанный человеком либо сгенерированный ChatGPT/другой моделью) с большим количеством токенов;
2) Текст подавался на вход модели RoBERTa;
3) С последнего слоя RoBERTы извлекались эмбеддинги каждого токена текста;
4) Эти эмбеддинги рассматривались как точки в многомерном пространстве - получалось облако точек;
5) С помощью нескольких довольно технически сложных процедур ( вдохновленных https://arxiv.org/abs/1808.01079 ) оценивалась дробная размерность этого облака точек.
Таким образом, каждому тексту сопоставлялось число - эта самая размерность. И - о чудо! - оказывалось, что средняя размерность текстов, сгенерированных с помощью GPT-3.5 (ChatGPT или davinci), была в среднем существенно меньше, чем размерность текстов, написанных человеком. Эта средняя размерность практически не менялась при смене домена и при замене GPT-3.5 на large GPT-2 или OPT (со стандартными параметрами генерации); даже при применении парафразера DIPPER, специально созданного для избегания детекции, размерность менялась не сильно - в среднем примерно на 3%. Благодаря этому нам удалось сделать пороговый детектор по этой размерности, неожиданно устойчивый к атакам.
Теперь любители генерировать тексты могут менять промпты, тематику или даже модель, но наш детектор не проведешь! 😈
При смене домена и модели точность детекции (true positive) по один раз зафиксированному порогу не опускалась ниже 75% при условии, что false positive rate (FPR) оставался не более 1%. При применении DIPPER к генерации GPT-3.5 точность падала до 40%, снова при FPR 1%. Но даже этот результат оказался лучше всех остальных существующих детекторов - в том числе, и от самих OpenAI. 🫡
(Пояснение: мы зафиксировали низкий FPR потому что хотели как можно меньше дискриминировать настоящих людей при детекции).
Кроме прочего, при использовании мультиязычной RoBERTы можно было получать аналогичный детектор не только для английского, но и для других языков. Средняя внутренняя размерность эмбеддингов, соответствующих текстам на других языках, менялась от языка к языку, но размерность искусственных текстов все равно оставалась в среднем ниже, чем человеческих, для каждого конкретного языка по отдельности.
Главной же слабостью нашего детектора является неустойчивость к большим температурам генерации и к примитивным генераторным моделям. У генераторов с высокой температурой (так сказать, бредящих) внутренняя размерность текстов может быть и выше человеческой, поэтому на них этот детектор сломается. С другой стороны, такие генераторы и так детектятся другими методами. Также остается открытым вопрос, является ли RoBERTa оптимальным средством для извлечения эмбеддингов текстов, ведь их можно получать и с помощью других моделей тоже.
#объяснения_статей