Этот блог размещен в блоге Aqueduct.

Сегодня искусственный интеллект и машинное обучение стали важной частью каждого аспекта жизни. Однако 15 лет назад машинное обучение было гораздо меньшей исследовательской дисциплиной. Как область, рожденная из математики и теоретической информатики, объединила свои усилия с быстрыми инновациями в области данных и компьютерных систем, чтобы изменить современный мир? Это вопрос, который я задавал себе, когда размышлял о своей исследовательской карьере.

Привет, меня зовут Джоуи, я профессор электротехники и компьютерных наук в Калифорнийском университете в Беркли. За последние два сумасшедших года я создал крупный 5-летний исследовательский центр NSF, получил должность (ура!), родил второго ребенка (ззззз) и запустил новую компанию, чтобы изменить то, как организации делают прогнозы. Все это заставило меня задуматься: что привело к революции машинного обучения и какие важные проблемы еще предстоит решить?

Этот пост разделен на две части: первая часть (этот пост) посвящена эволюции систем данных и абстракций, которые сделали возможным широкое внедрение ML, а второй пост (будет на следующей неделе!) расскажет о том, что необходимо для полного использования преимуществ. из огромного количества полезных моделей, создаваемых сегодня.

Это не исследовательская работа, поэтому в ней содержится много еще анекдотических наблюдений и диких предположений. "Дайте мне знать, что вы думаете!"

Все говорили об ML, но им нужны были данные

Это может показаться забавным, но когда я начал свою карьеру в области машинного обучения в 2006 году, данных было гораздо меньше, и в машинном обучении преобладали априорные модели и методы регуляризации для кодирования экспертных знаний и контроля переобучения. Однако с появлением веб-приложений и облачных вычислений доступ к данным и инструменты для вычислений на основе этих данных радикально улучшились. Эти изменения повлияли как на мою карьеру, так и на область машинного обучения.

От культа Байеса к обработке данных Python

Будучи аспирантом (в моей предыдущей жизни), я присоединился к культу Байеса и глубоко погрузился в изучение вероятностных графических моделей. Графические модели позволяют составлять базовые строительные блоки вероятности для моделирования сложных явлений. Да, в мое время людям приходилось (и даже нравилось) «глубоко думать» о своих моделях и о том, какие допущения они кодировали. Сегодня наши интересные модели в основном просто глубокие.

Важно отметить, что графические модели позволили экспертам строить сложные модели, не нуждаясь в больших объемах данных. Однако, когда у нас появился доступ к большим наборам данных, мы также начали строить более сложные (и часто нестандартные) модели. параметрические) модели, требующие значительно большего объема вычислений.

Я провел большую часть своих лет в аспирантуре и в качестве постдока, разрабатывая как алгоритмы, так и системы для поддержки вычислений на этих более крупных моделях (и во многих случаях данных, которые их поддерживали). Это было интеллектуально стимулирующее путешествие, и в процессе у меня была возможность стать пионером в разработке нескольких систем обработки графов (GraphLab, PowerGraph и GraphX), которые представили абстракции и оптимизации, которые до сих пор широко используются.

Эти ранние системы обработки графов начали получать распространение за пределами традиционных графических моделей. С помощью этих систем можно эффективно выполнять простые графовые алгоритмы и более сложные матричные алгоритмы факторизации. Эти алгоритмы были центральной частью многих распространенных приложений машинного обучения (например, рекомендации и обнаружение мошенничества). Как следствие, мы начали наблюдать коммерческое внедрение нашего зарождающегося исследовательского проекта GraphLab с открытым исходным кодом.

В 2013 году я и несколько моих коллег создали компанию Turi для коммерциализации проекта GraphLab. Изначально мы сосредоточились на аналитике графов и продвинутых алгоритмах машинного обучения. Хотя наши алгоритмы машинного обучения вызвали большой ажиотаж, большинству наших пользователей действительно требовалась возможность обработки данных среднего размера. Руководствуясь этой потребностью, мы расширили наш продукт, чтобы он поддерживал широкий спектр задач машинного обучения и обработки данных. Что в конечном итоге стало ключевым преимуществом, так это возможность выполнять анализ данных Python для данных, которые не помещались в памяти, без необходимости в платформе распределенных вычислений. Затем в 2016 году мы продали Turi Apple, где технология продолжает процветать.

В моем раннем путешествии по созданию GraphLab и Turi был спрятан важный урок: мы думали, что проектирование и обучение продвинутых моделей является ключевой проблемой, с которой сталкиваются специалисты по данным, но мы обнаружили, что специалисты по данным способны создавать эти продвинутые модели только в том случае, если они может получить и подготовить нужные данные. Мы задались целью создать системы для поддержки сложных алгоритмов машинного обучения и в конечном итоге остановились на инструментах для обработки данных в Python.

Хотя GraphLab и Turi были успешными, их затмил сестринский проект, который был разработан примерно в то же время и имел схожие цели, ориентированные на машинное обучение. Однако, в отличие от GraphLab и Turi, этот дочерний проект боролся с интересными задачами машинного обучения (и до сих пор справляется), но полностью подавлял все виды скучных, но важных задач по обработке данных. Этот дочерний проект вырастет до компании стоимостью 38 миллиардов долларов и изменит мир данных. Я, конечно же, имею в виду Apache Spark и Databricks.

Системы больших данных для машинного обучения

Мне довелось наблюдать за подъемом Spark как снаружи (будучи аспирантом), так и изнутри (будучи постдоком в AMPLab Калифорнийского университета в Беркли). Будучи аспирантом, я не получил Spark. Это был исследовательский проект, направленный на распараллеливание «стыдно параллельных» частей ML, частей, которые так легко распараллелить, что вам будет неловко, если вы этого не сделаете. Как решаются до неприличия простые исследования проблем? Они добавили кеш в памяти для поддержки итеративного доступа к данным… как, очевидно, сделал бы любой здравомыслящий инженер. Почему все были так взволнованы этим?

Реальность была и остается в том, что эффективное и надежное масштабирование распределенной обработки данных — даже когда она до неприличия параллельна — является сложной задачей. Были проведены значительные исследования во всем, от планирования запросов до оптимизации сетевых потоков. В более фундаментальном плане Apache Spark был радикально проще в использовании, чем его предшественник, неуклюжий слон, известный как Hadoop, и в то же время предоставлял общую платформу для всего, от SQL-запросов до расширенной аналитики и машинного обучения.

В качестве постдока я работал над экосистемой Spark, внося свой вклад в MLlib и создавая основы GraphX. Сила этих систем заключалась не в их способности выполнять расширенное машинное обучение, а в их способности выполнять базовые задачи машинного обучения на очень больших наборах данных. Для многих этого было (и остается!) достаточно.

Сегодня Apache Spark и растущая экосистема инструментов для работы с большими данными (например, Presto, Snowflake и т. д.) стали незаменимыми опорами в большинстве реальных приложений машинного обучения. Они обрабатывают большие объемы неструктурированных и частично структурированных данных и сокращают их до основных данных, необходимых для обучения моделей и предоставления прогнозов.

Теперь, когда у нас появилась возможность генерировать чистые и надежные данные, мы, наконец, были готовы к машинному обучению! Это сосредоточило внимание сообщества на фреймворках и абстракциях для создания моделей машинного обучения.

Все пытались заниматься машинным обучением, но им нужны были правильные абстракции.

Инструменты для применения методов машинного обучения существовали десятилетиями во многих проектах на R, MATLAB и даже на Java. Однако в большинстве случаев раннее программное обеспечение и фреймворки для машинного обучения были сосредоточены на конкретных методах — решение новой проблемы означало внедрение нового инструмента и API. Однако все изменилось с появлением scikit-learn.

Хотя scikit-learn был представлен INRIA в 2007 году, только примерно в 2012–2013 годах он начал вызывать широкий интерес и широкое распространение. Именно тогда начали развиваться инструменты обработки данных.

Что scikit-learn сделал правильно, так это простой API для широкого спектра моделей с разумными значениями по умолчанию и возможностью настройки параметров алгоритма. Кроме того, модели scikit-learn могут быть составлены для построения пайплайнов в той же структуре. По сути, scikit-learn работал «из коробки» и позволял вам повышать точность ваших моделей по мере роста ваших навыков. Другие успешные проекты машинного обучения (например, XGBoost, Keras) следовали этому образцу и добились значительного успеха.

В то время как большинство реальных приложений машинного обучения по-прежнему полагаются на scikit-learn и XGBoost, фокус сообщества и шумиха вокруг машинного обучения изменились. Если вы пойдете на любую научно-исследовательскую конференцию по машинному/ИИ (превратившуюся в торговую выставку), такую ​​как NeurIPS, все, что вы услышите, — это модели глубокого обучения, созданные в TensorFlow, PyTorch и (надеюсь) Jax. Разработка и внедрение этих фреймворков происходило параллельно с ростом интереса к их более простым собратьям — ключевым моментом было сочетание доступа к данным и вычислениям с простыми абстракциями.

Глубокое обучение стало возможным благодаря данным, вычислениям и абстракциям.

Если вы живете по учебнику статистики 1990-х годов, глубокое обучение (последний бренд нейронных сетей) достигло современного уровня в широком диапазоне стандартных тестов машинного обучения. Глубокое обучение широко используется для таких задач, как распознавание речи, преобразование текста в речь, компьютерное зрение и машинный перевод.

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

Сегодня, если вы можете определить четкую задачу прогнозирования, то в несколько строк Python вы можете автоматически применить широкий спектр алгоритмов стохастической оптимизации на нескольких аппаратных ускорителях — и все это без необходимости выводить одно уравнение или писать строку параллельных вычислений. код. Такие системы, как Theano, Caffe, а затем TensorFlow и PyTorch, помогли ускорить внедрение инноваций в проектирование моделей, избавив от необходимости заниматься математикой или инженерией, которые доминировали в ранних работах в системах глубокого обучения и машинного обучения. Это позволило всем присоединиться к разработке новых методов глубокого обучения и вызвало цунами исследований в области глубокого обучения.

Короче говоря, широкий доступ к очистке данных, распределенным системам и мощным абстракциям превратил машинное обучение в революционную технологию, которой она является сегодня.

Что дальше для машинного обучения?

За последние 15 лет мы одновременно обеспечили крупномасштабную обработку данных, доступ к ускорителям вычислений по низким ценам и невероятно мощные программные абстракции для машинного обучения. Ну и что дальше?

Когда в 2015 году я готовился к выходу на рынок академических вакансий, было ясно, что огромные инвестиции в построение моделей означают, что в ближайшем будущем у нас будет широкое распространение моделей машинного обучения. Я начал спрашивать себя, какой будет следующая задача.

Если собирались решить вопрос построения моделей, было ясно, что следующей проблемой будет то, как мы используем модели, другими словами, вывод. Но сделать вывод легко… верно? В конце концов, кто будет строить модель машинного обучения, не зная, как они собираются ее использовать?

В академических кругах мы строим модели, чтобы писать статьи. Для нас вывод — это «проверка» нашей модели или нашей идеи. Вот почему обучение и тестирование являются двумя доминирующими этапами машинного обучения. Вернувшись в реальный мир, люди используют модели для решения проблем.

Надежное развертывание и управление этими обученными моделями для прогнозирования в реальных условиях создаст совершенно новые системные проблемы. Модели, развернутые для улучшения бизнес-практик и расширения взаимодействия с пользователем, будут собирать новые данные, которые можно использовать для автоматического моделирования. выбор, обнаружение дрейфа концепций, а также онлайн-обучение и персонализация — эффективно открывают новые возможности для исследований в области машинного обучения.

Чтобы сделать следующие шаги в инновациях в области машинного обучения, в первую очередь требуется способность последовательно предоставлять высококачественные прогнозы. Многие из самых больших проблем в использовании машинного обучения сегодня связаны не с тем, как мы обучаем модели, а с тем, как мы их поставляем. эти прогнозы для людей и приложений и как мы реагируем на обратную связь. Этот тезис лег в основу многих исследований, проведенных моей группой в Беркли за последние 6 лет, и компании, которую я основал вместе с коллегами из Беркли.

В следующем посте я расскажу о некоторых работах (как от моей группы, так и от других замечательных людей в системах машинного обучения), которые были проделаны для решения этих проблем. Можно с уверенностью сказать, что, несмотря на все наши усилия, предстоит еще много работы.