Кто такой Data Scientist и как им стать. Часть 1: советы от «Яндекса»
Серия успешных сделок белорусских стартапов в области компьютерного зрения и машинного обучения подтолкнула нас к запуску цикла материалов о том, как стать специалистом в этих областях. Сегодня сотрудники минского подразделения «Яндекс» расскажут, чем у них занимаются 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:
Магистратура «Алгоритмы и Системы обработки больших объёмов информации» ФПМИ БГУ. В программе читают курсы по информационному поиску и смежным дисциплинам.
Школа анализа данных «Яндекса». Курсы в ШАД читают одни из лучших специалистов в своих областях, многие из них работают в «Яндексе». С некоторыми курсами можно ознакомиться в открытом доступе.
Если говорить в целом про 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 или специализированном.
Будущее нейросетей
Нейросети — это мощный инструмент, но у него есть свои ограничения. Он нужен и полезен далеко не во всех задачах. Машинное обучение тоже важно и полезно, но есть много других не менее важных инструментов. Само по себе машинное обучение — это всего лишь один из методов решения задач. Причем не всегда самый подходящий. Например, интерпретация результатов применения нейронных сетей до сих пор вызывает большие трудности. Сами технологии становятся все доступнее широкому кругу людей, специалистов также становится больше. Со временем всё, что связано с машинном обучении, будет вызывать всё меньший ажиотаж.
Где изучать Scala тем, кто уже что-то знает. Собрали множество курсов и платформ (июнь, 2023)
Язык программирования Scala — один из самых популярных коммерческих языков, который используют Twitter, LinkedIn, WhatsApp. Scala-разработчики, возможно, не так востребованы как их коллеги, пишущие на Python или Java, но хороший специалист будет цениться высоко, а знание языка станет безусловным плюсом в резюме. В помощь тем, кто хочет пополнить ряды адептов Scala, Digitaldefynd составил (а мы дополнили) подборку онлайн-курсов и тренингов разных уровней сложности.
10 способов научиться программировать самостоятельно
Хотите научиться кодить и освоить алгоритмы? Собрали десять советов с чего начать изучение программирования для тех, кто только начинает своё путешествие в мир программирования и снабдили все это полезными ссылками на курсы для начинающих программистов.
TinyML, No-code и обучение с подкреплением: новейшие тренды в машинном обучении
Пока 20% топ-менеджеров утверждают, что машинное обучение является существенной частью их бизнеса, неудивительно, что стоимость мирового рынка машинного обучения, по некоторым оценкам, достигнет $117 млрд к концу 2027 года.
Мы перевели материал Udacity о семи самых обсуждаемых тенденциях в машинном обучении в 2022 году.
Хотите сообщить важную новость? Пишите в Telegram-бот
Главные события и полезные ссылки в нашем Telegram-канале
Обсуждение
Комментируйте без ограничений
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.