Непреднамеренная систематическая ошибка 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 столбцов:
- comment_text: комментарий, который необходимо классифицировать как токсичный или нетоксичный.
- target:столбец, содержащий информацию об уровне токсичности комментария. (пример: 0,43 или 0,78)
- ВСПОМОГАТЕЛЬНЫЕ столбцы. Думайте о них как о подгруппах токсичности. Они классифицируют комментарий как серьезная_токсичность, непристойность, атака на личность, оскорбление и/или угрозу.
- Столбцы идентичности. Эти столбцы пытаются определить личность человека по одному или нескольким из мужских, женских, гомосексуальных_геев или лесбиянок, христиан, евреев, мусульман, черных, белых, психических_или_психических_заболеваний. Эти столбцы используются для расчета предвзятой AUC (показатель производительности).
Файл test.csv содержит только столбец comment_text.
Исследовательский анализ данных
Данные поезда содержат почти 1,8 миллиона комментариев. Набор данных сильно несбалансирован. Есть 1,6 миллиона нетоксичных комментариев, а остальные токсичны. Даже личности разбалансированы.
Ниже приведены круговые диаграммы для каждого столбца идентификаторов. Оранжевый цвет означает, что комментарий не относится к этой категории, а синий цвет означает, что комментарий относится к этой категории.
Процедура, которой необходимо следовать
Сейчас не секрет, что текущая задача — это задача НЛП.
Первым шагом в любой задаче машинного обучения является очистка и предварительная обработка данных.
Процесс, которому я следовал:
- Расширьте любое сокращенное слово (например: не станет не будет)
- Удалите новые строки и лишние пробелы.
- Удалите любые специальные символы или все, что не является буквенно-цифровым.
- Удалить стоп-слова
- Стемминг.
Пока вы делаете вышеперечисленное, вы можете добавить несколько собственных функций, таких как
1. количество слов
2. количество символов
3. количество уникальных слов
4. Количество ругательств
5. соотношение количества слов к количеству символов
и/или
6. отношение количества уникальных слов к количеству слов.
7. Анализ настроений с помощью SentimentIntensityAnalyzer от nltk.
Когда вы закончите с описанным выше процессом, у вас будет что-то вроде
Исходный комментарий: это так здорово. Типа: «Хочешь, чтобы твоя мама это прочитала??» Действительно отличная идея, молодец!
Обработанный комментарий:это круто, как будто бы мама читала действительно отличная идея, хорошо, дон
Затем идет векторизация текстовых данных. Есть много способов сделать это. Некоторые из популярных методов:
- Мешок слов (BoW)
- ТФИДФ
- Слово в векторы (W2V)
Мешок слов:
Модель мешка слов, или сокращенно BoW, — это способ извлечения функций из текста для использования в моделировании, например, в алгоритмах машинного обучения.
Этот подход очень прост и гибок, и его можно использовать множеством способов для извлечения признаков из документов.
Пакет слов — это представление текста, описывающее вхождение слов в документ. Это включает в себя две вещи:
- Словарь известных слов.
- Мера присутствия известных слов.
Он называется «мешком» слов, потому что любая информация о порядке или структуре слов в документе отбрасывается. Модель касается только того, встречаются ли известные слова, а не где в документе.
Интуиция подсказывает, что документы похожи, если они имеют сходное содержание. Далее, из одного только содержания мы можем узнать кое-что о значении документа.
Пакет слов может быть простым или сложным, как вам нравится. Сложность возникает как при принятии решения о том, как спроектировать словарь известных слов (или токенов), так и о том, как оценивать наличие известных слов.
На изображении ниже показан пример этой процедуры.
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 — конечным аксоном.
Если вы хотите узнать больше и изучить внутреннюю работу машинного обучения и глубокого обучения, я предлагаю вам изучить
Это отличный курс. Вы можете посмотреть их бесплатный контент и решить, хотите ли вы присоединиться.
Примечание. Я никак не связан с этим курсом, но я студент, который узнал все это из этого курса.
Прежде чем двигаться дальше, подготовка данных для глубокого обучения отличается от подготовки для традиционных моделей машинного обучения.
Я использовал 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.
Использованная литература:
- https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification/overview
- https://medium.com/datadriveninvestor/jigsaw-unintended-bias-in-toxicity-classification-d9adf34307d3
- https://medium.com/@nidhibansal1902/естественный-язык-обработка-головоломка-непреднамеренное-предубеждение-в-токсичности-классификация-кейс-исследование-efbc6ff2796b
- https://medium.com/analytics-vidhya/jigsaw-unintended-bias-in-toxicity-classification-using-bi-directional-rnns-f96f09787541
- https://www.kaggle.com/thousandvoices/simple-lstm