Quando è conveniente la differenziazione automatica?


12

La differenziazione automatica ci consente di valutare numericamente la derivata di un programma su un determinato input. Esiste un teorema secondo cui questo calcolo può essere effettuato a un costo inferiore a cinque volte il costo per eseguire il programma originale. Questo fattore di cinque è un limite superiore.

In quali situazioni è possibile ridurre ulteriormente questo costo? Molti codici derivati ​​sul campo vengono eseguiti quasi alla velocità del programma originale. Cosa viene fatto per ottenere questo accelerazione?

Quali sono i tratti del programma originale che possono essere sfruttati per accelerare il calcolo?

Quali trucchi di ingegneria del software possono essere impiegati per accelerare il calcolo?


1
Certamente, si vorrebbe sfruttare le proprietà speciali dei derivati ​​di funzioni come la funzione esponenziale e le funzioni trigonometriche. Molte potenziali sottoespressioni comuni lì.
JM,

Stai chiedendo di modalità inversa o avanti?
Jed Brown,

La mia (limitata) comprensione è che entrambe le modalità avanti e indietro hanno costi approssimativamente simili.
MRocklin,

Risposte:


6

La mia comprensione limitata di AD è parallela a ciò che Matt ha detto. Per accelerare il calcolo dei derivati, la struttura del grafico dell'espressione deve sfruttare la scarsità e la scarsità nell'insieme delle matrici giacobine. (Vedi questo articolo di Griewank per ulteriori approfondimenti.) I trucchi di ingegneria del software sarebbero probabilmente nel codice AD ​​stesso per ristrutturare il grafico dell'espressione per trarre vantaggio da queste proprietà nell'insieme delle matrici giacobine. Sapere come il codice AD ​​genera un grafico di espressioni dal codice che stai scrivendo ti aiuterà a capire meglio come scrivere codice che richiede meno calcoli. Qualsiasi buon codice AD ​​dovrebbe già trarre vantaggio dagli elementi intrinseci con sottoespressioni comuni, ma i buoni codici AD sono difficili da scrivere.

Il riferimento standard nel campo è la valutazione dei derivati: principi e tecniche della differenziazione algoritmica, seconda edizione di Andreas Griewank e Andrea Walther, e dovrebbe fornire informazioni più dettagliate su come ridurre il numero di calcoli necessari per valutare la derivata di un programma.


3

Qualsiasi annuncio pubblicitario ha ancora bisogno di questi intrinseci da fornire, quindi non riesco a vedere cosa abbia a che fare con la complessità generica di un'espressione. Immagino che tu possa classificare la complessità in base al numero di percorsi attraverso il grafico dell'espressione da quando hai espresso AD in questo modo. Andrew Lyons ha fatto un buon lavoro sui grafici paralleli in serie qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.