Lorsque vous étudiez un sujet abstrait comme l'algèbre linéaire, vous vous demandez peut-être: pourquoi avez-vous besoin de tous ces vecteurs et matrices? Comment allez-vous appliquer toutes ces inversions, transpositions, vecteurs propres et valeurs propres à des fins pratiques?
Eh bien, si vous étudiez l'algèbre linéaire dans le but de faire de l'apprentissage automatique, c'est la réponse pour vous.
En bref, vous pouvez utiliser l'algèbre linéaire pour l'apprentissage automatique à 3 niveaux différents:
- application d'un modèle aux données;
- formation du modèle;
- comprendre comment cela fonctionne ou pourquoi cela ne fonctionne pas.

Je suppose que vous, le lecteur, avez au moins une vague idée des concepts d' algèbre linéaire (tels que les vecteurs, les matrices, leurs produits, les matrices inverses, les vecteurs propres et les valeurs propres) et les problèmes d' apprentissage automatique (tels que la régression, la classification et la réduction de dimensionnalité) . Sinon, c'est peut-être maintenant le bon moment pour en savoir plus sur Wikipédia, ou même pour vous inscrire à un MOOC sur ces sujets.
Candidature
Ce que l’apprentissage automatique fait habituellement est d’adapter une fonction , où est les données d'entrée, est une représentation utile de ces données, et sont des paramètres supplémentaires, dont dépend notre fonction et qui doivent être appris. Quand nous avons cette représentation , nous pouvons l'utiliser par exemple pour reconstruire les données originales (comme dans l'apprentissage non supervisé), ou pour prédire une certaine valeur d'intérêt, (comme dans l'apprentissage supervisé).
Tout , , et sont généralement des tableaux numériques et peuvent au moins être stockés sous forme de vecteurs et de matrices. Mais le stockage seul n'est pas important. L'important est que notre fonction est souvent linéaire, c'est-à-dire . Des exemples de tels algorithmes linéaires sont:
- régression linéaire, où . C'est une base de référence raisonnable pour les problèmes de régression, et un outil populaire pour répondre à des questions comme "ne affecter , toutes choses étant égales par ailleurs? "
- régression logistique, où . C'est une bonne référence pour les problèmes de classification, et parfois cette référence est difficile à battre.
- analyse en composantes principales, où est juste une représentation de faible dimension de haute dimension , dont peut être restauré avec une grande précision. Vous pouvez le considérer comme un algorithme de compression.
- D'autres algorithmes de type PCA (décompositions matricielles) sont largement utilisés dans les systèmes de recommandation, pour transformer une matrice très rare de "quels produits ont été achetés par quels utilisateurs" en représentations compactes et denses d'utilisateurs et de produits, qui peuvent être utilisées pour prédire de nouveaux transactions.
D'autres algorithmes, comme le réseau de neurones, apprennent les transformations non linéaires, mais reposent toujours fortement sur des opérations linéaires (c'est-à-dire la multiplication matrice-matrice ou matrice-vecteur). Un simple réseau de neurones peut ressembler à - il utilise deux multiplications matricielles et une transformation non linéaire entre eux.
La formation
Pour former un algorithme, vous définissez généralement une fonction de perte et essayez de l'optimiser. La perte elle-même est parfois commode à écrire en termes d'algèbre linéaire. Par exemple, la perte quadratique (utilisée dans la méthode des moindres carrés) peut être écrite comme un produit scalaire , où est le vecteur de votre prédiction, et est la vérité fondamentale que vous essayez de prédire. Cette représentation est utile, car elle nous permet de trouver des moyens de minimiser cette perte. Par exemple, si vous utilisez la régression linéaire avec cette méthode des moindres carrés, votre solution optimale ressemble à . Beaucoup d'opérations linéaires en un seul endroit!
Un autre exemple de solution linéaire est l'ACP, où les paramètres d'intérêt sont les premiers vecteurs propres de la matrice , correspondant aux plus grandes valeurs propres.
Si vous entraînez des réseaux de neurones, il n'y a généralement pas de solution analytique pour les paramètres optimaux et vous devez utiliser une descente de gradient. Pour ce faire, vous devez différencier la perte par rapport aux paramètres, et ce faisant, vous devez à nouveau multiplier les matrices, car si (une fonction composite), puis , et tous ces dérivés sont des matrices ou des vecteurs, car et sont multidimensionnels.
Une simple descente en gradient est OK, mais elle est lente. Vous pouvez l'accélérer en appliquant des méthodes d'optimisation newtoniennes. La méthode de base est , où et sont le vecteur des premières dérivées et la matrice des dérivées secondes de votre perte par rapport aux paramètres . Mais il peut être instable et / ou coûteux en calcul, et vous devrez peut-être trouver ses approximations (comme L-BFGS) qui utilisent une algèbre linéaire encore plus impliquée pour une optimisation rapide et bon marché.
Analyse
Vous voyez que l'algèbre linéaire vous aide à appliquer et à former vos modèles. Mais la vraie science (ou magie) commence lorsque votre modèle refuse de s'entraîner ou de bien prédire. L'apprentissage peut rester bloqué à un mauvais moment ou devenir soudainement fou. Dans l'apprentissage profond, cela se produit souvent en raison de la disparition ou de l'explosion des gradients. Autrement dit, le lactosérum vous calculez le gradient, vous multipliez beaucoup de matrices, puis des choses étranges se produisent, et vous devez savoir quoi, pourquoi et comment le surmonter. L'une des façons d'inspecter ce qui se passe est de garder une trace des valeurs propres des matrices que vous essayez d'inverser. S'ils sont proches de 0, ou tout simplement très différents, alors l'inversion de cette matrice peut conduire à des résultats instables. Si vous multipliez plusieurs matrices avec de grandes valeurs propres, le produit explose. Lorsque ces valeurs propres sont petites, le résultat s'estompe à zéro.
Différentes techniques, comme la régularisation L1 / L2, la normalisation par lots et le LSTM ont été inventées afin de lutter contre ces problèmes de convergence. Si vous souhaitez appliquer l'une de ces techniques, vous avez besoin d'un moyen de mesurer si elles aident beaucoup à votre problème particulier. Et si vous voulez inventer une telle technique vous-même, vous avez besoin d'un moyen de prouver qu'elle peut fonctionner. Cela implique encore beaucoup de manipulations avec les vecteurs, les matrices, leurs décompositions, etc.
Conclusion
Vous pouvez voir que plus vous plongez dans l'apprentissage automatique, plus l'algèbre est linéaire. Pour appliquer des modèles pré-formés, vous devez au moins convertir vos données dans un format compatible avec l'algèbre linéaire (par exemple numpy.array
en Python). Si vous devez implémenter un algorithme de formation, ou même en inventer un nouveau, préparez-vous à multiplier, inverser et décomposer de nombreuses matrices.
Dans ce texte, j'ai fait référence à certains concepts que vous ne connaissez peut-être pas. Ça va. Ce que cet article vous encourage, c'est de rechercher les mots inconnus et d'élargir vos horizons.
Soit dit en passant, il serait intéressant d'entendre quelques histoires de votre part dans les commentaires, sur la façon dont vous avez rencontré des applications de l'algèbre linéaire dans votre propre travail ou étude.
PS Dans un de mes articles , j'ai soutenu que vous n'avez pas à apprendre les mathématiques pour réussir (c'est toujours un stéréotype populaire en Russie), même si vous travaillez dans l'informatique. Cependant, je n'ai jamais dit que les mathématiques étaient inutiles (sinon, je ne les enseignerais pas tout le temps). Habituellement, ce n'est pas la clé du succès, mais dans de nombreux cas, cela aide, et dans quelques-uns (comme le développement de modèles d'apprentissage en profondeur), il est essentiel.
PPS Pourquoi en anglais?! Eh bien, juste parce que je peux. La question d'origine a été posée dans cette langue, et en anglais, j'ai répondu. Et puis il a décidé que la réponse pourrait être portée au niveau d'un petit article public.
Pourquoi alors Habr, et non, par exemple, Medium? Tout d'abord, contrairement au Medium, les formules sont normalement prises en charge ici. Deuxièmement, Habr lui-même allait pénétrer les marchés internationaux, alors pourquoi ne pas essayer de placer un morceau de contenu en anglais ici?
Voyons ce qui se passe.