Непреднамеренная систематическая ошибка Jigsaw в классификации токсичности

Введение

Команда Conversation AI, исследовательская инициатива, основанная Jigsaw и Google (обе части Alphabet), создает технологию для защиты голоса в разговоре. Основное внимание уделяется моделям машинного обучения, которые могут определять токсичность в онлайн-разговорах, где токсичность определяется как что-либо грубое, неуважительное или иным образом способное заставить кого-то покинуть обсуждение.

История

Когда команда Conversation AI впервые построила модели токсичности, они обнаружили, что модели неправильно научились ассоциировать имена часто атакуемых удостоверений с токсичностью. Модели предсказывали высокую вероятность токсичности комментариев, содержащих эти личности (например, «гей»), даже если эти комментарии на самом деле не были токсичными (например, «Я гей»). Это происходит из-за того, что обучающие данные были взяты из доступных источников, где, к сожалению, некоторые личности в подавляющем большинстве случаев упоминаются в оскорбительном ключе.

Постановка задачи

От Kaggle:

Модель, созданная командой The Conversation AI, имеет проблему непреднамеренной предвзятости, которую необходимо устранить (или свести к минимуму). Необходимо построить модель, которая сможет найти токсичность в комментариях и свести к минимуму непреднамеренную предвзятость в отношении некоторых тождеств.

Цель

  • Токсичные комментарии — это оскорбительные комментарии, которые иногда могут заставить некоторых людей покинуть обсуждение (на общедоступных форумах). Итак, предскажите, действительно ли комментарий токсичен или нет.
  • Попробуйте уменьшить непреднамеренное смещение при прогнозировании.

Показатель

Команда Conversation AI предложила использовать недавно разработанную метрику, которая объединяет несколько субметрик, чтобы сбалансировать общую производительность с различными аспектами непреднамеренной предвзятости.

Во-первых, мы определим каждую субметрику.

Общая AUC

Это ROC-AUC для полного оценочного набора.

Смещение AUC

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

Подгруппа AUC: здесь мы ограничиваем набор данных только примерами, в которых упоминается конкретная подгруппа удостоверений. Низкое значение этого показателя означает, что модель плохо различает токсичные и нетоксичные комментарии, в которых упоминается личность.

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

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

Обобщенное среднее значение смещения AUC

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

где:

Mp = p-я функция средней мощности

ms = показатель смещения m, рассчитанный для подгруппы s.

N = количество подгрупп идентичности

Для этого соревнования мы используем значение p, равное -5, чтобы побудить конкурентов улучшить модель для подгрупп идентичности с самой низкой производительностью модели.

Окончательная метрика

Мы объединяем общую AUC с обобщенным средним AUC смещения, чтобы рассчитать окончательную оценку модели:

где:

A = количество субметрик

ms, a = метрика смещения для подгруппы s с использованием подметрики a

wa = вес относительной важности каждой субметрики; все четыре значения w равны 0,25

Описание данных

Загрузите файлы данных здесь.

Данные включают следующее:

  • train.csv: обучающий набор, включающий комментарии, метки токсичности и подгруппы.
  • test.csv: набор тестов, который содержит тексты комментариев без меток токсичности и подгрупп.

В файле train.csv 45 столбцов, из которых мы будем использовать только 16 столбцов. Эти 16 столбцов:

  1. comment_text: комментарий, который необходимо классифицировать как токсичный или нетоксичный.
  2. target:столбец, содержащий информацию об уровне токсичности комментария. (пример: 0,43 или 0,78)
  3. ВСПОМОГАТЕЛЬНЫЕ столбцы. Думайте о них как о подгруппах токсичности. Они классифицируют комментарий как серьезная_токсичность, непристойность, атака на личность, оскорбление и/или угрозу.
  4. Столбцы идентичности. Эти столбцы пытаются определить личность человека по одному или нескольким из мужских, женских, гомосексуальных_геев или лесбиянок, христиан, евреев, мусульман, черных, белых, психических_или_психических_заболеваний. Эти столбцы используются для расчета предвзятой AUC (показатель производительности).

Файл test.csv содержит только столбец comment_text.

Исследовательский анализ данных

Данные поезда содержат почти 1,8 миллиона комментариев. Набор данных сильно несбалансирован. Есть 1,6 миллиона нетоксичных комментариев, а остальные токсичны. Даже личности разбалансированы.

Ниже приведены круговые диаграммы для каждого столбца идентификаторов. Оранжевый цвет означает, что комментарий не относится к этой категории, а синий цвет означает, что комментарий относится к этой категории.

Процедура, которой необходимо следовать

Сейчас не секрет, что текущая задача — это задача НЛП.

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

Процесс, которому я следовал:

  1. Расширьте любое сокращенное слово (например: не станет не будет)
  2. Удалите новые строки и лишние пробелы.
  3. Удалите любые специальные символы или все, что не является буквенно-цифровым.
  4. Удалить стоп-слова
  5. Стемминг.

Пока вы делаете вышеперечисленное, вы можете добавить несколько собственных функций, таких как

1. количество слов

2. количество символов

3. количество уникальных слов

4. Количество ругательств

5. соотношение количества слов к количеству символов

и/или

6. отношение количества уникальных слов к количеству слов.

7. Анализ настроений с помощью SentimentIntensityAnalyzer от nltk.

Когда вы закончите с описанным выше процессом, у вас будет что-то вроде

Исходный комментарий: это так здорово. Типа: «Хочешь, чтобы твоя мама это прочитала??» Действительно отличная идея, молодец!

Обработанный комментарий:это круто, как будто бы мама читала действительно отличная идея, хорошо, дон

Затем идет векторизация текстовых данных. Есть много способов сделать это. Некоторые из популярных методов:

  1. Мешок слов (BoW)
  2. ТФИДФ
  3. Слово в векторы (W2V)

Мешок слов:

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

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

Пакет слов — это представление текста, описывающее вхождение слов в документ. Это включает в себя две вещи:

  1. Словарь известных слов.
  2. Мера присутствия известных слов.

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

Интуиция подсказывает, что документы похожи, если они имеют сходное содержание. Далее, из одного только содержания мы можем узнать кое-что о значении документа.

Пакет слов может быть простым или сложным, как вам нравится. Сложность возникает как при принятии решения о том, как спроектировать словарь известных слов (или токенов), так и о том, как оценивать наличие известных слов.

На изображении ниже показан пример этой процедуры.

TFIDF:

TF-IDF (термин частотно-обратная частота документа) — это статистическая мера, которая оценивает, насколько релевантно слово документу в наборе документов. Это делается путем умножения двух показателей: сколько раз слово встречается в документе, и обратной частоты слова в документе в наборе документов.

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

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

Слово в векторы или встраивание слов (W2V):

Встраивание слов — это усвоенное представление текста, в котором слова с одинаковым значением имеют сходное представление.

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

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

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

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

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

Основные преимущества W2V по сравнению с BoW и TFIDF:

Встраивание слов учитывает симметричные слова (например, такие слова, как вкусный и вкусный) и отношения. Например.

В этом объяснении используются два типа W2V. Среднее значение W2V и TFIDF W2V

Среднее W2V:

Из Word Embedding мы получаем векторы каждого слова. В Avg W2V среднее значение всех векторов в документе берется для расчета среднего значения W2V соответствующего документа.

TFIDF W2V:

Он называется W2V, взвешенным по TF-IDF. В TF-IDF W2V средневзвешенное значение TF-IDF всех векторов в документе используется для вычисления TF-IDF Word2Vec соответствующего документа.

Векторизация числовых данных:

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

В пакете sklearn есть много способов векторизации числовых данных. Одним из таких методов является QuantileTransformer.

Согласно scikit, узнайте:

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

Модели машинного обучения:

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

Теперь, когда это не так, давайте закодируем наши модели и обучим их.

Поскольку объем данных велик, а количество функций велико, лучше всего использовать логистическую регрессию, SVM и NB, так как это требует меньше вычислительных ресурсов.

Теперь все, что осталось сделать, это объединить текстовые векторные данные и числовые векторные данные и обучить модели.

Вывод всех моделей приведен ниже:

Сумка слов (BoW)

Unigram BoW

Логистическая регрессия:

SVM

Наивный байесовский анализ

Unigram и Bigram (Ngram) BoW

Логистическая регрессия

SVM

Наивный байесовский анализ

TFIDF

Unigram TFIDF

Логистическая регрессия

SVM

Наивный байесовский анализ

Unigram и Bigram (Ngram) TFIDF

Логистическая регрессия

SVM

Наивный байесовский анализ

Внедрение Word

Наивный Байес невозможен при встраивании слов из-за отрицательных значений в W2V.

Среднее W2V

Логистическая регрессия

SVM

TFIDF W2V

Логистическая регрессия

SVM

Резюме всех лучших выходов всех вышеперечисленных моделей:

Из вышеприведенной таблицы видно, что SVM на Ngram TFIDF лучший по сравнению со всеми остальными.

Глубокое обучение:

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

Изображение A — это нейрон любого человека. Изображение B — это графическое представление нейронной сети.

Дендриты на изображении A действуют как входные узлы, а тело клетки содержит ядро ​​с определенной функцией, которое принимает входные данные, применяет эту функцию и отправляет ее аксону. Аксон — это соединение тела клетки с выходом. Конечные аксоны на конце являются выходными узлами.

Изображение B такое же, как изображение A, за исключением того, что A создано естественным путем, а B создано человеком и используется в глубоком обучении. Все x1, x2, x3,….,xn являются входами, f(x) — ядром, а yi — конечным аксоном.

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

www.appliedaicourse.com

Это отличный курс. Вы можете посмотреть их бесплатный контент и решить, хотите ли вы присоединиться.

Примечание. Я никак не связан с этим курсом, но я студент, который узнал все это из этого курса.

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

Я использовал Keras от Tensorflow, но вы можете использовать любой удобный для вас модуль.

В Keras есть метод токенизатора. По словам Кераса:

Этот класс позволяет векторизовать текстовый корпус, превращая каждый текст либо в последовательность целых чисел (каждое целое число является индексом лексемы в словаре), либо в вектор, где коэффициент для каждой лексемы может быть двоичным в зависимости от количества слов. на базе TF-IDF…

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

В Keras также есть метод для этого процесса, pad_sequence.

Эта функция преобразует список последовательностей num_samples (списков целых чисел) в двумерный массив Numpy формы (num_samples, num_timesteps). num_timesteps — это либо аргумент maxlen, если он указан, либо длина самой длинной последовательности в противном случае.

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

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

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

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

Модель обучена прогнозировать токсичность и столбцы AUX.

Результатом модели глубокого обучения является

При отправке результата этой модели в Kaggle оценка составляет 0,93625.

Использованная литература:

  1. https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification/overview
  2. https://medium.com/datadriveninvestor/jigsaw-unintended-bias-in-toxicity-classification-d9adf34307d3
  3. https://medium.com/@nidhibansal1902/естественный-язык-обработка-головоломка-непреднамеренное-предубеждение-в-токсичности-классификация-кейс-исследование-efbc6ff2796b
  4. https://medium.com/analytics-vidhya/jigsaw-unintended-bias-in-toxicity-classification-using-bi-directional-rnns-f96f09787541
  5. https://www.kaggle.com/thousandvoices/simple-lstm