Русский
Русский
English
Статистика
Реклама

Text classification

Тестируем комплементарную кросс-энтропию в задачах классификации текста

27.11.2020 20:16:23 | Автор: admin
Ранее в этом году И. Ким совместно с соавторами опубликовали статью [1], в которой предложили новую функцию потерь для задач классификации. По оценке авторов, с её помощью можно улучшить качество моделей как в сбалансированных, так и в несбалансированных задачах классификации в сочетании со стандартной кросс-энтропией.

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

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



Предварительный анализ


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

В статье комплементарная кросс-энтропия определяется следующим образом:



а полная функция потерь, используемая в обучении модели это сумма со стандартной кросс-энтропией:



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

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

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

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

Проектирование эксперимента


Держа все вышеописанное в голове, можно приступить к разработке эксперимента.

Мы будем использовать простой классификационный датасет с Kaggle [2]. Он подразумевает задачу классификации тональности с пятью классами. Однако крайние классы (очень негативные и очень положительные) и их более умеренные аналоги обычно приписываются очень похожим текстам (см. рис. 1 для примера). Вероятно, это связано с определенной процедурой генерации этого набора данных.



Рис. 1. Примеры однотипных текстов, отнесенных к разным классам.

Чтобы упростить задачу, мы переназначим классы и сделаем три: отрицательный, нейтральный, положительный.

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

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



Таблица 1. Классовые пропорции, используемые в экспериментах. Коэффициенты даны относительно количества отрицательных примеров.

Мы сравним комплементарную кросс-энтропию со стандартной кросс-энтропией без весов классов. Мы также не будем рассматривать другие подходы к решению классового дисбаланса, такие как upsampling и downsampling, и добавление синтетических и/или дополненных примеров. Это поможет нам сохранить эксперимент емким и простым.

Наконец, мы разделили данные на train, validation и test сеты в пропорции 0.7 / 0.1 / 0.2.

Мы используем сбалансированную кросс-энтропию в качестве основной метрики производительности модели, таким образом следуя авторам оригинальной статьи. Мы также используем macro-averaged F1 в качестве дополнительной метрики.

Детали проекта


Исходный код нашей реализации, включая предварительную обработку данных, функцию потерь, модель и эксперименты, доступны на GitHub [3]. Здесь мы просто рассмотрим его ключевые моменты.

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

Реализация функции комплементарной кросс-энтропии довольно прямолинейна. Мы используем cross_entropy из PyTorch для стандартной кросс-энтропии, поэтому наша функция потерь принимает на вход логиты. Далее она переводит их в вероятности, чтобы вычислить комплементарную часть.

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

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

Детали процесса обучения: batch size 256, learning rate 3e-4, размер эмбеддингов 300, размер LSTM 128, уровень dropout 0,1, обучение в течение 50 эпох с остановкой после 5 эпох без улучшения качества на валидации. Мы используем одни и те же параметры как для экспериментов с комплементарной, так и для экспериментов со стандартной кросс-энтропией.

Результаты экспериментов





Таблица 2. Результаты экспериментов. CE для эксперимента со стандартной кросс-энтропией и ССЕ для комплементарной.

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

Ещё одну проблему комплементарной кросс-энтропии можно увидеть на графиках функции потерь (рис. 2).



Рис. 2. Графики потерь для степеней дисбаланса 1 / 0.2 / 0.2 (оранжевый) и 1 / 0.5 / 0.5 (зеленый).

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

В заключение


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

Примечания


[1] Y. Kim et al, 2020. Imbalanced Image Classification with Complement Cross Entropy. arxiv.org/abs/2009.02189
[2] www.kaggle.com/c/sentiment-analysis-on-movie-reviews/overview
[3] github.com/simbirsoft/cce-loss-text
Подробнее..

Чёрный петух, жирный творог и альпийская корова,илиУменьшение предвзятости в классификации токсичности

10.03.2021 14:15:34 | Автор: admin

В ноябре на EMNLP 2020 в четвёртый раз прошёл воркшоп WOAH: он был посвящён алгоритмам, обнаруживающим кибербуллинг и токсичность в онлайн-пространстве. Мы выступили со статьёй о ложноположительных срабатываниях детектора враждебных высказываний. На прошлой неделе мы запустили фильтр на основе этого детектора: каким был путь от идеи до релиза и публикации рассказываем в этой статье.

Проблема и существующие решения

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

Недавно мы запустилиеще один фильтрвраждебных высказываний.Хоть угрозы в комментарияхчастоне несут реальной опасности,онисоздаютагрессивнуюатмосферу в пабликеипорой могут провоцироватьнанасилие в офлайне.Мысделалифильтр,которыйавтоматически удаляетугрозы: например, пожелания смерти или обещания причинить вред здоровью.Администратор сообщества можетвключить и выключитьегов любой момент, а ещё посмотреть все отсеянные комментарии,восстановитьлюбой из них илиотправить автора в чёрный список.

С проблемой угроз и оскорблений сталкиваемся не только мы, но и многие другие интернет-площадки.Разработчики вместе с представителями социальных сетей стремятсясоздаватьнадёжные модели, обнаруживающиетоксичность.Но частаяпроблематаких детекторов наличие Unintended Bias (UB) при вынесении вердикта. Иными словами, модель учится присваивать высокий скор токсичности текстам, в которыхестьспецифичные слова: оничасто встречаютсяв оскорбительном контексте, но сами по себе несодержат негативного смысла. Например:женщина, чёрный, петух, админ. Такие слова мы будем называть защищаемыми сущностями,или Protected Identities(PI).

ВКонтакте, 2020 https://vk.com/safetyВКонтакте, 2020 https://vk.com/safety

Сейчас естьмногоконтестови мастер-классов, посвящённых распознаванию токсичных выражений:например,HASOCнаFIRE-2019; TRAC-2020; HatEvalиOffensEvalнаSemEval-2019.Также на платформе Kaggle проводятся состязания по этому направлению и даже по его узкой теме Unintended Bias! В последнемсоревновании от Jigsawиспользовалась специфичная для нашей задачи метрика, на которой мы валидировали модели(подробнее в следующем разделе статьи).

Исследованийпообнаружениютоксичности в русском языкепока мало.Существуетunsupervised-методдлярасширениясловаря оскорбительных и непристойных слов на русском и украинском языках. Ещёнедавно была предложенамодельBERTдля классификациитоксичногорусскоязычногоконтента сейчас онанаиболее близка кSoTA, но еёсложно использовать из-за размера.

В статье сWOAHEMNLP2020мы рассказываем о трёх подходах, которые помоглиуменьшить число false-positive предсказаний:

  1. Мыприменилиязыковую модель для генерации нетоксичных примеров с контекстом по защищаемым сущностям.

  2. Использовалидропаут на слова из спискатакихсущностей.

  3. Опробовалиmultitask-подходы, о которых расскажем далее.

Как мыразрабатывалидетектор(данные,мини-апп, проблема UnintendedBias)

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

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

Первые вопросы,на которыенам предстоялоответить на старте разработки:

  • Как понять, что перед нами токсичный текст?

  • Как разметить данные для обучения?

  • Сколько вообще их нужно?

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

Угрозы

Не угрозы

Обещанияипожелания смерти,причинения вреда здоровью

Призывы отправить кого-то в тюрьму

Угрозы с сексуальным подтекстом

Одобрение действий, которые нам неизвестны

Пожелания смерти самому себе

Эпитафии

Таблица1. Некоторые изправил разметки

Разметкой занимались модераторы. Онииспользовали нашевнутреннееприложениеи выполнялинесколько итераций, валидируярешения друг друга.

Чтобысобирать данные максимально эффективно, на финальныхэтапахразметки мы использовали подходActive Learning. Онпозволяетдокидывать примеры с максимальной энтропией для дообучения классификатора. Конечно, в перспективе было бы здорово поставить всёэто на конвейер :)

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

  • классификатор считает токсичнымитекстывидатыне чучелоилиназыватьлюдей чучелами плохо этоудалось решить довольно быстро генерацией синтетики;

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

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

Дальше мы действовали так: вручную составилисписокиз 214русских слов,которые относятсяк защищаемым сущностям(тоестьтем, которые часто встречаются в оскорбительном контексте, но сами по себене несут негативного смысла). Слова распределили похарактеру токсичностина категории: сексизм, национализм, угрозы, домогательства, гомофобия и другие.Полный список защищаемыхидентичностейи относящихся к ним словможно посмотреть на GitHub:vk.cc/aAS3TQ.Воfuturework смелозаписываемавтоматизацию сбора таких сущностей.

лукизм

корова,пышка

сексизм

женщина,баба

национализм

чех,еврей

угрозы

выезжать,айпи

домогательства

киска,секси

гомофобия

гей,лгбт

другое

мамка,админ

Таблица 2. Выдержки из полного списказащищаемыхидентичностейи относящихся к ним слов

Как можно оценить Unintended Bias?

В соревновании от Jigsaw,как и на нашемчемпионатеVK Cup,качествопредсказанийоценивалосьпри помощиgeneralizedmean of Bias AUCs. Идея такой метрикив том,чторезультатыработы модели на тестеразбиваютсяна сабсетыв зависимости от выхода модели и наличия слов из списка защищаемых сущностей. Затем мы считаем AUC по каждомусабсету,берём от них обобщённое среднееикомбинируемегос варьируемыми весами с AUC по всем результатам.

Метрика качества. Взято из соревнования от JigsawМетрика качества. Взято из соревнования от Jigsaw

Метрика качества. Взято из соревнования от Jigsaw

Наши подходы

  1. Нетоксичная языковая модель

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

  2. Random dropout на Protected Indentities

    Известно,что random word dropoutможетсделатьклассификациютекстакачественнее.Мыприменилиэтот метод, чтобыво время обученияслучайным образом(свероятностью 0,5) заменять защищаемыеидентичностивовходных последовательностяхнамаркер.

  3. Multitask framework

    Мыиспользовали фреймворкmultitask-learning,расширив для негобазовую модельпри помощи предсказания классаProtected Identity(лукизм,национализм,угрозаи так далее).При обучении потери считаются как среднее взвешенное по предсказанию токсичности и классу защищаемой сущности это тожеулучшает результат.

Схема обучения модели с применением multitask-learningСхема обучения модели с применением multitask-learning

Схема обучения модели с применением nultitask-learning

Результаты

Мыработали сэмбеддингами,предварительно обученнымина корпусах комментариев из публичных сообществ, русских субтитров из разных фильмов и видео(наних жетренировалась модельBPE).

Попробовалидве архитектуры(self-ATTN,CNN),комбинируятриподходаиз нашей статьи.self-ATTN модель, основаннаяна self-attentive encoder.Векторыпередаютсянапрямуювattention,поэтомумодельself-attentionстановится похожей на ту,что используется втрансформерах. Преимущество этой архитектуры в том, что её отдельные веса внимания каждого входного токена поддаются интерпретации.Это позволяет визуализировать, что именно служит триггером для классификатора. Ана основе этого исследовать данные и, например,расширятьсписокзащищаемыхсущностей.

Визуализация attention по словамВизуализация attention по словам

Визуализация attention по словам

В качестве функции потерь для singletask approach мыприменилиBCE-loss. Дляmultitask approachиспользовали loss-взвешенное среднеедля двух задач:скоратоксичности и предсказанияклассаProtected Identity.Больше деталей обучения вроде числа итераций или lr внашейполнойстатье.

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

Метод

Нашдатасет

(Андрусяк и др., 2018)

(Сметанин, 2020)

GMB-AUC

F1

GMB-AUC

F1

GMB-AUC

F1

CNN

.56.005

.66.003

.51.005

.59.001

.53.003

.78.002

CNN + multitask

.58.001

.68.008

.52.002

.61.002

.53.010

.80.002

Attn

.60.002

.71.010

.54.001

.72.003

.54.005

.80.010

Attn + multitask

.60.004

.74.012

.54.009

.69.009

.54.007

.82.004

Attn + LM data

.65.003

.74.002

.58.003

.70.001

.57.006

.83.009

Attn + LM data + multitask

.67.002

.74.016

.59.003

.70.010

.58.003

.84.008

Attn + identity d/o

.61.001

.65.003

.53.004

.68.001

.54.007

.82.011

Attn + identity d/o + multitask

.61.005

.66.007

.54.004

.69.008

.58.009

.83.007

Attn + identity d/o + LM data

.67.004

.76.005

.55.003

.71.002

.59.003

.86.012

Attn + identity d/o + LM data + multitask

.68.001

.78.010

.56.004

.73.003

.60.008

.86.004

Таблица3.Generalized Mean of Bias AUCs(GMB-AUC)изначениеF-меры по наборам данных

Нашимодели достигли конкурентоспособных результатовпо F-мере на всехтрёхнаборахданных. Самая эффективнаяи хитраяиз них(Attn+ identity d/o + LM data + multitask setup)показалаF-меру0,86по тесту. А это 93% от заявленнойточностиSoTA-модели более крупнойисозданной при помощифайнтюнингаBERT-like архитектуры.

Исследование продолжим:интересно прикинуть, какможноавтоматическирасширятьсписокзащищаемых идентичностейи связанныхс нимислов, а также автоматизировать разметку при помощи Active Learning.

Авторы Надежда Зуева, Павел Калайдин и Мадина Кабирова выражают благодарность Даниилу Гаврилову и Октаю Татанову за полезные дискуссии, Даниилу Гаврилову за ревью, Виктории Логиновой и Дэвиду Принцу за редактирование текста и анонимнымрецензентамза ценные комментарии. Также мы хотим поблагодарить команду модераторов ВКонтакте(которуюкоординировала Катерина Егорушкова) за помощь в создании набора данных для обучения, Анну Мелковскую за помощь в координации проекта, Семена Полякова, Андрея Якушева, Дмитрия Сальникова за полезные советы по Active Learning и не только, Дмитрия Юткина и Александра Маркова за помощь во внедрении технологии в продакшен.

We are open for collaborations! Поэтому датасет собранных нами угроз доступен по запросунаписать можно на почту nadezhda.zueva@vk.com или ВКонтакте(vk.com/nda)

P.S.Обоснования и ссылки на подходы в нашей основной статье:arxiv.org/abs/2010.11666

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru