Машины вместо инженеров: почему искусственный интеллект доберется и до программистов?
На этой неделе Эндрю Ын (Andrew Ng) — звезда первой величины в мире технологий искусственного интеллекта (ИИ) — объявил, что покидает Baidu, «китайский Google», где он отвечал за исследования. Ын знаменит и созданием группы Google Brain внутри гиганта, а также запуском сервиса массовых онлайн-курсов Сoursera, где его собственный курс по машинному обучению был одним из самых популярных за всю историю платформы. В своём посте об уходе Ын отметил, что потенциал ИИ огромен и не ограничивается технологическими компаниями. По мнению Ына, ИИ - это новое электричество, которое изменит все отрасли и освободит человечество от повторяющейся ментальной деятельности, приведя классический пример с управлением автомобилем.
В последнее время я все больше слышу разговоров про замену роботами представителей разных профессий. На недавней встрече World Government Summit в Дубае Илон Маск пообещал, что в течение 20 лет 15% сегодняшних сотрудников станут безработными. Среди них — водители, работники колл-центров, продавцы, юристы, и много кто еще. Крайне редко в списке профессий, где машины заменят человека, появляются представители ИТ-профессий. В нем практически никогда не фигурируют те, кто, собственно говоря, ответственен за этот процесс всеобщей автоматизации, — программисты, специалисты по машинному обучению и искусственному интеллекту, data scientist’ы. Они выглядят, скорее, как элита технологического мира. Однако, на мой взгляд, есть все основания считать, что некоторых перечисленных специалистов «роботы» на самом деле заменят одними из первых. И вот почему.
Искусственный интеллект и в частности машинное обучение (по сути способ решения задач, когда вместо написания программистом программы для решения этой задачи, специальная компьютерная программа, часто называемая моделью, «выучивает» необходимое поведение на основе множества предъявляемых ей данных с образцами правильных и неправильных решений) переживают крайне сильный рост (если не сказать «хайп») в последние годы. Множество компаний создают у себя отделы с data scientist’ами и работают над внедрением ИИ в свой бизнес.
Спрос на таких специалистов высок и плохо удовлетворён. «За последний год, топовые эксперты в сфере deep learning (один из методов машинного обучения, глубокое обучение — Forbes) обходились во столько же, сколько и самые высокооплачиваемые защитники NFL. «Расходы на талантливых специалистов достаточно значимые», — сказал в 2014 году Питер Ли (Peter Lee), глава Microsoft Research. И с тех пор ситуация становится всё острее. По оценке в 2015 году MIT Sloan Management Review, 40% компаний сталкиваются с проблемой нахождения и удержания талантов в области data science. По подсчетам компании CrowdFlower, 83% опрошенных в 2016 году data scientist’ов считают, что сегодня существует нехватка подобных специалистов. Эндрю Ын в недавней колонке о возможностях ИИ назвал два ограниченных ресурса для развития подобных технологий — данные и таланты. «Появилось так много возможностей, но есть так мало людей, способных использовать их», — написал Ын. В России есть эти же проблемы: компании борются за специалистов, пытаясь привлечь их всевозможными способами — завлекая красивыми офисами или опционами, переманивая друг у друга, организуя хакатоны, конкурсы и различные тематические мероприятия. Возникает множество учебных программ, всё больше молодых специалистов переквалифицируются и переходят в область технологий ИИ, а организации отправляют своих сотрудников на обучение.
При этом для многих типовых задач в сфере машинного обучения и ИИ уже наработаны подходы к их решению. Часто компаниям доступны и готовые средства для их реализации: программные библиотеки (готовый программный код, который можно использовать в своих программах), облачные API (сервисы в интернете, предоставляющие программный интерфейс для вызова его функций из других программ) или законченные продукты. Настройка такого решения под специфику задач конкретной компании обычно заключается в том, чтобы добыть подходящие данные для обучения, подготовить их (очистить, преобразовать к нужным форматам и т.д.), выбрать одну из готовых моделей (которая может уже содержаться в программной библиотеке или приложении, реализующем методы машинного обучения, или может быть доступна в виде примера кода, который достаточно скопировать себе) и настроить ее исходя из того, что нужно компании. У большинства моделей есть влияющие на их работу параметры (они называются гиперпараметрами), которые надо правильно выбрать, чтобы получить более высокое качество решения. Именно этим и занимается большая часть сегодняшних специалистов по машинному обучению. Дальше готовая модель идет в работу, причем внедрением, как правило, занимаются уже другие специалисты, близкие к традиционной программной инженерии (и которые, кстати, не менее важны для успеха).
Например, есть совершенно типовая задача определения оттока клиентов, которая для разных бизнесов (или отдельных подразделений) принимает разные формы — определить сотрудника, который скоро уволится из компании; выявить профиль клиента, который уйдёт и перестанет пользоваться услугами компании; найти студента, который не дослушает онлайн-курс до конца и т.д. Цель: провести «скоринг», отранжировав всех кандидатов по убыванию вероятности того или иного события, и затем принять «превентивные меры» — например, предложить лучшие условия. Для решения этой задачи специалист собирает данные по имеющимся сотрудникам/клиентам/студентам, анализирует их характеристики и параметры поведения (что покупали, как обращались в техподдержку и так далее). Затем эти данные преобразуются в вид, пригодный для модели машинного обучения (например, категориальные переменные типа пола, уровня образования, языка нужно закодировать в численной форме; в других переменных может быть нужно заполнить отсутствующие значения; ещё где-то на базе имеющихся данных можно посчитать какие-то другие потенциально полезные для модели характеристики, скажем, объём сделок за квартал, и т.д.). После этого специалист выбирает модель из заранее известных классов (например, логистическую регрессию, SVM, деревья решений и т.д.) и также задаёт значения гиперпараметров для этой модели. Проводит обучение модели (запускает специальный программный код для этого), оценивает качество модели на проверочных данных (которые модель не видела во время обучения) и определяет, получилась ли модель нужного качества или процесс нужно повторить, поменяв параметры модели, добавив данных или выбрав другой класс моделей.
В таких условиях заметная часть работы специалиста по машинному обучению проходит в подготовке данных для модели (по множеству оценок, это наиболее долгая и наименее интересная часть работы, способная поглотить 80% всего времени) и в настройке (иногда — в грубой, иногда — в тонкой) её параметров.
Средства для автоматизации очистки и конвертации данных развиваются уже не первый год, на рынке есть различные решения класса ETL (Extract-Transform-Load), которые умеют брать данные из одного источника, трансформировать их указанным образом, и загружать в другой источник. Этот процесс позволяет, например, собрать данные из нескольких различных баз данных воедино, а потом, в агрегированном виде, дать специалисту по анализу данных. Фактически сегодня многие специалисты создают собственные процедуры для обработки данных под свои нужды. Это происходит чаще всего не потому что эти процедуры сложны, а потому что пока нет удобного средства для решения таких задач. Но это вопрос времени. Думаю, в скором времени появятся специализированные сервисы для обработки данных — эта область по-прежнему проблемная, а сами специалисты по анализу данных с радостью бы избавились от этой работы.
Настройка параметров модели — тоже, по сути, довольно рутинная задача, для которой человек, к тому же, плохо приспособлен. Если у модели есть 10 гиперпараметров, каждый из которых можно менять, чтобы максимизировать качество модели, то человеку сложно их удерживать в голове одновременно. Часто процесс вообще сводится к перебору всех комбинаций параметров из каких-то разумных диапазонов значений. Понятно, что человек для такой работы не нужен, это прекрасно сделает и сама машина. Это уже происходит, а в скором времени подобные задачи будут автоматизированы все больше. Например, уже есть решения для байесовской оптимизации моделей (набор алгоритмов, опирающийся на байесовский подход к теории вероятностей - Forbes), которые берут на себя перебор параметров и делают это эффективнее полного или ручного перебора. Принцип работы подобных решений таков: сервисы пробуют различные значения гиперпараметров модели и самостоятельно выясняют, какие варианты стоит попробовать в первую очередь, в каких диапазонах вероятнее всего найти наиболее подходящие значения, в каких диапазонах параметров можно ожидать ощутимого уменьшения неопределённости. Так, разработка FBLearner Flow от Facebook автоматизирует проведение множества экспериментов, необходимых при создании моделей и при выборе лучших значений гиперпараметров. Она позволяет запускать параллельно обучение множества моделей с разными параметрами, хранить все результаты и удобно работать с ними.
Отдельное интересное направление исследований в области ИИ — это Learning to Learn, поиск способов научить машины учиться самостоятельно. Уже есть примеры, когда компьютеры становятся в создании моделей даже лучше экспертов по машинному обучению. Например, в одной из свежих публикаций сотрудников Google Brain (одного из основных, наряду с Google DeepMind, отделений гиганта, активно занимающихся искусственным интеллектом и в отличие от последнего, сконцентрированного на чуть более коротких горизонтах задач) компьютер с нуля придумал структуру нейросети для распознавания изображений, которая по точности сравнима с лучшими архитектурами, созданными человеком. Этот же алгоритм придумал свою реализацию рекуррентной нейросети для работы с текстом, которая по качеству превзошла другие лучшие на тот момент решения.
И это только начало. Большинство значимых результатов по автоматизации работы data scientist’ов получено за последние полгода. Предсказать, что конкретно мы увидим через год и тем более через два, очень трудно.
Зато почти наверняка можно прогнозировать, что промышленные data scientist’ы в своей массе не будут заниматься задачами, подобными описанным выше, вручную. Для части из них, которая способна заниматься более сложными задачами, это будет отличное повышение производительности и избавление от нудной работы в пользу более интересной и творческой. Для другой части, которая ещё не способна к такой деятельности, чья текущая работа сводится к запуску готовых скриптов и изменению в них параметров (а это на самом деле часто является нишей junior data scientist’ов), это означает вытеснение из профессии. Таким людям и стоит в первую очередь озаботиться своим будущим. Возможно, их роль сведётся к интеграции созданных компьютером моделей, возможно, — они попадут в подчинённое компьютеру положение и будут размечать данные для алгоритмов машинного обучения. Но в любом случае вряд ли на своей текущей позиции они продержатся долго.
Для подобного тренда есть четкий экономический фундамент: data scientist’ы довольно дороги (по оценке компании Paysa, data scientist зарабатывает $167 000 в год, а разработчик — $139 000), их ресурс ограничен, а обучение небыстро. Чтобы обучить такого специалиста с нуля, нужно полноценное многолетнее вузовское образование с сильными математикой и программированием (а ещё хорошо бы иметь экспертизу в той предметной области, где планируется применять машинное обучение). Чтобы переобучить имеющегося программиста или математика, так или иначе потребуется хотя бы полгода на освоение новой для него области. Есть различные попытки ускорить этот процесс (с помощью как онлайн-инструментов, так и офлайн-программ), но не надо ждать от них чудес. На получение так называемого «нанодиплома» в сфере технологий ИИ от сервисов онлайн-образования (например, Udacity) уйдет шесть месяцев, в машинном обучении — 12 месяцев. Совместная программа «Яндекса» и МФТИ также рассчитана на полгода. Стартап не может отправить сотрудника на обучение на полгода и не может столько ждать, пока кандидат подкачает свои навыки. Так что далеко не каждая компания может позволить себе держать в штате одного или нескольких хороших специалистов, а задачи нужно решать, как это обычно бывает, «уже вчера». Это только ускорит проникновение автоматизации в эту область.
Data scientist’ы не будут единственными из ИТ, кого ждёт такая участь. В программировании тоже много скучных и нудных задач. Среди них — создание и поддержка простых интеграций (научить программу общаться с другой известной программой, использовать программную библиотеку или веб-сервис), проектирование интерфейсов к базам данных (стандартные экраны на просмотр, добавление и редактирование записей). Возьмем «клепание» типовых сайтов (куда, например, надо подключить поддержку авторизации через несколько источников, работу с имеющейся товарной базой данных, приём заказов и т.п.) — это уже умеют делать конструкторы сайтов, но всё равно многие программисты заняты написанием таких систем с нуля. Компьютеры «умнеют» и вскоре смогут взять на себя многие из этих задач. Тем более, что компьютерных специалистов не хватает не только в искусственном интеллекте. В США в 2015 году открытых вакансий оказалось в девять раз больше, чем выпускников по программам, связанным с программированием.
Интеграция двух компьютерных программ по-прежнему требует ощутимого вовлечения человека. Например, если вам надо встроить в вашу программу возможность перевода текста на другой язык, вам нужен программист чтобы 1) найти подходящую реализацию в виде программной библиотеки или облачного сервиса, предоставляющего API, что чаще всего сводится к поиску в Google и не позволяет эффективно сравнить несколько разных вариантов, 2) написать программный код, который будет формировать запрос по стандартам выбранного API (которое, возможно, даже уже описано в машиночитаемом формате); 3) обеспечить поддержку созданной интеграции: следить за её стабильной работой, переключаться на новые версии и т.п.
Это всё довольно затратные по времени процессы и они довольно неинтересны как задачи. Компьютеры могут взять на себя по крайней мере часть из этих задач и методы ИИ могут помочь это сделать. Тем более, что у новых компаний в этой сфере есть экономический стимул откусить кусок от этого пирога — рынок системной интеграции огромен (по оценке Forrester, — $35 млрд на программную интеграцию и почти $400 млрд на системную интеграцию), а количество инженеров в штате, занимающихся интеграциями, может достигать сотен и иногда тысяч.
Есть и другие области в ИТ, где ручной труд недостаточно эффективен, плохо масштабируется и является важной статьёй расходов. Это сетевое администрирование (автоматизация датацентров — рынок объемом в $7,5 млрд к 2019 году) , управление сетями ($11 млрд к 2019 году), тестирование ($32 млрд. в 2016 году ), системы безопасности ($120 млрд. по итогам 2017 года). В каждой из областей уже есть какое-то количество стартапов, применяющих методы ИИ. Почти наверняка их продукты будут приносить все более ощутимую пользу, измеряемую с точки зрения бизнеса и в деньгах.
Все разговоры про автоматизацию программирования в принципе не новы. Мы их слышим уже не один десяток лет, но до последнего времени все-таки они были не столь близки к реальности. Восторженных прогнозов про развитие искусственного интеллекта за всю его историю тоже было немало. Сколько звучало прогнозов от очень уважаемых людей о том, что искусственный интеллект научится за одно лето решать задачи, с которыми пока справлялся только человек, или о том, что машины смогут справиться со всеми основными человеческими задачами в течение 20 лет (прогноз 1965 года). Есть признаки «хайпа» и сейчас. Почему же кажется, что в этот раз всё будет по-другому?
Есть важная деталь, до сих пор часто ускользающая от внимания людей, находящихся чуть в стороне от современного состояния технологий ИИ, — компьютеры уже стали лучше человека в некоторых областях, которые ещё недавно считались сугубо человеческой вотчиной. Откройте любую старую (старше пяти лет) книжку по ИИ, чтобы увидеть классический пример задачи, которую отлично решает трёхлетний ребёнок, но не способен решить компьютер. Это задача отличить на фотографии кошку от собаки. Уже несколько лет это не так. В ежегодном соревновании ImageNet по распознаванию изображений нейросети отлично справляются с этой задачей, отличая не только кошку от собаки, но и различая между собой более 100 пород собак, а также сотни других классов. Более того, они делают это точнее человека.
Это тоже важный тренд. В 2011 году задокументирован первый случай распознавания изображений программой с более высоким качеством, чем человек. И это не какая-то далекая от повседневной жизни история, речь шла о распознавании дорожных знаков на фотографиях с реальных дорог. Да, человек ошибается больше компьютера. А компьютер не устаёт, его мощности легко масштабировать и так далее. С тех пор в качестве распознавания человек уступал машинам во все новых задачах — в сегментации срезов мозга, в распознавании номеров домов на снимках в Google Street View и других случаях.
Похожее происходит и в распознавании речи — области, долго топтавшейся на месте до прихода в неё глубоких нейросетей (о типах нейросетей — в материале Forbes). Сервисы перевода текстов и распознавания речи выходят на новые рубежи, теперь они способны в определённых случаях распознавать речь лучше человека или по крайней мере с сопоставимой точностью. Они научились в реальном времени переводить голосовой поток в Skype с одного языка на другой. Прогресс в области обработки текстов также значителен, нейросетевые переводчики понемногу вытесняют системы предыдущего поколения, основанные на статистическом переводе. Так, недавно Google переключил на нейросети переводы для русского языка, а нейросетевые диалоговые системы хоть ещё и далеко не идеальны, но демонстрируют интересные результаты.
Замечу, что человеческий язык сложнее языков программирования, так что в компьютерных языках результат может быть получен раньше. В работе с языками программирования также есть любопытные примеры, например, недавно нашумевший результат от Microsoft под названием DeepCoder. Он способен генерировать программы для решения задач, похожих на типичные соревновательные задачи. В реальности СМИ часто некорректно интерпретировали итоги проекта: была информация, что DeepCoder собирает программы из фрагментов кода с сайта StackOverflow (известный сайт для программистов с ответами на вопросы) и т.д., что неверно — в работе DeepCoder используется специальный искусственный язык. Результаты DeepCoder и его обсуждение в СМИ показывает общий интерес к теме. Можно ожидать, что компьютер вскоре победит программистов в их «родном» соревновании — на лучший код. Ведь в игре в го компьютер (программа AlphaGo от DeepMind) уже обошел человека.
Всего за полгода до этой победы большинство прогнозов говорили, что до такого события ещё около десяти лет. И вот эта сложная задача решена. Более того, компания DeepMind активно продолжает развивать AlphaGo. С одной стороны, система становится все лучше в игре го. В этом она становится до такой степени лучше человека, что лучшие мастера го после игры с ней задаются вопросами про смысл своих предыдущих достижений. «Я бы сказал, что ни один человек не был близок к познанию смысла игры в го», - сказал после победы AlphaGo один из китайских мастеров. «Мне не остается ничего, кроме как спросить себя: однажды, много лет спустя, когда ты обнаружишь, что твое сознание, твои восприятия и сделанный тобой выбор оказались неверными, продолжишь ли ты идти тем же путем или отвергнешь себя?» — другая яркая цитата. С другой стороны, DeepMind с успехом применяет алгоритмы в основе AlphaGo и к решению различных бизнес-задач — например, к оптимизации энергопотребления в датацентрах Google (что приносит экономию в 40% на охлаждении). И примеров способности компьютера решать человеческие задачи всё больше.
Чем ещё так хороши ИТ-работы для проникновения машинного интеллекта? Тем, что это родная среда для ИИ, в отличие от родного для нас, людей, физического мира. Виртуальная среда позволяет быстрее меняться, с ней проще интегрироваться, не надо разрабатывать сложные инженерные решения для физического взаимодействия с миром, хотя и здесь есть немалый прогресс. Идеи про замену ИТ-работников уже не маргинальны, их разделяют и весьма знаковые люди в венчурной индустрии. Совсем недавно Винод Хосла, известный американский инженер и бизнесмен, заявил на конференции, что до 80% работ в ИТ могут быть заменены автоматизацией. Стоит прислушаться.