Специалисты по большим данным — новые рок-звёзды. Они всем нужны, ими все восхищаются, они умеют делать вещи, со стороны похожие на магию, и являются носителями некого сакрального знания. При этом стать профессионалом в области data science вполне решаемая задача. Спойлер: главное — начать прямо сейчас. Подробнее — в интервью «КШ» с Константином Воронцовым, одним из ведущих российских специалистов в области анализа данных.
Константин Воронцов, доктор физико-математических наук, профессор РАН, профессор кафедры интеллектуальных систем и заведующий лабораторией машинного интеллекта МФТИ. Автор наиболее известного в России университетского курса лекций по машинному обучению. Заместитель директора по науке компании «Форексис», эксперт компании «Яндекс», сооснователь компании «Айтея».
[Кот Шрёдингера] Можете простыми словами объяснить, что такое «большие данные»?
[Константин Воронцов] Этот термин означает, что современные компьютеры могут хранить и обрабатывать беспрецедентно большие — обычно речь идёт о терабайтах — объёмы информации. Но, главное, он знаменует собой скачок в развитии компьютерных технологий, переход количества в качество. Благодаря этому задачи, которые раньше решались плохо, сегодня решаются очень хорошо.
Типичный пример — конкурс по распознаванию картинок 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, где непрерывно проводятся десятки конкурсов: коммерческие компании предлагают учёным за вознаграждение решить для них ту или иную реальную задачу.
Такие соревнования полезны и для организаторов, и для участников. Если вы стали победителем или призёром, вас примут на работу с большей стартовой суммой. А если вы в десяти конкурсах победили, то вы просто сверхчеловек и работодатели уже ждут вас с распростёртыми объятиями. В таких конкурсах могут участвовать и студенты, и даже школьники.
[КШ] Но ведь специалист по анализу данных работает не в одиночку? Над серьёзными задачами трудятся большие команды?
[КВ] По-разному бывает. В тех же конкурсах участвуют как команды, так и одиночки.
[КШ] Вот, например, в «Яндексе» сколько человек работает над одной задачей?
[КВ] В «Яндексе» задач сотни, а может быть, тысячи. Стандартный коллектив, который работает с конкретным сервисом и решает определённую задачу, — от двух до десяти человек. Чаще всего четверо-пятеро. Если больше, возникают проблемы с управлением. Конечно, большими задачами, например поиском в целом, занимаются несколько сотен человек. Но эта задача всё равно разбита на кучу подзадач — модульный подход используется в любых разработках. Я думаю, самолёты и мосты так же строят.
[КШ] Где найти единомышленников? Есть центры, где можно пообщаться со специалистами?
[КВ] Ну, во‑первых, можно отправить письмо мне (смеётся) через мою страницу на MachineLearning.ru. Я готов быть вашим единомышленником. Во-вторых, есть такое сообщество Open Data Science — как раз для тех, кто ищет соратников. Их там уже тысяч пять набралось, наверное. Многие компании подбирают себе в этом сообществе сотрудников, выкладывают интересные задания. Кто-то просто задаёт вопросы, другие на них отвечают. Здесь же формируются группки для решения конкретных задач. В общем, это живое сообщество, открытое для всех. А к анализу данных можно приступать с первого же шага.
Домингос П. Верховный алгоритм. Как машинное обучение изменит наш мир.
Коэльо Л.П., Ричард В. Построение систем машинного обучения на языке Python.
Воронцов К.В. Курс лекций на MachineLearning.ru.
Мерков А.Б. Распознавание образов. Введение в методы статистического обучения.
Мерков А.Б. Распознавание образов. Построение и обучение вероятностных моделей.
Лагутин М.Б. Наглядная математическая статистика.
Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning.
Bishop C. Pattern Recognition and Machine Learning.
[КШ] Как понять, что тебе действительно интересны математика, программирование, работа с данными?
[КВ] Универсального ответа на этот вопрос не существует. Когда я был школьником, меня увлекла сама возможность заставить компьютер делать то, что я хочу. Отец привёл меня в лабораторию и показал, как выглядит вычислительная машина — жужжащий шкаф величиной с комнату. Бородатый программист в халате сел за клавиатуру, сделал примерно вот так (печатает руками в воздухе), и по экрану побежала спираль из звёздочек. Через несколько лет я понял, что он сделал, но тогда это была магия. Мне показали даже компьютерную игру — в середине 1980-х, представляете? Мне всё это жутко понравилось. Потом, на каникулах между 9-м и 10-м классом, папа пригласил меня помочь составить вычислительную программу — кое-что я уже умел. Именно тогда я понял, что такое реальная задача. Это было дико интересно. Очень важно, чтобы такие задачи давали как можно раньше — учитель информатики, математики или физики.
Есть огромное количество довольно простых задач, с помощью которых можно продемонстрировать, что такое компьютерное моделирование и вычислительный эксперимент. Например, физическая задача о траектории движения маятника или экологическая задача о равновесии популяций волков и зайцев в лесу.
[КШ] И это уже анализ данных.
[КВ] Ну нет, не совсем. Это, скорее, имитационное моделирование: когда мы знаем уравнение процесса и все его параметры, мы можем написать программу, чтобы имитировать процесс на компьютере и посмотреть, насколько он похож на реальный. Анализ данных — это обратная задача: мы наблюдаем реальный процесс, собираем выборку данных и используем их для того, чтобы определить параметры модели.
Многие задачи вполне возможно преподносить на доступном уровне, даже когда они кажутся очень серьёзными. В прошлом году в сочинском образовательном центре «Сириус» была такая история: фармацевтическая компания привезла очень интересные задачи из области биоинформатики — передний край науки, казалось бы, всё сложно, но преподаватели смогли объяснить, как и что делать. И школьники анализировали нуклеотидные последовательности, искали фрагменты ДНК. Причём некоторые, когда приехали, не знали язык программирования.
Зажечь интерес может только учитель или родители. Сначала ты объясняешь ребёнку, что это за вещь. Спрашиваешь: «А ты задумывался, почему эта штука работает?» Меня такой вопрос задевал за живое. Сегодня тех, кому это интересно, столько же, сколько и раньше. И в древние времена были люди, которые делали крылья и прыгали со скал. Некоторое количество идиотов есть всегда, и именно они двигают прогресс.
Опубликовано в специальном выпуске журнала «Кот Шрёдингера» за октябрь 2017 г.
Подписаться на «Кота Шрёдингера»