Когда автоматическое дифференцирование дешево?


12

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

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

Какие черты исходной программы можно использовать для ускорения вычислений?

Какие приемы разработки программного обеспечения можно использовать для ускорения вычислений?


1
Конечно, хотелось бы использовать специальные свойства производных функций, таких как экспоненциальная функция и тригонометрические функции. Много потенциальных общих подвыражений там.
JM

Вы спрашиваете об обратном или прямом режиме?
Джед Браун

Мое (ограниченное) понимание состоит в том, что прямой и обратный режимы имеют примерно одинаковую стоимость.
MRocklin

Ответы:


6

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

Стандартным справочником в этой области является « Оценка производных: принципы и методы алгоритмического дифференцирования», второе издание, написанное Андреасом Гривенком и Андреа Вальтером, и они должны предоставить более подробную информацию о том, как сократить количество вычислений, необходимых для оценки производной программы.


3

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.