Задний план
Системы машинного обучения (точнее контролируемого обучения [1]) действительно хорошо работают в производственной среде [2]. Однако создание систем машинного обучения:
- Утомительно: для каждой системы существует множество вариантов функций потерь (и показателей), построения набора данных, архитектуры, динамики обучения и командного рабочего процесса. Множество вариантов неизбежно увеличивает шансы на ошибку.
- Требуется много знаний в предметной области: для запуска успешного проекта требуется много знаний в предметной области. Получение этих знаний не масштабируется, и эти знания постоянно меняются по мере того, как вы изучаете новую информацию о том, как пользователи / клиенты реагируют на эксперименты, которые вы проводите.
- Высокая вероятность неудачи: большинство проектов терпят неудачу из-за того, что многие вещи могут пойти не так [4]. Это также означает потраченные впустую усилия и время, поскольку много времени тратится на работу над вещами, которые нельзя использовать повторно.
- Значительные накладные расходы на обслуживание. После того, как вы преодолеете указанные выше препятствия, вам придется поддерживать этих зверей в рабочем состоянии.
Когда люди пытаются решить проблему, они используют сильную априорную схему (построенную на протяжении всей их жизни). Однако наши системы обычно обучаются с нуля, и даже если они настраиваются с самого начала, им требуется множество обучающих примеров, чтобы добраться до состояния, при котором мы будем чувствовать себя комфортно, вводя их в производство.
Я думал об этой проблеме и оценивал, есть ли лучший способ сделать что-то. Я делюсь своими выводами, полученными в результате изучения соответствующих исследований, общения с коллегами в этой области, а также на основе моего личного опыта создания систем машинного обучения и работы с ними.
Структура этого поста
В этом посте я разбил свои выводы на следующие разделы:
Состояние экосистемы (Раздел 1): чтобы узнать, как дела обстоят в настоящее время. Я считаю, что это даст нам представление о том, где мы можем улучшить.
Обзор метаобучения (Раздел 2): изучите многообещающую область исследований, которая, судя по моему опыту, хорошо работает в производственной среде. Я также проанализировал, как академические круги подошли к этой проблеме, чтобы увидеть, можем ли мы узнать что-нибудь о том, как она переносится в производственные системы.
Последствия (Раздел 3): конкретно озвучьте, как меняются команды и рабочий процесс, если кто-то должен принять эту новую структуру.
Раздел 1: Текущее состояние экосистемы
Объем доступных данных и вычислений растет экспоненциально, и глубокие модели не отстают [11]. В дополнение к увеличению объема данных и вычислений, специалисты в этой области нашли способ сократить время цикла от исследования до производства. Экосистема инструментов машинного обучения становится все более зрелой [10] [9], и мы совершенствуемся в реализации исследовательских идей. Однако то, как исследования в области машинного обучения основаны на сборе строительных блоков (свертка, LSTM, преобразователи и т. Д.) [12] и на практике (или производстве), предполагает, что они могут соединить эти строительные блоки вместе для решения проблем, относящихся к конкретным объектам. использованный случай [как показано на Рисунке 3].
Эта парадигма проектирования вынуждает нас продвигать сложные конструкции в производство, на создание которых уходит много времени и еще больше усилий для обслуживания. Кроме того, эти условия вынуждают к существованию различных микросервисов [13], каждый из которых имеет свою специализацию. В большинстве компаний стек машинного обучения выглядит примерно так:
Модели глубоких нейронных сетей в производстве хорошо справляются с изучением распределения данных. У многих команд машинного обучения очень жесткий процесс, в котором они могут создавать / обучать / развертывать эти модели. Это привело к взрывному росту моделей в производстве [20], и поддерживающая это инфраструктура всегда играет в догонялки и едва держится по швам.
Этот паттерн также вызывает:
- Системы с высокой степенью взаимосвязанности: команды или отдельные лица, накопившие опыт или модели, должны предоставить доступ подчиненным командам. Граф зависимостей может иметь много промежуточных узлов. Однако это увеличивает вероятность сбоев молчания в этих массивных сложных сетях и затрудняет отладку.
- Высокая энергия активации. Каждая новая идея требует большого объема стандартной работы (настройка наборов данных, показателей, извлечение функций, обновление конфигурации и т. д.). Это добавляет дополнительное трение при опробовании новых идей и излишне снижает скорость работы команды.
- Высокие инвестиционные затраты. Даже для начала нужно заплатить высокие фиксированные затраты. Инструменты с открытым исходным кодом в значительной степени понесли эту стоимость, однако для новых команд и организаций, пытающихся экспериментировать, они должны заплатить высокую стоимость настройки своей инфраструктуры, прежде чем даже увидят какую-либо рентабельность инвестиций.
Пример из практики: изучение истории
Ограничено вычислением
Вещи, созданные вручную, в конечном итоге уступают изученным решениям
Features * HOG/SIFT -> Learned Architectures * Hand designed -> Learned Hyperparameters * Manually tuned -> Learned
Эта тенденция предполагает, что есть лучший способ сделать что-то: если у вас есть проектное решение, которое реализуется путем ручной настройки или «экспериментов» на людях, это лишь вопрос времени, когда оно станет узким местом в системе в целом [14]. .
Раздел 2: Мета-обучение и многозадачное обучение
Модели контролируемого обучения изучают функцию, которая сопоставляет входные данные с выходными на основе примеров пар входов и выходов. Он выводит функцию из помеченных данных обучения, чтобы во время тестирования он мог вывести метку для невидимых данных. Предполагается, что данные обучения и данные теста поступают из одного и того же базового распределения. Однако во многих приложениях это предположение нарушается, если:
- Хотите быстро узнать что-то новое (новый пользователь, новое окружение, новая задача и т. Д.)
- Базовое распределение имеет длинный хвост. Так бывает много рекомендуемых систем и систем обнаружения новинок.
- У вас нет большого набора данных, на котором можно было бы учиться, и / или создание помеченного набора данных стоит дорого.
Это побуждает команды обучать модели для одного варианта использования для определенного временного горизонта и использовать схемы повторного обучения, чтобы получить лучшее обобщение с течением времени. Однако метаобучение представляет собой ценную альтернативную основу, которая подает многообещающие результаты. В частности, в нем говорится:
- Извлечение предшествующей информации из набора (мета-обучения) задач, которые позволяют эффективно изучать новые задачи.
- Изучение новой задачи использует этот предыдущий и (небольшой) обучающий набор для определения наиболее вероятных апостериорных параметров.
- При обучении этой сети используется набор метаданных, который состоит из множества наборов данных, каждый для отдельной задачи.
На концептуальном уровне модели контролируемого обучения изучают пики градиента для конкретного используемого случая в определенный момент времени. Они очень хорошо справляются с поставленной задачей, но могут быстро снизить производительность. Однако с помощью подхода метаобучения человек изучает ландшафт градиентов, который может быстро научиться обобщать для новой задачи несколько обучающих примеров.
Я не обращал внимания на детали реализации метаобучения, однако Челси Финн [17] в своем Стэнфордском классе CS330 [18] отлично разбирается в деталях. Один из основных выводов, который необходимо пройти, - это вероятностная постановка проблемы метаобучения. Используя максимизацию ожидания, многозадачное обучение становится частным случаем метаобучения [19]. Эта характеристика отлично подходит для случая метаобучения, поскольку мы можем использовать многозадачные модели в качестве промежуточного шага при обобщении для метаобучения.
Пример использования: Meta-World 50 [23]
В этой статье демонстрируется случай метаобучения с использованием робототехники. Я считаю, что эта статья - хорошее представление о том, как выглядят экосистемы машинного обучения в различных технологических компаниях. Существует множество моделей машинного обучения, каждая из которых ориентирована на схожие задачи. Например, компания может иметь в производстве модели, которые:
- Постарайтесь предсказать, собирается ли пользователь читать следующий фрагмент контента, учитывая то, что он потребляет.
- Выясните, как организовать контент так, чтобы пользователь сначала находил наиболее похожие комментарии.
- Выясните, что безопасно показать конкретному пользователю.
Это несколько примеров, но обратите внимание, как все они связаны с поведением пользователя. Формулировка метаобучения позволит изучить лежащее в основе распределение поведения пользователей.
В этой статье делается попытка метаобучения по 45 задачам и мета-теста по 5 задачам. Первоначальная попытка использования метаобучения и многозадачного обучения оказалась неудачной (
Однако, когда авторы попытались обучить отдельные модели для каждой из этих задач, они смогли выполнить значительно лучше. Этот результат помог им сделать вывод о том, что заставить работать систему метаобучения было скорее проблемой оптимизации, чем фундаментальным узким местом с технической точки зрения.
Литературный обзор
Для тех, кто хочет пойти немного глубже, вот коллекция статей, которые я нашел полезными. Эти сборники статей также дают представление о том, как сообщество решило эту проблему [24–47] (сборник из 24 статей для вашего удовольствия от чтения).
Сообщество думает и работает над этой проблемой с 1992 года. Однако только недавно эти подходы начали показывать значительный прогресс (особенно в связи с недавней шумихой вокруг больших моделей трансформаторов (GPT, BERT и т. Д.).
На «мета» уровне большинство статей попадают в один из следующих двух лагерей:
- Новые архитектуры.
- Решение для взвешенных задач и разделения градиентов.
Вызовы
Помимо положительных моментов, при реализации решений для метаобучения следует учитывать следующие моменты:
Отрицательный перенос. Иногда независимые модели обучаются лучше, чем отдельная модель, и это связано с феноменом «отрицательного переноса».
- Вызвано градиентными обновлениями межзадачного взаимодействия
- Разные задачи могут учиться с разной скоростью
- Ограничения возможностей, многозадачность или модели метаобучения должны быть намного больше, чем модели, изучающие одну задачу, следовательно, им может не хватить мощности.
Переобучение: модель может не разделять достаточное количество весов и, следовательно, переобучаться для подмножества задач. Один из способов преодолеть это - разделить больше весов. Это будет действовать как более сильная форма регуляризации и потенциально может меньше переобучать.
Раздел 3: Последствия
Вот некоторые свойства, которые открывает мета-обучение:
Более низкая энергия активации: это позволяет быстро и дешево поэкспериментировать с новыми корпусами, а также с местами, где у нас очень мало этикеток.
- Это поможет снизить затраты на эксперименты, которые не увенчались успехом.
- Это также поможет увеличить количество экспериментов, уменьшив при этом трение, связанное с опробованием новых идей.
- Небольшие проблемы с данными также могут работать.
- Посмотрите, сколько новеньких бывших в употреблении футляров больших трансформеров открывают.
Низкое управление зависимостями: метаобучение предоставляет альтернативу сильно связанным структурам, которые сложно поддерживать.
- Традиционно вывод модели используется в последующих приложениях. Это приводит к возникновению тесно связанной сети зависимостей, когда конечный покупатель не имеет представления о том, что в середине нуждается в обновлении.
- Это также позволит экспериментировать с большим количеством моделей с открытым исходным кодом непосредственно в производстве (очень похоже на традиционное программное обеспечение).
Снижение инвестиционных затрат. Эта структура позволяет снизить нагрузку на инфраструктуру, поскольку обслуживание и управление меньшим количеством моделей позволит вам лучше адаптироваться и планировать на долгосрочную перспективу, а не постоянно бороться с перестрелками. Это также
- В традиционном мире вам нужно будет создать собственную инфраструктуру для каждой модели (и / или настроить инфраструктуру для каждого используемого случая). При таком подходе нагрузка значительно снижается, если вы можете создать настраиваемую инфраструктуру для обслуживания и поддержки нескольких моделей.
- Это позволит многим командам, не имеющим опыта в области машинного обучения, экспериментировать с идеями в тех случаях, когда у них есть наибольший опыт.
Ссылки и примечания
[1] https://en.wikipedia.org/wiki/Supervised_learning
[2] Я использую слово «производство» для обозначения тех случаев, когда цель состоит в том, чтобы обслуживать реальных конечных пользователей, а не просто побить эталонный тест.
[6] http://www.graduatewings.co.uk/classic-abstract-test-patterns/
[7] Графики тенденций исследований ИИ
[8] Экосистема инструментов машинного обучения
[10] Что я узнал, изучив 200 инструментов машинного обучения
[11] https://arxiv.org/pdf/2005.04305.pdf
[12] Компоненты - Статьи с Кодексом
[13] https://microservices.io/
[14] http://www.incompleteideas.net/IncIdeas/BitterLesson.html
[15] Эмпирическая модель крупномасштабного обучения
[16] Законы масштабирования для моделей нейронного языка
[17] https://ai.stanford.edu/~cbfinn/
[18] http://cs330.stanford.edu/
[19]
Одно из преимуществ, которые вы получаете от формулировки проблемы метаобучения с использованием вероятностной структуры, - многозадачное обучение становится особым случаем. То же самое и с оптимизацией гиперпараметров и авто-мл.
[20] https://www.slideshare.net/MeetupDataScienceRoma/giovanni-galloro-how-to-use-machine-learning-on-google-cloud-platform (слайд 3/51)
[21] Изображения с сайта https://openreview.net/forum?id=rJY0-Kcll
[22] Градиентные изображения взяты из https://sites.google.com/view/berkeley-cs294-158-sp20/home
[23] https://arxiv.org/pdf/1910.10897.pdf
Следующие 24 ссылки относятся к разделу обзора литературы:
[24] Bengio et al. (1992) Об оптимизации правила синаптического обучения
[25] Каруна (1997). Многозадачное обучение
[26] Трун (1998). Разве выучить n-ю вещь легче, чем выучить первую?
[27] Hochreiter et al. (2001) Обучение обучению с использованием градиентного спуска
[28] Янгер и др. (2001), Мета-обучение с обратным распространением
[29] Koch et al., (2015) Сиамские нейронные сети для одноразового распознавания изображений.
[30] Санторо и др. (2016) Мета-обучение с нейронными сетями с расширенной памятью
[31] Виньялс и др. ((2016) Соответствующие сети для однократного обучения
[32] Эдвардс и др., (2016) К нейронному статистику.
[33] Рави и др. (2017) Оптимизация как модель для пошагового обучения
[34] Munkhdalai et al. (2017) Мета Сети
[35] Снелл и др., (2017) Прототипные сети для быстрого обучения.
[36] Shyam et al. (2017) Внимательные рекуррентные компараторы
[37] Finn et al. (2017) Мета-обучение, не зависящее от модели, для быстрой адаптации глубоких сетей
[38] Мехротра и др. (2017), Генеративные состязательные остаточные парные сети для обучения одним выстрелом.
[39] Mishra et al., (2017) Мета-обучение с временными свертками.
[40] Ли и др., (2017) Meta-SGD: Обучение быстрому обучению для небольшого краткого обучения
[41] Финн и Левин, (2017) Мета-обучение и универсальность: глубокое представление и градиентный спуск могут приблизить любой алгоритм обучения
[42] Grant et al. (2017) Переосмысление метаобучения на основе градиентов как иерархического байесовского
[43] Рагху и др. (2019) Быстрое обучение для повторного использования функций? На пути к пониманию эффективности MAML
[44] Lake et al. (2019) The Omniglot Challenge: отчет о прогрессе за 3 года
[45] Rajeswaran et al. (2019): Мета-обучение с неявными градиентами
[46] Ван и др. (2019): Пересмотр классификации ближайшего соседа для быстрого обучения
[47] Ю и др., (2019) Мета-мир: эталон и оценка многозадачности и мета-подкрепления.