Эта серия сообщений в блоге посвящена обширной и важной области, объединяющей искусственный интеллект и лингвистику: Атаки НЛП.

NLP расшифровывается как Обработка естественного языка, подобласть науки о данных, целью которой является изучение и анализ механизмов, лежащих в основе представления и использования человеческого языка с помощью компьютеров и встроенных системы.

Тематическое исследование

Представьте, что вы специалист по данным, работающий в команде модерации контента популярной социальной сети, и вы только что развернули текстовую модель обнаружения токсичности для обнаружения ненормативной лексики, оскорблений и всех видов языка ненависти.

Вначале все идет безупречно; сообщения, размещенные троллями, ненавистниками, нарушителями спокойствия и другими очень подлыми людьми, автоматически обнаруживаются вашей моделью. Однако со временем вы понимаете, что все больше токсичных сообщений классифицируются вашей моделью как нетоксичные.

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

Конкретный пример привлекает ваше внимание, пользователь под ником «JohnWick546» опубликовал следующее сообщение: «Ты ІДІОТС!!». Вы ошеломлены этим очевидным проявлением ненависти, но еще больше удивлены тем, что ваша текстовая модель классифицировала его как нетоксичный с показателем достоверности 0,70.

Вы чешете голову и запускаете быструю функцию Python, чтобы показать байтовое представление вашего сообщения (как машина хранит строку) в кодировке utf-8 (как сейчас большая часть текстового контента хранится).

Вы быстро замечаете, что в слове ІДІОТС используются символы как латиницы, так и кириллицы (кириллица содержит некоторые буквы, которые визуально выглядят так же, как латинские символы), что объясняет, почему ваша модель, несмотря на то, что «знает», что слово «ИДИОТ» (написанное латинскими буквами) связано с токсичностью, не классифицирует этот комментарий как токсический, поскольку модель никогда раньше не видела такой сложной цепочки символов, созданной, чтобы ее ослепить.

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

Что происходит?

При модерации контента мы имеем дело с большим количеством текстовых данных, предоставленных пользователями из разных слоев общества, культур, целей, менталитета и интересов. Вот почему команда Besedo Data Science Research гарантирует, что наши модели и фильтры будут максимально надежными благодаря всестороннему анализу данных, тщательному извлечению признаков, тщательному обучению, сравнительному анализу и оценке текстовых моделей.

Интернет огромен, и хотя наши пользователи разговаривают на естественном языке, определенная часть этих пользователей знает, что их сообщения проходят через автоматизированные конвейеры модерации контента, и пытаются обойти их, используя различные методы. Мы будем называть эти попытки обмануть наши текстовые модели «атаками НЛП».

Что такое НЛП-атаки?

Атаки НЛП — это модификации в текстовых данных, которые преднамеренно используют уязвимости в семантических/синтаксических фильтрах и/или моделях машинного обучения для нарушения их работы.

Чем опасны НЛП-атаки?

НЛП-атаки могут:

  • Сильно нарушается производительность модели ⇒ Модель не может распознавать токены. Токены, отсутствующие в словаре модели, либо игнорируются, либо заменяются токенами ‹UNK›.
  • Обойти некоторые фильтры ⇒ Обманывая шаблоны регулярных выражений и другие фильтры на основе символов.
  • Замедлить вывод модели ⇒ Например, добавив тысячи невидимых символов в цепочку символов.
  • Внедрение нежелательных смещений в наши наборы данных для обучения ⇒ Чистый набор данных абсолютно необходим для обучения качественных моделей. Атаки NLP по своей природе вносят много шума в набор данных, что, в свою очередь, нарушает способность модели распознавать закономерности.

В каких формах могут проявляться атаки НЛП?

В целом, мы можем выделить два типа атак НЛП:

  • Атаки на Unicode («плохие» символы)
  • Состязательные атаки НЛП

Юникод-атаки

Юникод — это стандарт, используемый для унифицированного хранения текста во всех электронных системах. В настоящее время он используется для представления сотен тысяч уникальных букв, символов, смайликов и специальных символов.

Мы определяем «атаки на Unicode» как любые попытки обмануть фильтры и/или модели машинного обучения путем изменения текста таким образом, чтобы:

  • Информация, содержащаяся в тексте, остается прежней.
  • Символы, содержащиеся в тексте, остаются визуально похожими на исходный текст.
  • Целевые символы/токены/слова становятся неузнаваемыми моделью/фильтром.

Примеры :

Оригинальный текст :

это предложение

Примеры атак Unicode:

  • 𝑻𝒉𝒊𝒔 𝒊𝒔 𝒂 𝒔𝒆𝒏𝒕𝒆𝒏𝒄𝒆 (с использованием математических символов вместо латинских букв)
  • Это 🇦 последовательность🇳🇹 (с использованием смайликов)
  • ᵀʰⁱˢ ⁱˢ ᵃ ˢᵉⁿᵗᵉⁿᶜᵉ (с использованием надстрочных символов)
  • Th؜؜is a sen؜؜ten؜؜؜ce (с использованием невидимых символов)

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

В документе Bad Characters: Inperceptible NLP Attacks [1] выделяются 4 подтипа атак Unicode:

  • Невидимые символы
  • Гомоглифы (символы, отображаемые так же, как обычные символы)
  • Изменение порядка (использование управляющих символов, таких как символы BIDI, для изменения порядка текста при сохранении его визуального вида)
  • Удаление (используя управляющие символы удаления, такие как символ возврата, символ [DEL] или возврат каретки)

В контексте автоматического перевода текста с английского на французский приводятся следующие примеры:

Как я могу противостоять атакам Unicode?

Чтобы противостоять такого рода атакам НЛП, мы должны быть в состоянии:

  • Обнаружение орфографических ошибок и неизвестных слов
  • Определять порядок текста (слева направо или справа налево)
  • Применение нормализации Unicode (NFKD и/или NFKC)
  • Построение языковых моделей для вычисления вероятности существования определенного символа «x» в заданной цепочке символов.
  • Применение OCR (Оптическое распознавание символов) к вводимому тексту, чтобы избежать проблемы с невидимыми символами и омоглифами, поскольку модель OCR «видит» текст так же, как человек. . Это решение представлено в статье [1]
  • Сгруппируйте визуально похожие символы Unicode вместе, используя методы кластеризации (см. рисунок ниже).
  • Вложите больше усилий и ресурсов в более тщательное тестирование фильтров и моделей (мы вернемся к тестированию моделей в следующем разделе).

Состязательные атаки НЛП

Под состязательными атаками NLP понимается любой текст, содержащий «возмущения», чтобы обмануть модель машинного обучения. Эти возмущения могут проявляться в нескольких формах:

  • Все методы представлены в предыдущем разделе об атаках Unicode.
  • Использование слов/токенов, отсутствующих в модельном словаре (или плохо представленных из-за их редкости)
    – Добровольные, преднамеренные орфографические ошибки
    – Редкие слова
    – Смешение языков (если модель обучалась на определенном языке)
  • Замена определенных слов / токенов, чтобы запутать модель.

Следующий пример взят из статьи На пути к надежной глубокой нейронной сети в текстах: обзор [2].

Простое действие замены двух слов в тексте заставляет модель анализа настроений переходить от «положительного» прогноза к «отрицательному».

Примечание. В контексте нашего исследования разница между атаками Unicode и атаками NLP Adversarial заключается в целях и методах, используемых для создания примеров. В первом случае атаки сосредоточены на добавлении возмущений к входным данным путем изменения кодовых точек Unicode с минимальными визуальными изменениями исходного текста, чтобы обмануть как текстовые фильтры, так и модели НЛП. В последнем возмущения вводятся путем создания текстовых примеров, специально предназначенных для обмана моделей НЛП.

Есть две отправные точки, с которых кто-то может начать атаки состязательного НЛП по отношению к модели НЛП: атаки белого ящика и атаки черного ящика.

Атаки белого ящика

Чтобы запустить атаки белого ящика, злоумышленник должен иметь копию архитектуры и весов модели, а затем определить возмущения, которые:

  • Максимизируйте функцию потерь, чтобы запутать модель и заставить ее предсказывать класс, отличный от того, который она должна предсказывать (в контексте классификации текста).
  • Нацельтесь на определенный класс, чтобы модель предсказывала этот конкретный класс.

Таким образом, создаются специально созданные примеры, содержащие эти возмущения.

Атаки черного ящика

Чтобы запустить атаки методом «черного ящика», злоумышленнику нужно только иметь доступ к конечной точке, из которой он может делать столько выводов о модели, сколько пожелает, не зная об архитектуре модели и/или ее весах.

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

Эта метрика позволяет злоумышленнику идентифицировать слова/токены, которые в наибольшей степени способствуют склонению модели классификации текста к определенному классу во время логического вывода.

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

Существует множество средств атаки на текст с открытым исходным кодом (например, TextAttack) для создания состязательных примеров НЛП, адаптированных для данной модели НЛП с целью ее тестирования и/или создания примеров. для увеличения данных общий алгоритм, используемый для их генерации, выглядит следующим образом:

  1. Ранжировать слова по важности
  2. Замените наиболее важные слова синонимами (Используя модели токенов Masked, такие как BERT или Word Embeddings).
  3. Адаптируйте замененные слова к предложению, используя ограничения для сгенерированных состязательных примеров (POS — Part-Of-Speech — согласованность, например, чтобы убедиться, что глагол заменен другим глаголом). )

Как я могу противостоять атакам состязательного НЛП?

Чтобы противостоять такого рода атакам НЛП, мы должны быть в состоянии:

На следующем рисунке из статьи На пути к совершенствованию состязательного обучения моделей НЛП [3] показан конвейер обучения модели, который изящно интегрирует этап итеративного состязательного обучения.

Заключение

С ростом потребности в автоматической модерации контента с помощью моделей и фильтров НЛП из-за того, что модераторы-люди не могут справиться с растущим объемом пользовательского контента в Интернете, постоянно растет потребность в выявлении и противодействии злонамеренным попыткам. использовать уязвимости в инструментах автоматической модерации.

Эта глава была введением в общие формы, которые принимают эти «атаки», и предлагает примеры, а также некоторые решения, чтобы противостоять им.

В следующей главе мы более подробно рассмотрим наши исследования в этой области.

Источники:

[1]: Плохие персонажи: незаметные атаки НЛП, Николас Буше и др. https://arxiv.org/abs/2106.09898 (2021)

[2]: На пути к надежной глубокой нейронной сети в текстах: обзор Wenqi Wang et al. https://arxiv.org/abs/1902.07285 (2019)

[3]: На пути к совершенствованию состязательного обучения моделей НЛП Jin Yong Yoo et al. https://arxiv.org/abs/2109.00544 (2021)

[4]: Метрики недостаточно — вам нужны поведенческие тесты для НЛП, https://towardsdatascience.com/metrics-are-not-enough-you-need-behavioral-tests-for- нлп-5e7bb600aa57