Cuando estudias un tema abstracto como álgebra lineal, puedes preguntarte: ¿por qué necesitas todos estos vectores y matrices? ¿Cómo va a aplicar todas estas inversiones, transposiciones, vectores propios y valores propios con fines prácticos?
Bueno, si estudias álgebra lineal con el propósito de hacer aprendizaje automático, esta es la respuesta para ti.
En resumen, puede usar álgebra lineal para el aprendizaje automático en 3 niveles diferentes:
- aplicación de un modelo a datos;
- entrenar al modelo;
- entender cómo funciona o por qué no funciona.

Supongo que usted, el lector, tiene al menos una vaga idea de los conceptos de álgebra lineal (como vectores, matrices, sus productos, matrices inversas, vectores propios y valores propios) y problemas de aprendizaje automático (como regresión, clasificación y reducción de dimensionalidad) . Si no, tal vez ahora sea un buen momento para leer sobre ellos en Wikipedia, o incluso inscribirse en un MOOC sobre estos temas.
Solicitud
Lo que generalmente hace el aprendizaje automático es ajustar alguna función fW(X)=H donde X son los datos de entrada, H es una representación útil de estos datos y W son parámetros adicionales, de los cuales depende nuestra función y que hay que aprender. Cuando tenemos esta representación H , podemos usarlo, por ejemplo, para reconstruir los datos originales X (como en el aprendizaje no supervisado), o para predecir algún valor de interés, Y (como en el aprendizaje supervisado).
Todos X , H , W y Y son generalmente matrices numéricas, y al menos se pueden almacenar como vectores y matrices. Pero el almacenamiento solo no es importante. Lo importante es que nuestra función f a menudo es lineal, es decir, H=XW . Ejemplos de tales algoritmos lineales son:
- regresión lineal, donde Y=H . Es una línea de base sensata para problemas de regresión, y una herramienta popular para responder preguntas como " x afectar y , otras cosas son iguales?
- regresión logística, donde Y=softmax(H) . Es una buena línea de base para problemas de clasificación, y a veces esta línea de base es difícil de superar.
- análisis de componentes principales, donde H es solo una representación de baja dimensión de alta dimensión X de donde X Se puede restaurar con alta precisión. Puedes pensarlo como un algoritmo de compresión.
- Otros algoritmos similares a PCA (descomposiciones de matriz) se utilizan ampliamente en los sistemas de recomendación, para convertir una matriz muy escasa de "qué productos fueron comprados por qué usuarios" en representaciones compactas y densas de usuarios y productos, que se pueden utilizar para predecir nuevos transacciones
Otros algoritmos, como la red neuronal, aprenden transformaciones no lineales, pero aún dependen en gran medida de las operaciones lineales (es decir, la matriz de matriz o la multiplicación de matriz-vector). Una simple red neuronal puede verse como Y= sigma(W2 sigma(W1X)) - utiliza dos multiplicaciones matriciales y una transformación no lineal sigma entre ellos
Entrenamiento
Para entrenar un algoritmo, generalmente define una función de pérdida e intenta optimizarla. La pérdida en sí misma a veces es conveniente escribir en términos de álgebra lineal. Por ejemplo, la pérdida cuadrática (utilizada en el método de mínimos cuadrados) se puede escribir como un producto de puntos (Y− hatY)T(Y− hatY) donde hatY es el vector de tu predicción, y Y es la verdad básica que tratas de predecir. Esta representación es útil, porque nos permite obtener formas de minimizar esta pérdida. Por ejemplo, si usa la regresión lineal con este método de mínimos cuadrados, entonces su solución óptima se parece a W=(XTX)−1XTY . ¡Muchas operaciones lineales en un solo lugar!
Otro ejemplo de solución lineal es PCA, donde los parámetros de interés W son los primeros k vectores propios de la matriz XTX , correspondiente a los valores propios más grandes.
Si entrena redes neuronales, generalmente no hay una solución analítica para los parámetros óptimos, y debe usar el descenso de gradiente. Para hacer esto, necesita diferenciar la pérdida con los parámetros, y al hacerlo, nuevamente debe multiplicar las matrices, porque si pérdida=f(g(h(w))) (una función compuesta), entonces frac pérdidaparcial partialw=f′ timesg′ timesh′ , y todas estas derivadas son matrices o vectores, porque g y h son multidimensionales
El descenso de gradiente simple está bien, pero es lento. Puede acelerarlo aplicando métodos de optimización newtonianos. El método básico es Wt+1=Wt−A−1B donde B y A son el vector de las primeras derivadas y la matriz de las segundas derivadas de su pérdida son los parámetros W . Pero puede ser inestable y / o computacionalmente costoso, y es posible que deba presentar sus aproximaciones (como L-BFGS) que usan álgebra lineal aún más complicada para una optimización rápida y económica.
Análisis
Verá que el álgebra lineal le ayuda a aplicar y entrenar sus modelos. Pero la verdadera ciencia (o magia) comienza cuando su modelo se niega a entrenar o predecir bien. El aprendizaje puede atascarse en un mal momento o de repente volverse loco. En el aprendizaje profundo, a menudo ocurre debido a gradientes que desaparecen o explotan. Es decir, cuando calcula el gradiente, multiplica muchas matrices, y luego suceden cosas extrañas, y necesita saber qué, por qué y cómo superarlo. Una de las formas de inspeccionar lo que está sucediendo es realizar un seguimiento de los valores propios de las matrices que está tratando de invertir. Si están cerca de 0, o simplemente son muy diferentes, entonces la inversión de esta matriz puede conducir a resultados inestables. Si multiplica muchas matrices con valores propios grandes, el producto explota. Cuando estos valores propios son pequeños, el resultado se desvanece a cero.
Se inventaron diferentes técnicas, como la regularización L1 / L2, la normalización por lotes y el LSTM para combatir estos problemas con la convergencia. Si desea aplicar cualquiera de esas técnicas, necesita una forma de medir si ayudan mucho para su problema particular. Y si quieres inventar esa técnica tú mismo, necesitas una forma de demostrar que puede funcionar. Esto nuevamente implica mucha manipulación con vectores, matrices, sus descomposiciones, etc.
Conclusión
Puedes ver que cuanto más profundizas en el aprendizaje automático, más álgebra lineal ves allí. Para aplicar modelos previamente entrenados, debe convertir al menos sus datos a un formato compatible con álgebra lineal (por ejemplo, numpy.array
en Python). Si necesita implementar un algoritmo de entrenamiento, o incluso inventar uno nuevo, prepárese para multiplicar, invertir y descomponer muchas matrices.
En este texto, he hecho referencia a algunos conceptos con los que puede no estar familiarizado. Esta bien Lo que este artículo te alienta es buscar las palabras desconocidas y ampliar tus horizontes.
Por cierto, sería interesante escuchar algunas historias suyas en los comentarios sobre cómo encontró aplicaciones de álgebra lineal en su propio trabajo o estudio.
PD: En uno de mis artículos , argumentaba que no tienes que aprender matemáticas para tener éxito (sigue siendo un estereotipo popular en Rusia), incluso si trabajas en TI. Sin embargo, nunca dije que las matemáticas son inútiles (de lo contrario, no las estaría enseñando todo el tiempo). Por lo general, no es la clave del éxito, pero en muchos casos ayuda, y en algunos (como desarrollar modelos de aprendizaje profundo), es esencial.
PPS ¿Por qué en inglés? Bueno, solo porque puedo. La pregunta original se hizo en este idioma y en inglés la respondí. Y luego decidió que la respuesta podría llevarse al nivel de un pequeño artículo público.
¿Por qué entonces Habr, y no, por ejemplo, Medium? En primer lugar, a diferencia del Medio, las fórmulas normalmente son compatibles aquí. En segundo lugar, el propio Habr iba a ingresar a los mercados internacionales, entonces, ¿por qué no tratar de colocar un contenido en inglés aquí?
Veamos que pasa.