TL; DR: я просматриваю недавний системный документ от Google, почему это тревожный сигнал для отрасли, рецепт, который он дает для нелинейного мышления о продукте, и что он упускает.

Здесь я буду перечислять свои основные выводы из недавней статьи Тима Краски, Алекса Бейтеля, Эда Чи, Джеффри Дина и Неоклиса Полизотиса Доказательство использования изученных структур индексов, в которой модели машинного обучения используются в качестве альтернативы хорошему обучению. известные структуры данных, такие как деревья, хэш-карты и фильтры Блума. Документ приятно удивил всех в сообществе, показав, что эти подходы, основанные на моделях, предоставляют альтернативу, которая не только быстрее, но и эффективнее использует память. Я уверен, что эта работа получит либо лучшую бумажную премию, либо приглашение с программным докладом на предстоящие конференции VLDB, SIGMOD и других баз данных, поскольку она пробуждает исследователей баз данных к совершенно новым областям исследования баз данных.

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

Хотя это достоверные наблюдения, истина требует большего раскрытия, чем то, что можно сделать в Твиттере. Итак, начнем:

1. Все информационные продукты можно оптимизировать, зная статистические свойства их данных.

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

2. Все модели

Статья начинается со смелого, но простого и точного утверждения: Индексы - это модели (кстати, это индексы или индексы?). Далее они говорят: индекс - это модель, которая принимает ключ в качестве входных данных и предсказывает положение записи. Это происходит из простой, но красивой идеи о том, что позиция элемента в отсортированной последовательности пропорциональна CDF данных. Таким образом, мы можем предсказать положение элемента по индексу, изучив его CDF. Итак, индексы - это модели. Я хочу пойти дальше и заявить, что все является моделью. Даже в документе они показывают, что эта идея распространяется не только на индексы, но и на хэш-карты и фильтры Блума. Везде, где мы принимаем решение, например, используя конкретную эвристику или устанавливаем значение константы, усвоенные модели играют определенную роль. Только в ML мы видели это в других формах. Спецификация модели является эвристической. AutoML и другие попытки поиска моделей заменяют эту эвристику результатом другой модели. Вся работа по оптимизации гиперпараметров - это пример замены эвристики (константы) на результат модели.

3. Правила - это модели, а модели - это правила

Легко увлечься предположением «все является моделью». На мой взгляд, лучшая часть этой статьи состоит в том, что авторы очень осторожны и не говорят: «Вот наша крутая идея, вот наши модели и вот наши результаты». Вместо этого существует очень осторожная диалектика взаимодействия аппаратного и программного обеспечения и того, почему построение модели имеет смысл. Полезно подумать, когда «моделировать» с помощью правил, а когда учиться - все зависит от того, насколько сложно пространство, которое вы изучаете, и ваши аппаратные ограничения. Раздел 3.3 о гибридных индексах - хорошая иллюстрация этого. Пространство ключей рекурсивно разбивается на разделы, и каждый раздел обрабатывается постепенно улучшающейся моделью. Признавая, что некоторые части входного распределения может быть трудно моделировать, авторы прибегают к эвристике (в данном случае к B-дереву), и это справедливо.

4. Новое оборудование, такое как TPU V2 и Graphcore, может привести к непредвиденным сбоям в отрасли.

На NIPS 2017 я увидел демонстрацию Graphcore, показывающую, как они работают в 3 раза быстрее, чем Nvidia Volta. Tensor Processing Unit (TPU) Google работал с AlphaGo, но делал только выводы (предсказания). Новые TPU (TPU V2) созданы как для обучения, так и для вывода, обеспечивая безумную производительность и сокращая время экспериментов, а также более короткое время вывода на рынок. Другой вид сбоев заключается в том, что эти новые аппаратные блоки позволяют создавать новые виды продуктов, которые уничтожают другие продукты, которые были до них. По словам авторов, «оборудование машинного обучения находится в зачаточном состоянии. «Создание инфраструктуры машинного обучения сегодня может показаться ходьбой по изменчивой почве. Идите быстро и будьте начеку.

5. Использование программного обеспечения, совместимого с новым оборудованием

Если новое оборудование делает возможным что-то ранее сложное или невозможное, то вы проигрываете своим конкурентам, не применяя эти новые усовершенствования оборудования и программного обеспечения. Например, в продолжающейся битве фреймворков не имеет значения, насколько они хороши / чисты / гибки. Важно то, поддерживает ли фреймворк новое оборудование, открывающее новые возможности. Например, один модуль TPU Pod в настоящее время опережает 10-й по скорости суперкомпьютер в мире. Если единственный способ получить доступ - через Tensorflow, то внутренняя ценность других фреймворков не имеет такого большого значения, и я буду идиотом, если не выберу TensorFlow. Интересно, что это открывает всевозможные интересные бизнес-возможности для людей, которые оптимизируют тонкий слой между аппаратным и программным обеспечением.

6. Откажитесь от старых предположений

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

«Тем не менее, мы утверждаем, что ни одно из этих очевидных препятствий не является настолько проблематичным, как может показаться».

«В результате высокие затраты на создание нейронной сети могут оказаться незначительными в будущем».

Каждый раз, когда вы говорите «это дорого» или «это сложно» при принятии решения о продукте, спрашивайте себя «почему?» Если вы этого не сделаете, возможно, ваш конкурент задает эти вопросы. Есть ли новое оборудование, новые наборы данных и новые исследования, которые опровергают ваши предположения?

7. Предварительные расчеты следует проводить часто.
Отличный вопрос, который Краска и др. Задают в своей статье: «Какую сложность модели мы можем себе позволить?» (см. Раздел 2.1). Мы редко видим это в исследовательских работах по машинному обучению, но этот образ мышления имеет решающее значение при создании продукта, поскольку мы работаем в условиях ограничений по времени и бюджету.

8. ML - это не пикси-пыль

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

9. Разрабатывайте оборудование, которое у вас есть , и имейте оборудование, которое соответствует вашим продуктовым / бизнес-целям.

Это не требует пояснений и было рассмотрено по частям в пунктах 1–8, но мы напишем его снова, чтобы подчеркнуть взаимодействие продукта, программного обеспечения и оборудования при создании современных продуктов машинного обучения.

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