Предыстория и введение с использованием алгоритмов обучения с учителем

Классификация

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

Классификация изображений

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

Нейронные сети

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

Сверточные нейронные сети (CNN)

Это другое, поверь мне!

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

Хорошо… Я думаю, что это много предыстории, которую нужно переварить.

Сбор данных

Изображений

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

  • Положительные примеры: мобильные телефоны
  • Отрицательные случаи: стиральные машины/посудомоечные машины/планшеты/ноутбуки

Основные (программные) инструменты

  • Язык: Питон
  • Платформа машинного обучения: PyTorch
  • Предварительно обученная модель: Resnet18

PyTorch и Resnet18: слово

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

Как я это сделал?

  1. Обеспечьте достаточную мощность и память

2. Установите Python и PyTorch с помощью инструмента командной строки.

3. Запустите несколько команд, чтобы проверить, работают ли Python и PyTorch на машине.

4. Если компьютер не обладает достаточными вычислительными возможностями (мощностью, памятью и т. д.): выполните шаги с 5 по 8.

5. Обратитесь к профессионалу в отрасли или настройте рабочий стол с графическим процессором.

6. Настройте рабочий стол так, чтобы он вел себя как сервер (можно подключиться к нему через ssh)

7. Используйте «ssh» или кабельное соединение для подключения к рабочему столу.

8. Запустите несколько команд в командной строке, чтобы убедиться, что сервер рабочего стола отвечает

9. Запишите значения для обучения, точности проверки и времени (для обоих)

10. Повторите алгоритм и соберите необходимые данные, изменяя значения «lr» и «epochs» в конце каждой итерации (для максимальной точности).

Постэкспериментальные данные

Состав

  • 8 испытаний
  • Каждое испытание имеет разные значения #epochs и #lr
  • Медиана: Обучение + Val Точность и время до завершения (отмечено)

Все данные о производительности модели загружены в репозиторий Github в формате «xlsx». Любой табличный редактор должен открыть его.

Анализ: что мне говорят данные?

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

(ACC — это точность, Val — проверка)

Испытание 8: Визуализация

Insights: значение этих графиков

Рис 4,5

Относится к этапу обучения модели на наборе данных. Как видно на рис. 4, потери при обучении резко уменьшаются в первой части графика. Это может указывать на фазу «разогрева» модели, чтобы понять вектор признаков и основу сравнения. Это может быть аналогичным случаем для точности обучения, однако в случае точности обучения значения точности быстро увеличиваются, что указывает на то, что модель не использовала большое количество итераций для достижения более высоких значений точности. Хотя одним из аспектов графика, который ограничивает использование вариантов как есть, является воспринимаемая асимптота на уровне 0,99 для точности и количества колебаний значений точности за 90 итераций. Это аспект, который следует учитывать при выборе скорости обучения и эпохи #, поскольку небольшая разница в значениях может привести к значительной разнице в точности и времени, необходимом модели для полной классификации набора данных. Это можно увидеть, сравнив абсолютные значения для измерений Испытания 7 и Испытания 8 в приведенной выше таблице, содержащей медианные значения для всех измерений.

Рис 6,7

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

Заключительные примечания

Подводя итог, постановка задачи звучала так: «Учитывая изображение продукта, определите с достоверностью x%, принадлежит ли продукт к определенной категории (мобильные телефоны для этого упражнения)». Алгоритм правильно классифицирует изображения с высокой общей точностью 99,82168%. Это указывает на то, что комбинация для испытания 8 была успешной. Тем не менее, уровень ошибок по-прежнему составляет почти 0,28%, что при применении к большим наборам данных может означать значительную абсолютную ошибку. Следовательно, эти результаты не должны использоваться в отраслевых условиях.

Улучшения/расширения: Где-то я ошибся!

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

Спасибо, что прочитали резюме моего проекта!.

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

Электронная почта: [email protected]

Репозиторий Github: https://github.com/rahulr2003/Mobile-Vs-Non-Mobile-Classification

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

Бхатия, Рича. «Нейронные сети работают не так, как человеческий мозг — давайте развенчаем миф». Журнал Analytics India, 31 октября 2018 г., analyticsindiamag.com/neural-networks-not-work-like-human-brains-lets-debunk-myth/#:~:text=b)%20Artificial %20neural%20networks%20vs,%20являются%20миллионами%20из%20соединений.

Боннер, Энн. «Полное руководство для начинающих по глубокому обучению: сверточные нейронные сети». Medium, На пути к науке о данных, 1 июня 2019 г.,wardsdatascience.com/wtf-is-image-classification-8e78a8235acb.

Исследовательская лаборатория искусственного интеллекта Facebook (FAIR). «Torchvision.models¶». Torchvision.models — документация по PyTorch 1.7.0, Участники Torch, 2019 г., pytorch.org/docs/stable/torchvision/models.html.

Фанг, Винсент. «Обзор ResNet и его вариантов». Medium, Towards Data Science, 17 июля 2017 г.,wardsdatascience.com/an-overview-of-resnet-and-its-variants-5281e2f56035.

Джайн, Прачи. «Классификация изображений для электронной коммерции [Часть I]». Medium, На пути к науке о данных, 13 февраля 2019 г., directiondatascience.com/product-image-classification-with-deep-learning-part-i-5bc4e8dccf41.

Макдональд, Конор. «Диаграмма нейронных сетей (NN)». Towards Data Science, Medium, 22 декабря 2017 г., directiondatascience.com/machine-learning-fundamentals-ii-neural-networks-f1e7b2cb3eef.

Python.org. Добро пожаловать на Python.org. Python.org, Python.org, www.python.org/doc/.

Руис, Пабло. «Понимание и визуализация ResNets». Medium, Towards Data Science, 23 апреля 2019 г., directiondatascience.com/understanding-and-visualizing-resnets-442284831be8.

Чжоу, Виктор. «Машинное обучение для начинающих: введение в нейронные сети». Medium, На пути к науке о данных, 20 декабря 2019 г., directiondatascience.com/machine-learning-for-beginners-an-introduction-to-neural-networks-d49f22d238f9.