Если вы работаете в индустрии программного обеспечения (или нет!), Вы наверняка слышали такие термины, как машинное обучение, глубокое обучение, искусственный интеллект. Если вы разочарованы тем, что все и кто-то говорят об этой области, вы выбрали не ту статью. Но если вас заинтриговала эта область, вы можете продолжить чтение.

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

«Машинное обучение - это область, которая дает компьютерам возможность учиться без явного программирования».

~ Артур I. Самуэль

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

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

Итак, начнем с путешествия на поезде ML.

Сбор данных

Данные - это все, сегодня все - данные. К Интернету подключено больше устройств, чем людей. Так почему мы вообще беспокоимся о сборе? Разве у нас уже не так много данных, из-за которых возникают проблемы с большими данными? Что ж, у нас действительно много-много данных, но они не обязательно организованы / структурированы или актуальны для нас, чтобы использовать их для создания желаемых прогнозов. В то время как многие хакатоны / конкурсы предоставляют вам чистые и доступные данные, реальные проекты не справляются с этой фазой. Многие из них даже отбрасываются из-за того, что на получение данных, необходимых для построения модели, уходит много времени.

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

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

Итак, вот как мы можем собирать данные:

  • мы можем использовать существующие данные (иногда вам может посчастливиться получить именно то, что вы хотите)
  • мы можем настроить существующие данные и использовать те, которые предоставляют нам необходимую информацию
  • есть несколько компаний, единственной целью которых является сбор данных для вас
  • собери сам

Некоторые наборы данных с открытым исходным кодом:

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

  • Сколько данных нам нужно? Сколько мы можем собрать?
  • Какие все данные мы должны собирать? Какой из них действительно мог внести свой вклад?
  • Где бы вы это хранили? Как бы вы хранили? В какой структуре / формате его хранить? Как вы сделаете это доступным для модели машинного обучения?
  • Какое оборудование / программное обеспечение потребуется для сбора необходимых данных?
  • Содержат ли ваши данные все возможные случаи? Обязательно собирайте краевые футляры.

При сборе данных вам также необходимо сосредоточиться на аннотировании / маркировке данных. Можно ли это сделать при сборе или позже? Иногда вам также приходится тратить много времени (особенно в проектах, связанных с Vision), чтобы аннотировать данные.

Некоторые инструменты, которые помогут с маркировкой, можно найти здесь.

Обработка данных

Когда вам нужно приготовить блюдо, вы получаете все ингредиенты с рынка, вы бы просто выбросили все это и съели? (Надеюсь, что нет) Конечно, нет! Это было бы ужасно на вкус. Вам нужно нарезать, раздавить или, возможно, замочить несколько ингредиентов, прежде чем готовить их. Точно так же данные необходимо обработать и сделать релевантными для модели, чтобы получить из них знания.

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

На рынке есть несколько инструментов и библиотек для преобразования данных, таких как numpy, pandas, opencv, nltk и т. Д. Вы даже можете использовать некоторые библиотеки профилирования, такие как pandas profiling, чтобы выяснить отношения и получить некоторое представление о данных.

Построение / обучение модели машинного обучения

Добро пожаловать в тележку, которая всех волнует больше всего, также известная как черный ящик в машинном обучении, - это обучение модели на собранных данных. Хотя это труднее всего понять (много математики и статистики) и отладить, его проще всего реализовать благодаря библиотекам и API. Однако перед обучением модели вам нужно ответить на несколько вопросов:

  • Какой показатель следует использовать для оценки модели?
  • Какую модель мы должны использовать?
  • Какая должна быть пропорция для разделения данных на обучение, проверку и тестирование?
  • Сколько и какие ресурсы доступны?

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







Развертывание приложения (вывод)

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

  • Онлайн или офлайн? Какой из них осуществим и быстрее?
  • Насколько это масштабируемо? Сколько экземпляров он может выполнить в любой момент? В какое время?
  • Как вы модернизируете модель? (CI / CD)
  • Какие форматы моделей совместимы?
  • Какие аппаратные ресурсы необходимы?

На этом этапе требуется больше знаний об API, оборудовании, DevOps и интерфейсах.

Возможно, вам потребуется оптимизировать модель, чтобы уменьшить ее размер или время выполнения без ущерба для точности. Для работы с такими сценариями используются такие методы, как обрезка, квантование и т. Д.

Некоторые инструменты, которые широко используются:



И вот мы в пункте назначения!