Las nociones de diferenciales y de derivados han mencionadas en forma vaga. Esto es porque hay muchos ``objetos derivados" que uno puede desear, y cada uno de ellos se obtiene con una diferenciación automática específica. Aquí están algunos ejemplos:
Uno simplemente puede desear la derivada del programa. Más
exactamente, siendo las entradas y las salidas del programa generalmente
vectores, la derivada es una matriz, conocida como el Jacobiano, cada
elemento (i,j) del Jacobiano es la derivada parcial
de la salida Yi con respecto a la entrada Xj. Cuando los valores son arreglos, el objeto derivado se convierte en una matriz. Esto conduce a llevar Jacobianos parciales junto con flujo principal del programa. Esto es generalmente costoso en memoria y tiempo. Esta desventaja puede ser enfrentada parcialmente si, las representaciones de los objetos derivados son dispersos.
Se puede desear simplemente derivadas direccionales.
Esto significa que, en vez del Jacobiano explícito J, sólo se necesita
un vector dado dX en el espacio
de la entrada. Este efecto es realmente
, pero uno puede
evaluarlo sin calcular explícitamente J. For que, el objeto derivado que se
debe computar junto con cada valor v sea su dv ``diferencial", es decir (la
aproximación de primer orden de) la cantidad por la cual v varía cuando la
entrada X varía en dX. Según lo esperado, ésto es lejos menos costoso que
construyendo el Jacobiano entero. Observe que los derivadas direccionales
también pueden proveernos del Jacobiano, si los deriatives
direccionales son calculadas para cada dirección canónica en el espacio de la
entrada. Es decir esto requiere un cómputo del derivada direccional por
variable de la entrada, e incluso menos, si una sabe que el Jacobiano
es la suficientemente disperso.
Uno puede desear gradientes. Cuando hay sólo una salida,
el Jacobiano tiene solamente una línea, que
es exactamente el gradiente del resultado con respecto a las entradas. Cuando
hay muchas salidas, uno define un resultado compuesto escalar, es decir una
cierta combinación linear de estas salidas,
o sea, uno desea una combinación de las líneas
del Jacobianio Xb = Yb * J. Esto puede ser calculado sin explícitamente computar
J. El objeto derivado se llame un ``adjoint", y se calcula en reversa
del orden del programa original, será explicado más adelante. Como
con los derivadas direccionales, uno puede calcular completo el
Jacobiano calculando los gradientes, para cada dirección
canónica en el espacio de la salida, o menos que eso cuando el Jacobiano es
disperso. Es fácil comprobar que este acercamiento es recomendable cuando hay
más entradas que las salidas
Se pueden desear los derivadas de orden superior.
(Hessiano). Esto se puede hacer calculando un objeto derivado que
sea un tensor Hessiano parcial. Puesto que esto pudo ser muy costoso, otro
acercamiento es calcular derivadas de orden superior direccionales, y
utilizarlas
luego para recalcular los coeficientes del Hessiano.
Uno puede desear derivadas de orden superior direccionales. Dado un
vector direccional dX del espacio de entrada, uno computa junto con el programa
original un objeto derivado que contenga la primera y las derivados de más alto
orden de cada valor intermedio en la dirección dX. Las derivadas de orden
superior son útiles para conseguir aproximaciones más exactas, y optimizaciones
más eficientes.
Uno puede desear expansiones de las series de Taylor.
Se puede desear calcular intervalos. Ésta no es en sentido estricto una
cuestión de derivadas, pero comparten muchas semejanzas. El objeto derivado
calculado junto con cada valor v es el intervalo en el cual este valor puede
variar.