¿Cuándo es barata la diferenciación automática?


12

La diferenciación automática nos permite evaluar numéricamente la derivada de un programa en una entrada particular. Existe un teorema de que este cálculo puede realizarse a un costo inferior a cinco veces el costo para ejecutar el programa original. Este factor de cinco es un límite superior.

¿En qué situaciones se puede reducir aún más este costo? Muchos códigos derivados en el campo se ejecutan cerca de la velocidad del programa original. ¿Qué se hace para obtener esta aceleración?

¿Cuáles son los rasgos del programa original que pueden explotarse para acelerar el cálculo?

¿Qué trucos de ingeniería de software se pueden emplear para acelerar la computación?


1
Ciertamente, uno querría explotar las propiedades especiales de las derivadas de funciones como la función exponencial y las funciones trigonométricas. Hay muchas subexpresiones comunes potenciales allí.
JM

¿Estás preguntando sobre el modo inverso o el modo directo?
Jed Brown

Mi comprensión (limitada) es que los modos de avance y retroceso tienen costos más o menos similares.
MRocklin

Respuestas:


6

Mi comprensión limitada de AD es paralela a lo que Matt ha dicho. Para acelerar el cálculo de derivadas, la estructura del gráfico de expresión debe explotar la escasez y la escasez en el conjunto de matrices jacobianas. (Consulte este documento de Griewank para obtener más información). Los trucos de ingeniería de software probablemente estarían en el código AD para reestructurar el gráfico de expresión para aprovechar estas propiedades en el conjunto de matrices jacobianas. Saber cómo el código AD genera un gráfico de expresión a partir del código que está escribiendo le ayudará a comprender mejor cómo escribir código que requiere menos cálculos. Cualquier buen código AD ya debería aprovechar los intrínsecos con subexpresiones comunes, pero los buenos códigos AD son difíciles de escribir.

La referencia estándar en el campo es Evaluación de derivados: principios y técnicas de diferenciación algorítmica, segunda edición de Andreas Griewank y Andrea Walther, y debe proporcionar información más detallada sobre cómo reducir la cantidad de cálculos necesarios para evaluar la derivada de un programa.


3

Cualquier AD todavía necesita que se proporcionen estos intrínsecos, por lo que no puedo ver qué tiene que ver con la complejidad genérica de una expresión. Supongo que puede clasificar la complejidad por el número de rutas a través del gráfico de expresión, ya que expresa AD de esta manera. Andrew Lyons tiene un buen trabajo en gráficos de series paralelas aquí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.