Это вторая публикация из серии руководств по переносному обучению с использованием 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 для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.