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

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

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

Мультидисциплинарная область

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

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

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

Математика и статистика

Математика и статистика — наиболее важные области, которые необходимо освоить, чтобы понять, что такое машинное обучение. Если ваши знания по математике или статистике немного заржавели, найдите время, чтобы освежить их. Сайт Академия Хана предлагает курсы всех уровней, которые помогут вам вернуться на правильный путь.

Есть также несколько каналов YouTube, таких как 3Blue1Brown или StatQuest, которые помогут вам лучше визуализировать определенные концепции. Также доступны курсы на MIT OpenCourseWare по линейной алгебре, геометрии и анализу.

Я предпочитаю книги для изучения новых концепций, вот краткий список:

- Математика для машинного обучения, М. Дейзенрот, А. Фейсал и К. Сун Онг
- Линейная алгебра сделана правильно, С. Экслер
- Статистика на простом английском языке, Т.К. Урдан
- Практическая статистика для специалистов по данным, П. Брюс, А. Брюс
- Вероятность и Статистика, М. Х. ДеГрут, М. Дж. Шервиш
- Методы повторной выборки: практическое руководство по анализу данных, П. И. Гуд

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

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

Программирование

Если вы новичок в программировании, начните с изучения Python и того, как он работает. В Интернете можно найти множество учебных пособий, а также несколько интересных книг, например Изучение Python 3 трудным путем. Веб-сайт Real Python также предлагает множество ресурсов и является хорошим учебным ресурсом.

Познакомившись поближе с Python, вы сможете изучить различные библиотеки, составляющие среду машинного обучения. Вам понадобятся библиотеки типа pandas, numpy, а также инструменты визуализации данных, такие как matplotlib или seaborn.

Недавно я открыл для себя Python Like You Mean It для одновременного изучения основ Python и numpy, поэтому обязательно ознакомьтесь с ним.

Кроме того, приобретение дополнительных навыков может быть действительно полезным. Такие инструменты, как Jupyter Notebooks, Git и Docker, обеспечивают прочную основу. Вы можете изучить Недостающий семестр вашего образования в области компьютерных технологий, чтобы улучшить свои знания в области компьютерных наук.

Изучение машинного обучения

Для начала вы можете найти онлайн-курсы на различных платформах. Самым известным курсом по-прежнему остается Машинное обучение Эндрю Нга на Coursera. Недавно оно было обновлено и остается отличным введением в эту область.

Я также рекомендую несколько книг, которые стоит прочитать несколько раз, чтобы полностью оценить их содержание:

- Стостраничная книга по машинному обучению, А. Бурков
- Наука о данных с нуля, Дж. Грус
- Практикум Машинное обучение с помощью Scikit-learn, Keras и Tensorflow, А. Жерон
- Элементы статистического обучения, Т. Хасти, Р. Тибширани, Дж. Фридман
- Распознавание образов и машинное обучение, К. Д. Бишоп

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

Как только вы лучше поймете, как работают алгоритмы, не стесняйтесь экспериментировать с такими библиотеками, как Scikit-Learn, TensorFlow или PyTorch. Документация по этим библиотекам хорошо составлена ​​и должна помочь вам в ваших проектах.

Конечно, машинное обучение — это обширная область, в которой вы встретите другие специализированные поддомены, такие как глубокое обучение или MLOps.

Например, глубокое обучение фокусируется на сложных проблемах, таких как компьютерное зрение, автономное вождение и т. д. Fast.ai и Deeplearning.ai имеют многочисленные ресурсы по этой теме. Вы также можете прочитать Глубокое обучение И. Гудфеллоу, Ю. Бенгиона и А. Курвиля.

MLOps включает в себя набор методов, применяемых для обеспечения развертывания и обслуживания моделей в производстве. Это может включать в себя настройку конвейера данных, соблюдение соответствующих правил, мониторинг точности модели, переобучение модели и многое другое. По этой теме вы можете прочитать «Проектирование систем машинного обучения» Чипа Хьюена.

Обучение в процессе работы

Наконец, обучение приходит через практику. Прочтение всех книг по этой теме не сделает вас экспертом; вам нужно применить полученные знания. Вам не нужны сотни сертификатов; вам нужны навыки. МООК могут создать ложное впечатление о компетентности.

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

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

В Интернете доступно множество наборов данных, поддерживаемых правительствами (например, data.gouv.fr) или общественными организациями. Работа с некоторыми из этих наборов данных может стать отличным способом учиться и выделяться!

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

В зависимости от ваших целей вам также может потребоваться предоставить пользователям свои модели через приложение или API. Рассмотрите возможность использования Streamlit или Flask для настройки API.

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