Кто такой Data Scientist и как им стать. Часть 1: советы от «Яндекса»
Серия успешных сделок белорусских стартапов в области компьютерного зрения и машинного обучения подтолкнула нас к запуску цикла материалов о том, как стать специалистом в этих областях. Сегодня сотрудники минского подразделения «Яндекс» расскажут, чем у них занимаются Data Scientist’ы и что учить, чтобы попасть к ним в команду. Слово — руководителю группы разработки факторов Тимофею Хаткевичу и руководителю бригады акустических моделей Алексею Колесову.
Серия успешных сделок белорусских стартапов в области компьютерного зрения и машинного обучения подтолкнула нас к запуску цикла материалов о том, как стать специалистом в этих областях. Сегодня сотрудники минского подразделения «Яндекс» расскажут, чем у них занимаются Data Scientist’ы и что учить, чтобы попасть к ним в команду. Слово — руководителю группы разработки факторов Тимофею Хаткевичу и руководителю бригады акустических моделей Алексею Колесову.
Читать далее
Перед Data Scientist’ом в «Яндексе» стоит много разных задач: от моделирования человеческой речи до подтверждения или опровержения гипотез о том, делает ли пользователя счастливее дополнительная кнопка на странице почты. Продукты «Яндекса» ежедневно используют миллионы человек, без Data Science проанализировать такой поток данных невозможно.
Одна из главных задач, которую решает минская группа разработки факторов: глядя на текст запроса пользователя, определяет, есть ли у некоторого документа общая с запросом семантика. Мы решаем эту задачу с помощью нейронных сетей и уже получили неплохие результаты, о чём сообщали в публикациях: первой и второй.
Если хочется заниматься такого рода проектами, приходите собеседоваться, в минском офисе открыта вакансия.
Проблема: 95% студентов даже не будет пытаться понятьНельзя сказать, что белорусские вузы не выпускают специалистов в области Data Science. Но их действительно меньше, чем хотелось бы. На наш взгляд, основные проблемы следующие:
- Учёные и специалисты (и вообще молодые люди) по понятным причинам неохотно идут преподавать. В итоге связь образования и производства, образования и науки слаба.
- Набор в вузы слишком велик, но далеко не все приходят туда действительно учиться. В итоге преподавателям сложно читать что-то выше среднего уровня — 95% даже не будет пытаться понять.
Самостоятельное обучение: с чего начатьПоэтому можем посоветовать практико-ориентированную магистратуру «Алгоритмы и Системы обработки больших объёмов информации», которая уже третий год работает на базе ФПМИ БГУ. Её идейный руководитель, наш коллега Алексей Толстиков делает очень сложное и очень полезное дело по созданию современной специальности. Там читают сложные, современные курсы про алгоритмы обработки больших данных, информационный поиск, unix-системы, machine learning и другое. Занятия ведут ребята, которые используют свои знания в работе, так что иногда программа опережает университетскую на десятилетия. Кроме того, Алексей курирует минский филиал Школы анализа данных Яндекса.
Существует целая научная область, которая занимается вопросами применения Computer Science, Data Science и Machine Learning в задачах информационного поиска. Она так и называется — Information Retrieval. Классическая книга про информационный поиск, с которой можно начать знакомство, — «An Introduction to Information Retrieval». Эта книга была переведена на русский язык при поддержке «Яндекса». В книге в основном рассказывается о поиске текстовой информации, о том, как функционируют системы веб-поиска и их элементы. Другая хорошая книга про веб-поиск — от Stefan Buttcher из Google.
В задачах инфопоиска используются методы обработки текстов (natural language processing), машинное обучение (machine learning), статистический анализ данных, а также алгоритмы, эффективно работающие на больших объёмах данных, и распределённые системы. В зависимости от задач, которыми вы хотите заниматься, нужно глубже погрузиться в изучение некоторых из этих дисциплин. Если речь идёт не о поиске текстовой информации, а о видео или изображениях, то полезно познакомиться с дисциплинами про обработку изображений.
Сейчас в Минске есть две возможности получить образование в Information Retrieval:
- Магистратура «Алгоритмы и Системы обработки больших объёмов информации» ФПМИ БГУ. В программе читают курсы по информационному поиску и смежным дисциплинам.
- Школа анализа данных «Яндекса». Курсы в ШАД читают одни из лучших специалистов в своих областях, многие из них работают в «Яндексе». С некоторыми курсами можно ознакомиться в открытом доступе.
Если хочется узнать о последних достижениях в области информационного поиска, то советуем следить за публикациями на тематических конференциях. Основные: SIGIR, WSDM, CIKM, WWW, KDD. Также есть летние школы, посещение которых может быть полезно как студентам и аспирантам, так и начинающим специалистам: European Summer School in Information Retrieval и Russian Summer School in Information Retrieval.
Математическая статистика. Можно ли без неё?Если говорить в целом про Data Science/Machine Learning, то для серьёзного понимания и работы нужен фундаментальный курс теории вероятности (а значит, и математического анализа как необходимого инструмента в теории вероятности), линейной алгебры и, конечно, математической статистики. Фундаментальные математические знания важны для того, чтобы уметь анализировать результаты применения алгоритмов обработки данных. Есть примеры сравнительно сильных инженеров в machine learning без такого бекграунда, но это, скорее, исключение.
Если университетское образование оставило много пробелов, рекомендуем книгу «The Elements of Statistical Learning» от Hastie, Tibshirani и Friedman. В этой книге классические разделы машинного обучения изложены с точки зрения математической статистики со строгими математическими выкладками. Несмотря на обилие математических формулировок и доказательств, все методы сопровождаются практическими примерами и упражнениями.
Лучшая книга на данный момент, чтобы разобраться в математических принципах, лежащих в основе нейронных сетей — «Deep Learning» от Ian Goodfellow. В ней во введении есть целый раздел про всю математику, которая нужна для хорошего понимания нейронных сетей. Еще очень хорош сайт-книга от Michael Nielsen — это может и не фундаментальный труд, но для понимания основных принципов очень пригодится.
Языки программирования и фреймворки: от ipython до pandasДля аналитики и экспериментов с ML-моделями хорошим выбором будет ipython и python-библиотеки scikit-learn, scipy, matplotlib, numpy, pandas. Если хочется развернуть поисковую систему на каком-то наборе данных, то можно воспользоваться достаточно мощными open-source движками elasticsearch или apache solr.
Касательно алгоритмов машинного обучения, для задач ранжирования результатов поиска хорошо работают алгоритмы градиентного бустинга на деревьях. Одна из наиболее популярных реализаций на данный момент — xgboost. Яндекс недавно выложил в opensource свою версию алгоритма — CatBoost, которая в большинстве задач не уступает конкурентам.
Нейросетевые технологии в поискеГруппа разработки факторов в «Яндексе» занимается задачами веб-поиска, т. е. по текстовому запросу пользователя мы должны найти интернет-страницу, содержащую релевантную информацию (как правило, тоже текстовую). Соответственно, интересны те архитектуры нейронных сетей, которые позволяют хорошо описывать закономерности в текстовых данных. В основном это рекуррентные нейронные сети, использующиеся для sequence-to-sequence learning, word2vec и архитектуры наподобие DSSM.
Вот очень хороший обзор нейросетевых технологий в задачах информационного поиска. В обзоре есть ссылки на большинство последних достижений в предметной области. Также можно ознакомиться с презентацией коллег из Microsoft Research c конференции WSDM'17.
Создайте сеть, которая отличает ваш голос от лая собакКаждая нейронная сеть решает свою очень узкую задачу. Сеть, которая различает котиков и собак, отличается не только от сети, которая распознаёт речь, но даже от сети, которая различает котиков и кроликов. А значит, для каждой сети данные нужно брать из разных источников. Хотите обучить сеть, которая отличает ваш голос от лая вашей собаки, — запишите в домашних условиях по 10 часов того и другого — обучите сеть.
Захотели сеть, которая понимает, какой фильм вы имеете в виду, когда не можете вспомнить название — сохраните на компьютере петабайт пользовательских запросов и правильных ответов — обучите сеть. Ну, а чтобы научиться работать с нейронными сетями (и другими алгоритмами machine learning), можно взять данные, которые есть в открытом доступе, например, на соревновательном сайте Kaggle или специализированном.
Будущее нейросетейНейросети — это мощный инструмент, но у него есть свои ограничения. Он нужен и полезен далеко не во всех задачах. Машинное обучение тоже важно и полезно, но есть много других не менее важных инструментов. Само по себе машинное обучение — это всего лишь один из методов решения задач. Причем не всегда самый подходящий. Например, интерпретация результатов применения нейронных сетей до сих пор вызывает большие трудности. Сами технологии становятся все доступнее широкому кругу людей, специалистов также становится больше. Со временем всё, что связано с машинном обучении, будет вызывать всё меньший ажиотаж.
Читать на dev.by