next up previous
Next: A.D. Up: Aspectos Matemáticos Previous: Derivadas

Diferenciales y Derivadas

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:

$\bullet$ 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

$\frac{\partial Y_{i}}{\partial X_{j}}$

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.

$\bullet$ 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 $dY = J * dX$, 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.

$\bullet$ 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

$\bullet$ 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.

$\bullet$ 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.

$\bullet$ Uno puede desear expansiones de las series de Taylor.

$\bullet$ 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.


next up previous
Next: A.D. Up: Aspectos Matemáticos Previous: Derivadas
Mauricio Araya 2003-04-08