Введение

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

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

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

Модели сексуальны; данных нет. Это должно быть исправлено.

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

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

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

С этой точки зрения при улучшении данных у нас есть две возможности: очистить данные, изменив метки $y$, или увеличить данные, добавив больше $(x, y)$.

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

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

Очистка данных

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

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

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

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

Анализ ошибок

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

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

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

Небольшие наборы данных

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

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

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

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

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

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

Огромные наборы данных

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

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

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

Процесс работы Cleanlab на высоком уровне описывается следующим образом: сначала он обучает классификационную модель с нашими зашумленными размеченными данными, затем, как только модель обучена, модель дает нам прогнозируемую матрицу вероятностей размера NxM, где N равно количество активов и M количество категорий. Так, например, если мы возьмем набор данных MNIST, который имеет 10 категорий, мы получим предсказанную матрицу вероятностей $P$ размером 60000x10.

Затем эта матрица $P$ используется вместе с метками $Y$ компанией cleanlab; в конце алгоритм возвращает активы, которые, по его мнению, имеют проблемы с метками.

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

Результаты интересны тем, что в большинстве случаев изображения могут принадлежать к двум классам. Например, последним изображением в первой строке может быть число 4, а также число 9.

Алгоритм обнаруживает, что 0,065% набора данных MNIST имеют неправильные метки. Вот еще один пример использования Cleanlab с набором данных Задача Эндрю, ориентированная на данные, с использованием простой модели CNN. Сейчас 18,67% набора данных, по данным Cleanlab, имеют ошибки в метках.

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

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

Для задач обнаружения, отслеживания или распознавания именованных объектов (NER) их можно преобразовать в задачу классификации, обрезав выделение внутри наших активов. Этот механизм генерирует другую точку данных, которая является подмножеством оригинала с помеченным классом. Так, например, имея дело с обнаружением объекта изображения, мы можем иметь изображение RGB размером 1920x1080x3 как $x$ и метку dog со списком координат как $y$, которые указывают раздел внутри изображение, где находится собака. Затем мы можем взять координаты и сделать другое изображение, которое обозначим $\hat x$, равное или меньшее по размеру, чем исходное изображение, а $\hat y$ будет меткой dog. Итак, теперь у нас есть форма набора данных классификации для $X$ и $Y$. Однако этот подход не идентифицирует тесные или неплотные ограничивающие рамки.

Ту же процедуру можно повторить для NER и задач отслеживания.

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

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

Обнаружение аномалий, а также обнаружение выбросов, находит активы, которые не соответствуют ожидаемому шаблону. Поскольку данных об аномалиях нет, мы сталкиваемся со случаем неконтролируемого обучения (UL). Наиболее известные методы в UL:

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

В нашем случае мы применяем простой трюк для обнаружения аномалий; вместо того, чтобы просто использовать активы (изображения, видео, звук и т. д.), мы будем использовать в качестве входных данных актив и метку, пару $(X,Y)$.

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

Для транскрипции это немного сложнее, потому что у нас есть изображения как $X$ и текст как $Y$. Однако мы можем адаптировать наше вложение метки $Y$, чтобы добавить ее к $X$. Как только наша пара $(X,Y)$ адаптирована, мы можем применять алгоритмы обнаружения аномалий.

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

Проверьте расхождения между обучающим набором данных и тестовым набором данных.

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

Чтобы решить эту проблему, мы должны проверить расхождения между обучающим набором данных и тестовым набором данных. Мы можем использовать некоторые методы визуализации набора данных, такие как унифицированная многообразная аппроксимация и проекция (UMAP) или t-распределенное стохастическое соседнее встраивание (TSNE), которые являются методами встраивания.

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

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

Увеличение данных

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

Мы предлагаем три стратегии увеличения данных:

Увеличение данных: увеличьте объем данных из нашего набора данных.

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

Для изображений основные используемые методы обычно включают:

  • Добавление шума
  • вращающийся
  • Перемещение/перемещение изображения
  • Применение гомотетии
  • Обрезка
  • Применение нелинейного преобразования: упругое преобразование, искажение сетки

Для текста некоторые методы:

  • Обратный перевод: переведите исходный текст на другой язык, а затем переведите на исходный язык.
  • Замена синонимов

Для звуковых активов основными методами являются:

  • Вводить шум
  • Сдвиг времени
  • Частота переключения
  • Изменение скорости

Генерация данных: синтез данных.

Для изображений и видео мы можем использовать методы передачи стиля с генеративно-состязательными сетями.

Сбор данных: создавайте данные, взятые из реального мира.

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

Заключение

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

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

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