Дифференцируемое программирование

редактировать
Парадигма программирования

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

Содержание
  • 1 Подходы
  • 2 Приложения
  • 3 См. Также
  • 4 Примечания
  • 5 Ссылки
Подходы

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

  • статические, скомпилированные, графические подходы, такие как TensorFlow, Theano и MXNet. Они, как правило, обеспечивают хорошую оптимизацию компилятора и более легкое масштабирование для больших систем, но их статический характер ограничивает интерактивность и типы программ, которые можно легко создавать (например, те, которые включают циклы или рекурсия ), а также затрудняет пользователям эффективное рассуждение о своих программах.
  • Перегрузка операторов, подходы на основе динамического графа, такие как PyTorch и. Их динамический и интерактивный характер позволяет легче писать и рассуждать о большинстве программ. Однако они приводят к накладным расходам интерпретатора (особенно при составлении множества небольших операций), ухудшению масштабируемости и затруднению получения преимуществ от оптимизации компилятора.

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

Более свежие пакеты на языке программирования Julia - Zygote, языке программирования Swift - Swift для TensorFlow, и новый язык программирования - Myia, решает проблемы, с которыми сталкивались ранее попытки, рассматривая синтаксис языка как граф. Промежуточное представление произвольного кода может быть затем напрямую дифференцировано, оптимизировано и скомпилировано.

Приложения

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

См. также
Примечания
Ссылки
Последняя правка сделана 2021-05-17 05:43:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте