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

Часть 1/7. Введение
Часть 2/7. Преобразование данных в Sklearn
Часть 3/7.
Набор данных MXNet и загрузчики данных
Часть 4/7.
Пользовательские сети MXNet
Часть 5/7.
Модель учебной базы
Часть 6/7.
Извлечение вложений из сети
Часть 7/7.
Перенос обучения на другой набор данных

Вы также можете прочитать отдельную публикацию этой серии на страницах GitHub здесь.

Что мы рассмотрели до сих пор

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

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

Часть 2: преобразование данных в sklearn

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

Эта конкретная задача требует, как минимум, перечисленных ниже преобразований данных:

1. Замените отсутствующие отзывы маркером - «ноль».

2. Сделайте весь текст строчными буквами. Задачи по изучению языка действительно могут выполняться лучше без использования нижнего регистра. Например, «УДИВИТЕЛЬНЫЙ» и «УДИВИТЕЛЬНЫЙ» могут демонстрировать разную степень положительного настроения.

3. Обозначьте текст. Пример токенизации: [«комната была вроде чистой»] → [«та», «комната», «была», «вид», «из», «чистая»].

4. Присвойте каждому токену (например, «the», «room», «was») целочисленный индекс. Наша нейронная сеть будет принимать в качестве входных данных только числа, а не слова - как таковые, мы передаем последовательность чисел для изучения структуры языка.

Если вы раньше использовали sklearn, вы, вероятно, знакомы с .fit() и .transform() методами. Обычно мы подбираем алгоритм для обучающих данных, используя метод .fit(), а затем применяем обученную модель к тестовым данным, используя .transform() или .predict().

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

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

Разборка

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

# After first fitting on the IMDB training data
transformer_pipe.transform(pd.Series(["This is just an example.",
                                      "This is another example"]))
                                

Output:
0    [1192, 40267, 3049, 50090, 51984, 62589]
1    [1192, 40267, 53296, 51984]

Давайте посмотрим, как определяется каждый из этих трансформаторов. Вы в основном наследуете функции BaseEstimator и TransformerMixin sklearn и перезаписываете методы fit() и transform() в соответствии с вашими требованиями:

Вывод

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

Следующая часть

После этих основных преобразований следующим шагом будет подготовка набора данных и передача его в нейронную сеть небольшими партиями. Чтобы упростить подготовку пакетов и загрузку данных, инфраструктуры DL предоставляют классы Dataset и Dataloader, которые можно настроить для решения конкретной проблемы. В следующем разделе этой серии рассказывается, как создать набор данных MXNet и загрузчики данных (часть 3/7).

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.