Réseaux de neurones profonds
Un réseau neuronal profond (DNN) est un ANN avec plusieurs couches cachées entre les couches d'entrée et de sortie. Semblables aux ANNs peu profonds, les DNN peuvent modéliser des relations non linéaires complexes.
L'objectif principal d'un réseau de neurones est de recevoir un ensemble d'entrées, d'effectuer des calculs progressivement complexes sur celles-ci et de fournir une sortie pour résoudre des problèmes du monde réel tels que la classification. Nous nous limitons à alimenter les réseaux de neurones.
Nous avons une entrée, une sortie et un flux de données séquentielles dans un réseau profond.
Les réseaux neuronaux sont largement utilisés dans les problèmes d'apprentissage supervisé et d'apprentissage par renforcement. Ces réseaux sont basés sur un ensemble de couches connectées les unes aux autres.
Dans l'apprentissage profond, le nombre de couches cachées, pour la plupart non linéaires, peut être important; disons environ 1000 couches.
Les modèles DL produisent de bien meilleurs résultats que les réseaux ML normaux.
Nous utilisons principalement la méthode de descente de gradient pour optimiser le réseau et minimiser la fonction de perte.
Nous pouvons utiliser le Imagenet, un référentiel de millions d'images numériques pour classer un ensemble de données en catégories comme les chats et les chiens. Les réseaux DL sont de plus en plus utilisés pour les images dynamiques en dehors des images statiques et pour les séries chronologiques et l'analyse de texte.
La formation des ensembles de données constitue une partie importante des modèles de Deep Learning. De plus, Backpropagation est le principal algorithme de formation des modèles DL.
DL traite de la formation de grands réseaux de neurones avec des transformations d'entrée-sortie complexes.
Un exemple de DL est le mappage d'une photo avec le nom de la ou des personnes sur la photo comme ils le font sur les réseaux sociaux et la description d'une image avec une phrase est une autre application récente de DL.
Les réseaux de neurones sont des fonctions qui ont des entrées comme x1, x2, x3… qui sont transformées en sorties comme z1, z2, z3 et ainsi de suite en deux (réseaux peu profonds) ou plusieurs opérations intermédiaires également appelées couches (réseaux profonds).
Les poids et les biais changent d'une couche à l'autre. «w» et «v» sont les poids ou synapses des couches des réseaux neuronaux.
Le meilleur cas d'utilisation de l'apprentissage en profondeur est le problème d'apprentissage supervisé. Ici, nous avons un grand ensemble d'entrées de données avec un ensemble de sorties souhaité.
Ici, nous appliquons un algorithme de propagation arrière pour obtenir une prédiction de sortie correcte.
L'ensemble de données le plus élémentaire de l'apprentissage en profondeur est le MNIST, un ensemble de données de chiffres manuscrits.
Nous pouvons entraîner en profondeur un réseau neuronal convolutif avec Keras pour classer les images de chiffres manuscrits de cet ensemble de données.
Le déclenchement ou l'activation d'un classificateur de réseau neuronal produit un score. Par exemple, pour classer les patients comme malades et en bonne santé, nous considérons des paramètres tels que la taille, le poids et la température corporelle, la pression artérielle, etc.
Un score élevé signifie que le patient est malade et un score faible signifie qu'il est en bonne santé.
Chaque nœud des couches de sortie et masquées a ses propres classificateurs. La couche d'entrée prend des entrées et transmet ses scores à la couche cachée suivante pour une activation supplémentaire et cela continue jusqu'à ce que la sortie soit atteinte.
Cette progression de l'entrée à la sortie de gauche à droite dans le sens avant est appelée forward propagation.
Le chemin d'assignation de crédit (CAP) dans un réseau neuronal est la série de transformations commençant de l'entrée à la sortie. Les CAP élaborent des connexions causales probables entre l'entrée et la sortie.
La profondeur CAP pour un réseau neuronal à anticipation donné ou la profondeur CAP est le nombre de couches cachées plus une lorsque la couche de sortie est incluse. Pour les réseaux de neurones récurrents, où un signal peut se propager à travers une couche plusieurs fois, la profondeur CAP peut être potentiellement illimitée.
Filets profonds et filets peu profonds
Il n'y a pas de seuil clair de profondeur qui sépare l'apprentissage superficiel de l'apprentissage profond; mais il est généralement admis que pour l'apprentissage en profondeur qui comporte plusieurs couches non linéaires, le CAP doit être supérieur à deux.
Le nœud de base dans un réseau neuronal est une perception imitant un neurone dans un réseau neuronal biologique. Ensuite, nous avons la perception multicouche ou MLP. Chaque ensemble d'entrées est modifié par un ensemble de pondérations et de biais; chaque arête a un poids unique et chaque nœud a un biais unique.
La prédiction accuracy d'un réseau neuronal dépend de son weights and biases.
Le processus d'amélioration de la précision du réseau neuronal s'appelle training. La sortie d'un réseau prop avant est comparée à cette valeur qui est connue pour être correcte.
le cost function or the loss function est la différence entre la sortie générée et la sortie réelle.
Le but de la formation est de réduire au maximum le coût de la formation sur des millions d'exemples de formation. Pour ce faire, le réseau ajuste les pondérations et les biais jusqu'à ce que la prédiction corresponde au résultat correct.
Une fois bien formé, un réseau neuronal a le potentiel de faire une prédiction précise à chaque fois.
Lorsque le modèle devient complexe et que vous voulez que votre ordinateur les reconnaisse, vous devez opter pour des réseaux de neurones. Dans ces scénarios de modèle complexes, le réseau de neurones surpasse tous les autres algorithmes concurrents.
Il existe maintenant des GPU qui peuvent les entraîner plus rapidement que jamais. Les réseaux de neurones profonds révolutionnent déjà le domaine de l'IA
Les ordinateurs se sont révélés efficaces pour effectuer des calculs répétitifs et suivre des instructions détaillées, mais n'ont pas été aussi bons pour reconnaître des modèles complexes.
S'il y a le problème de la reconnaissance de motifs simples, une machine à vecteurs de support (svm) ou un classificateur de régression logistique peut bien faire le travail, mais à mesure que la complexité des motifs augmente, il n'y a pas d'autre moyen que d'opter pour des réseaux de neurones profonds.
Par conséquent, pour des modèles complexes comme un visage humain, les réseaux de neurones peu profonds échouent et n'ont pas d'autre alternative que d'opter pour des réseaux de neurones profonds avec plus de couches. Les filets profonds sont capables de faire leur travail en décomposant les modèles complexes en modèles plus simples. Par exemple, visage humain; adeep net utiliserait des bords pour détecter des parties comme les lèvres, le nez, les yeux, les oreilles, etc., puis les combinerait à nouveau pour former un visage humain
La précision de la prédiction correcte est devenue si précise que récemment, lors d'un défi de reconnaissance de modèle Google, un filet profond a battu un humain.
Cette idée d'un réseau de perceptrons en couches existe depuis un certain temps; dans ce domaine, des filets profonds imitent le cerveau humain. Mais un inconvénient est qu'ils prennent beaucoup de temps à s'entraîner, une contrainte matérielle
Cependant, les GPU hautes performances récents ont pu entraîner de tels réseaux profonds en moins d'une semaine; tandis que les cpus rapides auraient pu prendre des semaines voire des mois pour faire de même.
Choisir un Deep Net
Comment choisir un deep net? Nous devons décider si nous construisons un classificateur ou si nous essayons de trouver des modèles dans les données et si nous allons utiliser l'apprentissage non supervisé. Pour extraire des motifs à partir d'un ensemble de données non étiquetées, nous utilisons une machine Boltzman restreinte ou un encodeur automatique.
Tenez compte des points suivants lors du choix d'un filet profond -
Pour le traitement de texte, l'analyse des sentiments, l'analyse syntaxique et la reconnaissance d'entités de noms, nous utilisons un réseau de tenseur neuronal récurrent ou récursif ou RNTN;
Pour tout modèle de langage fonctionnant au niveau des caractères, nous utilisons le réseau récurrent.
Pour la reconnaissance d'image, nous utilisons le réseau de croyance profonde DBN ou réseau convolutif.
Pour la reconnaissance d'objets, nous utilisons un RNTN ou un réseau convolutif.
Pour la reconnaissance vocale, nous utilisons le net récurrent.
En général, les réseaux de croyances profondes et les perceptrons multicouches avec des unités linéaires rectifiées ou RELU sont tous deux de bons choix pour la classification.
Pour l'analyse des séries chronologiques, il est toujours recommandé d'utiliser le réseau récurrent.
Les réseaux neuronaux existent depuis plus de 50 ans; mais ce n'est que maintenant qu'ils ont pris de l'importance. La raison en est qu'ils sont difficiles à former; lorsque nous essayons de les entraîner avec une méthode appelée propagation arrière, nous nous heurtons à un problème appelé dégradés qui disparaissent ou explosent. Lorsque cela se produit, la formation prend plus de temps et la précision passe au second plan. Lors de la formation d'un ensemble de données, nous calculons constamment la fonction de coût, qui est la différence entre la sortie prévue et la sortie réelle d'un ensemble de données d'apprentissage étiquetées.La fonction de coût est ensuite minimisée en ajustant les poids et les valeurs de biais jusqu'à la valeur la plus basse. Est obtenu. Le processus de formation utilise un gradient, qui est la vitesse à laquelle le coût changera par rapport au changement des valeurs de poids ou de biais.
Réseaux Boltzman restreints ou auto-encodeurs - RBN
En 2006, une percée a été réalisée dans la lutte contre le problème de la disparition des gradients. Geoff Hinton a conçu une nouvelle stratégie qui a conduit au développement deRestricted Boltzman Machine - RBM, un filet à deux couches peu profond.
La première couche est le visible couche et la deuxième couche est la hiddencouche. Chaque nœud de la couche visible est connecté à chaque nœud de la couche masquée. Le réseau est dit restreint car deux couches au sein de la même couche ne sont pas autorisées à partager une connexion.
Les auto-encodeurs sont des réseaux qui encodent les données d'entrée sous forme de vecteurs. Ils créent une représentation cachée ou compressée des données brutes. Les vecteurs sont utiles dans la réduction de la dimensionnalité; le vecteur comprime les données brutes en un plus petit nombre de dimensions essentielles. Les auto-encodeurs sont associés à des décodeurs, ce qui permet la reconstruction des données d'entrée en fonction de leur représentation cachée.
RBM est l'équivalent mathématique d'un traducteur bidirectionnel. Une passe avant prend les entrées et les traduit en un ensemble de nombres qui encode les entrées. Un passage en arrière prend quant à lui cet ensemble de nombres et les traduit à nouveau en entrées reconstruites. Un filet bien formé effectue un appui arrière avec un haut degré de précision.
Dans l'une ou l'autre des étapes, les pondérations et les biais ont un rôle critique; ils aident le RBM à décoder les interrelations entre les entrées et à décider quelles entrées sont essentielles pour détecter les modèles. Par des passes avant et arrière, le RBM est formé pour reconstruire l'entrée avec différents poids et biais jusqu'à ce que l'entrée et la construction soient aussi proches que possible. Un aspect intéressant de la GAR est que les données n'ont pas besoin d'être étiquetées. Cela s'avère très important pour les ensembles de données du monde réel tels que les photos, les vidéos, les voix et les données de capteurs, qui ont tous tendance à ne pas être étiquetés. Au lieu d'étiqueter manuellement les données par des humains, RBM trie automatiquement les données; en ajustant correctement les pondérations et les biais, un RBM est capable d'extraire des caractéristiques importantes et de reconstruire les données d'entrée. RBM fait partie de la famille des réseaux neuronaux d'extraction de caractéristiques, conçus pour reconnaître les modèles inhérents aux données. Ils sont également appelés auto-encodeurs car ils doivent encoder leur propre structure.
Réseaux de croyances profondes - DBN
Les réseaux de croyances profondes (DBN) sont formés en combinant les RBM et en introduisant une méthode de formation intelligente. Nous avons un nouveau modèle qui résout enfin le problème du gradient de fuite. Geoff Hinton a inventé les RBM et les Deep Belief Nets comme alternative à la propagation arrière.
Un DBN est similaire dans sa structure à un MLP (Multi-layer perceptron), mais très différent lorsqu'il s'agit de formation. c'est la formation qui permet aux DBN de surpasser leurs homologues peu profonds
Un DBN peut être visualisé comme une pile de RBM où la couche cachée d'un RBM est la couche visible du RBM au-dessus. Le premier RBM est formé pour reconstituer son entrée aussi précisément que possible.
La couche cachée du premier RBM est considérée comme la couche visible du second RBM et le second RBM est formé en utilisant les sorties du premier RBM. Ce processus est répété jusqu'à ce que chaque couche du réseau soit formée.
Dans un DBN, chaque RBM apprend toute l'entrée. Un DBN fonctionne globalement en affinant l'ensemble de l'entrée successivement à mesure que le modèle s'améliore lentement comme un objectif de caméra focalisant lentement une image. Une pile de RBM surpasse un seul RBM, car un MLP de perceptron multicouche surpasse un seul perceptron.
À ce stade, les RBM ont détecté des modèles inhérents aux données, mais sans nom ni étiquette. Pour terminer la formation du DBN, nous devons introduire des étiquettes dans les modèles et affiner le réseau avec un apprentissage supervisé.
Nous avons besoin d'un très petit ensemble d'échantillons étiquetés pour que les caractéristiques et les modèles puissent être associés à un nom. Ce petit ensemble de données est utilisé pour la formation. Cet ensemble de données étiquetées peut être très petit par rapport à l'ensemble de données d'origine.
Les poids et les biais sont légèrement modifiés, ce qui entraîne un léger changement dans la perception des motifs par le filet et souvent une petite augmentation de la précision totale.
La formation peut également être complétée dans un laps de temps raisonnable en utilisant des GPU donnant des résultats très précis par rapport aux réseaux peu profonds et nous voyons également une solution au problème de gradient de disparition.
Réseaux d'adversaires génératifs - GAN
Les réseaux antagonistes génératifs sont des réseaux neuronaux profonds comprenant deux réseaux, opposés l'un contre l'autre, d'où le nom «antagoniste».
Les GAN ont été introduits dans un article publié par des chercheurs de l'Université de Montréal en 2014. L'expert en IA de Facebook Yann LeCun, se référant aux GAN, a qualifié la formation contradictoire de «l'idée la plus intéressante des 10 dernières années en ML».
Le potentiel des GAN est énorme, car l'analyse du réseau apprend à imiter toute distribution de données. Les GAN peuvent apprendre à créer des mondes parallèles étonnamment similaires au nôtre dans n'importe quel domaine: images, musique, discours, prose. Ce sont en quelque sorte des robots artistes et leur production est assez impressionnante.
Dans un GAN, un réseau neuronal, connu sous le nom de générateur, génère de nouvelles instances de données, tandis que l'autre, le discriminateur, évalue leur authenticité.
Disons que nous essayons de générer des chiffres écrits à la main comme ceux trouvés dans le jeu de données MNIST, qui est tiré du monde réel. Le travail du discriminateur, lorsqu'il est montré une instance du vrai jeu de données MNIST, est de les reconnaître comme authentiques.
Considérons maintenant les étapes suivantes du GAN -
Le réseau de générateurs prend une entrée sous forme de nombres aléatoires et renvoie une image.
Cette image générée est donnée en entrée au réseau discriminateur avec un flux d'images prises à partir de l'ensemble de données réel.
Le discriminateur prend à la fois des images réelles et fausses et renvoie des probabilités, un nombre compris entre 0 et 1, 1 représentant une prédiction d'authenticité et 0 représentant une fausse.
Vous avez donc une double boucle de rétroaction -
Le discriminateur est dans une boucle de rétroaction avec la vérité terrain des images, que nous connaissons.
Le générateur est dans une boucle de rétroaction avec le discriminateur.
Réseaux de neurones récurrents - RNN
RNNSare des réseaux de neurones dans lesquels les données peuvent circuler dans n'importe quelle direction. Ces réseaux sont utilisés pour des applications telles que la modélisation du langage ou le traitement du langage naturel (NLP).
Le concept de base sous-jacent aux RNN est d'utiliser des informations séquentielles. Dans un réseau neuronal normal, on suppose que toutes les entrées et sorties sont indépendantes les unes des autres. Si nous voulons prédire le mot suivant dans une phrase, nous devons savoir quels mots l'ont précédé.
Les RNN sont appelés récurrents car ils répètent la même tâche pour chaque élément d'une séquence, la sortie étant basée sur les calculs précédents. On peut donc dire que les RNN ont une «mémoire» qui capture des informations sur ce qui a été précédemment calculé. En théorie, les RNN peuvent utiliser des informations dans de très longues séquences, mais en réalité, ils ne peuvent regarder en arrière que quelques étapes.
Les réseaux de mémoire à court terme (LSTM) sont les RNN les plus couramment utilisés.
Avec les réseaux de neurones convolutifs, les RNN ont été utilisés dans le cadre d'un modèle pour générer des descriptions d'images non étiquetées. Il est assez étonnant de voir à quel point cela semble fonctionner.
Réseaux de neurones profonds convolutifs - CNN
Si l'on augmente le nombre de couches dans un réseau de neurones pour le rendre plus profond, cela augmente la complexité du réseau et permet de modéliser des fonctions plus compliquées. Cependant, le nombre de pondérations et de biais augmentera de façon exponentielle. En fait, l'apprentissage de problèmes aussi difficiles peut devenir impossible pour les réseaux de neurones normaux. Cela conduit à une solution, les réseaux de neurones convolutifs.
Les CNN sont largement utilisés dans la vision par ordinateur; ont également été appliqués à la modélisation acoustique pour la reconnaissance automatique de la parole.
L'idée derrière les réseaux de neurones convolutifs est l'idée d'un «filtre mobile» qui traverse l'image. Ce filtre mobile, ou convolution, s'applique à un certain voisinage de nœuds qui peuvent par exemple être des pixels, où le filtre appliqué est 0,5 x la valeur du nœud -
Le chercheur renommé Yann LeCun a été le pionnier des réseaux de neurones convolutifs. Facebook en tant que logiciel de reconnaissance faciale utilise ces filets. CNN est la solution idéale pour les projets de vision industrielle. Il existe de nombreuses couches dans un réseau convolutif. Dans le défi Imagenet, une machine a pu battre un humain lors de la reconnaissance d'objets en 2015.
En un mot, les réseaux de neurones convolutionnels (CNN) sont des réseaux de neurones multicouches. Les couches sont parfois jusqu'à 17 ou plus et supposent que les données d'entrée sont des images.
Les CNN réduisent considérablement le nombre de paramètres à régler. Ainsi, les CNN gèrent efficacement la haute dimensionnalité des images brutes.