Написать пост

Как выучить машинное обучение: книги, курсы, подходы — отвечают эксперты

Тема машинного обучения популярна, но в ней легко запутаться. Спросим у экспертов, как обучиться машинному обучению.

Как выучить машинное обучение: книги, курсы, подходы — отвечают эксперты

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

Как выучить машинное обучение?

Если вы решили начать изучение машинного обучения, то в вашем распоряжении есть множество ресурсов. Это и online-курсы (Coursera, Udemy, Udacity и т. д.) и комбинированные online-/offline-курсы (netology, ВШЭ, Яндекс ШАД и т. д.) и большое количество литературы: «Introduction to Machine Learning with Python: A Guide for Data Scientists», «Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems» и т. д.

Все перечисленные источники уже структурированы и в большинстве своём позволяют без опыта и каких-либо первичных знаний начать использовать машинное обучение на практике в короткий промежуток времени. Они проведут от базовых понятий к продвинутым алгоритмам и методикам, а также заложат необходимый потенциал для формирования профессиональных навыков. А для вдохновения и общения стоит обратить внимание на Kaggle и сообщество ODS.

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

Так или иначе, даже если профильное базовое образование в области математики забыто, придётся вспомнить всё или почти всё в рамках онлайн-курсов по машинному обучению. На сайте Coursera достаточно много отличных курсов, с которых можно начинать изучение машинного обучения, например базовый курс «Машинное обучение и анализ данных», подготовленный совместно МФТИ и компанией «Яндекс». Или «Открытый курс по машинному обучению» от сообщества Open Data Science (ODS). Тем, кто «уже в теме», советую пройти курс «Advanced Machine Learning Specialization» от ВШЭ, а далее рекомендательная система Coursera подскажет вам полезные курсы, которые могут вас заинтересовать.

Важной составляющей успешного развития в области машинного обучения является хорошее владение английским языком, так как большая часть исследований в данной области публикуется на нём. Интересные разработки в области нейронных сетей от OpenAI, Google и Facebook также публикуются на английском языке. Тем не менее, важно также читать современную литературу по машинному обучению, выходящую на русском языке. Наиболее интересные издательства — это «ДМК Пресс» и O’Reilly, которые, наверное, знакомы многим программистам, так как публикуют достаточно много литературы, связанной с разработкой на различных языках программирования.

Не стоит забывать про различные соревнования по машинному обучению. Наиболее популярной площадкой является Kaggle, а в русскоязычном сегменте довольно популярен Boosters. Соревнования по машинному обучению помогут «добрать» и совершенствовать экспертные знания в конкретных областях машинного обучения, таких, например, как машинное зрение и обработка естественного языка. Не потеряться в море информации поможет общение с единомышленниками и профессионалами в данной области в рамках Slack-сообщества ODS. В этом сообществе можно найти массу полезной информации в различных областях машинного обучения, задать вопрос, на который Google не смог ответить, а также найти работу.

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

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

После того, как путь выбран, поищите открытые университетские курсы по соответствующему направлению. Из своего личного академического опыта поделюсь полезными, на мой взгляд, ресурсами.

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

Для тех, кто хочет получить базовое представление о том, что такое машинное обучение, полезным окажется курс от Эндрю Ына (Andrew Ng) на Coursera.

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

В любом случае, делаете вы первые шаги или уже не новичок — без практики никуда. Начните её с решения какой-нибудь задачи, например с сайта Kaggle.

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

Чтобы освоить машинное обучение, не обязательно бросать все дела, год готовиться к ЕГЭ, и тратить 4–6 лет в университете. К тому же заведений, которые готовят хороших специалистов по данному направлению, пока что очень мало в нашей стране. Если вы чётко решили для себя, что хотите изучить эту тему, возможно, хотите стать аналитиком, работать с большими данными, разрабатывать искусственный интеллект — вы сможете достичь поставленных перед собой целей в достаточно малые сроки.

Сейчас есть огромное количество ресурсов в открытом доступе в интернете. Мало кто может начать изучение новой для себя области с чтения занудной документации инструментов разработки и аналитики. Однако люди в основном очень хорошо воспринимают визуальную информацию, поэтому наиболее популярный и эффективный вариант — это изучение видеокурсов на Coursera, Udemy, YouTube и прочих платформах. К тому же, чтобы начать работать с машинным обучением, вам даже не обязательно разбираться в матанализе, дифференциальных уравнениях, иметь глубокие познания статистики и т. д. Вы можете использовать уже реализованные алгоритмы, разбирать их самостоятельно по маленьким кусочкам, советоваться с людьми на форумах, можно и просто использовать готовые функции, не разбираясь в их устройстве, хотя это и не очень правильный подход.

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

Если у вас есть время и возможность пойти в магистратуру — используйте этот шанс. В России хорошую репутацию завоевали ВШЭ и Сколтех. Там вы получите систематическое образование.

Если не хочется в магистратуру, можно пройти курсы. Достойные программы у ШАД, DMIA, CSC. Все три есть в офлайн-варианте: ШАД и DMIA в Москве, CSC в Петербурге. В ШАД и CSC также реализован вариант удалённого обучения, в DMIA он планируется.

Если вас интересует исключительно онлайн, то, конечно, есть смысл выбрать требуемое на Coursera. Что это может быть?

Machine Learning — базовый курс по машинному обучению от Andrew Ng, одного из сооснователей Coursera. На мой взгляд, у курса ровно один минус — код нужно будет писать на MATLAB. Если это вас не смущает, то обязательно берите.

Введение в машинное обучение — тоже базовый курс, но уже на русском и на Python, от Константина Воронцова, профессора кафедры интеллектуальных систем ФУПМ МФТИ.

Deep Learning Specialization — это уже целая специализация по нейронным сетям от Andrew Ng. Специализация неспешная, но глубокая. Особенно мне полюбился третий курс, где Эндрю рассуждает о том, как надо вести исследование в области глубокого обучения. Но его советы могут пригодиться и в классическом ML.

Advanced Machine Learning Specialization — курс от российских ребят. Он уже поглубже: там и про байесовскую статистику, и про Natural Language Processing, и про компьютерное зрение.

Кстати, про статистику. Чтобы ставить эксперименты и правильно считать корреляции, вам нужно знать статистику. Есть прекрасный курс уже на Stepik по основам статистики. Рекомендую. А если вам совсем лень, то книжка «Статистика и котики» вас спасёт. Маленькая, с наглядными картинками — читается за пару часов.

Что почитать?

«Python. К вершинам мастерства» (и вообще обратите внимание на издательство «O’Reilly»).

«Глубокое обучение. Погружение в мир нейронных сетей».

А ещё стоит читать Internet Archive — там всегда много интересных публикаций.

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

Где потренироваться?

Мир машинного обучения богат на разного рода контесты и хакатоны.

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

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

Также существуют смешанные варианты — онлайн и офлайн. Если выбирать один такой хакатон и именно в России, то я, конечно, посоветую RAIF Hackathon (я была одним из организаторов и хорошо знаю, как устроено это мероприятие). Изюминка в том, что вы анализируете данные тех компаний, представители которых находятся совсем рядом с вами. А потом слушаете лекции, например, того же самого Константина Воронцова, чей курс уже упоминался.

И конечно, во всех этих соревнованиях есть ещё приятный бонус в виде денежного вознаграждения победителю (и славы, куда же без неё).

Знакомство с машинным обучением предлагаю начать с изучения того, из чего оно состоит. Python, математика, алгоритмы, глубокое обучение, компьютерное зрение и обработка естественных языков — основные составляющие того, что принято относить к machine learning. Давайте остановимся на каждом пункте по порядку.

Python

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

Python — один из самых быстроразвивающихся языков, и именно на нём построен целый экомир Data Scientist.

Зачастую на собеседованиях можно встретить вопросы по следующим библиотекам:

  • NumPy;
  • SciPy;
  • Pandas;
  • Scikit-learn;
  • Matplotlib/Seaborn;
  • NLTK.

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

Из книг достаточно сложно что-то посоветовать, но на рабочем столе есть две:

  • Wes McKinney, «Python for Data Analysis»;
  • Francisko Blanko, «Learning SciPy for Numerical and Scientific Computing».

Математика

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

Некоторые курсы, которые помогут понять, с чем из этой области в обозримом будущем придется сталкиваться:

  • абсолютно бесплатный курс от создателей Kaggle;
  • книга о статистике, которая скорее может использоваться как справочник;
  • сайт о математике вообще для всех, но я бы оставила его здесь для любителей линейной алгебры;
  • курс от MIT для любителей математики и чего-то посложнее.

Из книг, которые лежат у меня на столе:

  • Trevor Hastie, Robert Tibshirani, Jerome Friedman «The Elements of Statistical Learning  Data Mining, Inference, and Prediction»;
  • Introduction to Probability, хоть я и не являюсь поклонницей John N. Tsitsiklis.

Алгоритмы

Чем больше у вас алгоритмов, тем разнообразнее и точнее вы сможете решать задачи.

Лучший курс для новичков уже ни один год — от AndrewNG. Он захватывает и нейронные сети, и базовые понятия, однако внутри используется Octave, а не Python. Направлен больше на теорию, чем на практику. Объяснения на грани фантастики, и порог вхождения определённо низкий.

Я брала этот курс, но любой курс Кирилла Ерёменко поражает простотой и насыщенностью материала. При помощи этого курса можно быстро покрыть всё вышеизложенное в списке и ещё много чего. В нём мало теории, но после окончания у вас останется куча практического опыта.

Я постаралась собрать наиболее общий список алгоритмов, чтобы лучше изучить этот раздел ML:

Basic Machine Learning Algorithms:

  • Linear Regression;
  • Logistic Regression;
  • Decision Trees;
  • KNN (K- Nearest Neighbors);
  • K-Means;
  • Naïve Bayes;
  • Dimensionality Reduction.

Advanced algorithms:

  • Random Forests;
  • Dimensionality Reduction Techniques;
  • Support Vector Machines;
  • Gradient Boosting Machines;
  • XGBOOST.

Глубокое обучение

Deep Learning — всевозможные архитектуры нейронных сетей. Я видела AI-специалистов, которые предпочитают ограничиваться ML и зачастую не выходят за рамки определённых алгоритмов. Поэтому начать без этого пункта не то чтобы просто, а, скорее, нужно. Но для людей, которые не знают, о чём речь, в этом пункте скрыта вся романтика.

Посоветовать что-то конкретное тяжело. Зачастую люди могут специализироваться на архитектуре одной конкретной сети. Общий обзор можно получить из курса Кирилла Ерёменко.

Компьютерное зрение

Computer Vision — отдельный мир в мире ML. Ну, почти отдельный — здесь кроется немного другая математика, немного другие алгоритмы и немного другие базовые знания.

Моё знакомство ограничилось следующим:

  • David A. Forsyth, «Computer Vision Modern Approach» — хотя почти уверена, что сейчас есть книги намного проще и лучше. Математика там достаточно сложная и уровень объяснений нетривиальный;
  • OpenCV — банально, но здесь есть хорошая документация с очень хорошими примерами.

Обработка естественных языков

Многие считают, что нет начинающего Data Scientist без проекта, связанного с NLP (Natural Language Processing). По собственному опыту могу сказать, что это раздел на любителя. И им стоит заниматься в случае страсти к филологии.

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

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

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

  • Data scientist. Знаток бизнеса. Разрабатывает модели для решения прикладных задач проекта или заказчика;
  • ML Researcher. Исследователь. Сосредоточен на математической стороне вопроса. Разрабатывает новые подходы для решения сложных, часто абстрактных задач;
  • Algorithms dev/engineer. Разработчик. Пишет код и алгоритмы, совершенствует их для ускорения и оптимизации процесса.

Выделяют и другие роли: аналитика данных, devops, системного аналитика, data engineer — но все они являются пользователями и заказчиками результатов работы машинного обучения, а не применяют его напрямую.

Чтобы перейти в Machine learning, нужно понять, как работают базовые алгоритмы, изучить реальные кейсы. Если хотя бы на начальном уровне знаете Python, разобраться будет проще. Владение английским языком помогает выиграть 1–2 года у тех, кто ждёт выхода официальной документации или перевода книг.

Программа-минимум для человека, который хочет разбираться в машинном обучении (учиться примерно 8–12 мес):

  • работа с инструментами обработки данных Pandas, SQL, Hadoop, DWH и другими, чтобы доставать данные;
  • разбор решений задач оптимизации — градиентный спуск и аналоги — для обучения моделей;
  • теория вероятностей и статистика, чтобы понимать полученные результаты, значимость моделей, распределения, ЦПТ, интервалы;
  • основной язык программирования Python и библиотеки для машинного обучения, например Pandas, Scipy, Numpy и другие;
  • введение в математику, сильные алгоритмы и ансамбли и принцип их работы в жизни.

Список книг, на которые стоит обратить внимание:

  • «Numsense! Data Science for the Layman», Annalyn Ng, Kenneth Soo. Поможет вникнуть в основы DS без математической сложности, разобраться в теме при помощи наглядных иллюстраций;
  • «Doing Data Science», Кэти О’Нил, Рэйчел Шатт. Одна из множества книг супер-популярного издательства. Помогает систематизировать знания об основах Data Science;
  • «Python и машинное обучение», Себастьян Рашка. Книга идеально подходит для тех, кто хочет погрузиться в мир прогнозной аналитики и машинного обучения.

Короткие видео про развитие вкуса и вдохновение красотой и универсальностью математики: раз и два.

Бесплатный онлайн видео-курс Академии Хана про базовые понятия статистики (совокупности, выборки, ЦПТ, сравнения средних и т. д. — не обязательно быть в них спецом, но базовое понимание развить стоит ещё до обучения на курсах).

Если вы грезите соревнованиями Kaggle или просто ищете датасеты для обучения моделей, то не проходите мимо их раздела с микро-курсами.

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

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

Ответ зависит от цели, которую ставит перед собой программист. Если задача — получить общее представление о предмете, узнать про основные инструменты и научиться ими пользоваться, то можно воспользоваться онлайн-курсами. Например, на платформе Coursera есть целая специализация из 6 курсов от Яндекса и МФТИ. Материал там изложен качественно и понятно, а интересные практические задания помогают его усвоить. Если этот курс покажется сложным из-за матаппарата (впрочем, используемого в минимально необходимом объёме), можно найти более простой курс на этой же платформе. И в любом случае, для обучения понадобятся хотя бы базовые навыки программирования на Python, так как он и набор библиотек Scikit-learn — сегодняшний стандарт в практике машинного обучения.

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

Доля проектов с применением искусственного интеллекта и машинного обучения ежегодно растёт, и скорость этого роста только увеличится. Рынок испытывает острую нехватку специалистов, что отражается на порядке зарплат в отрасли и ситуации в целом. Молодые люди, привлечённые высокой востребованностью и уровнем компенсаций, видят рекламные объявления онлайн-курсов с обещанием сделать из них Data Scientist за 2–3 месяца, и записываются без сомнений.

В первую очередь стоит опровергнуть распространённое заблуждение, что за 2–3 месяца можно стать Data Scientist. На старте освоения специализации важно осознать, что это долгий путь, и он не сводится к умению строить модели и работать с Kaggle. В приоритете — глубокое понимание работы с данными: определение их структуры, визуализация и анализ. То есть основа всему — системное качественное образование в фундаментальных дисциплинах: линейной алгебре, статистике, теории вероятностей, лингвистике и т. д.

Работа в реальности сильно отличается от опыта решения задач в Kaggle или на хакатонах: редко мы имеем дело с чистыми, качественными и подготовленными данными. Kaggle — это хорошо, но надо отдавать отчёт, что применяемые там сложные алгоритмы, ансамбли моделей в реальной практике часто не работают или работают не так. В жизни нам подчас важнее скорость обработки, которую при подобном подходе обеспечить сложно. На одном из хакатонов призовое место досталось команде, которая случайно и незначительно увеличила точность за счёт введения поля id, но в жизни это ни на что не влияет и было бы удалено за ненадобностью.

Пример кода:

			from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators =70, criterion='gini', random_state=101, max_features=4) 
classifier.fit(X_train, y_train)
		

Такой фрагмент можно написать, посмотрев небольшое видео или прочитав статью. Но это не значит, что вы стали специалистом и приобрели требуемые навыки. Стать им можно только благодаря опыту, наставничеству и участию в реальных проектах. После 2 лет обучения с погружением в практику, а не через 2–3 месяца пассивного изучения курсов, мы получаем хорошего Junior Data Scientist. Если на входе у человека есть подобное понимание профессии, то он сможет правильно построить обучение и карьеру. И очевидный совет — уже на этапе освоения специальности ищите возможность практики.

Теперь онлайн-курсы и книги, которые будут полезны:

  1. Machine learning. Онлайн-курс Стэнфордского университета на платформе Coursera. Преподаватель — легендарный Эндрю Ын (Andrew Ng), один из самых известных экспертов в сфере искусственного интеллекта. Многие считают этот курс устаревшим. Я согласен, но это основа основ машинного обучения; классический курс, обязательный для изучения и непростой для прохождения. Сам его прошёл с удовольствием: требуются терпение и усилия, чтобы дойти до конца, но он формирует необходимую базу для дальнейшего развития. И также рекомендую более свежий курс этого преподавателя — Deep Learning Specialization.
  2. Школа анализа данных Яндекса. Из русскоязычных ресурсов могу посоветовать онлайн-курсы ШАД в партнерстве с МФТИ в рамках специализации «Машинное обучение и анализ данных». Это около года системного обучения, но стоит помнить, что полученные знания должны быть связаны с практическим опытом решения задач.
  3. Machine Learning A-Z™: Hands-On Python & R In Data Science. Один из популярных и высоко оценённых англоязычных курсов. Состоит из десяти частей, в которых рассматривается обработка данных, регрессия, классификация, кластеризация, обучение с подкреплением, обработка естественного языка и глубокое обучение. Базовый курс, который однозначно стоит вложенных усилий.
  4. «Прикладное машинное обучение c библиотеками Scikit-Learn и TensorFlow». Книга Орельена Жерона (Aurelien Geron) — отличное введение в теорию и практику прикладного машинного обучения. С её помощью можно изучить широкий спектр методов — от линейной регрессии до глубокого обучения. В пособии множество качественных примеров решения задач с применением библиотек Scikit-Learn и TensorFlow.
  5. «Глубокое обучение на Python», Франсуа Шолле. Автор предлагает более 30 примеров программного кода с подробными комментариями и рекомендациями, что делает книгу ориентированной на решение практических задач. В примерах используются фреймворк глубокого обучения Keras, написанный на Python, и библиотека TensorFlow в качестве внутреннего механизма.

Хороший специалист в области машинного обучения — тот специалист, который:

  • понимает теорию машинного обучения — как быстро решать задачи и не делать больших ошибок;
  • знает инструменты для работы с данными;
  • знает инструменты машинного обучения;
  • знает инструменты глубокого обучения;
  • читает новые статьи, следит за появлением новых технологий;
  • хорошо знает технический английский. Многие статьи и курсы на английском, без него — никуда.

Список курсов для того, чтобы начать знакомство с машинным обучением:

  • Базовый курс от ВШЭ и Яндекса, чтобы войти в область.
  • Хороший и подробный теоретический курс ведущего специалиста в области машинного обучения Константина Вячеславовича Воронцова.
  • Специализация от МФТИ и Яндекса, чтобы углублённо погрузиться в тему.
  • Базовый англоязычный курс для тех, кто хочет понять нейронные сети и начать их использовать.

А если интересно изучить нейронные сети поглубже, советую почитать любую из этих книг:

Если вы хотите стать асом в инструментах машинного обучения и обработки данных, я очень рекомендую изучить документацию к этим инструментам. Она подробна, полна и прекрасна:

  • Jupyter notebook — инструмент для проведения исследований. Примеры использования можно посмотреть здесь;
  • инструмент визуализации PyPlot;
  • Numpy — удобный инструмент для работы с числовыми данными;
  • Pandas — удобный инструмент для работы с данными;
  • Scikit-learn — набор моделей машинного обучения;
  • Keras и PyTorch — инструменты для построения глубоких нейронных сетей.

А как решаются реальные задачи машинного обучения, рекомендую посмотреть на Kaggle — популярной соревновательной платформе в области машинного обучения. Вот примеры таких задач, во вкладке kernels можно посмотреть, как такие задачи решались:

Машинное обучение — обширная технология, стоящая на четырёх «столпах» анализа данных (Regression, Dimensionality Reduction, Density Estimation, Classification). Они в свою очередь имеют в своей основе около десятка направлений вычислительной математики (не считая, собственно, программирования!). Поэтому не следует ожидать, что машинным обучением можно овладеть, просмотрев несколько видео или подписавшись на Telegram-канал. Выбор способа изучения такой обширной темы — это прежде всего вопрос личных сильных сторон и возможностей.

Тем, кто быстро извлекает знания из практики и при этом не имеет возможности получать регулярное образование, лучше всего будет взять готовый серьёзный проект со всеми этапами машинного обучения. Например, Voice Loop от Facebook, и задаться целью постепенными небольшими модификациями адаптировать его для своей задачи. Можно разобраться, как синтезировать свой собственный голос или минимизировать вычислительную нагрузку для работы системы на гаджете. По мере решения прикладной задачи у вас начнёт складываться технологическая картина этапов обработки данных и процесса обучения. Уровень сложности готового проекта следует выбирать в соответствии с уровнем понимания кода на Python, аккуратностью отслеживания вносимых изменений и ошибок (с помощью системы контроля версий и т. п.). Преимущества подхода — быстрый старт и скорое получение относительно полезных результатов. Недостатки обусловлены «инженерностью» мышления: будет очень нелегко создать решение задачи «с нуля», без использования «заготовок». Вы также рискуете не разглядеть возможности переноса готовых идей на другие проблемы из-за более слабого понимания фундаментальных основ.

Тем же, кто лучше воспринимает теорию и математику, лучше будет посмотреть на спецкурсы при различных университетах. Академический подход будет долго вводить вас в курс дела по статистическим методам (регрессионный анализ, метод наименьших квадратов, kNN и т. д.), так что собственно до машинного обучения вы доберётесь ближе ко второй половине курса. Практические задачи будут простыми и нереалистичными, но целенаправленными. Плюсы этого подхода в теоретическом кругозоре: вы будете легко отсеивать малопригодные пути решения той или иной задачи, не теряя времени на практических неудачах. Однако, разработанный вами блестящий прототип имеет риск увязнуть на этапе внедрения из-за недостатка инженерной практики.

Ниже список литературы курса «Анализ данных», читаемого для студентов политехнической школы EPFL (Лозанна, Швейцария):

  • «Machine Learning: a Probabilistic Perspective», K. Murphy, MIT Press, 2012;
  • «An Introduction to Statistical Learning», Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani, Springer, 8 th editon, 2017;
  • «Deep Learning», Ian Goodfellow and Yoshua Bengio and Aaron Courville, MIT Press 2016;
  • «Pattern Recognition and Machine Learning», C. M Bishop, Springer 2006;
  • «Python Machine Learning», S. Raschka, PACKT Publishing, 2017;
  • «Introduction to Machine Learning», Ethem Alpaydin, The MIT Press 2014;
  • «A Primer on Scientific Programming with Python», Hans Petter Langtangen, Springer 2016;
  • «The Zen of Python in 3 days»;
  • «A Primer on Scientific Programming with Python», Hans Petter Langtangen.

Начать знакомство с машинным обучением я рекомендую с книги Массачусетского технологического института «The Deep Learning Book», она выложена в открытом доступе. Это признанный во всём мире учебник по нейронным сетям, который не требует от читателя глубокой математической подготовки — все необходимые основы рассказываются во вводной части. Идеальная книга для человека, который ничего не знает о нейросетях, но хочет разобраться в этом вопросе подробно.

Материалов на русском языке очень мало. Пожалуй, одна из лучших книг по классическому машинному обучению — это «Математические методы обучения по прецедентам» К. В. Воронцова. Факты об ML в этом курсе хорошо обоснованы в теоретическом плане, а материал направлен на то, чтобы понимать машинное обучение, а не просто уметь им пользоваться. Конечно, эта книга была опубликована ещё в 2008 году, и часть методов сейчас не используется на практике, так как была замещена другими, более современными моделями.

Чтобы следить за обновлениями, советую читать свежие и популярные статьи на сайте Arxiv Sanity Preserver по по тематике Machine Learning или любой другой интересующей вас теме.

Если вы решили заняться машинным обучением, то первым же шагом зарегистрируйтесь в сообществе ODS (Open Data Science). Там можно бесплатно получить ответ практически на любой вопрос, спросить совет, выговориться и найти наставника. Аналогов в IT просто не существует. Почти все обсуждения идут на русском языке, но регистрируются и иностранцы. Некоторые из них даже пытаются изучать русский (только за то, что на нём разговаривают на ODS). Такое вот «секретное оружие» российских data scientist’ов.

Второй шаг — практика. Машинное обучение, как и вообще IT, в этом плане весьма хорошая сфера. Чтобы безнаказанно оперировать людей, надо закончить институт. Чтобы перевозить пассажиров в самолёте, и они не разбежались, надо закончить училище. Чтобы анализировать данные, надо установить Python, Jupyter Notebook, PyCharm Community, Git.

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

Другой источник практики — ваша текущая работа. Если есть хоть какие-нибудь данные, то их можно анализировать. В простейшем случае сделайте «тот же самый отчёт», но на Python с библиотеками Pandas и Matplotlib — уже сможете добавить строчку в резюме. Попробуйте что-нибудь спрогнозировать, возможно, ваши начинания найдут поддержку со стороны начальства.

Параллельно с практикой (но никак не вместо неё) можно подтягивать теорию. Если вы не гений математики, а вуз закончили давно, то не стоит нырять в статистику, линейную алгебру и разбор классических ML-алгоритмов. Это также как «входить в IT» с ассемблера, дискретной математики, теории типов, книг Кнута. Круто, полезно, интересно, но только если у вас в запасе есть несколько лет по 8 часов в день.

Есть много разных курсов, лекций и статей. Для начала можно посмотреть на YouTube лекции «Stanford University CS231n». На русском языке есть курс «Deeplearning на пальцах». Лекции также выложены на YouTube, есть семинары и домашние задания.

Третий шаг — устройство на работу. Многие энтузиасты ML почему-то забывают или откладывают этот шаг. Они проходят курс за курсом (иногда несколько одновременно), участвуют в соревнованиях на Kaggle, посещают хакатоны, пишут пэт-проекты, но почему-то не рассылают резюме и не устраиваются на работу. Некоторые «звёздочки» умудряются на этих активностях зарабатывать приличные деньги. Но таких очень немного.

Единственный совет по устройству на работу — готовьтесь. Многие думают, что ответы на «задачки про гномиков» не важны, а можно просто показать «что ты хороший мотивированный человек и во всё разберёшься». Не сработает — дефицита хороших мотивированных и способных людей в этой сфере нет. Есть дефицит сильных опытных специалистов и начинающих «звёздочек» с топовым образованием. Остальным надо конкурировать. Поэтому вычитывайте резюме (на ODS с этим помогут), готовьтесь к собеседованиям, решайте задачи, разбирайте и учите правильные ответы. Не затягивайте с этим шагом.

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

Рекомендую как можно быстрее научиться пользоваться библиотеками Python: Numpy, Pandas, Matplotlib, Scikit-learn. После их освоения прогресс в обучении Data Science пойдёт быстрее. Для сферы искусственного интеллекта характерна потребность беспрерывно доучиваться, так как знания разнообразны, а области знаний постоянно развиваются, появляется что-то новое. По этим причинам недостаточно пройти какие-то одни курсы и на этом успокоиться, перестать заниматься. Многие успешные профессионалы, уже работающие в этой сфере, продолжают записываться на курсы, чтобы не отстать от времени или чтобы повторить забытое. Появляются и совершенно новые, перспективные области, о которых буквально год назад никто не говорил, в частности, квантовые вычисления — здесь могу порекомендовать курс Quantum Computing от сайта brilliant.org и курс «Квантовые вычисления» на Coursera от Сергея Сысоева. Также советую ознакомиться с туториалами библиотеки PennyLane на GitHub, если вы интересуетесь квантовым машинным обучением.

Могу порекомендовать курсы за авторством или при участии Andrew Ng и его компании deeplearning.ai: Machine Leaning, Deep Learning на сайте Coursera. Ещё там совсем недавно появился курс по TensorFlow — также от компании deeplearning.ai. По обработке естественного языка понравился курс «Обработка текстов, написанных на естественных языках» от ВШЭ, также размещённый на Coursera.

На мой взгляд, лучшие книги для погружения в машинное обучение:

Машинное обучение (Machine Learning, ML) – это прикладная технология. Для быстрого погружения в ML нужно иметь отличную математическую базу и навыки программирования. Во-первых, хорошо разбираться в основах математики (функции, производные, векторы, матрицы), статистики, в основах построения данных. Если знаний не хватает, то стоит «прокачать» базу, иначе можно остаться специалистом, выполняющим задачи кодера. Во-вторых, потребуется хорошее знание одного из языков программирования, например, Python или C++.

Среди лучших курсов по ML стоит выделить программы МФТИ и РУДН. Лаборатория машинного интеллекта МФТИ учит создавать эффективные ML-команды. Серьёзную подготовку даёт Факультет управления и прикладной математики. Запущен образовательный курс Deep Learning in Natural Language Processing. На факультете физико-математических и естественных наук РУДН представлен курс по машинному обучению и анализу данных от ведущих профессионалов индустрии («Яндекс», Google, МФТИ, РАН). Очень серьёзно данная область преподается в Национальном исследовательском университете «Высшая школа экономики», на факультете компьютерных наук по теме ML можно подобрать массу курсов.

Комплексные знания можно получить в известной Школе анализа данных (ШАД), основанной компанией «Яндекс» в 2007 году. Помимо машинного обучения здесь изучают компьютерное зрение, анализ текстов и другие технологии. Два года студенты изучают предметы, которые обычно не входят в университетские программы. Специалисты ШАД востребованы в ведущих организациях России.

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

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

Если стоит задача эффективно развиваться в сфере ML, то нужно сразу искать работу в этой области, начиная с позиции Junior, чтобы на практике реализовывать существующие задачи. Классический ML вырос из банковской сферы, поэтому специалисты по машинному обучению крайне востребованы как в финтех-стартапах, так и в стабильно работающих финансовых организациях. Также существуют интересные задачи в следующих областях: в промышленности при анализе данных, передаваемых в онлайн-режиме от интеллектуальных цифровых устройств о состоянии и работе оборудования; в транспортной сфере при онлайн-анализе данных и прогнозировании внештатных ситуаций, несущих потенциальную угрозу; и во многих других сферах.

Итак, как изучать машинное обучение?

  • Подтяните английский, ведь большая часть литературы, статей и исследований публикуется именно на этом языке. Кроме того, на английском публикуются записи в области нейронных сетей в блогах таких компаний, как OpenAI, Google и Facebook.
  • Познакомьтесь с Python. Хоть это и не единственный язык, используемый для машинного обучения, тем не менее, он самый популярный. Также стоит обратить на разные библиотеки вроде NumPy, SciPy, Pandas, Scikit-learn, Matplotlib/Seaborn, NLTK, которые активно используются в ML-сообществе.
  • Изучите/подтяните/вспомните такие разделы математики как линейная алгебра и статистика. Тут могут пригодиться следующие курсы/книги:курс Intro to Descriptive Statistics на Udacity;книга OnlineStatBook;курс Linear Algebra на Khan Academy;курс Introduction toProbability на edX.
  • Пройдите курсы по машинному обучению. Их можно найти на ресурсах вроде Udemy, Udacity, Coursera и даже YouTube. Вам могут пригодиться следующие курсы:«Машинное обучение и анализ данных» от МФТИ и Яндекс;Advanced Machine Learning Specialization;популярный курс по введению в машинное обучение от Эндрю Ына;«Введение в машинное обучение» от ВШЭ и Яндекс;Deep Learning Specialization.
  • Если вам больше по душе книги, вот что вы можете почитать:«Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow. Концепции, инструменты и техники для создания интеллектуальных систем»;«Глубокое обучение на Python»;«Глубокое обучение. Погружение в мир нейронных сетей»;«Python и анализ данных»;«Python и машинное обучение. Машинное и глубокое обучение с использованием Python, scikit-learn и TensorFlow».
  • Общайтесь с единомышленниками. Это и мотивирует, и позволяет быстрее решать проблемы и узнавать что-то новое. Вероятно, самое большое русскоязычное сообщество по этой теме — это Open Data Science.
  • Закрепляйте полученные знания на практике. Это могут быть задания в ходе прохождения курсов. Также можно обратить внимание на соревновательные площадки вроде Kaggle, где можно изучить решения других участников. Наконец, никто не мешает придумать себе интересный проект и попытаться его реализовать.

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Следите за новыми постами
Следите за новыми постами по любимым темам
39К открытий40К показов