Легкое масштабируемое обучение нейронно-дифференциальных уравнений

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

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

Вот - это самостоятельное видео-введение по теме.

TorchDyn: библиотека для нейро-дифференциальных уравнений

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

TorchDyn, часть более широкой программной экосистемы DiffEqML, предлагает интуитивно понятную точку доступа к моделированию для непрерывного углубленного обучения. Библиотека следует основным идеалам дизайна, способствующим успеху современных фреймворков глубокого обучения; а именно модульная, объектно-ориентированная и ориентированная на графические процессоры и пакетные операции.

API будет сразу знаком каждому, кто работал над PyTorch:

NeuralDEs представляет основной класс модели, с которым можно взаимодействовать обычным способом PyTorch. Внутренне DEFunc выполняет вспомогательные операции, необходимые для сохранения совместимости между вариантами NeuralDE, такие как высший - порядок динамика или обработка дополнительных измерений для функций интегральной стоимости, распределенных по всей глубине NDE.

Более того, в моделях TorchDyn используется PyTorch-Lightning, позволяющий без усилий и масштабируемое обучение.

Ниже мы рассмотрим обучение нейронным обычным дифференциальным уравнениям (Neural ODE) с помощью TorchDyn и PyTorch Lightning. В конце мы углубимся в последние достижения и покажем, как можно ускорить вывод с помощью гиперсольверов, также обученных с помощью PyTorch Lightning.

Определение нейронных моделей ODE

Мы начнем с нейронного ОДУ для задачи двоичной классификации. В частности, наша цель - разделить эти два класса точек. Набор данных содержит пары (x, y) 2D точек и их метки, обозначенные ниже цветом

Генерируется следующим образом с использованием ToyDataset из TorchDyn:

Следующий шаг включает определение стандарта pl.LightningModule для задач классификации, forward которой будет обрабатывать NeuralDE. LightningModule - это просто nn.Module, с добавленными крючками для структурирования вашей модели. Он оставляет вам основную логику обучения и автоматизирует разработку. Обратите внимание, как объект NeuralDE принимает в качестве входных данных нейронную сеть f, определяющую векторное поле:

Затем мы действуем как обычно, создавая Trainer и затем используя любую PyTorch-Lightning функцию, необходимую для обучения или ведения журнала. Вот полный список функций Lightning, таких как совместимость как с графическими процессорами, так и с TPU (многоузловыми), 16-битное прецизионное обучение и ранняя остановка.

Мы можем визуализировать NDE потоки или эволюцию входных данных по их глубине с помощью trajectory метода. s_span указывает интервал глубины - в виде сетки точек, которая нас интересует.

Гиперсольверы в PyTorch Lightning: более быстрые нейронно-дифференциальные уравнения

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

Однако регуляризация векторного поля может не всегда быть вариантом, особенно в ситуациях, когда дифференциальное уравнение частично известно и задано заранее -, как, например, в случае управления. Приложения.

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

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

Мы будем использовать эту реализацию HyperEuler для ускорения вывода Neural ODE из предыдущего раздела. Здесь мы будем использовать в качестве гиперсольверной сети g крошечную нейронную сеть, состоящую из одного линейного слоя:

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

После обучения мы можем визуализировать потоки нейронного ОДУ, решенные с помощью нашего гиперсольверного варианта метода Эйлера, HyperEuler, и проверить, совпадают ли они с потоками, решенными с помощью адаптивного пошагового метода:

Ценой всего 12 дополнительных параметров мы можем успешно сократить количество вычислений функций до менее 20, начиная с 40+. Неплохо!

Заключение

Мы показали, как обучать нейронные ОДУ через TorchDyn и PyTorch-Lightning, в том числе как их ускорить с помощью гиперсольверов. В рамках непрерывной углубленной структуры возможно гораздо больше, мы предлагаем следующий набор руководств для тех, кто заинтересован в более глубоком погружении.

Экосистема DiffEqML непрерывной глубины быстро расширяется, и самаTorchDyn в настоящее время близка к новому выпуску, включающему некоторые из последних достижений NeurIPS 2020. Наша цель с DiffEqML - вывести эти модели на новый уровень практической значимости, позволяя без усилий и масштабируемое обучение NDE и традиционной нейронной сети - гибридов NDE между графическими процессорами и кластерами графических процессоров. Мы продолжим основывать наши усилия на прочном фундаменте, который предоставляет PyTorch-Lightning, и мы рады укрепить наше сотрудничество с помощью еще более тесной интеграции.

Для тех, кто интересуется дополнительным контентом, связанным с околосмертными переживаниями, подпишитесь на нас в Twitter, чтобы получать больше обновлений. Не стесняйтесь проверить наши стендовые доклады на предстоящем NeurIPS 2020, чтобы задать нам дополнительные вопросы:

Майкл Поли и Стефано Массароли, DiffEqML