La décomposition en valeurs singulières: un outil fort utile Références utiles: 1- Sonka et al.: sections 3.2.9 et 3.2.10 2- Notes manuscrites du cours 3- Press et al: Numerical recipes * *Ce document a aussi été inspiré d’un extrait du cours cos323 par S. Rusinkiewicz à Princeton Dernière révision: Patrick Hébert septembre 2008
Introduction SVD: Singular Value Decomposition Résolution d’une gamme de problèmes comme par exemple des moindres carrés bien ou mal conditionnés ou des problèmes sous-contraints et bien d’autres … SVD sera un outil indispensable Les justifications mathématiques sont riches mais nous le présenterons dans l’optique d’utilisation pour des classes de problèmes ciblées.
Conditionnement Exemple: ajuster une courbe y=ax2+bx+c sur des points Normalement 3 points suffisent pour “bien” définir la parabole … Attention: dans un problème mal conditionné, la simple erreur numérique peut faire déraper la solution
La décomposition SVD: une solution intéressante! Soit A, une matrice mn, la décomposition SVD est un algorithme de factorisation qui permet d’exprimer A comme le produit de trois matrices particulières, U, V, and W telles que: A = U W VT U est une matrice mn, orthonormale W est une matrice nn, diagonale positive VT est une matrice nn orthonormale
Décomposition d’une matrice En Matlab: [U,W,V]=svd(A)
Remarques Les wi sont les valeurs singulières de A Si la matrice A est singulière, il y a des wi nulles En général rang(A) = au nombre de wi non nulles L’ensemble des wi est “unique”, mis à part l’ordre des wi ou s’il y a égalité parmi des wi
Utilité importante #1: traiter les inverses A-1=(VT)-1 W-1 U-1 = V W-1 UT Puisque l’inverse d’une matrice orthonormale est sa transposée Puisque W est diagonale, W-1 est aussi diagonale avec les inverses multiplicatifs des wi
Suite … A-1=(VT)-1 W-1 U-1 = V W-1 UT Ce n’est pas vrai quand des wi = 0 La matrice est singulière Pseudoinverse: si wi=0, on fixe 1/wi = 0 C’est la matrice “la plus près” de l’inverse selon la norme de Frobenius Existe pour toutes les matrices, même singulières ou rectangulaires Égale à (ATA)-1AT si ATA est inversible
Utilité importante #2: les moindres carrés Système Ax=b à résoudre par moindres carrés x=pseudoinverse(A) b Calculer la pseudoinverse en utilisant SVD On vérifie si A est singulière Même si A n’est pas singulière, on vérifie le ratio de la valeur singulière max sur la valeur min (condition number). C’est une indication de la stabilité du système Fixer 1/wi = 0 si wi est petit
Variation sur les moindres carrés: syst. homogènes Système Ax=0 à résoudre par moindres carrés On a vu que la solution correspond au vecteur propre de ATA associé à la plus petite valeur propre. Soit A=UWVT, et soit xi la iième colonne de V Considérons ATA xi: DONC: Les éléments de W sont sqrt(valeurs propres) et les colonnes de V sont les vecteurs propres de ATA
Utilité importante #3: comparaison de matrices La norme de Frobenius est couramment utilisée comme norme d’une matrice La norme de Frobenius peut être calculée au moyen de SVD Des variations sur une matrice peuvent donc être observées comme des variations sur les valeurs singulières.
Utilité importante #4: approximation de matrices On cherche la meilleure matrice A’ approximante de rang k pour A Solution: On ne conserve que les k plus grandes valeurs singulières et on fixe les autres à 0. On peut éliminer les colonnes de U et V qui correspondent aux valeurs nulles de wi Enfin on reconstruit A’ à partir de U’W’V’T
SVD et ACP (PCA) Analyse en Composantes Principales (Principal Components Analysis: PCA): idée: estimer un ensemble de données de grandes dimensions par un sous-espace Comment? Les vecteurs propres de la matrice de covariance des données constituent une base lorsque normalisés. Si les vecteurs sont ordonnés selon les valeurs propres, alors on peut sélectionner un sous-ensemble. (schéma au tableau)
SVD et ACP Construire la matrice A où chaque ligne est un “point” de donnée à m dimensions. Soustraire la ligne moyenne de chaque ligne Calculer SVD(A) Les colonnes de V sont les composantes principales Les wi indiquent l’importance de chacune des composantes (vecteurs de base)
Reconnaissance de visages: méthode des “Eigenfaces” Première composante principale Visage “moyen” Autres composantes Sauf pour le visage moyen, “gris” = 0, “blanc” > 0, “noir” < 0
Reconnaissance Sauvegarder chaque visage sous la forme d’un ensemble de coefficients (projection des n principales composantes -> {ai}) Calculer la projection de l’image à reconnaître, comparer à la base de données (le vecteur le plus près)
Remarque De nombreux articles ont été publiés sur cette approche des eigenfaces Cette approche a aussi été étendue pour traiter des variations d’éclairage et de point de vue du visage M. Vasilescu et D. Terzopoulos, CVPR 2005 et 3DIM 2007