4 концепта, необходимые специалисту по машинному обучению


Оглавление (нажмите, чтобы открыть):

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

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

Александр Дроздов , директор по инновациям компании «Иннодата»

Если вы решили начать изучение машинного обучения, то в вашем распоряжении есть множество ресурсов. Это и 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.

Татьяна Зобнина , ведущий разработчик систем машинного обучения NAUMEN

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

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

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

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

Михаил Сичалов , ведущий разработчик программного обеспечения Тверского технологического центра Accenture

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

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

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

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

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

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

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

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

Георгий Бабаян , CEO Elbrus Coding Bootcamp

Чтобы освоить машинное обучение, не обязательно бросать все дела, год готовиться к ЕГЭ, и тратить 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 (я была одним из организаторов и хорошо знаю, как устроено это мероприятие). Изюминка в том, что вы анализируете данные тех компаний, представители которых находятся совсем рядом с вами. А потом слушаете лекции, например, того же самого Константина Воронцова, чей курс уже упоминался.

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

Людмила Дежкина , Solution Architect, Machine learning & AI, DataArt

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

Python

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

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

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

Есть достаточно много сайтов с курсами, но наиболее удачные, на мой взгляд, можно найти на 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.
  • 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 Science в «Нетологии»

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

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

  • 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 или просто ищете датасеты для обучения моделей, то не проходите мимо их раздела с микро-курсами.

Дамир Заляев , старший менеджер по разработке ПО компании ICL Services

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

Мария Горькова , эксперт в области IT-разработок

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

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

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

Илья Калагин , руководитель центра когнитивных технологий «АйТеко»

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

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

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

Мастер Йода рекомендует:  Выбор сообщества подборка книг, одобренных нашими подписчиками

Такой фрагмент можно написать, посмотрев небольшое видео или прочитав статью. Но это не значит, что вы стали специалистом и приобрели требуемые навыки. Стать им можно только благодаря опыту, наставничеству и участию в реальных проектах. После 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 в качестве внутреннего механизма.

4 концепта, необходимые специалисту по машинному обучению

Анализ данных и Deep Learning

1. Примеры применения анализа данных, стандартные задачи и методы
2. Методы решения задачи классификации и регрессии
3. Кластеризация
4. Преобразование признаков
5. Введение в Text Mining
6. Введение в Deep Learning
7. Deep Learning for Data with Sequence Structure
8. Рекомендательные системы
9. Прогнозирование временных рядов

Библиотека программиста

10 принципов хорошего программного кода, который устроит всех

Библиотека программиста

Интересуетесь робототехникой и искусственным интеллектом? Читайте новости о разработках и полезные статьи на @robotics_channel.

Библиотека программиста

Каверзные вопросы и задачи по JavaScript из собеседований

#common #javascript #works

Библиотека программиста

Алгоритмы и структуры данных: развернутый видеокурс

Библиотека программиста

Библиотека программиста

Кража паролей: как наши учетные записи уводят через npm-пакет

Библиотека программиста

Объясняем известные алгоритмы сортировки на пальцах

Библиотека программиста

Математика для программиста: советы, разделы, литература

Библиотека программиста

HTTPS: внутреннее устройство и почтовые голуби

Библиотека программиста

Веб-разработчик и путь его развития в 2020 году

Библиотека программиста

Видеокурс «Основы линейной алгебры»

Линейная алгебра важна для понимания практически всех технических дисциплин (физика, статистика, Computer Science и т.д.). Из данного видеокурса вы узнаете:

1. Сущность линейной алгебры
2. Что такое вектор?
3. Базовые понятия: линейная комбинация векторов, линейная зависимость векторов и т.д.
4. Линейные преобразования и матрицы
5. Умножение матриц
6. Трехмерные линейные преобразования
7. Детерминант
8. Что такое обратная матрица, ранг матрицы и т.д.
9. и многое другое

Библиотека программиста

Python и R: что выбрать для Data Science в 2020?

Библиотека программиста

Как стать хакером: гайд по основам для новичков

#hacking #fundamental #common

Библиотека программиста

50 советов, хитростей и ссылок для Android Studio и Intellij IDEA

Библиотека программиста

7 «must read» книг по программированию

#book #fundamental #common

Библиотека программиста

Основы С++ на практике.

1. Как работает С/C++?
2. Техники программирования С/C++?
3. Метапрограммирование. Рефлексия.
4. Создание нейронной сети на С++
5. Как работает программа hello, world в С/C++

Библиотека программиста

Python: распознавание объектов в реальном времени

Библиотека программиста


Анализ данных на R в примерах и задачах

1. Нейронные сети. Теоретические результаты
2. Нейронные сети в регрессионных задачах
3. Примеры решения задач Machine Learning с помощью нейронных сетей. Часть 1
4. Примеры решения задач Machine Learning с помощью нейронных сетей. Часть 2
5. Нейронные сети. Представление о DeepLearning
6. Регуляризация. Назначение и примеры использования
7. SVD разложение (Singular Value Decomposition)
8. XGboost
9. Кейс: подготовка данных для анализа
10. Ядерные оценка плотности. Непараметрическая регрессия
11. Совместный (conjoint) анализ

Библиотека программиста

C#, C++, PHP, Ruby, Python и другие ЯП — это всего лишь малая часть деятельности ИТ. Каждый ИТшник сталкивается с безрассудством заказчиков, просранными дедлайнами и морем говнокода. Изнанка работы ИТ службы уникальна и не предсказуема. Хочешь узнать, как все крутится вертится внутри ИТ? Тогда тебе сюда /channel/Programmer_live.

Человек «Стальные нервы», мастер ITишных флешбеков, гуру по эзотерике в IT, танцор с бубном, он же админ канала @programmer_live.

Автор канала рассказывает про жизнь человека «ТЫЖпрограммист» от А до Я – с момента становления «высоких идей» до стадии «не злите программиста».

Библиотека программиста

C#, C++, PHP, Ruby, Python и другие ЯП — это всего лишь малая часть деятельности ИТ. Каждый ИТшник сталкивается с безрассудством заказчиков, просранными дедлайнами и морем говнокода. Изнанка работы ИТ службы уникальна и не предсказуема. Хочешь узнать, как все крутится вертится внутри ИТ? Тогда тебе сюда /channel/Programmerlive.

Человек «Стальные нервы», мастер ITишных флешбеков, гуру по эзотерике в IT, танцор с бубном, он же админ канала @programmerlive.

Автор канала рассказывает про жизнь человека «ТЫЖпрограммист» от А до Я – с момента становления «высоких идей» до стадии «не злите программиста».

Библиотека программиста

Импульсные нейронные сети: мозг в компьютере

Библиотека программиста

Компьютерные сети от А до Я: классификация, стандарты и уровни

Библиотека программиста

10 интересных вещей о платформе DotNet Core

Библиотека программиста

35 вопросов о программировании, на которые вы должны знать ответ

Библиотека программиста

Блокчейн, ИИ, бессерверные вычисления: ТОП-10 технологий 2020

#blockchain #common #collections

Библиотека программиста

Мои друзья запустили проект Crypto Ninja, где они проводят мощные пампы криптовалют, где можно удвоить и даже утроить свои вложения. Следите за оповещениями в телеграм канале, потому что анонс о пампе будет уже скоро — /channel/Cryptoninja1

Что такое памп? Речь идет о Crypto Ninja Community — одной из крупнейших групп подобной тематики в Telegram, которая посвящена «пампам» и «дампам» — скоординированной скупке (памп) криптовалюты с целью привлечь покупателей и продавцов продать (дамп) это валюту в несколько раз дороже.

Мы определяем монету, которую будем пампить. Есть биржи, где капитализация валюты не такая большая и ее стоимость можно искусственно поднять на 300-500% (ваш профит). Мы с вами будем покупать выбранную монету по низкой цене, потом ее будут скупать биржевики, которые видят повышение курса, и когда ее стоимость поднимется на 700-800% мы с вами аккуратно начинаем продавать.

Ждем вас на канале в телеграмме, где Cripto Ninja будет публиковать информацию о пампах — /channel/Cryptoninja1

Библиотека программиста

Open Source проекты в резюме: 5 причин писать открытый код

6 концептов книги Эндрю Ына “Жажда машинного обучения”

“Техническая стратегия для инженеров-разработчиков искусственного интеллекта в эпоху глубокого обучения”

“Жажда машинного обучения” структурирует разработку проектов, использующих машинное обучение. Книга включает в себя практический опыт, который сложно найти где-либо ещё. Формат идей прост для того, чтобы делиться ими с коллегами. Многие курсы по AI рассказывают, как работают алгоритмы машинного обучения, в то время, как эта книга рассказывает, как их использовать. Если вы хотите стать техническим лидером в области AI, то книга поможет в этом. Раньше единственной возможностью научиться принимать стратегические решения в этой области было обучение в аспирантуре или получение опыта в процессе работы. “Жажда машинного обучения” написана для того, чтобы в короткие сроки научить этому навыку, что позволит стать лучше в создании продуманных систем AI.

Содержание

  • Об авторе
  • Введение
  • Концепт 1: Итерация, итерация, итерация
  • Концепт 2: Использование единой метрики оценки
  • Концепт 3: Анализ ошибок важен
  • Концепт 4: Определение оптимальной величины ошибки
  • Концепт 5: Работа над проблемами, которые хорошо решаются людьми
  • Концепт 6: Как разделить датасет?
  • Заключение

Об авторе

Эндрю Ын — специалист в области теории вычислительных машин и систем, инвестор, предприниматель и один из ведущих экспертов в области искусственного интеллекта. Он бывший вице-президент и главный учёный Baidu, внештатный преподаватель Стэнфорда, создатель одного из самых популярных онлайн-курсов по машинному обучению, один из создателей Coursera.com и бывший глава Google Brain. В Baidu он значительно расширил свою команду искусственного интеллекта до нескольких тысяч человек.

Введение

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

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

Вкратце, “Жажда машинного обучения” — книга, дающая глубокое понимание технического направления проекта.

Так как члены команды могут реагировать скептически на продвижение новых идей, Эндрю сделал главы очень короткими (всего 1–2 страницы), чтобы концепты можно было понять за несколько минут. Хочу сказать, что книга не рассчитана для новичков, для её понимания нужно быть знакомым с такими понятиями, как обучение с учителем и глубокое обучение.

В этой статье я поделюсь моим пониманием концептов, представленных в его книге.

Концепт 1: Итерация, итерация, итерация…

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

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

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

Концепт 2: Используйте единую метрику оценки

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

Представьте, что у вас есть 2 алгоритма. Точность первого — 94%, а полнота — 89%. В то же время, точность второго — 88% и полнота — 95%.

Ни один классификатор не может быть очевидно лучше другого, если вы не выбрали единую метрику. Проблема в том, что для их сравнения придётся тратить много времени на каждом шаге, что тормозит процесс работы. У вас будет слишком много идей по улучшению архитектуры, параметров, свойств и тому подобного. Если вы используете численную метрику (точность или F-мера), то она позволяет отсортировать все модели по их производительности и быстро узнать, которая из них обеспечивает лучший результат. Ещё одним способом является соединение нескольких метрик в одну, например, усреднение значения.

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

Таким образом, выбор единой метрики, позволит вам быстрее оценивать алгоритмы и, следовательно, существенно ускорит процесс итераций.

Концепт 3: Анализ ошибок важен

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

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

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

После этого вы поймете, что идея №1 позволит верно классифицировать 40% ранее ошибочно классифицированных изображений, идея №2–12% и идея №3 — всего 9%. Понятно, что работа над идеей №1 будет более обещающей, чем над другими идеями.

Концепт 4: Определите оптимальную величину ошибки

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

Представьте, что вы разрабатываете систему преобразования речи в текст и оказывается, что в 19% выборки есть настолько сильные шумы на заднем фоне, что даже люди не могут разобрать, что было произнесено. То есть, ваша система, скорее всего, ошибётся в этих 19%. Когда же вы работаете с выборкой, оптимальная величина ошибки которой близка к 0%, можно надеяться на то, что система справится с задачей так же хорошо.

Это помогает определять, страдает ли алгоритм от смещения или дисперсии, что определяет последующие шаги для его улучшения.

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

Концепт 5: Работайте над проблемами, которые хорошо решаются людьми

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

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

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

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

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

Концепт 6: Как разделить датасет


Ын предлагает свой способ разделения датасета на три части:

Тренировочная: используется для обучения алгоритма.

Валидационная: используется для настройки гиперпараметров, для выбора и создания свойств и для проведения анализа ошибок. То есть, она — ваш главный помощник в усовершенствовании алгоритма.

Тестовая: используется для оценки работы системы.

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

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

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

Заключение

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

15 книг по машинному обучению для начинающих

Data Science — оверхайповое направление IT. Мы сделали подборку книг по Machine Learning для тех, кто хочет разобраться, что да как.

IT стали толчком развития новых профессиональных областей: Data Mining, машинного обучения (Machine Learning) и других. Чтобы погрузиться в тему, читайте книги из нашей подборки.

Книги по машинному обучению на русском

Автор в сфере IT, digital, экономики и финансов. Ведет некоммерческий проект для начинающих писателей «ЛитЦех».

Владимир Вьюгин.
«Математические основы машинного обучения и прогнозирования»

Сначала изучите азы статистической теории машинного обучения, игр с предсказаниями и прогнозирования с применением экспертной стратегии. Их основы прекрасно объясняет автор книги, доктор физико-математических наук Владимир Вьюгин. Пособие рассчитано на студентов и аспирантов и в доступной форме излагает математические основы, необходимые для дальнейшей работы с машинным обучением.

Педро Домингос.
«Верховный алгоритм»

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

Хенрик Бринк, Джозеф Ричардс, Марк Феверолф.
«Машинное обучение»

Эта книга 2020 года издания доступно рассказывает о Machine Learning — для тех, кто ничего не слышал об этих технологиях. В ней нет заумной статистики, математики или углубленного и подробного объяснения, как использовать тот или иной алгоритм. Авторы с легкостью объясняют, что такое машинное обучение и как его применять в повседневной жизни. Примеры в книге приводятся на языке программирования Python, который используется в том числе и в этой сфере.

Бастиан Шарден, Лука Массарон, Альберто Боскетти.
«Крупномасштабное машинное обучение вместе с Python»

Еще одна отличная книга для начинающих свой путь в программировании и анализе больших данных. Авторы утверждают, что благодаря ей читатель научится самостоятельно строить модели машинного обучения и развертывать крупномасштабные приложения для прогнозирования. В книге рассказывается о том, какие алгоритмы входят в семейство масштабируемых, что они из себя представляют и как с их помощью обрабатывать большие файлы. Также вы узнаете, что такое вычислительная парадигма MapReduce и как работать с машинными алгоритмами на платформах Hadoop и Spark на языке Python.

Себастьян Рашка.
«Python и машинное обучение»

Книга для новичков, осваивающих Python и машинное обучение. Издание содержит подробные мануалы даже по таким нюансам, как установка специализированного приложения Jupyter Notebook.

В книге рассматриваются основы Machine Learning, возможности самых мощных библиотек Python для анализа данных и дается ответ на вопрос, почему этот язык — один из лидеров в Data Science.

Георгий Кухарев, Екатерина Каменская, Юрий Матвеев, Надежда Щеголева.
«Методы обработки и распознавания изображений лиц в задачах биометрии»

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

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

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

Машинное обучение. Технический пост: с чего начинать и на что обратить внимание.

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

0. Как вообще изучать

1. Тематические ресурсы.

2. Техническая часть.

Как вообще изучать это дело?

Любая наука двигается людьми. Каждый учёный имеет свою область интересов, поэтому надо в первую очередь определиться, что тебе интересно. Вообще, в России самый-самый главный по машинному обучению — это Воронцов Константин Вячеславович. Он написал ряд лекций, каждая из которых от «А» до «Я» всё объясняет.

Мастер Йода рекомендует:  6 распространенных ошибок при разработке логотипов

Лучше всего начать с этих лекций. Здесь затрагиваются основы основ, линейные методы классификации, немного про нейронные сети, кластеризация и регрессия. Вообще, у него есть общие лекции, на манер тех, что я привёл в пример, а есть лекции, специально посвящённые какому-то либо разделу. Например, тематическое моделирование (вопросы моделирования текстов), ансамбли алгоритмов (помогает понять, что такое случайный лес или градиентый бустинг). Эти знания помогут вам понять, что скрывается под копотом у ваших алгоритмов. Но есть и чисто научные вопросы, которые без. определённой доли усидчивости и знаний не понять.

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

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

Я походу своей деятельности занимался компьютерной лингвистикой. В компьютерной лингвистике правит бал сейчас модель word2vec. Поэтому, берём работы Tomasa Mikolova и гуглим его труды. Это даст вам необходимый минимум.

Вообще, литературы по этому делу в интернете масса. Однако,что редкость, в русскоязычном сегменте есть весьма достойный сайт. Там можно найти почти всё! Вообще, такие сайты большая редкость. Думаю, что многие вспомнят хабр. Ну там. Там больше технические моменты описываются. С точки зрения программиста, хабр вещь незаменимая, но с научной. Мне попадались там действительно удачные циклы научпопа про тематическое моделирование. Если вам надо постараться смоделировать поведение пользователя, опираясь на тематики, то рекомендую их блог. На пальцах объясняют как это сделать и почему это будет работать. Результаты экспериментов прилагаются.

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

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

ШАД — это бренд. Я не знаю, что там проходят точно, но я уверен, что там круто. Очень круто. Поступление бесплатное, но очень трудное. Подробнее с задачами можно ознакомиться здесь. Из онлайн курсов я бы порекомендовал мониторить stepic. Там можно выцепить весьма любопытные курсы. Между прочим, с сертификатами, что весьма приятно. И бесплатно.

Ну, тут всё просто. Идём и смотрим на hh/linkedin/stackoverflow что интересует потенциального работодателя.

2. Стэк: Big Data: Hadoop, Hive, Spark (для инженеров)

3. Python — просто маст хэв. Особенно его библиотеки для машинного обучения.

4. Желательно java

Если интересно для себя, то:

1. h20. Интуитивно просто и понятно. Я всегда использую для разных конкурсов 🙂

2. MS Azure. Детище майкрософта. Интерфейсом напоминает RapidMiner, раньше была платной, как сейчас — хз. Есть всё. В сети довольно много уроков, которые рассказывают, как этим пользоваться.

3. RapidMIner. Штука прикольная. Интерфейс довольно простой и дружелюбный. Из минусов: в бесплатной версии всего 1 гиг оперативки можно использовать, что довольно печально.

Ну вот вы натренировались, выучили всё, что можно и вам не терпится попробовать свои силы? Ну тогда вам

1. Kaggle. Самая-самая платформа для конкурсов по машинному обучению. Для сильных духом. Вообще, помимо конкурсов, можно почитать форумы, посмотреть тестовые проекты и поискать работу.

2. Гугл наш друг. Вбиваем machine learning contest и смотрим, что есть.

Ex Machina: 4 перспективные профессии в IT

Data scientist в медицине

Data scientist — труднопереводимый на русский язык термин, обозначающий специалиста, который одновременно разбирается в IT (способен программировать, придумывать и решать алгоритмические задачи), математике и статистике, а также хорошо знает определенную отрасль бизнеса или науки, где и может применить вышеперечисленные знания. Аналитики данных нужны везде — от спорта (вспомним знаменитый байопик «Человек, который изменил все» — про спортивного менеджера, впервые использовавшего статистические методы при подборе бейсбольных игроков в команду) до транспорта и добычи полезных ископаемых. По расчетам McKinsey Global Institute, к 2020 году в одних только США понадобится дополнительно 190 тысяч профессионалов такого рода.

Получив подобное образование, не прогадаешь в любом случае, но одно из самых перспективных направлений, где data scientist может приложить свои способности, — это медицина, в которой сейчас происходит много громких прорывов (от редактирования генов до 3D-печати органов). Важную роль играет и «революция больших данных» — благодаря разным гаджетам и приложениям исследователи и врачи-диагносты могут быстро собирать и анализировать огромное количество информации. Человек, способный управлять такими базами данных и ориентироваться в них, точно не останется без работы.

Где учиться:

  • Подборка зарубежных магистерских программ.
  • Школа аналитики данных «Яндекс».
  • Технопарк Mail.ru, курс «Алгоритмы и структуры данных».
  • Магистерская программа «Науки о данных» ВШЭ.

«Конечно, в зарубежных вузах подобных образовательных программ гораздо больше (как и вакансий для специалистов по анализу данных в медицине), чем у нас. В России магистратуру по анализу данных в медицине и биологии предлагает ВШЭ, в „Сколтехе“ есть магистерские программы по анализу данных и биомедицинским технологиям, интернет-портал Medstatistic.Ru открыл свой курс по статистическому анализу данных в медицине, а мы в Welltory создали академию для персональных аналитиков здоровья. Что касается Запада, вот самые интересные программы, на которых студент медицинского вуза может выучиться дистанционно:

  • дистанционная сертификация Healthcare Data Analyst, проводится Bellevue College, на программе рассматривают инструменты для анализа и визуализации медицинских данных;
  • онлайн-курс Data Analytics in Health — From Basics to Business на сайте EdX, программа курса рассчитана на обучение анализу медицинских данных и использованию big data для улучшения здоровья и сферы здравоохранения;
  • магистерская программа по анализу данных в здравоохранении, колледж при технологическом университете Кларксона;
  • магистратура в университете Джексонвилля».

Компьютерный лингвист

Нам все чаще приходится искать общий язык с машинами, так что в дальнейшем, очевидно, будет активно развиваться самая «точная» ветвь лингвистики, находящаяся на стыке с математикой и IT.

Компьютерные лингвисты могут работать по нескольким направлениям. Во-первых, это разработка алгоритмов распознавания текста и речи. Такие алгоритмы могут использоваться, например, в «умных домах» и при общении с роботами (а владельцы iPhone уже сейчас могут беседовать с виртуальным помощником Siri). Тут есть, над чем поработать: человеческая речь очень сильно различается в устах разных спикеров, и компьютеру сложно ее распознавать.

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

Где учиться

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

Специалист по машинному обучению

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


Где учиться:

  • Лаборатория нейронных сетей и глубокого обучения МФТИ.
  • Базовый курс «Аналитика с использованием машинного обучения на платформе Microsoft Azure ML», ЦКО «Специалист» при МГТУ им. Баумана.
  • Курс по машинному обучению в «ПостНаука Academy».
  • Курс «Машинное обучение и анализ данных» на Coursera (разработан МФТИ совместно с «Яндексом»).

Разработчик нейроинтерфейсов

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

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

Перевод статьи разработчика алгоритмов машинного обучения, бизнес-консультанта и популярного автора Ганта Лаборде «Machine Learning: from Zero to Hero».

Начнешь c “Зачем?”, придешь к “Я готов!”

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

Почему машинное обучение сейчас в тренде

Искусственный интеллект (далее ИИ) всегда имел применение, начиная от перемещения ракетки в пинг понге и заканчивая выполнением комбо в Street Fighter.

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

Несмотря на это, компьютер поддается обучению для игры в видеоигры, понимания языка и распознавания людей и предметов. Этот навык исходит из старой концепции, которая только недавно получила необходимые вычислительные мощности для существования вне теории. Я имею в виду машинное обучение (ML, Machine learning).

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

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

Впечатлены? Как это возможно? К счастью, Элон Маск представил некоммерческую компанию, которая предоставляет возможность подключения ИИ к любым играм и задачам с помощью дюжины строк кода. Посмотрите, как это работает.

Зачем следует использовать машинное обучение?

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

Во-вторых, если не влияете на мир, мир повлияет на вас. Компании инвестируют в ML, и эти инвестиции уже меняют мир. Лидеры мысли предупреждают, что нельзя позволить алгоритмам машинного обучения быть в тени. Представьте себе, если бы монополия из нескольких корпораций контролировала Интернет. Если мы не “возьмемся за оружие”, наука не будет нашей.

Christian Heilmann высказал правильную мысль в беседе о машинном обучении:

“Можно надеяться, что остальные будут использовать эту мощь только в мирных целях. Я, например, не рассчитываю на эту милость. Предпочитаю играть и быть частью этой революции. И вы присоединяйтесь”.

Хорошо, теперь я заинтересован…

Концепт полезный и веселый. Но что за дичь там в действительности творится? Как это работает? Если хочешь сразу погрузиться, советую пропустить раздел и перейти к следующему “С чего мне начать?”. Если вы уже мотивированы делать модели ML, эти видео не понадобятся.

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

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

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

Классический пример машинного обучения в действии — датасет прямиком из 1936-го года, называемый ирисами Фишера. На презентации эксперта JavaFX, посвященной машинному обучению, я узнал, как использовать этот инструмент, чтобы визуализировать прикрепление и обратное распространение весов к нейронам в нейронной сети. Понаблюдайте за тем, как тренируется нейронная сеть.

Обучение нейронной сети Ирисы

Готовы стать Эйнштейном новой эры? Прорывы происходят каждый день, поэтому начинайте сейчас.

С чего мне начать?

Доступных ресурсов много. Я рекомендую два подхода.

Основы

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

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

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

Гонщик

Если вы не заинтересованы в написании алгоритмов, но хотите использовать их для создания сайтов и приложений, то используйте TensorFlow и погрузитесь в crash course.

TensorFlow — это библиотека с открытым исходным кодом для машинного обучения. Ее можно использовать любым способом, даже с JavaScript. А вот crash source.

Услуги ML

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

Предупреждаю, что нет гарантии, что ваши данные будут в безопасности или вообще останутся вашими, но предложения услуг по ML очень привлекательны, если вы заинтересованы в результате и имеете возможность загрузить данные на Amazon/Microsoft/Google.

Давайте быть созидателями

Я все еще новичок в мире ML и счастлив осветить путь для других, путь, который даст нам возможность завоевать эру, в которой мы оказались.

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

Надеюсь, эта статья вдохновила вас и ваше окружение изучать ML!

С чего начать обучение машинному обучению / deep learning / data mining?

Добрый день!
С чего начать обучение машинному обучению, учитывая что опыта в данной сфере — 0?
Если данная область имеет много направлений, хотелось бы углубиться в AI.

Есть-ли какие-то блоги и книги (желательно на русском языке)?

Так же желательно, что-бы примеры в статях / книге были на одном из данных языков (в порядке убывания):
* JS
* Python
* Java
* Ruby
* C

R, Prolog и т.п. — не интересуют, так как это узконаправленные языки.

  • Вопрос задан более трёх лет назад
  • 27327 просмотров

sim3x: начал с поиска готовых библиотек на JS и изучением их кода, а так же прочел пару статей на хабре (из которых узнал что DL это круто, и по сути дела — все, так как материал был расчитан на уровень выше начального.)

https://github.com/harthur/brain — JS либа, была еще одна, но мне она показалось сложнее для начала.

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

В этих двух книгах теория:

Питер Норвиг. Искусственный интеллект: современный подход
Книга П.С. Романов. Основы искусственного интеллекта

Библиотека scikit-learn с реализованными алгоритмами из книг выше. Python

А также пригодится ( на более поздних этапах )
Козлов М.В., Прохоров А.В. Введение в математическую статистику. — М.: Изд-во МГУ, 1987.
Боровков А.А. Математическая статистика. Оценка параметров, проверка гипотез. — М.: Наука, 1984
Боровков А.А. Математическая статистика. Дополнительные главы. — М.: Наука, 1984.

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

Универсальный солдат big data

Константин Воронцов — доктор физико-математических наук, профессор РАН, профессор кафедры интеллектуальных систем и заведующий лабораторией машинного интеллекта МФТИ. Автор наиболее известного в России университетского курса лекций по машинному обучению. В «Яндексе» руководит разработкой платформы для распределенного хранения и обработки данных. Считает анализ данных универсальной отмычкой к секретам в любых областях науки.

О чем идет речь?

Можете простыми словами объяснить, что такое «большие данные»?

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

Типичный пример — конкурс по распознаванию картинок ImageNet, который стартовал, насколько я помню, в 2010 году. Участники получили несколько миллионов картинок с комментариями: тысячи людей описывали, что изображено на снимках, — машина запоминала соотношения меток и картинок. После этого программисты учили ее распознавать, что изображено на фотографиях, где подписей не было.

Задача построить алгоритм распознавания изображений стара как мир. Ее решали еще в середине прошлого века, но тогда количество ошибок составляло порядка 70%. Потому что речь шла о тысячах картинок. А вот миллион размеченных изображений обеспечил качественный скачок. В 2012 году уровень распознавания повысился до 12% ошибок, потом дошел до 5% — это точность на уровне человека, — а затем до 4,5 и 3,5%. Стала возможна автоматизация новых процессов: например, теперь мы можем поставить камеру, которая будет распознавать номера автомобилей, лица в толпе.

То есть изначально в течение длительного времени существовал анализ данных. А потом появился анализ больших данных…

Константин Воронцов: Математическая статистика активно развивается где-то с 20-30-х годов XX века. Компьютеров тогда не было, а статистические методы, которые мы сегодня используем, уже зарождались. В 40-х годах начались эксперименты с нейронными сетями. Однако после первых успехов ученые, а вслед за ними и общество разочаровались в попытке создания искусственного интеллекта. Таких волн было несколько. В 80-х придумали алгоритм обучения нейронных сетей. Но следующий прорыв случился только в 2012 году, когда для тренировки программ стали использовать большие выборки данных. То, что называется машинным обучением.

Получается, без машинного обучения анализ данных почти невозможен?

Константин Воронцов: Да нет, конечно, возможен. Анализ данных — понятие более широкое, чем анализ больших данных. Оно включает все классические методы статистического анализа, их никто не отменял, они по-прежнему много где используются.


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

На что вообще способна наука об анализе данных? В каких самых невероятных сферах ее можно применять?

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

То есть можно прийти в любую компанию, в какой бы стране она ни находилась, и сказать: «Я специалист по анализу данных, дайте мне работу»?

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

Но если захотите, можете им стать?

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

Что нужно уметь?

Кто он такой — специалист по анализу данных? Что должен уметь, какие задачи решать?

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

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

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

Что еще должен уметь универсальный солдат?

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

Мастер Йода рекомендует:  Вебвизор стал инструментом Яндекс.Метрики

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

Когда я говорил, что специалист по анализу данных должен быть универсальным солдатом, то имел в виду эти четыре умения: говорить с людьми и понимать задачи, знать математику, программирование и «железо». Если вы все это освоите, то сможете претендовать на участие в любых проектах и ежемесячную зарплату в миллион рублей. Но таких специалистов, к сожалению, мало.

Куда пойти учиться?

Что нужно делать, чтобы стать специалистом по большим данным?

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

Можно ли приобрести эту профессию в университете?

Константин Воронцов: К сожалению, образование — вещь очень консервативная. Сейчас институты, в которых учат анализу данных, можно по пальцам одной-двух рук пересчитать: в Физтехе, в МГУ, в Высшей школе экономики, еще в нескольких вузах, может быть. Остальные не успевают за этим трендом. Не хватает преподавателей-практиков в области анализа данных.

Вузы, которые вы перечислили, расположены в Москве. Как быть тем, кто живет и учится, например, на Дальнем Востоке?

Константин Воронцов: Скорее всего, там тоже есть хорошие специалисты, которые преподают анализ данных и понимают, что можно научить студентов, например, делать курсовые на материалах конкурсов. Многие компании выкладывают в открытый доступ свои данные, чтобы научное сообщество решало их задачи и соревновалось. Это отличный материал, чтобы учить студентов. Я знаю, в Нижнем Новгороде делают что-то подобное. В Таганроге, во Владивостоке. Но университетская среда очень инертная. Люди десятилетиями читают одно и то же.

Высшее образование за трендами не успевает, а можно ли самостоятельно изучить все необходимое, чтобы стать специалистом по big data?

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

Как вы относитесь к онлайн-курсам по анализу данных? Что можете посоветовать?

Константин Воронцов: Хорошо отношусь и сам преподаю на Coursera. Онлайн-курсы необходимо изучать — много и разных. В интернете выложено огромное количество лекций по тому же машинному обучению, сотни просто. Есть конференции, статьи с которых нужно читать каждый день: NIPS — the Conference on Neural Information Processing Systems, ICML — The International Conference on Machine Learning. Здесь требуется самодисциплина: встал утром, пошел и потратил час, чтобы прочитать одну-две статьи.

Значит, освоить теорию самому можно, но как научиться применять ее на практике?

Константин Воронцов: На этот вопрос есть очень хороший ответ. Сейчас набирают популярность конкурсы анализа данных. Есть международная платформа kaggle.com, где непрерывно проводятся десятки конкурсов: коммерческие компании предлагают ученым за вознаграждение решить для них ту или иную реальную задачу. Такие соревнования полезны и для организаторов, и для участников. Если вы стали победителем или призером, вас примут на работу с большей стартовой суммой. А если вы в десяти конкурсах победили, то вы просто сверхчеловек и работодатели уже ждут вас с распростертыми объятиями. В таких конкурсах могут участвовать и студенты, и даже школьники.

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

Константин Воронцов: По-разному бывает. В тех же конкурсах участвуют как команды, так и одиночки.

Вот, например, в «Яндексе» сколько человек работает над одной задачей?

Константин Воронцов: В «Яндексе» задач сотни, а может быть, тысячи. Стандартный коллектив, который работает с конкретным сервисом и решает определенную задачу, — от 2 до 10 человек. Чаще всего четверо-пятеро. Если больше, возникают проблемы с управлением. Конечно, большими задачами, например поиском в целом, занимаются несколько сотен человек. Но эта задача все равно разбита на кучу подзадач — модульный подход используется в любых разработках. Я думаю, самолеты и мосты так же строятся.

Где найти единомышленников? Есть центры, где можно пообщаться со специалистами?

Константин Воронцов: Ну, во-первых, можно отправить письмо мне (смеется). Я готов быть вашим единомышленником. Во-вторых, есть такое сообщество Open Data Science — как раз для тех, кто ищет соратников. Их там уже тысяч пять набралось, наверное. Многие компании подбирают себе в этом сообществе сотрудников, выкладывают интересные задания. Кто-то просто задает вопросы, другие на них отвечают. Здесь же формируются группки для решения конкретных задач. В общем, это живое сообщество, открытое для всех. А к анализу данных можно приступать с первого же шага.

Где найти вдохновение?

Как понять, что тебе действительно интересны математика, программирование, работа с данными?

Константин Воронцов: Универсального ответа на этот вопрос не существует. Когда я был школьником, меня увлекла сама возможность заставить компьютер делать то, что я хочу. Отец привел меня в лабораторию и показал, как выглядит вычислительная машина — жужжащий шкаф величиной с комнату. Бородатый мужик в халате сел за клавиатуру, сделал примерно вот так (печатает руками в воздухе), и по экрану побежала спираль из звездочек. Через несколько лет я понял, что он сделал, но тогда это была магия. Мне показали даже компьютерную игру — в середине 1980-х, представляете? Мне все это жутко понравилось. Потом, на каникулах между 9-м и 10-м классом, папа пригласил меня помочь составить вычислительную программу — кое-что я уже умел. Именно тогда я понял, что такое реальная задача. Это было дико интересно.

Очень важно, чтобы такие задачи давали как можно раньше — учитель информатики, математики или физики. Задача может быть очень простая: «Смотрите, качается маятник. Давайте запишем уравнение его движения и запрограммируем». Это такое моделирование, когда вы знаете закон Ньютона — и все. Сначала маятник, потом программа из десяти строчек для изучения экосистемы кроликов и лис: «Раньше ты рисовал траекторию маятника в осях XY, а теперь у тебя OX — это кролики, а OY- лисы. Надо разобраться: не вымрет ли эта популяция? Может быть, лисы съедят всех кроликов?»

И это уже анализ данных.

Константин Воронцов: Да. Мы начинаем с простых задач и приходим к пониманию сути моделирования — учимся воплощать предположение о реальности в формулах и смотреть, что происходит, экспериментировать. В прошлом году в сочинском образовательном центре «Сириус» была такая история: фармацевтическая компания привезла очень интересные задачи из области биоинформатики — передний край науки, казалось бы, все сложно, но преподаватели смогли объяснить, как и что делать. И школьники анализировали нуклеотидные последовательности, искали фрагменты ДНК. Причем некоторые, когда приехали, не знали язык программирования.

Зажечь интерес может только учитель или родители. Сначала ты объясняешь ребенку, что это за вещь. Спрашиваешь: «А ты задумывался, почему эта штука работает?» Меня такой вопрос задевал за живое. Сегодня тех, кому это интересно, столько же, сколько и раньше. И в древние времена были люди, которые делали крылья и прыгали со скал. Некоторое количество идиотов есть всегда, и именно они двигают прогресс.

Домингос П. Верховный алгоритм. Как машинное обучение изменит наш мир.
Коэльо Л.П., Ричард В. Построение систем машинного обучения на языке Python.
Воронцов К.В. Курс лекций на MachineLearning.ru.
Мерков А.Б. Распознавание образов. Введение в методы статистического обучения.
Мерков А.Б. Распознавание образов. Построение и обучение вероятностных моделей.
Лагутин М.Б. Наглядная математическая статистика.
Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning.
Bishop C. Pattern Recognition and Machine Learning.

Научный фестиваль Nauka 0+

6-8 октября в Москве пройдет фестиваль Nauka 0+. На 90 площадках понятным, «человеческим» языком будут рассказывать о том, чем занимаются ученые, как научный поиск улучшает качество жизни, какие перспективы он открывает. Подробнее узнать о мероприятих Nauka 0+ можно в специальном номере журнала «Кот Шрёдингера».

Универсальный солдат big data

Константин Воронцов — доктор физико-математических наук, профессор РАН, профессор кафедры интеллектуальных систем и заведующий лабораторией машинного интеллекта МФТИ. Автор наиболее известного в России университетского курса лекций по машинному обучению. В «Яндексе» руководит разработкой платформы для распределенного хранения и обработки данных. Считает анализ данных универсальной отмычкой к секретам в любых областях науки.

О чем идет речь?

Можете простыми словами объяснить, что такое «большие данные»?

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

Типичный пример — конкурс по распознаванию картинок ImageNet, который стартовал, насколько я помню, в 2010 году. Участники получили несколько миллионов картинок с комментариями: тысячи людей описывали, что изображено на снимках, — машина запоминала соотношения меток и картинок. После этого программисты учили ее распознавать, что изображено на фотографиях, где подписей не было.

Задача построить алгоритм распознавания изображений стара как мир. Ее решали еще в середине прошлого века, но тогда количество ошибок составляло порядка 70%. Потому что речь шла о тысячах картинок. А вот миллион размеченных изображений обеспечил качественный скачок. В 2012 году уровень распознавания повысился до 12% ошибок, потом дошел до 5% — это точность на уровне человека, — а затем до 4,5 и 3,5%. Стала возможна автоматизация новых процессов: например, теперь мы можем поставить камеру, которая будет распознавать номера автомобилей, лица в толпе.

То есть изначально в течение длительного времени существовал анализ данных. А потом появился анализ больших данных…

Константин Воронцов: Математическая статистика активно развивается где-то с 20-30-х годов XX века. Компьютеров тогда не было, а статистические методы, которые мы сегодня используем, уже зарождались. В 40-х годах начались эксперименты с нейронными сетями. Однако после первых успехов ученые, а вслед за ними и общество разочаровались в попытке создания искусственного интеллекта. Таких волн было несколько. В 80-х придумали алгоритм обучения нейронных сетей. Но следующий прорыв случился только в 2012 году, когда для тренировки программ стали использовать большие выборки данных. То, что называется машинным обучением.

Получается, без машинного обучения анализ данных почти невозможен?

Константин Воронцов: Да нет, конечно, возможен. Анализ данных — понятие более широкое, чем анализ больших данных. Оно включает все классические методы статистического анализа, их никто не отменял, они по-прежнему много где используются.

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

На что вообще способна наука об анализе данных? В каких самых невероятных сферах ее можно применять?

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

То есть можно прийти в любую компанию, в какой бы стране она ни находилась, и сказать: «Я специалист по анализу данных, дайте мне работу»?

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

Но если захотите, можете им стать?

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

Что нужно уметь?

Кто он такой — специалист по анализу данных? Что должен уметь, какие задачи решать?

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

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

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

Что еще должен уметь универсальный солдат?

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

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

Когда я говорил, что специалист по анализу данных должен быть универсальным солдатом, то имел в виду эти четыре умения: говорить с людьми и понимать задачи, знать математику, программирование и «железо». Если вы все это освоите, то сможете претендовать на участие в любых проектах и ежемесячную зарплату в миллион рублей. Но таких специалистов, к сожалению, мало.

Куда пойти учиться?

Что нужно делать, чтобы стать специалистом по большим данным?

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

Можно ли приобрести эту профессию в университете?

Константин Воронцов: К сожалению, образование — вещь очень консервативная. Сейчас институты, в которых учат анализу данных, можно по пальцам одной-двух рук пересчитать: в Физтехе, в МГУ, в Высшей школе экономики, еще в нескольких вузах, может быть. Остальные не успевают за этим трендом. Не хватает преподавателей-практиков в области анализа данных.

Вузы, которые вы перечислили, расположены в Москве. Как быть тем, кто живет и учится, например, на Дальнем Востоке?

Константин Воронцов: Скорее всего, там тоже есть хорошие специалисты, которые преподают анализ данных и понимают, что можно научить студентов, например, делать курсовые на материалах конкурсов. Многие компании выкладывают в открытый доступ свои данные, чтобы научное сообщество решало их задачи и соревновалось. Это отличный материал, чтобы учить студентов. Я знаю, в Нижнем Новгороде делают что-то подобное. В Таганроге, во Владивостоке. Но университетская среда очень инертная. Люди десятилетиями читают одно и то же.

Высшее образование за трендами не успевает, а можно ли самостоятельно изучить все необходимое, чтобы стать специалистом по big data?

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

Как вы относитесь к онлайн-курсам по анализу данных? Что можете посоветовать?

Константин Воронцов: Хорошо отношусь и сам преподаю на Coursera. Онлайн-курсы необходимо изучать — много и разных. В интернете выложено огромное количество лекций по тому же машинному обучению, сотни просто. Есть конференции, статьи с которых нужно читать каждый день: NIPS — the Conference on Neural Information Processing Systems, ICML — The International Conference on Machine Learning. Здесь требуется самодисциплина: встал утром, пошел и потратил час, чтобы прочитать одну-две статьи.

Значит, освоить теорию самому можно, но как научиться применять ее на практике?

Константин Воронцов: На этот вопрос есть очень хороший ответ. Сейчас набирают популярность конкурсы анализа данных. Есть международная платформа kaggle.com, где непрерывно проводятся десятки конкурсов: коммерческие компании предлагают ученым за вознаграждение решить для них ту или иную реальную задачу. Такие соревнования полезны и для организаторов, и для участников. Если вы стали победителем или призером, вас примут на работу с большей стартовой суммой. А если вы в десяти конкурсах победили, то вы просто сверхчеловек и работодатели уже ждут вас с распростертыми объятиями. В таких конкурсах могут участвовать и студенты, и даже школьники.

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

Константин Воронцов: По-разному бывает. В тех же конкурсах участвуют как команды, так и одиночки.

Вот, например, в «Яндексе» сколько человек работает над одной задачей?

Константин Воронцов: В «Яндексе» задач сотни, а может быть, тысячи. Стандартный коллектив, который работает с конкретным сервисом и решает определенную задачу, — от 2 до 10 человек. Чаще всего четверо-пятеро. Если больше, возникают проблемы с управлением. Конечно, большими задачами, например поиском в целом, занимаются несколько сотен человек. Но эта задача все равно разбита на кучу подзадач — модульный подход используется в любых разработках. Я думаю, самолеты и мосты так же строятся.

Где найти единомышленников? Есть центры, где можно пообщаться со специалистами?

Константин Воронцов: Ну, во-первых, можно отправить письмо мне (смеется). Я готов быть вашим единомышленником. Во-вторых, есть такое сообщество Open Data Science — как раз для тех, кто ищет соратников. Их там уже тысяч пять набралось, наверное. Многие компании подбирают себе в этом сообществе сотрудников, выкладывают интересные задания. Кто-то просто задает вопросы, другие на них отвечают. Здесь же формируются группки для решения конкретных задач. В общем, это живое сообщество, открытое для всех. А к анализу данных можно приступать с первого же шага.

Где найти вдохновение?

Как понять, что тебе действительно интересны математика, программирование, работа с данными?

Константин Воронцов: Универсального ответа на этот вопрос не существует. Когда я был школьником, меня увлекла сама возможность заставить компьютер делать то, что я хочу. Отец привел меня в лабораторию и показал, как выглядит вычислительная машина — жужжащий шкаф величиной с комнату. Бородатый мужик в халате сел за клавиатуру, сделал примерно вот так (печатает руками в воздухе), и по экрану побежала спираль из звездочек. Через несколько лет я понял, что он сделал, но тогда это была магия. Мне показали даже компьютерную игру — в середине 1980-х, представляете? Мне все это жутко понравилось. Потом, на каникулах между 9-м и 10-м классом, папа пригласил меня помочь составить вычислительную программу — кое-что я уже умел. Именно тогда я понял, что такое реальная задача. Это было дико интересно.

Очень важно, чтобы такие задачи давали как можно раньше — учитель информатики, математики или физики. Задача может быть очень простая: «Смотрите, качается маятник. Давайте запишем уравнение его движения и запрограммируем». Это такое моделирование, когда вы знаете закон Ньютона — и все. Сначала маятник, потом программа из десяти строчек для изучения экосистемы кроликов и лис: «Раньше ты рисовал траекторию маятника в осях XY, а теперь у тебя OX — это кролики, а OY- лисы. Надо разобраться: не вымрет ли эта популяция? Может быть, лисы съедят всех кроликов?»

И это уже анализ данных.

Константин Воронцов: Да. Мы начинаем с простых задач и приходим к пониманию сути моделирования — учимся воплощать предположение о реальности в формулах и смотреть, что происходит, экспериментировать. В прошлом году в сочинском образовательном центре «Сириус» была такая история: фармацевтическая компания привезла очень интересные задачи из области биоинформатики — передний край науки, казалось бы, все сложно, но преподаватели смогли объяснить, как и что делать. И школьники анализировали нуклеотидные последовательности, искали фрагменты ДНК. Причем некоторые, когда приехали, не знали язык программирования.

Зажечь интерес может только учитель или родители. Сначала ты объясняешь ребенку, что это за вещь. Спрашиваешь: «А ты задумывался, почему эта штука работает?» Меня такой вопрос задевал за живое. Сегодня тех, кому это интересно, столько же, сколько и раньше. И в древние времена были люди, которые делали крылья и прыгали со скал. Некоторое количество идиотов есть всегда, и именно они двигают прогресс.

Домингос П. Верховный алгоритм. Как машинное обучение изменит наш мир.
Коэльо Л.П., Ричард В. Построение систем машинного обучения на языке Python.
Воронцов К.В. Курс лекций на MachineLearning.ru.
Мерков А.Б. Распознавание образов. Введение в методы статистического обучения.
Мерков А.Б. Распознавание образов. Построение и обучение вероятностных моделей.
Лагутин М.Б. Наглядная математическая статистика.
Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning.
Bishop C. Pattern Recognition and Machine Learning.

Научный фестиваль Nauka 0+

6-8 октября в Москве пройдет фестиваль Nauka 0+. На 90 площадках понятным, «человеческим» языком будут рассказывать о том, чем занимаются ученые, как научный поиск улучшает качество жизни, какие перспективы он открывает. Подробнее узнать о мероприятих Nauka 0+ можно в специальном номере журнала «Кот Шрёдингера».

Добавить комментарий