Коли автоматична диференціація дешева?


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.