Серия успешных сделок белорусских стартапов в области компьютерного зрения и машинного обучения подтолкнула dev.by к запуску цикла материалов о том, как стать специалистом в этих областях. В первом материале этой серии советы нынешним и будущим специалистам давала «Яндекс», во втором высказалась Wargaming, а сегодня опытом поделится специалист компании InData Labs. Слово — руководителю отдела Data Science Денису Пирштуку.
Задачи Data Scientist’ов в InData Labs
В InData Labs накопился богатый опыт в Natural Language Processing (NLP). Типичные приложения такого рода — анализ текстов в социальных сетях, социодемографические предсказания относительно их авторов, категоризация текстов и определение сентимента. NLP — одна из областей, где находят широкое применение нейронные сети, в том числе и у нас в компании. Они позволяют нам строить модели, которые «понимают» семантику текстов.
Мы используем нейронные сети в собственных исследованиях в области компьютерного зрения и некоторых других задачах, но только там, где они сейчас действительно полезны. Отдельно выделю продвинутую аналитику. Бизнес уже освоил инструменты описательной (что произошло?) и диагностической аналитики (почему это произошло?). Это так называемое прошлое Business Intelligence, в том числе на больших данных. Мы же стараемся отвечать на два дополнительных вопроса: что произойдёт и почему это произойдёт.
Типичные задачи в такой работе: скоринговые модели, анализ оттока клиентов, сегментация. Направления не новые, но с увеличением объёма и разнообразия данных открылось много возможностей для анализа клиентских баз. Есть также кейс с построением рекомендательных систем.
Объём данных в наших задачах может быть от десятка или сотни мегабайт (как, например, в вопросах кредитного скоринга) до десятков терабайт в случае анализа текстов в социальных сетях.
С чего начать: курс от OpenDataScience и Mail.ru
Начинать знакомство с миром Data Science нужно с классических методов машинного обучения. Для начала отлично подойдёт курс от сообщества OpenDataScience. Особой подготовки для него не требуется, достаточно основ математической статистики и программирования на Python. Также на Coursera есть достаточно неплохая специализация «Машинное обучение и анализ данных» от МФТИ и «Яндекса».
Мне очень нравится курс по машинному обучению от Техносферы Mail.ru и его продолжение. Курс нельзя назвать простым, но фундаментальные знания машинного обучения у Data Scientist’а быть должны. К слову, упоминаются там и нейронные сети. Как альтернативу я часто советую курс Data Mining in Action от МФТИ. В обоих случаях пользователи получат хорошую комбинацию математики, примеров и прикладных советов.
Из книг я бы отметил недавнюю Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, где красиво объединено изложение основ машинного обучения с учителем и введением в архитектуры современных нейронных сетей с обучением, подкреплением и пр. Мне книга нравится, но изложение в ней и без того сжатое, поэтому читать через строчку не рекомендую.
В Минске есть очно-заочный филиал Школы анализа данных (ШАД), которую я сам закончил в 2014 году. Там большая двухлетняя академическая программа, очень хорошие преподаватели и полезные домашние задания.
«Стараемся брать тех, кто любит математику»
С одной стороны, для начала достаточно крепких знаний из ВУЗа по теории алгоритмов, теории вероятностей, математической статистике, численным методам. Но с другой, решение сложных задач в области искусственного интеллекта порой требует очень хорошей фундаментальной математической культуры и знаний теоретических основ информатики. Чего именно — зависит от задачи. Поэтому стараемся брать к себе тех, кто любит математику и информатику так же, как мы.
Чтобы разобраться в математических принципах, лежащих в основе нейронных сетей, рекомендую свежую книгу Fundamentals of Deep Learning: Designing Next-Generation Machine Intelligence Algorithms. Мне она очень нравится: объяснение идей и математических принципов хорошо гармонирует с примерами и листингами кода на Tensorflow. При этом высокий уровень подготовки для её изучения не нужен.
Самой большой и наиболее фундаментальной книгой про математические принципы нейронных сетей является Deep Learning от трёх всемирно известных исследователей в этой области. Однако эта книга уже требует хорошей математической подготовки и не содержит листингов кода.
Фреймворки и языки программирования
Основной язык программирования — это Python, в нём сформирована целая Data Science-экосистема. Основные библиотеки: Pandas, Scikit-Learn, XGBoost/LightGBM, различные библиотеки для визуализации и манипуляций с данными. Для обработки текстов используются NLTK, SpaCy, Gensim.
Компьютерное зрение должно начинаться с библиотек scikit-image и OpenCV. Для глубокого обучения наиболее интересными являются библиотека Keras (самая простая), фреймворки TensorFlow и PyTorch. В качестве математических основ компьютерного зрения я бы обратил внимание на старую версию курса «Введение в компьютерное зрение» Антона Конушина (ВМК МГУ, ВШЭ, ШАД) или «Анализ видео и изображений» Натальи Васильевой (старшего научного сотрудника HP Labs и руководителя HP Labs Russia).
Возможно, будет интересно посмотреть «Язык Python» от Школы анализа данных. Но основные концепции программирования обычно предварительно изучают вместе с C++, как, например, в курсе от Mail.ru. Про то, что такое хороший поддерживаемый код на Python, можно прочитать в книге Effective Python от ведущего разработчика Google. Есть и перевод.
Главный инструмент современного компьютерного зрения и NLP — это нейронные сети, но не только сверточные. Они совершили настоящую революцию в области в последние 5 лет. Одним из лучших курсов в мире считается стэнфордский CS231n: Convolutional Neural Networks for Visual Recognition, видеозаписи и материалы курса доступны. На русском языке можно посмотреть новую версию спецкурса Антона Конушина «Введение в компьютерное зрение и глубокое обучение».
Про глубокое обучение в задачах обработки текстов можно посмотреть видеозаписи стэнфордского CS224d: Deep Learning for Natural Language Processing. Или почитать Yoav Goldberg A Primer on Neural Network Models for Natural Language Processing.
Подводные камни профессии и курсовые по Data Science
Типичные трудности нашей работы — это, например, недостаток наборов данных или некорректная постановка задачи. Надо учиться понимать бизнес-запросы, концепцию продукта и как «выжать» максимум из имеющихся данных или предложить менеджеру какую-то альтернативу.
Кроме того, нужно уметь придумывать, как обходиться доступным набором данных — например, за счёт fine tuning’а модели, предобученной на публичной информации. И, конечно, как только речь идёт об эксплуатации в продакшене и высоких нагрузках, очень востребованными оказываются знания о том, что такое хороший код, оптимизация, как эффективно работать с разными СУБД и обрабатывать много данных. В идеале Data Scientist должен быть хорошим инженером.
В некоторой степени наши ВУЗы уже готовят таких специалистов, в том числе с участием молодых преподавателей из ИT-отрасли. Например, Я вместе с коллегой веду в БГУ обзорный курс по анализу данных. С каждым годом все больше студентов берут в качестве курсовых, дипломных работ и магистерских диссертаций темы, связанные с Data Science. Основы машинного обучения с этого года будут читать во всех двухлетних магистратурах ФПМИ БГУ.
InData Labs также помогает углубить знания и получить необходимую практику в области Data Science. Мы успешно провели три цикла собственной Data Science-лаборатории. А недавно расширили программу и запустили совместно с Wargaming образовательный проект WG Forge, где выступаем менторами направления Data Science. Набор закончился 1 октября, и мы получили более 300 заявок. Отмечу, что и в ШАД, и к нам могут приходить не только студенты — ограничений нет.
Властелин мира и магический ящик
Перспектив и возможностей у Data Scientist'ов не много, а очень много. Один из самый известных Data Scientist’ов, профессор Стэнфорда и сооснователь Coursera Эндрю Ын, назвал ИИ «новым электричеством». А президент России недавно заявил, что ИИ — это «будущее не только России, но и всего человечества». Здесь колоссальные возможности и трудно прогнозируемые на сегодня угрозы. Но тот, кто станет лидером в этой сфере, будет «властелином мира».
Мы живем в век цифровых технологий, умных систем и вещей, а в будущем нас ждет ещё и умная одежда. Всё вокруг нас будет собирать данные, обмениваться ими, анализировать, что-то предсказывать, коммуницировать. Всё это — огромное количество потенциальной работы для Data Scientist’ов. Должен ли будет каждый программист уметь работать с нейронными сетями? — нет, не должен. Чтобы сделать сложную технологию, нужны люди с разными навыками и компетенциями. А вот знать основы машинного обучения и ИИ будет полезно, чтобы некоторые компоненты сложных систем не казались магическим ящиком.
Фото: Андрей Давыдчик
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.