Pudiera darse el caso de que halles algún error en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al proyecto final.
Solución:
Algunos buenos recursos sobre esto serían cualquier texto introductorio de cálculo vectorial. Trataré de ser lo más consistente posible con Cálculo de Stewart, quizás el libro de texto de cálculo más popular en América del Norte.
el gradiente
Dejar $f: mathbbR^n rightarrow mathbbR$ Sea un campo escalar. el gradiente, $nabla f: mathbbR^n rightarrow mathbbR^n$ es un vector, tal que $(nabla f)_j = parcial f/ parcial x_j$. Porque cada punto en $textdom(f)$ se asigna a un vector, entonces $nabla f$ es un campo vectorial.
el jacobiano
Dejar $nombre del operadorF: mathbbR^n rightarrow mathbbR^m$ Sea un campo vectorial. El jacobiano puede considerarse como la derivada de un campo vectorial. Teniendo en cuenta cada componente de $mboxF$ como una sola función (como $f$ arriba), entonces el jacobiano es una matriz en la que el $i^th$ fila es el gradiente de la $i^th$ componente de $nombre del operadorF$. Si $mathbfJ$ es el jacobiano, entonces
$$mathbfJ_i,j = dfracparcial operatornameF_iparcial x_j$$
la arpillera
Simplemente, la arpillera es la matriz de segundo orden mixed parciales de un campo escalar.
$$mathbfH_i, j=fracparcial^2 fparcial x_i parcial x_j$$
En resumen:
-
Gradiente: Vector de derivadas de primer orden de un campo escalar
-
Jacobiano: Matriz de gradientes para componentes de un campo vectorial
-
Hessiana: Matriz de segundo orden mixed parciales de un campo escalar.
Ejemplo
Pérdida de error cuadrático $f(beta_0, beta_1) = sum_i (y_i – beta_0 – beta_1x_i)^2$ es un campo escalar. Asignamos cada par de coeficientes a un valor de pérdida.
-
El gradiente de este campo escalar es $$nabla f = izquierda< -2 sum_i( y_i - beta_0 - beta_1x_i), -2sum_i x_i(y_i - beta_0 - beta_1x_i) right>$$
-
Ahora, cada componente de $nabla f$ es en sí mismo un campo escalar. Tome gradientes de esos y configúrelos para que sean filas de una matriz y obtendrá el jacobiano
$$ izquierda[beginarraycc
sum_i=1^n 2 & sum_i=1^n 2 x_i \
sum_i=1^n 2 x_i & sum_i=1^n 2 x_i^2
endarrayright]$$
- La arpillera de $f$ es lo mismo que el jacobiano de $nabla f$. Te convendría probarte esto a ti mismo.
Recursos: Calculus: Early Transcendentals de James Stewart, o ediciones anteriores, así como Wikipedia, que es sorprendentemente buena para estos temas.
Si tiene una función que asigna un número 1D a un número 1D, entonces puede tomar la derivada,
$f(x) = x^2, f'(x) = 2x$
Si tiene una función que asigna un vector ND a un número 1D, entonces toma su gradiente
$f(x) = x^Tx, nabla f(x) = 2x, x = (x_1, x_2, ldots, x_N)$
Si tiene una función que asigna un vector ND a un vector ND, entonces toma el jacobiano de él.
$f(x_1, x_2) = beginbmatriz x_1x_2^2 \ x_1^2x_2endbmatriz, J_f(x_1, x_2) = beginbmatriz x_2^2 & 2x_1x_2 \ x_1^2 & 2 x_1x_2endbmatriz$
El hessiano es el jacobiano del gradiente de una función que mapea de ND a 1D
Entonces, el gradiente, el jacobiano y el hessiano son operaciones diferentes para funciones diferentes. Literalmente no puedes tomar el gradiente de un ND $a $ Función ND. Esa es la diferencia.