Константин Воронцов - доктор физико-математических наук, профессор РАН, профессор кафедры интеллектуальных систем и заведующий лабораторией машинного интеллекта МФТИ. Автор наиболее известного в России университетского курса лекций по машинному обучению. В "Яндексе" руководит разработкой платформы для распределенного хранения и обработки данных. Считает анализ данных универсальной отмычкой к секретам в любых областях науки.
О чем идет речь?
Можете простыми словами объяснить, что такое "большие данные"?
Константин Воронцов: Этот термин означает, что современные компьютеры могут хранить и обрабатывать беспрецедентно большие - пока речь идет о терабайтах - объемы информации. Благодаря этому задачи, которые раньше решались плохо, сегодня решаются очень хорошо.
Типичный пример - конкурс по распознаванию картинок 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, где непрерывно проводятся десятки конкурсов: коммерческие компании предлагают ученым за вознаграждение решить для них ту или иную реальную задачу. Такие соревнования полезны и для организаторов, и для участников. Если вы стали победителем или призером, вас примут на работу с большей стартовой суммой. А если вы в десяти конкурсах победили, то вы просто сверхчеловек и работодатели уже ждут вас с распростертыми объятиями. В таких конкурсах могут участвовать и студенты, и даже школьники.
Но ведь специалист по анализу данных работает не в одиночку? Над серьезными задачами трудятся большие команды?
Константин Воронцов: По-разному бывает. В тех же конкурсах участвуют как команды, так и одиночки.
Вот, например, в "Яндексе" сколько человек работает над одной задачей?
Константин Воронцов: В "Яндексе" задач сотни, а может быть, тысячи. Стандартный коллектив, который работает с конкретным сервисом и решает определенную задачу, - от 2 до 10 человек. Чаще всего четверо-пятеро. Если больше, возникают проблемы с управлением. Конечно, большими задачами, например поиском в целом, занимаются несколько сотен человек. Но эта задача все равно разбита на кучу подзадач - модульный подход используется в любых разработках. Я думаю, самолеты и мосты так же строятся.
Где найти единомышленников? Есть центры, где можно пообщаться со специалистами?
Константин Воронцов: Ну, во-первых, можно отправить письмо мне (смеется). Я готов быть вашим единомышленником. Во-вторых, есть такое сообщество Open Data Science - как раз для тех, кто ищет соратников. Их там уже тысяч пять набралось, наверное. Многие компании подбирают себе в этом сообществе сотрудников, выкладывают интересные задания. Кто-то просто задает вопросы, другие на них отвечают. Здесь же формируются группки для решения конкретных задач. В общем, это живое сообщество, открытое для всех. А к анализу данных можно приступать с первого же шага.
Где найти вдохновение?
Как понять, что тебе действительно интересны математика, программирование, работа с данными?
Константин Воронцов: Универсального ответа на этот вопрос не существует. Когда я был школьником, меня увлекла сама возможность заставить компьютер делать то, что я хочу. Отец привел меня в лабораторию и показал, как выглядит вычислительная машина - жужжащий шкаф величиной с комнату. Бородатый мужик в халате сел за клавиатуру, сделал примерно вот так (печатает руками в воздухе), и по экрану побежала спираль из звездочек. Через несколько лет я понял, что он сделал, но тогда это была магия. Мне показали даже компьютерную игру - в середине 1980-х, представляете? Мне все это жутко понравилось. Потом, на каникулах между 9-м и 10-м классом, папа пригласил меня помочь составить вычислительную программу - кое-что я уже умел. Именно тогда я понял, что такое реальная задача. Это было дико интересно.
Очень важно, чтобы такие задачи давали как можно раньше - учитель информатики, математики или физики. Задача может быть очень простая: "Смотрите, качается маятник. Давайте запишем уравнение его движения и запрограммируем". Это такое моделирование, когда вы знаете закон Ньютона - и все. Сначала маятник, потом программа из десяти строчек для изучения экосистемы кроликов и лис: "Раньше ты рисовал траекторию маятника в осях XY, а теперь у тебя OX - это кролики, а OY- лисы. Надо разобраться: не вымрет ли эта популяция? Может быть, лисы съедят всех кроликов?"
И это уже анализ данных.
Константин Воронцов: Да. Мы начинаем с простых задач и приходим к пониманию сути моделирования - учимся воплощать предположение о реальности в формулах и смотреть, что происходит, экспериментировать. В прошлом году в сочинском образовательном центре "Сириус" была такая история: фармацевтическая компания привезла очень интересные задачи из области биоинформатики - передний край науки, казалось бы, все сложно, но преподаватели смогли объяснить, как и что делать. И школьники анализировали нуклеотидные последовательности, искали фрагменты ДНК. Причем некоторые, когда приехали, не знали язык программирования.
Зажечь интерес может только учитель или родители. Сначала ты объясняешь ребенку, что это за вещь. Спрашиваешь: "А ты задумывался, почему эта штука работает?" Меня такой вопрос задевал за живое. Сегодня тех, кому это интересно, столько же, сколько и раньше. И в древние времена были люди, которые делали крылья и прыгали со скал. Некоторое количество идиотов есть всегда, и именно они двигают прогресс.
Домингос П. Верховный алгоритм. Как машинное обучение изменит наш мир.
Коэльо Л.П., Ричард В. Построение систем машинного обучения на языке Python.
Воронцов К.В. Курс лекций на MachineLearning.ru.
Мерков А.Б. Распознавание образов. Введение в методы статистического обучения.
Мерков А.Б. Распознавание образов. Построение и обучение вероятностных моделей.
Лагутин М.Б. Наглядная математическая статистика.
Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning.
Bishop C. Pattern Recognition and Machine Learning.
kdnuggets.com
datasciencecentral.com
kaggle.com
DataRing.ru
Научный фестиваль Nauka 0+
6-8 октября в Москве пройдет фестиваль Nauka 0+. На 90 площадках понятным, "человеческим" языком будут рассказывать о том, чем занимаются ученые, как научный поиск улучшает качество жизни, какие перспективы он открывает. Подробнее узнать о мероприятих Nauka 0+ можно в специальном номере журнала "Кот Шрёдингера".