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

Простой анализ может показать, что твиттер президента Трампа ведут президент и его помощник, причем Трамп ответственен за наиболее сердитые твиты. Методы машинного обучения позволяют делать более сложные выводы. Система получает миллионы записей или объектов, обнаруживает в данных закономерности и использует их, чтобы предсказывать свойства новых данных. Если упрощать, системы машинного обучения учатся на данных, словно ребенок, который пытается отличить кошку от собаки, делая все новые попытки, пока не поймет, чем они отличаются, и не станет их узнавать в любом виде. Вот только в случае c machine learning примеров — миллиарды, а скорость такого обучения значительно быстрее, чем человек может себе представить.

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

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

С учителем и без: каким бывает машинное обучение

Адам Гейтгей в популярной серии постов о машинном обучении приводит хороший пример. Предположим, вы риелтор, продающий дома. За время работы у вас выработалось чутье, которое подсказывает, сколько стоит тот или иной дом, но передать это чутье новым сотрудникам не выйдет. Однако у вас есть статистика, показывающая, какие дома за сколько были проданы в прошлом. Входные характеристики дома — количество спален, район, площадь — и итоговая цена хорошо известны. Вы загружаете эти данные в алгоритм — и он вычисляет вес каждой характеристики дома на основании массива продаж. После этого машина делает предположение о стоимости нового, отсутствующего в базе дома. Это называют обучением с учителем (supervised machine learning): вы сами уже знаете соотношение, влияющее на цену, и позволяете компьютеру его рассчитать. У вас есть X и Y, а компьютер лишь находит связывающую их закономерность.

Другой тип машинного обучения — обучение без учителя (unsupervised machine learning). В этом случае у вас есть данные о домах, но о том, как они соотносятся с ценой, вы и не подозреваете. Однако анализ информации может обнаружить интересные закономерности в ценах по районам, по времени продаж и так далее. Такой тип машинного обучения, например, помогает найти сегменты пользователей в «свалке» из статистических данных, обнаружить похожих людей в соцсетях на основе их поведения или, наоборот, отметить аномалии в больших массивах, которые раньше не были очевидны. Алгоритм может вычленить похожие участки генов, определить поломку на основе необычного сочетания параметров машины или самолета или отлично сгруппировать рисунки, содержание которых ему при этом неизвестно.

Глубокое обучение (deep learning) включает работу с нейронными сетями. Нейронная сеть вступает в дело, когда входных параметров очень много, их взаимосвязь и расчет слишком сложны. В этом случае расчеты распараллеливаются между простыми процессорами, которые связаны между собой, — этот процесс проектировщики старались делать похожим на передачу данных между нейронами человека. Хороший пример использования нейронных сетей — распознавание лиц на разных фотографиях, поиск фотографий по слову или, как в этой работе стэнфордских исследователей, составление словесных описаний фото. Да, компьютеры вполне могут описать ваши снимки.

© tampatra / iStock

© tampatra / iStock

От НАСА до лесов Амазонии: где применяется machine learning (и нужно ли оно вам)

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

Движки рекомендаций используют и музыкальные сервисы — например, Spotify. С помощью machine learning можно определить жанр песни (анализируя уровни сигнала), на основе предыдущих лайков пользователя предложить ему песню, которая с высокой вероятностью его заинтересует, или на базе проигранного создать список похожих треков. Рекомендационные системы и изменение ленты на основе алгоритмов машинного обучения используются в Mail.ru, Facebook, Twitter, VKontakte, Instagram. Нельзя не упомянуть бизнесы, связанные с интернет-торговлей: так, до 35% выручки Amazon — заслуга рекомендательного сервиса (не говоря уж о том, что компания сама — поставщик сервисов и серверов для машинного обучения).

Голосовые помощники онлайн-сервисов и операционных систем — еще одна область применения machine learning. «Алиса» от «Яндекса», «Сири» от компании Apple, «Кортана» от Microsoft, яндексовская умная колонка и механизмы зарубежных умных домов — все они занимаются распознаванием речи и пытаются понять, что имел в виду пользователь. По мере прогресса «обучения» алгоритмов улучшается и их понимание семантики языка.

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

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

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

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

Стоит упомянуть и такую активно развивающуюся и богатую индустрию, как компьютерные игры. Машинное обучение и искусственный интеллект активно вторгаются в область разработки игр, и эксперты предрекают еще большее проникновение предиктивных алгоритмов в ближайшем будущем. Машинное обучение помогает в автоматической анимации фигурок и объектов и анимации лиц, улучшает искусственный интеллект противников, частично используется в генерации уровней и помогает адаптировать мобильные игры под нужды пользователя. И это не говоря о другой стороне процесса — маркетинговых исследованиях free-to-play игр и улучшения их механик за счет анализа пользовательского поведения, предсказаний оттока игроков и тестирования новых фич. Мобильных приложений с использованием нейронных сетей тоже выпущено немалое количество — от добавления смешных ушек в Snapchat до умных клавиатур, состаривания лиц и преобразования фото.

Чемпионы в использовании машинного обучения — соцсети и поисковики. Например, Twitter умеет оптимизировать превью фотографий пользователя так, чтобы показывать самый интересный и важный элемент (а не пол или стену), анализировать эмоциональную окрашенность твитов (и использовать эти данные в маркетинговых исследованиях) — а еще предсказывать по твитам эпидемии. Google задействует его в самых разных сферах: формировании поисковой выдачи, анализе маркетинговой информации, управлении облачными серверами, переводе, распознавании образов, отлавливании спама в почте и соцсетях, построении маршрутов на картах и даже определении музыки, которая играет рядом с пользователем. Но не стоит думать, что машинное обучение — специфика IT-гигантов: крупные промышленные компании — тоже владельцы гигантских баз данных. Например, свое отделение машинного обучения есть у «Газпрома». Нефтяные компании постоянно собирают данные с датчиков в скважинах, а machine learning позволяет быстрее и эффективнее решить, как изменить способ добычи в зависимости от состояния скважины.

© tampatra / iStock

© tampatra / iStock

Кандидатский минимум: без чего нельзя стать специалистом по machine learning

Базовый набор для специалиста по машинному обучению таков:

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

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

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

Знание хотя бы одного популярного языка программирования. Если вы новичок, начните с Python — это самый востребованный и удобный для ML-специалиста язык, его знания требуют работодатели, а кроме того, он прост в освоении. Но это не значит, что он единственный. Если вы квалифицированный программист, подберите инструмент под себя. Работать с машинным обучением можно на R, излюбленном аналитиками и специалистами баз данных, на Java, на Javascript, C++ , подходят Scala, SAS и т. д. Язык тут — инструмент для создания моделей, а не определяющий фактор.

Михаил Левин

директор по машинному интеллекту в «Яндекс.Маркете», преподаватель ШАД

Область машинного обучения очень перспективна, и начать карьеру в ней не так сложно, как может показаться на первый взгляд. Есть множество курсов и образовательных проектов, где вам помогут профессионалы в этой области. Например, наша Школа анализа данных (ШАД) существует уже 11 лет. При приеме мы проверяем знания математического анализа, линейной алгебры, теории вероятностей и базовых алгоритмов — все это необходимо, чтобы глубоко изучить machine learning. Другие предметы, которые будет изучать студент ШАДа, зависят от выбранного им направления: например, у тех, кто хочет стать разработчиком machine learning, в обязательной программе есть язык C++, а у тех, кто менее склонен к разработке систем и более склонен к аналитике, — Python.

Где изучать machine learning

Для выпускников и начинающих специалистов отличным опытом может стать интернатура: про программы стажировки часто не знают либо недооценивают их — а это отличная возможность получить работу и увидеть применение алгоритмов на практике. На IT-рынке сейчас огромный дефицит ML-специалистов, поэтому компании периодически проводят обучение студентов с последующим трудоустройством или берут интернов/стажеров. Например, этим занимается «Яндекс», EPAM, Сбербанк и др.

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

Школа данных «Яндекса» (ШАД)

В Академии Яндекса есть сразу несколько образовательных проектов, рассчитанных на разные аудитории. В линейку ШАД входят 5 курсов: математика и Python, supervised ML, unsupervised ML, прикладная статистика, прикладные задачи анализа данных. В конце студент делает практический проект. Курсы можно проходить по отдельности, выбрав только интересующую область. Дополнительный бонус — программа трудоустройства для закончивших обучение. Начать изучение анализа данных можно на онлайн-курсах Яндекса и МФТИ. В любое время можно посмотреть записи с лекций и мероприятий по теме.

Курс «Машинное обучение» от Эндрю Ына

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

Курсы от Google

Компания всячески популяризует машинное обучение — ведет множество курсов на разных платформах, рассказывает о новых проектах в блоге. Бесплатный Machine Learning Crash Course дает основы machine learning на реальных примерах — от диагностики рака до исследования литературы XVIII века. Другой вариант — серия курсов по работе с облачной платформой Google, которая используется для машинного обучения.

Обзорные курсы от Kaggle

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

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

DataCamp

Это сайт, целиком посвященный data science, есть на нем и курсы по машинному обучению. Плюсы DataCamp в том, что курсы 1) несложные, 2) практически ориентированные. Можно построить простую модель, которая на основе предыдущих выборов пользователя предположит, какая спортивная машина будет популярной, а какая провалится в продаже, а можно рассмотреть применение моделирования в финансах или настройку нейронных сетей. На Datacamp есть курсы как под Python, так и под R. Почти все преподаватели — активно работающие в области data science специалисты. Полный доступ к платформе стоит $27 в месяц, которого вполне может хватить для ликбеза.

Еще больше курсов

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

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

Еще больше курсов ищите в нашей подборке.