66 votos

¿Cuál es la diferencia entre el Jacobiano, el Hessiano y el Gradiente?

Sé que hay mucho tema sobre esto en Internet y créeme, he buscado en Google. Pero las cosas se están volviendo más y más confusas para mí.

Según mi entendimiento, el gradiente es la pendiente del descenso más rápido. Modificar tu posición descendiendo a lo largo de este gradiente hará que tu función de costo se minimice rápidamente (el objetivo típico).

¿Alguien podría explicar en palabras simples (y tal vez con un ejemplo) cuál es la diferencia entre el Jacobiano, Hessiano y el Gradiente?

14 votos

Esta es una pregunta sobre cálculo vectorial básico que en esencia no tiene nada que ver con machine learning (o estadística, para el caso).

3 votos

@jhin: tal vez deberías editar para eliminar el aprendizaje automático del título y como etiqueta, ¿pero también considerar migrar a Mathematics StackExchange?

75voto

user91951 Puntos 1

Algunos buenos recursos sobre esto serían cualquier texto introductorio de cálculo vectorial. Intentaré ser lo más consistente posible con el Cálculo de Stewart, quizás el libro de cálculo más popular en América del Norte.

El Gradiente

Sea $f: \mathbb{R}^n \rightarrow \mathbb{R}$ un campo escalar. El gradiente, $\nabla f: \mathbb{R}^n \rightarrow \mathbb{R}^n$ es un vector, tal que $(\nabla f)_j = \partial f/ \partial x_j$. Debido a que cada punto en $\text{dom}(f)$ se mapea a un vector, entonces $\nabla f$ es un campo vectorial.

El Jacobiano

Sea $\operatorname{F}: \mathbb{R}^n \rightarrow \mathbb{R}^m$ un campo vectorial. El Jacobiano puede ser considerado como la derivada de un campo vectorial. Considerando cada componente de $\mbox{F}$ como una función única (como $f$ arriba), entonces el Jacobiano es una matriz en la que la $i^{th}$ fila es el gradiente de la $i^{th}$ componente de $\operatorname{F}$. Si $\mathbf{J}$ es el Jacobiano, entonces

$$\mathbf{J}_{i,j} = \dfrac{\partial \operatorname{F}_i}{\partial x_j}$$

El Hessiano

Simplemente, el Hessiano es la matriz de segundas derivadas mixtas de un campo escalar.

$$\mathbf{H}_{i, j}=\frac{\partial^{2} f}{\partial x_{i} \partial x_{j}}$$

En resumen:

  • Gradiente: Vector de primeras derivadas de un campo escalar

  • Jacobiano: Matriz de gradientes para componentes de un campo vectorial

  • Hessiano: Matriz de segundas derivadas mixtas de un campo escalar.

Ejemplo

La pérdida por error cuadrado $f(\beta_0, \beta_1) = \sum_i (y_i - \beta_0 - \beta_1x_i)^2$ es un campo escalar. Mapeamos cada par de coeficientes a un valor de pérdida.

  • El gradiente de este campo escalar es $$\nabla f = \left< -2 \sum_i( y_i - \beta_0 - \beta_1x_i), -2\sum_i x_i(y_i - \beta_0 - \beta_1x_i) \right>$$

  • Ahora, cada componente de $\nabla f$ es en sí mismo un campo escalar. Toma gradientes de esos y establece que sean filas de una matriz y tendrás el Jacobiano

$$ \left[\begin{array}{cc} \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} \end{array}\right]$$

  • El Hessiano de $f$ es el mismo que el Jacobiano de $\nabla f$. Te convendría demostrar esto por ti mismo.

Recursos: Cálculo: Trascendentes tempranas por James Stewart, o ediciones anteriores, así como Wikipedia que es sorprendentemente bueno para estos temas.

16 votos

Para aclarar, el Jacobiano del gradiente de $f$ es lo mismo que el Hessiano de $f$. Cuando escribes "el Hessiano es lo mismo que el Jacobiano", estás hablando del Jacobiano del gradiente de $f".

3 votos

También, cuando m = 1, el Jacobiano es el mismo que el gradiente.

1 votos

Hay muchas conexiones entre estos tres, las cuales he omitido pero realmente merecen ser exploradas en detalle.

28voto

Female Tank Puntos 992

Si tienes una función que mapea un número 1D a un número 1D, entonces puedes tomar la derivada de la misma,

$f(x) = x^2, f'(x) = 2x$

Si tienes una función que mapea un vector ND a un número 1D, entonces tomas el gradiente de la misma

$f(x) = x^Tx, \nabla f(x) = 2x, x = (x_1, x_2, \ldots, x_N)$

Si tienes una función que mapea un vector ND a un vector ND, entonces tomas el Jacobiano de la misma.

$f(x_1, x_2) = \begin{bmatrix} x_1x_2^2 \\ x_1^2x_2\end{bmatrix}, J_f(x_1, x_2) = \begin{bmatrix} x_2^2 & 2x_1x_2 \\ 2 x_1x_2 & x_1^2 \end{bmatrix}$

La Hessiana es el Jacobiano del gradiente de una función que mapea de ND a 1D

Así que el gradiente, Jacobiano y Hessiano son operaciones distintas para funciones distintas. Literalmente no puedes tomar el gradiente de una función ND $\to $ ND. Esa es la diferencia.

1 votos

+1. Es posible que quieras decir que un "número 1D" es un escalar. :)

0 votos

Esto está muy bien explicado en palabras sencillas. Gracias

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X