Apprentissage Automatique et Réseaux Neuronaux - page 64

 

Apprentissage du tir zéro



Apprentissage du tir zéro

Bonjour à tous, je m'appelle Rowan, et aujourd'hui je vais faire une présentation sur le thème de l'apprentissage zéro coup. J'ai choisi ce sujet parce qu'il figurait parmi les options, et j'ai réalisé que je pouvais le présenter puisque j'avais fait un projet de recherche vaguement lié à l'apprentissage zéro coup. Bien que cela puisse être plus lié à la vision par ordinateur, je pense que cela pourrait être d'un intérêt général pour ceux qui s'intéressent aux applications d'apprentissage automatique.

Avant de plonger dans les détails techniques, j'ai pensé qu'il serait utile de fournir un aperçu de haut niveau de ce qu'est l'apprentissage zéro coup. Donc, si quelqu'un trouve mes explications déroutantes ou a des questions, n'hésitez pas à m'interrompre. Je pense que les clarifications et les questions seront bénéfiques non seulement pour vous, mais également pour d'autres qui pourraient avoir des doutes similaires. Bon, cela dit, commençons.

Tout d'abord, discutons brièvement de ce que l'apprentissage zéro coup n'est pas. Un exemple de classification d'image est lorsque nous recevons une image et que nous devons lui attribuer une étiquette. Dans ce cas, il peut y avoir des différences significatives entre l'ensemble d'apprentissage et les images de l'ensemble de test. Cependant, ce n'est pas un apprentissage à zéro car nous avons déjà vu des images de chiens et nous essayons de classer une nouvelle image comme un chien. L'apprentissage zéro coup, d'autre part, suppose qu'aucun exemple étiqueté de la tâche cible n'est donné.

Pour illustrer cela, prenons un exemple. Imaginez que nous ayons un apprenant qui a lu beaucoup de texte, comme des articles de Wikipédia, et que nous voulions maintenant qu'il résolve des problèmes de reconnaissance d'objets sans jamais avoir vu une image de l'objet. Par exemple, nous avons lu un article sur les Samoyèdes sur Wikipédia, et maintenant nous devons prédire qu'une image est un Samoyède sans aucune information visuelle. Ceci est un exemple d'apprentissage zéro coup.

En pratique, lorsqu'il s'agit de tâches de vision par ordinateur, il est difficile d'utiliser directement le texte complet de Wikipédia en raison de la complexité du traitement du langage naturel. Par conséquent, les chercheurs utilisent souvent des attributs. Par exemple, le jeu de données Animals with Attributes contient des attributs tels que "marron", "rayé" et "mange du poisson" pour diverses classes d'animaux. Ces attributs fournissent une représentation de l'image dans un espace non visuel, et nous pouvons les utiliser pour prédire la classe d'un objet, tel qu'un ours polaire, même si nous n'en avons jamais vu d'image.

Maintenant, regardons de plus près comment cela fonctionne. Dans de nombreux cas, les gens utilisent des modèles basés sur les attributs en vision par ordinateur. Cela implique le mappage des attributs de l'espace de texte (X) à une représentation d'entités ou à un espace d'attributs. Nous encodons ensuite les images dans un espace similaire et les associons aux attributs pour faire des prédictions. Dans le cas d'une nouvelle image de chien, nous l'encodons et produisons des attributs que nous pouvons utiliser pour prédire la race, comme un Husky.

Pour vous aider à visualiser ce concept, voici un schéma. Il représente le processus de mappage des attributs aux caractéristiques de l'image et de leur utilisation pour les prédictions. N'hésitez pas à poser des questions si quelque chose n'est pas clair.

Passons maintenant à un modèle spécifique appelé prédiction d'attribut direct. Ce modèle est simple mais étonnamment efficace. Il s'agit de construire un modèle qui prédit directement les attributs des images. Si nous supposons que les attributs sont binaires (0 ou 1), nous pouvons utiliser une perte sigmoïde pour former le modèle. Nous attribuons des probabilités à chaque attribut en fonction des caractéristiques de l'image. Au moment du test, nous utilisons ces classificateurs d'attributs pour prédire les étiquettes en multipliant les probabilités des attributs pertinents et en tenant compte de l'a priori.

Bien que ce modèle fonctionne bien, il présente certaines limites. Il suppose une indépendance entre les attributs, ce qui peut introduire des biais si certains attributs sont fortement corrélés. De plus, les objectifs de formation et de test diffèrent, ce qui peut affecter les performances du modèle.

Maintenant, parlons d'un projet sur lequel j'ai travaillé.

Dans mon projet de recherche, j'ai cherché à améliorer les performances des modèles d'apprentissage à tir zéro en abordant certaines des limites du modèle de prédiction directe des attributs. Plus précisément, je me suis concentré sur la résolution de la question de l'indépendance des attributs et de l'écart entre les objectifs de formation et de test.

Pour résoudre le problème de l'indépendance des attributs, j'ai exploré l'utilisation de modèles de prédiction d'attributs structurés. Au lieu de supposer l'indépendance entre les attributs, ces modèles capturent les relations et les dépendances entre eux. En modélisant les dépendances des attributs, nous pouvons obtenir des prédictions plus précises et réduire les biais potentiels introduits en supposant l'indépendance.

Une approche populaire pour la prédiction d'attributs structurés est l'utilisation de modèles graphiques, tels que les champs aléatoires conditionnels (CRF) ou les machines à vecteurs de support structurés (SSVM). Ces modèles intègrent des dépendances via des structures graphiques et peuvent capturer efficacement les relations d'attributs. Dans mon projet, j'ai expérimenté différents modèles graphiques et évalué leurs performances sur divers ensembles de données d'apprentissage zéro-shot.

Pour remédier à l'écart entre les objectifs de formation et de test, j'ai utilisé des techniques d'apprentissage par transfert. L'apprentissage par transfert nous permet de tirer parti des connaissances acquises à partir d'une tâche connexe (par exemple, une pré-formation sur un grand ensemble de données étiquetées) et de les appliquer à la tâche d'apprentissage zéro coup. En initialisant le modèle avec des poids pré-entraînés, nous pouvons bénéficier des représentations apprises et améliorer les performances du modèle sur des classes invisibles lors de l'apprentissage à tir zéro.

Dans mon projet, j'ai utilisé des modèles de réseaux de neurones profonds pré-formés, tels que des réseaux de neurones convolutifs (CNN) ou des modèles de langage pré-formés comme BERT, pour extraire des caractéristiques d'image et d'attribut. Ces caractéristiques ont ensuite été utilisées comme données d'entrée dans les modèles de prédiction d'attributs structurés, permettant une meilleure généralisation à des classes invisibles.

De plus, j'ai exploré l'utilisation de modèles génératifs, tels que les réseaux antagonistes génératifs (GAN), pour l'apprentissage zéro coup. Les modèles génératifs peuvent générer des échantillons synthétiques pour des classes invisibles sur la base des représentations apprises. En combinant les modèles génératifs et discriminatifs, nous pouvons combler le fossé entre les classes visibles et invisibles et améliorer les performances d'apprentissage zéro-coup.

Tout au long de mon projet, j'ai mené des expériences et des évaluations approfondies pour évaluer l'efficacité de différents modèles et techniques d'apprentissage zéro coup. J'ai comparé leurs performances aux modèles de base et aux approches de pointe existantes pour déterminer leurs forces et leurs faiblesses.

En conclusion, l'apprentissage zéro coup est un domaine de recherche passionnant et stimulant qui vise à permettre aux machines d'apprendre et de reconnaître de nouveaux concepts sans exemples étiquetés. Mon projet s'est concentré sur la résolution de certaines des limites des modèles existants, telles que l'indépendance des attributs et la divergence des objectifs de test de formation, grâce à des modèles de prédiction d'attributs structurés et à des techniques d'apprentissage par transfert. Les résultats de mes expériences ont fourni des informations précieuses sur l'amélioration des performances des modèles d'apprentissage à tir zéro et sur l'avancement du domaine.

Zero Shot Learning
Zero Shot Learning
  • 2017.06.22
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

Méthodes de généralisation et d'optimisation



Méthodes de généralisation et d'optimisation

Bonne journée tout le monde! Aujourd'hui, approfondissons le sujet de la généralisation et son importance dans l'apprentissage automatique. La base de cette présentation repose sur deux articles fondateurs. Le premier, rédigé par Ben-David et al., est intitulé "La valeur marginale des méthodes de gradient réductif". Il prépare le terrain et nous donne un aperçu de ce qui nous attend. Le deuxième article explore le domaine de la formation par lots importants pour l'apprentissage en profondeur et son impact sur la généralisation. Maintenant, commençons par comprendre ce qu'implique la généralisation, puis explorons comment nous pouvons l'améliorer. Mais avant de continuer, voici une alerte spoiler : nous aborderons également l'importance de la taille des pas dans la descente de gradient stochastique (SGD) et comment les optimiser.

Alors, qu'est-ce que la généralisation exactement? En termes simples, cela fait référence à la capacité d'un algorithme à bien fonctionner sur des données inédites. La simple réduction de l'erreur de test n'est pas suffisante ; nous avons besoin de l'algorithme pour apprendre des modèles significatifs plutôt que de simplement mémoriser les données de formation. Par exemple, si nous entraînons une voiture autonome sur un ensemble spécifique de scénarios, nous nous attendons à ce qu'elle gère des situations imprévues, comme un conducteur ivre qui fait une embardée sur son chemin. La généralisation est une exigence fondamentale dans la plupart des applications d'apprentissage automatique.

Cependant, il est important de noter que la généralisation suppose une certaine similitude entre la distribution des données de formation et de test. Lorsque nous parlons de scénarios inédits, nous entendons des situations légèrement différentes de celles que nous avons rencontrées lors de l'entraînement, mais pas complètement étrangères. Pour le mettre en perspective, considérons une analogie de pièce. Imaginez que nous ayons exploré la plupart des parties de la pièce, à l'exception de quelques endroits entre les chaises. Si nous voulons faire des prédictions ou tirer des conclusions sur ces points, il est crucial que notre algorithme puisse généraliser à partir de ce qu'il a appris. Il n'est pas pratique de s'entraîner sur toutes les instances possibles, mais nous voulons que notre algorithme fasse des inférences sensées. Prenons l'exemple d'une nouvelle race de chien : nous nous attendons à ce que l'algorithme la reconnaisse comme un chien, même s'il peut différer légèrement des races de chiens qu'il a rencontrées auparavant.

Passons maintenant à l'impact du choix de l'algorithme sur la généralisation. Le premier article que nous avons mentionné explore les différences entre les algorithmes non adaptatifs comme SGD avec momentum et les algorithmes adaptatifs comme RMSprop et Adam. Chaque algorithme a ses propres forces et faiblesses. Les chercheurs ont découvert que lorsque le nombre de paramètres est important par rapport aux données disponibles, le choix de l'algorithme influence l'ensemble des minima qui peuvent être trouvés. Il a été observé que les méthodes adaptatives ont tendance à présenter une généralisation moins bonne. Même lorsqu'Adam obtient une meilleure erreur d'entraînement que SGD, son erreur de test reste légèrement supérieure. Essentiellement, SGD démontre de meilleures capacités de généralisation par rapport aux méthodes adaptatives. Il est important de noter que ces observations sont basées sur des résultats empiriques et peuvent ne pas être vraies dans tous les cas. Par conséquent, il est recommandé de se référer au document et d'examiner ses implications dans votre cas d'utilisation spécifique.

Passons à autre chose, discutons de l'impact de la taille des lots sur la généralisation. Le deuxième article que nous avons mentionné se concentre sur cet aspect. Il compare de petits lots (par exemple, 200 à 500 exemples) à de grands lots (par exemple, 10 % de l'ensemble de données) et leur effet sur la généralisation. Étonnamment, l'étude a révélé que l'utilisation de mini-lots plus petits conduit généralement à une meilleure généralisation par rapport aux grands lots, bien que les précisions de formation soient comparables. Cette constatation est étayée par des expériences menées sur l'ensemble de données du CIFAR, où des lots plus petits ont constamment surpassé les plus grands en termes de précision des tests. Pour comprendre pourquoi cela se produit, nous devons considérer le concept de minima nets et plats. Un minimum aigu a une courbure élevée dans plusieurs directions, tandis qu'un minimum plat est relativement plus lisse.

Maintenant, concentrons-nous sur le deuxième article, qui explore l'impact de la taille des lots sur la généralisation dans l'apprentissage en profondeur. Les auteurs ont mené des expériences en utilisant de petits lots (environ 200 à 500 exemples) et de grands lots (environ 10 % de l'ensemble de données) et ont comparé leurs performances. Fait intéressant, ils ont constaté que l'utilisation de mini-lots plus petits conduit généralement à une meilleure généralisation par rapport à l'utilisation de gros lots.

Les résultats de leurs expériences sur l'ensemble de données du CIFAR ont montré que si les méthodes par petits et grands lots atteignaient des précisions de formation similaires, les méthodes par petits lots surpassaient systématiquement les méthodes par grands lots en termes de précision des tests. Cette observation suggère que des tailles de lots plus petites peuvent conduire à une meilleure généralisation dans les tâches d'apprentissage en profondeur.

Pour expliquer ce phénomène, les auteurs proposent le concept de minima nets et plats. Un minimum net a une courbure élevée le long de plusieurs directions dans l'espace des paramètres, tandis qu'un minimum plat a une forme plus plate. Il a été suggéré que les minima plats ont tendance à mieux se généraliser, tandis que les minima nets peuvent surajuster les données d'apprentissage.

Les auteurs soutiennent que les méthodes par petits lots ont l'avantage de trouver des minima plats en raison du bruit implicite associé aux exemples d'échantillonnage. Le bruit introduit par les petites tailles de lot permet aux itérations de rebondir, les aidant à échapper aux minima nets et potentiellement à trouver des minima plus plats qui se généralisent mieux. D'autre part, les grandes méthodes par lots manquent de ce bruit et peuvent être piégées dans des minima nets, ce qui conduit à une généralisation plus médiocre.

Pour étayer leur affirmation, les auteurs tracent la netteté des minima le long d'une ligne reliant le minimum du petit lot et le minimum du grand lot. Ils observent que les minima obtenus avec les méthodes de petits lots ont tendance à être plus plats, tandis que les minima obtenus avec les méthodes de grands lots sont plus nets. Cela fournit des preuves empiriques soutenant l'hypothèse selon laquelle les minima plats se généralisent mieux que les minima nets.

Cependant, il est important de noter que ces résultats sont basés sur des observations empiriques et qu'il n'existe aucune preuve théorique pour valider la relation entre les minima plats et la généralisation. Néanmoins, les résultats suggèrent que la prise en compte de la taille des lots comme facteur dans le processus d'optimisation peut améliorer les performances de généralisation dans les modèles d'apprentissage en profondeur.

En conclusion, les deux articles soulignent l'importance de la généralisation dans l'apprentissage automatique et donnent un aperçu de la façon dont les méthodes d'optimisation et la taille des lots peuvent affecter la généralisation. Le premier article met en évidence l'impact du choix de l'algorithme d'optimisation sur la généralisation, montrant que les méthodes adaptatives comme Adam peuvent ne pas toujours généraliser aussi bien que les méthodes non adaptatives comme SGD avec momentum. Le deuxième article démontre que des tailles de lots plus petites ont tendance à conduire à une meilleure généralisation, potentiellement en raison de leur capacité à échapper à des minima nets et à trouver des minima plus plats.

Il convient de mentionner que même si ces résultats fournissent des informations précieuses, le choix optimal de la méthode d'optimisation et de la taille du lot peut varier en fonction de la tâche, de l'ensemble de données et de l'architecture du modèle spécifiques. L'expérimentation et le réglage sont cruciaux pour trouver la meilleure approche pour chaque scénario.

Generalization and Optimization Methods
Generalization and Optimization Methods
  • 2017.08.17
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

Invariance translationnelle



Invariance translationnelle

Je suis chercheur en neurosciences et mon point de vue sur les réseaux de neurones convolutifs (CNN) est légèrement différent des autres. Au lieu de me concentrer sur l'ensemble du réseau, je m'intéresse davantage à l'étude d'unités individuelles ou de neurones pour modéliser leur comportement. Mon objectif est de comprendre le fonctionnement complexe des CNN plutôt que de les traiter comme des boîtes noires. Mon objectif est d'acquérir des connaissances et de démêler les complexités du cerveau.

Plus précisément, je suis intrigué par la façon dont l'invariance de la traduction est obtenue dans les réseaux de neurones. Bien qu'il puisse sembler simple que la convolution et la mise en commun maximale dans l'architecture du réseau fournissent une invariance de traduction, mes recherches ont montré que cette intuition est souvent incorrecte. Dans l'apprentissage profond pratique, nous devons approfondir notre compréhension de la véritable source de l'invariance de la traduction et de la manière dont elle émerge pendant la formation.

Dans mon étude, je me concentre sur le flux ventral du cerveau, en particulier la voie « quoi » responsable de la reconnaissance des objets. En examinant des unités individuelles de réseaux comme AlexNet, nous avons découvert que ces unités présentent des schémas de réponse similaires à ceux observés dans les régions V4 et IT du cerveau. Cette découverte était importante car elle fournissait un modèle calculable de propriétés neuronales de haut niveau qui étaient auparavant insaisissables.

Cependant, ces modèles sont essentiellement des boîtes noires, et il est crucial d'en tirer des enseignements. Par conséquent, ma recherche vise à étudier comment ces modèles atteignent certaines propriétés pertinentes pour notre compréhension du cerveau. Pour mener nos expériences, nous utilisons des stimuli qui ont été précédemment montrés aux animaux, en enregistrant leurs réponses. Ces stimuli consistent en des formes géométriques simples à diverses rotations, présentées dans le champ récepteur du réseau neuronal.

L'invariance de traduction, dans le domaine des neurosciences, fait référence à un modèle où la réponse à un ensemble de formes à une position est une version à l'échelle de la réponse à un ensemble de formes à une autre position. Pour quantifier l'invariance de la traduction, nous avons développé une métrique appelée la somme normalisée des covariances. Cette métrique mesure la corrélation entre les réponses à différentes positions, en déterminant s'il s'agit de versions mises à l'échelle les unes des autres. Une corrélation élevée indique une invariance de traduction.

En appliquant cette métrique à une cellule spécifique, nous avons observé un score d'invariance de traduction élevé, indiquant une invariance de traduction presque parfaite dans le cerveau. Comparativement, en appliquant la même métrique au réseau AlexNet, nous avons trouvé de faibles scores d'invariance de traduction, suggérant un manque d'invariance de traduction.

Une analyse plus approfondie à travers les couches du réseau a révélé une progression de l'invariance de la traduction, les couches précédentes montrant une faible invariance de la traduction mais plus d'informations de phase. Au fur et à mesure que nous remontions les couches, l'invariance de la traduction augmentait, en particulier dans Conv5. Ces observations étaient cohérentes avec l'invariance de translation moyenne entre les couches.

Pour comprendre les propriétés responsables de la variation observée et de l'augmentation de l'invariance de translation, nous avons formulé une hypothèse. Notre hypothèse postule que les cellules avec une sélectivité spatiale uniforme présentent une invariance de traduction. En d'autres termes, si les filtres du réseau recherchent le même modèle avec des pondérations similaires entre les positions, ils sont plus susceptibles d'être invariants par traduction.

Pour gagner en intuition visuelle, nous avons examiné les filtres des premières couches d'AlexNet. En visualisant les filtres dans un espace tridimensionnel, nous avons identifié un plan appelé plan chromatique orthogonal au vecteur moyen. Nous avons projeté les filtres dans ce plan, ce qui nous a permis d'observer des motifs. Les filtres qui présentaient des caractéristiques similaires et des réponses positivement corrélées étaient considérés comme invariants de la traduction, tandis que ceux présentant des caractéristiques diverses et des réponses négativement corrélées ne l'étaient pas.

Nous avons également utilisé l'analyse en composantes principales pour visualiser les filtres. Cette analyse a révélé que les filtres sont de faible dimension et que la plupart d'entre eux pouvaient être reconstruits en utilisant seulement deux composants principaux. Ces filtres pourraient être représentés dans un espace à deux dimensions, soutenant davantage notre hypothèse d'invariance de translation.

Bien que cette analyse semble linéaire, elle s'avère efficace pour prédire les variations de réponse aux images. Les poids des filtres peuvent être corrélés, et leurs réponses aux stimuli peuvent également être corrélées.

Translational Invariance
Translational Invariance
  • 2017.08.17
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

Canalisations de données



Canalisations de données

Aujourd'hui, je vais discuter de la façon de gérer efficacement de grands ensembles de données, en particulier dans les situations où les données sont trop volumineuses pour tenir en mémoire. Cependant, j'aborderai également ce qu'il faut faire si les données tiennent dans la mémoire. Commençons par brosser un tableau de ce à quoi nous avons affaire. Dans les systèmes d'apprentissage en profondeur, nous avons généralement un grand ensemble de vecteurs de poids qui subissent des mises à jour d'optimisation de premier ordre basées sur un mini-lot de données. L'accent sera mis aujourd'hui sur le processus de récupération par mini-lots, car il joue un rôle crucial dans la boucle d'optimisation.

Les mini-lots commencent sous forme de données stockées sur disque, et nous devons les déplacer vers la RAM avant de les transférer vers le périphérique de calcul, souvent un GPU. L'objectif est d'assurer une récupération efficace des données, en évitant tout goulot d'étranglement qui pourrait entraver l'optimisation. Voici un aperçu de haut niveau du pipeline de données : les mini-lots sont initialement sur disque, puis déplacés vers la RAM et enfin transférés vers le périphérique de calcul. Le processus nécessite une coordination, généralement gérée par un processeur.

Premièrement, si vos données sont inférieures à un gigaoctet, vous pouvez éliminer les goulots d'étranglement potentiels en stockant votre ensemble de données directement sur le GPU. La plupart des GPU, comme les 1080 et les Titan X, disposent d'une capacité de mémoire suffisante pour stocker à la fois le modèle et l'ensemble de données. En indexant directement dans l'ensemble de données sur le GPU, vous pouvez obtenir des performances nettement plus rapides. Cette approche nécessite un effort minimal mais offre des avantages substantiels.

Pour les ensembles de données entre 1 et 100 gigaoctets, il est recommandé de les stocker dans la RAM. Les prix de la RAM sont raisonnablement abordables, avec environ 10 $ par gigaoctet. Si vous pouvez vous permettre un GPU haut de gamme, vous pouvez certainement vous permettre la RAM nécessaire pour stocker votre ensemble de données. Cette configuration améliorera considérablement votre flux de travail par rapport à la gestion de la récupération de données sur disque.

Lorsque vous traitez des ensembles de données supérieurs à 100 gigaoctets mais inférieurs à 512 gigaoctets, envisagez fortement de les stocker dans la RAM. Bien que le prix puisse augmenter, cela reste une option viable. Les cartes mères qui prennent en charge plusieurs GPU autorisent généralement jusqu'à 512 gigaoctets de RAM. Bien que la RAM de niveau serveur puisse être plus chère, cela vaut la peine d'envisager d'éviter les défis associés à la récupération sur disque.

Il existe deux goulots d'étranglement potentiels dans le pipeline de données : le transfert de données de la RAM vers le GPU via des voies PCIe et le transfert du disque vers la RAM via des connecteurs SATA 3. Alors que les voies PCIe fonctionnent généralement bien, offrant des taux de transfert de données suffisants, les connecteurs SATA 3 sont limités à environ 600 mégaoctets par seconde. Cette limitation est inhérente au protocole et ne peut pas être résolue en achetant des disques plus rapides. Il est crucial d'être conscient de ce goulot d'étranglement lors de la gestion de grands ensembles de données.

Pour identifier les goulots d'étranglement potentiels, vous pouvez mesurer la vitesse à laquelle vous récupérez les mini-lots. S'il faut plus de temps pour récupérer un mini-lot sur le disque que pour le traiter sur le GPU, cela devient un goulot d'étranglement. La surveillance de l'utilisation du GPU via des outils tels que NVIDIA SMI peut fournir des informations sur le temps d'inactivité du GPU causé par les retards de récupération des données. L'objectif est de s'assurer que la vitesse de récupération des mini-lots s'aligne sur la vitesse de traitement sur le GPU.

L'exécution séquentielle du processus de récupération des données n'est pas idéale. Il est plus efficace d'effectuer une récupération asynchrone en configurant des threads pour lire et traiter les données simultanément. Ce faisant, vous pouvez éviter le ralentissement 2x associé au traitement séquentiel. En règle générale, plusieurs threads sont responsables de la lecture et du traitement simultanés des données.

Lorsqu'il s'agit d'ensembles de données d'images comme ImageNet, où les images sont généralement redimensionnées à 256x256, et une taille de mini-lot de 100 est utilisée, chaque mini-lot ferait environ 75 mégaoctets. Avec un taux de transfert de disque de 600 mégaoctets par seconde, vous pouvez récupérer environ 8 mini-lots par seconde. Bien que cela puisse être suffisant pour certains modèles, des modèles plus complexes peuvent nécessiter un taux de récupération plus élevé.

Si le taux de transfert de disque de 600 mégaoctets par seconde n'est pas suffisant pour les besoins de votre modèle, vous pouvez envisager d'utiliser des disques à semi-conducteurs (SSD) au lieu des disques durs traditionnels (HDD). Les SSD offrent des taux de transfert de données nettement plus rapides, dépassant souvent 1 gigaoctet par seconde. La mise à niveau vers des SSD peut considérablement améliorer la vitesse de récupération par mini-lots et réduire le goulot d'étranglement causé par les transferts de disque à RAM.

Une autre approche de la gestion de grands ensembles de données est le partage ou le partitionnement des données. Au lieu de stocker l'intégralité de l'ensemble de données sur un seul disque, vous pouvez répartir les données sur plusieurs disques. Cette technique peut améliorer la vitesse de récupération des données car vous pouvez lire à partir de plusieurs disques en parallèle. Par exemple, si vous avez quatre disques, vous pouvez diviser votre jeu de données en quatre partitions et lire simultanément des mini-lots à partir de chaque partition. Cela peut aider à atténuer le goulot d'étranglement causé par les transferts de disque à RAM.

Dans certains cas, le jeu de données peut être trop volumineux même pour le stockage RAM ou ne peut pas être facilement partitionné sur plusieurs disques. Dans de telles situations, vous pouvez envisager d'utiliser des infrastructures de chargement de données qui prennent en charge la formation en mémoire insuffisante (OOM). Ces frameworks, tels que tf.data de TensorFlow et DataLoader de PyTorch, vous permettent de traiter de grands ensembles de données de manière économe en mémoire en diffusant des mini-lots à partir du disque pendant la formation. Ils gèrent la coordination du chargement des données, assurant un approvisionnement continu de mini-lots au GPU sans épuiser les ressources système.

Lorsque vous utilisez des frameworks de formation OOM, il est important d'optimiser le pipeline de chargement des données afin de minimiser le temps passé sur les E/S de disque. Ceci peut être réalisé en utilisant des techniques telles que la prélecture des données, où les mini-lots suivants sont chargés en arrière-plan pendant que le mini-lot actuel est en cours de traitement. Ce chevauchement du calcul et du chargement des données peut aider à masquer la latence des E/S de disque et à occuper le GPU.

De plus, vous pouvez tirer parti de techniques telles que la compression et la sérialisation des données pour réduire la taille de votre jeu de données sur disque. La compression des données peut économiser de l'espace de stockage et améliorer la vitesse d'E/S du disque. La sérialisation vous permet de stocker des données dans un format compact, ce qui réduit l'espace disque requis et facilite une désérialisation plus rapide des données pendant la formation.

Enfin, lorsque vous travaillez avec des ensembles de données extrêmement volumineux qui ne peuvent pas être gérés efficacement à l'aide des techniques ci-dessus, l'informatique distribuée et le traitement parallèle deviennent nécessaires. Les cadres d'apprentissage en profondeur distribués, tels que Distributed TensorFlow de TensorFlow et DistributedDataParallel de PyTorch, permettent de former des modèles sur plusieurs machines ou GPU. Ces frameworks gèrent le parallélisme des données, vous permettant de répartir la charge de travail et de traiter des mini-lots en parallèle, réduisant considérablement le temps de formation pour les modèles à grande échelle.

Pour résumer, la gestion efficace de grands ensembles de données implique l'optimisation du pipeline de données pour assurer une récupération efficace des mini-lots. Le stockage des données dans la RAM ou sur le GPU peut fournir un accès plus rapide par rapport à la récupération sur disque. La mise à niveau vers les disques SSD, le partage des données, l'utilisation des cadres de formation OOM, l'optimisation du chargement des données et l'exploitation des techniques informatiques distribuées peuvent encore améliorer les performances lors de la gestion de grands ensembles de données. En examinant attentivement ces stratégies, vous pouvez gérer et former efficacement des modèles sur des ensembles de données à grande échelle.

 

Apprentissage en profondeur pour mobile



Apprentissage en profondeur pour mobile

D'accord, donc je m'appelle Carlo, et laissez-moi prendre un moment pour m'assurer que mes démos fonctionnent. Aujourd'hui, j'ai une présentation pour vous de Xnor.de AI, la société pour laquelle je travaille. Notre mission chez Xnor.de AI est de rendre l'IA accessible en permettant aux appareils embarqués et mobiles d'exécuter des algorithmes complexes d'apprentissage en profondeur. Pour commencer les choses différemment, je vais commencer par une démo.

Vous connaissez peut-être déjà YOLO (You Only Look Once), le prototype de détection d'objets en temps réel de Redmon sur un GPU. Chez Xnor.de AI, nous avons développé YOLO pour les téléphones portables, vous permettant de détecter des objets comme des voitures, des personnes, etc. Je vous invite à jouer avec cette démo pendant que j'explique sa signification.

La partie intéressante est que cette détection s'exécute entièrement sur le CPU. Je vais vous expliquer pourquoi nous faisons cela sous peu. Nous avons même étendu nos capacités à des appareils bas de gamme comme le Raspberry Pi Zero, qui est un ordinateur à cinq dollars avec une puissance de calcul limitée. Pourtant, nous pouvons exécuter des tâches de classification dessus. En utilisant la batterie, ce petit ordinateur devient un appareil portable d'apprentissage en profondeur.

Laissez-moi vous montrer comment cela fonctionne. Lorsque le Pi Zero classe une image en tant que personne, par exemple, une petite LED à l'arrière de l'appareil s'allume. Donnez-lui juste un instant, et vous verrez la LED indiquant la présence d'une personne. De même, il peut également classer d'autres objets.

Traditionnellement, les modèles d'apprentissage en profondeur sont formés sur des ordinateurs de bureau ou des serveurs puissants avec des GPU et déployés sur la même plate-forme. Cependant, nous souhaitons étendre le déploiement à d'autres appareils, tels que les téléphones mobiles ou les appareils périphériques comme les sonnettes et les caméras de sécurité. Aujourd'hui, je vais vous donner des conseils de haut niveau sur ce qu'il faut prendre en compte lors de l'application de vos modèles d'apprentissage en profondeur à différentes plates-formes.

Une plate-forme que je recommande fortement est la Nvidia Jetson TX2. Il s'agit d'une mini carte GPU de bureau qui peut exécuter des frameworks populaires tels que TensorFlow, PyTorch ou Darknet sans avoir besoin de recompilation ou de problèmes de déploiement. C'est comme avoir un petit ordinateur portable avec un GPU NVIDIA, le Wi-Fi et le système d'exploitation Ubuntu. Il offre huit gigaoctets de mémoire, vous permettant d'exécuter plusieurs modèles en douceur.

Une autre plate-forme intéressante à considérer est les derniers iPhones, car Apple a développé les processeurs ARM les plus rapides du marché. Ces iPhones offrent une puissance de calcul importante, ce qui les rend adaptés aux tâches d'apprentissage en profondeur. Cependant, gardez à l'esprit que la programmation pour iOS, en particulier dans Xcode, peut être difficile, surtout si vous souhaitez utiliser des frameworks comme TensorFlow ou Caffe.

Pour des options plus abordables, nous avons exploré le Raspberry Pi Zero comme étude de cas. Bien qu'il s'agisse d'un appareil bas de gamme avec un seul cœur et dépourvu d'instructions vectorielles, il constitue un excellent outil pour une expérimentation d'apprentissage en profondeur peu coûteuse. Lors de l'évaluation des plates-formes mobiles ou embarquées, tenez compte de facteurs tels que le nombre de cœurs, la prise en charge des instructions vectorielles, les instructions spécialisées pour l'apprentissage en profondeur et la présence d'un GPU mobile.

En ce qui concerne le choix des frameworks d'apprentissage en profondeur, peu importe celui que vous utilisez pour la formation, car ils utilisent tous des blocs de construction similaires. Des frameworks tels que Torch, Caffe, Darknet et TensorFlow partagent la même base et se connectent à des bibliothèques spécifiques à la plate-forme. Au fil du temps, les différences de performances entre les frameworks convergeront probablement vers un facteur de deux. Par conséquent, utilisez le cadre avec lequel vous êtes le plus à l'aise.

Lors du passage de la formation à l'inférence, le processus de déploiement devient crucial. De nombreuses entreprises utilisent de grands frameworks pendant la formation, mais pour l'inférence, elles extraient et optimisent des composants spécifiques du réseau. Cela leur permet de créer un pipeline d'inférence hautement personnalisé et efficace adapté à leurs besoins. Gardez à l'esprit que le déploiement de modèles sur des appareils mobiles nécessite une optimisation minutieuse des performances.

Pour conclure, le déploiement de modèles d'apprentissage en profondeur sur différents appareils implique de prendre en compte des facteurs tels que la puissance de calcul et les ressources disponibles sur l'appareil cible, les exigences spécifiques de votre application et les compromis entre performances, précision et consommation d'énergie.

Une considération importante est la taille du modèle d'apprentissage en profondeur lui-même. Les appareils mobiles et embarqués ont généralement une capacité de mémoire et de stockage limitée, il est donc crucial de choisir ou de concevoir des modèles légers et efficaces. Des techniques telles que la compression de modèle, la quantification et l'élagage peuvent aider à réduire la taille du modèle sans perte significative de performances.

Un autre facteur à considérer est la vitesse d'inférence du modèle. Les applications en temps réel nécessitent souvent des temps d'inférence rapides pour fournir des réponses rapides. Vous pouvez optimiser l'architecture du modèle, utiliser des accélérateurs matériels spécialisés ou utiliser des techniques telles que le parallélisme de modèle ou la quantification de modèle pour améliorer la vitesse d'inférence.

La consommation d'énergie est un autre aspect critique, en particulier pour les appareils alimentés par batterie. Les modèles d'apprentissage en profondeur peuvent nécessiter beaucoup de calculs et épuiser rapidement la batterie. L'optimisation de l'architecture du modèle et la mise en œuvre d'algorithmes économes en énergie peuvent aider à prolonger la durée de vie de la batterie de l'appareil et à le rendre plus adapté à un fonctionnement continu.

De plus, tenez compte de la compatibilité du cadre d'apprentissage en profondeur avec la plate-forme cible. Certains frameworks peuvent avoir une meilleure prise en charge ou des versions optimisées pour des appareils ou des systèmes d'exploitation spécifiques. Tenez compte de la disponibilité des modèles préformés, des outils de déploiement et de l'assistance de la communauté lors du choix d'un cadre pour votre déploiement.

Enfin, assurez-vous de tester et d'évaluer minutieusement les performances de votre modèle déployé sur l'appareil cible. Validez sa précision, sa latence et sa consommation d'énergie dans des scénarios réels pour vous assurer qu'il répond aux exigences de votre application.

En résumé, le déploiement de modèles d'apprentissage en profondeur sur différents appareils implique de prendre soigneusement en compte des facteurs tels que la taille du modèle, la vitesse d'inférence, la consommation d'énergie, la compatibilité du framework et des tests approfondis. En comprenant les capacités et les limites des appareils cibles et en optimisant le modèle et le pipeline de déploiement en conséquence, vous pouvez apporter efficacement des capacités d'IA à une large gamme d'appareils et activer des applications passionnantes.

 

YOLO 9000 : meilleur, plus rapide, plus puissant


YOLO 9000 : meilleur, plus rapide, plus puissant

quand je parle de Yolo 9000, je fais référence à notre version améliorée du système de détection d'objets. L'année dernière au CBPR, nous avons présenté Yolo, notre système de détection d'objets en temps réel, qui était incroyablement rapide, et c'était génial. CBPR est l'une des principales conférences sur la vision par ordinateur, axée sur la vision par ordinateur et la reconnaissance des formes. Cependant, malgré sa vitesse, Yolo a pris du retard en termes de précision, ce qui a été décevant.

Pendant la présentation, il y a eu un incident embarrassant où j'ai pensé à tort que la porte derrière moi sur le podium était des toilettes. Cet incident nous a fait réaliser que notre système de détection avait besoin d'améliorations significatives, et il nous a laissé insatisfaits de ses performances. Inspirés par l'un des plus grands artistes de musique électronique de tous les temps, nous savions que nous devions travailler plus dur pour rendre Yolo meilleur, plus rapide et plus fort. Aujourd'hui, je suis ici pour partager les résultats de nos efforts.

Avant tout, nous nous sommes concentrés sur l'amélioration de la précision de Yolo. Nous avons apporté plusieurs améliorations progressives, et même si je ne les couvrirai pas toutes ici, vous pouvez trouver tous les détails dans notre document de recherche. J'en soulignerai quelques-uns qui pourraient être pertinents pour d'autres chercheurs.

Typiquement, en détection d'objets, on commence par une pré-formation sur ImageNet en utilisant de petits réseaux de classification avec des dimensions comme 224x224. Ensuite, nous affinons le réseau sur la tâche de détection spécifique, en le redimensionnant à 448x448. Cependant, nous avons découvert que les fonctionnalités apprises à partir des images de petite taille peuvent ne pas bien se traduire lors de l'utilisation d'images plus grandes. Pour résoudre ce problème, nous avons introduit une étape supplémentaire. Après une pré-formation sur ImageNet, nous avons redimensionné notre réseau et l'avons formé pour une plus longue durée sur ImageNet à la plus grande taille. Enfin, nous avons affiné ce réseau, formé sur la plus grande taille, pour la détection d'objets. Cette approche a donné une augmentation significative de la précision moyenne moyenne, d'environ 3,5 %, ce qui est substantiel dans la communauté de la détection. Cette modification simple peut être facilement appliquée à des pipelines de formation similaires.

En ce qui concerne les boîtes d'ancrage, dans le Yolo d'origine, nous avons directement prédit les coordonnées XY ainsi que la largeur et la hauteur des boîtes englobantes à l'aide d'une fonction logistique. Cependant, d'autres systèmes comme Faster R-CNN et SSD utilisent des boîtes d'ancrage et calculent des décalages pour prédire les boîtes d'objets. Pour faciliter le processus d'apprentissage de notre réseau, nous avons décidé d'adopter l'idée de prédire les décalages à partir des boîtes candidates. Plutôt que d'utiliser des boîtes d'ancrage prédéfinies, nous avons examiné les données d'apprentissage et effectué un regroupement de k-moyennes sur les boîtes englobantes pour obtenir un ensemble de groupes de dimensions. Ces clusters représentent des boîtes d'ancrage plus réalistes qui capturent la variabilité des données d'apprentissage. En utilisant ces groupes de dimensions au lieu de boîtes d'ancrage prédéfinies, nous avons obtenu une augmentation d'environ 5 % de la précision moyenne moyenne. Les chercheurs qui utilisent actuellement des boîtes d'ancrage peuvent envisager d'examiner leurs données et d'utiliser le clustering k-means pour améliorer leurs points de départ pour les clusters.

Une autre amélioration passionnante que nous avons apportée a été l'introduction d'un régime de formation à plusieurs échelles. Auparavant, nous formions les détecteurs à un seul rapport d'aspect, en redimensionnant toutes les images à une taille fixe comme 448x448. Cependant, nous redimensionnons maintenant notre réseau de manière aléatoire à différentes échelles au cours du processus de formation. Notre réseau entièrement convolutif sous-échantillonne l'image d'entrée par un facteur de 32, ce qui nous permet de la redimensionner sans affecter la structure du réseau. Nous entraînons notre réseau sur différentes échelles allant de 320 x 320 à 608 x 608, en sélectionnant de manière aléatoire les tailles d'image d'entrée pendant l'entraînement. Cette approche améliore non seulement les performances à une seule échelle, mais offre également un compromis en douceur entre précision et vitesse. Au moment du test, nous pouvons redimensionner le réseau à différentes tailles sans changer les poids entraînés, ce qui nous permet de nous adapter à différentes échelles et d'atteindre l'équilibre souhaité entre précision et vitesse.

Essentiellement, le régime de formation à plusieurs échelles sert de forme d'augmentation des données dans la détection.

En plus du régime d'entraînement multi-échelles, nous avons également introduit une technique appelée entraînement "grossier à fin". Au lieu de former le réseau sur les images en taille réelle dès le début, nous le formons initialement sur des images plus petites et augmentons progressivement la taille au cours du processus de formation. Cette approche aide le réseau à apprendre les caractéristiques générales et à affiner progressivement sa compréhension des détails plus fins à mesure que la taille de l'image augmente. En commençant par des images basse résolution et en passant progressivement à des résolutions plus élevées, nous avons observé une amélioration des performances en termes de précision et de vitesse.

Un autre aspect important sur lequel nous nous sommes concentrés était la question de la détection des petits objets. Yolo a été conçu à l'origine pour détecter des objets à différentes échelles, mais il a eu du mal à détecter avec précision de petits objets. Pour résoudre ce problème, nous avons introduit une nouvelle technique appelée "réseau pyramidal de fonctionnalités" (FPN). FPN combine des fonctionnalités de bas niveau et de haut niveau de différentes couches du réseau pour générer une pyramide de fonctionnalités, où chaque niveau représente une échelle différente de l'image. En incorporant des fonctionnalités multi-échelles, notre réseau est devenu plus robuste dans la détection de petits objets, entraînant une amélioration significative des performances, en particulier pour les objets de plus petite taille.

Enfin, nous avons apporté des optimisations à l'architecture du réseau pour améliorer son efficacité et sa rapidité. Nous avons réduit le nombre de couches convolutives et adopté des blocs de construction efficaces, tels que les convolutions 1x1, pour réduire la complexité de calcul sans compromettre la précision. Ces optimisations nous ont permis d'atteindre un équilibre entre précision et performances en temps réel, faisant du Yolo 9000 l'un des systèmes de détection d'objets les plus rapides et les plus précis disponibles.

Dans l'ensemble, avec ces améliorations, Yolo 9000 a obtenu une augmentation substantielle de la précision moyenne moyenne par rapport au système Yolo d'origine. Il surpasse les autres systèmes de détection d'objets de pointe en termes de précision tout en conservant des performances impressionnantes en temps réel. Nous pensons que les progrès que nous avons réalisés dans Yolo 9000 auront un impact significatif sur un large éventail d'applications, des véhicules autonomes aux systèmes de vidéosurveillance.

YOLO 9000: Better, Faster, Stronger
YOLO 9000: Better, Faster, Stronger
  • 2017.08.17
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

Optimisation bayésienne des hyperparamètres



Optimisation bayésienne des hyperparamètres

Bonjour à tous, je m'appelle Aaron et aujourd'hui, je vais discuter de l'optimisation des hyperparamètres bayésiens. L'information que je partagerai est basée sur les travaux du professeur Roger Gross de l'Université de Toronto. Bien que je sois relativement nouveau sur ce sujet, je pense qu'il est essentiel de souligner l'importance des méthodes automatiques pour le réglage des hyperparamètres. Je suis récemment tombé sur un article de DeepMind sur la modélisation du langage qui a démontré l'importance d'un réglage minutieux des hyperparamètres. Leurs résultats ont surpassé les autres modèles de pointe simplement parce qu'ils ont investi plus d'efforts dans l'optimisation des hyperparamètres. En tant que chercheurs, il est crucial de maîtriser le réglage des hyperparamètres pour évaluer et comparer avec précision différents modèles.

Les pièges d'un réglage insuffisant des hyperparamètres : le réglage des hyperparamètres n'est pas une compétence inhérente aux humains. Sans réglage approprié, on peut publier par inadvertance des modèles qui ne sont pas vraiment supérieurs aux résultats de base. Pour éviter cela, il est nécessaire d'investir du temps et des efforts dans l'optimisation des hyperparamètres. De plus, les meilleures performances ne peuvent être obtenues qu'en maîtrisant cette compétence. Pour commencer, il est crucial d'aborder le réglage des hyperparamètres avec un esprit ouvert. Plutôt que de porter des jugements préconçus sur les valeurs des paramètres, il est conseillé d'explorer toute la gamme des possibilités. J'ai appris par expérience que limiter prématurément l'espace des paramètres peut entraîner une perte de temps et des modèles inefficaces.

Le problème avec la recherche de grille : la recherche de grille, une approche populaire de l'optimisation des hyperparamètres, n'est pas recommandée. Ses défauts deviennent apparents lorsque l'on considère l'aspect pratique du processus. Les modèles du monde réel ont souvent de nombreux hyperparamètres, dont certains sont plus influents que d'autres. Si la recherche par grille est utilisée, des doublons des mêmes points peuvent être générés dans le sous-espace des hyperparamètres pertinents. Ces doublons ne diffèrent que par des paramètres non pertinents, ce qui entraîne un travail redondant. Ainsi, la recherche de grille peut être très inefficace lorsqu'il s'agit de déterminer quels paramètres ne sont pas pertinents. La recherche aléatoire, en revanche, offre une alternative simple. En sélectionnant au hasard des valeurs d'hyperparamètres, les chercheurs peuvent atténuer cette redondance et améliorer leur processus d'optimisation. Des méthodes avancées existent, mais elles n'offrent généralement que des améliorations marginales par rapport à la recherche aléatoire. Par conséquent, investir plus de temps dans la recherche aléatoire peut donner des résultats comparables.

Conseils pour une optimisation efficace des hyperparamètres : Outre l'utilisation de la recherche aléatoire, il existe quelques autres stratégies pour optimiser efficacement les hyperparamètres. Une approche consiste à éliminer les hyperparamètres qui peuvent être déterminés ou définis sur la base de connaissances antérieures ou d'autres procédures. En réduisant le nombre de paramètres, le processus d'optimisation devient plus gérable. Il convient également de noter que la majorité des articles publiés ne sont souvent pas correctement réglés. Pour obtenir un réglage précis, il faut mener de nombreuses expériences, ce qui peut prendre du temps. Par conséquent, les chercheurs doivent être prêts à consacrer beaucoup de temps pour obtenir les meilleurs résultats possibles.

Estimation bayésienne des hyperparamètres : abordons maintenant le sujet de l'estimation bayésienne des paramètres pour le réglage des hyperparamètres. Les hyperparamètres englobent toutes les variables qui ne peuvent pas être apprises dans le cadre du modèle lui-même, y compris la taille du modèle, la régularisation, le taux d'apprentissage et la durée de la formation, entre autres. Généralement, un ensemble de validation est utilisé pour sélectionner les paramètres et leurs performances sont évaluées en conséquence. Cependant, comme ce processus manque de gradients, il diffère du problème d'apprentissage principal résolu par rétropropagation. De plus, en raison des dépenses de calcul liées à l'évaluation de chaque expérience, il est essentiel d'être stratégique dans la sélection des combinaisons d'hyperparamètres.

Régression bayésienne en tant qu'outil : la régression bayésienne est un outil utile qui aide à quantifier les performances attendues et l'incertitude associée aux différentes régions de l'espace des hyperparamètres. En ajustant une distribution de probabilité à des fonctions possibles, la régression bayésienne offre une approche plus nuancée par rapport au simple ajustement d'une seule ligne aux données. Initialement, en l'absence d'observations, les fonctions d'échantillonnage semblent dispersées. Cependant, à mesure que davantage d'observations sont faites, la distribution des fonctions se rétrécit, reflétant une certitude accrue.

Un autre aspect important de l'optimisation des hyperparamètres est la nécessité d'éliminer autant d'hyperparamètres que possible. S'il existe un moyen de déterminer la valeur d'un hyperparamètre sur la base de connaissances préalables ou via une autre procédure, il est judicieux de le définir en conséquence. Plus vous avez d'hyperparamètres, plus il devient difficile de les optimiser efficacement. En réduisant le nombre d'hyperparamètres, vous simplifiez le processus d'optimisation et le rendez plus facile à gérer.

Il convient également de noter que la plupart des articles publiés dans le domaine ne sont pas correctement réglés. La réalisation d'un réglage approprié nécessite un nombre important d'expériences à mener, bien plus que ce que les chercheurs effectuent habituellement. Si vous voulez vraiment observer des modèles et rassembler des preuves pour prendre en charge des valeurs de paramètres spécifiques, soyez prêt à investir beaucoup de temps dans le processus de réglage.

Revenons maintenant aux diapositives de Roger Gross. L'objectif de la présentation est l'estimation d'hyperparamètres bayésiens pour le réglage des hyperparamètres. Les hyperparamètres font référence à toutes les variables qui ne peuvent pas être apprises dans le cadre du modèle et décrivent le modèle choisi, telles que la taille du modèle, la régularisation, le taux d'apprentissage et la durée de la formation. La sélection des hyperparamètres appropriés est cruciale pour obtenir des performances optimales du modèle.

L'approche traditionnelle pour le réglage des hyperparamètres, la recherche de grille, n'est pas recommandée en raison de son inefficacité. La recherche de grille entraîne souvent des évaluations redondantes des combinaisons d'hyperparamètres et ne tient pas compte de la pertinence de chaque hyperparamètre. Au lieu de cela, il est conseillé d'explorer plus efficacement l'espace des hyperparamètres. La recherche aléatoire peut être une alternative simple à la recherche par grille, mais il existe des méthodes encore plus avancées disponibles, qui seront discutées.

L'orateur insiste sur l'importance de commencer avec un esprit ouvert et de considérer l'éventail complet des valeurs d'hyperparamètres possibles. Faire des préjugés sur les plages d'hyperparamètres peut conduire à des résultats sous-optimaux et à une perte de temps. Il est essentiel d'éviter la recherche par grille comme méthode de recherche d'hyperparamètres car elle duplique le travail et ne parvient pas à identifier avec précision les hyperparamètres pertinents. La sélection aléatoire d'hyperparamètres peut être une alternative raisonnable, car elle fournit une bonne base de référence.

Cependant, des méthodes plus avancées, telles que la régression bayésienne, peuvent offrir des résultats encore meilleurs. La régression bayésienne permet de modéliser l'espace des hyperparamètres et d'estimer les performances attendues et l'incertitude associée à chaque paramètre d'hyperparamètre. Le modèle de régression prend en compte toutes les valeurs d'hyperparamètres possibles plutôt que de se concentrer sur des points individuels, ce qui conduit à une prise de décision plus éclairée.

Pour sélectionner le prochain ensemble d'hyperparamètres à explorer, le présentateur introduit le concept de fonction d'acquisition. La fonction d'acquisition quantifie l'amélioration attendue des performances et l'incertitude dans l'espace des hyperparamètres. Il équilibre l'exploration et l'exploitation, visant à trouver des paramètres d'hyperparamètres susceptibles d'être bons mais également inexplorés.

L'orateur souligne que si les diapositives représentent des exemples unidimensionnels, l'espace des hyperparamètres est généralement de dimension beaucoup plus élevée, ce qui rend la visualisation difficile. La régression bayésienne peut être appliquée à des espaces de dimension supérieure à l'aide de techniques telles que les processus gaussiens. Différentes approches de modélisation existent et les choix doivent être basés sur des considérations telles que le coût de calcul et le problème spécifique à résoudre.

Pour évaluer les performances de diverses méthodes d'optimisation d'hyperparamètres, des expériences sont menées et la méthode qui atteint les meilleures performances avec le moins d'expériences est considérée comme la plus efficace. Des comparaisons sont faites avec des suppositions d'experts humains et des recherches aléatoires, où les méthodes avancées surpassent systématiquement ces lignes de base.

En conclusion, l'optimisation bayésienne des hyperparamètres offre une approche puissante pour améliorer les performances du modèle en explorant efficacement l'espace des hyperparamètres. Il permet d'éviter les pièges de la recherche par grille et permet aux chercheurs de prendre des décisions plus éclairées en fonction des performances attendues et des estimations d'incertitude. Cependant, il est essentiel d'examiner attentivement le coût de calcul, la pertinence des hyperparamètres et les objectifs généraux de la recherche lors du choix de la méthode d'optimisation des hyperparamètres appropriée.

N'oubliez pas que cette présentation est basée sur les idées de Roger Gross et fournit des conseils précieux sur l'importance de l'optimisation des hyperparamètres et les avantages des techniques bayésiennes. Il est recommandé de se référer à l'article original ou à d'autres recherches dans le domaine pour une compréhension plus détaillée des méthodes et de leur mise en œuvre.

Bayesian Hyperparameter Optimization
Bayesian Hyperparameter Optimization
  • 2017.08.17
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

GAN



GAN

Il existe plusieurs considérations lors de l'utilisation de réseaux antagonistes génératifs (GAN) pour la génération d'images. Les GAN ont à la fois des avantages et des inconvénients dans ce contexte. Un avantage significatif est que les GAN imposent naturellement que la distribution générée soit similaire à la distribution cible sans nécessiter de fonctions de perte complexes. Ceci est réalisé grâce au jeu mini-max entre le générateur et le discriminateur. Les GAN offrent un bon moyen d'encoder des images réalistes en apprenant la distribution sous-jacente. Cependant, en pratique, des pertes supplémentaires sont souvent nécessaires lors de la formation du système.

Il existe différents types de GAN utilisés à des fins différentes. Les GAN conditionnels permettent de générer des données basées sur des distributions de probabilité conditionnelles. Cela signifie qu'au lieu de générer à partir d'une distribution de probabilité unique, le générateur peut être conditionné sur des informations spécifiques. D'autres variantes du GAN, telles que Pix2Pix et CycleGAN, se concentrent sur les tâches de traduction d'image à image. Ces modèles peuvent transformer des images d'un domaine à un autre, permettant des tâches telles que le transfert de style ou la synthèse d'images.

La formation des GAN peut être difficile, et il existe quelques conseils qui peuvent aider à améliorer le processus de formation. Il est important de ne pas abandonner facilement car les GAN nécessitent souvent plusieurs itérations pour converger. La normalisation des entrées d'image entre -1 et 1 est souvent bénéfique, et le lissage des étiquettes peut être appliqué pour améliorer la stabilité de l'entraînement. L'utilisation d'un bruit gaussien au lieu d'un bruit uniformément distribué comme entrée du générateur peut également être utile. Il existe de nombreux autres conseils disponibles pour la formation des GAN, et des ressources telles que les référentiels GitHub peuvent fournir des listes complètes.

Pour illustrer l'utilisation pratique des GAN, examinons un exemple de traduction d'image à image à l'aide de CycleGAN. Ce modèle vise à traduire des images d'un domaine à un autre sans avoir besoin d'échantillons d'apprentissage appariés explicitement. Au lieu de cela, un pool d'images de chaque domaine est utilisé, et l'objectif est d'apprendre deux transformations : l'une du domaine X au domaine Y et l'autre du domaine Y au domaine X. Le terme de cohérence de cycle est introduit pour s'assurer que l'application de la et les transformations arrière sur une image renvoient l'image d'origine. Le modèle combine plusieurs pertes, y compris la perte GAN et la perte de cohérence de cycle, pour entraîner les générateurs et les discriminateurs.

L'évaluation des résultats peut se faire par diverses méthodes. Des études mécaniques de Turk peuvent être menées, où les évaluateurs humains sont invités à faire la distinction entre les images réelles et générées. De plus, des métriques d'évaluation spécifiques telles que l'intersection sur l'union (IoU) peuvent être utilisées pour mesurer la précision des cartes de segmentation générées par rapport aux cartes d'origine.

Il convient de noter que même si les GAN ont montré des résultats prometteurs, leur formation peut encore poser des problèmes. Le mode effondrement, où le générateur produit des variations limitées, et les problèmes de préservation des couleurs font partie des difficultés qui peuvent survenir. Les chercheurs continuent d'explorer et d'améliorer les modèles GAN pour de meilleurs résultats de génération d'images.

Une autre approche qui a été explorée pour améliorer la formation des GAN est appelée croissance progressive. Dans la formation GAN traditionnelle, le générateur et le discriminateur sont formés simultanément sur les images de même résolution tout au long du processus de formation. Cependant, la culture progressive adopte une approche différente.

Dans la culture progressive, la formation commence avec des images à basse résolution et augmente progressivement la résolution au fil du temps. L'idée derrière cette approche est de permettre aux modèles d'apprendre d'abord la structure de base, puis d'affiner progressivement les détails à mesure que la résolution augmente. Cela aide à stabiliser le processus d'entraînement et peut conduire à de meilleurs résultats.

Au cours de la formation des GAN progressifs, plusieurs résolutions sont utilisées et de nouvelles couches sont ajoutées aux réseaux générateur et discriminateur à mesure que la résolution augmente. Les modèles sont formés de manière hiérarchique, où les couches de résolution inférieure sont formées en premier, puis les couches de résolution supérieure sont ajoutées et formées.

En partant d'images basse résolution, les modèles peuvent apprendre la structure globale et générer des détails grossiers. À mesure que la résolution augmente, les modèles peuvent se concentrer sur la capture de détails plus fins et la production d'images plus réalistes. Ce processus de formation étape par étape permet d'éviter l'instabilité de la formation et l'effondrement des modes, qui sont des défis courants dans la formation GAN.

La croissance progressive s'est avérée efficace pour générer des images de haute qualité dans divers domaines, tels que les visages, les paysages et les objets. Il permet de générer des images avec des textures plus réalistes, des détails plus nets et une meilleure qualité visuelle globale.

En plus de la croissance progressive, il existe d'autres techniques et astuces qui peuvent être utilisées pour améliorer la formation GAN. L'une de ces techniques consiste à utiliser des méthodes de régularisation, telles que la normalisation du poids, la normalisation spectrale et la pénalité de gradient, qui aident à stabiliser l'entraînement et à empêcher l'effondrement du mode.

Une autre considération importante est le choix des fonctions de perte. Bien que la perte contradictoire soit un élément clé de la formation GAN, elle est souvent complétée par des fonctions de perte supplémentaires pour guider le processus d'apprentissage. Ces pertes supplémentaires peuvent inclure une perte de perception, une perte d'appariement de caractéristiques ou une perte de reconstruction, selon la tâche spécifique et le résultat souhaité.

De plus, les choix architecturaux, tels que l'architecture du réseau, les fonctions d'activation et les algorithmes d'optimisation, peuvent également avoir un impact sur la formation des GAN. L'expérimentation et l'affinement de ces choix sont souvent nécessaires pour obtenir des résultats optimaux.

Dans l'ensemble, la formation des GAN est une tâche complexe et difficile qui nécessite un examen attentif de divers facteurs. Alors que les GAN ont montré un succès remarquable dans la génération d'images réalistes, l'obtention de résultats stables et de haute qualité reste un domaine de recherche actif. Les progrès des techniques de formation, des méthodes de régularisation et des fonctions de perte continuent de repousser les limites de ce que les GAN peuvent réaliser.

 

Algorithmes de convolution rapide



Algorithmes de convolution rapide

Je m'appelle Tanner et Dan m'a demandé de prendre la parole lors de son séminaire d'apprentissage approfondi et de pratique. Cependant, j'ai rapidement réalisé que je n'avais pas beaucoup de connaissances sur l'apprentissage en profondeur. Néanmoins, j'ai décidé de me concentrer sur l'aspect pratique du sujet. Alors, j'ai intitulé mon discours "Comment j'ai appris à arrêter de m'inquiéter et à aimer CDNN" ou "Comment mes circonvolutions deviennent-elles si rapides ?" Je voulais mettre l'accent sur le côté pratique des choses.

Pour commencer, j'ai introduit un fait amusant que les participants pourraient partager lors de leur prochaine réunion d'apprentissage en profondeur. Il s'avère que les comnets n'effectuent pas réellement de convolutions ; ils effectuent des corrélations. C'est une différence subtile qui n'a pas d'impact significatif sur la discussion.

Ensuite, j'ai introduit quelques notations que j'utiliserais tout au long de l'exposé. Dans une convolution typique, vous avez une taille de lot (n) représentant le nombre d'images traitées ensemble. Il existe également une taille de noyau, que nous supposerons être carrée pour plus de simplicité. De plus, il y a la largeur et la hauteur de sortie, qui dépendent des dimensions d'entrée et de la taille du noyau. De plus, il y a les canaux d'entrée (c) et les canaux de sortie (d).

J'ai ensuite expliqué l'algorithme de convolution naïf, qui est l'implémentation la plus simple. Cet algorithme se compose de sept boucles for imbriquées. Alors que les quatre premières boucles peuvent être parallélisées, les boucles restantes (cinq à sept) posent un défi car elles modifient la même valeur de sortie. Même en utilisant un GPU, la parallélisation de ces boucles n'est pas anodine du fait des accès mémoire associés.

Pour illustrer le concept, j'ai fourni un petit exemple d'une entrée 4x4 avec une convolution 3x3, résultant en une sortie 2x2. Chaque élément de sortie nécessite neuf multiplications et le calcul des quatre valeurs de sortie nécessite 36 multiplications.

Ensuite, j'ai introduit la forme matricielle Toeplitz du problème, qui représente le calcul de convolution sous forme matricielle. Ce formulaire démontre les économies de paramètres réalisées grâce au partage des poids et la présence de nombreux zéros en raison des interactions sélectives des poids. Cependant, cette représentation matricielle introduit des problèmes de mémoire pour les entrées et les sorties plus importantes.

Pour résoudre ce problème, j'ai discuté d'une approche alternative utilisée par Cafe, où l'entrée est répliquée à la place du noyau. En créant une représentation matricielle de l'entrée, le calcul de convolution peut être effectué efficacement à l'aide de la multiplication matricielle. L'avantage de cette approche est qu'elle peut être sous-traitée à des bibliothèques comme CuBLAS, qui peuvent paralléliser les calculs et utiliser du matériel optimisé.

J'ai également mis en évidence une technique de streaming qui divise le calcul en plus petits morceaux, permettant un chevauchement entre le calcul et le transfert de données. Cette approche permet d'atténuer les limitations de mémoire et d'améliorer les performances globales.

Ensuite, j'ai discuté des progrès réalisés en vision par ordinateur en revisitant des articles des années 1980. En s'inspirant des techniques de traitement du signal, en particulier de la réduction algorithmique de la force, les chercheurs ont pu améliorer la vitesse des convolutions.

J'ai expliqué le concept de la théorie du filtrage minimal, qui stipule qu'une convolution 1D avec une taille de filtre (k) et une largeur de sortie (w) peut être obtenue avec aussi peu que w + k - 1 multiplications. Cette réduction des multiplications peut être obtenue en réorganisant le calcul et en introduisant des valeurs intermédiaires qui permettent plus d'additions au lieu de multiplications.

J'ai fourni un exemple de l'algorithme de Weiner-Grassmann, qui montre comment une convolution 1D peut être organisée pour minimiser les multiplications. En appliquant cet algorithme, nous pouvons réduire le nombre de multiplications nécessaires pour une convolution donnée.

Ces concepts peuvent également être étendus aux convolutions 2D, où la convolution 1D minimale peut être imbriquée dans la convolution 2D minimale. J'ai démontré cette imbrication et expliqué comment des matrices spécifiques sont nécessaires pour différentes tailles d'entrée et de noyau.

Dans ce scénario spécifique, où nous avons une convolution trois par trois et une entrée quatre par quatre, les matrices de l'approche de réduction algorithmique ressembleraient à ceci :

Une matrice :

[ 1 0 -1 0 1 0 -1 0 ]
[ 0 1 1 0 0 -1 -1 0 ]
[ 0 1 -1 0 0 -1 1 0 ]
[ 0 0 0 1 -1 -1 1 0 ]

Matrice G :

[1 0 0 -1]
[0 1 -1 0]
[-1 0 0 1]
[0 -1 1 0]

Matrice B :

[ 1 0 -1 0 ]
[ 0 1 1 0 ]
[ 0 1 -1 0 ]
[ 0 0 0 1 ]

Avec ces matrices, nous pouvons calculer la sortie en utilisant des multiplications et des additions matricielles. En réarrangeant les calculs de cette manière, on réduit le nombre de multiplications nécessaires.

Ainsi, l'approche algorithmique de réduction de la force nous permet d'effectuer la convolution en utilisant moins de multiplications, ce qui peut conduire à des améliorations significatives de la vitesse. En exploitant les propriétés de l'opération de convolution et en appliquant des techniques de traitement du signal, nous pouvons réaliser des calculs plus rapides et plus efficaces.

Il convient de noter que ces techniques ne sont qu'un aperçu du vaste domaine de l'apprentissage en profondeur et des réseaux de neurones convolutifs. De nombreuses autres optimisations et avancées ont été apportées pour améliorer la vitesse et l'efficacité des convolutions, telles que l'utilisation de matériel spécialisé comme les GPU ou les TPU, la mise en œuvre de techniques de parallélisation et l'exploration de différentes approches algorithmiques.

En conclusion, l'apprentissage en profondeur et les réseaux de neurones convolutifs ont révolutionné le domaine de la vision par ordinateur et sont devenus des outils essentiels pour un large éventail d'applications. Comprendre les principes et techniques sous-jacents, tels que la réduction de la force algorithmique, peut nous aider à optimiser et à améliorer les performances des modèles d'apprentissage en profondeur, permettant des avancées encore plus intéressantes à l'avenir.

Fast Convolution Algorithms
Fast Convolution Algorithms
  • 2017.08.17
  • www.youtube.com
#hangoutsonair, Hangouts On Air, #hoa
 

Apprentissage par renforcement profond



Apprentissage par renforcement profond

Avant de commencer, faisons un rapide sondage pour voir qui ici travaille activement avec l'apprentissage en profondeur depuis moins d'un an. Levez la main si vous tombez dans cette catégorie. Maintenant, qu'en est-il de ceux qui travaillent avec l'apprentissage en profondeur depuis moins de six mois ? Super! Et enfin, qui parmi vous utilise le deep learning depuis plus longtemps, plus d'un an ? Excellent, nous avons aussi quelques personnes expérimentées ici.

Maintenant, j'aimerais commencer par partager une petite histoire de mon propre voyage. Je travaille sur l'apprentissage en profondeur depuis environ une semaine, c'est-à-dire à peu près au moment où Daniel a lancé ce groupe. Je me souviens qu'il encourageait tout le monde à présenter son travail, et même si je n'avais pas grand-chose à montrer à ce moment-là, j'ai quand même décidé de participer. Avance rapide jusqu'à aujourd'hui, et je peux dire avec fierté que j'ai fait des progrès significatifs en seulement une semaine. Je veux partager mes expériences et ce que j'ai accompli pendant cette période. Ce sera intéressant pour ceux qui débutent dans l'apprentissage en profondeur et aussi pour ceux qui sont curieux de connaître PyTorch.

Alors, qu'est-ce que j'ai fait la semaine dernière ? Pour commencer, j'ai commencé par me familiariser avec les bases de l'apprentissage en profondeur à l'aide d'un exemple simple CIFAR-10. Pour ceux qui ne le savent pas, CIFAR-10 est un ensemble de données composé de dix classes différentes d'images. Il sert d'introduction simple à l'apprentissage en profondeur. L'objectif est de former un réseau de neurones pour prédire la classe d'une image. Je vais vous guider à travers un code pour expliquer le processus et mettre en évidence ce que nous faisons réellement.

Jetons un coup d'œil au code. La première chose que je veux mentionner est sa concision. Ce fichier ne contient que 140 lignes de code Python, ce qui est assez impressionnant étant donné qu'il couvre tout ce dont nous avons besoin pour la formation sur CIFAR-10. Auparavant, je travaillais avec C et CUDA de bas niveau, donc tomber sur PyTorch a été une révélation. La structure du code est simple. Nous avons quelques transformations de données de base, un train et un chargeur de train, qui sont fournis de manière pratique par le module de vision de la torche. Ce module nous permet de télécharger l'ensemble de données CIFAR-10 sans effort. Nous définissons notre réseau, qui se compose de couches convolutives et entièrement connectées. PyTorch s'occupe de la rétropropagation et fournit des optimiseurs intégrés. Avec seulement quelques lignes de code, nous pouvons commencer à former le modèle sur CIFAR-10.

Ensuite, je veux discuter de l'apprentissage par renforcement et de son application à l'apprentissage en profondeur. L'apprentissage par renforcement diffère des tâches traditionnelles de classification ou de régression car il implique des environnements interactifs et des agents qui prennent des mesures pour maximiser les récompenses. Au lieu d'avoir des données d'entraînement étiquetées, nous recevons des signaux de récompense basés sur nos actions dans l'environnement. Pour illustrer ce concept, examinons l'exemple DQN (Deep Q-Network) utilisant l'environnement Cartpole.

L'environnement Cartpole simule un poteau en équilibre sur un chariot, et l'objectif est de maintenir le poteau droit aussi longtemps que possible. Nous recevons une récompense lorsque la perche reste en équilibre et une pénalité lorsqu'elle tombe. Il s'agit d'un problème classique d'apprentissage par renforcement. Dans le code, nous utilisons une mémoire de rejeu pour stocker les expériences passées et en tirer des échantillons pendant la formation. Cela aide à surmonter le problème des observations corrélées qui peuvent perturber le processus de rétropropagation. Notre architecture de réseau est définie de manière similaire à l'exemple CIFAR-10, mais nous nous concentrons maintenant sur la prédiction des récompenses futures en fonction d'une paire état-action. Nous sélectionnons des actions en fonction des récompenses estimées et mettons à jour notre modèle en conséquence.

Enfin, je veux partager mon propre exemple rapide sur lequel j'ai travaillé hier. J'ai créé un environnement simple où un joueur navigue vers une récompense. Le joueur reçoit une récompense en fonction de sa distance au but.

Dans cet exemple, j'ai créé un environnement basé sur une grille où un joueur navigue vers une récompense. L'objectif du joueur est d'atteindre la position de but et de recevoir une récompense élevée tout en évitant les obstacles et les pénalités. La position actuelle du joueur est représentée par les coordonnées (x, y) sur la grille.

Pour implémenter cela, j'ai utilisé un tableau 2D pour représenter l'environnement. Chaque cellule du tableau correspond à une position sur la grille et contient une valeur indiquant le type de cette cellule (par exemple, obstacle, récompense, pénalité, espace vide). Initialement, le joueur est placé au hasard dans l'environnement et la position du but est définie sur une coordonnée spécifique.

J'ai ensuite défini un réseau de neurones qui prend la position actuelle du joueur en entrée et prédit la meilleure action à entreprendre (c'est-à-dire se déplacer vers le haut, le bas, la gauche ou la droite) pour atteindre l'objectif. Le réseau est entraîné à l'aide d'une variante de l'algorithme d'apprentissage Q, où les valeurs Q représentent les récompenses attendues pour chaque action dans un état donné.

Pendant l'entraînement, le joueur explore l'environnement en prenant des mesures et en recevant des récompenses immédiates en fonction de sa position. Ces récompenses sont utilisées pour mettre à jour les valeurs Q et améliorer les prédictions du réseau. Le processus d'entraînement se poursuit jusqu'à ce que le joueur atteigne systématiquement la position de but et reçoive des récompenses élevées.

Une fois la formation terminée, nous pouvons tester le réseau formé en laissant le joueur naviguer dans l'environnement à l'aide de la politique apprise. Le joueur utilise les prédictions du réseau pour sélectionner les meilleures actions à chaque étape, se rapprochant progressivement de l'objectif.

Cet exemple illustre l'application de l'apprentissage par renforcement profond dans un environnement personnalisé. Il montre comment un réseau de neurones peut apprendre à naviguer dans un espace complexe, à prendre des décisions basées sur des récompenses et des pénalités et à atteindre un objectif spécifique.