В этой статье мы расскажем, как за три месяца получить самообразование в машинном обучении. Приводятся ссылки на соответствующие ресурсы.
На нашем сайте регулярно поднимаются вопросы самообразования в машинном обучении и анализе данных. Источником для этой статьи послужило видео, недавно опубликованное на YouTube-канале известного специалиста в области ML Siraj Raval. Для упрощения старта мы дополнили предлагаемый подход некоторыми русскоязычными материалами. Однако мы старались не перенасыщать статью подобными дополнениями, чтобы у читателей не возникла проблема выбора.
Это лишь один из возможных путей интенсивного обучения: в комментариях к статье вы можете предложить другие подходы.
Анализ вакансий
Рассмотрение новой сферы деятельности полезно начать с анализа вакансий в ведущих фирмах соответствующей отрасли. Для этого рассмотрим страницу с вакансиями в компании DeepMind, разрабатывающей инструменты, широко применяемые в машинном обучении. Нас интересует позиция Research Engineer. Ниже приведен скриншот страницы сайта с примером такой вакансии:
Необходимая квалификация заключается в степени бакалавра в информатике (математике, физике или электронике), уверенное владение Python, опыт в машинном обучении и/или статистике и разработке алгоритмов. Не только в минимальных требованиях, но и в пожеланиях работодателей ничего не сказано о степени кандидата наук (PhD) или научных публикациях.
Распределение математики в машинном обучении
Если составить круговую диаграмму, в которой будут распределены необходимые в машинном обучении математические знания, темы распределятся примерно следующим образом:
- 35% – линейная алгебра;
- 25% – теория вероятности и математическая статистика;
- 15% – математический анализ;
- 15% – алгоритмы;
- 10% – подготовка данных.
В описываемом подходе предлагается первый месяц посвятить математике и алгоритмам, второй – машинному обучению, а третий – наиболее популярному подразделу ML – Deep learning.
Общие рекомендации
Начав образование в новой стремительно развивающейся сфере, полезно находиться внутри контекста. Перечислим несколько ресурсов, позволяющих привыкнуть к терминологии и следить за последними новшествами:
- YouTube-канал Siraj Raval, по видеогайду которого мы подготовили эту статью;
- Reddit-канал по машинному обучению и последние новости в машинном обучении на Hacker news;
- Множество специалистов по ML и анализу данных в Twitter: Ilya Sutskever, Trent McConaghy, Andrej Karpathy, Andrew Trask, Pieter Abeel, Chris Olah, Nando de Freitas и др. Вы можете подписаться на составленный Ali Sohani список из более чем 100 людей, известных в области машинного обучения. Кроме того, на Quora есть обсуждение, включающее и другие аккаунты.
Общие рекомендации следующие. Даже если вы трудитесь на постоянной работе, каждый день занимайтесь обучением хотя бы по 2-3 часа, не прерывайте занятия. Если вы занимаетесь по видеолекциям, ускоряйте видео, если вы достаточно знакомы с материалом и его легко воспринимать. Обязательно ведите конспект, чтобы задействовать моторную память и глубже проработать материал. Делайте не менее одного проекта в конце каждой недели, где вы воспользуетесь полученными знаниями.
Для каждой из рассматриваемых тем можно найти своеобразную шпаргалку – краткое изложение основных идей этой области, по которым вы можете свериться насколько вы усвоили тему, а позже – при необходимости сможете освежить знания. На английском языке такие выжимки можно найти по словосочетанию cheat sheet.
Не волнуйтесь, если большинство курсов вы проходите быстрее, чем предполагают авторы. Определение интервала времени, необходимого для прохождения курса – это субъективная вещь и у относительно мотивированных учеников эта оценка обычно завышена.
Первый месяц. Математика и алгоритмы
Неделя 1. Линейная алгебра
В машинном обучении не обойтись без знаний линейной алгебры. Курс по линейной алгебре, прочитанный Гильбертом Стронгом является одним из наиболее популярных курсов на MIT OpenCourseWare. В визуализации таких вещей, как векторное произведение и определители, вам поможет описанный нами курс 3Blue1Brown. В качестве шпаргалки можно воспользоваться суперкратким изложением линейной алгебры на четырех страницах, скриншот которого был приведен выше. На этом этапе важно усвоить сами концепции линейной алгебры. Со множеством реальных примеров вы далее обязательно столкнетесь на практике.
Неделя 2. Математический анализ
По математическому анализу существует уйма замечательных курсов, лучший из них вы можете выбрать по одному из обсуждений на Quora. В дополнение, в визуализации образов математического анализа вам поможет еще один описанный нами иллюстративный курс 3Blue1Brown.
Неделя 3. Теория вероятностей
На третьей неделе предлагается познакомиться с основами теории вероятностей. В этом плане можно рекомендовать Курс MIT по введению в теорию вероятности, выложенный на edX, и получивший по оценкам прошедших его студентов пять звезд из пяти.
Неделя 4. Алгоритмы
Для изучения темы алгоритмов вы можете выбрать один из курсов по алгоритмам на Coursera. Мы также рекомендуем замечательный видеокурс на русском языке.
Не бойтесь, что знания в конце первого месяца будут ощущаться как неполные и разрозненные: следующие недели позволят вам их дополнить, закрепить и поверить в собственные силы.
Второй месяц. Машинное обучение
Неделя 1. Python для Data Science
Первую неделю второго месяца предлагается провести в обучении по трем плейлистам. Начните с небольшого плейлиста Python для Data Science. Полученные на первых четырех неделях знания из линейной алгебры, математического анализа, теории вероятностей и алгоритмов будут рассмотрены относительно применения в машинном обучении в плейлисте из 19 уроков Math of Intelligence. В завершение недели пройдите курс Введения в Tensorflow – самого популярного фреймворка для машинного обучения.
Неделя 2. Введение в машинное обучение
Полученные на предыдущей неделе знания будут расширены и обобщены при прохождении на второй неделе вводного курса Udacity по машинному обучению. Пройдя этот курс, вы достигните экватора этого трехмесячного интенсива и будете готовы к разработке настоящих проектов по машинному обучению.
Недели 3 и 4. Идеи для проектов по машинному обучению
Самое время потренироваться на реальных задачах. Большая подборка идей для проектов собрана на GitHub. Кроме того, вы можете попробовать свои силы в одном из соревнований Kaggle – ресурса, на котором специалисты по анализу данных соревнуются в разработке лучших решений для заданий, поставленных и оплачиваемых различными компаниями.
Машинное обучение заставляет постоянно выбирать между множеством микроальтернатив на пути к решению крупной аналитической проблемы. В качестве инструмента таких высокоуровневых микрорешений вы можете использовать scikit-learn. К концу месяца необходимо, чтобы вы разбирались в подготовке, разбиении и оптимизации данных, типах/моделях обучения, а также умели реализовать с нуля модель простого градиентного спуска, лежащую в основе многих стратегий машинного обучения.
Третий месяц
Неделя 1. Введение в глубокое обучение
Начать разбираться в глубоком обучении можно с плейлиста введения в Deep Learning из 34 уроков, рассматривающих при помощи Tensor Flow множество реальных задач. Если вы хотите познакомиться с некоторыми алгоритмами работы с нейронными сетями на русском языке, мы описали для вас такой курс.
Неделя 2. Курс по глубокому обучению
Продолжить обучение Deep Learning вы можете, пройдя 36-часовой курс высококачественных уроков на fast.ai, которые существенно расширят ваш кругозор относительно области глубокого обучения.
Недели 3 и 4. Проекты по глубокому обучению
Наконец, вы должны научиться на практике решать задачи при помощи Deep Learning, делая по 5-10 проектов в неделю. В этом вам поможет упомянутая выше страница Siraj Raval на GitHub. Такие задачи появляются время от времени и на нашем сайте. Некоторые из подобных проектов мы обобщили в этом обзоре. Вы можете попробовать свои силы также в одном из дискуссионных вопросов, к которым относятся, например, задачи прогноза в трейдинге.
После обучения
После этого трехмесячного интенсива вы можете почувствовать себя достаточно уверенно, чтобы попробовать свои силы для подачи резюме на вакансию инженера по машинному обучению. Подготовленные за эти три месяца проекты наполнят ваше портфолио. Кроме того, вы можете заняться консалтингом в этой области или попытать свои силы в создании стартапа на основе искусственного интеллекта.