Article de reference

Tenseur (apprentissage automatique)

En apprentissage automatique , le terme tenseur fait référence de manière informelle à deux concepts différents (i) une manière d'organiser les données et (ii) une transformatio...

En apprentissage automatique , le terme tenseur fait référence de manière informelle à deux concepts différents (i) une manière d'organiser les données et (ii) une transformation multilinéaire (tensorielle). Les données peuvent être organisées dans un tableau multidimensionnel ( tableau M -way), appelé de manière informelle « tenseur de données » ; cependant, au sens mathématique strict, un tenseur est une application multilinéaire sur un ensemble d'espaces vectoriels de domaine vers un espace vectoriel de plage. Les observations, telles que les images, les films, les volumes, les sons et les relations entre les mots et les concepts, stockées dans un tableau M -way (« tenseur de données »), peuvent être analysées soit par des réseaux neuronaux artificiels , soit par des méthodes tensorielles .

La décomposition tensorielle factorise les tenseurs de données en tenseurs plus petits. Les opérations sur les tenseurs de données peuvent être exprimées en termes de multiplication de matrices et de produit de Kronecker . Le calcul des gradients, un aspect crucial de la rétropropagation , peut être effectué à l'aide de bibliothèques logicielles telles que PyTorch et TensorFlow .

Les calculs sont souvent effectués sur des unités de traitement graphique (GPU) utilisant CUDA et sur du matériel dédié tel que le Tensor Processing Unit de Google ou le Tensor Core de Nvidia . Ces développements ont considérablement accéléré les architectures de réseaux neuronaux et augmenté la taille et la complexité des modèles pouvant être formés.

Histoire

Un tenseur est par définition une application multilinéaire. En mathématiques, cela peut exprimer une relation multilinéaire entre des ensembles d'objets algébriques. En physique, les champs de tenseurs , considérés comme des tenseurs en chaque point de l'espace, sont utiles pour exprimer des mécanismes tels que la contrainte ou l'élasticité . En apprentissage automatique, l'utilisation exacte des tenseurs dépend de l'approche statistique utilisée.

En 2001, le domaine du traitement du signal et des statistiques utilisait des méthodes tensorielles. Pierre Comon passe en revue l'adoption précoce des méthodes tensorielles dans les domaines des télécommunications, de la radiosurveillance, de la chimiométrie et du traitement des capteurs. Les méthodes de rang de tenseur linéaire (telles que Parafac/CANDECOMP) ont analysé des réseaux M-way (« tenseurs de données ») composés de statistiques d'ordre supérieur qui ont été utilisés dans des problèmes de séparation de sources aveugles pour calculer un modèle linéaire des données. Il a noté plusieurs limitations précoces dans la détermination du rang de tenseur et la décomposition efficace du rang de tenseur.

Au début des années 2000, les méthodes de tenseurs multilinéaires ont fait leur apparition dans la vision par ordinateur, l'infographie et l'apprentissage automatique avec des articles de Vasilescu ou en collaboration avec Terzopoulos, tels que Human Motion Signatures, TensorFaces TensorTexures et Multilinear Projection. L'algèbre multilinéaire, l'algèbre des tenseurs d'ordre supérieur, est un cadre approprié et transparent pour analyser la structure multifactorielle d'un ensemble d'observations et pour résoudre le problème difficile de démêler les facteurs causaux sur la base de statistiques de second ordre ou d'ordre supérieur associées à chaque facteur causal.

L'analyse factorielle tensorielle (multilinéaire) démêle et réduit l'influence de différents facteurs causaux grâce à l'apprentissage de sous-espaces multilinéaires. Lors du traitement d'une image ou d'une vidéo comme un tableau à 2 ou 3 voies, c'est-à-dire « matrice de données/tenseur », les méthodes tensorielles réduisent les redondances spatiales ou temporelles comme le démontrent Wang et Ahuja.

Yoshua Bengio, Geoff Hinton et leurs collaborateurs discutent brièvement de la relation entre les réseaux neuronaux profonds et l'analyse factorielle tensorielle au-delà de l'utilisation de tableaux M-way (« tenseurs de données ») comme entrées. L'une des premières utilisations des tenseurs pour les réseaux neuronaux est apparue dans le traitement du langage naturel . Un seul mot peut être exprimé sous forme de vecteur via Word2vec . Ainsi, une relation entre deux mots peut être codée dans une matrice. Cependant, pour des relations plus complexes telles que sujet-objet-verbe, il est nécessaire de construire des réseaux de plus haute dimension. En 2009, les travaux de Sutskever ont introduit la factorisation tensorielle groupée bayésienne pour modéliser les concepts relationnels tout en réduisant l'espace des paramètres. De 2014 à 2015, les méthodes tensorielles deviennent plus courantes dans les réseaux neuronaux convolutifs (CNN). Les méthodes de tenseur organisent les poids des réseaux neuronaux dans un « tenseur de données », analysent et réduisent le nombre de poids des réseaux neuronaux. Lebedev et al. ont accéléré les réseaux CNN pour la classification des caractères (la reconnaissance des lettres et des chiffres dans les images) en utilisant des tenseurs de noyau 4D.

Définition

Soit un corps tel que les nombres réels ou les nombres complexes . Un tenseur est une transformation multilinéaire d'un ensemble d'espaces vectoriels de domaine vers un espace vectoriel de domaine :

Ici, et sont des entiers positifs, et est le nombre de modes d'un tenseur (également appelé nombre de voies d'un tableau à plusieurs voies). La dimensionnalité du mode est , pour .

Une image est le résultat d'une transformation tensorielle qui mappe un ensemble de représentations de facteurs causaux à l'espace des pixels. Les méthodes de factorisation tensorielle, telles que la SVD en mode M ou l'ICA en mode M, factorisent un tenseur de données composé d'une collection d'images vectorisées et apprennent un ensemble d'espaces vectoriels ( ) qui couvrent les représentations de facteurs causaux et une transformation tensorielle qui régit l'interaction des facteurs causaux.

En statistique et en apprentissage automatique, une image est vectorisée lorsqu'elle est visualisée comme une observation unique, et une collection d'images vectorisées est organisée en tant que « tenseur de données ». Par exemple, un ensemble d'images faciales avec des pixels qui sont les conséquences de plusieurs facteurs causaux, tels qu'une géométrie faciale , une expression , une condition d'éclairage et une condition de visualisation peut être organisé en un tenseur de données (c'est-à-dire un tableau multidirectionnel) où sont le nombre total de géométries faciales, sont le nombre total d'expressions, sont le nombre total de conditions d'éclairage et sont le nombre total de conditions de visualisation. Les méthodes de factorisation de tenseur telles que TensorFaces et l'analyse multilinéaire des composants indépendants (tenseurs) factorisent le tenseur de données en un ensemble d'espaces vectoriels qui couvrent les représentations des facteurs causaux, où une image est le résultat d'une transformation tensorielle qui mappe un ensemble de représentations des facteurs causaux à l'espace des pixels.

Une image, qui est un tableau à 2 voies, est représentée en termes d'espace de colonnes d'image, d'espace de lignes d'image et de coefficients PCA normalisés. Ces espaces sont calculés en factorisant un tenseur de données composé d'une collection d'images qui sont traitées comme un tableau à 2 voies ou à 3 voies

Une autre approche de l'utilisation des tenseurs dans l'apprentissage automatique consiste à intégrer directement différents types de données. Par exemple, une image en niveaux de gris, généralement représentée sous la forme d'un tableau discret à 2 voies avec une dimensionnalité où sont le nombre de lignes et le nombre de colonnes. Lorsqu'une image est traitée comme un tableau à 2 voies ou un tenseur de 2e ordre (c'est-à-dire comme une collection d'observations de colonnes/lignes), les méthodes de factorisation des tenseurs calculent l'espace des colonnes de l'image, l'espace des lignes de l'image et les coefficients PCA normalisés ou les coefficients ICA.

De même, une image couleur avec des canaux RVB peut être considérée comme un tenseur de données du 3ème ordre ou un tableau à 3 voies.--------

Dans le traitement du langage naturel, un mot peut être exprimé sous forme de vecteur via l' algorithme Word2vec . Il devient ainsi un tenseur de mode 1

L'intégration de la sémantique sujet-objet-verbe nécessite l'intégration de relations entre trois mots. Étant donné qu'un mot est lui-même un vecteur, la sémantique sujet-objet-verbe pourrait être exprimée à l'aide de tenseurs de mode 3

En pratique, le concepteur de réseaux neuronaux s'occupe principalement de la spécification des plongements, de la connexion des couches de tenseurs et des opérations effectuées sur celles-ci dans un réseau. Les cadres d'apprentissage automatique modernes gèrent automatiquement l'optimisation, la factorisation des tenseurs et la rétropropagation.

En tant que valeurs unitaires

Réseau neuronal avec des tenseurs comme valeurs de nœuds

Les tenseurs peuvent être utilisés comme valeurs unitaires des réseaux neuronaux qui étendent le concept de valeurs scalaires, vectorielles et matricielles à plusieurs dimensions.

La valeur de sortie d'une unité monocouche est la somme du produit de ses unités d'entrée et des poids de connexion filtrés via la fonction d'activation :

Réseau neuronal convolutif avec chaque unité comme image 2D représentée par un tenseur

Si chaque élément de sortie de est un scalaire, alors nous avons la définition classique d'un réseau neuronal artificiel . En remplaçant chaque composant unitaire par un tenseur, le réseau est capable d'exprimer des données de plus grande dimension telles que des images ou des vidéos :

L'utilisation de tenseurs pour remplacer les valeurs unitaires est courante dans les réseaux neuronaux convolutionnels où chaque unité peut être une image traitée via plusieurs couches. En intégrant les données dans des tenseurs, ces structures de réseau permettent l'apprentissage de types de données complexes.

Dans des couches entièrement connectées

Deux couches d'un réseau neuronal entièrement connecté et son expression sous forme de produit tenseur Kronecker

Les tenseurs peuvent également être utilisés pour calculer les couches d'un réseau neuronal entièrement connecté, où le tenseur est appliqué à la couche entière au lieu des valeurs unitaires individuelles.

La valeur de sortie d'une unité monocouche est la somme du produit de ses unités d'entrée et des poids de connexion filtrés via la fonction d'activation :

Les vecteurs et les valeurs de sortie peuvent être exprimés sous forme de tenseurs de mode 1, tandis que les poids cachés peuvent être exprimés sous forme de tenseurs de mode 2. Dans cet exemple, les valeurs unitaires sont des scalaires tandis que le tenseur prend les dimensions des couches du réseau :

Dans cette notation, les valeurs de sortie peuvent être calculées comme un produit tensoriel des tenseurs d'entrée et de pondération :

qui calcule la somme-produit comme une multiplication tensorielle (similaire à la multiplication matricielle).

Cette formulation de tenseurs permet de calculer efficacement l'ensemble de la couche d'un réseau entièrement connecté en mappant les unités et les poids aux tenseurs.

Dans les couches convolutionnelles

Une autre reformulation des réseaux neuronaux permet aux tenseurs d'exprimer les couches de convolution d'un réseau neuronal. Une couche convolutionnelle possède plusieurs entrées, chacune étant une structure spatiale telle qu'une image ou un volume. Les entrées sont convoluées par filtrage avant d'être transmises à la couche suivante. Une utilisation typique consiste à effectuer une détection ou une isolation de caractéristiques dans la reconnaissance d'images.

La convolution est souvent calculée comme la multiplication d'un signal d'entrée avec un noyau de filtre . En deux dimensions, la forme discrète et finie est :

où est la largeur du noyau.

Cette définition peut être reformulée comme un produit matrice-vecteur en termes de tenseurs qui expriment le noyau, les données et la transformée inverse du noyau.

où et sont la transformée inverse, les données et le noyau. La dérivation est plus complexe lorsque le noyau de filtrage comprend également une fonction d'activation non linéaire telle que sigmoïde ou ReLU.

Les poids cachés de la couche de convolution sont les paramètres du filtre. Ceux-ci peuvent être réduits avec une couche de regroupement qui réduit la résolution (taille) des données et peut également être exprimé sous forme d'opération tensorielle.

Factorisation tensorielle

Une contribution importante des tenseurs dans l'apprentissage automatique est la capacité à factoriser les tenseurs pour décomposer les données en facteurs constitutifs ou réduire les paramètres appris. Les techniques de modélisation des tenseurs de données proviennent de la décomposition tensorielle linéaire (décomposition CANDECOMP/Parafac) et des décompositions tensorielles multilinéaires (Tucker).

Décomposition de Tucker

Décomposition de Tucker d'un tenseur

La décomposition de Tucker , par exemple, prend un tableau à 3 voies et décompose le tenseur en trois matrices et un tenseur plus petit . La forme des matrices et du nouveau tenseur est telle que le nombre total d'éléments est réduit. Les nouveaux tenseurs ont des formes

Le tenseur d'origine peut alors être exprimé comme le produit tensoriel de ces quatre tenseurs :

Dans l'exemple montré dans la figure, les dimensions des tenseurs sont

: I=8, J=6, K=3, : I=8, P=5, : J=6, Q=4, : K=3, R=2, : P=5, Q=4, R=2.

Le nombre total d'éléments dans la factorisation de Tucker est

Le nombre d'éléments dans l'original est de 144, ce qui entraîne une réduction des données de 144 à 110 éléments, soit une réduction de 23 % des paramètres ou de la taille des données. Pour des tenseurs initiaux beaucoup plus grands, et en fonction du rang (redondance) du tenseur, les gains peuvent être plus importants.

Le travail de Rabanser et al. fournit une introduction aux tenseurs avec plus de détails sur l’extension de la décomposition de Tucker aux dimensions N au-delà de l’exemple de mode 3 donné ici.

Trains de tenseurs

Une autre technique de décomposition des tenseurs consiste à réécrire le tenseur initial sous la forme d'une séquence (train) de tenseurs de plus petite taille. Un train de tenseurs (TT) est une séquence de tenseurs de rang réduit, appelés facteurs canoniques . Le tenseur d'origine peut être exprimé comme la somme-produit de la séquence.

Développée en 2011 par Ivan Oseledts, l'auteur observe que la décomposition de Tucker est « adaptée aux petites dimensions, en particulier au cas tridimensionnel. Pour les grands d, elle n'est pas adaptée. » Ainsi, les trains de tenseurs peuvent être utilisés pour factoriser des tenseurs plus grands dans des dimensions supérieures.

Graphes tensoriels

L'architecture unifiée des données et la différenciation automatique des tenseurs ont permis des conceptions de niveau supérieur de l'apprentissage automatique sous la forme de graphes tensoriels. Cela conduit à de nouvelles architectures, telles que les réseaux convolutionnels tensoriels-graphes (TGCN), qui identifient des associations hautement non linéaires dans les données, combinent plusieurs relations et évoluent avec élégance, tout en restant robustes et performantes.

Ces développements ont un impact sur tous les domaines de l'apprentissage automatique, tels que l'exploration de texte et le clustering, les données variables dans le temps et les réseaux neuronaux dans lesquels les données d'entrée sont un graphique social et les données changent de manière dynamique.

Matériel

Les tenseurs offrent un moyen unifié d'entraîner des réseaux neuronaux pour des ensembles de données plus complexes. Cependant, l'entraînement est coûteux à calculer sur du matériel CPU classique.

En 2014, Nvidia a développé cuDNN, CUDA Deep Neural Network, une bibliothèque pour un ensemble de primitives optimisées écrites dans le langage parallèle CUDA. CUDA et donc cuDNN fonctionnent sur des GPU dédiés qui implémentent un parallélisme massif unifié dans le matériel. Ces GPU n'étaient pas encore des puces dédiées aux tenseurs, mais plutôt du matériel existant adapté au calcul parallèle dans l'apprentissage automatique.

Entre 2015 et 2017, Google a inventé l'unité de traitement des tenseurs (TPU). Les TPU sont des unités matérielles dédiées à fonction fixe spécialisées dans les multiplications de matrices nécessaires aux produits tensoriels. Plus précisément, elles implémentent un ensemble de 65 536 unités de multiplication capables d'effectuer un produit somme-matriciel 256x256 en un seul cycle d'instruction global.

Plus tard en 2017, Nvidia a sorti son propre Tensor Core avec l'architecture GPU Volta. Chaque Tensor Core est une micro-unité qui peut effectuer un produit somme de matrice 4x4. Il y a huit cœurs tenseurs pour chaque bloc de mémoire partagée (SM). La première carte GPU GV100 possède 108 SM, ce qui donne 672 cœurs tenseurs. Cet appareil a accéléré l'apprentissage automatique de 12 fois par rapport aux GPU Tesla précédents. Le nombre de cœurs tenseurs augmente à mesure que le nombre de cœurs et d'unités SM continue de croître dans chaque nouvelle génération de cartes.

Le développement du matériel GPU, combiné à l'architecture unifiée des cœurs de tenseurs, a permis la formation de réseaux neuronaux beaucoup plus grands. En 2022, le plus grand réseau neuronal était le PaLM de Google avec 540 milliards de paramètres appris (poids du réseau) (l'ancien modèle de langage GPT-3 a plus de 175 milliards de paramètres appris qui produisent un texte de type humain ; la taille n'est pas tout, le modèle Alpaca 2023 beaucoup plus petit de Stanford prétend être meilleur, LLaMA 2023 de Meta/Facebook , la variante plus petite de 7 milliards de paramètres). Le chatbot ChatGPT , très populaire, est construit sur GPT-3.5 (et après une mise à jour GPT-4 ) en utilisant l'apprentissage supervisé et par renforcement.

Original text
Rate this translation
Your feedback will be used to help improve Google Translate