Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Cours 33. Les réseaux de neurones et la fonction d'apprentissage
33. Les réseaux de neurones et la fonction d'apprentissage
Dans cette vidéo, le conférencier discute de la construction de la fonction d'apprentissage f pour les réseaux de neurones, qui est optimisée par descente de gradient ou descente de gradient stochastique et appliquée aux données d'apprentissage pour minimiser la perte. Il explique l'utilisation d'une image dessinée à la main pour illustrer le concept de réseaux de neurones et la fonction d'apprentissage, ainsi que diverses fonctions de perte utilisées dans l'apprentissage automatique, y compris la perte d'entropie croisée. L'orateur évoque également le problème de la recherche des positions des points compte tenu de leurs distances, qui est un problème classique aux applications diverses, comme par exemple pour déterminer la forme des molécules par résonance magnétique nucléaire. Il conclut en évoquant la construction de X, dernière étape pour obtenir la structure d'un réseau de neurones, et évoque un appel à volontaires pour discuter d'un projet vendredi.
Cours 34. Matrices de distance, problème de Procuste
34. Matrices de distance, problème de Procuste
L'orateur discute du problème de Procuste, qui consiste à trouver la meilleure transformation orthogonale qui rapproche le plus possible un ensemble de vecteurs d'un autre ensemble de vecteurs. Ils expliquent différentes expressions pour calculer la norme de Frobenius d'une matrice de distance et sa connexion au problème de Procuste. L'orateur introduit également le concept de la trace des matrices et trouve le bon Q dans le problème de Procuste. De plus, ils abordent la question de savoir si l'apprentissage en profondeur fonctionne réellement et présentent la solution à un problème matriciel impliquant de trouver la meilleure matrice orthogonale, ce qui implique de calculer le SVD du produit scalaire de deux matrices et d'utiliser les matrices orthogonales du SVD.
Cours 35. Trouver des clusters dans les graphes
35. Trouver des clusters dans les graphiques
Cette vidéo traite du clustering dans les graphiques et de la manière de trouver des clusters à l'aide de différents algorithmes tels que K-means et le clustering spectral. La matrice laplacienne est utilisée dans le clustering spectral et peut fournir des informations sur les clusters dans le graphique via ses vecteurs propres. Le vecteur propre de Fiedler, qui est le vecteur propre de la plus petite valeur propre positive, est important pour le regroupement. L'orateur souligne également l'importance que les vecteurs propres soient orthogonaux pour identifier les différents clusters. De plus, il y a un bref aperçu de la prochaine conférence, qui couvrira la rétro-propagation à l'aide de Julia en algèbre linéaire. Les étudiants sont encouragés à soumettre leurs projets en ligne ou à l'extérieur du bureau de l'instructeur.
Cours 36 : Alan Edelman et Julia Language
Cours 36 : Alan Edelman et Julia Language
Dans cette vidéo, Alan Edelman discute de la puissance des langages de programmation pour l'apprentissage automatique et de leur importance en mathématiques. Il met en avant le développement récent du langage Julia, reconnu par Google, pour ses mérites techniques et sa facilité d'utilisation en machine learning. Edelman explique comment fonctionne la différenciation automatique dans Julia et donne un exemple de calcul de la racine carrée de x sans utiliser de différences finies numériques via l'algorithme babylonien. Il discute également de l'utilisation des types dans Julia pour un calcul efficace et pour simplifier le processus de rétropropagation avec des matrices de blocs. Dans l'ensemble, Edelman souligne l'importance de l'algèbre linéaire pour les calculs mathématiques et son rôle dans la compréhension des phénomènes complexes.
MIT 6.172 Ingénierie des performances des systèmes logiciels, automne 2018 - 1. Introduction et multiplication matricielle
1. Introduction et multiplication matricielle
Dans cette vidéo YouTube intitulée "1. Introduction et multiplication matricielle", le conférencier discute de l'importance de l'ingénierie de la performance et de son évolution au fil du temps. En utilisant l'exemple de la multiplication matricielle, l'orateur montre comment les techniques de codage et les spécifications de la machine peuvent avoir un impact important sur les performances. La discussion couvre des sujets tels que l'ordre des boucles, l'utilisation du cache et la programmation parallèle. Le conférencier explore également les moyens d'optimiser le code pour différents processeurs et calculs arithmétiques. Dans l'ensemble, la vidéo fournit des informations précieuses sur le monde de l'ingénierie des performances et ses applications pratiques dans les systèmes informatiques modernes.
Cours 2. Règles de Bentley pour optimiser le travail
2. Règles de Bentley pour optimiser le travail
Cette vidéo YouTube traite de diverses techniques d'optimisation pour les programmes informatiques. Les règles de Bentley pour l'optimisation du travail sont introduites et les optimisations sont regroupées en structures de données, boucles, logique et fonctions. Différentes techniques telles que l'encodage des valeurs, l'augmentation de la structure des données, le pré-calcul, la mise en cache et l'utilisation de matrices creuses sont discutées. Le conférencier aborde également les avantages de l'utilisation d'une représentation matricielle creuse pour les graphiques, l'optimisation logique et l'optimisation de la détection des collisions dans les programmes graphiques. La mise en œuvre de ces techniques d'optimisation permet de réduire le temps d'exécution des programmes, les rendant plus efficaces.
La deuxième partie de la vidéo couvre plusieurs catégories de techniques d'optimisation, notamment le levage de boucles, l'utilisation de sentinelles dans les boucles, le déroulement et la fusion de boucles et l'inlining de fonctions. L'orateur déconseille une optimisation prématurée et souligne l'importance de maintenir l'exactitude et d'utiliser des tests de régression. La vidéo décrit également les règles Bentley pour l'optimisation du travail, un guide en six étapes pour augmenter la productivité et atteindre les objectifs de manière efficace. Ces règles comprennent l'établissement d'objectifs clairs, la répartition des tâches, la planification et l'organisation, la hiérarchisation des tâches, la minimisation des distractions et la révision et l'ajustement réguliers de son approche.
Cours 3. Bit Hacks
3. Bit Hacks
Cette vidéo YouTube couvre une variété de sujets de manipulation de bits, y compris la représentation binaire, le complément à deux, les opérateurs au niveau du bit, l'échange de variables sans variable temporaire et l'optimisation du code. La vidéo montre diverses astuces telles que trouver le minimum de deux entiers sans utiliser d'instructions if-else et comment échanger deux entiers sans utiliser de variable temporaire. L'orateur discute des branches imprévisibles et présente une astuce binaire minimale sans branche lorsque les branches prévisibles ne sont pas disponibles, et montre comment les piratages binaires peuvent optimiser le code en remplaçant des opérations coûteuses telles que la division par de simples opérations au niveau du bit. La vidéo traite également de la séquence de Bruijn et de son application pour résoudre des problèmes tels que le problème de N Queens.
La deuxième partie traite de la résolution du problème de N Queens à l'aide de vecteurs de bits et du comptage efficace du nombre de bits 1 dans un mot binaire. Le retour en arrière est utilisé pour implémenter le problème de N Queens, et des vecteurs de bits sont utilisés pour représenter efficacement la carte. Trois vérifications sont décrites pour placer en toute sécurité une reine dans le problème N Queens, et une méthode pour compter le nombre de bits 1 dans un mot en éliminant récursivement le bit 1 le moins significatif est présentée. De plus, l'utilisation de la consultation de table et de la manipulation de registre pour compter le nombre de bits 1 est discutée. La vidéo se termine par une démonstration d'une approche diviser pour régner pour compter 1 bits qui a une performance proportionnelle au logarithme de base deux de la longueur du mot. Des ressources pour un apprentissage plus approfondi sont également fournies.
Cours 4. Langage d'assemblage et architecture informatique
Cours 4. Langage d'assemblage et architecture informatique
Cette vidéo fournit un aperçu complet du langage d'assemblage et de l'architecture informatique. Le langage d'assemblage est une interface importante pour optimiser les performances du code, et la compréhension de l'architecture informatique est essentielle pour maîtriser le langage d'assemblage. L'orateur explique l'histoire de l'architecture x86 64 et son développement, ses registres clés, les types de données, les modes d'adressage mémoire et l'architecture du jeu d'instructions, y compris les piles, la logique entière et binaire, la logique booléenne et les sous-programmes. Ils discutent également des extensions telles que l'extension zéro et signe et divers modes d'adressage en langage assembleur. En outre, la vidéo traite des types à virgule flottante, des vecteurs et des unités vectorielles, des instructions traditionnelles et SSE, ainsi que des fonctionnalités de conception d'architecture informatique telles que le traitement superscalaire, l'exécution dans le désordre et la prédiction de branche.
La vidéo couvre également plusieurs sujets liés au langage d'assemblage et à l'architecture informatique. L'un des thèmes centraux est le parallélisme au niveau des instructions (ILP) et les décrochages de pipeline, qui sont causés par des dangers tels que les dépendances de données. L'orateur discute des dépendances vraies, anti et de données de sortie et comment les processeurs superscalaires peuvent exploiter plus de parallélisme dans le matériel pour exécuter plusieurs instructions à la fois. Cependant, pour éviter les aléas, les architectes ont mis en place des stratégies telles que le renommage et la réorganisation, ainsi que l'exécution spéculative pour deviner le résultat d'une branche et l'exécuter au préalable. Le conférencier encourage l'auditoire à comprendre ces méthodes pour mieux appréhender les optimisations logicielles.
Cours 5. C à l'Assemblée
Cours 5. C à l'Assemblée
Dans cette partie de la vidéo, l'importance de comprendre le langage C par rapport au langage d'assemblage est discutée, ainsi que la façon dont le code C est implémenté dans le langage d'assemblage à l'aide d'un compilateur. L'accent est mis spécifiquement sur la façon dont LLVM IR est traduit en assemblage dans la convention d'appel Linux x86 64. Le présentateur explique les composants de base de LLVM IR et comment les constructions du langage de programmation C sont traduites en LLVM IR. La vidéo couvre également la disposition de la mémoire virtuelle, la question de la coordination des appels de fonction entre plusieurs fonctions et l'utilisation de la convention d'appel Linux x86 64 de deux pointeurs - le BP et le SP - pour gérer tous les cadres de pile.
La vidéo explique également les stratégies de gestion des états de registre dans la programmation C to Assembly, telles que la sauvegarde des registres en tant que sauvegarde de l'appelant ou de l'appelé, et comment la convention d'appel x86 évite le gaspillage de travail. Il couvre le fonctionnement des appels de fonction en C et en assembleur, discute du processus d'enregistrement des arguments et des variables locales sur la pile, ainsi que de l'optimisation courante consistant à utiliser le pointeur de pile au lieu du pointeur de base. La vidéo montre également le processus de compilation de LV miR en code d'assemblage, discutant du prologue de la fonction, de la sauvegarde des registres, des conditions de traitement et de la conversion du code C en code d'assemblage à l'aide d'un graphe de flux de contrôle. Enfin, il parle de la fonction épilogue utilisée pour restaurer les registres avant de retourner les résultats.
registres, la convention d'appel détaille les règles pour lesquelles chaque fonction peut utiliser les registres et comment elles doivent préserver ces registres via des appels de fonction.
Cours 6. Programmation multicœur
Cours 6. Programmation multicœur
Cette conférence vidéo traite de la programmation multicœur et de l'émergence des processeurs multicœurs en raison de la loi de Moore et de la fin de la mise à l'échelle des fréquences d'horloge. L'orateur explique le problème de densité de puissance auquel sont confrontés les processeurs et comment cela a conduit à l'ajout de plusieurs cœurs aux puces pour suivre la loi de Moore. La conférence couvre également les bases des protocoles de cohérence de cache dans le matériel de mémoire partagée et les plates-formes de concurrence telles que Pthreads, TBB, OpenMP et Silk qui fournissent des abstractions pour la programmation parallèle. Les avantages et les inconvénients de chaque plate-forme sont discutés et démontrés avec des exemples de mise en œuvre de programmes de Fibonacci. La vidéo donne un aperçu complet de la programmation multicœur et des défis et solutions auxquels sont confrontés les programmeurs.
La vidéo couvre également divers aspects de Silk, un outil d'abstraction pour gérer le traitement parallèle. L'orateur aborde des sujets tels que la soie imbriquée pour les boucles, la génération de code d'assemblage, la réduction à l'aide de réducteurs, le planificateur et l'optimisation des performances. Ils fournissent également un aperçu de l'écosystème Silk et des outils associés tels que le désinfectant pour soie et l'échelle de soie pour le débogage et l'analyse de l'évolutivité, respectivement. Le principal point à retenir est que l'écriture de programmes parallèles pour les processeurs multicœurs peut être difficile, mais Silk simplifie le processus en gérant efficacement les tâches complexes, ce qui donne aux programmeurs plus de contrôle sur l'exécution de leur code.