Как я стал инженером по машинному обучению (ML) в 18 лет | Полная дорожная карта для начинающих
Как я стал инженером по машинному обучению (ML) в 18 лет | Полная дорожная карта для начинающих
В 18 лет я получил работу своей мечты в качестве инженера по машинному обучению, которую многие считают высококонкурентной и предназначенной для профессионалов с многолетним опытом. Путь к этому был нелёгким.
Если вы заинтересованы в том, чтобы стать инженером по машинному обучению, но не знаете, с чего начать, вы находитесь в правильном месте. В этой статье я поделюсь полной дорожной картой для того, чтобы стать инженером по машинному обучению 🚀. Дорожная карта составлена на основе обширных исследований и обсуждений с несколькими инженерами-самоучками ML 👨💻.
Независимо от того, новичок вы или имеете некоторый опыт, это руководство поможет вам сделать следующий шаг к вашим карьерным целям 🎓.
Эта статья взята из моего репозитория Machine-learning-engineering-roadmap на GitHub.
Автоматическое машинное обучение 🤖
Машинное обучение – это не просто построение модели с использованием некоторых общедоступных чистых данных. Для создания продукта ML требуется несколько шагов. На рис. 1 показаны сквозные шаги, необходимые для создания продукта машинного обучения. У меня есть специальная серия статей, в которых подробно описывается каждый шаг, показанный на приведённой выше диаграмме.
Я разделю ресурсы на разные уровни обучения, а также предоставлю лучшие ресурсы для изучения каждой темы. Уровни обучения следующие:
- Подготовка к изучению науки о данных 📊
- Фундаментальные основы науки о данных 📈
- Инженерия машинного обучения 🤖
1. Подготовка к изучению науки о данных 📊
Прикладная математика 🔢
Прикладная математика – это комбинация линейной алгебры, статистики, теории вероятностей и математического анализа. Существует много слухов о том, что вам нужно хорошо разбираться в математике, чтобы попасть в Data Science 🤔 . Если вы не хотите быть исследователем машинного обучения, то основ вышеуказанных тем вполне достаточно. У вас всё будет просто отлично, если вы хорошо разбираетесь в математике уровня средней школы. Вы всегда можете поступить в аспирантуру, чтобы стать исследователем машинного обучения, или начать изучать сложную математику после того, как получите работу.
Тем не менее, ниже я упоминаю некоторые замечательные ресурсы по Coursera от Имперского колледжа Лондона по линейной алгебре и исчислению. Их видео находятся в открытом доступе на YouTube 🎥 . Что касается статистики и вероятности, у меня есть несколько отличных рекомендаций для курсов MIT OpenCourseWare 🎓 .
Линейная алгебра: Математика для машинного обучения: Линейная алгебра (Coursera), (YouTube)
Статистика: MIT 18.650 Статистика для приложений (YouTube)
Вероятность: MIT 6.041SC Вероятностный системный анализ и прикладная вероятность (YouTube)
Исчисление: Математика для машинного обучения: Многомерное исчисление (Coursera), (YouTube)
Язык программирования 💻
Выбор языка:
Языки программирования являются важными инструментами для инженеров машинного обучения (ML), специалистов по обработке данных и исследователей при разработке и внедрении моделей ML 🚀 . Для машинного обучения требуются языки программирования, способные обрабатывать большие наборы данных, выполнять сложные вычисления и интегрироваться с мощными библиотеками и фреймворками. Выбор языка программирования имеет решающее значение для проектов машинного обучения, поскольку он может повлиять на время разработки, производительность модели и масштабируемость.
Когда дело доходит до выбора языка программирования для машинного обучения, необходимо учитывать несколько критериев:
- Кривая обучения: Лёгкость, с которой можно выучить язык,
- Сообщество: Язык с большим и активным сообществом означает, что в Интернете доступно много ресурсов, инструментов и поддержки,
- Библиотеки и фреймворки: Существующие библиотеки для каждого этапа проекта машинного обучения (показано на рис. 1),
- Отраслевой спрос: Вам следует учитывать отраслевой спрос на различные языки,
- Производительность: Производительность является решающим фактором, который следует учитывать при работе с большими наборами данных.
Python и R – самые популярные языки для машинного обучения. Другими языками программирования являются Julia, Java и C++. Давайте посмотрим на их сравнение, основанное на критериях, которые мы обсуждали выше:
Если вы хотите стать инженером-программистом с навыками машинного обучения, выбирайте Python – вам даже не стоит думать о других вариантах. С другой стороны, если вы хотите быть специалистом по обработке данных, вы можете выбрать либо Python, либо R. Но помните, что python даст вам гибкость в вашей карьере, если вы когда-нибудь захотите поменять направление. От себя лично я рекомендую вам python 🐍.
🐍 Python для начинающих:
Programiz создаёт отличные ресурсы для разработчиков python всех уровней. Их курсы представляют собой комбинацию видео- и текстовых ресурсов, которые получили высокую оценку многих.
🎥 Введение в Python (Basic): https://www.youtube.com/playlist?list=PL98qAXLA6afuh50qD2MdAj3ofYjZR_Phn
Объектно-ориентированное программирование очень важно для разработки машинного обучения. Оно поможет вам работать с такими фреймворками, как pytorch, transformers и многими другими, и понимать их. Но не волнуйтесь, этот курс объектно-ориентированного программирования (ООП) на python на YouTube поможет вам разобраться.
🔗 Ниже приведены дополнительные ресурсы на случай , если вышеперечисленное вам не по вкусу:
Примечание: Интервьюеры любят задавать вопросы о структурах данных и алгоритмах (в основном для ролей, отличных от стажировок). Я не упоминал здесь ресурсы для них. Но вы можете вернуться к ним один раз после выполнения всех шагов, упомянутых здесь. Не придавайте этому большого значения в начале.
Поздравляю, вы завершили первый шаг на своём пути 🎉.
2. Фундаментальные основы науки о данных 📈
Сбор и исследование данных 🔍
Сбор и исследование данных – это фундаментальные основы Data Science. Библиотеки Python Numpy, Pandas и Matplotlib станут вашим помощником в изучении науки о данных.
📗 Python for Data Analysis: Data Wrangling with pandas, NumPy, and Jupyter by Wes Mckiney будет более чем достаточно. Новичок должен начать с этой книги, поскольку в ней рассматриваются основы Python, ipython, NumPy, Pandas и Matplotlib, за которыми следует несколько документированных проектов анализа данных с реализацией кода.
Я видел, как многие пропускали изучение базовых основ науки о данных ради эффектного глубокого обучения, что позже вызвало множество проблем, когда они начали работать над автоматическим машинным обучением для решения бизнес-задачи. Так что лучше научиться как можно скорее, чем потом сожалеть. Дополнительные ресурсы:
Совет: Все библиотеки, упомянутые выше, имеют элегантную документацию. Не стесняйтесь также исследовать их.
SQL
Data Science – это всестороннее изучение данных. Чтобы работать с данными, нам нужно извлечь их из базы данных. Вот тут-то и вступает в игру SQL. SQL является наиболее широко используемым языком программирования при работе с базами данных и поддерживается различными системами реляционных баз данных, такими как MySQL, SQL Server и Oracle. Специалист по обработке данных может контролировать, определять, манипулировать, создавать базу данных и запрашивать её с помощью команд SQL.
Многие современные отрасли промышленности оснастили управление данными своих продуктов технологией NoSQL, но SQL остается идеальным выбором для многих инструментов бизнес-аналитики и операций в офисе. Вот почему он стал стандартом для многих систем баз данных. Современные системы больших данных, такие как Hadoop, Spark, также используют SQL только для обслуживания систем реляционных баз данных и обработки структурированных данных.
Я слышал много хорошего о 🔗 SQL Tutorial — Full Database Course for Beginners, доступный на YouTube.
Дополнительные ресурсы:
Примечания:
1. Интервьюеры любят задавать SQL-вопросы для ролей в области data science.
2. У людей обычно возникают вопросы, связанные с изучением инструментов Big data на начальных этапах data science. Лично я считаю, что нет необходимости изучать инструменты big data на начальных этапах data science, если у вас нет огромного желания.
3. Инженерия машинного обучения 🤖
Подготовка данных/Разработка функциональных возможностей
В большинстве случаев необработанные данные не могут быть непосредственно введены в модель. Эти исходные данные должны быть подготовлены в соответствии с моделью и поставленной задачей. Подготовка данных важна независимо от того, является ли модель машинным обучением или глубоким обучением. Разработка функций необходима для машинного обучения, в то время как глубокое обучение заключается в изучении этих функций с помощью нейронов.
Подготовка данных сильно варьируется в зависимости от проекта и данных. Итак, хорошее знание python очень помогает. Вам придётся изучить различные библиотеки в зависимости от ваших требований (ваши навыки подготовки данных улучшаются по мере того, как вы работаете над большим количеством проектов). Ниже приведены мои предложения по обучению подготовке данных и разработке функциональных возможностей:
- 🎥 Feature Engineering Krish Naik Playlist (YouTube)
- 📗 Approaching almost any Machine Learning problem (Части 6,7, 8) (Книга)
- 🔗 Data Preparation and Feature Engineering in ML (Статья)
- 🔗 Advanced Feature Engineering Tutorial (Курс Kaggle)
Машинное обучение
Что касается машинного обучения, у меня есть для вас два варианта:
- 🎥 Machine Learning Specialization 2022 — Andrew Ng, Stanford University -> Это обновлённый курс, который идеально подходит для 2023 года.
- 📗 Hands-On Machine Learning with Scikit-Learn and TensorFlow by Geron Aurelien (Часть 1)
Глубокое обучение
MIT 6.S191: Введение в глубокое обучение – это постоянный курс Массачусетского технологического института. Вы можете найти подробную информацию на их веб-сайте. В этом курсе есть видеолекции, задания по программированию и отличные проекты, которые помогут вам составить хорошее портфолио. Ни одно из моих других предложений не сравнится с этим, если вы пройдёте весь курс.
- 📗 Hands-On Machine Learning with Scikit-Learn and TensorFlow by Geron Aurelien (Часть 2)
- 🔗 DeepLearning.AI TensorFlow Developer Professional Certificate — Coursera
Глубокое обучение включает в себя различные области, такие как обучение с подкреплением (RL), обработка естественного языка (NLP) и компьютерное зрение (CV). В вышеупомянутом курсе MIT есть хорошие ресурсы для RL и CV, но в нём не говорится об NLP. Ниже приведены ресурсы для этого:
- 🎥 Natural Language Processing with Deep Learning (Stanford University)[NLP]
- 📗 Practical NLP from O’REILLY
Примечание: Многие университетские курсы по машинному обучению являются общедоступными. Вам просто нужно найти их на YouTube и просмотреть их плейлист.
MLOps
MLOps – это комбинация развёртывания модели, мониторинга модели и обслуживания модели. Я много боролся, чтобы узнать о MLOps, потому что не мог найти хороших ресурсов для этого. Недавно я наткнулся на курс MLOps, в котором есть всё необходимое. Я изучал все эти темы по отдельности, но в этом курсе всё собрано в одном месте:
Я также могу рекомендовать 📗 Practical MLOPs by Alfredo Deza and Noah Gift.
Эта статья – только начало
Да, вы не ослышались! Это только начало многочисленных ресурсов, которые помогут вам получить работу специалиста по обработке данных или инженера по машинному обучению. Следите за обновлениями для получения информации о:
- Проектах в области Data Science,
- Подробном руководстве по портфолио Data Science,
- Подробном руководстве по резюме в области Data Science,,
- Подготовке к собеседованиям при приёме на работу,
- И д.р.