- PVSM.RU - https://www.pvsm.ru -

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 1

Привет! Меня зовут Ефим, я MLOps-инженер в Selectel. В прошлом был автоматизатором, ML-инженером, дата-аналитиком и дата-инженером — и уже несколько лет падаю в пропасть машинного обучения и Data Science. Это буквально необъятная сфера, в которой почти нет ориентиров. Основная проблема в том, что разделов математики довольно много и все они, на первый взгляд, нужны в том же машинном обучении.

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

Используйте навигацию, если не хотите читать текст полностью:

Почему машинное обучение — это сложно [1]
Нейронные сети [2]
Выстраиваем работу с ML [3]
Машинное обучение [4]
Основы статистики, все части [5]
Анализ данных в R, все части [6]
Введение в математический анализ [7]
Теория вероятностей — наука о случайности, все части [8]
Курсы и гайды на Kaggle [9]
Платформа DataCamp [10]
Платформа Dataquest [11]
Платформа Jovian [12]
Канал StatQuest with Josh Starmer [13]
Блог Machine Learning Mastery [14]

Почему машинное обучение — это сложно


Для начала хотелось бы напомнить, почему одним курсом по машинному обучению и Data Science не обойтись.

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

В начале пути кажется, что создать собственный сервис просто: в сети есть открытые высокоуровневые библиотеки вроде PyTorch, TensorFlow, ONNX и других инструментов. Тем не менее, в силу специфики области возникает огромное количество вопросов и даже понимание «основ» машинного обучения не избавляет от подводных камней — а их может быть много. Постараюсь это показать.

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

Вы решили, что будете разрабатывать свой ML-сервис для распознавания лиц. Допустим, он будет построен на базе сверточных нейронных сетей и вы уже разобрались с формальной постановкой задачи (подозреваю, что там некоторым образом всплывут термины вроде Face Recognition [15] и Face Identification [16]). Предположим, что вы даже уже определились с выбором нужных инструментов — например Python, PyTorch и PyTorch Lighting. Какие вопросы могут возникнуть?

  • Есть ли примеры кода для выбранных задач или нужно будет имплементировать архитектуру сети с нуля?
  • Если примеры кода есть, достаточно ли будет Transfer Learning [17] или придется прикручивать Fine Tuning [18] для моделей?
  • В случае Fine Tuning какой набор данных нужен для создания проекта?
  • Если своих данных нет, откуда их можно взять?

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

  • Как разработать кастомную функцию потерь или функцию активации?
  • Можно ли как-то осознанно выбрать гиперпараметры [19] модели?
  • На что вообще эти гиперпараметры влияют, есть ли рамки для каждого из них?
  • Что делать, если возникла ошибка с размерностью входного слоя?
  • Как имплементировать SOTA-архитектуру [20]?
  • Как интерпретировать полученные результаты?

До сих пор это лишь часть проблем, с которыми можно столкнуться из-за незнания математического аппарата. Например, есть параметр momentum. Это один из гиперпараметров, применяемых в обучении нейронной сети с использованием одной из вариаций стохастического градиентного спуска Adam [21] (Adaptive Moment estimation). Чтобы просто понять, зачем этот параметр там нужен, нужно как минимум знать, что такое градиент. Это предполагает знание элементов математического анализа и концепции взвешенной суммы.

Машинное обучение — это о математике

Давайте разберем один из сценариев в прошлом разделе: начинающему ML-инженеру нужно самостоятельно имплементировать SOTA-архитектуру на готовом фреймворке.

В рамках задачи разработчику нужно будет самостоятельно расписать все слои SOTA и понять, как они между собой связаны — а это уже, как минимум, линейная алгебра и, возможно, тензорный анализ. На этом пункте многие скажут: «Очевидно, что ML-инженер должен знать эти дисциплины» — и будут правы.

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

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 2

Теперь посмотрим, какие же ресурсы и курсы можно пошерстить, чтобы погрузиться в этот dependency hell.

Введение в Data Science и машинное обучение

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 3

Хороший курс для тех, кто только-только начинает вливаться в Data Science и машинное обучение. Простой, без академического снобизма и тонны громоздких терминов.

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

Источник → курс доступен по ссылке [22].

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 4 [23]

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

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 5

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

Курс особенно полезен для тех, у кого есть «база», новичкам его рекомендовать не могу.

Источник → изучайте нейронные сети по ссылке [24].

Выстраиваем работу с ML


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

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 6

Источник → узнайте больше о ML по ссылке [25].

Машинное обучение

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 7

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

Источник → курс доступен по ссылке [26].

Основы статистики, все части

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 8

Один из лучших курсов для «осторожного» погружения в работу статистических критериев, теорию формирования выборок и прочего.

Лектор Анатолий Карпов объясняет, из чего состоит критерий Стьюдента, в чем смысл центральной предельной теоремы, зачем нужно A/B-тестирование и другие вещи. Я бы сказал, этот курс полезен всем, потому что учит трезво оценивать реальность, осмыслять происходящие в ней события и случайные процессы.

Источник → первая часть доступна по ссылке [27].

Во второй части курса «Основы статистики» уже больше критериев и деталей.

Источник → вторая часть доступна по ссылке [28].

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

Источник → третья часть доступна по ссылке [29].

Анализ данных в R, все части

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 9

Говоря о курсах по основам статистики, имеет смысл упомянуть и курс по анализу данных в R. Поскольку все примеры, иллюстрирующие идеи и концепции из статистики, демонстрируются именно на этом языке.

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

Источник → первая часть доступна по ссылке [30].

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

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

Источник → вторая часть доступна по ссылке [31].

Введение в математический анализ

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 10

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

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 11

Решил задачу только со 117 попытки. 🥲 Не делайте так: лучше пропускать подобные задачи и идти по курсу дальше. Это позволит изучить его до конца и лучше понять, где используются пределы в машинном обучении.

Источник → проходите курс по ссылке [32].

Теория вероятностей — наука о случайности, все части

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 12

Этот курс оставил дыру в моем сердце… Я выполнил верно практически все задания, но стоило дать слабину на единственном разделе — и прощай, пройденный на 100% курс. Так или иначе, первая часть очень достойная и подойдет даже тем, кто уже знаком с теорией вероятностей.

Источник → первая часть доступна по ссылке [33].

Вторая часть гораздо интересней и без шуток. Она погружает читателя в борелевскую сигма-алгебру, процессы Бернулли и Пуассона, многомерные и условные непрерывные распределения. Надо ли изучать эти темы на старте? Точно нет. Стоит ли отложить этот курс и вернуться к нему позже? Да, безусловно!

Это по-настоящему полезный курс: машинное обучение буквально «сквозит» условными распределениями и понимание этой математической конструкции может сильно помочь в освоении сложного материала.

Источник → вторая часть доступна по ссылке [34].

Курсы и гайды на Kaggle

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 13

С пониманием таких вещей как permutation importance, partial dependence, SHapley Additive exPlanations (SHAP) и другим мне помог именно курс на Kaggle — Machine Learning [35]Explainability [35].

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

Источник → все курсы и гайды доступны по ссылке [36].

Платформа DataCamp

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 14

Платформа напоминает что-то вроде судоку или сканворда. Практическая польза от этой платформы в том, что можно набить руку на написании однотипных блоков кода. Так, можно запомнить, например, как считать абсолютную разницу двух столбцов в библиотеке Pandas или критерий Стьюдента в SciPy. Можно ли всё это сделать без подобной платформы? Конечно. Но если у вас есть желание обернуть это все в околоигровую форму, можно воспользоваться подобной платформой.

Источник → в «судоку» можно поиграть по ссылке [37].

Платформа Dataquest

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 15

Это примерно такой же сканворд, как и DataCamp. Но значительная часть курсов на Dataquest платная. Можно, конечно, идти по программе курса и просто гуглить материалы самостоятельно, но тогда вы лишите себя главного плюса этой платформы — визуализации результатов и прокаченных навыков. Другой вопрос, а нужно ли оно вам?

Источник → курсы доступны по ссылке [38].

Платформа Jovian

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 16

Уже довольно сложно найти что-то новое или оригинальное в экспоненциально возрастающем количестве курсов. Если вы хотите найти гайд по конкретной теме, попробуйте это сделать на Jovian. Это хорошая платформа-обучалка с акцентом в сторону Jupyter Notebook. Мне особенно приглянулись курсы по Deep Learning [39], Machine Learning [40] и Natural Language Processing [41]. Большая часть материалов на Jovian бесплатна.

Источник → подключайтесь по ссылке [42].

Канал StatQuest with Josh Starmer

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 17

В своё время я получил массу удовольствия от просмотра видео на канале StatQuest with Josh Starmer. Автор классно объясняет математические модели и методы — например, как работают случайные леса, логистическая регрессия, статистические тесты и другое. Особенно рекомендую видео [43] о том, что там BAM!!!

Источник → на канал можно попасть по этой ссылке [44].

Возможно, эти тексты тоже вас заинтересуют:

Бот из машины. Как инженеру сократить время на диагностику дисков [45]
Знакомство с частотными фильтрами. Часть 1: как спроектировать и немного схитрить [46]
5 полезных и просто занимательных проектов на Raspberry Pi начала весны 2023 года [47]

Блог Machine Learning Mastery

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов - 18

В этом блоге можно найти массу примеров кода с разными фреймворками и полезные статьи. Довольно интересный материал [48], на который я недавно наткнулся, посвящен Loss-функциям в PyTorch. Рекомендую курс тем, кто хочет узнать больше деталей из привычной разработки нейронных сетей.

Источник → читайте блог по ссылке [49].

Заключение


Как вы поняли, образовательных ресурсов много. И чтобы стать специалистом, нужно основательно подойти к их изучению, а также следить за новыми технологиями в мире машинного обучения и Data Science. Кстати, с последним мы помогаем в нашем Telegram-сообществе «MLечный путь» [50]. Там мы публикуем еженедельные дайджесты по DataOps и MLOps, обсуждаем проблемы и лучшие практики организации production ML-сервисов, а также обмениваемся опытом. Присоединяйтесь к более 700 специалистам, развивающим ML- и Data-направления в российских и зарубежных компаниях.

А какие источники для погружения в Data Science и ML знаете вы? Поделитесь своими вариантами в комментариях.

Автор: Головин Ефим Николаевич

Источник [51]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/matematika/383604

Ссылки в тексте:

[1] Почему машинное обучение — это сложно: #1

[2] Нейронные сети: #2

[3] Выстраиваем работу с ML: #3

[4] Машинное обучение: #4

[5] Основы статистики, все части: #5

[6] Анализ данных в R, все части: #6

[7] Введение в математический анализ: #7

[8] Теория вероятностей — наука о случайности, все части: #8

[9] Курсы и гайды на Kaggle: #9

[10] Платформа DataCamp: #10

[11] Платформа Dataquest: #11

[12] Платформа Jovian: #12

[13] Канал StatQuest with Josh Starmer: #13

[14] Блог Machine Learning Mastery: #14

[15] Face Recognition: https://paperswithcode.com/task/face-recognition

[16] Face Identification: https://paperswithcode.com/task/face-identification

[17] Transfer Learning: https://paperswithcode.com/task/transfer-learning

[18] Fine Tuning: https://paperswithcode.com/methods/category/fine-tuning

[19] гиперпараметры: https://wiki.loginom.ru/articles/hyperparameters.html

[20] SOTA-архитектуру: https://www.e2enetworks.com/blog/what-is-sota-in-artificial-intelligence

[21] Adam: https://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/

[22] ссылке: https://stepik.org/course/4852/syllabus

[23] Image: https://selectel.ru/services/cloud/davm/?utm_source=habr.com&utm_medium=referral&utm_campaign=cloud_article_dscience_210323_banner

[24] ссылке: https://stepik.org/course/401/syllabus

[25] ссылке: https://selectel.ru/blog/courses/how-to-work-with-ml-systems/

[26] ссылке: https://stepik.org/course/8057/info

[27] ссылке: https://stepik.org/course/76/info

[28] ссылке: https://stepik.org/course/524/info

[29] ссылке: https://stepik.org/course/2152/info

[30] ссылке: https://stepik.org/course/129/info

[31] ссылке: https://stepik.org/course/724/info

[32] ссылке: https://stepik.org/course/95/info

[33] ссылке: https://stepik.org/course/2911/info

[34] ссылке: https://stepik.org/course/3209/info

[35] Machine Learning : https://www.kaggle.com/learn/machine-learning-explainability

[36] ссылке: https://www.kaggle.com/learn

[37] ссылке: https://www.datacamp.com/

[38] ссылке: https://app.dataquest.io/

[39] Deep Learning: https://jovian.com/learn/deep-learning-with-pytorch-zero-to-gans

[40] Machine Learning: https://jovian.com/learn/machine-learning-with-python-zero-to-gbms

[41] Natural Language Processing: https://jovian.com/learn/nautral-language-processing-zero-to-nlp

[42] ссылке: https://jovian.com/

[43] видео: https://www.youtube.com/watch?v=i4iUvjsGCMc

[44] ссылке: https://www.youtube.com/@statquest

[45] Бот из машины. Как инженеру сократить время на диагностику дисков: https://habr.com/ru/company/selectel/blog/722082

[46] Знакомство с частотными фильтрами. Часть 1: как спроектировать и немного схитрить: https://habr.com/ru/company/selectel/blog/721558

[47] 5 полезных и просто занимательных проектов на Raspberry Pi начала весны 2023 года: https://habr.com/ru/company/selectel/blog/722398

[48] материал: https://machinelearningmastery.com/loss-functions-in-pytorch-models/

[49] ссылке: https://machinelearningmastery.com/blog

[50] Telegram-сообществе «MLечный путь»: https://t.me/%2BhmAmPogLcIhhN2Ni

[51] Источник: https://habr.com/ru/post/723854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=723854