Estoy aprendiendo aprendizaje profundo, ¿por qué es útil la matriz y qué es el cálculo?

En términos prácticos, las matrices le brindan una forma de almacenar y operar sus datos numéricos de una manera estandarizada que también le permite usar bibliotecas de álgebra lineal altamente optimizadas y también le ofrece una representación concisa de sus ecuaciones (puede ver esto como un tipo de abstracción).

Estoy escribiendo en mi teléfono pero intentaré dar un ejemplo. El bloque de construcción básico en las redes neuronales es una ecuación lineal, es decir

y = w_1 * x_1

Si tiene varias variables (dimensiones de entidades de entrada) esto se convierte

y = w_1 * x_1 + .. + w_n * x_n

para n variables.

Para almacenar las características de entrada x_i y los coeficientes w_i es natural usar los vectores n-dimensionales x y w.

Luego, puede representar nuevamente su ecuación simplemente como

y = w * x

(tendrá que transponer x o w dependiendo de si usa vectores de fila o columna, pero lo omito por ahora).

Esta es también la base de un perceptrón simple, equivalente a una regresión lineal. Usted asigna a cada variable de entrada un peso que representa el efecto de esta variable en el resultado.

Ahora en redes más grandes tendrá múltiples ecuaciones como esa, una para cada nodo en la siguiente capa de la red. Entonces, si su próxima capa tiene m nodos, tendrá m ecuaciones como esa, entonces m de esos vectores de peso w.

Ahora puede volver a unir los vectores m en una matriz W y usar nuevamente

y = W * x

para terminar con un vector y sosteniendo los m resultados para sus m ecuaciones.

Finalmente, puede extender esto a múltiples vectores de entrada x, uniéndolos a una matriz X.

¿Y adivina cuál es la ecuación para eso entonces?

Y = W * X

Calcular eso produce Y, que es una matriz que contiene todas sus y para todas sus ecuaciones para todos sus vectores de entrada.

Aquí puedes ver el efecto de la abstracción. Al escribir la ecuación anterior en términos de variables escalares x y w, terminaría con mucha escritura. Entonces, en realidad, lo que sucede aquí es que los tipos de variables cambian (de escalar a vector a matriz) y el significado de la operación *, pero el procedimiento general sigue siendo el mismo.

Nuevamente, por favor, no ignore aquí que necesitará algunas transposiciones para obtener los vectores y las matrices en la forma que desea tener.

Ahora, tenemos bibliotecas eficientes para almacenar matrices y hacer esos cálculos. Si una biblioteca sabe que tiene que lidiar con una operación matricial, puede ejecutarla fácilmente en paralelo, especialmente interesante para las GPU.

Por ejemplo, una predicción con una red de alimentación de múltiples capas regular con activación de tanh se puede escribir fácilmente con la biblioteca de álgebra lineal Eigen como

for (const auto & layer: layers) {
input = input * layer.GetWeights () + layer.GetBiases ();
input = input.array (). tanh ();
}

y eso es.

De hecho, el aprendizaje profundo es simplemente una multiplicación matricial aplicada con alguna función de no linealidad (sigmoide, tanh, ReLu). Una vez que se sumerja en los detalles técnicos de la implementación de una red neuronal, se dará cuenta de que, en esencia, está formada por la multiplicación de matrices. Por lo tanto, una vez necesita comprender al menos las multiplicaciones básicas de la matriz para comprender lo que está haciendo el código. Para individuos más técnicos, una comprensión más profunda de las matrices permite saber cómo escribir código eficiente mediante la aplicación de la vectorización (aprovechando la capacidad de la computadora para calcular el producto de la matriz rápidamente).

En cuanto al cálculo, en todo el aprendizaje automático (no solo el aprendizaje profundo), la solución a los problemas siempre se presenta en forma de: hipótesis, función de pérdida, minimizar la función de pérdida (detalles omitidos como preprocesamiento de datos, validación cruzada, etc.). Después de definir una función de pérdida y desea minimizar la función de pérdida, aquí es donde es útil un conocimiento del cálculo, especialmente la optimización convexa. Solo a través del conocimiento del cálculo se pueden calcular derivados y comprender cómo funciona la propagación hacia atrás y el descenso de gradiente (2 ideas extremadamente centrales para el aprendizaje profundo)

Hasta donde sé, un conjunto de matrices es una herramienta para resolver funciones. Suele aparecer con números, símbolos y dispuestos en filas y columnas. Es útil en el aprendizaje profundo debido al análisis Matrix. De alguna manera, este también es un algoritmo, que acelera la velocidad de manejo de la información.

No estoy seguro si está preguntando qué es el cálculo matricial o el cálculo . El cálculo es una rama de las matemáticas que estudia los límites, el cálculo diferencial, el cálculo integral y las series infinitas, etc. Pero el cálculo matricial es una notación en el cálculo multivariable.