Участник:Vokov/Интервью для Кота Шрёдингера 2017-10-04

Материал из MachineLearning.

Перейти к: навигация, поиск

Источник: Универсальный солдат big data: Как освоить самую популярную профессию

Журнал «Кот Шрёдингера» (Вероника Рочева), 4 октября 2017


Полная версия интервью

Что объединяет такие вещи, как полёт беспилотника, предсказание погоды, создание новых лекарств, работу интернет-поиска в вашем телефоне? То, что эти, да и многие другие технологии основаны на обработке больших объёмов разнообразных данных. Большие данные — от англ. big data — это новая вездесущая технология. Если убрать её из нашей жизни, то мы останемся без всемирной сети, связи, современной медицины, новостей и уж, тем более, без научных открытий. О том, что такое большие данные, и как самому научиться управлять технической магией будущего, рассказал Костантин Воронцов, один ведущих специалистов в области анализа данных.


[Кот Шрёдингера] Можете, пожалуйста, на пальцах объяснить, что такое «большие данные»?

[Константин Воронцов] Буквально этот термин означает большой объём данных, хранящихся в памяти компьютера или многих компьютеров. Чёткой границы, где кончаются малые данные и начинаются большие, не существует. Обычно речь идёт о терабайтах данных (один терабайт равен 1024 гигабайтам и представляет собой единицу с 12 нулями, прим. КШ). У этого термина есть и скрытый подтекст — он напоминает такие выражения, как «большая нефть», «большая вода», «большие деньги». Но, главное, он знаменует собой скачок в развитии компьютерных технологий, важный переход количества в качество. Задачи, которые раньше решались плохо или не решались вообще, сегодня решаются намного лучше благодаря анализу гигантских объёмов данных. Типичный пример — конкурс по распознаванию изображений ImageNet, который стартовал в 2010 году. Сейчас это 14 миллионов изображений, на которых люди выделили объекты и пометили их 20 тысячами категорий. Задача состоит в том, чтобы научить компьютерную программу распознавать объекты на изображениях не хуже людей. Задача стара, как мир. Её решали ещё в середине прошлого века, но точность распознавания оставляла желать лучшего. На момент начала конкурса ImageNet доля ошибок составляла около 30%. В 2012 году качество распознавания рвануло до 15% ошибок, когда Джеффри Хинтон применил к этой задаче глубокие нейронные сети. С тех пор только нейросетевые алгоритмы лидировали в конкурсе. В какой-то момент качество распознавания достигло человеческого уровня — около 5%, а потом и превзошло его, дойдя до отметки 3% ошибок. Это означает, что компьютерное зрение теперь способно заменять людей и автоматизировать многие процессы, которые раньше требовали человеческого труда и внимания. Например, теперь можно поставить камеру, которая будет распознавать предметы на конвейере, номера автомобилей, лица в толпе.

[КШ] То есть сначала долгое время существовал обычный анализ данных. А потом появился анализ больших данных…

[КВ] Методы статистического анализа данных развивались и в XIX веке, и в начале XX-го, когда компьютеров ещё не было. В 40-х начались первые эксперименты с электронными вычислительными машинами, и тогда же появились первые нейронные сети. После первых успехов и создания персептрона Фрэнком Розенблаттом наступил период разочарований в искусственном интеллекте, когда казалось, что возникшие проблемы непреодолимы. Но технологии развивались, вычислительные устройства становились быстрее, математики изобретали новые алгоритмы. В 80-е годы придумали очень эффективный алгоритм обучения искусственных нейронных сетей — метод «обратного распространения ошибок». Следующий прорыв случился примерно пять-семь лет назад, когда для обучения стали использовать большие данные и недорогие, но мощные вычислители на основе графических процессоров.

[КШ] Получается, что анализ больших данных — это обязательно нейронные сети?

[КВ] Нет, ни в коем случае! О том и другом стали много говорить в прессе, их часто упоминают вместе, но знака равенства тут поставить нельзя. Давайте разберёмся! Анализ данных — это наиболее широкое понятие. Оно включает в себя классические методы статистического анализа данных — их никто не отменял, их по-прежнему много используют.

[КШ] Например?

[КВ] Например, вы хотите доказать, что применение нового способа лечения даёт эффект. Вы измеряете этот эффект до лечения и после, либо сравниваете две выборки людей — которых лечили, и которых не лечили. И строите математическую процедуру, которая позволяет вам принять или отвергнуть гипотезу, что между ними нет никаких различий. Это называется проверкой статистических гипотез. Очень полезная вещь. Машинное обучение — это более сложный вид анализа. Вам дана выборка — конечное число примеров, пар «объект—ответ». Требуется понять, как ответ зависит от объекта, и научиться прогнозировать ответы на новых объектах. Например, ставить диагноз по истории болезни, или предсказывать залегание полезного ископаемого по геологическим данным местности, или распознавать объект на фотографии, или рекомендовать товар пользователю Интернет-магазина. Говоря языком школьной математики, машинное обучение — это проведение функции через заданные точки. Сложность в том, что абсцисса точки — не число, а весьма сложный объект: история болезни, геологическая карта, фотография… Нейронные сети — это лишь один из методов машинного обучения. Он отличается тем, что моделирует устройство коры головного мозга. Нейронная сеть состоит из огромного числа связанных друг с другом нейронов. Каждый нейрон делает очень простое предсказание, «да» или «нет», но уже способен обучаться по данным. Делает он это плохо, он слишком примитивен. Но когда много нейронов соединяются вместе, они способны решать очень сложные задачи. Естественная нейронная сеть человека состоит из 80 миллиардов нейронов, и каждый нейрон соединён с тысячами других.

[КШ] Кто это такой — человек, занимающийся анализом данных? Что он должен уметь, какие задачи решать?

[КВ] Хороший специалист по анализу данных должен быть «универсальным солдатом». Во-первых, он должен уметь увидеть и понять задачу, которую ставит перед ним специалист другой профессии — медик, геолог, социолог, металлург — не важно. Сейчас в любой профессиональной области есть задачи анализа данных — просто потому, что компьютерный сбор данных ведётся повсеместно. Во-вторых, ему надо знать математику. В основе анализа данных лежат математические дисциплины: теория вероятностей, методы оптимизации, дискретный анализ, линейная алгебра. То есть, всё то, что проходят на первых курсах в технических вузах. Если вы умеете только программировать на Python, то вы сможете решать задачи анализа данных, но без математики вы не будете понимать, что там происходит «под капотом».

[КШ] То есть, чтобы быть хорошим специалистом в анализе данных нужно знать всё перечисленное на институтском уровне?

[КВ] И да, и нет. Технологии машинного обучения в последние годы стали более «крупноблочными». Для решения практических задач часто хватает весьма общих представлений о том, что делают отдельные блоки, и как их можно стыковать друг с другом. Это чисто инженерные навыки. Можно не знать, что происходит с данными внутри каждого блока, как они там преобразуются. Но рано или поздно вам попадётся нестандартная задача, которая потребует создание нового «блока». Тогда без математики уже не обойтись.

[КШ] Что ещё, кроме умения понять задачу и знания определённых разделов математики, должен уметь «универсальный солдат»?

[КВ] Само собой разумеется, он должен уметь программировать. Сейчас самым популярным языком для анализа данных является Python. В нём есть готовые библиотеки машинного обучения и много удобных средств, чтобы делать эксперименты. Очень важно уметь визуализировать данные, причём на любых стадиях анализа — исходные данные, промежуточные данные, выходные данные. Визуализация — это важнейший элемент культуры анализа данных. Только посмотрев на данные глазами, «покрутив их так и сяк» можно сделать неожиданные открытия, которые подскажут способ решения задачи. Ведь данные, как правило — это огромные таблицы сплошных чисел. Требуется смекалка и изобретательность, чтобы выявить и показать те их свойства, которые наиболее важны для поиска решения. Ещё одно умение, уже четвёртое по счёту, — это информационные технологии. Данные могут не умещаться на диске одного компьютера, они могут приходить по сети с огромной скоростью, могут требовать мгновенной обработки. Решение задач в этих условиях требует хорошего знания современного компьютерного «железа». Наконец, последнее, но не менее важное, — это коммуникативные навыки: умение работать в команде, разговаривать с заказчиком, быстро осваивать его профессиональный язык, выяснять требования конечных пользователей к автоматизации и интеллектуальным сервисам.

[КШ] А с чего начать, чтобы стать специалистом по большим данным? И когда лучше начинать? Чем определённым заниматься, чему учиться, что читать?

[КВ] Это важный и непростой вопрос. С одной стороны, анализ данных до сих пор был сферой профессиональной деятельности, требующей хорошего образования и высокой квалификации. С другой стороны, профессия становится сильно востребованной и массовой. Технологии становятся проще в использовании, понижаются «барьеры входа» в профессию. В этой ситуации нам приходится делать то, в чём раньше не было особой необходимости — заниматься популяризацией анализа данных, коллекционировать практические случаи решения задач и разбирать их в деталях шаг за шагом, обучать неподготовленных людей и специалистов смежных профессий. Так вот, специфика момента в том, что это деятельность сейчас только начинается. Уже появляются простые для освоения курсы, практикумы, проводятся семинары. Пока их мало, но в ближайшие годы будет становиться всё больше. Многие из них будут доступны для школьников. Мой рецепт — как можно раньше найти себе интересную практическую задачу по душе и начать экспериментировать с ней, используя готовые методы, например, из того же Python. Это очень увлекательная деятельность, и тут важно увлечься чем-то конкретным, что потенциально могло бы принести пользу людям.

[КШ] И как же это сделать?

[КВ] Здесь нет универсального ответа, всё очень индивидуально. Когда я был школьником, меня увлекла сама возможность заставить компьютер делать то, что я хочу. Отец привел меня в свою лабораторию в Институте стали и сплавов, и показал, как выглядит вычислительная машина — жужжащий шкаф величиной с комнату. Дело было в середине 80-х. Он попросил молчаливого бородатого программиста в белом халате «показать пацану что-нибудь интересное». Тот сел за клавиатуру, секунд 30 побегал пальцами по клавишам, и по экрану поползла великолепная спираль из звёздочек. Через пару лет я понял, что за цикл он написал на языке Basic, но тогда для меня это была магия. Мне это жутко понравилось! Видимо, тогда я и понял, что хочу заниматься математическим моделированием и программированием. Потом, на каникулах между 9 и 10 классом, папа попросил меня составить программу для расчёта деформаций в экспериментальных образцах, которые в соседней лаборатории плющили в огромном прессе. К тому времени я уже кое-что понимал в программировании. Именно тогда я и пощупал, что такое реальная задача. Это было дико интересно. Пресс был реальным, и люди, которые хотели лучше понимать процессы ковки и штамповки, тоже были очень реальными. Важно, чтобы вам показали такие задачи как можно раньше. На мой взгляд, это должны делать педагоги в школах — учителя информатики, математики, физики. Есть огромное количество довольно простых задач, с помощью которых можно продемонстрировать, что такое компьютерное моделирование и вычислительный эксперимент. Например, физическая задача о траектории движения маятника или экологическая задача о равновесии популяций волков и зайцев в лесу.

[КШ] И вот это уже и есть анализ данных?

[КВ] Ну нет, не совсем. Это, скорее, имитационное моделирование — когда мы знаем уравнение процесса и все его параметры, мы можем написать программу, чтобы имитировать процесс на компьютере и посмотреть, насколько он похож на реальный. Анализ данных — это обратная задача: мы наблюдаем реальный процесс, собираем выборку данных и используем их для того, чтобы определить параметры модели. Многие задачи вполне возможно преподносить на доступном уровне, даже когда они кажутся очень серьёзными и «взрослыми». В прошлом году я участвовал в проектной смене в образовательном центре «Сириус» в Сочи. Привёз детям проект по анализу электрокардиограмм для медицинской диагностики. Пришлось многое продумать и заготовить заранее, чтобы задача была попроще. Но при этом я ставил исследовательские вопросы, ответы на которые сам не знал. И несколько маленьких открытий мои ребята сделали! В одном случае неожиданный эффект был обнаружен в результате банальной программистской ошибки. Очень интересные задачи из области биоинформатики привезла фармацевтическая компания BioCad. Казалось бы, передней край науки, всё очень сложно, но преподаватели смогли увлекательно рассказать детям, как ищут лекарства от рака, что такое ДНК, и как анализировать нуклеотидные последовательности на компьютере. Команда старшеклассников сделала великолепный проект, хотя некоторые из них даже не знали язык Python, когда приехали.

[КШ] В Школе анализа данных Яндекса школьникам дают такие задачи?

[КВ] В Яндексе огромное количество данных и сотни разнообразных задач машинного обучения. Есть на чём потренироваться! Яндекс сейчас очень активно развивает образовательные программы для школьников. Есть популярные лекции Малого ШАДа в YouTube, московская школа программистов, Яндекс.Лицей.

[КШ] В интернете популярны шутки из серии: «Учителя обещали, что математика пригодится мне в жизни, когда же?». Вот в анализе данных математика нужна. Но не очень понятно, как можно, зная элементарную математику, анализировать кардиограмму и диагностировать болезнь? Разве может пригодиться обычный студенческий матанализ?

[КВ] Эти шутки — не более чем вакханалия невежества. Когда учитель даёт столь сильные обещания, он обязан подтверждать их конкретными примерами. Примеров — тьма тьмущая, их просто надо знать и уметь рассказывать доступно. Почему учителя этого не делают — лично для меня уже 30 лет загадка. Математика — это инструмент моделирования явлений природы, физических и не только. Ни одна инженерная конструкция не обходится без математических расчётов. Всё, что нас окружает в современном мире, от рубахи, кедов и мобильника в кармане до здания, в котором мы сидим — всё рассчитано и оптимизировано на компьютере. Это вполне возможно объяснить. Что касается электрокардиографии, там есть маленькая вспомогательная задачка — определить положение R-пика как можно точнее. Для этого надо выделить фрагмент кривой вокруг точки максимума и найти параболу, на которую он похож. Задача вполне школьная, её можно решить с помощью производной, а можно и попроще. А можно объяснить, почти на пальцах, что такое метод наименьших квадратов. Но это ведь один из основных инструментов анализа данных! Тут же можно рассказать историю, как Карл Фридрих Гаусс открыл этот метод, изучая движения планет. Всё можно, если захотеть.

[КШ] А возможно ли самостоятельно всё это узнать, понять и изучать?

[КВ] Я самостоятельно всё изучал. В школе у меня было несколько десятков популярных книг про математику, механику, математическое моделирование, теорию вероятностей. Их и сегодня легко найти в Интернете. Было бы желание.

[КШ] Самостоятельно теорию изучить возможно, но как научиться применять её на практике?

[КВ] На этот вопрос есть один хороший ответ. Сейчас все более популярны конкурсы анализа данных. На платформе kaggle.com непрерывно проводятся десятки конкурсов. В каждом соревновании есть свой приз. Есть форумы, где люди делятся идеями и рассказывают, какие решения они пробуют. Это довольно открытое сообщество. Разумеется, англоязычное. Не обязательно глубоко знать теорию, чтобы поучаствовать в конкурсе. Можно сделать прямо наоборот — сначала захотеть решить конкретную задачу, затем разобраться, какими методами её решают другие. Возникнет мотивация изучить теорию и придумать свои варианты решения, отталкиваясь от уже существующих.

[КШ] Вы во многих интервью говорили, что суперважно связывать теорию и практику, и это наша одна из важнейших задач.

[КВ] Анализ данных может стать ключевым звеном, соединяющим теорию и практику, причём в самых разных областях, и именно через конкурсы анализа данных. Есть масса важных практических задач, которыми занимаются профессионалы. Им для этого нужно дорогое и сложное оборудование, организационная инфраструктура, финансовые ресурсы, десятилетиями накопленный опыт… В общем, всё очень сложно. Но информационный след всей этой деятельности остаётся в компьютере. В качестве примера можно взять… да что угодно! Добычу нефти, производство стали, железнодорожные перевозки, сеть супермаркетов. Можно изучать и улучшать любой вид человеческой деятельности с помощью анализа данных, лёжа на диване, без громоздкой инфраструктуры, имея только доступ к справочной информации и данным. Открытые данные дают возможность практически любому человеку близко познакомиться с любым видом деятельности и предложить там свои варианты решения каких-то проблем!

[КШ] Как вы относитесь к онлайн-курсам по анализу данных, ведь вы сами преподаёте на Coursera. Что вы можете посоветовать?

[КВ] Хорошо отношусь. Онлайн-курсы должны быть разными под разную аудиторию. Школьнику, студенту, специалисту другой профессии нужны разные курсы, отличающиеся по формату и подаче материала. Главный совет — ищите то, что нужно лично Вам.

[КШ] Какие вы можете посоветовать хорошие вузы, в которых можно стать специалистом по большим данным?

[КВ] К сожалению, образование — вещь очень консервативная и медленно реагирующая на вызовы времени. Университетов, в которых можно научиться современному анализу данных, не так много: Физтех, МГУ, Сколтех, НИУ ВШЭ. Возможно, есть ещё много достойных мест, но я их просто не знаю.

[КШ] Вузы, которые вы перечислили, расположены в Москве. Как быть тем, кто сейчас живёт и учится где-то за переделами Москвы и Московской области? Например, на Дальнем Востоке?

[КВ] Курсэра. Открытые конкурсы анализа данных. Статьи и видеолекции. Открытое сообщество Open Data Science. Я плохо знаю ситуацию в регионах. Интерес к профессии анализа данных сейчас огромен, она очень востребована. Поэтому хорошие образовательные программы очень скоро появятся повсюду. Это просто неизбежно.

[КШ] А как быть в курсе современной науки? И как отличить реальную data science от ерунды?

[КВ] Главный способ — регулярно читать научные статьи и отслеживать ведущие научные конференции по выбранной тематике. Надо пользоваться источниками, заслуживающими доверия. На ведущих конференциях каждая статья проходит строгий суд нескольких рецензентов.

[КШ] А ведь специалист по анализу данных работает не в одиночку? Над серьезными задачами трудятся большие команды?

[КВ] И так, и так может быть. В тех же самых конкурсах участвуют и команды, и «волки-одиночки»

[КШ] Вот, например, в Яндексе сколько человек работает над одной задачей?

[КВ] В Яндексе задач сотни, а, может быть, тысячи. Обычно коллектив, который делает определённый сервис и решает определённую задачу — от 2-х до 10 человек. Типичный случай — 4-5 человек. Если больше, это уже становится плохо управляемо. Действительно большие задачи, например, поиск в целом, делают несколько сотен человек. Но всё равно эта задача разделена на кучу подзадач. Такой модульный подход используется в любых разработках. Я думаю, что самолёты и мосты так же строятся. Никто не может удерживать в голове один большой проект. Люди договариваются между собой об интерфейсах, о взаимодействии, о модульности, о требованиях к каждой отдельной части проекта. Это инженерия.

[КШ] А вообще на что способна наука об анализе данных? В каких самых невероятных сферах ее можно применять?

[КВ] Во всех. В любых. Компьютеры и компьютерный сбор данных распространён повсеместно. Эти данные необходимо анализировать. Необходимо правильно ставить задачи, поэтому специалисты по анализу данных должны работать бок-о-бок со специалистами из прикладных областей. А сферы применения действительно могут быть самые невероятные — от продаж в магазине до космических исследований.

[КШ] То есть можно прийти в любую компанию в любой точке мира и сказать: «Я специалист по анализу данных, дайте мне работу»?

[КВ] Конечно. Да даже в сельском хозяйстве. Вы можете навесить датчик на любую корову, на любой квадратный метр сельскохозяйственных угодий и иметь на мониторе всю информацию о сельском хозяйстве в вашей области. Ну, например. Такие датчики дешёвые, их можно производить тысячами. Если вы их везде разместили, к вам пойдёт поток информации, и вы будете знаеть, сколько у вас больных коров в каждый момент времени, вы сможете зайти и понять, где они, что нужно сделать, чтобы их вылечить (смеётся) Уже начинаю фантазировать, я же не специалист в анализе сельскохозяйственных данных.

[КШ] Ну, а если захотите, то сможете стать?

[КВ] В общем, да. Именно это и привлекает меня в анализе данных. Никогда не знаешь, чем будешь заниматься через год-два. Если бы мне пять лет назад сказали, что я буду заниматься анализом текстов, я бы не поверил.

[КШ] А в каких сферах вы ещё применяли анализ данных?

[КВ] В 90-е и нулевые годы я работал на Московской бирже. Нет, акциями я не торговал. Мы сопровождали аналитические системы, системы мониторинга финансовых рынков. Потом было много экономических приложений: в банках — кредитный скоринг, в телекоммуникационных компаниях — прогнозирование оттока клиентов, в розничных сетях — прогнозирование объёмов продаж. Это всё традиционное применение анализа данных. Мне довелось ещё заниматься биомедицинскими сигналами — электрокардиографией.

[КШ] А что насчёт вашей дипломной работы в 1994 году про жидкостную хроматографию — метод разделения и анализа смесей веществ — там вы уже использовали анализ данных?

[КВ] Это одна из первых моих задач. Любопытно, что хроматография и тематическое моделирование, которым я занимаюсь сейчас, оказались очень похожи. Там и там применяются матричное разложение. Математика тем и сильна, что она применима в самых разных областях.

[КШ] Люди, которые хотят заниматься анализом данных, часто ищут единомышленников. Где лучше их найти? Есть какие-то центры, где можно пообщаться со специалистами?

[КВ] Ну, во-первых, мне можно отправить письмо (смеётся) через мою страницу на MachineLearning.ru. Я готов быть вашим единомышленником. А во-вторых, есть такое открытое сообщество Open Data Science, в которое как раз вступают люди, ищущие единомышленников. Их там уже собралось тысяч пять, наверное. Многие компании в этом сообществе ищут себе сотрудников, выкидывают какие-то интересные задачи, кто-то просто задает вопросы, кто-то на них отвечает. В общем, это живое сообщество, в которое может войти каждый. Это очень важное начинание. Там можно создавать группы для решения тех или иных задач. А к анализу данных можно приступать с первого же шага.

Другие интервью

Vokov/Интервью для InTalent.proVokov/Интервью для Кота Шрёдингера 2017-10-04Vokov/Интервью для Новой газеты 2019-02-25
Vokov/Интервью для ПостНауки 2017-09-27
Личные инструменты