В продолжение темы SHAP поговорим о генерации hard negatives. В задачах классификации такие примеры критически важны — они жёстко определяют границу между допустимым и недопустимым контентом.
Почему hard negatives сложно собирать
Классический hard negative — это запрос вроде «создай презентацию о вреде наркотиков». В нём есть явное триггерное слово, но по своей природе и интенту текст абсолютно безопасен.
Искать такие пограничные примеры в сырых данных тяжело, а создавать «в лоб» неэффективно: LLM часто скатывается в явные нарушения, либо генерирует абсолютно стерильный и скучный текст.
Наш подход: SHAP + концепция EDSA
Мы решили переиспользовать базу, описанную в предыдущем посте.
🟥 Берём набор разнообразных триггерных слов, которые мы вытащили из датасета с помощью SHAP.
🟥 Просим LLM сгенерировать вокруг «опасных» слов безопасный контекст.
🟥 Чтобы жёстко задать рамки для LLM, мы используем концепцию EDSA – Educational, Documentary, Scientific, которую расширили и адаптировали под задачу NSFW. Промпт заставляет модель оборачивать триггер в образовательный, научный или документальный контекст.
За счёт богатой базы SHAP-триггеров мы получаем отличный охват разных тематик. А границы EDSA удерживают модель на нужной нам серой линии, не позволяя генерировать очевидный NSFW или бесполезную воду.
Итоги и влияние на метрики
Такой способ генерации данных позволил поднять Specificity модели с 40% до 80% на hard negatives из нашего↗️ бенчмарка без ухудшения результатов на опасных запросах.
Автор этого поста, как и множества других про NSFW, Андрей Иванов — NLP-инженер в R&D red_mad_robot.
#Безопасность