Эта статья изначально была опубликована в блоге Neurotech Africa.

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

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

Но ждать! в чем смысл увеличения данных?

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

Было ли это полезно? Ох! не волнуйтесь, как об этом ниже :)

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

Методы увеличения данных в НЛП

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

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

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

Для выполнения перевода используются API-интерфейсы перевода ThesaurusLanguage, такие как Google Translate, Bing и Yandex. Взгляните на приведенный ниже пример, используемый Google переводчик

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

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

Рассмотрим пример ниже

Most of this year's candidates are hardworking people.

Слова кандидаты и трудолюбивые находят синонимы как кандидаты и прилежные соответственно. Затем эти синонимы вставляются в случайное место в предложении, как показано ниже.

Most of this year's applicants are deligent people.

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

Рассмотрим пример ниже

The only thing you watch on TV is football and the last 'book' you read was a bicycle magazine.

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

The only thing you watch on TV is bicycle and the last 'book' you read was a football magazine.

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

Рассмотрим пример ниже

В современном мире недостатка в данных нет. Но качество информации ничего не значит без способности ее понять.

Затем после применения перетасовки предложений преобразуйте

Но качество информации ничего не значит без способности ее понять. В современном мире недостатка в данных нет.

Это можно сделать с текстом, состоящим из нескольких предложений, в зависимости от характера задачи.

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

Рассмотрим пример ниже

Но качество информации ничего не значит без способности ее понять.

Затем после применения случайного удаления

Качество информации ничего не значит без способности ее понять.

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

Ну вот

import numpy as np
def augment_data(data, noise_factor):
	"""
    	python program to add noise in audio data
    """
    noise = np.random.randn(len(data))
    augmented_data = data + noise_factor * noise
    
    # Cast back to same data type
    augmented_data = augmented_data.astype(type(data[0]))
    
    return augmented_data

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

Ну вот

import librosa
def augment_data(data, sampling_rate, pitch_factor):
	"""
    	python program to add effect on audio pitch
    """
    augmented_data = librosa.effects.pitch_shift(data, sampling_rate, pitch_factor)
    return augmented_data

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

Ну вот

import librosa
def manipulate(data, speed_factor):
	"""
    	python program to change speed rate of an audio
    """
    return librosa.effects.time_stretch(data, speed_factor)

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

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

Рекомендации