Шаги, участвующие в конвейере

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

Позвольте мне провести вас через все этапы этого конвейера на примере - классификаторе «Собаки против кошек»!

Сбор данных

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

  • Существуют бесплатные онлайн-наборы данных. Это наиболее распространенный подход, который используют большинство людей при изучении машинного обучения. Есть несколько удивительных мест, где мы можем найти такие данные, как Kaggle, репозиторий datasets UCI.
  • Ищите в Интернете изображения. Если мы не находим какой-либо онлайн-набор данных или нам просто нужны дополнительные данные, веб-скрапинг - удобный инструмент, который может помочь. Используя python, парсинг веб-страниц очень прост с помощью таких библиотек, как Beautiful Soup, scrapy и многих других. Существует также потрясающее ядро kaggle Анкура Сингха, моего товарища по команде, которое имеет полные этапы удаления веб-страниц от выбора данных, которые мы хотим создать, для создания фрейма данных из этих данных.
  • Снимайте вручную кошек и собак :). Это может быть утомительной и трудоемкой задачей.

Подготовка данных

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

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

Некоторыми очень популярными библиотеками для обработки и очистки наших данных при поиске значимых идей являются pandas, matplotlib, NumPy, seaborn и многие другие.

В поисках лучшей модели

Многие думают, что для каждого набора данных можно использовать одну модель машинного обучения. Но это миф. Теорема Нет бесплатного обеда (NFL) гласит, что ни одна модель не работает лучше всего для каждой проблемы. Различные типы моделей хорошо работают для разных типов данных с разными требуемыми выходными данными. Это очень важный процесс, поскольку мы должны исследовать и найти лучший алгоритм (иногда комбинацию нескольких алгоритмов) для нашей проблемы. Для задачи классификации мы можем использовать машину опорных векторов (SVM), нейронную сеть или любой другой классификатор. Для такой задачи, как классификатор кошек против собак, мы можем использовать нейронную сеть определенного типа, называемую сверточной нейронной сетью (CNN).

Обучение

Здесь мы приступаем к предоставлению данных модели и даем ей возможность обучиться. Эта часть процесса обычно занимает очень много времени, особенно для больших наборов данных и архитектур с глубокими моделями. Важно писать параллельные алгоритмы или использовать библиотеки, такие как sklearn, Tensorflow, PyTorch и т. Д. Для создания модели. Эти библиотеки содержат алгоритмы, реализованные с учетом параллелизма, и могут также использовать графический процессор (GPU), если он доступен. Графические процессоры способны выполнять крупномасштабную параллельную обработку и могут значительно сократить время обучения. Можем оставить модель на тренировку и пойти выпить чашечку кофе!

Оценка

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

Настройка гиперпараметров

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

Прогнозы

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

Хотите узнать больше?

У нас, в AI Adventures, есть фантастические курсы! Ознакомьтесь с предлагаемыми нами курсами. Не стесняйтесь обращаться к нам в любое время, если у вас есть какие-либо вопросы относительно блога или любых других курсов, которые мы предлагаем :)

Ресурсы