Всем привет! Меня зовут Даниил Карпов, я старший NLP-разработчик в MTS AI. В эпоху LLM и огромных датасетов, вмещающих в себя весь интернет, кажется, что качество самих данных ушло немного на второй план: чем больше данных/параметров, тем лучше. Однако экстенсивный рост рано или поздно упирается в ограничения, когда становится уже слишком дорого/невозможно его продолжать. Роль хороших данных не стоит недооценивать, грамотный отбор может помочь значительно ускорить и удешевить обучение с одной стороны, тогда как отбраковка откровенно плохой разметки поможет улучшить качество с другой. Здесь я расскажу о некоторых из таких методов, которые использовались в процессе подготовки данных.
1. Дедупликация данных
Любая работа с датасетами начинается с детекции неполных дубликатов (полные вполне легко убираются базовыми методами). Благодаря использованию методов дедупликации можно значительно проредить данные, которые дают околонулевой прирост информации для модели в процессе обучения. Фильтрация таких данных, особенно в условиях ограниченных ресурсов и времени, является важным этапом подготовки данных. Подобные методы могут использовать как базовый набор слов и n-граммы (например, MinHash или SimHash), так и эмбеддинги, полученные из предобученных энкодеров. В данном разделе рассмотрим несколько таких методов, которые кажутся интересными и могут заинтересовать читателя.
1.1 MinHash+LSH
Этот метод надежен как швейцарские часы и полезен в первичной чистке данных. В общем случае он строится по следующей схеме:
Shingling: получение из текста символьных n-грамм.
MinHashing: получение для документа сигнатур, используя хэш-функции.
LSH: максимизация коллизий для распределения текстов по корзинам.
С первым пунктом, думаю, все предельно понятно, поэтому немного подробнее остановлюсь на следующих двух.
MinHash — алгоритм, который позволяет нам получить из разреженной матрицы сигнатуру каждого из текстов. Вы спросите, в чем же заключается минимальность? В наиболее простом случае алгоритм устроен следующим образом:
Делаем one-hot encoding шинглов.
Делаем перемешивание MinHash у каждого из текстов (векторов из п.1).
Используем как хэш индекс строки, где впервые встретили 1 (вот и минимальность).
Повторяем
до посиненияпункты 2-3 до достижения желаемой длины сигнатуры.
Таким образом, мы получаем для каждого из текстов его сигнатуру. Сравнение сигнатур текстов (поэлементно) будет эквивалентно их мере близости Жаккара, но считается быстрее. Однако это все равно недостаточно быстро. Поэтому подключается еще и LSH.
LSH (Locality-Sensitive Hashing) — алгоритм ANN (Approximate Nearest Neighbor), который позволяет находить ближайшие элементы. В реализации с MinHash он работает следующим образом:
Делим сигнатуры на k векторов (k бэндов с вектором размера n).
Получаем хэш для каждого из k векторов внутри бэнда.
Сравниваем хэши, и если произошла коллизия хотя бы в одном из бэндов, тексты считаются кандидатами на дубликат.
Для демонстрации возьмем датасет Amazon Massive, его русскую часть. Датасет небольшой, тренировочная часть содержит 11,5 тыс. примеров, в нем гарантировано есть дубликаты и очень близкие друг к другу фразы. В реализации на Spark — MinHashLSH с количеством хэшей 20 и порогом минимального индекса Жаккара в 0.2, из 11,5 тыс. данных было убрано 827 записей или 7.2% данных. Стоит добавить, что в датасете среди них было 514 полных дубликатов. Посмотрим на некоторые примеры неполных дублей, которые обнаружил MinHashLSH:
Text 1 |
Text 2 |
---|---|
удали все события календаря |
удали все события из календаря |
выключи свет в моей комнате |
выключи свет в комнате |
что в моём списке |
что в моём в списке задач |
поставь будильник на пять тридцать утра |
поставь будильник на пять утра |
удали следующее событие в календаре |
удали событие в календаре |
В целом этот метод и подобные ему легко реализовать, к тому же в качестве первичной очистки данных они дают хороший результат. Здесь, правда, нужно отдельно отметить, что в некоторых случаях это может быть буквально операция, противоположная аугментации, поэтому такой алгоритм полезен в первую очередь в действительно больших и сырых датасетах.
Также существуют другие реализации LSH и более современные методы ANN, но их оставим за скобками, так как далее для объяснения будет интересен именно MinHash LSH.
1.2 SemDeDup
Уже из названия становится понятно, что здесь сравнивается также и семантика примеров. Идея данного метода базируется на том, чтобы находить и удалять семантические дубликаты в несколько шагов. Сначала данные преобразуются в эмбеддинги и кластеризуются на n кластеров. После этого в каждом из кластеров считаются расстояния между точками и удаляются дубликаты, которые близки к другим точкам в кластере, но при этом являются самыми дальними от центроида кластера. Таким образом, получается убрать точки, несущие минимальное количество информации, и оставить наиболее отличающиеся примеры. В своей работе, авторы сравнивали на C4 датасете перплексию в зависимости от доли удаляемых объектов алгоритмом SemDeDup со случайным удалением и алгоритмом NearDup (зеленая точка).
1.3 SSL Prototypes
Данный алгоритм основан на идее, что прототипичные точки, то есть самые близкие к центроиду кластера, являются наименее информативными примерами, удаление которых не принесет серьезного ущерба качеству модели.
Авторы алгоритма, в своей работе, задавались целью отойти от power law в сторону exponential (прирост метрики относительно прироста новых данных/размера модели) и предложили свой self-supervised метод для отбора данных без серьезного ущерба качеству. Алгоритм заключается в следующем:
Кластеризация эмбеддингов на n кластеров.
Определение “прототипичности” точки косинусным расстоянием от ближайшего центроида.
Удаление доли k наиболее прототипичных точек.
Алгоритм простой, но при этом, по результатам авторов, соответствует supervised методам и методам с меморизацией. Также n в целом не влияет на качество алгоритма и может отличаться в любую сторону от количества классов в данных.
Результаты на Image Net такие:
В зависимости от доли оставшихся данных (шкала x) по качеству (accuracy), SSL Prototypes показывает сопоставимые результаты с supervised методами.
1.4 D4
Этот метод сочетает в себе два предыдущих метода: SemDeDup и SSL Prototypes. При применении SSL Prototypes после MinHash остаются целые кластеры с шаблонным текстом или неинформативные семантически, и большое количество ценных кластеров тратится на дубликатные тексты, а не на связанные тематики, что снижает эффективность SSL Prototypes. Поэтому авторы данного подхода в своей статье предложили следующую схему:
MinHashLSH от изначального датасета (авторы этот пункт явно не указывают, но пишут о том, что такую фильтрацию заранее провели) - получаем датасет .
SemDeDup на всем датасете с долей - получаем .
Обновляем кластеризацию на .
Применяем на SSL Prototypes на долей — получаем датасет , который составляет от .
Авторы заякорили и пробовали разные . Эксперименты они проводили, обучая на C4 на фиксированном количестве токенов.
Количество k кластеров в данной работе предлагают брать как количества примеров.
Результат превосходит бейзлайн за исключением web snapshots. Каждая точка — это обученная OPT модель на 40B токенах. Что касается web snapshots, авторы объясняют такой эффект тем, что примеры валидационного сета очень близки к тренировочному сету, что также ставит под вопрос их способность оценивать генерализацию модели.
Таким образом, D4 соединяет в себе первые три метода последовательно:
MinHashLSH
SemDeDup
SSL Prototypes
В случае с D4 и его частями (SemDeDup, SSL Prototypes) эксперименты на небольших датасетах малопоказательны и чаще могут не отличаться от случайного выбора данных. Однако это абсолютно не говорит о их бесполезности: в случае большого количества сырых данных (например, C4), в моментах, где уже не справляются простые методы, D4 сможет сократить количество данных, при этом сохранив их разнообразие.
2. Поиск некачественных данных в датасете
Тогда как методы дедупликации можно использовать на любых текстовых данных, вне зависимости от задачи, следующие методы подходят лишь для размеченных данных. Здесь мы обсудим способы обнаружения ошибочной разметки в датасете.
Решение такой задачи может происходить на различных этапах: на этапе проверки разметки или на этапе использования готового датасета. Мы остановимся на втором варианте, более универсальном, когда доступа к процессу разметки у нас нет, и рассмотрим несколько методов диагностики данных в процессе обучения модели.
В качестве препарируемого будем использовать датасет AG News. Датасет посвящен новостям, включает в себя 4 класса и 120к новостей. Датасет сбалансированный и, конечно, содержит в себе некачественные сэмплы.
2.1 Dataset Cartography
В своей статье авторы представили Data Maps, предназначенный для оценки и диагностики больших наборов данных в обработке естественного языка. Data Maps используют training dynamics для оценки и сравнения сэмплов.
Data Maps базируется на трех основных метриках:
-
Увереность (Confidence)
Здесь все просто, это вероятность true label, усредненная по эпохам
-
Вариативность (Variability)
Все также просто, только теперь смотрим на дисперсию вероятности
-
Корректность (Correctness)
Просто доля верных предсказаний по сэмплу по эпохам.
На основе трех показателей можно построить Data Map. График строится по первым двум показателям, третий используется вспомогательно. Авторы предложили делить полученный график на три зоны/категории:
easy-to-learn: примеры с высокой уверенностью модели и низкой вариативностью. Эти сэмплы легко обучаются моделью.
ambiguous: примеры средней уверенности модели и высокой вариативностью. Модель не уверена в своем предсказании и часто изменяет его.
hard-to-learn: примеры с низкой уверенностью и низкой вариативностью. Модель легко выучила класс данного сэмпла, правда он неверный :) В экспериментах авторов на нескольких датасетах большую часть из попавших в эту категорию точек составляли примеры с ошибкой в разметке. И казалось бы, вот тот золотой грааль: выкидываем hard-to-learn и радуемся жизни. Но, как всегда, все чуть сложнее: hard-to-learn примеры могут также и помогать в обучении. В экспериментах авторов модель, обученная на таких примерах лучше генерализирует OOD (out of domain), при отсутствии ухудшения на ID (in domain) сэмплах.
Плюсы:
Простота расчета.
Наглядность.
Локализация mislabeled примеров в одной категории.
Минусы:
Деление на категории требует субъективной оценки и дополнительного вмешательства.
Hard-to-learn содержит в себе не только mislabeled.
На тренировочной части AG News получаем такой Data Map:
На данном графике можно выделить все три зоны: easy-to-learn, где модель довольно просто предсказывает класс для высказывания, ambiguous, где она не уверена в предсказании и hard-to-learn, где модель настоятельно дает не совпадающий с разметкой класс.
Давайте посмотрим подробнее на примеры c cамыми низкими уверенностью и вариативностью:
text |
label |
confidence |
variability |
prediction per epoch |
---|---|---|---|---|
Mladin widens Superbike lead Braselton — Mat Mladin took the first step toward sewing up a fifth AMA Superbike title, fighting off a charging Miguel Duhamel to win Saturday #39;s round of the weekend Suzuki Superbike Challenge. |
Sci/Tech |
0.00010033 |
3.65651e-05 |
[‘Sports’, ‘Sports’, ‘Sports’, ‘Sports’, ‘Sports’] |
BUZZ: New privacy concerns People who use public or workplace computers for e-mail, instant messaging and Web searching have a new privacy risk to worry about: Google #39;s free tool that indexes a PC #39;s contents for quickly locating data. |
Sports |
0.000138253 |
6.922e-05 |
[‘Sci/Tech’, ‘Sci/Tech’, ‘Sci/Tech’, ‘Sci/Tech’, ‘Sci/Tech’] |
Typhoon Tokage Kills at Least 51 in Japan (AP) AP - Japan’s deadliest storm in more than a decade unleashed flash floods that washed away hillsides, killing up to 51 people before it veered east into the Pacific Ocean on Thursday. At least 30 people were missing. |
Sports |
0.000303618 |
0.000150405 |
[‘World’, ‘World’, ‘World’, ‘World’, ‘World’] |
Auto Stocks Fall Despite Ford Outlook Despite a strong profit outlook from Ford Motor Co., shares of automotive stocks moved mostly lower Friday on concerns sales for the industry might not be as strong as previously expected. |
Sports |
0.000342434 |
0.000183199 |
[‘Business’, ‘Business’, ‘Business’, ‘Business’, ‘Business’] |
Здесь хорошо видно, что указанные примеры имеют ошибочную разметку. По Data Map можно установить пороги, при которых можно исключить сомнительные части данных: confidence ≤ 0.2 и variability ≤ 0.2. Хотя существует соблазн просто их удалить, но в таком случае мы потеряем и хорошие примеры (не mislabeled), которые способствуют к генерализации модели.
2.2 Understanding Dataset Difficulty with V-Usable information
Своеобразным развитием темы dataset difficulty является следующий подход, который использует v-usable information - меру, оценивающую, насколько сложно модели V предсказать Y при условии X. Также предлагается использовать для оценки сложности сэмпла PVI — Pointwise V-information. Давайте рассмотрим эти концепции более подробно.
V-usable information (VI)
В работе авторы развивают тему в рамках информационной теории. При усложнении или шифровании данных X взаимная информация между X и меткой Y остается неизменной, однако сложность для модели V в получении информации значительно возрастает. Например, мы переведем русский текст на китайский. Взаимная информация для предсказания тональности текста остается такой же, однако предобученная модель на русском языке уже не сможет такие данные использовать, так как никогда не видела китайских иероглифов. Таким образом, данные X в незашифрованном виде остаются для модели V используемыми (V-usable), из чего вытекает понятие v-usable information, показывающее как легко модель V может предсказать Y при условии данных X. Формализуем эти мысли:
В данном выражении мы получаем получаем прогнозируемую V-энтропию, при условии данных, в которых информация об Y отсутствует.
Соответственно при наличии данных, в которых есть информация об Y, получаем:
Собирая вместе, мы получаем V-usable information:
V-usable information дает возможность сравнивать как разные модели с фиксированным датасетом, так и разные датасеты (как полностью разные датасеты, так и разные X при фиксированных Y) с фиксированной моделью.
Такая метрика имеет ряд преимуществ перед классическими (accuracy, f1, etc), так как измеряется всегда в битах (если натуральный логарифм, то в nats), не зависит от баланса данных. V-information лежит в неотрицательной плоскости, 0 при независимости X и Y и монотонна.
Безусловно, такая метрика очень полезна, более чувствительна к переобучению, однако она предоставляет только агрегированную информацию по всему датасету. В связи с этим авторы вводят также поточечную V-информацию, аналогичную PMI (Pointwise Mutual Information).
Pointwise V-information
Здесь все по аналогии, имея модель, g, обученную на пустых данных и g’, обученную на X, мы можем получить поточечную V-информацию следующим образом:
Больший PVI соответствует большей вероятности того, что пример был предсказан правильно. PVI может быть отрицательным, что аналогично PMI, и указывает на то, что модель скорее предсказывает доминирующий класс в выборке, чем учитывает данные X. Одной из причин такого поведения может быть ошибочная разметка. В то же время предсказание может оказаться верным, если, например, доминирующий класс совпадает с классом данного примера.
Отрицательное значение PVI просто указывает на то, что модель лучше предсказывает класс большинства, чем учитывает данные X. Это может быть обусловлено различными причинами.
В экспериментах авторы определили порог между правильно и неправильно размеченными данными приблизительно на уровне 0.5 бит.
Возможность оценивать PVI открывает двери не только для анализа полного датасета или отдельных примеров, но также для оценки любого возможного среза данных путем усреднения PVI между такими примерами.
Авторы даже провели сравнение средних значений PVI между группами в Dataset Cartography и обнаружили значительные различия, с наименьшими значениями в группе hard-to-learn.
Также авторы провели интересные эксперименты, изучая влияние отдельных токенов на PVI. Вместо модели, обученной на пустых данных, они использовали данные, очищенные от определенного токена. Это позволило получить следующие результаты (максимальное PVI в каждой группе):
Плюсы:
Простота расчета
Возможность локализировать mislabeled примеры
Возможность расчитывать PVI по примерам и различным срезам датасета
Возможность определять наиболее значимые для категории токены
Минусы:
Низкий PVI не всегда говорит о неправильности разметки
Необходимость обучения двух моделей: на данных X и на пустых данных
Необходимо подбирать threshold
Несколько примеров с наименьшим PVI в AG News:
text |
label |
v_info |
pred |
---|---|---|---|
Mladin widens Superbike lead Braselton — Mat Mladin took the first step toward sewing up a fifth AMA Superbike title, fighting off a charging Miguel Duhamel to win Saturday #39;s round of the weekend Suzuki Superbike Challenge. |
Sci/Tech |
-11.2065 |
Sports |
Mladin Release From Road Atlanta Australia #39;s Mat Mladin completed a winning double at the penultimate round of this year #39;s American AMA Chevrolet Superbike Championship after taking |
Sci/Tech |
-9.58801 |
Sports |
Mladin notches seventh Superbike win AUSTRALIAN Mat Mladin claimed his seventh win of the season today in the opening race of the US Superbike Championship double-header in Georgia. |
Sci/Tech |
-13.6833 |
Sports |
Kasthari makes himself known Digital technology has now replaced the old photo-finish cameras at Britain #39;s racecourses, but still there are times when even a computer cannot help. |
Sports |
-9.45561 |
Sci/Tech |
2.3 Эксперименты
Посмотрим, как эти методы проявят себя на реальной задаче. Будем использовать следующую конфигурацию:
V-information с порогом 0.5
Dataset Cartography с порогами уверенности и вариативности, равными 0.1 (хотя возможно использовать более широкие диапазоны на основе DataMap, мы ограничимся меньшими значениями, чтобы минимизировать ложноположительные результаты)
Чтобы наиболее полно продемонстрировать работу данных методов и контролировать уровень шума в данных, мы проведем следующий пайплайн экспериментов:
Удалим данные, которые не удовлетворяют указанным выше условиям по Dataset Cartography и V-info. Несмотря на возможную потерю полезных данных, это выровняет эксперимент и гарантирует, что исходно “плохие” данные не повлияют на результаты.
Случайным образом заменим класс для 10% примеров на неверный (выбрав новый класс случайным образом из равномерного распределения, исключая текущий класс).
Применим Dataset Cartography и V-usable information к такому датасету.
Сравним работу модели на исходном датасете, зашумленном неочищенном методами датасете и датасетах после очистки методами.
После первого этапа у нас осталось 117 477 записей из 120 000. Из них 11 748 были зашумлены.
Оба метода неплохо справились с выявлением зашумленных нами данных. В нашем случае V-usable information имеет больше ложноположительных примеров, но при этом обнаружил больше шумных данных. Важно отметить, что эффективность методов сильно зависит от установленных порогов, и после визуального анализа DataMap для Dataset Cartography можно было бы настроить их лучше. Оба метода были применены без ручной корректировки порогов.
Method |
Precision |
Recall |
F1 |
---|---|---|---|
Dataset Cartography |
0.938 |
0.867 |
0.901 |
V-usable information |
0.887 |
0.901 |
0.894 |
Далее полученные датасеты используем для обучения ruBert-base с размером батча 16 на 22500 шагов и трех сидах (результаты усредняем по сидам). Несмотря на то что эксперименты с методами очистки использовали меньшее количество примеров для обучения, они показали чуть лучшие метрики.
Method |
F1-macro (std) |
N |
---|---|---|
Baseline w/o noise |
0.912 (0.001) |
117 477 |
DSC |
0.906 (0.002) |
106 624 |
V-info |
0.907 (0.001) |
105 551 |
V-info+DSC |
0.909 (0.001) |
104 982 |
Baseline 10% noise |
0.903 (0.001) |
117 477 |
В данном случае 10% шума оказалось не таким значимым, так как всего четыре класса и общее количество данных велико. Однако при большем количестве классов и меньшем объеме данных такой эффект будет более заметен.
Хочется отметить, что это лишь малая доля всех исследований и методов, которые могут помочь вам контролировать данные, выбирать наиболее полезные и экономить ресурсы на обучение моделей. Я рассмотрел лишь несколько из них, реализованных в одном из наших фреймворков. Надеюсь, скоро мы сможем подробнее рассказать о других методах этого фреймворка. Так что stay tuned с MTS AI.