Ce cours est axé sur la question : Comment effectuer des calculs matriciels avec une vitesse et une précision acceptables ?
Ce cours a été enseigné dans le cadre du programme de maîtrise en sciences analytiques de l'Université de San Francisco, à l'été 2017 (pour les étudiants diplômés qui étudient pour devenir data scientists). Le cours est enseigné en Python avec Jupyter Notebooks, en utilisant des bibliothèques telles que Scikit-Learn et Numpy pour la plupart des cours, ainsi que Numba (une bibliothèque qui compile Python en C pour des performances plus rapides) et PyTorch (une alternative à Numpy pour le GPU). en quelques leçons.
Les cahiers sont accompagnés d'une liste de lecture de vidéos de conférences, disponible sur YouTube. Si jamais vous êtes confus par une conférence ou si elle va trop vite, regardez le début de la vidéo suivante, où je passe en revue les concepts de la conférence précédente, expliquant souvent les choses sous un nouveau point de vue ou avec des illustrations différentes, et réponds aux questions.
Vous pouvez poser des questions ou partager vos réflexions et ressources en utilisant la catégorie Algèbre linéaire computationnelle sur nos forums de discussion fast.ai.
La liste suivante renvoie aux blocs-notes de ce référentiel, rendus via le service nbviewer. Sujets abordés :
Nous commençons par un aperçu de haut niveau de certains concepts fondamentaux de l'algèbre linéaire numérique.
Nous utiliserons l'ensemble de données des groupes de discussion pour tenter d'identifier les sujets des différents articles. Nous utilisons une matrice terme-document qui représente la fréquence du vocabulaire dans les documents. Nous le factorisons en utilisant NMF, puis avec SVD.
Une autre application de SVD consiste à identifier les personnes et à supprimer l’arrière-plan d’une vidéo de surveillance. Nous couvrirons la PCA robuste, qui utilise le SVD randomisé. Et Randomized SVD utilise la factorisation LU.
La détection compressée est essentielle pour permettre des tomodensitogrammes avec un rayonnement plus faible : l'image peut être reconstruite avec moins de données. Ici, nous allons apprendre la technique et l’appliquer aux images CT.
Nous avons appliqué SVD à la modélisation de sujets, à la suppression d'arrière-plan et à la régression linéaire. SVD est intimement lié à la décomposition propre, nous allons donc maintenant apprendre à calculer les valeurs propres pour une grande matrice. Nous utiliserons les données DBpedia, un vaste ensemble de données de liens Wikipédia, car ici le vecteur propre principal donne l'importance relative des différentes pages Wikipédia (c'est l'idée de base de l'algorithme PageRank de Google). Nous examinerons 3 méthodes différentes de calcul de vecteurs propres, de complexité croissante (et d'utilité croissante !).
Ce cours est structuré selon une méthode d'enseignement descendante , différente du fonctionnement de la plupart des cours de mathématiques. Généralement, dans une approche ascendante , vous apprenez d’abord tous les composants distincts que vous utiliserez, puis vous les construisez progressivement en structures plus complexes. Le problème est que les étudiants perdent souvent leur motivation, n'ont pas une idée de la « situation d'ensemble » et ne savent pas ce dont ils auront besoin.
David Perkins, professeur à Harvard, a publié un livre intitulé Making Learning Whole dans lequel il utilise le baseball comme analogie. Nous n'exigeons pas que les enfants mémorisent toutes les règles du baseball et comprennent tous les détails techniques avant de les laisser jouer. Au contraire, ils commencent à jouer avec une idée générale, puis apprennent progressivement plus de règles/détails au fil du temps.
Si vous avez suivi le cours d'apprentissage profond fast.ai, c'est ce que nous avons utilisé. Vous pouvez en savoir plus sur ma philosophie d'enseignement dans cet article de blog ou dans cette conférence que j'ai donnée lors de la rencontre Machine Learning de San Francisco.
Tout ça pour dire, ne vous inquiétez pas si vous ne comprenez pas tout au début ! Vous n'êtes pas censé le faire. Nous commencerons à utiliser des « boîtes noires » ou des décompositions matricielles qui n’ont pas encore été expliquées, puis nous approfondirons les détails de niveau inférieur plus tard.
Pour commencer, concentrez-vous sur ce que les choses FONT, et non sur ce qu’elles SONT.