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

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

Оглавление:

  1. Что такое увеличение данных?
  2. Рекомендации по дополнению данных
  3. Практический пример увеличения данных
  4. Цикл итерации данных

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

  • Бесплатные интерактивные дорожные карты для самостоятельного изучения науки о данных и машинного обучения. Начните здесь: https://aigents.co/learn/roadmaps/intro
  • Поисковая система для учебных ресурсов Data Science (БЕСПЛАТНО). Добавляйте в закладки свои любимые ресурсы, отмечайте статьи как завершенные и добавляйте учебные заметки. https://aigents.co/learn
  • Хотите изучить науку о данных с нуля при поддержке наставника и учебного сообщества? Присоединяйтесь к этому учебному кружку бесплатно: https://community.aigents.co/spaces/9010170/

Если вы хотите начать карьеру в области науки о данных и искусственного интеллекта, но не знаете, как это сделать. Я предлагаю сеансы наставничества по науке о данных и долгосрочное наставничество по карьере:

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



1. Что такое увеличение данных?

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

Нам необходимо увеличение данных по нескольким причинам:

  1. Улучшенная производительность модели: модель, обученная на большом наборе данных с разнообразными примерами, с большей вероятностью будет лучше обобщать новые данные и лучше работать в реальных сценариях.
  2. Преодолеть переоснащение: увеличение данных помогает преодолеть переоснащение за счет увеличения разнообразия обучающих примеров, что снижает риск запоминания моделью обучающих данных.
  3. Распределение классов баланса. Иногда наборы данных могут иметь несбалансированное распределение классов. Применяя методы увеличения данных к классу меньшинства, мы можем создавать новые примеры, которые помогают сбалансировать распределение классов в наборе данных.
  4. Уменьшение систематической ошибки. Расширение данных также может помочь уменьшить систематическую ошибку в модели за счет создания более разнообразных примеров, представляющих более широкий диапазон входных вариаций.

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

  1. Переворот или зеркальное отображение: этот метод включает переворачивание или зеркальное отражение изображения по горизонтали или вертикали для создания нового образца.
  2. Поворот: поворот изображения на определенный градус может создать новый образец, который представляет другой угол объекта или сцены.
  3. Масштабирование: масштабирование изображения вверх или вниз может создавать новые образцы одного и того же объекта или сцены разных размеров.
  4. Перевод: смещение изображения по горизонтали или вертикали может создать новый образец того же объекта или сцены в другом положении.
  5. Обрезка: Обрезка изображения может создать новый образец, фокусирующийся на другой части объекта или сцены.
  6. Добавление шума: добавление случайного шума к изображению может создать новый образец с немного другими значениями пикселей, что может помочь модели лучше обобщать шумные или размытые изображения.
  7. Дрожание цвета: изменение яркости, контрастности или насыщенности изображения может привести к созданию новых образцов с другими цветовыми вариациями.

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

2. Лучшие практики увеличения данных

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

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

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

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

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

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

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

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

  • Звучат ли новые данные реалистично?. Вы хотите, чтобы ваш звук действительно звучал как реалистичный звук того типа, с которым вы хотите, чтобы работал ваш алгоритм.
  • Четко ли сопоставление X-Y? Другими словами, могут ли люди по-прежнему распознавать сказанное? Это для проверки пункта два здесь.
  • Алгоритм в настоящее время плохо работает с этими новыми данными? Это поможет вам проверить первый пункт. Потому что, если модель очень хорошо работает с новыми данными, модель не будет извлекать новую информацию из данных.

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

3. Практический пример увеличения данных

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

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

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

4. Цикл итерации данных

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

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

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

Если вам понравилась статья и вы хотите меня поддержать, сделайте следующее:

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



Хотите начать карьеру в области науки о данных и искусственного интеллекта, но не знаете, как это сделать. Я предлагаю сеансы наставничества по науке о данных и долгосрочное наставничество по карьере: