Décomposition en valeurs singulières

Un article de Wikipédia, l'encyclopédie libre.

En mathématiques, le procédé d'algèbre linéaire de décomposition en valeurs singulières (ou SVD, de l'anglais : Singular Value Decomposition) d'une matrice est un outil important de factorisation des matrices rectangulaires réelles ou complexes. Ses applications s'étendent du traitement du signal aux statistiques, en passant par la météorologie.

Le théorème spectral énonce qu'une matrice normale peut être diagonalisée de façon unique par une base de vecteurs propres. On peut voir cette décomposition comme une généralisation du théorème spectral à des matrices arbitraires, qui ne sont pas nécessairement carrées.

Sommaire

[modifier] Contexte mathématique

[modifier] Énoncé du théorème

Soit M une matrice m×n dont les coefficients appartiennent au corps K, où K = R ou K = C. Alors il existe une factorisation de la forme :

M = U\Sigma V^*\,\!,

avec U une matrice unitaire m×m sur K, Σ une matrice m×n dont les coefficients diagonaux sont des réels positifs et tous les autres sont nuls (c'est donc une matrice diagonale dont on impose que les coefficients soient positifs), et V* est la matrice adjointe à V, donc une matrice unitaire n×n sur K. On appelle cette factorisation la décomposition en valeurs singulières de M.

  • La matrice V contient un ensemble de vecteurs de base orthonormés pour M, dits « d'entrée » ou « d'analyse » ;
  • La matrice U contient un ensemble de vecteurs de base orthonormés pour M, dits « de sortie » ;
  • La matrice Σ contient les valeurs singulières de la matrice M.

Une convention courante est de ranger les valeurs Σi,i par ordre décroissant. Alors, la matrice diagonale Σ est déterminée de façon unique par M (mais U et V ne le sont pas).

[modifier] Existence

Une valeur propre λ d'une matrice est caractérisée par la relation M u = λ u. Quand M est hermitienne, une autre caractérisation différente est envisageable. Soit M une matrice n × n symétrique réelle. On pose f: RnR telle que f(x) = xT M x. Cette fonction est continue et atteint son maximum en un certain vecteur u quand elle est restreinte à la boule unité fermée {||x|| ≤ 1}. D'après le théorème des multiplicateurs de Lagrange, u vérifie :

\nabla f = \nabla \; x^T M x = \lambda \cdot \nabla \; x^T x.

On montre facilement que la relation ci-dessus donne M u = λ u. Ainsi, λ est la plus grande valeur propre de M. Les mêmes opérations sur le complément orthogonal de u donne la seconde plus grande valeur, et ainsi de suite. Le cas d'une matrice complexe hermitienne est similaire, avec f(x) = x* M x une fonction de 2n variables à valeurs réelles.

Les valeurs singulières sont similaires, en tant qu'elles peuvent être décrites de façon algébrique ou à partir de principes variationnels. En revanche, au contraire du cas des valeurs propres, l'hermiticité et la symétrie de M ne sont plus nécessaires.

[modifier] Preuve utilisant l'algèbre

Soit M une matrice complexe m×n. Alors M*M est positive semi-définie, donc hermitienne. D'après le théorème spectral, il existe une matrice unitaire carrée de côté n, notée V, telle que :

V^* M^* M V = \begin{pmatrix} D & 0 \\ 0 & 0\end{pmatrix},

D est diagonale et définie positive. En écrivant V de façon appropriée :

\begin{pmatrix} V_1 ^* \\ V_2 ^*\end{pmatrix} M^* M \begin{pmatrix} V_1 & V_2 \end{pmatrix}
= \begin{pmatrix} V_1 ^* M^* M V_1 & V_1 ^* M^* M V_2 \\ V_2 ^* M^* M V_1 & V_2 ^* M^* M V_2  \end{pmatrix}
= \begin{pmatrix} D & 0 \\ 0 & 0\end{pmatrix}.

Ainsi, V*1M*MV1 = D, et MV2 = 0. On pose :

U_1 = D^{-1/2} V_1^* M^*.

Alors on a :

U_1 M V_1 = D^{1/2}. \,

On constate que c'est presque le résultat attendu, à ceci près que U1 et V1 ne sont pas unitaires dans le cas général. U1 est une isométrie partielle (U1U*1 = I ) alors que V1 est une isométrie (V*1V1 = I ). Pour achever la démonstration, on doit en quelques sortes « compléter » ces matrices pour les rendre unitaires.

V2 convient pour V1. De même, on peut choisir U2 tel que :

\begin{pmatrix} U_1 \\ U_2 \end{pmatrix}

soit unitaire. Un calcul montre que :


\begin{pmatrix} U_1 \\ U_2 \end{pmatrix} M \begin{pmatrix} V_1 & V_2 \end{pmatrix} 
= \begin{pmatrix} D^{1/2} & 0 \\ 0 & 0\end{pmatrix} ,

ce qui correspond au résultat attendu.

On aurait également pu commencer la démonstration en diagonalisant MM* au lieu de M*M, on aurait alors montré directement que MM* et M*M ont même valeurs propres non-nulles.

[modifier] Caractérisation alternative

Les valeurs singulières peuvent également être caractérisées comme maxima de uTMv, considérée comme une fonction de u et v, sur des sous-espaces particuliers. Les vecteurs singuliers sont les valeurs de u et v pour lesquelles ces maxima sont atteints.

Soit M une matrice réelle m × n. Soit Sm − 1 et Sn − 1 l'ensemble des vecteurs unitaires (selon la norme 2) de Rm et Rn respectivement. On pose la fonction :

\sigma(u,v) = u^{T} M v \,,

pour les vecteurs uSm − 1 et vSn − 1.

On considère la fonction σ restreinte à Sm − 1 × Sn − 1. Puisqu'à la fois Sm − 1 et Sn − 1 sont des ensembles compacts, leur produit est également compact. En outre, puisque σ est continue, elle atteint son maximum pour au moins une paire de vecteurs uSm − 1 et vSn − 1. Ce maximum est noté σ1, et les vecteurs correspondants sont notés u1 et v1. Puisque σ1 est la plus grande valeur de σ(u,v), elle est positive : si elle était négative, en changeant le signe de u1 ou de v1, on la rendrait positive - et donc plus grande.

Lemme — u1 et v1 sont respectivement vecteurs singuliers à gauche et à droite pour M associés à σ1.

D'autres vecteurs singuliers et valeurs singulières peuvent être obtenus en maximisant σ(u, v) sur u, v, qui sont orthogonaux à u1 et v1, respectivement.

On peut de même traiter le cas de matrices complexes.

[modifier] Valeurs singulières et vecteurs singuliers

Un réel positif σ est appelé valeur singulière de M si et seulement s'il existe un vecteur unitaire u dans Km et un vecteur unitaire v dans Kn tel que :

Mv = \sigma u \, et  M^{*} u = \sigma v. \,\!

Les vecteurs u et v sont appelés vecteur singulier à gauche et vecteur singulier à droite pour σ, respectivement.

Dans toute décomposition en valeurs singulières,

M = U\Sigma V^{*} \,\!,

les coefficients diagonaux de Σ sont égaux aux valeurs singulières de M. Les colonnes de U et de V sont, respectivement, vecteur singulier à gauche et à droite pour les valeurs singulières correspondantes.

Par conséquent, le théorème ci-dessus énonce que :

  • Une matrice M m × n possède au moins 1 et au plus p = min(m,n) valeurs singulières distinctes ;
  • Il est toujours possible de trouver une base unitaire pour Km constituée des vecteurs singuliers à gauche de M ;
  • Il est toujours possible de trouver une base unitaire pour Kn constituée des vecteurs singuliers à droite de M ;

Une valeur singulière pour laquelle on peut trouver deux vecteurs singuliers à gauche (respectivement, à droite) qui ne sont pas linéairements indépendants est dite dégénérée.

Les valeurs singulières non-dégénérées ont toujours un unique vecteur singulier à gauche et à droite, à un déphasage près, c’est-à-dire à une multiplication par un facteur de la forme eiφ près (pour des réels, à un signe près). Par conséquent, si toutes les valeurs singulières de M sont non-dégénérées et non-nulles, alors sa décomposition en valeurs singulières est unique, à une multiplication d'une colonne de U et de la colonne de V correspondante par un même de déphasage.

Les valeurs singulières dégénérées, par définition, possèdent plusieurs vecteurs singuliers. De plus, si u1 et u2 sont deux vecteurs singuliers à gauche qui correspondent à une même valeur singulière σ, alors tout vecteur unitaire obtenu par combinaison linéaire de ces deux vecteurs est également un vecteur singulier à gauche pour σ. Il en est de même pour les vecteurs singuliers à droites. Ainsi, si M possède des valeurs singulières dégénérées, alors sa décomposition en valeurs singulières n'est pas unique.

[modifier] Lien avec la décomposition en valeurs propres

La décomposition en valeurs singulières est très générale, dans le sens où elle s'applique à toute matrice rectangulaire m × n. La décomposition en valeurs propres, en revanche, ne fonctionne que pour certaines matrices carrées. Néanmoins, quand elles sont toutes les deux définies, elles sont liées.

Dans le cas d'une matrice M hermitienne semi-définie positive, c'est-à-dire dont toutes les valeurs propres sont des réels positifs, alors les valeurs singulières et vecteurs singuliers correspondent aux valeurs propres et vecteurs propres de M :

M = V \Lambda V^{*}\,

Plus généralement, étant donnée une décomposition en valeurs singulières de M, alors on a :

M^{*} M = V \Sigma^{*} U^{*}\, U \Sigma V^{*} = V (\Sigma^{*} \Sigma) V^{*}\, et M M^{*} = U \Sigma V^{*} \, V \Sigma^{*} U^{*} = U (\Sigma \Sigma^{*}) U^{*}\,

Le côté droit de ces relations décrit la décomposition en valeurs propres du côté gauche. Ainsi, le carré des valeurs singulières non-nulles de M est égal au carré des valeurs propres non-nulles de M * M et de MM * . En outre, les colonnes de U (vecteurs singuliers à gauche) sont vecteurs propres pour MM * , et les colonnes de V (vecteurs singuliers à droite) sont vecteurs propres de M * M.

[modifier] Interprétation géométrique

Puisque U et V sont unitaires, on sait que les colonnes u1,...,um de U forme une base orthonormée de Km et que les colonnes v1,...,vn de V forment une base orthonormée de Kn (par rapport au produit scalaire sur ces espaces).

La transformation linéaire T: KnKm, qui à chaque vecteur x associe Mx, a une expression relativement simple dans ces bases orthonormées : T(vi) = σi ui, pour i = 1,...,min(m,n), où σi est le i-ème coefficient diagonal de Σ, et T(vi) = 0 pour i > min(m,n).

Le contenu géométrique du théorème de décomposition en valeurs singulières peut être résumé ainsi : pour toute application linéaire T : KnKm, on peut trouver une base orthonormale pour Kn et une base orthonormale pour Km telles que T associe au i-ème vecteur de base de Kn un multiple positif du i-ème vecteur de base de Km, les vecteurs restants ayant pour image 0. Dans ces bases, l'application T est ainsi représentée par une matrice diagonale dont les coefficients sont des réels positifs.

[modifier] Interprétation statistique

Les valeurs de la diagonale de la matrice Σ, rapidement décroissantes, peuvent être comprises comme des coefficients d'énergie. En sélectionnant uniquement les premières, on peut construire un modèle simplifié, empirique, décrivant les données.
Les valeurs de la diagonale de la matrice Σ, rapidement décroissantes, peuvent être comprises comme des coefficients d'énergie. En sélectionnant uniquement les premières, on peut construire un modèle simplifié, empirique, décrivant les données.

On peut également interpréter cette décomposition dans l'esprit de l'étude statistique d'un ensemble de données. Alors, les principales colonnes de U représentent les tendances de l'ensemble d'étude (les vecteurs de U représentent les « directions de plus grande variation » de l'ensemble). Les valeurs diagonales de Σ sont alors analogues à l' « énergie » ou la « représentativité » qui va pondérer ces comportements ; elles décroissent d'autant plus vite que l'ensemble statistique est ordonné.

On peut considérer, par exemple dans l'optique du data mining, que les informations « importantes » de l'ensemble sont celles qui présentent une structure plus marquée. Alors, en annulant la diagonale de Σ au delà d'un certain indice, puis en reconstituant la matrice de départ, on obtient des données filtrées, représentant l'information dominante de l'ensemble de départ. De façon équivalente, on peut considérer nulles des données d'énergie inférieure à un certain seuil.

Effet de la décomposition SVD sur un ensemble de données, ici la largeur (W) et la hauteur (L) de visages humains. Les vecteurs U1 et U2 sont les deux premiers de la matrice U.
Effet de la décomposition SVD sur un ensemble de données, ici la largeur (W) et la hauteur (L) de visages humains. Les vecteurs U1 et U2 sont les deux premiers de la matrice U.

Ainsi, la SVD permet de construire un modèle empirique, sans théorie sous-jacente, d'autant plus précis qu'on y injecte de termes.

Il est par ailleurs possible de reconstruire, en utilisant une base de vecteurs singuliers d'un premier jeu de données, un autre jeu de données avec plus ou moins de précision, afin de déterminer la similarité entre les deux. Selon ce principe, des systèmes de décomposition, de reconnaissance et de reconstruction faciale ont été développés. [1]

L'efficacité de la méthode dépend en particulier de la manière dont on lui présente les informations. Dans l'exemple d'un visage, si on utilise « bêtement » la luminosité des différents pixels d'une photographie pour construire une base de vecteurs singuliers, alors il sera difficile de reconstruire le même visage dans une pose légèrement différente (ou si l'éclairement du visage a varié) : les pixels ont changé - parfois beaucoup - mais pas l'information implicite (à savoir le visage). On préfère, dans ces domaines d'application, traiter les données dans l'espace, d'où l'ajout d'un système de reconnaissance en 3D, qui permet d'« expliquer » les variations observées en reliant celles-ci, et de les relier aux données connues. [1]

[modifier] Histoire

La décomposition en valeurs singulières fut développée à l'origine par les mathématiciens étudiant la géométrie différentielle, qui désiraient déterminer si une forme bilinéaire réelle pouvait en égaler une autre par des transformations orthogonales indépendantes des deux espaces concernés.

Eugenio Beltrami et Camille Jordan ont découvert indépendamment, en 1873 et 1874 respectivement[2] , que les valeurs singulières des formes bilinéaires, représentées sous forme matricielle, constituaient un ensemble complet d'invariants pour les formes bilinéaires subissant des substitutions orthogonales.

James Joseph Sylvester s'intéressa également à la décomposition en valeurs singulières en 1889[2] pour les matrices réelles carrées, apparemment indépendamment des travaux de Beltrami et Jordan. Sylvester donna aux valeurs singulières le nom de « multiplicateurs canoniques » d'une matrice A.

Le quatrième mathématicien à l'origine de la découverte de cette décomposition est Autonne[3], en 1915. Il aboutit à ce résultat au travers de la décomposition polaire.

La première preuve de la décomposition en valeurs singulières pour les matrices rectangulaires et complexes est attribuée à Eckart et à Young, en 1936.

En 1907, Erhard Schmidt définit l'analogue des valeurs singulières pour les opérateurs intégrals[2] (qui, à certaines conditions près, sont compacts) ; il semble qu'il ne connaissait pas les travaux parallèles sur les valeurs singulières des matrices de dimension finie. Cette théorie fut développée encore par le mathématicien français Émile Picard en 1910, qui est à l'origine du terme moderne de « valeurs singulières » qu'il notait σk[2],[4].

Avant 1965, aucune méthode efficace de calcul de cette décomposition n'était connue. Gene Golub et William Kahan proposèrent un premier algorithme cette année[5], puis, en 1970, Golub et Christian Reinsch publièrent une variante de l'algorithme Golub/Kahan qui demeure aujourd'hui le plus utilisé[6].

La généralisation de cette décomposition à deux, trois ou N dimensions est encore un sujet de recherche active, puisqu'elle se révèle d'un intérêt majeur dans de nombreux domaines.

[modifier] Exemple

Soit la matrice :

M = \begin{pmatrix}
1 & 0 & 0 & 0 & 2\\
0 & 0 & 3 & 0 & 0\\
0 & 0 & 0 & 0 & 0\\
0 & 4 & 0 & 0 & 0\end{pmatrix}

La décomposition en valeurs singulières de M est alors :


U = \begin{pmatrix}
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & -1\\
1 & 0 & 0 & 0\end{pmatrix} , \quad

\Sigma = \begin{pmatrix}
4 & 0 & 0 & 0 & 0\\
0 & 3 & 0 & 0 & 0\\
0 & 0 & 2.236 & 0 & 0\\
0 & 0 & 0 & 0 & 0\end{pmatrix} , \quad

V^* = \begin{pmatrix}
0 & 1 & 0 & 0 & 0\\
0 & 0 & 1 & 0 & 0\\
0.447 & 0 & 0 & 0 & 0.894\\
0 & 0 & 0 & 1 & 0\\
-0.894 & 0 & 0 & 0 & 0.447\end{pmatrix}

Ainsi, on a :

\begin{pmatrix}
1 & 0 & 0 & 0 & 2\\
0 & 0 & 3 & 0 & 0\\
0 & 0 & 0 & 0 & 0\\
0 & 4 & 0 & 0 & 0\end{pmatrix} 

=

\begin{pmatrix}
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & -1\\
1 & 0 & 0 & 0\end{pmatrix}

\cdot

\begin{pmatrix}
4 & 0 & 0 & 0 & 0\\
0 & 3 & 0 & 0 & 0\\
0 & 0 & 2.236 & 0 & 0\\
0 & 0 & 0 & 0 & 0\end{pmatrix}

\cdot

\begin{pmatrix}
0 & 1 & 0 & 0 & 0\\
0 & 0 & 1 & 0 & 0\\
0.447 & 0 & 0 & 0 & 0.894\\
0 & 0 & 0 & 1 & 0\\
-0.894 & 0 & 0 & 0 & 0.447\end{pmatrix}

On vérifie que Σ ne possède des valeurs non nulles uniquement sur sa diagonale. De plus, comme montré ci-dessous, en multipliant les matrices U et V * par leurs transposées, on obtient la matrice identité :


\begin{pmatrix}
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & -1\\
1 & 0 & 0 & 0\end{pmatrix}

\cdot

\begin{pmatrix}
0 & 0 & 0 & 1\\
0 & 1 & 0 & 0\\
1 & 0 & 0 & 0\\
0 & 0 & -1 & 0\end{pmatrix}

=

\begin{pmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1\end{pmatrix}

Et de même :


\begin{pmatrix}
0 & 0 & 0.447 & 0 & -0.894\\
1 & 0 & 0 & 0 & 0\\
0 & 1 & 0 & 0 & 0\\
0 & 0 & 0 & 1 & 0\\
0 & 0 & 0.894 & 0 & 0.447
\end{pmatrix}
\cdot
\begin{pmatrix}
0 & 1 & 0 & 0 & 0\\
0 & 0 & 1 & 0 & 0\\
0.447 & 0 & 0 & 0 & 0.894\\
0 & 0 & 0 & 1 & 0\\
-0.894 & 0 & 0 & 0 & 0.447\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & 0 & 0 & 0\\
0 & 1 & 0 & 0 & 0\\
0 & 0 & 1 & 0 & 0\\
0 & 0 & 0 & 1 & 0\\
0 & 0 & 0 & 0 & 1\end{pmatrix}

[modifier] Variantes

[modifier] SVD/ICA

Il est courant d'associer les résultats de la décomposition en valeurs singulières à ceux de l'analyse en composantes indépendantes (ou ICA).[7] Les algorithmes qui exploitent une combinaison des deux sont couramment appelés SVD/ICA. En effet, l'analyse en composantes indépendantes tient compte des termes d'ordre supérieurs ou égaux à 2 négligés par la décomposition en valeurs singulières.

[modifier] Décomposition généralisée

Le procédé de décomposition en valeurs singulières généralisée, ou GSVD, étend le concept de la décomposition en valeurs singulières en utilisant des seminormes quadratiques et s'applique aux systèmes linéaires.

Une matrice A m × n et une matrice B p × n réelles ou complexes étant données, leur décomposition généralisée est :

A = UΣ1[0,R]Q *

et

B = VΣ2[0,R]Q *

avec U,V et Q des matrices unitaires et R une matrice triangulaire supérieure, non-singulière, carrée r × r, en notant r \le n le rang de [A * ,B * ].

Par ailleurs, Σ1 et Σ2 sont des matrices m × r et p × r respectivement, nulles partout sauf sur leur diagonale principale, qui contient les réels αi et βi respectivement, tels que :

 0 \le \alpha_i,\beta_i\le 1 et  \alpha_i^2 + \beta_i^2 =1.

Les rapports σi = αi / βi sont analogues aux valeurs singulières. Dans le cas particulier, mais important, où B est carrée et inversible, elles sont les valeurs singulières, U U et V sont alors les vecteurs singuliers de la matrice AB − 1.

[modifier] Décomposition 2D

On peut généraliser la décomposition en valeurs singulières à plusieurs dimensions, en particulier pour traiter les images. Ici, une image puis ses valeurs singulières (3DSVD). Ici encore, elles décroissent rapidement.
On peut généraliser la décomposition en valeurs singulières à plusieurs dimensions, en particulier pour traiter les images. Ici, une image puis ses valeurs singulières (3DSVD). Ici encore, elles décroissent rapidement.

Il est possible d'étendre le concept de décomposition en valeurs singulières à des matrices complexes, ou, de manière équivalente à des matrices constituées de vecteurs 2D. Le calcul est proche de celui de la décomposition en valeurs singulières simple. On parle de décomposition en valeurs singulières 2D, ou 2DSVD.

De même que pour le cas simple, il existe des algorithmes spécialisés qui donnent une approximation d'un ensemble de matrices de rang faible, par exemple des images ou des cartes météorologiques.

Soit X = (x1,...,xn) un ensemble de réels (c'est-à-dire de vecteurs 1D). Pour la décomposition en valeurs singulières, on construit la matrice de covariance et la matrice de Gram :

F = XXT , G = XTX.

En calcule ensuite leurs vecteurs propres U = (u1,...,un) et V = (v1,...,vn). Puisque VVT = I,UUT = I, on a :

X = UUTXVVT = U(UTXV)VT = UΣVT.

En ne gardant que les K vecteurs propres principaux de U et V, on obtient ainsi une approximation de rang faible de la matrice X. Pour les algorithmes de 2DSVD, on travaille avec des matrices 2D, c'est-à-dire un ensemble de matrices (X1,...,Xn) . On construit les matrices de covariance ligne-ligne et colonne-colonne  :

 F=\sum_i X_i X_i^T ,  G=\sum_i X_i^T X_i .

Pour ce faire, on agit de la même façon que pour la décomposition classique, et on calcule leurs vecteurs propres U et V. On approche les Xi :

Xi = UUTXiVVT = U(UTXiV)VT = UMiVT

par une méthode identique à celle de la décomposition en valeurs singulières.

On obtient ainsi une approximation de (X1,...,Xn) par la fonction :

J =  \sum_i \left| X_i - L M_i R^T \right| ^2

Les algorithmes de 2DSVD sont principalement utilisés en compression et représentation d'images. L'utilisation de la SVD pour la compression d'images a toutefois été montrée comme étant sous-optimale par rapport à une DCT, notamment à cause de l'obligation de transmettre la transformée elle-même, en plus des données image[8]. Son rôle dans le domaine de la compression est de fait marginal.

[modifier] Décomposition 3D

En considérant l'utilisation de matrices dépliées, on peut étendre la décomposition en valeurs singulières aux cas tridimensionnels, ou 3DSVD. De tels algorithmes sont utilisés en sismologie, en météorologie et en acoustique, où l'analyse de données 3D (ou 2D dépendant du temps) est souvent nécessaire.

[modifier] Décompositions réduites

Dans les utilisations, il est assez rare de devoir utiliser la forme complète de la décomposition en valeurs singulières, y compris la décomposition complète du noyau sous forme unitaire. Il est en effet courant, et plus rapide, et moins coûteux en terme de mémoire, d'utiliser des versions réduites de la SVD. Les décompositions suivantes sont valables pour les matrices m × n de rang r.

[modifier] SVD « fine »

M = U_n \Sigma_n V^{*} \,

Seuls les n vecteurs colonnes de U correspondant aux vecteurs lignes de V* sont calculés. Les vecteurs colonnes restant de U ne sont pas calculés, ce qui économise une quantité importante de calculs si m \gg n. La matrice Un est ainsi m × n, Σn est diagonale n × n et V est n × n.

La première étape du calcul d'une SVD « fine » est la décomposition QR de M, qui peut être optimisée pour m \gg n.

[modifier] SVD « compacte »

M = U_r \Sigma_r V_r^*

Seuls les r vecteurs colonnes de U et les r vecteurs lignes de V* correspondants aux valeurs singulières non-nulles Σr sont calculés. On obtient un résultat plus rapidement qu'avec la SVD « fine » si n \gg r. La matrice Ur est ainsi m × r, Σr est diagonale r × r et Vr* est r × n.

[modifier] SVD « tronquée »

\tilde{M} = U_t \Sigma_t V_t^*

Seuls les t vecteurs colonnes de U et les t vecteurs lignes de V* correspondants aux t plus grandes valeurs singulières Σr sont calculées. C'est un calcul encore plus rapide que la SVD « fine » si r \gg t. La matrice Ut est ainsi m×t, Σt est diagonale t × t et Vt* est t × n.

Cependant, cette décomposition « tronquée » n'est plus une décomposition exacte de la matrice d'origine M, mais la matrice obtenue, \tilde{M}, est la meilleure approximation de M obtenue par une matrice de rang t.

[modifier] Normes

[modifier] Normes de Ky Fan

La somme des k plus grandes valeurs singulières de M est une norme sur l'espace vectoriel des matrices, appelée norme de Ky Fan ou norme k de M.

La première des normes de Ky Fan, la norme 1 de Ky Fan, est la même que la norme d'opérateur de M en tant qu'opérateur linéaire, selon les normes euclidiennes de Km et Kn. En d'autres termes, la norme 1 de Ky Fan est la norme d'opérateur induite par le produit intérieur euclidien standard l2. Pour cette raison, on l'appelle également norme 2 d'opérateur. On peut facilement vérifier la relation en la norme 1 de Ky Fan et les valeurs singulières. C'est vrai en général, pour un opérateur borné M sur un espace de Hilbert (potentiellement infini) :

\| M \| = \| M^*M \|^{\frac{1}{2}}.

Cependant, dans le cas des matrices, M*M½ est une matrice normale, donc ||M*M||½ est la plus grande valeur propre de M*M½, donc la plus grande valeur singulière de M.

La dernière norme de Ky Fan, qui est égale à la somme de toutes les valeurs singulières, est la norme de trace définie par ||M|| = Tr (M*M)½.

[modifier] Norme de Hilbert-Schmidt

Les valeurs singulières sont liées à une autre norme sur l'espace des opérateurs. On considère le produit intérieur de Hilbert-Schmidt sur les matrices n × n, défini par <M, N> = Tr N*M. Alors la norme induite est ||M|| = <M, M>½ = (Tr M*M)½. La trace étant un invariant d'équivalence unitaire, cela implique que :

\| M \| = \left(\sum s_i ^2\right)^{\frac{1}{2}},

où les si sont les valeurs singulières de M. On l'appelle norme de Frobenius, norme 2 de Schatten ou norme de Hilbert-Schmidt de M. On montre également que si :

\, M = (m_{ij}),

alors cette norme coïncide avec :

\biggl( \sum_{ij} | m_{ij} | ^2\biggr)^{\frac{1}{2}}.

[modifier] Opérateurs bornés sur les espaces de Hilbert

La factorisation M = UΣV * peut être étendue comme opérateur borné M sur un espace de Hilbert H. D'une façon générale, pour tout opérateur borné M, il existe une isométrie partielle U, un vecteur unitaire V, un espace de mesure (X, μ) et f mesurable positive telle que :

\; M = U T_f V^*,

Tf est la mutliplication par f sur L2(X, μ).

On peut le montrer en travaillant l'argument d'algèbre linéaire utilisé pour le cas matriciel. VTf V* est l'unique racine positive de M*M, donnée par l'analyse fonctionnelle de Borel, pour les opérateurs auto-adjoints. La raison pour laquelle U n'a pas besoin d'être unitaire est liée au fait que, contrairement au cas de dimension finie, étant donnée une isométrie U1 avec un noyau non trivial, une isométrie U2 existe telle que :

\begin{pmatrix} U_1 \\ U_2 \end{pmatrix}

est un opérateur unitaire.

Puisque, pour les matrices, la décomposition en valeurs singulières est équivalente à la décomposition polaire pour les opérateurs, on peut réécrire cela sous la forme :

M = U V^* \cdot V T_f V^*

et remarquer que U V* est encore une isométrie partielle tant que VTf V* est positif.

[modifier] Valeurs singulières et opérateurs compacts

Pour étendre la notion de valeur singulière et de vecteurs singuliers au cas des opérateurs, on doit se restreindre aux opérateurs compacts sur les espaces de Hilbert. On rappelle certaines propriétés utiles :

  • Les opérateurs compacts sur les espaces de Banach, donc de Hilbert, possèdent un spectre discret ;
  • Si T est compact, tout λ de son spectre, non-nul, est une valeur propre ;
  • Un opérateur compact auto-adjoint peut être diagonalisé par ses vecteurs propres ;
  • Si M est compact, alors M*M l'est également.

En utilisant la diagonalisation, l'image unitaire de la racine carrée positive de M, notée Tf, possède une famille orthonormale de vecteurs propres {ei}, correspondants aux valeurs propres strictement positives {σi}. Pour tout ψH,


\; M \psi = U T_f V^* \psi = \sum_i  \langle U T_f V^* \psi, U e_i \rangle U e_i 
= \sum_i \sigma_i \langle \psi, V e_i \rangle U e_i,

quand la série converge normalement dans H. On remarque que cette expression est proche de celle dans le cas de dimension finie.

Les σi sont appelées valeurs singulières de M. {U ei} et {V ei} sont analogues aux vecteurs singuliers à gauche et à droite respectivement pour M.

[modifier] Utilisations

[modifier] Calcul du pseudoinverse

La décomposition en valeurs singulières permet de calculer le pseudoinverse d'une matrice. En effet, le pseudoinverse d'une matrice M connaissant sa décomposition en valeurs singulières M = UΣV * , est donné par :

 M^+ = V \Sigma^+ U^*, \,

avec Σ+ la transposée de Σ où tout coefficient non-nul est remplacé par son inverse. Le pseudoinverse lui-même permet de résoudre la méthode des moindres carrés.

[modifier] Image, rang et noyau

Une autre utilisation de la décomposition en valeurs singulières est la représentation explicite de l'image et du noyau d'une matrice M. Les vecteurs singuliers à droite correspondant aux valeurs singulières nulles de M engendrent le noyau de M. Les vecteurs singuliers à gauche correspondant aux valeurs singulières non-nulles de M engendrent son image.

Par conséquent, le rang de M est égal au nombre de valeurs singulières non-nulles de M. De plus, les rangs de M, de M * M et de MM * sont égaux. M * M et MM * ont les mêmes valeurs propres non-nulles.

En algèbre linéaire, on peut prévoir numériquement le rang effectif d'une matrice, puisque les erreurs d'arrondi pourraient autrement engendrer des valeurs petites mais non-nulles, faussant le calcul du rang de la matrice.

[modifier] Approximations de matrices

Approximations successives d'une image, avec 1, 2, 4, 8, 16, 32, 64, 128 puis toutes les valeurs singulières (original à gauche).
Approximations successives d'une image, avec 1, 2, 4, 8, 16, 32, 64, 128 puis toutes les valeurs singulières (original à gauche).

Certaines applications pratiques ont besoin de résoudre un problème d'approximation de matrices M à partir d'une matrice \tilde{M} ayant un rang donné, égal à r. Dans le cas où on tente de minimiser la distance au sens de Frobenius entre M et \tilde{M}, en gardant \mbox{rg}(\tilde{M}) = r, on constate que la solution est la décomposition en valeurs singulières de M, c'est-à-dire :

\tilde{M} = U \tilde{\Sigma} V^*

avec \tilde{\Sigma} égale à Σ, si ce n'est qu'elle ne contient que les r plus grandes valeurs singulières, les autres étant remplacées par 0. Voici la démonstration :

Ainsi, \tilde M, matrice de rang r, est la meilleure approximation de M au sens de la norme de Frobenius quand \sigma_i = s_i \quad (i=1,\cdots,r). De plus, ses valeurs singulières sont les mêmes que celles de M.

[modifier] Application aux langues naturelles

Une des principales utilisation de la décomposition en valeurs singulières dans l'étude des langues naturelles est l'analyse sémantique latente (ou LSA, de l'anglais latent semantic analysis), une méthode de la sémantique vectorielle. Ce procédé a pour but l'analyse des relations entre un ensemble de documents et des termes ou expressions qu'on y trouve, en établissant des « concepts » communs à ces différents éléments.

Brevetée en 1988 [9], on parle également d'indexation sémantique latente (LSI). Voici une description sommaire du principe de cet algorithme.

Dans un premier temps, on construit une matrice représentant les différentes occurrences des termes (d'un dictionnaire prédéterminé, ou extraits des documents), en fonction des documents. Par exemple, prenons trois œuvres littéraires :

  • Document 1 : « J'adore Wikipédia »
  • Document 2 : « J'adore le chocolat »
  • Document 3 : « Je déteste le chocolat »

Alors la matrice M associée à ces documents sera :

J' Je adore déteste le Wikipédia chocolat
Document 1 1 0 1 0 0 1 0
Document 2 1 0 1 0 1 0 1
Document 3 0 1 0 1 1 0 1

Éventuellement, on peut réduire certains mots à leur radical ou à un mot équivalent, ou même négliger certains termes trop courts pour avoir un sens ; la matrice contient alors Je, adorer, détester, Wikipédia, chocolat. Les coefficients (ici 1 ou 0) sont en général non pas un décompte mais une valeur proportionnelle au nombre d'occurrences du terme dans le document, on parle de pondération « tf-id » (term frequency — inverse document frequency).

Alors M sera de la forme :

\begin{matrix} 
 & \textbf{terme}_j \\
 & \downarrow \\
\textbf{document}_i^T \rightarrow &
\begin{pmatrix} 
x_{1,1} & \dots & x_{1,n} \\
\vdots & \ddots & \vdots \\
x_{m,1} & \dots & x_{m,n} \\
\end{pmatrix}
\end{matrix}

On peut également travailler avec la transposée de M, que l'on note N. Alors les vecteurs lignes de N correspondent à un terme donné, et donnent accès à leur « relation » à chaque document :

\textbf{terme}_i^T = \begin{bmatrix} x_{i,1} & \dots & x_{i,n} \end{bmatrix}

Et de même, une colonne de la matrice N représente un document donné, et donne accès à sa relation à chaque terme :

\textbf{document}_j = \begin{bmatrix} x_{1,j} \\ \vdots \\ x_{m,j} \end{bmatrix}

On accède à la corrélation entre les termes de deux documents en effectuant leur produit scalaire. La matrice symétrique obtenue en calculant le produit S = NNT contient tous ces produits scalaires. L'élément de S d'indice (i,p) contient le produit :

S_{i, p} = \textbf{terme}_i^T \textbf{terme}_p = \textbf{terme}_p^T \textbf{terme}_i.

De même, la matrice symétrique Z = NTN contient les produits scalaires entre tous les documents, qui donne leur corrélation selon les termes :

Z_{j, q} = \textbf{document}_j^T \textbf{document}_q = \textbf{document}_q^T \textbf{document}_j.

On calcule maintenant la décomposition en valeurs singulières de la matrice N, qui donne les matrices telles que :

M = UΣVT

Alors les matrices de corrélation deviennent :


\begin{matrix}
S &=& (U \Sigma V^T) (U \Sigma V^T)^T = (U \Sigma V^T) (V^{T^T} \Sigma^T U^T) = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\
Z &=& (U \Sigma V^T)^T (U \Sigma V^T) = (V^{T^T} \Sigma^T U^T) (U \Sigma V^T) = V \Sigma U^T U \Sigma V^T = V \Sigma^T \Sigma V^T
\end{matrix}

La matrice U contient les vecteurs propres de S, la matrice V contient ceux de Z. On a alors :


\begin{matrix} 
 & (\textbf{document}_j) & & & & & & & (\widehat{ \textbf{document}_j) } \\
 & \downarrow & & & & & & & \downarrow \\
(\textbf{terme}_i^T) \rightarrow 
&
\begin{pmatrix} 
x_{1,1} & \dots & x_{1,n} \\
\\
\vdots & \ddots & \vdots \\
\\
x_{m,1} & \dots & x_{m,n} \\
\end{pmatrix}
&
=
&
(\widehat{ \textbf{terme}_i} ^T) \rightarrow
&
\begin{pmatrix} 
\begin{bmatrix} \, \\ \, \\ \textbf{u}_1 \\ \, \\ \,\end{bmatrix} 
\dots
\begin{bmatrix} \, \\ \, \\ \textbf{u}_l \\ \, \\ \, \end{bmatrix}
\end{pmatrix}
&
\cdot
&
\begin{pmatrix} 
\sigma_1 & \dots & 0 \\
\vdots & \ddots & \vdots \\
0 & \dots & \sigma_l \\
\end{pmatrix}
&
\cdot
&
\begin{pmatrix} 
\begin{bmatrix} & & \textbf{v}_1 & & \end{bmatrix} \\
\vdots \\
\begin{bmatrix} & & \textbf{v}_l & & \end{bmatrix}
\end{pmatrix}\\
 & M & & & U & & \Sigma & & V^T
\end{matrix}

Les valeurs singulières, \sigma_1, \dots, \sigma_l peuvent alors être sélectionnées, pour obtenir une « approximation » de la matrice à un rang k arbitraire, qui permet une analyse plus ou moins précise des données.

[modifier] Cinématique inverse

En robotique, le problème de la cinématique inverse, qui consiste essentiellement à savoir « comment bouger pour atteindre un point, » peut être abordé par la décomposition en valeurs singulières.

[modifier] Énoncé du problème

On peut considérer — c'est un modèle très général — un robot constitué de bras articulés, indicés i, formant un angle θi entre eux, dans un plan. On note X le vecteur représentant la position du « bout » de cette chaine de bras, qui en pratique est une pince, une aiguille, un aimant… Le problème va être de déterminer le vecteur θ, contenant tous les θi, de sorte que X soit égal à une valeur donnée X0.

[modifier] Résolution

On définit le jacobien de X par :

J = \frac{ \partial \textbf{X}}{\partial \mathrm{\theta}}.

On a alors :

\dot \textbf{X} = J \dot \theta.

Si J est inversible (ce qui est, en pratique, toujours le cas), on peut alors accéder à la dérivée de θ :

\dot \theta = J^{-1} \dot \textbf{X}.

Si J n'est pas inversible, on peut de toute façon utiliser la notion de pseudo-inverse. Néanmoins, son utilisation ne garantit pas que l'algorithme converge, il faut donc que le jacobien soit nul en un nombre réduit de points. En notant (U,Σ,V) la décomposition en valeurs singulières de J, l'inverse (le pseudo-inverse si J n'est pas inversible) de J est donné par :

J^{-1} = V \Sigma^{-1} U^T \, (cas inversible) ;
J^{+} = V \Sigma^{+} U^T \, (cas pseudo-inversible).

On a noté Σ+ la matrice diagonale comportant l'inverse des valeurs singulières non-nulles. Dans la suite, la notation J-1 renverra sans distinction à l'inverse ou au pseudo-inverse de J.

Le calcul des vecteurs colonne de J peut être effectué de la manière qui suit :

  • On note Xi la position de l'articulation i ;
  • On note ez le vecteur unitaire de même direction que l'axe de rotation de l'articulation ;

Alors J_i = \textbf{e}_z \wedge \left( \textbf{X}_0 - \textbf{X} \right) .

On peut alors discrétiser l'équation, en posant :

\Delta \textbf{X} = \textbf{X}_0 - \textbf{X}
\Delta \theta = J^{-1} \Delta \textbf{X}

Et en ajoutant Δθ à θ à chaque itération, puis en recalculant ΔX et Δθ, on atteint peu à peu la solution désirée.

[modifier] Résolution alternative

Il est également possible d'utiliser la décomposition en valeurs singulières de J autrement pour obtenir Δθ :

\Delta \theta = J^{-1} \Delta \textbf{X}

En multipliant successivement à gauche par J puis par sa transposée, pour enfin utiliser la décomposition en valeurs singulières de JTJ, on a :

J \Delta \theta = \Delta \textbf{X}
J^T J \Delta \theta = J^T \Delta \textbf{X}
V \Sigma^2 V^T \Delta \theta = J^T \Delta \textbf{X}

Soit en conclusion :

\Delta \theta = \left( V \Sigma^{-2} V^T J^T \right) \Delta \textbf{X}.

[modifier] Autres exemples

Une utilisation courante de la décomposition en valeurs singulières est la séparation d'un signal sur deux sous-espaces supplémentaires, par exemple un sous-espace « signal » et un sous-espace de bruit. La décomposition en valeurs singulières est beaucoup utilisée dans l'étude de l'inversion de matrices, très pratique dans les méthodes de régularisation. On l'emploie également massivement en statistiques, en traitement du signal, en reconnaissance de formes et dans le traitement informatique des langues naturelles.

De grandes matrices sont décomposées au travers de cet algorithme en météorologie, pour l'algorithme de Lanczos par exemple.

L'étude géologique et sismique, qui a souvent à faire avec des données bruitées, fait également usage de cette décomposition - et de ses variantes multidimensionnelles - pour « nettoyer » les spectres obtenus. Étant donnés un certain nombre d'échantillons connus, certains algorithmes peuvent, au moyen d'une décomposition en valeurs singulières, opérer une déconvolution sur un jeu de données.

[modifier] Calcul de la SVD

Le calcul explicite, analytique, de la décomposition en valeurs singulières d'une matrice est difficile dans le cas général. On utilise, en particulier dans les applications, des algorithmes spécialisés.

La procédure DGESVD[10] de la librairie LAPACK propose une approche courante pour le calcul de la décomposition en valeurs singulières d'une matrice. Si la matrice possède plus de lignes que de colonnes, on effectue tout d'abord une décomposition QR. Le facteur R est ensuite réduit sous forme bidiagonale. Les valeurs singulières et vecteurs singuliers sont alors trouvés en effectuant une itération de type QR bidiagonale avec la procédure DBDSQR[11].

GNU Scientific Library propose trois alternatives : l'algorithme de Golub-Reinsch, l'algorithme de Golub-Reinsch modifié (plus rapide pour les matrices possédant bien plus de lignes que de colonnes) et l'orthogonalisation de Jacobi.[12]

[modifier] Voir aussi

[modifier] Bibliographie

  • (en) Abdi, H. « Décomposition en valeurs singulières (SVD) et décomposition généralisée (GSVD) », Encyclopedia of Measurement and Statistics. Thousand Oaks (CA) ;
  • (en) Demmel, J. and Kahan, W. (1990). « Calcul de petites valeurs singulières de matrices bidiagonales avec précision garantie », SIAM J. Sci. Statist. Comput., 11 (5), 873-912 ;
  • (en) Golub, G. H. et Van Loan, C. F. (1996). « Calculs matriciels », 3e ed., Johns Hopkins University Press, Baltimore. ISBN 0-8018-5414-8 ;
  • (en) Eckart C. et Young G. (1936). « Approximations d'une matrice par une autre de rang inférieur », Psychometrika, I, 211-218 ;
  • (en) Halldor, Bjornsson et Venegas, Silvia A. (1997). « Manuel d'études des données climatiques par la SVD », McGill University, CCGCR Report No. 97-1, Montréal, Québec, 52pp ;
  • (en) Hansen P. C. (1987). « SVD tronquée comme méthode de régularisation », BIT, 27, 534-553 ;
  • (en) Horn, Roger A. et Johnson, Charles R (1985). « Analyse matricielle », Section 7.3. Cambridge University Press. ISBN 0-521-38632-2 ;
  • (en) Horn, Roger A. et Johnson, Charles R (1991). « Analyse matricielle », Chapter 3. Cambridge University Press. ISBN 0-521-46713-6 ;
  • (en) Strang G (1998). « Introduction à l'algèbre linéaire », Section 6.7. 3e ed., Wellesley-Cambridge Press. ISBN 0-9614088-5-5 ;
  • (en) Chris Ding et Jieping Ye. « Décomposition 2D (2DSVD) pour cartes et images », Proc. SIAM Int'l Conf. Data Mining (SDM'05), pp:32-43, April 2005 ;
  • (en) Jieping Ye. « Approximations de faible rang de matrices généralisées », Machine Learning Journal. Vol. 61, pp. 167—191, 2005 ;
  • (de) Günter Gramlich : « Applications en algèbre linéaire avec MATLAB® », Carl Hanser Verlag, 2004. ISBN 3-446-22655-9.

[modifier] Articles connexes

[modifier] Liens externes

[modifier] Implémentations

  • (en) ALGLIB propose une adaptation de LAPACK dans différents langages ;
  • (en) Librairie Java SVD ;
  • (en) Opencv : librairie d'analyse d'images en C/C++ ;
  • (en) PROPACK : programme de calcul de la SVD ;
  • (en) Script Java calculant la SVD ;
  • (en) SVDPACK : librairie ANSI FORTRAN 77 qui propose 4 implémentations intératives de la SVD ;
  • (en) SVDLIBC : adaptation de SVDPACK en C ;
  • (en) BlueBit propose une librairie .NET capable de calculer la SVD.

[modifier] Cours et conférences

[modifier] Explications et applications

[modifier] Notes et références

  1. ab (en) Muller, Magaia, Herbst : « Singular Value Decomposition, Eigenfaces, and 3D reconstructions, » 2004.
  2. abcd (en) G.W. Stewart : « Histoire des débuts de la décomposition en valeurs singulières », Université du Maryland, 1992.
  3. L. Autonne, « Sur les matrices hypohermitiennes et sur les matrices unitaires », 1915.
  4. E. Schmidt, « Zur Theorie der linearen und nichtlinearen Integralgleichungen », 1907.
  5. G.H. Golub, W. Kahan, « Calculating the singular values and peusoinverse of a matrix », 1965.
  6. G.H. Golub, C.Reinsch : « Singular value decomposition and least squares solution », 1970.
  7. Il n'est également pas rare de les opposer, puisqu'elles peuvent donner des résultats contradictoires. On peut lire à ce sujet, au sujet des EEG, en anglais : Drozd, Husar, Nowakowski, Henning : « Detecting evoked potentials with SVD- and ICA-based statistical models, Engineering in Medicine and Biology Magazine, IEEE, 2005.
  8. Sven Ole Aase, John Håkon Husøy, P. Waldemar, « A critique of SVD-based image coding systems ».IEEE International Symposium on Circuits and Systems, 1999.
  9. (en) Dépôt de brevet par Scott Deerwester, Susan Dumais, George Furnas, Richard Harshman, Thomas Landauer, Karen Lochbaum et Lynn Streeter.
  10. Code source (fortran 77)
  11. Code source (fortran 77)
  12. Voir le manuel de la GSL concernant la SVD.
Bon article La version du 1 mai 2007 de cet article a été reconnue comme « bon article » (comparer avec la version actuelle).
Pour toute information complémentaire, consulter sa page de discussion et le vote l’ayant promu.